{"_id":"@balena/jellyfish-sync","_rev":"4195-134daf7443027cc573d4c08b5ef0851c","name":"@balena/jellyfish-sync","dist-tags":{"latest":"6.3.2"},"versions":{"0.0.2-copy-over-code-acc867b194a0e2e5fd36a371aeacaaed1e4fa716":{"name":"@balena/jellyfish-sync","version":"0.0.2-copy-over-code-acc867b194a0e2e5fd36a371aeacaaed1e4fa716","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.2-copy-over-code-acc867b194a0e2e5fd36a371aeacaaed1e4fa716","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"dist":{"shasum":"ba68326f9b9926f1803230a95f11021dd025abf9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.2-copy-over-code-acc867b194a0e2e5fd36a371aeacaaed1e4fa716.tgz","fileCount":25,"integrity":"sha512-EsEfpsccWoUmP3NaMHiDcnGchNAg/Bgwn7WvQ9BRqIg+5gN03/sZb00LRX6/4rtUnAp+5HxXO/N+jMW2NV6+LQ==","signatures":[{"sig":"MEYCIQCtQgYAMJsBTI8LECjUhWNJcYKSgVZzJ/zjVZmXYvSNEQIhAIPeITyrUO3RIARAC0cGQf9fxOeDfhygieEfhaIEIeju","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":228690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBq6oCRA9TVsSAnZWagAAJbUP/1gCUdHkc35r2zdSxqLB\n01DoPV4qKl7dI3r2GyxpAtEHz79WhWgOg18EDTD4zDI9m4H25Fhodhky+m9g\naS1jNNfbwOsv2cRqY8IZHpR9nu+sIez7h/21Rq1b2PpzWFMA8QFtVG2RMuyL\n7PS6abRx/I9GKpJxNW+7skl6iqtYv/OA2sd9bx9Y0CVAPVCvmKP53hC0UuSP\nvmP/S6RmZ3iYZ4/jNtQvblEZLAt8/9HhXPsc4onISAkc4+544a/BB5KrCUzY\niDR8k7j/5eEQbGys/CY4fVZt0YNciUEZbd+qKOXbJt97LKmTt+D1iigQnVnw\n1Khh1kgNm/5gYp/LYK3PhHyyISD6PoC+0YWtEzI2zlYysIMLvI8GzscumtsH\nHbVV40Q21FWEdyZinDAIeveIvYG6jatcp1lq+xX0w9EH66fypL4awwd+h7xg\nRvxtE1Jj89dm500pboPOse0Bd8BaM1AR0kBjIo4mDyZjKQyH+nbms1GAmfAM\nLMwcVVWE3KYSEVeYIoHRbwTx/NGLRgbBbuT38JAgUudDQN9ZUF/KI7rHJkQJ\nE0pMULu0i1rPvD2m8f+tAvbXQrbMzaACNb2kKsBWIJM5aCiGUz9nmFbT5aQe\neP22lAw3HaaHIQw0bJzYJaIQUmmjPvlC0uV8bvM5pWlvPmLHuX3RBXMZ4rcb\nRyzq\r\n=SPgp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"acc867b194a0e2e5fd36a371aeacaaed1e4fa716","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.2-copy-over-code-acc867b194a0e2e5fd36a371aeacaaed1e4fa716_1594273447957_0.1996301596428378","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-copy-over-code-2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8":{"name":"@balena/jellyfish-sync","version":"0.0.2-copy-over-code-2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.2-copy-over-code-2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"12837b3fcefc30fec3c625cc3ae84247211f6965","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.2-copy-over-code-2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8.tgz","fileCount":25,"integrity":"sha512-2y3UxLmiumcHql1SMcOc+lmJIWRyqEKh79L9y/Jg0MjEmimL6L6to+eAJt7XT6p1U5S1lKqZA4zAhQIXcG9EUw==","signatures":[{"sig":"MEUCIQDhJrOEWZG/EWMqUUTOESHg9TwX2qH7FB9Yvn9dqyEkqAIgGMtrNA7oUNPnPWY9LWqjKvp8LyZtoXbZWd8BTiu8omg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":224834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCC9wCRA9TVsSAnZWagAAtWoQAI/BB6Xkb8blOq6JkxwT\nDgKNIojb/6gu9qrNKEbvRz0xaEIjWWM32raUzoTTMpg3h/Lsw5zBLviC28fT\nwpeKAK+kbTYkLhiVLLYwZCmIHPMc1c4cT2RL/AqtNliP4mZJmz9gC3Yr/i4U\nPV7WTztkbE6L4ZfS7i2MeUR73GSONLwuu64U5S9RulRH32dReQh7Nyg/kbdK\nmyAGONGm4JrN2XUSYI8kyNaVWu7d4DDhSzIcWMEYFzU4wtl27WG15VufHQes\ng/M6MsFnz/Qn0DvdISVBjyGs9AgP4byk3jobgL2LhvCRe7dsQK0vhA+kH+qj\nrrWL7I/yFmegQ5O0cgmDsyky9Y64mI2j5dQBlWjZrNNj5+z6DD/2MGk/jRVQ\nsHGQwSDuqZMlTIKHYFNhWyp00ElLQhk//nFTC1Fg54t3DoTQ2b0KmuhG2txU\n8Vrg3irdj/y3pyG0Xtj1tO+u6s4tdWUH2Ga0kLIMnhefxan4uU1iXrFDN/7Q\nnUzztcxGQgkNxNNlYL3WjSdryvPxAF3v2skVUpTB0ZmBZCgSOziIcmcwVo6Z\noDfz4IK23o9ypBHbuVj0NJVOMLN9JkPhSnXJbg/ZangNnZdgned3cEJ/0a4P\nC1UKplURW1PRBz/vxRAxWll+BbtBYrOqnbELfWGc4aa4NoD7grJTot7Clc2m\n6XyI\r\n=9gzu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nERROR, Cannot find module.","gitHead":"2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.2-copy-over-code-2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8_1594371951907_0.018065459488904256","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2-update-docs-59efb33bbf704b919596dbd6b892822f64c9fc54":{"name":"@balena/jellyfish-sync","version":"0.0.2-update-docs-59efb33bbf704b919596dbd6b892822f64c9fc54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.2-update-docs-59efb33bbf704b919596dbd6b892822f64c9fc54","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"88384ee943a538c8512d0aebfb9be90d3f0d2819","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.2-update-docs-59efb33bbf704b919596dbd6b892822f64c9fc54.tgz","fileCount":25,"integrity":"sha512-3RObN3G56IeOK4kmEzjQXxMLjQ3c36YCPYknaLJ7rdxV4qVYX/fcS/X85V3Y9a2tEKu00BsEH0Y82pS+L+7/qA==","signatures":[{"sig":"MEYCIQC+NDwUCjIjw7naBbO1qeyaFqv8bgX8ETNQD10q9ulBfgIhAK+XjkmCHXbPYdcpliBXf4NUhtBd/24EzL2ealINr2QI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCDi5CRA9TVsSAnZWagAARR0QAIE8GpTcGTEmUKVvZImv\nkvOoujr4OYp+6KX40rqQ87uBhjOzIed9w50/IN2w7aFQ84XZppSUP4x+zjgM\n0yczDP5QHSY7ndV/EG90NugLpXFQYxUK0mYms5pZFgPTjf3HeEA5/rp72gM9\nh271/kcIsfyIuscJ3W9S3e/CTDrqmj7Z8A9GvM+rmMUgVyRuwEeJ0KUfhe+O\npM29b+xxw9DOXyaXGoFvnWU+w8WMuI1p1taJ0oXZOz78EE9XHDrE0MOQKSDx\nzu+mdkMxE4QLcwAI1G1EVcxoOgxF4tJiS+3+F2bSFd+rmryXPK59k/zBr2FP\nR7SvZA4cTm2IdQjHXKczr9oy3yuVHUf+7jqbdl/EXhp8qgmg7u38wKprkzu0\njiFawCNrTRx4M8vOb8YapHoRrOkzs4LVuQEHoElZXL2DvXbQaWZNABKAdhd8\nqMiqn8ndNY2S5VQc//EeZOmTfL/VNmDAnW0H3O2ipzZEaSojO28fa7LYVck/\n1AAJ1L55+nm+fKKHX4V/H44TK+p/VXSvICDGU6/yuuypsFhN9LwzsygAIUfc\nPtnI9jMUhqzNt6LJzUsrdOFMOT0oA4WebFaJZS8V2Rc6MjtNkpUaV4q147+x\njVmFFGGsfz+zXKWafDbgNv0Uf4Si/GqreFCcR3SCgM+u4jlt3TNVGE9E2DRV\nIoL2\r\n=HJwR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"59efb33bbf704b919596dbd6b892822f64c9fc54","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.2-update-docs-59efb33bbf704b919596dbd6b892822f64c9fc54_1594374329175_0.1417386327105481","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.2":{"name":"@balena/jellyfish-sync","version":"0.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"2c2d07e8c32166a6c15048f6b913ee0b8a4bc30c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.2.tgz","fileCount":25,"integrity":"sha512-VTr/xI361D5FKEokDXk728GtWPEI9Fn+g5+vnSCyP2Db3SY4AMTN8BcRkguaepI8QVCmGXKa90o42sBlI99qjA==","signatures":[{"sig":"MEQCIBRFu1J7/7qb/pqB0zgq/fl/YtdKc9ciy88JBdzxGbnzAiB2xRdZRXEHwiTeFpPIsCbLI3yQ+hzuavywcUk/FROCag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":232351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCDohCRA9TVsSAnZWagAAf0EQAJW4d4NO6Y+QVcN3p5zK\n9Faz+sXLr1ZopIp51scaGXExD0JpfIXBhs+/pzmC9oGF9ikfzFUcVik3epZ/\nDKVKEwpOjp4L7VNyRkknEqZQl+lYuF9c6ubsVQ69IabwQ3LZeePbjSFcMP91\nS7vcYlu8iy54mlr+ZS7k/49lLIJ0+dgdyecvljYD7d1dq1e2dBHDVoH5VNgb\nagfX49tEqg833hjQYquTCPfPh7lq9PkHLYIKMTpQ0A42YvrzXo0gNGMwk32E\napgPs8bcoD8UUnuaC9ezUukX7/KcaOmLycP7cn7DqkvuK5I0YsSjLsXB/GF/\nQ6yVB06PhDNUSBbB5qQOwJ/gZBtmh0fz40q9umS2Q20QDj5kbC5boPTauL+7\nxTCJscl3lnAGtgd1omVy0eq72CAih0mFVDflk+kGCVqPySYCQWWjfbQUzS3R\nMvXeeg10Gl13dd2hvEONTKdiHroNqvanVopKEPeJypK9CWrnVO9buUb+6aUp\nKuPZ+hI1xz8W5nw3QkDkQzJYMG3uMCK49VPqg5MfEaRUjtvkrV+O/JTdHWmJ\n6/tKoenHOy7jvuqlxR6fzPfLMJEst8QXIsvZV3JZn9h215msCEgGvO3n3LiW\nLRN7LJBw4dC59GFZhriS6L/P+qq/ZyVZTkRhxjld7FQyhV8f637Zqxr7TaxN\n/dfW\r\n=gcec\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"b8dacde1ff9762bea2f18fb489a307df533ffa04","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.2_1594374688866_0.6059020957921395","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.3-update-code-to-latest-9bb4a9b2b445c246437435833fc9ce942ef0e380":{"name":"@balena/jellyfish-sync","version":"0.0.3-update-code-to-latest-9bb4a9b2b445c246437435833fc9ce942ef0e380","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.3-update-code-to-latest-9bb4a9b2b445c246437435833fc9ce942ef0e380","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"ff8d8d066c3eee787c584420cfbc0eb9f5114fea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.3-update-code-to-latest-9bb4a9b2b445c246437435833fc9ce942ef0e380.tgz","fileCount":25,"integrity":"sha512-RKaWmHF1V90sp4h2hBSMEPn7dES1JdKixkrjCpt9Fr2v3CI2LgCOBtL5OBJmkNdt+Dbwx9K/swhuV9iR4PmBIA==","signatures":[{"sig":"MEUCIAECvuaaecuXa5aXlQ/Y1q+GsdQRtDYdp4em5sdWeRaHAiEA3ptdzdyqyabyn/i/vNQyMHCgG7Tl/qJ0e9VIQn7Ttlk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCbszCRA9TVsSAnZWagAAZm8P/0jV3MsAFyBe0Kw237TZ\nZnJGeFizYysMSlksSexXHjZ5aPK1auKed0M9Ip75yBQ5lTC1ZWgVnEiHbjLk\n2gZ/Sl6bgAQImMKMFRh+PMLiHAmOhuIZMvikVZAciqzBjNwnClV+aJPvB6Z9\nd+b3AT5n7kPDCRgHFq1+ljxzCXQQZoTb6mRdyoCx2kq0TdqsQryfS0tuNIqU\nOHpCQ0A7pYobd8Dc+qj7KnyLZ+YumgeCAZird5AU0PU7+VXD25eWU7SDTuF9\nxzr0SetSRicB3vniSoSIXfoCcj0VuGxLgYvEwpFp5JULc41JyG8cPaVEfcFZ\nvNO8z/7qLgOevGFC3A/JpVhzjqRt6LtBIA4rT/ciEv1qie6UyXg/tpSGSIcy\nO2+jiuVDJMQ/7dECC7JMgUh26dpsWZM4RXWzKuQVi7ZbtuWBTsGu/niY2rOP\nR4iTm8Im9IMZ79XmE1dLF1e2bOV5/z2d4Bu0MlyuThVQwq01wdP04C+LMwtR\n930fuow+5Or9IMNd7txheIaBMPvnCWgPJcr5r5EWLuILxFurn+0sni80QLrt\n5BGb2pjnmETBc227NV8CuTVZysx82xhCtrJpLJn+WXWy0OVxR75Zp351cZN5\nrQozlrsB8uZSOH4jdKrC1WqGk6k2YYs/KwsW2afBjznAA5yUiR1cox8N1ihc\n1bLf\r\n=jYv7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"9bb4a9b2b445c246437435833fc9ce942ef0e380","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.3-update-code-to-latest-9bb4a9b2b445c246437435833fc9ce942ef0e380_1594473267282_0.3037399282659854","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.3-update-code-to-latest-6b4e4aeee4ca69f4e002ec67fa0ae141a79542da":{"name":"@balena/jellyfish-sync","version":"0.0.3-update-code-to-latest-6b4e4aeee4ca69f4e002ec67fa0ae141a79542da","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.3-update-code-to-latest-6b4e4aeee4ca69f4e002ec67fa0ae141a79542da","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"2dfed600ffbb4e2ee2ce32c0f593f1219914bc56","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.3-update-code-to-latest-6b4e4aeee4ca69f4e002ec67fa0ae141a79542da.tgz","fileCount":26,"integrity":"sha512-OBgS0MI1UrNe5Fzs6Jaq9hln0naYGj0b4k3xq6zRiyXmJb+sLnJ48ih6TXP0tVhCG5PD2upvK5ZLO8aBaV8DGA==","signatures":[{"sig":"MEUCIQCANN0TByW7gGXsYCshi3gj0GIq6GmKnNDTerQM3AvSRQIgMowebEgjgpd3KtZklzlaG8MAVqxzbsb81ACDZIueQNY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCbyrCRA9TVsSAnZWagAA+tAQAKOmGQHpVhvYpNukNJME\nL+UiMHJ8I3h0hloWJqurswNDdOGe6Q8hQMMPW2rESJoGfVXRJw46giywHJaf\nZq+NRQ++eC3hb6zhHIKGBAdZ2ulZpbPDQ54S2D1UNyMRjGghrO1AIOlF3OWD\ny8m0wRiMImTi7AHFMbXb8bnbB59yNGGk/A70jNW8lS31JHuXUprM7mltVoSE\nGg1To2QlStY3yb3P5p+hslYRzHsw21CwkWLUTmFqKkqMPFAow28EkZ24WT/f\nChpR4OgdjsGwrRraWPKDiJ4yw3izqr+PPrSCba3BbGqI/nBt28iWtXxm7tFn\nL8H4lylRSUcO5CJ/ExHcVAuH0PyQHnjpbXMBAdEWPLUxq44jx2gWvjdKsCXI\nGrVcFZuseSifvx11Pnks0hxi+Cqq1gEcvtmL4YXSDrQcCqulKZD8rw+J857P\nEYxHrv1V3rnc/VhGuOC0MxGju5szJA0hyb3skqB1oJHLhm4pLdEmFLVqvpWi\n+5kNfWf0F7DoeporjnV2xLxDZSQGuyutEcUCwmfW1/daBWIH6IJit9Gt61Lt\n/GcrcMTU/D1Wc4/IASeiD/rZmnni+IZ6rulzKsz+w5p7k0aci3OdpJtKU0Oh\na3XLoxDiWEWyUC+FePVNS7l4iYPcRsftYJ0a8HtyOBxnvHljGOeezWj3XfH4\nuIJM\r\n=mW/y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"6b4e4aeee4ca69f4e002ec67fa0ae141a79542da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.3-update-code-to-latest-6b4e4aeee4ca69f4e002ec67fa0ae141a79542da_1594473642916_0.4638828679992131","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.3":{"name":"@balena/jellyfish-sync","version":"0.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"c84d749ae52d191bec123e7ad74376a58d7e6a6e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.3.tgz","fileCount":26,"integrity":"sha512-8FVihaYOsT5toccpnZFz3ZpIB65Ri03P6QxMYVTYiAJksiXIJSbNTMwlWIdW2OY5le+WgENzNktof9ARCVnuFw==","signatures":[{"sig":"MEQCIGSDupWMEzhuU131m35GM1oo1FZlu3UTiNKAXDAv3kKEAiACZI7tCLgjBd5hsTgX+oo/x8Y1FMMk8ivGycHcpr9Mxg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCb35CRA9TVsSAnZWagAA3RAP/Rxf4ZwVn1BP0c7Py3hS\nFD0oimIOrsvlstc8Krrfl6Ldx8A6iMGLIyDCFC3fq6TAur559v6MeUL9pgLM\nF4Gx10a40KhH2MUMV0tmR8nvBZ6pizpSNaqzlNWBGwmsI1nayZS8lZqucySD\n3fb5y+mpt/3b8qGeaf9UXEqZOsdah/CT/9D+PG/uHC9SgIITcspxvfz8X/w4\nMa3Lor/1sB5xVG+z4jPcCK1JpsOXMCDqW7L85277DDsikPebr6cs+bhfrsy/\noOHsfUwwU5Tvp7K2G3wCYQmC/jD+4LSuKO8QMR6cq5NDLp62WWu8U8MLgSJG\nBJ7hjiqqux/K+aQSZHHSCJFm0L6Ivw1xWESU3L0Eir8+MNQuTYrlAmtqDgPa\nLHRU/GU4eYLUSlmwo8SuremAL+PrOMKwqBTFPgMQE7EmYwzOUigjSrwjPM9o\nlziglxwA1O/NRooegb1a1b1Y5ZgQy1uihQtt4Fip8cygicrN/qQhz2ouJRr3\nXAuCs8xYhmrG2qAGpx+Ok/AwvYtKXz7wcrdykT4IAdvxqnoj9Yu3xDQQeZAo\n9ibqPJU9PMERlsa5QH7Vt/AszEENzpaTG4BIjrtTd9TkXYjaPsg8E2tBNlK1\neg4y3Lodxn+DjHEi9HdtI4MxTKZNjjvCZ2B/3I9Z0NiThAg4DhtZKo2rZP9C\n9EdW\r\n=0AH3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"51925f387f5a3c23b58002632998183114191cae","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.1.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.3_1594473977010_0.42050052872357635","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.4-dependabot-npm-and-yarn-eslint-plugin-jsdoc-29-2-0-fab25878d37003cb171214204f0b4bc780a93ca3":{"name":"@balena/jellyfish-sync","version":"0.0.4-dependabot-npm-and-yarn-eslint-plugin-jsdoc-29-2-0-fab25878d37003cb171214204f0b4bc780a93ca3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.4-dependabot-npm-and-yarn-eslint-plugin-jsdoc-29-2-0-fab25878d37003cb171214204f0b4bc780a93ca3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"90d8ca125db1e02edaadbbe98ab15d78df3e55f4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.4-dependabot-npm-and-yarn-eslint-plugin-jsdoc-29-2-0-fab25878d37003cb171214204f0b4bc780a93ca3.tgz","fileCount":26,"integrity":"sha512-Yjb9KH30FaZ1QkSrK8S37yd47IVkatFxy4rDkt+kukIcqbCO5eVu0WMGtOBavpY++XNntqg2Av7WLiZ5xvv1Xg==","signatures":[{"sig":"MEUCIQCMdFLeUyLU8MMG8mWxAu0e+1+6t2C6L42t4Sx5982ACwIgNbkr16tZm0586sbg+d3L8gltLP18XCKWMVLmsPYIx5M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235743,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDE6uCRA9TVsSAnZWagAAlsMP/jnWf0GCniK7WELM9TD8\nUgQ2aEraLx/BOw6NLwl8mfgf5gMhiv9Qzt6vdtOjjAPulWWU3KVNDH9qzUxl\nIYDJxLW3sSYmPwA88Fn6tX64V1vZCxtWbOF//Gqr1Izkuc7yW+k29mx1MO/+\noIiwwMNZFP9dZtRPFCYnzccjSLoe+x3XhD67c5TYuiEt0wugut+fMbRVzEUK\n+Y3guBuBEohESD1HBFlq3EVve48MSnBvmn/3GSzzKZymWzO/HDYZRwpwaJZd\nMx8iwD4SoezkKUnRES7fnhv0F9xpbFVHysjydQ7rfaBoh6pd1fmBAK8mLuKw\n5G3Wx4BWnFUAllzR89SJ7Vb3qcJCk7TPvDrHScQVsLTXfOwpFaAaqkJeVI3e\nRzXFRBbl/o4XttkWA/ac/ND+UxE7IQV16QwfJXVMcQ400dfCGfap0lk5qcqd\nI02VWLNWPhg5ug9vjDNjZzX01gOUgzE92LUlixnq5LGUPxwcghSQOl19eHB0\nSn35A0D52JdKQkscSvAOh+V4/PrnJLFE86jaFAlumHoJxZwUirlBxaf0yiQz\nJ6rkveUEXGccs+H/x3d4UQOb9xo7aVLOnRUF7pNkbxjKapK5OcEz6DO4rQ/B\ndrl4Uvl2PIM0rtxuXu9hbPLiQ0jG1jnbMLWONufCux0ZZj3WX4L/M3H3GCSU\naYLU\r\n=grQq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"fab25878d37003cb171214204f0b4bc780a93ca3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.4-dependabot-npm-and-yarn-eslint-plugin-jsdoc-29-2-0-fab25878d37003cb171214204f0b4bc780a93ca3_1594642093879_0.757478486839223","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.4":{"name":"@balena/jellyfish-sync","version":"0.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"ab44d88d12e12246f5587243c9d992733f8c5c93","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.4.tgz","fileCount":26,"integrity":"sha512-wrMljj8yYDB9y2eKVmnnNX+2iq+1YnZ6lKTXN0eoArikVBPSU9dpF1/KhbK6g1URcp8cHn5GB7FNi8g7MrweHg==","signatures":[{"sig":"MEYCIQC54BzCNtlOo8lQPhvKdcqLK41Kgh1nuc6XoSgqfigkZwIhAMxHXRe1X7qUdu6HgIFJRnoIoMm5MJqcYujRVJQ0sZUQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDO1KCRA9TVsSAnZWagAAdnMQAJH1hos3OlDXoMkmA8CZ\nLMmn80JqLasVdbfAMouCU6kHq90OEotlXBiywOGOroH5T/H6dCOBrmqHJLpF\n59if134l9LnTLu2vK7Qikxgn0VsDoSZ9MBKhTNimISX+GF76ZGNgADfEoR1W\nq1+1IVbNhJvBv0EedPx1D4FwztU23ywwmIT/9QGiu1rOGg4Om3WX8jy7kyig\n8rKs93NscPwgEn8LbcErwVMhEDn69wK5Jcy0A/X6dPYRXJlIv9L6CJ4zpOSJ\nfeLZVJzDlqYuyIIRgydFNM0Oc16Mm49CIeP2qiB9EnsZ7ifRgkdmUJe8ejak\nsFNnKommsKXJeA+mNupOfm0bMZjL441r1xmS2xq64/hX6A8k+RAFpjW4/XMc\nzG5hy2bhwpCfuWuGndtik0X2Ov6a6TP6mtFJFiALoBEAhJgX8+QZpDLRyOV3\nFejRES9NxpJE/J3CwJyJKdqFRHleaAQMNUVEl8Ah6QuEMKirouHj6AlzQoFs\ns8R6Ug1DJPeXAQbwNIsTmk6dr0998xmIU8VgdSlQnn5HZbyQhLhKq64FbX/Y\nrHr8yORWMSaQbIonA6d2/7Talqp5dUd7XTY3BPv26iRamvv8eoDRn4hUtVry\nrkDMpc0wY8S2NvN35WXhQtT88vc9xgojRrQXlYqEvapxXsd1JVn0rNABEuZE\n6u1v\r\n=mErk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"6b3b459513af9a199dbe11f37af24a247f507f8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^5.1.1","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.4_1594682698533_0.2573101901895183","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.4-dependabot-npm-and-yarn-lru-cache-6-0-0-c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122":{"name":"@balena/jellyfish-sync","version":"0.0.4-dependabot-npm-and-yarn-lru-cache-6-0-0-c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.4-dependabot-npm-and-yarn-lru-cache-6-0-0-c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"515279f749c72e7beb1b3ce6a9fd9a41f5aaeeb7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.4-dependabot-npm-and-yarn-lru-cache-6-0-0-c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122.tgz","fileCount":26,"integrity":"sha512-PVoax4S9/Y1JaqoovYXj/Zhq8NgXgedMiqhckUkHp3RCnyte/NY3kRKp3XCptCsDs9xcDFRD2lsrUQlxl6OO4Q==","signatures":[{"sig":"MEUCIQDHoHIo2mS0yCxMsibKkx2S+DCPEjWKece7CiLQYamtigIgPYKf71kx0guPMJ8peGgfS1hcmgJNcJ/O+voztQkVtWI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDO2TCRA9TVsSAnZWagAAeScP/06mj7WHu0zqlEA5o1fI\nsuI9CA+yl+39mBeH4zexwgolrn0ZvwdHN+8zD+D4oNg7ahkw4CqxmkBn1df9\nzYpTK7ncaTLtTFY00l38ZxOXF/kGd/pDFSyYKqo888FDEwqvgsCJeQBAdKDl\nfgLb3eVoEuZrxvw2wWD9dBs0Gj56LhEe8/0+42oU2f8N+hEPsYMZMmWXosr/\nqbGmoT129OUEsqy45EZT+GzobIXWPHgTE/eClU2SBTXV5bxbe+aHIC5MJ6Cs\noEQM2MxxzTeoZibPyzbkJ28PdnhOttdT2vxsduwk0EKWbYDxDyvgcXlQLwyP\nWfUE7zOMJW4RF2oGyRA9shyAKqdxBoGf/MadxVAxllb9B1XZHwMM0Uzlluan\nzbxzPAyXnrSGFOEYiPB/BWWw2QQu1NcVH16mc6+KRWoX3edzErohAMDwkVlA\n0xyTTKBbpRb0QCF+Lr2ASO9maDW6yxa1bFKluJbhfjsyQufGpts5uSoIq/N+\nfKcjNC8m4jfy+Ahk+gv1GtM56K6sNtihSay5BKgMhc3rQ8yCnTonLdKBQs4e\nA7CNXHuXbmb+jGj3kSGCTFTSsbelUxTLd96lTA3Y7/5WrEyEtaSfkrqBa4m8\noerRe5La7osTImmVIBo4uFOVnxE+T3E254UgyVtedeDR4HtyR1Eo5oyncox5\n63nA\r\n=+5YZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.4-dependabot-npm-and-yarn-lru-cache-6-0-0-c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122_1594682770995_0.13637310611800424","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.5-dependabot-npm-and-yarn-lru-cache-6-0-0-709585fafd9cc41f67fc05ad25e2c8b3515b07f0":{"name":"@balena/jellyfish-sync","version":"0.0.5-dependabot-npm-and-yarn-lru-cache-6-0-0-709585fafd9cc41f67fc05ad25e2c8b3515b07f0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.5-dependabot-npm-and-yarn-lru-cache-6-0-0-709585fafd9cc41f67fc05ad25e2c8b3515b07f0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"14c20699e2948cafbff6717618c1b10ea28174d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.5-dependabot-npm-and-yarn-lru-cache-6-0-0-709585fafd9cc41f67fc05ad25e2c8b3515b07f0.tgz","fileCount":26,"integrity":"sha512-Fnham1YzGMZmchD4N02fpDb/JaE8jm4EDkPhyTtLXPahgxZIwrv3GQQtFavRfjyLQ1xM2/IbS9w61ondurZzkQ==","signatures":[{"sig":"MEYCIQCdW5hunQtp24ibvbiWKVF5FHTGzBVe0klumJ+HoxQ4iQIhAJBE0n/kahtQnu4JyWhI9h1vYnDl+l307qPdgYZBN/Sa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDO4jCRA9TVsSAnZWagAATJcP/0qtA4+MzhgKxScNai4l\n8fCx1bX6j2KEaXUld/RbfGkKVj69Y2Xj0+WBpjHWAtKOSnpRAbEGuW80Itxs\nNQBEwIJ4arG11RRPmI+CNuJ9c40rB9m0hQ4YCo0UXQ/6X5ZIP3wgrpdmUuGC\nqEM3HadbOacVQ7/a3xmtOZLpMMin1TubpkqUlwtdjWiOpghpBP3xc73qntda\n6tvJXjKG1lHB+A41OK2TVmxzJUf9FH3GTfB7C2IefQww9nTkW9XNfHS5hQJc\n1+ho8ioXVBwmcmSQmLar3cJiL1KBRvU7gjpahUAaU+GcMNuwJR4zqM/tkBRn\nxezUaR6esaVRHJJcrVH5UZ9l9vSEtDDQ1woKUfjAJoUWTBxD5HEQfHeWRCu4\nlKIRZthR27aGs6I5jcNA+1GaeLIK9nhRXpnVbGcD6A7L7kwweCbVcRuIJgM8\nfRa6eq0IgxGJABe9jcz4Yd8y0TDQN+QP33pQRRiznJWbuBLYnQaSOnIbcD0U\nLrBO94+YIO4j42xBb3cfCUt9wnFVDxKlbSuDu4Dm6Do3DXPRTfVY2cPG5igJ\na8ASZCPAZkTZe7oabek+2e3XjbzK8YjcTKT8DMYSGIs58PmjJREIJQ3DWRye\nIquL2X2hYicmaCY7MFncD9jBXSH8KVK2e5BcWbIn/OVxaLCAfU8QuJ9AmM4o\n9Xo2\r\n=MQwI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"709585fafd9cc41f67fc05ad25e2c8b3515b07f0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.5-dependabot-npm-and-yarn-lru-cache-6-0-0-709585fafd9cc41f67fc05ad25e2c8b3515b07f0_1594682914902_0.12950438632452177","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.5":{"name":"@balena/jellyfish-sync","version":"0.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"62b204812000c711f777a9123fcca368c6cc87af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.5.tgz","fileCount":26,"integrity":"sha512-OPbFdYElF1lp41ZTSQvrqMPX1asHqlFKIghxSzIJGc6rJF+iDSthbHqVRWIytjiACaB8cFB4O0zFH20Vj/LkDw==","signatures":[{"sig":"MEQCIHtLNApKvNXL11ZoO+TIG5ZFp4as0j8Oeclx7KiUzr6mAiAcAYk2XAS9mrLH3KvfSH2GBccEj5DqUweZkTRBZbTiFw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDO78CRA9TVsSAnZWagAA5mIP/Rp/nk74QOm0cd7USEWu\nV3Mkr8w1YlTdQgktp2rTGRSnTYQbFBTIU6+mmLH6+YYsWQjQ+fYic5ETB2ZC\nyEkbkJOtKd8gQsru+OEpGebWPJC7mJhabctHA6aMN/dedeYlxCdgrGvMC1F9\nN4YRTQYz8Bh1v0WLOTDi2VkMh0H3E+WGh6Wxu6VJmxLnhVNt21gfykaZRez5\nk8g9d7zCfQtR0f1TkNftNzP80e/AuaJc9T7k0v2LpsHVYjqfA9pwuoI75x1z\nQTxojvcSvuVq6qbIMCNR3jghGaPr1pbeMl0JT41BOFrbevab3ocwWajVvIpm\nRovWRc1bu4KBoYeaXYE1Rq0KO8SEUn13Dm6dcmuQZm8aAzdSSwWXzBEM3CSa\nNFvZflYhV9Uah0Cl7qBNMxYSFev4MGEGeXIn8q8wzClHBUGYbZtgoK1yCjbl\n7tf1m/nDPvAV/Nm/5g7Q0D6AH1+8QtQfpWNssWDJ3B4De+6eS1XcTFowCpO8\nD+jd28LiXNjj/9j3VgPbPOs4m50Iz7KATODbZF+cqkpHD1REcfqMbiDmwnoy\n6UZjgbfTw/6Fos6obSe2EPiJVMSiYf0+WMWs8csVCTRzBYIT0NAfCuiH1GKB\nKo/60wP/+wMXIO/5c1Y3Tjf87hTOzZTThBNo4dW7dRVw4hEAqTIiqMkt1BMk\n1D/I\r\n=QY1c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"250e716f9864021c8ec1de476f87abb1957bf461","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.0","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.5_1594683131789_0.2547628416134391","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6-dependabot-npm-and-yarn-marked-1-1-1-f9c612f3244ee9e04c5b5b5d9a9514612defd654":{"name":"@balena/jellyfish-sync","version":"0.0.6-dependabot-npm-and-yarn-marked-1-1-1-f9c612f3244ee9e04c5b5b5d9a9514612defd654","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.6-dependabot-npm-and-yarn-marked-1-1-1-f9c612f3244ee9e04c5b5b5d9a9514612defd654","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"e9fefb67a5ff9af9a45599edfebb070cff254340","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.6-dependabot-npm-and-yarn-marked-1-1-1-f9c612f3244ee9e04c5b5b5d9a9514612defd654.tgz","fileCount":26,"integrity":"sha512-EvxqGRIlsbwcC9UiIv0iJUK57j2oHr2LndCYoP3QE0h6Bje8EXj9n07l0fa1xVUo6T00KQpjhPPLdvaNfE/lRw==","signatures":[{"sig":"MEUCIQD8sO09x7OMwjZkNBkfYjNGd6xpefYapIp384cfSqqzegIgC5AbjxzRrGa4UivimsZNgoxf0RYM6u8akkkgPpBhi08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDaBhCRA9TVsSAnZWagAAmbYP/05lwi20VUzDCcvnIm//\nr0ooEGtQL35nMvlePKUcjl7fXdaEktcos9EVTyRlW0U3inbQPNm0xkmJRucb\ntsyPx6PS9qcPMIkRjDbZdoUvIg1BMH3d4myCQpmyJS1a1t9PFxIczp6lmMat\nCPIVaArx7tLzGShwtgPxfszI7D83TFJrZMOJftSPQdy/zlzrQirLlxnwhd8d\nPd0IAKPyWU6Tp78NQo5k1uMNVMS8RajmOtMhELMjLvYLT8Gx7B6zSgA/VzyR\nXbuAIQ9tzcDLUh26TrtrnFZ9Moix+IHRw4Zt+Hd8HMnow+GThQAppYnohrJj\nBZparYGB4q0nEXQZ+5byiMMAfidz8Bs4bCKQA4QJB/62tW1ka5Qx/kWvlYPg\n95jo2Z8joFRHbB99fHBBi4QWv9Yr+VCkiqWTdceLxCFVM9PwTWq6ordUWaZO\nzKIUSBQ1JWSJO+g3n00kLt+qoBldlapCFAv/MRWLn4hM08fdbwQWCo+aLZl3\n2/nPuZblrRBWVIXjm/ReJM6V97vxH5vnAbPxBgUnSk/eqDlwKsJ1O2hfWeWF\nT7ql4fW9AY9rNGb/pZRRFsEEf/2L8R7rnjfLrWdOeZmf8nN7e68DzwhuP0Bw\n8lmx552+ZFRGFpdbfvOvJLjmEufHLDP4QHZ9G+OEqoLy2akVnOWYFA0dtW0G\n+0dN\r\n=i3Aa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f9c612f3244ee9e04c5b5b5d9a9514612defd654","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.6-dependabot-npm-and-yarn-marked-1-1-1-f9c612f3244ee9e04c5b5b5d9a9514612defd654_1594728545193_0.8096660916374017","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.6":{"name":"@balena/jellyfish-sync","version":"0.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"dc5b8ad454548e40cccccfbaad78a2a155454702","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.6.tgz","fileCount":26,"integrity":"sha512-LkMXHTWq5MVZFJ9RH86tm89x8gIuK0v6X/ptnSz1XIOGSwyqQxvc8j9b58F02YrDmQV9fCwVEGZNd//BiGK9+A==","signatures":[{"sig":"MEUCIFau3ZwiAzlYvXmkhWdF3SRKmdp8j/N4jX2TPHuLhk5WAiEA3eKG6hdWp4/446GfnScFrSNxlJ+DD5fAkNv6b9RS7G0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDjgOCRA9TVsSAnZWagAAE0cP/Ro+xjRULtiAMJiA2lW0\n9tS8S4uMetxLfZX245FcuGcdqIsMTJ1TVRM+SRRvoXAlOBGvHYVpnWQ3QYeu\ni8HdYX90u/QVchl5p0BwlBld7doPxMRGfpi5U5MaI265GC9IATdlQ7J1xsRP\nS8FP8Z49OOyrxfvX50Fm6U/D195Siz20sQXaRnfiT/mm/ydA4RF+FNwfdR4z\nfpdAG9WR+ps1hfvrpHaS+vLcQzxfMp9ZB+yyHAs/NcfLNJ0xXf8ROmRCOZos\nzY+1HCIFje/GdawIxSE5LuSTPI41uKBg3uIhGPgPeXmOJ4p9QT2EKc7nXH7h\nH3albYLFukCzfS4oKLj+WOVSMJ/9qhUw9kEA88zMIRLETIRO/9rLlFIrY/W6\nRf95n4gcrEugsPDOk3cWeoXisrc5wIFuGCn71Zq22TzA24RMWKlNplMwoKXa\nqGnZxzhTeBxDlJStG2Q7UV+B5ug6TmURNZJb/WU7AqZLa0YfWrzwhBpDrKXx\na+E4SfZk/SY1JNobOuE2KYY8P3oY/tMBxCHIR8XDAhoWb+mA7r2ScmGx7rPv\n05K2m9AaRG9yXtRy6meAf2Wkkqh9//4BixtEsrrXAhYDgPSUTkkhXeatYb6F\ns9aEy0/H66//gtdQvw+pekLdagP4OnnTZNZZmtg4pzsrh5oainiMN/xW5a8D\nV0gM\r\n=DynI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"2f000fe29d01d1b0e90e2f0d091232423ece7e7b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.7","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.6_1594767373662_0.5308861163905698","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.7-dependabot-npm-and-yarn-octokit-auth-app-2-4-8-8ae3a80780f945d5ed0c8981b2a50e02cfe338be":{"name":"@balena/jellyfish-sync","version":"0.0.7-dependabot-npm-and-yarn-octokit-auth-app-2-4-8-8ae3a80780f945d5ed0c8981b2a50e02cfe338be","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.7-dependabot-npm-and-yarn-octokit-auth-app-2-4-8-8ae3a80780f945d5ed0c8981b2a50e02cfe338be","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"7467db167715d92d2c4dd04c099cf7234dd50e8f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.7-dependabot-npm-and-yarn-octokit-auth-app-2-4-8-8ae3a80780f945d5ed0c8981b2a50e02cfe338be.tgz","fileCount":26,"integrity":"sha512-JQPMCQKDOWic9wonke86xG+a2xfimr9RSSqbXtLtCbEoUWvUF6Taddv9EHh7JgdQeHF/NlhvDGx1Q6goBpPCaA==","signatures":[{"sig":"MEUCIFcVJAglnu34gZoVFSY8YxPAruFy/xwdaD7EzFHurpjYAiEAoGs3Ga2NYKRkiPnZUaUbe4Y0LQx6mQ/ohE8E9nwEsZg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDvD8CRA9TVsSAnZWagAA16wP/i5hWQbXaI4fdjjQoQdF\nBfXoyriqs18qH/r4/D3FD9ofaHXmssvjpcyi7tZC9CCHXpVroOmvPkTSnGi4\nIWEcNjrTi6bb/R5o5MU5tl5Wd6fbtD4/10okWvQafdFlpoM4EGXhSYQfMV29\n17VuJgkmT1eGdEaw6fhB3rlBiNhCq0C91M7m1MsKqnCEVWZT/mNcyaw4iFuv\n+f7FH/2uMw625Zy4PQPeDxHTmCxqR1ud0Dknd+jBMGev3gZEEmjrvJ/GpKJL\nkIkpym/Hupfr3uutQfJdLme4Ei4IDOL+OqqIyfzSt+gM524R5iNUHt7aHLwY\nO7TZQ4D2WJ54vYyIaGgQq2tF+pmMoW35ubyud6+OCmHlKf1C591zZOdjSy8i\nUhJBvSWhW7RepxIpSRTcL0dM75C/ADnH3eFinbpWTSiqtCU7uk8P+z3/Jagn\n68kuQzdzta7yBqv5CFQsewMfT4pS98lstvoDEnNBTd8Ljvmy40wwRCPgV0mu\nhltlIoJse4XLZUQAYV2SJevysEeuDyBt9XI2+ZcHDrgvwb0dtCoWFLGKjF1+\nIMf2+GVrr4akgI2sSDYTvFpHF7CXWin9cBn0M6TXgH3Z4eMVUzpzh7Kq18FG\n61+UyjzAwjYY1DAsbBBV0B5PzaOjXwgdCESkKnKIf0IY25Z62/UhPqMuTVn6\nwv0d\r\n=6udH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"8ae3a80780f945d5ed0c8981b2a50e02cfe338be","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.8","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.7-dependabot-npm-and-yarn-octokit-auth-app-2-4-8-8ae3a80780f945d5ed0c8981b2a50e02cfe338be_1594814715777_0.8726982669366321","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.7":{"name":"@balena/jellyfish-sync","version":"0.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"af5c8f6a1be20ba715c70b7274fca34dd93e7e59","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.7.tgz","fileCount":26,"integrity":"sha512-hKPyT+i+xsbNyeKDJiSguGnqDohV4u3/t9E1iXX1NYjb92mAGxZ3UfoJaoSUmxqHRPKg6u5EEN3Ny/HBJHUAyQ==","signatures":[{"sig":"MEYCIQD72vprT0elW2Ap8cK8neZmVq4evADCYXekRUdHRqAZ4wIhAPv7C7/HBTDY/E1ijXteOQeroYxJ0Z293v1oOYwxwrb2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":235923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDxYsCRA9TVsSAnZWagAA4sgQAJKvS+kwxpyzWq4TGBGF\nhwvMJF4Fx74ZDcuHAsie89OTJA6NCR+n2W/fKGFHpYyU4xzk3PAUK6XM0f0B\nwRKlml5vsZlnRYRhSQLswg6/4VA5c8sfPUoYL/Vft0WwHL/mgG62ckUzYFPt\nTg5EahzgHTmOdbik6u9dCzwY+DGC0jnTyC1GRbaxkD5OKZFlwb1CpV2qVN8s\nB1pgeJaD+hNi1DlkXmwf569Dgvpmz+Ux2yO8dXM113SoHYpDHM1tNMErQ3xm\nPuP9oMytAoo+7N9yWLLwaa75q8QMofJ1rAVLpvHcZFg9ChUIoehChcFCFTRJ\nOZyH3ThQ8lO+uUpSu6P3gXDSEPcntmNYw5PQrhWRMV16xNOwINAr9KJG71jY\n86VZdB8fpFP8f4lrckX1mkKG4qgpPCyell8XR2xrmmIpTiV7XPK+JxCk+wLF\nJ+pHnhn14DN1/20PbOZzh9nmsLnj3xrC9KxrebKe6Ysc3U0dDNSmYnynFjgb\nW9eaJZ1+Dd0majM0K322qrHA+TEx6UtIqkY5hvzMKpAxdiKSXJgvxGzXpECJ\n/+W9KsGPCyQ8/e7Imlq8G8MOmheZTEbcCUQ11kn4qK84XGHKtI/XWLumg+Rq\nvl5Bf5lFiKQlmEBoAU8zpIKBDP2KxLzOgV8leUl8bvaGxNS+0gQpG+7cId8p\nvbMz\r\n=V9GI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"b18c99736a8d064f5a030356beab1a2030573940","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.8","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.7_1594824235831_0.9774533013691793","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.8-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-0201d7143de8666d9b64159ac4da0fd7b044bca5":{"name":"@balena/jellyfish-sync","version":"0.0.8-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-0201d7143de8666d9b64159ac4da0fd7b044bca5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.8-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-0201d7143de8666d9b64159ac4da0fd7b044bca5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"6388513c90c40de4280b74c6072e26a3c3b91951","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.8-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-0201d7143de8666d9b64159ac4da0fd7b044bca5.tgz","fileCount":26,"integrity":"sha512-skVz8DEfep5ioSvMAAnJvlg8QBaAwXVNwNU9jpvogt0nN/BsHE7P0Hq/b3JLJFPz120qDnPk45QPKKMmmQaSXQ==","signatures":[{"sig":"MEQCIGOpBUVwk6YDmlBW30LRBVakIJbYnx9FLQbknxuMMeh5AiAfsOEM9tydohPYHMf9+00B/o24hSCpCEabLDYnLViBfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236111,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEZQ0CRA9TVsSAnZWagAAlmgP/An5ZQ15PqYFUeaZVRrV\nOXJQzOmLqrvG9pRKebmLwa5bjjykc7Q8tovCRjPWAdvC7lcJXlWi0IRTTiFU\nrM2zyHWbAAIrGfTNfRVngPSCWhUsWpP9JO/n3HW2/TMwFxwqQMShMiNEIZQb\n6Dx6TP1Rbtt1WBxuRwZ0lz//ZshUuY9+MlzXWwMlDRBFUhoNb505cZDtmM/1\njSugUPA9K4tGq5BlOyPJsSsIs6dfhgHOt3N3Qr3k14Z0YV2E2Sfrecj87j2+\nCOnegCSEORZ3RWgnVpxpqkjptm7CcevZGYyob7JR5+k/56Xcav/WP/h5GiwD\nBS3LjhLA+clvhkh7cs+egLWQhDslei9i19BoBJqaAtc5/NcIFsxQcoLuazwQ\nrDRx+w/EHCxNmor/ZjLys5EYBI67+oJUX1Pcs/q6mgOyQ9VmkjdeEPXm5WPy\n0ZmOKDzfkpCRvXGGMdmVOTk30qCvwSPygQEi7EZ6gIA3qkDoqcO2pDDKoG7I\nEAMcXcPLm1Mrr+Ylzew2JXIE7V61ReS+YeqeplLOyIveVJUC/OCgpDRFJvE/\noVwvPmJnUUT/K7K3XoY6aS7xnL3DMq0WzoMDPM4TbcBEOGsDCtIQ/h3ZYAy/\nWxZAXBnqTC/Vzg8CzqcRIpGH1k99giNU8ABw8fSsrK4ep4rINinp1UXs/RZb\n2Sx+\r\n=WXb7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"0201d7143de8666d9b64159ac4da0fd7b044bca5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.0","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.8-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-0201d7143de8666d9b64159ac4da0fd7b044bca5_1594987571732_0.12057207434995942","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.8-dependabot-npm-and-yarn-octokit-rest-18-0-1-4f89cc30de90d699efa47abced8ffc4b9465a743":{"name":"@balena/jellyfish-sync","version":"0.0.8-dependabot-npm-and-yarn-octokit-rest-18-0-1-4f89cc30de90d699efa47abced8ffc4b9465a743","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.8-dependabot-npm-and-yarn-octokit-rest-18-0-1-4f89cc30de90d699efa47abced8ffc4b9465a743","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"e04c0d18c0e00168341c26f31404137b44d29d1c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.8-dependabot-npm-and-yarn-octokit-rest-18-0-1-4f89cc30de90d699efa47abced8ffc4b9465a743.tgz","fileCount":26,"integrity":"sha512-t3fzF3dDAGX4A2rbLWDy4ZRcYmb9G52yFF8Z8if2TWdICf5bvf7AOhmIkuplG+cw3ZW/Q74O6VPQYZKeXC9fyg==","signatures":[{"sig":"MEUCIDSo7qyxojt4N7IuduiugKvgCNi80qoknM1kwAIWjP2bAiEAi7KutCyyrhCinhodCkYmHTC5dKeBqp2YKwlcoiAZENQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfEZRoCRA9TVsSAnZWagAAXLkP+QCpfbBjLy6HK4d8ez6/\nH59d3Ara3o9rVuxCLpnsJANs+r7jrf1qREOPFg2o7tAUzELRMVybegxhBgB9\n5NjgiAwwhq4PZT2mHG1xtrL32A5IFznlijBAqIekgxrgxtnSbaT7YDk7z7aL\ngPOfT1Rf5LpPvSgqeUhZ53Ghu1I3u/7TzI5iDs8iPrUNWyLwHisA9RQ37F8A\ntic4R2wpfiLgxKij9dtcYeRYpbwngnqGyvhL4LS4qgkYuk8Z9SC8Odu7yHtI\nu+8E1nKiT2caaM6Jx3gyIBoiNEv0Qyx5AQE6GFERAKbJ5j5cR5Z8c7RzEmM0\nYL6PXGG8dbGnY6wR0nzISkCZSmsouxbp4FdL4D5ypSj+GYyj/CUIjWs9XlaI\n1lFjfucWATArMfGh7zb5MnidRJTNy//bvb1FY/z5YU0KPdVtK41qi6+yGySH\nCsVox3THaJQXehSj3PtliDn5ImwLXcP9mg/zUSUxXDA1A5IJkR14+5P3afYJ\n2Hd6b8VktlmZrxcsm3NbFwIwz5Rx13HtLk5p5JnN56Nm+yN3k/bUn4OK0XaJ\nuiEz+RwlPmH5AmkqghwzlpR8kT19LmZApG6vNnLjXBBdKgeFiGrNOD2L2pc4\nb8cDOLznq8nvOcfXpprfODgaCyR9MwsEHXZrf2kXMECvi/zelK5p/OYFQ1lG\n2ew2\r\n=fzGj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"4f89cc30de90d699efa47abced8ffc4b9465a743","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.8","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.8-dependabot-npm-and-yarn-octokit-rest-18-0-1-4f89cc30de90d699efa47abced8ffc4b9465a743_1594987624078_0.8168728686146509","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.8":{"name":"@balena/jellyfish-sync","version":"0.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"b6fdfa3a54115f13f9e357ddf47176d1b6d51453","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.8.tgz","fileCount":26,"integrity":"sha512-CTAopL/qi2P9idNDnQBoCxU9MSx/Q+Ic0DyK7jTvc65lZT+XOIdXeP+sFXuEct2F6IW/RAskKv9kLAcsEaOZ3w==","signatures":[{"sig":"MEQCIF4PiiJzesQCrxcN50wbtd4MGNAWkp8hW6ydFyhBMeIwAiA7+N8YKFo2et5lvImCvpq/4alMJys9+cRDLFtTbCULQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFOjICRA9TVsSAnZWagAARnUP/01cnqBZTxIImoMqRfGZ\nNZJW1D1p0SMUQQRQOwkyVsKU3gN21Y2ftMciLgd9cXAUp6V4hci2u+JiMl2V\nu0hTmlDvHegYE6jx69EhVuoS0xrFui9wJ+SyHfZJtDU8VKXgIlWjxrw2PlwZ\n4eKWaAqcaFEYOAgnc7FIrMhZpl6kFa20xD5jhQ1wqrg16DMKg+Jju6ikhzn6\np0J4w9DaxfqMdvbQTX7HRoBcnEReTmOk84OG3qGQGqUh2rtTpSl4UujK7Ais\nVAq4y1ypn5Eg8gXC5v8jZfn2DRjq/oCyA33VUsl0ADXdYCSU4ADU7sy1Z9sD\nHwJbpmsCAf0E39DCZJ4us8jWmpYEOMM9PdciNqfYYXWSPBi/2VvkHwBLF13A\n7QUAiV+OazANBgNxNsuK7RD4HMQ1ICro3Gg+5q/PlNeUF1gEkk4BdniNAmDk\ny3AFipx03wcuaJAck43ApVKILo6wCBMT3x2JphG0ooZm3WffGaxlXIHcBDnp\nzOYPNdh+8NvU5taI9W3rIXUl53r4ZMhOCzIpw+hHUsBQU+zyG82lwjREZMdV\n6qI87i7sMtkyMqFJC8zHNq0urjQQKD63K1koexWoIb4QvMatsq2biPafygXb\nU2V24zHpUVBznHOOS4KLmzvkgjw1DeVhMliHj62rUjP6lmXaU3PWml/OqGl4\nwFE7\r\n=rm9C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"5673dc571b63224ea8d24791721988a5b3b4f4c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.8","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.8_1595205832142_0.4914911711611214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.9-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-2bd7ad00703857f33ec230f50e78d9c4b21e483c":{"name":"@balena/jellyfish-sync","version":"0.0.9-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-2bd7ad00703857f33ec230f50e78d9c4b21e483c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.9-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-2bd7ad00703857f33ec230f50e78d9c4b21e483c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"d934a4fb6048fd05172228488ed8a51a0e46e907","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.9-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-2bd7ad00703857f33ec230f50e78d9c4b21e483c.tgz","fileCount":26,"integrity":"sha512-d73r33RCTOb/3DoNFtzHwZoMfKykQRR5tUHuy2iyRJgOY/JGopvg4jqYjtOfF0Q923tq2ZOHyFtIzbiQ5ABdQw==","signatures":[{"sig":"MEYCIQDhYMpx8s5lJveycF0O5dgQ5C3GZzRnK598VdSsHVvjdAIhAO51KL3FqnF2HzwiqiBligakSN1gXP2N80n3LUcu/Pln","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFOlmCRA9TVsSAnZWagAAfAAP/3hLNt0UATPcGSPjDwhB\nvncG062IDCNygh0hcAJdON15fc4G3peL3yJAfv1DiAvkoSe2RCJVn3fJyDDt\nZwvZnxlUAT5brH2svBm/fFrF4davi6EHFLv5rxE2g7rzdIC7rzbss5x0qC20\ngYtDegiGdC9/wFctz3zP6Ix14rpUDSD9tsnBke54CSubsuFuZA25kOOkiJ6D\ncQbDmj27wSc2EXkYXUyPIxSEF8wNxRm5yNvyNeZkti294pGNgBI1J3rwKlXP\neyr+km4ZkeRVzTX7op1fxG1d5DO5ovgo+WXfuAtqvml7vzrkaYYfl3/xftD4\nh9MHQasE71uif96pV861MAzkgzWloJUePsCuZLq2C2sqCrxdHypcecRpJtNb\nGIpSbpuZB3ZBmhzcxZX95RIT8+dah3OsU2wtRJtWivmpBLDdpRnUd6Iljv9g\n5YAi8O45cx0YNKWL1WlI1TAYr7rJ4GmUZsIuIV8o5yWJ0mGscT4cklXYqhLB\nWLgpWiwRoFYVHUYnmN0SKJB3U/dVlBXxw/2BWgHgDw9GkuhO0wYK5jzxMFZw\ncE+96iaKNkuxXHiZGQH7XThVvojDgJPjJK6JFpRAPLmKNKHNwdBDX8EZTqcR\nrS8zFm5IYctDhJwcSTwus4sTHz7/IxsJ2SWWzUelnFMSX11CGFN3RiMr5F0v\nmbUI\r\n=HDHM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"2bd7ad00703857f33ec230f50e78d9c4b21e483c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.9-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-2bd7ad00703857f33ec230f50e78d9c4b21e483c_1595205990476_0.9726391655111541","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.9":{"name":"@balena/jellyfish-sync","version":"0.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"044d15a206f2e7fb21fc13b79e594852eeb4dc9a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.9.tgz","fileCount":26,"integrity":"sha512-ktZEMiLapPyxyKEx7RhJ1+6nb7QhgGGch4Ukw2zCHOXAvSEoGodv0r7w6ew+76cPVX9f5136P6X6OBg7ktidcQ==","signatures":[{"sig":"MEUCIFzT+X7UR9o3TAzjsFwmEyUE/lOj7tE+WfcItitM7lPjAiEA7O5ohFhjInv9PgmeOpRvRMOZSMmeAliXN5pwW2+oZl4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFOrfCRA9TVsSAnZWagAAnUIP/16PZVI4p5KP3ALDa/yO\n385RWogARd1mHQYAPBE7O1o8FyFhVs2VyLAMpKqTd956ld+sJq35m6mhSviO\naA8LGfRfA3b9Jl2czPC828gQDrj8zlyMU/PH9WhcnIXRuhMSwqNqocnMJAf6\nid4K1x3oFZDU2z/e73lZBJPbguu5RmOMZ2t4+bmz4LpXFhJnO5Sr9Ad0C3UU\ntbaMoE7Sipjw8pYvY452Ggiy24OHNDc57OpmdbhjBbMfiVz2jVIaSdDobTPv\nT1gZsm2VUVyGXG4XUoi6TRomvlQbj9QlG1TS5Nn5v/jAU08uTSiwBUe+RgaQ\nAGy+dOtL7R7QurI6jZKRtbW9kT/bnSlUIlKZOTGbezJTyucHW61FQAmtwDBq\nQqkikz7YaoiiyNN6gt2nLKVhZgoI6Ler/1N8rLplzimvfOS5z+Z5DcTEf3Wy\nuBu/NRdEe3UJ5SM6Mb7ntZG1ar8Hy1S8uTokNYwsKO2UoXQzzgTVPXUAmII1\n3TfRd7DKpkl2nCk/pHJud1XLs12pMdPLAd0MLmAvmonlh/pRDIt0PnHhhg+7\njrggbe1gkq2EB5PTJkLUapdY7nNDfparL1YAA5WMwOrvGMVWxmlGlqdLS+4y\nlcZg1gwyyNJbG5R6l25ZsiVLuJYS3chdbryesEUkdLNizkK3AHScG1QXYuJW\nR2ca\r\n=yRHD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"862ec89c274828f0a93d45971f45296ee86e0ed7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.9_1595206367232_0.41702649529785774","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10-switch-dependabot-6eb5e968ca4c138990d205f1286d601703c6b7e3":{"name":"@balena/jellyfish-sync","version":"0.0.10-switch-dependabot-6eb5e968ca4c138990d205f1286d601703c6b7e3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10-switch-dependabot-6eb5e968ca4c138990d205f1286d601703c6b7e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"efbf8056b40bdf5fb7923f6f2e0b543822685063","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10-switch-dependabot-6eb5e968ca4c138990d205f1286d601703c6b7e3.tgz","fileCount":26,"integrity":"sha512-PqBibY5ThVhLjveuvM/9QCfYf73+ma97+HbAKNmeLjKWlSIQ2AZeAdzPibvyfE0V0gZTwbHYxdhWdPu2atm+2g==","signatures":[{"sig":"MEUCIEQYzSy7CUZcnOj2Ogd2tkJ5CNj6VNokXp1pJxuPclg2AiEAmka+MnJfW5zDog7M5SvN1LIorSIidt+yWnWw09552Ps=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFP6CCRA9TVsSAnZWagAA7asP/j9Vjs+O+Ztz95dl4kTy\ndrkiW/Sfjdq01wnY29Bzjrdap/6u62UPfTUs86e4r1OAV1ybziOJbg7hU7MM\nwao7D1LySbH6/4V9dQENNLOMIRlLlIeips2oml+UXUNNJtkdsPGnEax0uIYd\nVU6kCRjAqXJ5+Ra/7U/Xbi8c4JsymCfKAB6FCO4+s+TE2Fova/Ufy64CYkRw\naSvbctBOa1LgZe2w690EZvo/ZClrc7hWbJ8asO1PKPIGGKkDRF5pBd8afG/Q\nqoH1sMmvOCIUfNoTAJk/ClKfSep2fbsMpxifHChmY1JDKRYZ3fCwyNYTWL7j\n6vDCHEnM+uRCzQDKxULHzJPQHXSeDstra4UqnB1kIvwOfdhm6ncWIZXVxQa2\njhTYD7xrAm3MDnxdQsRQXBC4SEcfPBOVPLAYHmMbswJ6FzGclkmjAHpQZvms\nM/qM91p7yX10qzG4ukIk7hePEGwP5eLUoWbye9WUA23mLmfIuJSjnFnJ75vE\niKpLOU3i9Nc7UMNLAZxVQ27H1VwMY00qCmOUvaAHz9i5IOS0MySfVdfsEKUq\nkux3LySEeOzGQM8vsTpmstUL9KrZt9rD7pZ0UfA8mV11nBfUu4PCwA4vwMPr\ni5yxG7BQ1E8GQDTpuxmgMCvYH0P8W7h0BKqeqJrf+4UGNR/7Mv6i5IWHxszg\nx9Bc\r\n=5PGg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"6eb5e968ca4c138990d205f1286d601703c6b7e3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10-switch-dependabot-6eb5e968ca4c138990d205f1286d601703c6b7e3_1595211394185_0.5145862906967646","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10":{"name":"@balena/jellyfish-sync","version":"0.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"f25fbf2b701756eac681e7bc533cbefdaf43048e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10.tgz","fileCount":26,"integrity":"sha512-y28l/lR9FfgGGIp+7ASl4iwEkIgvZMElaYZE3zaPhP12RtzipjLTFNI5YpVckC4T6mxgc757p8x8zxVTcC7F4Q==","signatures":[{"sig":"MEUCIQCC8jAuf8K2NHmgBwmG0tpEp0IIdVeT/OgwCYTXRdRmTQIgDkcEL9NKEb3dVb0awki+3qvlB6CbwmyUU0TvkNEKq4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFP9bCRA9TVsSAnZWagAATf0P/Rqvv96OyS7zroCKiQ54\nHtnb1pf6fXh+ayU/Fwr83kxvoJnIsfRATHEkiaWxvExXyoeHuVUa0X0T2XLO\n7qcMOHriGm5U1rKVOKHfKiY2ZxeCMlrMH1PdioKJ39DLmabPQWDZkqTJ5HC6\nHZGoUqrRWiieoYMr/lyfwBQUj3GCREJMRaogzcb1EynhStCUe+LMQYRr6TyR\n+dcNULxmm/DtTUuz2dmmmCWjq4wrFskx5JGjruxZVQXiwkGUkmOrbE4j0GG/\nFO0wMUUIInKAEOdKPmD9U6A8qNj65IraH/AJzDtJw1T7CQ6mngsxlPXiBkrQ\no/c/q6mixiPO58XYFFtmmrAeMdgTVHcwEUdBT/YiS5+1wbFR8WfFFWF8JzCj\nJYgN68uoSQS8D7uot4X0jifV0QYdZGfCehFAc29XCRWwZKUoRUoybviCGZaz\nXMhd1xeoRSiQEDmbMuXTJqSRymmeXfFrPNIvlGrNd++uOGSJtRYf5+3hjQ3C\nR39C3f2uzMmAlt+XXlUorhiFlmuKOHRrp7QMgSNwxNDWYjjyE5qsD47756VH\nVCLit1WAJ3XWaoIwQqpXtUh95KZeN91WpzcQuEm2hKochAm1uJW29FzfUTbB\nPrHKmsTg1oYGaoxINUN+Q+gMlX/L1BPyRPTdBA2EFJ0HtCc+ct2+jRqVp0Ag\n9ar+\r\n=xsXb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"2e2e08a302db23430f682937cd5cf881d47dcf13","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10_1595211611464_0.9145042664998548","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7":{"name":"@balena/jellyfish-sync","version":"0.0.10-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"474e58b8409900f63b7fd53d1bb81a3a2bf12034","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7.tgz","fileCount":26,"integrity":"sha512-YQbiKzwmeFNnaHTCO32K8XaGqCsPA9ZQIZKfE2XR2KFv/BaSMleEXFx0zKtH5LJOYPgpWboHJJjlNklBoEPqdw==","signatures":[{"sig":"MEUCIQCD1NT7/QtUM0ezJ0VqoSsoN0cto8s2D+PEFT3GRMaFuAIgBfCEg+H3CJ6RQLTuq5iUlcqecZyKmeV59vMR89hUIBk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQBgCRA9TVsSAnZWagAAL0cP/2exX2YVU77FadOQNIun\nRE15cqzWv6yRTOzUhhFgUwr7zY4EFE4+vphWdGA1dOSLObrzfzzINIkO6kUM\nTgKEhTnL9enzT6ck2A2OC+O6RCtVQKkMMDFfhCIZWeQ4VbnZ9XaKF9A8C5IC\nRVgv3bzsPj71k2X3idzGI7TFQd9HzOG6enenOhYW2JPNRMrz8FjKrlrMocIT\nJJQwnmVAzdDewqUB8+6VsNkmCk3gsVL1nytLcRbxHfGcT6rOA462C/wNET2E\nF2sW966D7Wn8oKiKY6Ohm43AnRafFf5eUh6tY54kTfv1ERUwmtOGzLQdqR1O\n8+dQXt6qWeS+dlwp0Epg2LuLnUquVDKWllGkTXs8CjFzLxOPhoKc107bh22N\nvlCGvvRstlEfmzVeZ2R2Iuj2LGwuFlAA1Qmet8pLfqD52R9ShD3U64lfztKK\nUCR32Kt88OkzRiiwzG7c2QqCxp5wyErmmjiukVz0SnAN69faEYG5d5scDBg9\n8U/1+7y4BHBlE46Vsg983HLBS1xhH2S4STOoIYVqhgcJoevXufnw3LX3KcR/\nxgt1hqYsNbEDWgFbcF81Yf5JH28oLcsoKI3VWt5kVH7K6fqPBn7cc1/otbvP\nSpvnfar9s865weH2fUpp6n6e3YKpfa/JNL6Akx4hlr8dSJV37VdQmJWbyQ/J\ns/9e\r\n=ZeX7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7_1595211871929_0.7509756560236955","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61":{"name":"@balena/jellyfish-sync","version":"0.0.10-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"673a680ae6be5a02ed6c0553f0fe52ad94619ceb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61.tgz","fileCount":26,"integrity":"sha512-c4wfwWlQZ90R0hOLm92esA/OYOuXHpDiXP4EZ8WfGb2Fw1p9fo3dgCf6FaNTH1yltc3zqJKcrA3VFby2Nf0nQw==","signatures":[{"sig":"MEQCICUUW8xkJIxBCUPuapuvZxsIiAEk5sX6r0vfF/qt9lx4AiAnl3XHUe8krZ6iK9oVfPRm4yF6Thx2l9yWYM8fSNtQ3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQClCRA9TVsSAnZWagAADE4P/2d5Ze+rgzEd6KpeFk9U\nYjBth3+4K5p+ad/vtrt+TjAuc+vwIqR+aNZVZm8/Daejediiy94SYqbFuvW6\nUaBpT0ZsqIso6zQrl2IJq11Elnmnj8hTvUqBHtUCn9NgHChnqBV7+L/nAIMf\nmuI38jvZ7xAp9p5/yrcBEcvK4j8Rb5yu5EnJzEYQdoRUp82DMT+9jjpgelTs\n1yjEAtxWCTZlo6ppFo/vx2syZapmRXXOmDT+R7upYg+JkFNQIKS0i8B0yCFZ\nPz5IsCVk8jjbogOP92Bqg0ntkhomkZ0gJKmyLVgR3XT6lIaEb0CbCKbJJ3B8\nVWaDG+2ccPhu6zx7hyz8dXk17/5hPy0gEf6xdDW42K4ZfYh8vR6btq0NZCV6\nhPJWN9kb3hntN0Rvj4eeT+Wi8hJCCuwr6mxidlYnt/igA7GcAIQPBrDc1rSS\nlU//MrsaPMZ08rZOUb4hLg/fZqqlrQeHXt9i3HYYWBtco/v2eKlwxyl8YSe3\nVRHUIgknJ7zIORDvjxh3XsbNZIoJds4YeTtE7U8zamFDhkWHi5/n1sdBEVYK\nYwOy8eh5AXt0QOoV6Cuw07P4L7W4q3PcO5Dj4NsedGOdrAu9ikCKaPbC36+0\n+RZkcumrHtOhJQ0i9u5ZEJ3yN0BBeyE7IOx7Id9oMy5QF6YGvIjD74aZ0gAs\nK+7Y\r\n=FxTE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61_1595211940699_0.8497083227961983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-08a33afc362fd0c163e481688b60f7221aa34678":{"name":"@balena/jellyfish-sync","version":"0.0.10-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-08a33afc362fd0c163e481688b60f7221aa34678","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-08a33afc362fd0c163e481688b60f7221aa34678","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"e974407d4e412bac98ceee09be0703be28802e01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-08a33afc362fd0c163e481688b60f7221aa34678.tgz","fileCount":26,"integrity":"sha512-onmKRkyI6ZiKxLxHFA06hDnGm7kJGDOsq2uCqbjq2l6S90o3cuycSBJHRRN0LF6fyY5Ty4luJqE8lJumyz/ORQ==","signatures":[{"sig":"MEYCIQCj9CdAYmlBJQSxrZU6U7PS9v4oF9B4KLahNO092qQ03AIhANdgLzKlqJZZJUJ/gAm1wcdR3Y0WFFrx8o8eYzG3ORct","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQCyCRA9TVsSAnZWagAAcvUP/1bEvtyOgVk1aEm5hlia\nQO38t79KgWaqomtfmrcWIppqgVwHpibR7mb4GQuoHJs3COmSqQWabIu+HfRL\nWmMRyPmaMI8251XhFKdPXDIaCSnhnEBtfJm7gsY3ttC0GtBCLAGiZE5LTIn4\n5ZfiNsJrUSbYO/ePUK/xYQ6JDd70rZI413cL0RvQKzxBPO2pcSp+f+MjnfKW\njZ+oPuUnZEY6TG6AAabFy4TB/QNm8vVyeCGu5uzbVlUGbzXG+OjwslqcO/0N\nzdfqdW8rOT+xjO32xtQmwaGn7o2XR5a+OT/ZsVrfVyCnsxj9IQFSZhW3D7SX\nZMfYyPYrFbGMY2GBCyP6dgdfUTeB/ObbGRYIKUksCSXuRF/yr6sUWs5abnJs\n2ObCiJBQ2bR0nmC2ovuKHwwcosX4vsBmJW4azM8U+Vh2Kp4qP7LmZ8BM8SGu\nwq/OsKIm8OGM43eVwVs4lZ4WCjTqAEvOkiizZeN0DMoAl+AykVy9ON+8MhhU\nfFEt2yzYenAMWEeq84Y2gcgNMZ6NOX01hPXzwbF7lMEThVaWMmJaEOTdvBVm\ne2Q0Qh48tRogqrznsB2MAlNMz6V//fMXzrfkJO+t6RlhvZkxwtFXJ89EpriE\nQxZtUEiWdinZoC27+sU2/iz1+ogZQf+hvoVaMs8Qt0AdIx3sUAqGo6O1//HI\n98rm\r\n=rKyQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"08a33afc362fd0c163e481688b60f7221aa34678","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-08a33afc362fd0c163e481688b60f7221aa34678_1595211954280_0.9234991732811728","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.11-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-1c9da61cfdb2962c086e5bb9605261f7d5608e70":{"name":"@balena/jellyfish-sync","version":"0.0.11-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-1c9da61cfdb2962c086e5bb9605261f7d5608e70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.11-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-1c9da61cfdb2962c086e5bb9605261f7d5608e70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"493c569ae0b42a3fbfd9a4190c34db2afdacccf4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.11-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-1c9da61cfdb2962c086e5bb9605261f7d5608e70.tgz","fileCount":26,"integrity":"sha512-6DixH1hu4q3sLqlqIUk+dvGAynkRo8gO+YxtFQrf+d74cBXd30Bj5RUOmtFA2XeGjWzVSQBqxf6d+pyl+InULQ==","signatures":[{"sig":"MEYCIQDctLpQnc4UBTDCDMHogbBW3nukr1B/8WVDsdtSS3Hx+AIhALzKdUtgCaAhqMnQw3Tvk4sJvgDDHsAxaePtJxFnGBpI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQC5CRA9TVsSAnZWagAAKnMP/0DPhGisYKej3K6wzoZ9\n1Q8ZHnS8JhZks2xyqV962PFkSKJcr0oNV2WeP8U+1A6maVEorJBNJsRqXNla\ngGPEIp26trp8Q2lePHhq/tgvxPR31yhpMIcJ7DFBT/6+RpD6Ir+CEQsbnDk9\noFF1uN1Yrts38vvEQaK4Ua7S1cKdBru5RhukMfS8W7MGeoMAhKrSm8XMNeQM\nXM8L7LOZUKZ0WiARP+55kNmMa/HV3k/xUOVPNEK+IB0RC2R3cWGpPqqxzKtr\nWL3YCPeAXJ9ZckCe2KJibZgv3Kz6MnXgapHwNRejptalsIIDHcFRbm6wKLpl\naKi99Cbne89gDI7Sn99u/Vu2lWz+Nv6dM01phP6gzDm+1P+NWz0d0oCQovz5\nVeGV3H5d/8R9ki0+lZflQsy2WB4aMJrNAMsYPLTZF5d+s1Lb/cHdgQxt651Z\nk7V3egzKNjF8nlDNUDbKEdx4aceH+Uybo9AawT/qZduPO0yahm+r3Ik9ULLP\npk8Peghd2cA6mFnXunZbtJ/b76kp+k1g6n6UYKdEO7mnh7fa3xpYDCWcpmKL\nv7cbIiqOvSo1Wu94zY6U7wRZxz/MSBA4DW4f5Qld/Mc33pJXWyKt2JHiR3xh\nFVnpQNY20OgW1CMxetPBvSrp0s0TpvJsppOuZ0z46JtS2tAir1q22rpI0RzD\nqHNG\r\n=sSNt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"1c9da61cfdb2962c086e5bb9605261f7d5608e70","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.11-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-1c9da61cfdb2962c086e5bb9605261f7d5608e70_1595211961313_0.42462251134954787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-72536472dbc41aac68dcccbd9bb73013e0025716":{"name":"@balena/jellyfish-sync","version":"0.0.10-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-72536472dbc41aac68dcccbd9bb73013e0025716","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-72536472dbc41aac68dcccbd9bb73013e0025716","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"79e46e6b6ee33266fcc4aac8e93271490157b19d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-72536472dbc41aac68dcccbd9bb73013e0025716.tgz","fileCount":26,"integrity":"sha512-AhH5EZ43KGD6tBzxUJXi3Fa+tRWDDqHpUSI/78F8msXgyNxp3hovF5V9UIm4zvkxaDptOewxVJVNZll9nLyVnQ==","signatures":[{"sig":"MEUCICqbtq5aijRrWa+DdqGLMOnS2W6osvtHMYddkiWAyLMjAiEA/erjb3xrZd36E2fSPIr1TaNsXXzwjoxrv83iS2O1OYU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQDdCRA9TVsSAnZWagAAYKoP/j+AWR00/jwMB0dH7g4S\nYC6TW4oKnBeeZ04FZKYyAcXoAWygmtmO8+yYQ4rmgcD3YS4e/Qxv3KUrLK15\nt3QSDlUy5c6G9Rx8xa6tF9ToORGWQzy4vsKOkyEtDycQ0aucUMi9IbX1NmDK\n1EhDIyEayT7mlwYfYZQdgWJwXm9V2cWaE7r9RfF5Ywtc28ME7AbI29SopUwg\nq5FcBWY7gzbYHnDMuffXUL4LYB3eHNS1zDTyUdY84wSkLuHJKzpW8RrNwXcA\n/H4Gkw11pevT+VWcHMW9sPn1hBReiHu743dYWFRf7CVmKC96MbTvAi0UV/cz\n1P9cfplXu+cm/d6ZrYM5yFCgOG30m6rQCGzQQ0cRXVi0f+xR/tIAPepzzkLO\n4YCa+L+QRUetQEyW1bGZacbRyXb3sEOhEbMGELvI4MvWFozn9bXPeLp+YqOt\nrLD2BTf7FRRjQfijKbVwm9Zuxg2HFJYLvmNdj+uKUP9vWDwOg8no4GoXlDO3\nB5iXv5bloxgVFBV6EmJax0sE0c3P4px0gaW8xqeraCejmmn+Xz9FBS5e/QRZ\nuYgkucIP/6RfFzwveAFQgOIhhfOXo9QwwIORf/S1X5IhEoBhT8/E8GzPwqoO\njhYE29t+k1ermuFIeMh0LuurvFcIwTuT8hdKlL8lFvhPr7QY2dm1+Yd2DBsP\nQ07a\r\n=29sS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"72536472dbc41aac68dcccbd9bb73013e0025716","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.13","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-72536472dbc41aac68dcccbd9bb73013e0025716_1595211997427_0.6097745521507447","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.10-dependabot-npm-and-yarn-eslint-7-5-0-8ba98532d5b7fc654b849deb1b8f9312608372e6":{"name":"@balena/jellyfish-sync","version":"0.0.10-dependabot-npm-and-yarn-eslint-7-5-0-8ba98532d5b7fc654b849deb1b8f9312608372e6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.10-dependabot-npm-and-yarn-eslint-7-5-0-8ba98532d5b7fc654b849deb1b8f9312608372e6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"9444c02ecdb4ce16a844624d70a8f4240e576980","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.10-dependabot-npm-and-yarn-eslint-7-5-0-8ba98532d5b7fc654b849deb1b8f9312608372e6.tgz","fileCount":26,"integrity":"sha512-GMYUf21ntNIV0CTTkBf1SGcJMHUylt0l9IT0mZOqxr/5R1VZUowIXnvQcFZLpc/SbfURlEIhzkvVEAiVwUsGww==","signatures":[{"sig":"MEUCIHfzvjz44nre/2u98aeEXZLssfv/9AgH/gB+lhvFjZoeAiEArW20tQMuT3a3rnryf38619K6QV7i+UY1xhFu/7znBbs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQD1CRA9TVsSAnZWagAA8SsP/R0tx6y1DS9am5qbJoby\nKxqUxleS8orgKJ+PzgxJ7eqDMKwsEVcZNAmpz77Db/m6oNVC+j7KhjjnuPAT\nPbIvj8Q+GCQJTaWd75UPkO+GmblfeLL3kWbydowxpyeiNmeKO6a7YnNvyiQ9\n4H2QnKEWWPm6eIMRdRnLnE5TWKTHC2gG+TdYQMK0B2xvVvkojf1DWvobRY5Z\nottgGzcB3C925c1gKzWkUEkU8DdDqlJKoQszMkDQXJWgnJdmrtnl4e+vUG4W\nDfsfk9/nHgB4y6516xqWiWpAuXWDPWZ6Qlqp8dwm4LbCma+mrIQirObG1ucC\ndXKznwzsXFnpvyfqRpv8w5/GuX+hvzwp1hOarTobWlTmxXHhCpB9o0DfUU9I\n+Jh2epp5tJ2wWDMVIGwvJtAPHi9ITwal1H8nZOoXfeJ3WZL+d8hhJkyi26Yu\npTX61caEFnCgHFwVrTgFRJjduBwCq/spuxkBLbo08t79zRnNrlzwrCtWePpJ\nlPs0yvUgTBtit2pNHzoerRk/LqpixKxIM2cWrDFyoGfI9UV0FVoCR0yXFutX\nVWVeI2oIoGw9PN5mrwPIx6EPQswyS2imnxW/AD2W4D3X6mPvmLSJEKD9R16b\nvCCu13fzO9ZADA3+q0k5U9sSRu2RYqbeMuwvXkrEB8aqpkbXpqZgygB23IJr\nEnLM\r\n=jtp3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"8ba98532d5b7fc654b849deb1b8f9312608372e6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.10-dependabot-npm-and-yarn-eslint-7-5-0-8ba98532d5b7fc654b849deb1b8f9312608372e6_1595212020600_0.6605182506732872","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.11-dependabot-npm-and-yarn-eslint-7-5-0-9297bdd4b6835133db0ef22f9316e17a2338173e":{"name":"@balena/jellyfish-sync","version":"0.0.11-dependabot-npm-and-yarn-eslint-7-5-0-9297bdd4b6835133db0ef22f9316e17a2338173e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.11-dependabot-npm-and-yarn-eslint-7-5-0-9297bdd4b6835133db0ef22f9316e17a2338173e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"5c07f4e64d72395a5b95410c4c673f745fad66ef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.11-dependabot-npm-and-yarn-eslint-7-5-0-9297bdd4b6835133db0ef22f9316e17a2338173e.tgz","fileCount":26,"integrity":"sha512-sednjuY4BX08VxuByh+3YXVYdYPnKAByCrHq6clqyYVbqiaKKgsf5Hz9DEWJxnYyz9/isD+e2uwpgra8hXOzVw==","signatures":[{"sig":"MEQCICXMRX9LdcrwNJgcYJ0CFj49ITQtp7NBnKo/HrAzMZziAiAog+EvrY5DGcSqgVfSWWo2gsB0pZWGDKMcpkw665QioQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQTbCRA9TVsSAnZWagAAzVgP/iP2brecw7mJHacKkkDT\npDq5jJDS1ZWWGk6UsIKK7lgv2NNKP9EBPRM5RX7CwhuzFTu+TDpvqn69WVgC\nSH5eUiHIsxsbUi7o4q5VUvTkEx26324f67CFnxVAVuT3hInFB9tBYFzZSQTh\n7UKsgrbNxG4D0hcaXqjMOEc2VGbOHzxJuSXQUjYPlzlmaI+8uoE5t0XYF29/\nGLSCJL5eNa+T1xRcKHTIlxWtgV+Y4eCyeqrHl3+8VKCp6yf5yauMPRG/incf\nC9tDou9ANOcf0bsAqt9c4vnWBmdoaVWMRcNxue5cFPyvH7lOavb41w/P0uT8\nAvfk7x0iTV//P+MADYdpWy1j9rTXHx0Xo5CELUOS2OoXNgJcNw5rntBpJofd\naR+3eB9AlcauTlPmp+Qd+KvLsQjnMdUHiACeZ5Lq+XuiEkxOmxouEN2wlPvP\nB9Y5p60bBmpNRZqNsE4vbMA3L3+VMLFtjM1hJA/edbgBYulnjhWnfLE/CXAM\ne8LBdVqJBP/+k4yVuyZyl4DVX+7vhD3SJ99gt/ikqbUiIfvjyxoWNLlSuk9j\nru8OkE3h5YyFxAHDO+4PHaAH3A9HZ77+b5BZeWX7ZnYlFa56s2WimqtvWjg+\n6oE7JoXhycUjQo0GI3H7b5juy76xkmUKgcMogu9IFhXAbyi4wIouxw/g6+Gd\nAmI0\r\n=nefw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"9297bdd4b6835133db0ef22f9316e17a2338173e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.11-dependabot-npm-and-yarn-eslint-7-5-0-9297bdd4b6835133db0ef22f9316e17a2338173e_1595213018657_0.7275431320054386","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.11":{"name":"@balena/jellyfish-sync","version":"0.0.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"3c534e3cc53bba1e1040dd619e342476a2afce7e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.11.tgz","fileCount":26,"integrity":"sha512-w0ZWt2TXLjyNg0g7yk5B7lvCpXHxmS8sgGTBG5v+WkxmiD8ECZ7W9+laGTaV8uatoni+bTIvLpcT6pgHvJgewQ==","signatures":[{"sig":"MEUCICCYLOLSfL+WDXikg8FEC0BVkGlXNbUz6ogBkwZahLB/AiEAwq5FBlcNAyTOGnE5c9fqAft+4vWUHFdQO//Uj090R0o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQXNCRA9TVsSAnZWagAAA38P/RXsL1alp/YZDMYOkxbK\nsQJmAB1dqxN9QWzASgB7YiXZblhln4o1+lJVNZI6byPuQQksSEIFn4y6p1RE\nv24ldvClD89W+FvKikGL3ExyCFrEzWC19Ctouv4hU/loWI1/W6vcN1S5o5dr\nz3cJwxQ2gkfbnmOQnFz08a2j7IdjASKqZCOl3Xx8W6qVkqPWAbfdLSNtyoVK\nLBY5PwM7pjE0eeTEgc32asD4N2UMyNczyzvfa71kjQvWVE7/qtv2a36YXef7\n2pFNS1NNemXNdTjbcUhpXmW80TXWEpVEswzGWN9kdfGJ2IPTdWBtNE4nXsWn\nlVLG1nITxpqT0WQwJ1I3gOSf28Z0ZaKnVspbkh+u28o35pCwmk27pG6zPMKi\neYvNtsoNilweToy/v0+Cum76XfcPbvSwTARw1VjcrLZP4+oua40vYj/4Sbf7\nTQ6f6k9Nn+N0gY2Vcb1z3hB1c4VaGzsha1NkrugboMNX5jXSlAwaOB6RiHhh\nsTx5yi0hjXtje+y2JRNIr6TNo8X1LD/A4pfJLiK1u+Fn8WDg+cY+oTp8Nah1\nUezM+rjH+ygtVMyfSe/e1FkDMa4JP0yXUgMrUV7EwmmeXKk3TRs+NpNOKZmD\nhdZluO1EO0VNISBkdSTi2gjkK02dzqFXa1ZCxmu+Ser+0kKx0NTi77U1PQaR\n4Ux+\r\n=IBFI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"9938e07a5b75c5e45a67b6a46ce959adf145e8ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.11_1595213261442_0.6141600951948933","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.12-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-63e19203b40245a90b38fe3337ab106a4091c6db":{"name":"@balena/jellyfish-sync","version":"0.0.12-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-63e19203b40245a90b38fe3337ab106a4091c6db","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.12-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-63e19203b40245a90b38fe3337ab106a4091c6db","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"4d407c1c8e144f7e5b22c96c99f6e5ae4b72d8e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.12-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-63e19203b40245a90b38fe3337ab106a4091c6db.tgz","fileCount":26,"integrity":"sha512-ly3EH6g1Yjr3Gs/dC6jmsX8PNH0OLKO4cvu5KRXNW2L0XIU5/i7E2bkmaKDpx/s+/GXI6x88zPPKpjK3Lg8ikw==","signatures":[{"sig":"MEQCIA0iDotSlL8+Ir/ylv+jM9beZslA7uFgoitnQ5X8bf7EAiBNiQc9QenSDCUvzxDBUNL4B2w9fxMJgL6piEDnFvcKXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQf+CRA9TVsSAnZWagAAvt4P/ikV0MPs3QuXZqhH01Pt\nvtib6HatI0R1k/VPw1zEGf60LCLLt5Ayxi/UI4BymANUCt/cAggnld0H2qZs\nmxUHO/xypY3TT7mRaG8mV6FpsMul9ES4iHM+Wq3bCv4P/iSBJzi8jquk7h4b\nj3vUaUgWmab/PBtQky8gyxlBM0JPuQpeGBpQE0TQEOdfz9R5TEKRcINqPiaF\nxVAGSp1Q5YCUpKN29QfGweMMPKO6iFCMTa5F3fB7iqtAyt4faPXeaYpXnTck\nuucaD6/i0CAOI5ZUz3QOSVy7U53D961eLnioQQdQJBrLZSHp87zcvnDzcTWL\nJqNxZPhnPJmzSB21jDm0gNyA4zXfcOCOcQoNYg02wb8OclZBwZQQeUYyRP7S\nu0m+Mgg9kC4m5E014k+Y1VUYJVZ82bh5moV0zOcsnx6MwE1hA/eoPa6Ym9Qa\n8yHN600jJ14E6AhSQNipYOgap+bMkY9DiqVi0JJhXo6NKh9ZWqg9zMOKVWHP\naf8NnKn2LSQWE/LlINDl3G5nFVzeuKT7O7PbMgDLQO/z9RyW7s9vlCrfx/QQ\nkBP798TOZMGUlLfzojnczzxT8qCN2dvo/m4MV12QxrKfumqb0MOF2XWXBUOs\nLqLlJotmUWmgoAnaReBJu57DIB+gZVFgVsI3pvmbjHcGDpDCZOa46Wq7YXeN\n0vss\r\n=ej5p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"63e19203b40245a90b38fe3337ab106a4091c6db","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.12-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-63e19203b40245a90b38fe3337ab106a4091c6db_1595213822256_0.5963244859340742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.12":{"name":"@balena/jellyfish-sync","version":"0.0.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"bc32494a579d967570a20ec07a87d05c430c1de4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.12.tgz","fileCount":26,"integrity":"sha512-Hv4acX/xkpkjJqdQ7XlJTKPlUsFb81fS0UQ3/4LxR41XKJMnF1izg+esG7Rj/4BJH2554V/UuYZON7U+lEI49A==","signatures":[{"sig":"MEQCIAI0zfY7pAsCIpg4PI5pCv9IEUMjEg0hALWF/AVjrZQnAiAqZ/fwFMyVuOn1czgQbggGRGJLkRSMoeypJMhk0SRhUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQnoCRA9TVsSAnZWagAAZ6cP+wftDDsn0ErYYdoZ1tme\nbFDOZnhXaefSMXErnebmVKNYK2CliWJrwrBlP7vBCBNgPl5iwsjVulEPSeLU\n84qBVWAUB2u3mKEloA7b3kupX8ZGAkq8Wa1mB/kAMnZQwqJWojGPW0rxAN/z\nTwi+noOZalTFbBnmpfu9KDlM98dnjm4pqoRunH7im5gsUbwq8DrC3PwVBCg/\ne+GOVadXBhRdZCqV27YvgO1GT1BaV42H2ChJI/iJ/ZaVPb98e/XxreHN/eRv\nd9UPowPlt3w/v24pTGaboNewqEn3VZjmabAQ03Lm3KN9tQKvp8SSUs3NHrZL\nPTEnBs0DZ4NFm6h+qPNe6hS7j5GHV/cic1+PK4IntUdSs7lvs439uQCwotJY\ngrIWKVIByaZUfwc+6qtyEGhXtt6ehOTNK2h/USp0C5hT+xjRNdXVchABy4YE\nHkOBiK4gkiDHIqzCunOL2KjhGOBNWBRasCVSbcuA/86J6T5doaLgtPYJa2q5\nxBGT5sIxnsvoJsmxacSyOJ+ZvMuIdPqQIhC0aUUWyyrkdGqnHVoAfCZo5KZb\nwPoZKbsu+FHN0BajASzTUMsXJbCJIo80ajMLxumypgsUnJWfGkhbQSTyC3vp\new3WIRjpAn+/JpO9PoOQodt8tkXApLZh9yDS1GfYEIxuG8ff3lqQJrS+gj9h\nloMS\r\n=6LDd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"0e9c75bdbb380831f508332816e4a5d004eca20b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.9","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.12_1595214312310_0.30141072122694945","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.13-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-f19797563ba95e45a8718f757f7ef691020b5cba":{"name":"@balena/jellyfish-sync","version":"0.0.13-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-f19797563ba95e45a8718f757f7ef691020b5cba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.13-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-f19797563ba95e45a8718f757f7ef691020b5cba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"680ec624dad0156b2211cd29952130faaf6e277a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.13-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-f19797563ba95e45a8718f757f7ef691020b5cba.tgz","fileCount":26,"integrity":"sha512-mVcY/e9irLuNZU2jN2n+jqKsI5egDgdheXslqLdADr8wmo5tRe7sua5iLwAt22N4qmAEycLOzvxXb8j5PNeMdA==","signatures":[{"sig":"MEUCIEcpK44TlTsmqJJLLJNbo44CWXLNcQ0aUj6kTT1Wq/gRAiEAyZehZTszu3KNZcPDDCmxPTpQPxoX2I8y+7hzpCcQt3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQsMCRA9TVsSAnZWagAAISwP/iCyiaDllOO4kWkGci8T\nG/uMfLKqbAgDsDKzalnwf1qc01TUfb6Ha6G2AsvgBSrn69qC+wG20wExmKpO\ntKC2IITQoKzxw2MirisIGiFlIFySJkKVRJX31i0uKrliGVdHUKGmmpr8bAs0\nUSAfp6WeS2hQZTTmKMlaL8TC6gjRpBxgCwu1aYjbCxdS07uS/tAltqzUh5H/\nEO0Ril4iUxP7y1MjxwBjrexmgOuRZJlmDh7Ay23lml4GkACZx2ewgtDIY92x\nQr1T1t8GJ72a/lQfikY8IcdQv93BlMFG3tpLEglxdkMxv5SvIFVxzb3p6YXm\nmzF1FiA1k42qfvQHCJaplX/q8f47knCQ3WOZp5QWMseCGVK4mg788X2KnXTW\n/zo+QcxTbLUgkYL5dwTgoT64Pdqeh434yjr0NGdeRpj8Iba4iIBax7uSFxqc\nlpUpRoXWYeyk1rBlwfU+piqe4pKB38wyG6NpLPVJTwdFYug/EeUncVzDIojp\nQAaOC2lx8Zq+Ko5a+VhqyAD9zxF4EwoWwa8eZ6rAdru9NxI4yQEhgdCSb3de\nQET6J4aCysnEY2b7XwXWAGFkXcRLke0KH+uIP23TnhOPWqEQSWXphsfCHXqU\naDW97cb+KIGr0LggfRvudw2dq3bVDHSkl3uqUhpijOG39Rxour7Lq/J6UkWj\nnLgw\r\n=hHjl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f19797563ba95e45a8718f757f7ef691020b5cba","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.13-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-f19797563ba95e45a8718f757f7ef691020b5cba_1595214604343_0.03733851409055089","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.13":{"name":"@balena/jellyfish-sync","version":"0.0.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"e714ae9122db760f20427fc12ac7c2139a1d5616","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.13.tgz","fileCount":26,"integrity":"sha512-MhwPKlMhkletaNU8CnDugUe9HUEzOeesg1CZaOZnzzz46Ujn0BzOJa+a2e5m1XS5z7jmpklbmiSNIwffj/FdZw==","signatures":[{"sig":"MEQCIDVc7K0GPvyzEefnld1035ScpFQyi/YYJVeRCVNKs2gBAiBzhzWp7WvY2h7kTy0pKGDWjrtB2f9gj4YToEsPl4coUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQ0BCRA9TVsSAnZWagAA2/cP/j3F/GXtjW5Sq5o5YyLs\nE/m2vC8uGoNIoeeMOwaDBiuWwwLOfk5rV781y+XgRe3B/gv8maPREsEpJb2i\namX4Vjr3z0rfO6efkBCKpcOy+Qk5Si0iVVk4VnjDCJAvoZawjS6lhJ+PE7OZ\nu4Jkt5DeXLpwVTOje++E5MuRFannPi6a79o/Az9cJU+1AuOfFN4KWQK9qe/J\nFiuQfySVKJL1K47hEIq00tu6c9CVpAUTODuCzIxGHbWqRvFXAL9QZAL13GhI\nv1l3OCSJb61mQsfv0QprTBE848t35CEwMaoCq8Xp1GjLFmvMdExtPYZPenfL\nQoi1VvvckGswHzqR3gXgpTnryK3lbc+lzHv4nyCedRoZSKSxpgniHid6Gek2\npWYIvl4MAZRInSeMpoOOT/MW6n2AtCQ3fM3IkzwBu9bKkJenmm2LtAfg2Ibb\nrLjPaa4wruaAPNuOX92rIaEj1K3JhNpVeZpKrR4zPcHEYP6GE8JsYWq/EtRl\nQ6Q8VzVeL+F/yhScLmc+cYFzKVmoPbshTMjMdfMcZ19qFAJxMVeAGZoYwtvy\npr7edzw4yvyknZtSfSQNZK/UqJIQtkXO8CB8PPDnx28Qq91pHXMoFnzQeUtd\n2AjGnEEPzWMBYzrWfHRiK5TX5g8hgfGkUb3Jq3Gpd3DRfjPo3g26MzOMNMCB\nT1ro\r\n=aX2+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"8ca584d49a74cbe234e30534d4e970d050109ad6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.6","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.13_1595215104834_0.2976677939861294","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.14-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-bd211561f0cd05878b9e9437747c5efc834b3594":{"name":"@balena/jellyfish-sync","version":"0.0.14-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-bd211561f0cd05878b9e9437747c5efc834b3594","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.14-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-bd211561f0cd05878b9e9437747c5efc834b3594","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"f15ceafaab7ca9ffcaacb8d577b9de6679cedc61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.14-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-bd211561f0cd05878b9e9437747c5efc834b3594.tgz","fileCount":26,"integrity":"sha512-jX9aOCreuLdzTwW0JQKhdKU7BfnP9yIy3wJtY7JGdjaY6niQKWy72YD8WJHyonh2Nv1DJ7UDDcbkYlo39g4I+A==","signatures":[{"sig":"MEQCIDYAEMx0W/cMwMstfjPJWJYK7lQieWMTYSeTzK+sPYljAiB4TZ2qhEJwL0PsUnj8+aHfJWqAZo9NU5r1wlRit9LZlA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQ5eCRA9TVsSAnZWagAAiGEQAJhBV9jndHbAT3PJnnBQ\nDRPABWbibCXknn3H48uMIwnQfdOBaXUYHkF2JKmGUffn4w3tgYCjo8lYLWe1\n58fekLoYSC/Wp7WRRp8z/S+yUY6zyUFC0Oh2VsCemdQhYL3hBhF/AEepcM7/\n061HwhkKA41dKP/xMBoL3FEP1PiygDstb1vNoYb1duR7ptkCnsPGw3jx/MHs\neuDuONgLfI4xuvtVZBz8tB0NICaemDpFJMUQ18Xm+LKiq6MJWZLNaUFJ+c6v\n1t+XFqE2Fc0lGI23BJZ+NBsslubBOEOgRHB5AkahNe7/E5q2Xp8tmaT+TKa2\ny6n8LqiZS+vJN49anqE9d0QUKgxk1+l3ePYYLNNAgCi6rz1ORcRL+oDCnyrC\ng1PCAlqp9G6tkfCNp39xknJWLxf2jueLsB2I1gbPar6X1SoTWGVbtFOWxYyH\n+AnduI15DyZyYlO0g6IPGN8OeJ5g0QHgk5WsNoMs5yDt7XOq3X7rQ0tdasnE\nhDahNA7cr06LaVjnvUu+8+dJ8d+0yXMseQDCNniiNELn3izKUA/CK3L3EfeF\nUw+Hvr8QgpoqIAVnmQsPE4Bh6swmWea3ugfIoj59bCeduDqqVYcLHwn/8NY6\nKqmMs73SHxKat1vjJOoeTnTA75lkyE5g21xu0b/wenrCEdRCTRxvRc9oMxO0\nZu0s\r\n=XAar\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"bd211561f0cd05878b9e9437747c5efc834b3594","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.14-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-bd211561f0cd05878b9e9437747c5efc834b3594_1595215453795_0.024305706543084282","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.14":{"name":"@balena/jellyfish-sync","version":"0.0.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"ac9dfc6be958a27c3ef7ae6a564f89b11daf4399","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.14.tgz","fileCount":26,"integrity":"sha512-Z1C6P0nf1EUHJ1gTfmyuDBjxhw4Lk6IznqU+SXU8h9Z76NTOs11UmRmfoQkA3gn+sFcuZV0WSTR6iZaMmK5JMQ==","signatures":[{"sig":"MEUCIFE4RTZSNIztwi7SWPjcWkY89aae5OEb/91kbxL4T8FBAiEA4SPU5XRoKowX1Xw43RnwQHaFdzvFQipj3FMtct9S0kg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFQ/5CRA9TVsSAnZWagAAur8QAJOfBbNu+1SMy7Js8wXP\nvasCBs+iYpzp8ndBdD/42kHOoFi0aW7e1muYzaW+pzoK/Ot27yVCZVTs473n\nEY8bt8GvJrCqXBrs0zBqbOBydKYqYQylc3TszVhyAipoIGXE3/Ym2BwKuMeN\n39cvfQsarl29BRwX18M8xiCVtfuYmqAOv1qH+2drL6iWFxElgyYDqu4mA0dI\nEiGWymVJWloQOHlr7y+LalSIsZEekuzARwD/xPoNpheMP6JmWT6whtrRVJVY\nN0NWo0jGqgDjDyJcHw5CpZ04iTSyENJykv3TgixIQW+mXAMFvL508VkIXfwY\nN3EqyjLQ5H6R+lFbI+YFZR5PUXW0g7M+5hbZkVRrBDTteAjqES8Y6mGcOAxq\ny7IN3mb4a1wQV207oyk9CxJlX0zL+D0JQ+oeniI2W1X6ph8dCyxhELEDOLAl\nARPiCKX/vyHhGvqspOQsiCkAQyzKj+tO8leV7KFEPcc1fCE+P0ItbfDTZiIq\n1NvP7Ecj/d+5tglSC8g1ieKe6Ne92VS8SvlKODeNSTpW2Su4qtSOG2Eaj1H3\nPw1v0F9cS3FfFKuyjuRbPZLNtc+oE1ZLaw4tx39R7r1/QoYuyNWrSM+5h5pK\nDSZVBd84cgYg+o2Kou+l/IoE7BpwH7lc8hJrOoiKBBSg1GUiWwlGWbvPsVsZ\n+kHm\r\n=nk8o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"08ee8d711852cc1b8a2931dc3974d33e5930267b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^29.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.14_1595215864912_0.8511054132915208","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.15-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-c1e972d9333ab5f4bb50e09fda6354e3fc500595":{"name":"@balena/jellyfish-sync","version":"0.0.15-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-c1e972d9333ab5f4bb50e09fda6354e3fc500595","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.15-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-c1e972d9333ab5f4bb50e09fda6354e3fc500595","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"92a4f3e191c64aea0203d5ef651a7425d03a01f6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.15-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-c1e972d9333ab5f4bb50e09fda6354e3fc500595.tgz","fileCount":26,"integrity":"sha512-/19ea17ex6z9+Clzlyuwdk9MtfO6JlktuIsDra6Gy4Gsmxol/KCgovT1BsHZVQplmRnLOUQVakzoQ6rNWlx0Bw==","signatures":[{"sig":"MEUCIQDQ5MxhtIweoq3ozTJbWdUpyd9bsxNO0qrvB1wOYPwnqgIgWt1uB+jCs3BmPmrY9xrXQXzxxhXgvwcPNWNlkNRBA18=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFRDrCRA9TVsSAnZWagAArR8QAJqzIxvKawkQ9VCxl7yV\nccWrn/saAhoCUYKr0K4eofNbguwSyEHBr00fT4dmRCswcU1uRhEzwayQXX9F\nK4St4pXrtY4n1Gb3NKTLLPflsrN7DTNhr2maW+QUl2NkTef1sCw17ygT/2Qm\noftj69MsoKddX/ZmaT4lgN6Q1aFGnRoLOhHPkfO06loFUYoE5kh+5nMAKIky\ns69nYDLKtyV2Qr8mO8DZ81yLKwPm2nLMYHqQFxDHnR7mDntPcX2sOOCBxms5\noWhquQU3Tjad5O2f5tR+w9PTNePB76TAEzb2Mo45MDsshScLyc+EJoj9uwpR\nj8PNR5brFZisgQ3C0Dsa1jkOVhGpqJXoPf31yAZ4a0IKc4Zf0HA54Ahv0BbX\nLFt2FiDxLO7qTICNNVeaQ+84BxhsuhkTe7n1hfmKUaDKDUSCsOsI+MEdryDu\nUEWtKLwwWENvQ7VmTd439eaU7aZrRWE7e5t9rJqATqf/pgJT0de26O+8iWEo\noJmNphBKMQsj/1N/2yAIUYCgJGXWkZxYRbTJMp2RBDrGmG+CiDYnq8Db5J56\nPmty8nY28BbnFQb+Gf4uNR40v07JaITvBZRyG+1ZMh1pS2D99OajgLqiXJ9c\nDee8lf5C0/BleNgKyJKh/ul7S/Iy42OIFk74ad6xsmcLjNJ2q2tNaKeG29w/\n7aWQ\r\n=JcGS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"c1e972d9333ab5f4bb50e09fda6354e3fc500595","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.15-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-c1e972d9333ab5f4bb50e09fda6354e3fc500595_1595216107397_0.1935360664973491","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.15":{"name":"@balena/jellyfish-sync","version":"0.0.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"3da2e4361bb51457f8727d33f174600281030d71","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.15.tgz","fileCount":26,"integrity":"sha512-Q/Ok9yzW0lg5Qbx3tNKashOKf91T5SKEZme1DYX3JaORuXKGmjLR1rivaco4OYA+ZDAzW1f3zax7PKA8tNwtmw==","signatures":[{"sig":"MEYCIQDxWckgNUCwx/WRuAEPafMatwgPEuKBhX/KLuUYhE+RqQIhAOyb3bfPT8pW6G22Xt4veJyhRFCa9xXmQK97a197orO9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFRGcCRA9TVsSAnZWagAAOUsP/3heOQmNZo6JxVkt6nlM\nUkCMbhDpiLCmOoqsRJDBmokwH8CqRjsXOeVHOvvqx+yXwYse8wEz65FbrIno\njf1FrUl8jVpxg+F0puiCNnrBTgNop/irWSGtMZDhz7AQsBsihHPSzyybaVDp\n+FAcC/7Uqcpasii5Zzgvnv5vsJI9yNlKhtxINfdiDuwRiNGtDUM9vDxGz3AW\nJu2Xlp+1VO9FcBQlX4NHO83Q+aUicKvxtwGKm9dznjpSXAM1golUTd9AXa5e\n1mf1pMjaPgF6Uv9FqfYxtNpjkWL+PrbTuZQWNUZLPeFJAiWyNkVjE7DIS1pd\nsIQJq2dm/vk7soMHST2oXx5sJxsCZKw1XT4SHcz7p1tre9lYUoL+0YseX673\n3kEnpyiHfPObc8rhIdN9iEK9R6cRHyIwMLlB3H10cSEo14zT48og12YCkAon\nM763WrWUSi+z6EczoW9du9nt7LOLDJduXcLDLC7dAPlPwfCgQPXXzVk3Y1fS\nUtUX0KOXynBch0CRaWQWAqCu2Jov39Px2PRKIU9aVoR+yH07fTJKjD0VXWF/\n5HE/c8Hvo9sWHgI7pFIWHYg0tUMLbw/I2VQBi0KFc6N07Rsbh1YNB11KMz4Z\njIm3zFJiLGcuU3Uy9LwPVTogCn5saFbcAHs6AWtohfEc1XXR0xAj1cZofxW2\n8k/O\r\n=D1h7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"b1b766ddba9d30341e8c99dfc4e45230b19f33bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.9","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.15_1595216284594_0.24323210669506956","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.16-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-337408c5445c1704f7fe1b35d4093aecdadd9985":{"name":"@balena/jellyfish-sync","version":"0.0.16-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-337408c5445c1704f7fe1b35d4093aecdadd9985","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.16-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-337408c5445c1704f7fe1b35d4093aecdadd9985","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"6d355e1e6f48d15a7f9dd36bd5049020839c8030","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.16-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-337408c5445c1704f7fe1b35d4093aecdadd9985.tgz","fileCount":26,"integrity":"sha512-TelD6ai0qTv2NZ8Su9fwqhzE8B1G8jTXgB0+i2f6LaDoMBM/fSbFZB2ZP2tefGEOJ0p+pQI4yL6VI0owFh3uiA==","signatures":[{"sig":"MEQCIB2S8dXiX0qyHga9u2Gdo195pRmdgc2qwISmtZnXizsIAiAXi0xG2Tjuns2CIybMvmX9D05cTNWFiv7qvkwdkSgswQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFRLWCRA9TVsSAnZWagAAPkcP/jxpjCm0Ew2H1/P1DlT6\n/8DY0d5P8NT2eu7Q1PqaFp/QM4hMFrKBs+eOVrl7K5yHEA/Zl79meqjRYSXj\nd5gZL96n29GJKknRiVLfCu7QJI2+66DJ+m9Ywv93AgyqD8ZkRDxmITO931KG\nODFBZuZTdKGT4FMGoG1gXAs2nYkYX9EOMx+qojsJQbrugGYJIupWetgTGInb\ncX+AKRI5+50Oin5RLe8bkAa+vzQTJ7lZ/+apRVDD6OaBOAwoPSL2WbgWPeMI\nC8ADJiFMGRRi5FoWDTO+OwIg1LUXbYHgmJLoj4Wed1u1CXhG1r2b+8Z6v408\nD2yHTzyhfmSmmzYwX20iMhRC7X44ZfEv58ALKEoBtX5cOh9TVFi7zseksPiE\nvWItpv+is/KzZMxRC2d4Bqfo9vGI/C+y9T5WZ/fxXrBbZZ0LJb9IbzX0g/Sm\nPJUaLFGEgj8fy0Tb5cliJpFZ8Uh9fLNT69GDDGDylZBz6JE28Laz2hFq8jYL\ntLjHJLiccICKYhVWwI/DkT9kvTYDXrluqpXVJHKkDu9cqg6BBPHt0QLMWcDZ\nEcbgilrkUqi4fIVcIdPJDG8NqnYv2Uy7PY5orfiRP7j1mAWgI0Ed4Gzpq3QP\nQfbNJZedoZnmBt3XPv6YPjw4YvsIZS643y5fehPhH54P2W5NBKQMVNOUEhgK\n5SRD\r\n=i4Jh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"337408c5445c1704f7fe1b35d4093aecdadd9985","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.13","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.16-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-337408c5445c1704f7fe1b35d4093aecdadd9985_1595216597599_0.9996116059634543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.16":{"name":"@balena/jellyfish-sync","version":"0.0.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"068651b5212af2df589428d524532acc0c6ed8cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.16.tgz","fileCount":26,"integrity":"sha512-pfbeIdRPePXD/f+DuQU+8KUlXbzd8m9LRZxdKxOdGfCdTRJSHCyk25uM6d+uxI0VKDfHK+Lum+lHqHWxUjWqrg==","signatures":[{"sig":"MEQCIGH8we7WuMgLpaRrM2azaARlODtZJ4NIW1MP5WaScoPYAiBo4iNDQL5lkVU6cTked5NEIco01kNEmsADaFzcqm/KzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFRP1CRA9TVsSAnZWagAA8oAP/2WCh9mTioz5x04pLYZP\nLXoE+sLL15/gKWH5lT/K3bUXmXo2LriACW0TNb1QDbFg6x0Qg0TZUWhjxChS\nzELAONYxsUlC1+JkcI0PpqIEk2QmX28tGgwydvTklkXotv1DOrFXB+S60kY8\nfmYADYcj2O8HzUNghCa5fKpTJdt2Ah5YCh2eZidUFKkPiWY8aUC4naImT+mS\n1BT0Fx6oTZkebGs8snuZ+WyS3MTrL2WkFxPw90G4b2MCzHLBBYpfnxpsyWA2\ndtMIZe/7HMGbTyagy5iEoNsHmf634CZvmEj5k2C2Diz9kyYgN5cQ3OcS/dOB\n9nE2L/XZr/0z+Zwu/EwiAL15i2Ll8ElLBh4CaGvNr3uYfbnptMIhXguQJbe0\n5x3ODpq8A+uXHhm86qrNXrpcq5PnTEEL1UhfXdFqqg9Mx7E9FkJ0By/CNmCj\nMvnHYLaz/tFXA8MLLLn7tXkhOnJcSAPZIkHZPed70zl3HJO0KgiVCkGdQkQf\nUjj754BaN3PzjhG6xrvTEVLdGIpALuJI73+RflQzoA73nHQ6uY5/VQzwN8X/\nzCJBAt/N7jExW0o/gnM8XTBz7I8XYFKgZ59868wWzwz9/4MpyC4KOZHkymdD\nE8Yr3eI0dE7k8/WiHcnUaDDDEKuLFEvvIhRdmzd5EF4quk4aH9ZwtLdQbbDm\niE80\r\n=8S+A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"8f771643ca6c75ed4c5a7aefcf5a9dfe153ebee7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.13","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.16_1595216884895_0.8410927203931655","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.17-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-3-5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97":{"name":"@balena/jellyfish-sync","version":"0.0.17-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-3-5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.17-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-3-5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"90b764cdbe4e4f00221f5d1d1fd6890368ccbdef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.17-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-3-5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97.tgz","fileCount":26,"integrity":"sha512-Ppl6x7nsRNPhpOxBZ9Vjs8rNhwE6l149y8BY2dhPMVsPo3NrsIN8LcFUD/l7SkSBr0EA/RGtrarsEG7p7JwwSQ==","signatures":[{"sig":"MEUCICkZ1yGADrKNvg3BtBqlQ9IJ14l9Z5ncCbGZVv2mdfBaAiEAwdDhkNYvQ5qQwB9MvfDJELS9entZhEQsx6ZIZB8ymbs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFYwYCRA9TVsSAnZWagAAiOEP/j5hq4cR3f64QLExHhTx\nmxYKSt2igjU5K8aGc8xvFYdMeyKYaOOeuis/vzKRt8AIfNJqJKlBUG8wF7YQ\nX/vjZE40KDpbdQwDWVu5ozpVgaOROrvPyY60XiYYOrv/pVHXSnLZh3GiMcXW\ntiQtdsVKfLFzYO813oU9qdrT210ni+suqz11Js7G0oEO3MNuBNMnPLwORHrh\nfnzEHD45cdwJOlvrxWwlsWmayLZCotihYmq1A6Nw4OdB+bL7Uu9+C8lGGtJq\ncqFxYNkfSqjMDcklklZ3L4UMTUswVaaMbH2WJNZTV0MZ4QZRAOu1IpakwdOQ\n950IvFH58pTGssW4Y5snZaZLu+cuhbuDVm2w5qcX4iag+x9BQry7itqVUEJ3\nyVnh8bflgzJm0BHxtHhi1RNmK7pL7O6h2ybQbzbiQtjKtrFe9inTz7qdRvko\n30PdY706+dEWFEH1Qa0LKIVgIRH+uQV+RHkEjQq9BtEmV/K5VtWztkF7c2yQ\nBFJW/TPj0tUzV+hfd92Iv5LfJfhg8MeCgZVXCjjsQJ4Q+qRETWf9KnnxUdgd\nP2+T0OqZHUtub3/bicaqw+ARrTzLA5o503451EIiWJ+IBBQFOLBdt5nfsJd+\nMr46eaxEy+eLO+xzkv7tn/sUNBxwrHYW5S7UL/egMrkdWzCM5A2p4tL5y/Sw\n0/Wf\r\n=uRnU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.13","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.17-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-3-5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97_1595247639870_0.46793885182007067","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-2-e33a03647f69594199a744b954f1479082a58eaa":{"name":"@balena/jellyfish-sync","version":"0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-2-e33a03647f69594199a744b954f1479082a58eaa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-2-e33a03647f69594199a744b954f1479082a58eaa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"00acb80932d3cee3dc754ff4bd536328f480022d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-2-e33a03647f69594199a744b954f1479082a58eaa.tgz","fileCount":26,"integrity":"sha512-63EXyio3uhG6m7govnR1a2qDY1v29jBfmTMEbafxxRhZqRBMwBf3d55j3XsGUnLwyo6bW6nHUX1/uIFNgj+DdA==","signatures":[{"sig":"MEYCIQDcdccbNqbyKGEzyUEfAkkzkFe1bcF8i+EoHoHTKBdLygIhAIq1U6YesQV0k8PhJ/+390mbjymij6gZxT5OFYVHWQje","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFb62CRA9TVsSAnZWagAAg/4QAJ2plrgXlvH17ViLHmms\nTLId27wZF96EtLekFDw8cdheJsIeLGfHd83KsF+HB9F9SH42Es6/WAZS2b/b\ntgh45TLfNTi6eOWBJTA6C5yGvaKW0sILxKPjKuD36R7LHdyDoCq4IfLHkiAB\nBSfbrQvozOd1kGvqGRKkQicQbNYoT9gSPWMx5+d3mTTMl+2ScpmD3az+J7hx\nRKXK/jqCzpsP0y/XoCGcF2khpN4fMA2DO9XptGE2BS0+NAeE+mPSW1soaKwv\norxJ0qbq5QxLfNzXtIzgCgAo1o2R9aznaIXL5wuMIr1FjBXSA5xny8IcWAJm\n/CBsPALvo+b5kzYJ/XGVIszqxL00K9sZc65tvQhOw/LYW2j/vQuCLQ/VOryl\nMOTIwwG5MVS9cdh7uplcqpNgduePhyM82KHZkesTZIrtKZ5RxZdRWmvu8/kD\nYZjka7OdBUz5WCSBb5q2igDXTgqzsK22y1qgklWcBjhBW7j+dTHoyCxnhOxW\n2EgsIjeNcON6pBkfaHwaUwP4KYj6RpY9PF/oxaJ1fqmUfglERwhQi8uNYCs4\n+iNqHO7fuYl4eohoXngDHOBFbSbYKcH3z9MkR3K2rev8A+4p4Yaj6gDXzJEi\ndb3uFZZ69NLf8iZfm6JNFKA4tItdXtSfJpKhlAlCfWMFtj9ZPlajOqbIJuTB\nbuwM\r\n=Lm/K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"e33a03647f69594199a744b954f1479082a58eaa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.13","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-2-e33a03647f69594199a744b954f1479082a58eaa_1595260597736_0.36475923114632924","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-3-9fb1c3d70320bc237833d43645f7d325829e4f0d":{"name":"@balena/jellyfish-sync","version":"0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-3-9fb1c3d70320bc237833d43645f7d325829e4f0d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-3-9fb1c3d70320bc237833d43645f7d325829e4f0d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"2fa307683847a56d21186402d39e29966f7cdc64","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-3-9fb1c3d70320bc237833d43645f7d325829e4f0d.tgz","fileCount":26,"integrity":"sha512-1rnQmaQNRc1OcRe04NmN9LbljbZFqdusYR8L+PYtConOk/UiwR5p8jj01HFOp3UoxpSGpZiai6fa/RhJ1Nd/cw==","signatures":[{"sig":"MEYCIQC+AHoVLLNPg9683H7dQInITTw3tHqxLH/JgOTFcPGcmwIhALMHOhCOR8C5Tmpm7uga3WKS1bkGJCUN7/78GWjrK1jS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFg9qCRA9TVsSAnZWagAAKMwQAKJlGWMWsWCYodtg5tnf\nc/yv3bSYVwgHKLBkF54qm9ILI48/XLZuo6oNpj2C5lv/J1fkuErKtHzNMKDc\n+KvTw2MgXvgnfzkNN+BLPLE5PrwUDALR9F7CEmGNXTpshqKJ7BPDp8DOTnko\nbhY7SCNUSNIQ8qlb4qmjN8k9mGPWMXzSwyIihYZ4MMTnWMSsYgPPeSzDLNYQ\nUsu0FA9X2aFJqf6Cegz+HMVy7RISDHcgV4q7qwmcbkZOkPEbGIORy9rhj0zU\nvkpjT4vfzG4EzswwUeccYsaAbYS5qARaw/ezjZfWkBqI/0rJmrLyG6dNqpBK\nw4QS8w0aZzPNZtv355VQiPdTtC+jXTThMV81xy8sayktFocMII2sZJ9lKpPn\nimT42mUmxy+5BpDCkQhl4FAd0JJ+j/c2z+b/cugmS5ZdCguu/xEkLa6+8GEH\nXh4P2xqkBGLFTpiW373zOBw5f6kslq7u6r1UPq2g5bJ4tkmrPDmhHpcU0aq8\n4OgITfv+p1ViPXssaqhj5obsZ702b1cUXptMtv6aKDC0tMyBy4rlDPFlXGS0\nPIg95CXlTBW2wwCjDj7Psob0LW0/u2KRIuJMBPz7kFRYOqQuOQY4FWzk7un6\nz+MpLPPSqHMat1+D+Ht/4VgyH9DepWSGG24MyXUBg3stT+Cu/GtkXi/NDexg\ngrAT\r\n=v0B1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"9fb1c3d70320bc237833d43645f7d325829e4f0d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.13","@balena/jellyfish-assert":"0.0.13","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-3-9fb1c3d70320bc237833d43645f7d325829e4f0d_1595281257513_0.5255612317988045","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.17-bump-dependencies-f0afdb38228ea804f96346f0d0ace10d43b34d26":{"name":"@balena/jellyfish-sync","version":"0.0.17-bump-dependencies-f0afdb38228ea804f96346f0d0ace10d43b34d26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.17-bump-dependencies-f0afdb38228ea804f96346f0d0ace10d43b34d26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"054a7ea3fb56b0e9b33667d99579b22322a65055","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.17-bump-dependencies-f0afdb38228ea804f96346f0d0ace10d43b34d26.tgz","fileCount":26,"integrity":"sha512-qeXgDLeQvRVmcrPD64rwcpBX5BBtYC78zgyLqcszii3JDiRArb3e5yAOlNklCOlBJGOEoAWj8JLDqVnqrduMcg==","signatures":[{"sig":"MEYCIQDXW4kuOxhw1VlA29xVaXQ2j2osv+N6trttlI5Bgvxq5AIhAPnWlkCJwL52Y5CENbGawCiBGXss7zad/JommjfqgvM6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFjrWCRA9TVsSAnZWagAA7/0P/0qvEZYRkVzBZ/HY5Bl8\nY2c2s5zL+t6w5wJFO3YpysQmRTt613Ya8VLXFtCj/Qoe5vzz6DekTNMALtF8\n76ltrvA5HmrENiUyC6kv/Xg/oTh86FR/ywKVlMRhik5r7F1aZjPlkfwaptiS\njg9vxn6hs+6fGUOxJLg/ygP3QkhqgFFEHxcQ8yHiIkJWmhVJzwRuQWQONBSu\nhXI+pM/jcjl4bZ1i8+ocQr1aDxwFjiON7W1BmsX1Sc0ZJ+kQ9bMrThpTfLQZ\nPVgthU9W7eU5wxuTUfOP2Q0u9cGlipFY5v1QOrIo0XR7LemfhOTp2Xtamq7E\n6tDnqPhgzFzv4ravBIPeF01caq8JVO/70CUIxXl3nkjVqF14vvcYVonRdDr1\nIIMamWavu7HIIJ0gMIOdowfxLw2vsRij8A9D3ET0+KVuV0DzDarVpuENws96\nBzvgpgyXWDJZcqHZahXyIHPG0TazKxzUQeKsi1G0Xw5FoQmXBZ7qJds96aCH\nhiQni65gF6P2nAP3gH4Q2YoM8GEWAYMu4YFZ7Mb3buoDfAuzgoeVeHqAO76i\niBg/fw+klSQoix+mhYXem1czChxFfM8tY9L2eRXMNff4nrRvWxmalRkhSiG0\nqX/v8C+2wa6rFJvZa9Eh5xm/GzODvrYEA+YFUjKWUSFPNlQiqra3+YDJzgdS\ntrri\r\n=FVBp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f0afdb38228ea804f96346f0d0ace10d43b34d26","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.16","@balena/jellyfish-assert":"0.0.16","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.17-bump-dependencies-f0afdb38228ea804f96346f0d0ace10d43b34d26_1595292373762_0.5603405424752155","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.17":{"name":"@balena/jellyfish-sync","version":"0.0.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"e1f7dddfbe70c38374d7253cffae0fcc46664d15","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.17.tgz","fileCount":26,"integrity":"sha512-qIvcsy1AF97dv+2cg1x0Dhb76mWNaFh3xRuqzvPtzA7xljw8kFwDFTIiwpVUsPu8WyXjcvjCxwPoXoLz/Z3big==","signatures":[{"sig":"MEUCIQDs/KQjjDEwJYo95nWOK+kzAoopHqPbP1N0XD13tT0qPgIgGknFf5nADyvRXekHmBLJeB81WqtLeLBE0OmHYhKq2Vw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":236869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFjuuCRA9TVsSAnZWagAAxP4QAItrNAru7MZYb244l9ES\nuy7x3ME7/r3Vd/42bJOu6LGAQjTcByX+nAG/q5zv604NA+PTglyGI4IUeuqB\nvIbSBx3V/MyefhDrUvzEQyhaNhZjox9THIzMZLDKAyo2I6uJGD/RLRMNwhQp\ns3xefjqjbF8M8a5UoqnCvNlHF4o5HTxREHh4GE8HEK/f6qJyeNZNlbaah+lJ\nX4Pgagfns6KQEgAK2u7f0jK3zuzzIpQSmqT8j26ORCrRjorTEX9ZP8HxIkZ3\nOb8LrnBftIHtGI4SaIe4bf5vKUyF72vDiInHzf3YDc29BmKOsp7PAgNAsO7H\n2KAb+lJGb0DH7L5q9m1VWlUSfbNRnkEzUaBCP3Zs6Ik7V8JdI2lwzmlhvzm4\nkelInAkRp6RatQDh/FAdi7H4Yzq+zdtIQtq2ck7Auvgy9+B/eqqpiAFaUREB\nZfvXJZ43H8/C84EZhn6JSwmW5oXouPkH4W5ly+tSQDDKaHnpmE4r9EwTAzqn\noNpzjoaeQ2AbFdAMX7Y/LSzFIIefZTW0cu1JEhbAkkECvudF963qDt/hYBMp\nhs9lwdGCGXzHtUHMYMZtayGl0ROXi1HsfuNxYfGD3Nw24bZXNmunoQjkHmUi\n53Pr1SvtNiIjJZG80eB9D2NJSsjsSiuBtul7oGaNOZlaUcfeGYSFmp9i+a3l\neNPo\r\n=MUJK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"4085839deb14582501830290b98e46f86cbaa8e6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.16","@balena/jellyfish-assert":"0.0.16","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.17_1595292589190_0.5908624651793948","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.18-switch-to-renovate-c358c50067cc834692de0d53608628c048783ea2":{"name":"@balena/jellyfish-sync","version":"0.0.18-switch-to-renovate-c358c50067cc834692de0d53608628c048783ea2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.18-switch-to-renovate-c358c50067cc834692de0d53608628c048783ea2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"fac7068eb4dfcd0d56aa333d3f4c46682908ef9c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.18-switch-to-renovate-c358c50067cc834692de0d53608628c048783ea2.tgz","fileCount":26,"integrity":"sha512-SiE17cVxSWHkONan6vvgqHcydR1nyNSxadLezK0sBXZD5YTKrWJmqvJMgQ5YMSffZ4Ex1ojbi3mi4NPMgvIlow==","signatures":[{"sig":"MEYCIQD3KeAfYIfF16hDHg6HXSHO58uqbAUft8ns94ySurMw3wIhAML85+PJLG4la/0XaUqRpj6RwJVQcTWCXIaxbd9xyiyS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFo9tCRA9TVsSAnZWagAAriUP/jUlHeMgdIwV/6H9iPEz\nS/fqW+c+9wvGEsp5fQxy1GK+vRf99mgfmB28u1XhgQs30a2e8wwg8of0yz4D\nygBJa8BoQvXQzSwjmZsNWnRUcs6V+tDFPZsMKoTrIyqd1muWdTSMPyNauPlk\nczdj5PBxW2tcS/H1F0z8FBvyEOfPCjnp/EK8DSIW1QzRFailZqg3fxw0FhGS\n7ClvU6zWbQvAemDlT/MxUUPXeIfeNJznBFz71HFKrsXacyGKVqdfKgOrzkc6\ny5EM4v5XP+myPrXLe7lEzg7eMKkHficJ51YBRvxpd2MGdoWcHVYzJCjNEfJK\n+aplsq9KGkbygH3i+k5Ljb64LzAhtKtPeGkmK4KsAMoa75694fSUpuzAG26u\nQiCot9F+8MYZGuycUekDwLZG/812nDLK3aw9JSNy0faM0SkuqRER5Y4pUknp\nBf2xCuB02byFiz0NzC0ZBSnv+gM8IFtACsslGYqHYf/SKFZkcuOO4qzVy872\nXbNVpiVokOevEXvcWFlBAD/1DU7ICy35iWwT6dPSvFTQAmKiIKw2Pr/hFk6g\nNZuXI7E3pD5h57SQzEzzZ5TA2ruZA+g9q/3Nu658SBZFDmJRxVU1n2Vra4LE\nrPjZayDFoa1G+1+w4fqlbKoRRBpX6d+vLd4ph/PjKmbAevD1eJ0J9GQNtHbm\nB4yF\r\n=bTF3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"c358c50067cc834692de0d53608628c048783ea2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.16","@balena/jellyfish-assert":"0.0.16","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.18-switch-to-renovate-c358c50067cc834692de0d53608628c048783ea2_1595314029540_0.12885294496931543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.18":{"name":"@balena/jellyfish-sync","version":"0.0.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"1abcf70fe588248b085eaf871db30f9be3d86a05","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.18.tgz","fileCount":26,"integrity":"sha512-PYf+O5jsIGMo1sI+k4kMx7fCIh1IQL09ZqgZkhCdn8IpiCGDvom+3LYYTzD8wfL+n7574E1VS4ZQfX7TQa35jA==","signatures":[{"sig":"MEUCIQCiiDTqxtPyuT98Y2VnrSEWipvp1Z/CE27BbE4R5syWvwIgakjDVO/BD8qEdRLxQqRiJERmhEc68dS+OW4ojMTNmKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFpAjCRA9TVsSAnZWagAAUU4P/1F2X0iwvisEk87CtJh5\nN6Jz2yG0ianVGCFbefwaop62chCE77Svrq9LSekklRZsVcl73QsxvLIwk2Gg\n+aaeDWVIVdQRH4myxixiK6AQcmdJBxyDqkJ+TG76MmRbdcGWAo0ViPLNdk3U\nQ5kD+cf5GGu1tk4yAjgcF5FGgSe+p4af8lTXwlK1zcIKLq61kTX7a3lZtdbt\nNURimIiAUY+ptoIYF1RGfJiQ20fALk3XGIpMp7eli7xlmHBo1h7blnoJrQ3h\ne5osKlAZk8RYGqHhAUCdoZK7dc70eq2R6/L8nP9LrZr1sazQjSoIjKpXV8zW\nnaEuqXukexT50+ikQWo6VrJjLnkeEZ9WXOUmmf9/s+SnHelmmRHBdurOkqMF\nEc+NYhdTJihLNZqjTPGMRsozcK9uQavRtp66xk/6TUKMHZHuIb6QeMJAbEH7\nvSGMhYVIGiIzOtmsZMjpPGzpEHsbwu62c2oS0RuF3U4il0cxii9qc4QY9uxT\nzlcbt8Hj0A+4X5mjQTR43QN+g7JI4GrJXE4QnGalXZuOmMVLVJO+PjWq0ykF\nnajBYCn8RFEiBCKqajclzfbivIMJcZ+mwLZs59BcuGkB0o0c12oFVzE7pStL\n3TuJvyymATyReVIPgMkihAC6qOWT48GAOkXETVdWsvb04NVlRhwZhdOTNHgt\ncLE9\r\n=BDP6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"02b06be42f9a4ab18e227ca4a7379f3c5410f021","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.16","@balena/jellyfish-assert":"0.0.16","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.4.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.18_1595314210655_0.6252350501145612","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-renovate-non-major-0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d":{"name":"@balena/jellyfish-sync","version":"0.0.19-renovate-non-major-0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-renovate-non-major-0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"088d138ab5fd7eda8ade34e6fda50aa4ba2a17ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-renovate-non-major-0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d.tgz","fileCount":26,"integrity":"sha512-UhHt9hXFuXggFi1vNEMJKWaUxwMkg6o+uwaL0ah1ti2dLTYQ2hrGd8GfXsM3rxyzM98j1iY8ZrA2G1i/O1ChMw==","signatures":[{"sig":"MEYCIQDqoCsdO8O3B/MwKPGzn0IO025SK5gLbL793IuULoudIQIhAO5bit9PnS88yjHiIE+wWrmdVAtIO/PvRXWwlEakHC9/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFpE7CRA9TVsSAnZWagAAKEcQAIUV+sjqAs5yWVpNIwol\nmU6zo38ihDx3vVqTb/uDpzErxAAl+MuFlyfXqqcDQaoZr5vf9ZLZAOMjVtRn\nVPLPwJSfktCVs9RLGgKRCjH6MapBKtRhiu5gjiThvlk/uhFEiQoittExmJP3\nCokAvQc9CQE5ta9W2BF6wCrxsQIpFAn4mUvjxhScF0A4antAGWsllsPRnocg\n1CnQZjJ5XZNZ7d5iTaeQiA7pkew0nbqvcgDR0hIfq7RjLgPwx9YSPFR5A8Vc\nCYV3fzyjRhYQDWQbLUb76Q+NxJrsg9IaFec++T7fcWSzCybd5hq19iEifMJm\nrkfuaFWKerbIPOKAbNoGn9T+nY57oeLgYpHofmzqhVbEFMU9NeGgQQVJ6Vie\nliAp8KwiEMgNZnfVv1yKWHNNH29h8fBYMzOwi+ZUiOcgSwcoNNWABzbnn0Jf\nzc8yPlhnxtTIj3+RfoybYs6d0DwLErmwkiiSfg2NS3Mf3a9fTwgeIf7dsOFy\nH7hAxt/nGHtNL/ygC9BVT0gO20DMLdgbrHiKhTLFuSclVJzwyNeteK1j2Z56\nYIY5QFgk9j2QpCU/bSlAighTRaUqFeeooO3t2rgBW7t6KGk5MHgPkABmxQGO\nhnltiXTi3PlsyEdVVfhC4te7vtoILg8naQ+n5fXAsHRtzJcZqmypKIcDu9PI\nFJXQ\r\n=w8GG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.18","@balena/jellyfish-assert":"0.0.17","@balena/jellyfish-metrics":"0.0.18","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-renovate-non-major-0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d_1595314490890_0.3708930261592214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-renovate-non-major-f1887a84f785a0a6ed26bafb0a97b7f58d4d027f":{"name":"@balena/jellyfish-sync","version":"0.0.19-renovate-non-major-f1887a84f785a0a6ed26bafb0a97b7f58d4d027f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-renovate-non-major-f1887a84f785a0a6ed26bafb0a97b7f58d4d027f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"1abeefe6fbbc257225b40466606fdf9f3e632976","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-renovate-non-major-f1887a84f785a0a6ed26bafb0a97b7f58d4d027f.tgz","fileCount":26,"integrity":"sha512-QeactxXhkVear8+0k9pvcP/ayuSj168BY9iXusmkS8lt9S0rJUVdRtg4U9whbmI6lKOwh3Od0n/2HwpGqn7uNg==","signatures":[{"sig":"MEUCIQDj44wJ1pyjCnrVmo1qfjfelbN4xjbKLmnECawdIVs7mQIgfO1nffNfQjs9/EXjiRr3Fqb26gGzaPY0OR+Acae2g7Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFpI5CRA9TVsSAnZWagAASSsQAJ5bqU0u4aKyVL8skgM5\nFny7ZUMs8FFe7gJuVxJmAbL643n+5lJAW9i73Mi8Hy70ZAsEVQn77YYWjU6X\nmEjGqQc7Jodsl4ASSK/jvUHxC9Kqv2QhLv+noNf+CdEJ2XJlMH3YKOYjwi/b\n0DmRXshyLfJSfUIGdOuaeYnGNLPO7RcOPifxMt69P1aJfn4q4yXWkuOh5ksb\nY7/zVT/OHhZHlwZ58pdI/680aQX2YbVU88pSktML7x3H6GUuPuL9ZMYOrWpH\n8FnOrlEbyQpjk6ISCcgqNDTtw/YmOfiZk/FJlKXvHv+tlQup60AC8Q1i9Ak2\nwlqWG0tM4jksT4PxO0vv95kYcQHe2Ap1FSTWuBq8ZD9YrD6tRxfdeCQrKqLm\noVNtBnKluXz+ZrwNs7pBgUHQb4uLGOCVakJuoOlQhL2rprfV2oSR1m+fC03l\n1RQPT2YGcEe5pMkkP1D+MAvzpAFitdBURWFGh+fIqXEe0yOY3jgdc04lPJIo\nt8RbzSBTmIilFrw9LHBH3rNjl80Ux6jR6IXRkzhMrLy5ZUTXQ6ZyUXM8viab\n3Y91cgo3uTFpOwepdagBqI6Uv8TgnBFXya9su1kY3nYofiIRN4K5ID1ZPW4V\nri/P3xDX5H+Z4IiVzZvJY2YAC1EOvUj1nqdcmMbHzt+NG9u7aKtfDBr3h4bV\na4UW\r\n=Kize\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f1887a84f785a0a6ed26bafb0a97b7f58d4d027f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.18","@balena/jellyfish-assert":"0.0.17","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-renovate-non-major-f1887a84f785a0a6ed26bafb0a97b7f58d4d027f_1595314744809_0.26907114118999687","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-renovate-non-major-ee7d404c2f8640069e1458ba24d78bc0cae00d8f":{"name":"@balena/jellyfish-sync","version":"0.0.19-renovate-non-major-ee7d404c2f8640069e1458ba24d78bc0cae00d8f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-renovate-non-major-ee7d404c2f8640069e1458ba24d78bc0cae00d8f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"1cc07f2d73701de81dda9f0419c3672590e73eac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-renovate-non-major-ee7d404c2f8640069e1458ba24d78bc0cae00d8f.tgz","fileCount":26,"integrity":"sha512-eL+BagqkkeZUBiIQ182h6AhShJHqeWLMV6u0xjlrHSgbUgQLecmbQizAq4M/0Fpmn56aKbqGhYsgi29Mntjz5Q==","signatures":[{"sig":"MEUCIQCtwFbHz0VqVH1hPNFSr4GLi7g0Z5B7kATvCxojA9DIMgIgYlkpdhu86xOPZgmAdh3PLNGkIv6PugYGpUpKN74gxeI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFp2dCRA9TVsSAnZWagAACvkP/R6P+PDWvNSBxKIHBHeo\nj6zJzkdh1h8+njfkUdKqsarMBkXfG17+m0qdpWCuw78OIVsFl9RELOerEw7V\nbaIL8cgIwIfpMrF7zZdVWJWpiKTaJ2nNHqWHpv6ghvZbVwNTyDYSdE88uOPJ\n9C80kv+hDnxRNxXmWqDv4o7AvCveY0dqCxvBUrsOBNFy1s10As4dK3XUu4R7\nKmdhWNNHZisPhxWqhcd6Rl9Ihhpu8NyXKiI84R9xISCYXn4tVQcL0ehPUXcF\n3hV5UyMEhlFlYP88BZUvBNfhj8s4g8iP6OfHBMfTZYPU2VbPWsSpSn/8G2Ni\nOS5BAzgF4DcamiveLx8XzU2bmmK852HAZqtnw1SQ8eo2ccH+DufcAl5fXJJT\nBHbWeoQ9cE8xWtDXZcrLGfGowHAcfc/1ozSkiDvAz3dLBuUnDm9eyhIG9NNe\nnTOPnrhvwJyALBEqKeeFqEmICGyCF28ykZHxgmMKPjYf5lh1XYsJmc1vPXF3\n6cdw44E9QHxi425Zkx4RKx/ZSRSjpigmgBPoFCHZAtu+s11bjiJ8K0A0SEAV\nZ2NEOrIbrUq9ouG31ClAXcNEifZw5/qz9LY9jAulU2ibvBdYqYHwdFs3yeuj\ni4/lY7P1F3bIjnAV7gI3VE11m5FGIqfG+FxKUO2+kihWwvVhb+dZ3uGcxmZw\n3KpA\r\n=MRNl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"ee7d404c2f8640069e1458ba24d78bc0cae00d8f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.18","@balena/jellyfish-assert":"0.0.18","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-renovate-non-major-ee7d404c2f8640069e1458ba24d78bc0cae00d8f_1595317660916_0.6840067434863364","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-renovate-non-major-f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd":{"name":"@balena/jellyfish-sync","version":"0.0.19-renovate-non-major-f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-renovate-non-major-f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"a2e71918ae976a419f95c78acccc6356e603fae9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-renovate-non-major-f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd.tgz","fileCount":26,"integrity":"sha512-SJGo/pNcrgSJ0IBC/a5Av0vv1R/Nms0yBaWzWKdDyr/339X8nFEwotlZFOhWMKBahxXOKQPfjd+6xmWNKsxAqA==","signatures":[{"sig":"MEUCIDGzf2hXQg70f2IxSl/tzIDerAErip04BrPX3RaE0La+AiEA2Ukua5iXv40c8OIvUiaVvyXcCg1LJoP6fJ+FqX95jlQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF5tHCRA9TVsSAnZWagAALOoP/2cv3/hH6M44uH+XtGmf\ny0CY1M/d0l2C3hVKEUpzd75mhuU/BC41VYt0jV9uTp1w+cGyypVOFsKbEDdN\nidjpvA6c78xTeyBPzbhwohTlTUKUlNE1UUfh1/nUx+rdp+l5oM4lgBrOaVwK\nm0Y9kQ1StXNJCk1RlUo8BdjNUbkeoFrM75KCNvS+04B9EyG7tttbUWej9Exr\nvInmIU34/Wv8XWo4/LP8luoLv9oYd4WayiiCAGtrE6DpgJSslNfLpY1Z6YRb\nbil6Cxj7xbhcnP+LlhQ4id/lHAc81MqFS7akwU/lhzXIXjM0THXwSsc+Lhyi\nqnVGHeMQPFY6H2YPxXpV4luDEHUg1ViYps7o1tw7dUuRuliI53B6dtAFUcyA\nLTv/PgaWI3G+Wbhw7FRpIRg2+JpFeEVJY4xFEOrpqfYPN5pfeaczdheL5TIn\nUEmwQwST8ofoBMkFJAHdSMTKAB+1hmHmm2rnCRtV0cs+6RKnI58fRQW6NyFd\neQZ5QlAEyM5Ug9hQE5kDDhSajAXcyVYD/lEA/xi429DLQMPTN/rc5+nNNrUz\nIrxG6BplIuXBfHTlylbETd/XyAXXgnXsRB5oMTfK28cMofpI/X3iMFp1/BeQ\n9jE4cmzj5Zswwe7gK5KetQUCR3xd1ih1Oi5fa8jFqvnFI+KQ+ENzt0QyffqX\nh905\r\n=c7lu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.18","@balena/jellyfish-assert":"0.0.18","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-renovate-non-major-f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd_1595382598605_0.18121600469608334","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-renovate-non-major-ad09b8db32ce7923b6772f54deda52aee4ed74e8":{"name":"@balena/jellyfish-sync","version":"0.0.19-renovate-non-major-ad09b8db32ce7923b6772f54deda52aee4ed74e8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-renovate-non-major-ad09b8db32ce7923b6772f54deda52aee4ed74e8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"27b2807c5d90ffc53a5c1dcdb1bc4df19161f4c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-renovate-non-major-ad09b8db32ce7923b6772f54deda52aee4ed74e8.tgz","fileCount":26,"integrity":"sha512-QF656Rp+kvsUIwkLNQOw2dWt3BQrp2ImIxYUjS8a3zlKw75oldzPpUwYFFJaA+TVlf5S1IL0XU5gI0pGMAHfnA==","signatures":[{"sig":"MEUCIQD/IXmfh5hkq7Phq9JeaDmSnacOQI+pv0DBbA6TEDGppwIgWQM9kZzQnewFLdh36XUFhGZw8iOftEERkmi2Y6JM+aw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF/wZCRA9TVsSAnZWagAAjsIQAIwBnYy1et7hZmR2PRSs\n4lJ3aooUEjloxnEDOQe2z+x9r3djma9esIma2v98CTbEBPjEQWIMMgguWfCt\nq+VG+Beeerf3rJWHjMT2+IiE6QiJjXyV3SRb2UIRwNp4iKnFcMgfnwiwzXhX\nI7HPN3imhTE4ZuwKjA1jwhcjjR8jeMHi9ixAgHShdaRzLjcU9ooQLdtqWJT2\nipU/n43Vlcw87hMlzjpeu3poHllgNzWhFIEIFb2cYr5m4NJ3Jk00yAPnrql2\n6ALcbyPQpcjfOyr/a6RF7XoL0oAlgebjXmhT25vw92vMCnE4TI5OlGlHW8Zr\nJwo8wA8oxVKngjzHBlz1TIIlQeYq7PTBmqKLGg/k+dHJu3+BQrJL9jrcR+2o\nnfyAkwn/9+mP4s84B85Lkx9HKN4YxLMwTZ2HQ+cbrt1MFvhS4Na4gSrVew04\nWMtB5zji+EE5wsnDjsMCmUnboEMGAyhEgezBUm8csZ9yUVX/zOQzc+27d10a\nC6+nrnAAvaKJ1ygKgqR+os+odPFgB7mUV1bZk4MriGn2aOBWgFHwvokYNdF8\nJb5dmuH9Fl9pq0QV86Ly1uQtcTH0oJh/F+lftZoL5SOLbrMKDvqz/ZX7DA6d\nxb/iitgJRMMzOFtGkMD4xTnOQ6Db+Olvsx+RBizHeom+StUxzdxrjuzwimcl\npbBB\r\n=795u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"ad09b8db32ce7923b6772f54deda52aee4ed74e8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.18","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-renovate-non-major-ad09b8db32ce7923b6772f54deda52aee4ed74e8_1595407384737_0.03576570569244386","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-update-ci-configs-d61928f3407efd701cc9a7669019c53b4a224fb1":{"name":"@balena/jellyfish-sync","version":"0.0.19-update-ci-configs-d61928f3407efd701cc9a7669019c53b4a224fb1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-update-ci-configs-d61928f3407efd701cc9a7669019c53b4a224fb1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"da178124b6e38a1151aac4d88ca9214a8292a8a1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-update-ci-configs-d61928f3407efd701cc9a7669019c53b4a224fb1.tgz","fileCount":27,"integrity":"sha512-MdflIW2hF9RK6sPaOO4tIuEWjvBSs5XNJpp9PHrBa6OREiLWSmI3s9FuRihpTy3ZILy7eKe2KY71jfoRutjZ4A==","signatures":[{"sig":"MEQCIEua5G8FmDSkLU5BFbJjr33kGDS7hehXAmb+PvP7hqUtAiAv3uZFf2JoYh75pnHqHE5h7HJ1BXHkXFvvF02Vp6wuQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF/yUCRA9TVsSAnZWagAA+P0P/AyZHBVgeGFtztK8Cqhw\n9n+p27oIFCBEfu5T3AAhU60OcZNSJ/tdTHzXGRcCqPDEGYZik+2ZAzrU9Akt\nALohR+vIblxz3xDtjZ/T3WcH6t3Q1l2HH8fTnsL7I8NkUm20NG8QhJVD3k0P\njDwuN4gOkkXPVdHGa/LM+9FScsuMuwtamefCwyA7goI2aS4lZE76aIJb3Wov\np5a4lVwkIi7eRczKcPty3zT68iqsnDiB4IkBuNdZz4J5GxRQL31DBnSqJBmb\nRV3ODbBhuT2z/3974gTnioVrtdwpq5J31yxjzfRl2QuH0wbNe8ww8QFjYM6E\nuqLj6LhbHBGRsWScKNjcmANZ7aQXQQZL0jZST5SaMGPKypomPk3Hzwo9SGxG\np2zlghO/am2VnV20SQf9W6omBrJD+7G9R6GINteHs2NengLqp4bN7RPBwaA8\njGqSijyeXjUkysZOeLftHsN3Q5WWoAhrIbol8rLbjdOY8CE780pacItbAYVG\nBJCfehDRcgAc3T3SevdX3eIosXUlSQLJymMZh8Blvvs2VCSP5F6YFMsE+zie\n7cDOY3chnk8l71znxkZB9nIOhR9NSz25qr8bxrucLHDOYrp72sXG4Q9G0PT/\nFojFdUOIR8JTUF3mfVK4L0f7dT9CUO9KqnI8TDqguRIjNWcDt6fVHf2QAmuN\no8/b\r\n=EQIF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"d61928f3407efd701cc9a7669019c53b4a224fb1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.18","@balena/jellyfish-assert":"0.0.18","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-update-ci-configs-d61928f3407efd701cc9a7669019c53b4a224fb1_1595407508528_0.33453081918360605","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19-renovate-non-major-247f4bce54bda13ecdc655195450a6bb7738c90c":{"name":"@balena/jellyfish-sync","version":"0.0.19-renovate-non-major-247f4bce54bda13ecdc655195450a6bb7738c90c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19-renovate-non-major-247f4bce54bda13ecdc655195450a6bb7738c90c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"6c05a4c57ddcc94f5c9fd38132744949dd294cad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19-renovate-non-major-247f4bce54bda13ecdc655195450a6bb7738c90c.tgz","fileCount":26,"integrity":"sha512-5WBJrSm8+OoYlvb/C5BC61+sGK6hjKz+NiJ6hpF1Tid/Yk4+HN/tg6t3QoZtWuz/4Uatq/14YvMfFk9J+CSkkg==","signatures":[{"sig":"MEUCIHyVfME1ftaTFrU80CovI/CuLzfuoHZq3nnPY5pixlKVAiEAt44vLABlRWhUdVNEnON/MUQ1i6ZxXbTLkfkSQ79EAHo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":237924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF/04CRA9TVsSAnZWagAA4vEQAJk0MD0VgXlCPyPkgwsc\nkiFpQEx78ZSfgM8JehWfDzyD88TxEhGNNUByIaN1OjxMxECwe9Xno8K2/Npi\nfQ0OluJMV0mHcGAxjgpZDX1pDlryXXrqhRnb388O44gRclZSehVhL9i+zWkK\nX/ihHxSbFkwk0a79av+6O4+PXfUUk967cgC2kCz64BvbDk+Y7kGThA8IwpYS\n2vSa45zBk6ryZewNaLA73J8f5uXJ5z4z0fXhQIaviu5hadNTia1Y4rLI9gs2\ngN4/rQ1Pero5C+pWCKf4eCuKOop/McevLuFXPOzrMGl+jn/mzub6WUpDekM/\nha/CZIbgYvz34l73u72z/+KToNDL14M0sJ7jyJV8qUA/FwCJKRnqrX0B4C5S\n6XkEiuwBNLGX5cr0q7fTxK79DLFfSZGzAEGjA+1bElPDu9Lr4p+eOxJbAQPD\nfO7feRLQdR5v/eGlWCk8Fp+IhI4qJwMO6DWpR7tw0If75U870+osovDnmvVi\nPaIzwLlCmdimnEqfoYXxX/4E8aOsSnlZySpaKtx0+6A3lTeTp3XJfwliD5Wt\n6Jw/HQBbL5CllGzAfNPZIfmeKnEs4Ws0SCbZct0OyLlqb6gKv2Ceu6xXuFUk\nsZhy5MlLJ0spuo49RHh1iafjq0dogHOblpNAVm5gADuI9QxoJbYbUEjfIuo5\nEsmV\r\n=fgDi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"247f4bce54bda13ecdc655195450a6bb7738c90c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.18","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19-renovate-non-major-247f4bce54bda13ecdc655195450a6bb7738c90c_1595407672201_0.3266472645952232","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.19":{"name":"@balena/jellyfish-sync","version":"0.0.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"416d4bf167670decb6b7c867950bb010340aacc3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.19.tgz","fileCount":27,"integrity":"sha512-7UU8+RjQsPMoRblKwuSfAYXQWTRJ7EIJxWdU0Sfwotkx1W0o3jwdH/XoOVdMSa7ZDAT/6wYDeu1IuvTxoMb0hQ==","signatures":[{"sig":"MEUCIQDWiA0FjebSRkd0rNMyIlJPTNIi3GQK/9vBw5aHQ5DcJwIgLKcbSosTQ234NUG2Ep75liLy3pJNH7Uo8daMGszKIpY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238112,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF/1uCRA9TVsSAnZWagAAmkcP/Rgd6R4iSE2FBBw5XrGI\nzwK4TfCBj+AQHbavc4XlRapshgIdIRnnGcHy9CMZF8Qzg9Xc3dxWYN+kDGUW\nMjqRSgJwZD1CLe30+O2clVHEQq+CknTlvU/h01yv5c5I7/bLpEXaxq9/3ptu\nA1+LH4DT4UdAgSFR9f0rmf+XQ8FVxj3tfbdA13g9RoXGnel6NwQAZxkfVskM\nFVpg0fnJ7rz/kurwC+CKgoHIcq8oBIhnut8OzQIKdlvSDlO+2wXQ7FypYrgk\nTZ+QPHs3ZIVqsCpXuFk7P0CjAP8V6t9mLVJzoGSk69Nmspt0ark34S5EnK+7\n0qyJ+cxEZIYjGhsTyHWcgYkaAsfOHKsR+PTblWrY2sdav1HNTMQ8GrPyY2Ue\n1J1+Qnh7J1qtqQcYfhmrE9OMS/aB4CNf9JewRd47HCWUGJQSp++9cOAFQHvu\ngo6q94V+K+SLBuKXqC+WJQGSAdMTpq7dvTQU4p5jTewnJb5nbyvvI0vY2wxt\nDIlbf5fafmkT0Rl9OgjBJXGx57PwvfFnaBmKoCJiD8wGLPi3ipPcIjEHkFDM\nxxgKDlQwjB/oNJceg5DLkT1eM9F7gHAZT+Ow2cI1lAGoPERAIqLCiaLywhK8\nVYCDKMgf9X7H/q4FpFoRqqQhKESkmZqbSiEZ7QSZDWidfe+b3pQuFEmGwXeT\nHJ3E\r\n=47oN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"3a42fe67457ebc9925c3a45ae3e7a325701319d3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.5","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.18","@balena/jellyfish-assert":"0.0.18","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.19_1595407726390_0.5937741583398859","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-f183da27feb66c534744bbb025458f7a5c4ead39":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-f183da27feb66c534744bbb025458f7a5c4ead39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-f183da27feb66c534744bbb025458f7a5c4ead39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"87666a9ed5ae0a47c9584d4cac4f21051d835a6e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-f183da27feb66c534744bbb025458f7a5c4ead39.tgz","fileCount":27,"integrity":"sha512-rch8Hk84TPlj/uKOCk5B+dtX8sJM95n5xrByjz9PQVNLttlVPFnFsJM7Wpb7v+dBc7FduYGvx+eWQUg2/HrRSw==","signatures":[{"sig":"MEQCIHBbdGQsV7M3MODNoCo69Db4zfUilVssKI5KudZxzHEgAiBO5joyyr6XGzkS5m5T5JcCk2XdEyASxq7HxhbBF7V1EQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF/4PCRA9TVsSAnZWagAAGZoP/R9uFcb0FnRzb1e16D9w\nTwbhkd6tAfbRQHODkw+lzOshWpJZfrNkxKWMeqkaXLeulJVEqSeQd3UtH/zg\nhzYYIoqSCv5KEVdTvrXvqPHx0+EvdEqhZV3fE23YL4++tHzSeKzTzBMsRnBO\nr+P/hWp5vXNCe3RoGB83wvNWzVjj4ITojXTO22SXlg5xGCX0mcCa7KcXo7LF\ny5H1tuwmyjzM+IePc3wD/eqJMQcAJ77OAslswHkCjpAnsBRQGsEm2PB0KH9X\nhM+xic5rHgzdyK5jdsTXGEU1q/taeimwksY6MEczGl/qBNMZbNd14kpkrvd1\n969MnNdLOPXTMk+gY1xtBfGA1Y1FdjCB9Ldl+yQQY0uAROfa+gtj6RDDqMig\nKKsjcdCoU5A1Z/kE+tyVA1vl2tWtUr+EGekEjRaFkhIEeKb3szVJwbOoSRNy\nyTm/FXQvMRWHnWoWLgt7Mvf8cLbhSrQgG5Bu+gAwOpCNP+FkOWXOlZryt6+W\nIKmKTJ38cV9eVMv8UgxPyIMz7zyx+GeZ58TfMr4PbGW+X3jniYZs5tWcVJPi\nQUipkCkS89DLA952f7ro4yBE1/CNT4Sa4XYCr00MrX6HOEg2PcxRhZd46fAF\nbPzkrZDBQVxTDQfhOCPWmlV+JdO1WVldKlENQBHKGWz2KqFgWxDeR7KSODEL\nTMBv\r\n=aQSl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f183da27feb66c534744bbb025458f7a5c4ead39","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.19","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-f183da27feb66c534744bbb025458f7a5c4ead39_1595407886842_0.6238517940327464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-552ef514b96c2a10690391253bd0782ed14f53a6":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-552ef514b96c2a10690391253bd0782ed14f53a6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-552ef514b96c2a10690391253bd0782ed14f53a6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"9f97415776e5116bb2723f03ba3334e37bf90b79","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-552ef514b96c2a10690391253bd0782ed14f53a6.tgz","fileCount":27,"integrity":"sha512-3V3sPzpDnpRjrGg34mdan/Xins9EbIR3J+lNXoTs0/QnvCQTfdr20zvO1QAkVFrb3Unzkk60hp8fd7FPEPfV6Q==","signatures":[{"sig":"MEYCIQCnxTBGv1CBX5tEXDUEP2UIdza4Nn0HfuEmFg5SpcZRyQIhAP5ni2mbdPpPfaHIF1oVZ1nBNty87CZ37X3mDfYazuea","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF/+DCRA9TVsSAnZWagAAajcP/RDN8w+tHMisqld6Jyk0\n6qIhP7kVGf+3SbIC+8G7ddsAzDpPD7QGWfRDUtx59p6L5gUUSxDnlbJ2PYQu\nCxJ+QSXquTvVdsKpsITdhipRMU1PR/QrKjiQs67ZZYABWPoO0Xiaoc8nvnDU\nmo84+vv81anmLYV5zqLL8dAgN/L+X8qLBNCnO8hKbNBTm8sAcPl1AxsgC29v\npSIcR+hhS9Sx2zoyRqKEaCZCkx4QefjiXE4WChFbMOj/WHQ8pwYOUQZ9exrW\nLORZjZ0U6SMWeDxFYvQqZS4SqcEsjJu7d9FE1SI9WMKvuBdvXxhMYxiCSp97\n33KHD0WswD3BIDa0iRW4UoBvgLbPJDrS5X7/V+d1nao4Q013hh6JMx7XFAgi\nsffjo7GoK7IZoCwlS2EUI9vAEih7nCec8cglLvL5yX6Sk+7ejC0i6OVQtwLH\nvv407atXfFu4hjDzrW0dr9dN02XvAq9wDVq6hFh/cLZfnOWbUswp7g5KPFSp\nDkd74fwZTvkJSBkIVcU75cX/F+IezDkw4IyR7Yn50R/kgLcjqIQRIin5I+VL\nmp87UTeeqRriMVmf+o1d+cEOW5bBR3IIPbP+mOjvexPcLplj5B2U4EREPRWI\no395W5V8fEOEFonZBAY/Z66bDBHwN/+Dah2+Awp9c8MbX40XGMtwHLJRRZhv\nEk8D\r\n=pdcX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"552ef514b96c2a10690391253bd0782ed14f53a6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-552ef514b96c2a10690391253bd0782ed14f53a6_1595408259452_0.07679516765446848","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-d12315e1a81f5e1e1de80f9363b3c5634ee90862":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-d12315e1a81f5e1e1de80f9363b3c5634ee90862","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-d12315e1a81f5e1e1de80f9363b3c5634ee90862","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"06abc7b8a6449f5080e9216b64404fc5dda0395a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-d12315e1a81f5e1e1de80f9363b3c5634ee90862.tgz","fileCount":27,"integrity":"sha512-GHDwCsM2oZAhy+Th+/cEPIM2ieMquMkQrf3yZNRD9SsdQh+ynFbAqMuKzjE9efuZVDWSm9pzI4Dvkfi4tvcn7g==","signatures":[{"sig":"MEUCIQDUc/WZVS/Hjq5g7o8sDMTopg4DOYpORznTfaNxvOf6PwIgTCkLM+ILINe0lZWtIvsOQQ5wFr1dfVKIEZb+3fNmRRY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGXueCRA9TVsSAnZWagAAySwQAIwFz8NDWK9EUk0bzauJ\nkCc7QMHwggFLbLpdkOKYQU4YSQapD1R6RdRZno6ukvWb3y2Ua9zwYs4r0WM4\nAv2iW/WrSkCYR9gb24N2H6X3uN2VTWrHDE/MLfguvB5YlXmjl4klcfQeo7+l\nSi/qrfHzYHh9irCWv1GiibK1/pqh2XxoQhVipQhKbvaYlz4YeJ/9dxUYD0m8\nGC57Z3K4jAYgPiYyWKQ0HP6Ge9F4urJpktjO/nIqYBjC50S10ULg4sJVIeUF\ndRtceYdy0lN8RxGVSnCxbWy0/gPKyZu7YFGB5YAPyR2taVGWTJhmOkg2+rZS\nCRHZPzJ2ByrM1dq/Wy2V7dZx1qJXZ4Yrxsg859qKJohPSpWiEekOkl/7FcT4\nPVWG8lCzXAaV24i+UnNF+bWT88n/BUKB6EJgOqMNa6ra8+h7Bc3cLjIWwkfc\nVSQvqAaqEchKmtlLN3th7rri9gYAbEqeoaAwQOIQbZG4fOLgPtFlHHT+sUau\nuPoBleaQ8NZZpoK2O0qhhb+51N5ukxbFin6J8Z77o2P5C3oo5p57jGugpZjw\nrxXxtGML5T+fI5fGlICOn1zJgcHafXpbGNB8XwcZFB9Qhnm1GF7dUN6LG0Lb\nkLIHUE/eoK42dz89V0mZ2AQa4oiMKkhtdkNg0Ee1HVwyA+e7FghVELSQky6d\npNkp\r\n=Uq8D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"d12315e1a81f5e1e1de80f9363b3c5634ee90862","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.1","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-d12315e1a81f5e1e1de80f9363b3c5634ee90862_1595505566039_0.6122981685851014","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-c85f22b667e08772a2092d5c26f42fc9fa03d52e":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-c85f22b667e08772a2092d5c26f42fc9fa03d52e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-c85f22b667e08772a2092d5c26f42fc9fa03d52e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"c1ac28bddc100a073589f9922b01a523b0b73877","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-c85f22b667e08772a2092d5c26f42fc9fa03d52e.tgz","fileCount":27,"integrity":"sha512-/3t49Dw4x7Mg4cDrucGDXqwEVBe7AtTqEfGJdsob31JG21IiSJpmRAPTyvNLpDLNo+XHshV/uHs4u7cEW9v0kg==","signatures":[{"sig":"MEUCIFG2W7R17cNrgSNVaaW+cAPz0pzm0fjLyXkjnW8442/QAiEA0uJFuzXeK5I1NUEwPnK7dBQaEsRGc0HIKXR95XCIQzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGodOCRA9TVsSAnZWagAAOjAP/2fvXfMN19lyFR5f/R8D\nNy59eB++NnydBowfpqfkOqVvzf9XwhjswKJvEh1iifwfpKl5RGCWyK+3bRve\ng7xde4ufAwHBonO1udt76Tz3+hNy+K50Di4/eLP4C56cMGtbf3ilVZhxuLaO\nHVg2Ggkg+W8F3Im19XQ4gw/KnFn1Z4Rl8eMZXzw519jwUahakbIjitDc8Zyq\nYp6x27O01qR2gNsS+GT1Qq+9ex3JWo36wTJONcsPWOeM51y2w6x2iNGkH8CY\nG5zQskZrGKLFAlqkyVBP6YhwDE4AdzySmj6hFw/LxPqQV+/DgurKukrJrFZi\nh6Zv71osZZKRWDG7CnioZS/azTSjANGSdsIpACw5YDHkOnnuU0EMm41xsvBV\nbpQb5wHQ+5D7aZ9Wez3l0w4jkteTsLevLGa+WlhUd0WRx5TQEXbD0P7YY0Nu\n253WOqYV7mATJnk/ye0GJcPDa3urcEfXgYkGP7O2dLUgwwni2yuKzB2zdAkc\nxR2navPh9seLnN8kh4W9/3k+eESOylgCCOGNMNzpul6542nBaPZqAUhGPiLA\nK8smN6CKoYmtIdRb810NH7Bb6mXvqDjfUzjNJH+57RIj3S/jbGgFp9lSs8Ct\nMQhdyl07HnklkxWX8YRrNnVSITIp/dhwOg8zXHfBzmdaEnMtjhLaA5JijEcM\nzLOa\r\n=ZoRB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"c85f22b667e08772a2092d5c26f42fc9fa03d52e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.2","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-c85f22b667e08772a2092d5c26f42fc9fa03d52e_1595574093996_0.4612596270574916","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-ec703ac6ef5821b2d633ee30fb1161faf9891513":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-ec703ac6ef5821b2d633ee30fb1161faf9891513","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-ec703ac6ef5821b2d633ee30fb1161faf9891513","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"4560f1d30e51f5b7a0a3b0a9ba822bad99eeb379","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-ec703ac6ef5821b2d633ee30fb1161faf9891513.tgz","fileCount":27,"integrity":"sha512-XEYvR3+AV8dS1d6dOlUAWXAaA3SUJ1TG4yboDJEAxPL/SlnTyNrkxxmkgJAa2115BRNkvKwzJ5TpDPJRVjZ5Ig==","signatures":[{"sig":"MEQCIAWPrqW4vh1jFy+h9plrAkA0shocEnwmqbwq2jGkOGF0AiA6K9FE65/WepJestx+YeUbC89Bb0BdJvO9Bktv9meiKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGp1xCRA9TVsSAnZWagAAFaUP/2hbIGjUzdOcHlqnsAHx\nFVrcQ2R/9Tw0gyfwN3o0LiF/nnZn1Pc3Flnz2S45wxn9lc58yZCMzaZca4RX\nG/oRqMI5NrNqndln8u+X58yFaHP4DWoO9MB/007vt/qb5GFkC/mm/9KIqycR\nOG8XrLy3OQCOIZ5rsW0Le0PMiv2arJhY9Q7jgMOALQ4yS907XkyqFgm426ij\n3iVP3cKIOG5lIGV/Z7fY93xLNdDHvstPcNASBCVH2GoTeqwPBXc1SV1xUJeO\nF1AeswgJL3vLuObMx2xFL8Y5TmDo1rZ9g+n201raoK+3HtZglYNxptQsdyNU\nJWPgT5mKdC2cuZn9wHTnqFO5zc63ZHZaAA+wN9m/VDoDwqZCh5mpGOcfWSpz\n0aJsLasp6p2ihe7M6uySvSSfyUnNUlDgRFUAEV4mT1c/cGecm5l4ph8RjQem\n+H2+O1Ekk0Me7O/AtM10WYKvBXjZ4Asbh/8xWgahBEWovlOgOH9Iv3D9VdbE\nwRIFn/eoqLAkfJK2Brk57LCAU2IoNJNChYMAUW0AydDWEhEhGJPDzR7BAYLj\nPLePcaqnx6Ly04O/5J73jOvbDNI5woZPx45wGUxkeCuBoUnTpamA92H99IIy\nXDZpX50/q7buwUv0qL1Kyw83p0VzalsvOLPa373KuSnRHYI0h//2o8MCVB0T\nX2l7\r\n=IZsy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"ec703ac6ef5821b2d633ee30fb1161faf9891513","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.2","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-ec703ac6ef5821b2d633ee30fb1161faf9891513_1595579761150_0.47243219483464105","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-6701bded09f58d234dc1b084a6d3ea8bf0f53fc0":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-6701bded09f58d234dc1b084a6d3ea8bf0f53fc0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-6701bded09f58d234dc1b084a6d3ea8bf0f53fc0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"4b917725db80a3a54d2768714549279d0465a12d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-6701bded09f58d234dc1b084a6d3ea8bf0f53fc0.tgz","fileCount":27,"integrity":"sha512-uR+vFOHxOB5i8k8W72xvkfr2AFm4F6upI+1Cj+mOuNgj4aaizD9GpjhhmayFVbFeFyODleDnFVJqAlPq5GBCvw==","signatures":[{"sig":"MEQCIGxRygHz3C2yA6Vg1kmHQbEfF0G+mVqI7OrhW51LpXHyAiBiJk3XU2TWNSJUl7O3D5qS/ioNsXsHDvDYZaT5OMZdSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGwm6CRA9TVsSAnZWagAAYJEQAJ8mdi00BF6ydEtAerUF\nJZk5ti/X89lcPrABCj11QRIkC3QlMy2qaQL81VmeskEcDBq5aqASBsn/bwiE\nqPHWdU1z3R6hSVMIjnk5D/6VW3qqUR2kaRNthF0Eq3vsuAKTlahPs+v/syfh\nAWjWnU+v36NB1pSG1g/078VTahR0frkA+pY7fn2Q0yhPd3fv3hCiaBKiMjqf\nSKXltUPMhQ4DFHlOljzZSUA+MsQQQFFvWly5X9V2YXWlQu38CzDXl9VRMMFS\nTkb7P7t7AbzIFPTKY6d73P+mOPMIStK0GJnBUvEOghKN8UhZ7QcWIBRpcCYT\nwg4r/huTloDwMvdalNBTkfnGxQ6cuptktdj/mx16gAPZzulLsvWP0UZOLOcM\npvcSy1M3XctFDVu3mIyPmxQ2gFAq+V56qJpzfYEBPS2Fn6irrqbpnol1/eA7\nT6PK0Pbq8PAJ65gjL/Dwe3b2qHoQ8WwfzvPJP5XMmGNzZxM1BviWv3L9KYLU\nuB9F1DO2XlGOIjIq3s/8/Z2hkkp1pQT1wvwxCZ4LA3aSo6yu4oEDtj/7aFzO\nKxPCZyFA1+wdQIoVD2zCEku4JjWZ+OwQbmNbx7elBx3bGl9E/2jHsTsXVFzs\nTVrSYnJmkN/2TNZ+3bRVnVjVoh5RfXgCBM6HF1ifaA2sWP+vkLpX1iLo9QpE\nY0bS\r\n=cfBs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"6701bded09f58d234dc1b084a6d3ea8bf0f53fc0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.10.1","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-6701bded09f58d234dc1b084a6d3ea8bf0f53fc0_1595607481552_0.2658653706973786","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-606ee3307e69119e3c1ae742ba58d3403d831d76":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-606ee3307e69119e3c1ae742ba58d3403d831d76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-606ee3307e69119e3c1ae742ba58d3403d831d76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"1998fee958227b02eb82cdfdb4a4e680aa976fdc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-606ee3307e69119e3c1ae742ba58d3403d831d76.tgz","fileCount":27,"integrity":"sha512-91ivSil1zNX3Mm1MoWRvm+9N8l0/xq5jkMMxJhe6p/2X/WBd0Ez3H9hS5FV3OtyDna+hnKsOxRoTDnfsngpEEQ==","signatures":[{"sig":"MEUCIQCIcTy3RsLfoMkh4tyjpPU2UZrW+Ns7L1Z5Qmbhs4ImagIgK+WDEeYikm7jVUTqorGr7ZQeCInut0ZhicpK/f0bTG4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHsgFCRA9TVsSAnZWagAAPrQP/1QpIsGGRIWWc3BskLv8\novPEvZ85wM/S2bV/DFGFYqkAjDYG1VFmMG2upWbdsOMm+qUMC6AW9ZqKoF8j\nF9kf9EC2NBXQQAC0Kb6KT59hOdaAL51B+HU1mpqTbyVc751wJ7KQUO1I/UnC\nOezhfuWn1v2Mj/jfmIukcRMFrI63hKUBzNrDADUyvpOChPTd/MAOXKz4CEd+\nEibyRgUUaVFanoCqNRLk3sUQHKllFjpLlOAI1nfMQ9EhUqu8KMzcfgGHeJ1v\nM77Lc8lApw8QDuqTMg251nTHT4gHAwlp/KGKODfMKEhXmwj6DfSI0pRCx1ZF\nmxO4ha0/lpliOEgf5h1M1GH9Ddpl3+L9NqyJWqz4+l5lY1/KXgz9cSve6gCR\no3raXekuL0zvCzPLqnc9P+fSAWXbxQ+yFZW+NMgwKHx1E2VQmHl6uqEzLlex\nFblsK5Rqzf777LBrDGmClhTPNZTLV0/HP7aJJphZifhvhHp2ioJwGLSE9PoJ\np9jiMw1b66M5bEbBKBD4dE21euKWfUyF1zOxCt9aA67SkETzTLfHzN2EVxyH\nWsCeHftnMAKPROMYHGOK65QgNo+z6ZOUOuW8UIEIHJC9Jasd5o1HUtXN8mcZ\nJHHkmgwuD1ccdzhEuGDTMWXVEdqCveiqA4UvJI7ByTpjYxKhtkR6FZ9B0p72\nV7C1\r\n=nK50\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"606ee3307e69119e3c1ae742ba58d3403d831d76","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-606ee3307e69119e3c1ae742ba58d3403d831d76_1595852804651_0.881804325944407","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-update-jf-sync-fc893b6fafff9dda9dd7c423295fbf2e5434df30":{"name":"@balena/jellyfish-sync","version":"0.0.20-update-jf-sync-fc893b6fafff9dda9dd7c423295fbf2e5434df30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-update-jf-sync-fc893b6fafff9dda9dd7c423295fbf2e5434df30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"072eb1604cf271ad55856c9365403d6965810c8c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-update-jf-sync-fc893b6fafff9dda9dd7c423295fbf2e5434df30.tgz","fileCount":27,"integrity":"sha512-cnS+XLwdFZ80gN3xqZyOaf5cd+9ZwE6itAT+7l3I5+boTQO9YZInwKwIhd/r3d5pvrD/vhDQkdAwdmcN15iX7Q==","signatures":[{"sig":"MEUCIDO/qgBn8yTNw3cH47NzgNagWntVLIlp19Co1UvLTC2YAiEAsDe6PMhew10TJa4T4+xvfVSVZAOEMKSq53fh6uRlzz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239339,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHwPOCRA9TVsSAnZWagAAEiEP/AqnX7RTmIQVeyH/dCAn\nSGAae6wFcvGryIHR6z9kzqb2GF9tSTV+ORtdRTwDLUvW+4nXD21nwG7ZaLUa\nXPckz+k0yegylw6Tp33Px2B1p1EI3Y9DvOP9yx1r8XbgMCnQmWpnMAg2hQy/\n1JUCqBQ6eoqzCVwCOBWJnh9TAMu5zK1d3tQtjYVBtYhPJn3keiY4t/wLNgfj\nVWFugJgDO5HOSESrI6ZFRfbYY5P22R6EUwgtnqucwIOz/kXTXjM/PshvGl2P\noUBDSYowNu0DYVrgvvc21HxkBeDctgO+4Htr+6iwwKLuuCVNHwLPzc4iAGXS\nrtheWSJDCry9BntSOdT5t0isZ+esPgVrQwVYhHjKUPHjeMB23bAKMKTWXJK2\nJlZoYe+LQywM2Bn8fdGfA8MLVFTudPD9pkmVYQI9o5q8DvCXw/0cXX4mLBm4\nOHiGVlkBW2o2jpRDzJvF21JsWdqTo9AsXQDatheyWgi+fFvxCJGxgWC+qAUC\nrAo6JM6Ckc/6vGwBFjMlgYIWmY+n6qR3t5GYFowUNFVKEhn4mTuDnyXLLbN2\n3OHAFB/DxpRDvJMrlGIiJY3trrMEwb5Dn2cXLOEMaI/EX8lgKvpEJgnQbSp4\ng1cOrzE8TzG+RLCcCqVSBKm/zxSNncca7TpzQKtKcB+g99fYRMIQVfiXftHW\nFCHa\r\n=E5Pa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"fc893b6fafff9dda9dd7c423295fbf2e5434df30","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.2","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-update-jf-sync-fc893b6fafff9dda9dd7c423295fbf2e5434df30_1595868110454_0.6747379931482242","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-renovate-non-major-a78c8b89871d7e1a701836578db39bda71a4e863":{"name":"@balena/jellyfish-sync","version":"0.0.20-renovate-non-major-a78c8b89871d7e1a701836578db39bda71a4e863","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-renovate-non-major-a78c8b89871d7e1a701836578db39bda71a4e863","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"18f663b57ecea87d3e9f02b9ee2688c7e3090b0d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-renovate-non-major-a78c8b89871d7e1a701836578db39bda71a4e863.tgz","fileCount":27,"integrity":"sha512-CIkExQWzZxj8x+5oR/OfjBC5JXxFBiDGKHhcX5RJLRh9AozzboKhKJ4F9/yVBSuggGx9hKSs1ZDIRWgtSEFzdw==","signatures":[{"sig":"MEUCIQD4j4wH3Uw0xDK2U9FAFleb+8TaHz8otY40NDxsFMAXYwIgA+ovKPtfl8W+Yk2aNkcKe7TAX3myjHTAAhZIqUONlOU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":238433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHwjoCRA9TVsSAnZWagAABaEP/3n1ynOXnt1rkuvS1cfz\nWkrxpNv/HKFCYkLC4/5nbcEmqyN18TOGCXbyao/hwfdndJT+jRgSWlRiSPwP\nmCI4B8/q9iFLvyPoBlvOIg2GJYxR3qRVnqtKmfgicNpn3uMMHuJ1fOwpMeQ5\n6ObuL0Dhls/GzmnBJ6doJlGP1AHtjaXN+EJ4Rmk3KoJLxrsp90DunaPk3TQs\nBv/Yme2c+3DTtJcamRw3FyZp/6E1PDrrtO/7TztMpFbdNLRLda4I6ZEKmVBA\n7Q0BrOm5+P3jdBG/6yTtRLzUPWM1/e0uUvg4k4l52Hc93q+P8nEp0nW8BvZz\nRS7oMKm+C6iTdtuz7K7eeCfxaB+Q6XouZQ/Oy3ylTAyv/eVpfitBZ64I0lT1\nOXNNbUIcyNm20t/6M7qVCdrRRrKPE37s3OomN1nkFlOIEd3tOMiI3kCK3dIU\nD3Q0Tq8RhYIJEKJBaULlPXMrKuif9ZkjOUVwOdd35h/GuPBpq1nAJqwPc03o\neAUj6EiGMDdjSc4qRhnABsBkHT/0z581jKOHfIy5357YrokOHGhff9fqow4B\ntxE9vy2XSJEWx3kpR/dEQb3PXKl8uA58vYHOWVpuIra7byTszWFxQL7k86vf\nw29oVNr/HtS/7CwRPjKVkcvwmmD+3elVFtJsowPluC7mi94ortBGdiqdzd7a\n5xpG\r\n=IUxW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"a78c8b89871d7e1a701836578db39bda71a4e863","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-renovate-non-major-a78c8b89871d7e1a701836578db39bda71a4e863_1595869415775_0.5733128200562367","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20-update-jf-sync-1b0dae3d75e4809b4c2179f9d775fca4c64e3692":{"name":"@balena/jellyfish-sync","version":"0.0.20-update-jf-sync-1b0dae3d75e4809b4c2179f9d775fca4c64e3692","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20-update-jf-sync-1b0dae3d75e4809b4c2179f9d775fca4c64e3692","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"dad3fe2d47dde53b71417782067afc90f6087c18","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20-update-jf-sync-1b0dae3d75e4809b4c2179f9d775fca4c64e3692.tgz","fileCount":27,"integrity":"sha512-tQ180Gl8u5/jZhCKR6qsDcJe2bUiuxSP9Yng8Qz0FBAq1bYLO2N2ajd/ZVTcZnNCzvHkAQjqtfPViVRLKpvW0A==","signatures":[{"sig":"MEYCIQD7XFz0gIrdmo6ws4CXMghpnGde58zPTilT64X2Cj77KQIhALsRCvw5hij2gmkp1I7973KL1IB3284c1yyUfEq5BQE/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfH3DQCRA9TVsSAnZWagAA6QQP/iWV/KEfrq5P+ugQhGiD\nzb9mBw7sNBqvHKX8wFynvGDlbGCvSZ53zDPtxDMry8sxJGdL7AJoggqObj6B\ncyCQJxBtYqYRXcS2YuFb3aphrA4o7p6MQ3z3RXEAbo4jMzrErBxnbG8vLnlq\nkcrqCAF12l6DiheUrJj1dwv3b5tHfY1h7IJ0Pvg+/HALozSitmH/RdMasJ6D\nii8BibUyr+rKGDbsFzGVkUaUsq4WpJl65lr2wAkWSINNcu3Z5V1mCcegRepy\nc4LOttKYg1nvGjXEQGx4fFv8WK7Cd93qyYU2FjnpQYZFrHOxB2yPohijqL1K\nLXXNFhFnNdLL57SOnhQ7WxyPqKEp4WEe2vyRNhHr/LTqptYLSCXj2t7mjQVI\nC2Cjik9AaEE0m4Q6GRaf5nFmRisgvg0BQElvutVor0sE+f/D3SERdz2kli72\nGA79KGOt0oB0V3uaq+L3MeO75IrZ8igrmx9613tCxcYnFA43berOQrukQ1FE\nkftBWlmpD41Re+Yaxtc4w+VST56mwrojDq0okAj75MoIu1Faap4Cp4nHUapS\nT0lziz83NMV3pZ2J9OGih0n2wvkUuyni6EEe8bE3e//DgbLaUKrIQZ2px6/C\nTfMeq/B5dBexCY71OpdoNs9hvcF1s7K+XVqyQnN5Lng1wyjgeJoOFdufco8r\n3ITO\r\n=A4mX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"1b0dae3d75e4809b4c2179f9d775fca4c64e3692","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20-update-jf-sync-1b0dae3d75e4809b4c2179f9d775fca4c64e3692_1595896015834_0.5036998889496151","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.20":{"name":"@balena/jellyfish-sync","version":"0.0.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"90d85d5fcb01d0c83fa19f2087cdfac2d7dbc0e4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.20.tgz","fileCount":27,"integrity":"sha512-EZ+u/speZa7HkV/wm7UwzRPUCncrorC5g7aTHWn/24sxgwtTKW6PpS0cPEa5U0JgxOf2IWWTqWkZaDBlHL593Q==","signatures":[{"sig":"MEUCIG4oaZ5Kbv68Dbs1u6Nm6jGMcz4i+xbwsejxUtlbO3AtAiEAlNqtvnm7W1xKE+OuPB8UnvxrfZBIJMUsGLsLRyX/tC4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfH3GtCRA9TVsSAnZWagAA9f0P/0foDJm9Ukrd6z93OzP2\nwjcK/0wbjvDC0NAWV9jaFLEIbiA7BWbqDltqABpjl15o3WjTq4cBHTI4fzfA\nCeloyJbAevjz++bfEk9R9x7JUaz/d4Ew3cHhdtfjjdoYC2JmvndvZW8vnX2s\n3COlG4JqZqrQuO+g98N2Xt7hJKthVOo8uKFNLil7H1/Tk8GmRxNw4R2Xd1dU\nLf4h2LfzNpgZ5CtGF5mY4casnNcoTxKqe3BLVzv6hOcDhWSkeYKvogM13dNc\nuaXWmeTdMzzqUtCEIcl5XDiYUxw2qBtTo0cici/xnM1OLiiZRDahXIjI4l3l\nBw4maup0I8KXyaLLZxlJyX3TbJlDtAA+3h7u8tU/uMNFVePk6yn9YZDyMxmL\nWyaDShBs7W9w3AlF+YQc1tjFE9S4bZu2r3jadpgA8s/DISxWlKxHN4PKbdn1\nYERagPSNwNTTBpm7TFLI/cPeHOwXQE9fI2w/YWU9VIX1xixzHgsGgSRgKitW\n397m/opLeYzLkUH+Nyyn+e4JjZvEZXDKBAvRQMSuEmZoSAT7iWNycINH74b9\nrYo/G2APlTN/LBbDJpAMcNm9TAquM3dz4NK3z77Ri7uo+6IU3l4Ldv/xxi3h\nH/4PHCuZhtnNNxLxC3Q5ZrzHB8tv63rzJmiyzUUMsagx/nFzFgFQAN68EzWz\nHh3R\r\n=MCLp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"ad3a46a5ba0550067dbb66bc3065d82280eec525","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","is-uuid":"^1.0.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.20_1595896237255_0.6603068931656","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.21-update-dependencies-637437e6c99cd306e90e4fae7ef375d89189fee4":{"name":"@balena/jellyfish-sync","version":"0.0.21-update-dependencies-637437e6c99cd306e90e4fae7ef375d89189fee4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.21-update-dependencies-637437e6c99cd306e90e4fae7ef375d89189fee4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"58ac9c930037967e7af0a6c4b891eb03894cbd1f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.21-update-dependencies-637437e6c99cd306e90e4fae7ef375d89189fee4.tgz","fileCount":27,"integrity":"sha512-rkCDco4s91sNjGiOEXtmbcpDNN2p0zfEI4XGSoCUczCZn3yPPqxISYIDKXEviNnjqHAgnKkUpThdjubAnsL9Uw==","signatures":[{"sig":"MEQCIEqP1kynjKubxe+b7oC3PjuiXgy8LFa8M1dTCGSwwt1MAiBUKYlhAetm31sXPOtaBkDDgn21MmSl4z/qooCDJxteWw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfH5MHCRA9TVsSAnZWagAANM0P/iw/QaQ2EiWlAV5m1Ecm\nFdIOEemrxcaAQjpsh9Uj9dbGFpAtm0+4yuICwEWrnMkYMb+7znTlvRedHCqD\ncG8304K0ulPFuaXnw9giJIACWT8WU0J3mIQID7tzwZFvYTnGLnX5uBAZ17A2\n3eENVzRIHeKIQouWgpOl9wHvOgqU09bgKp7ruF1xpjFp2KkCmg1qY/Xtllzr\nTx9GkTO4gGjh8R2jF4mz+n8Q0AsD4UwvlpUAO+FAYOW7wU+fMp6bfL0ioEFc\nk8fKSxCFY/LMXVNGhwAjLJg1nuxkaJ07rKpfisd8a3qowBNYkSrLKNiW3gmo\nJKyg6ExmPmLnEed0u3HvAbWw+BOMZyirnkwySoYX5X0CFq8qqzHw5fECMZM/\nDA9resmVeade0biz7RfUhrRWHdkdHW48TKNnmEx7XApIMVtJeNz8xiokY0l1\nBLxaxmNcfZ3bncDEIbrH9gEam+Nbtj4hYNTmO8y5Bny8aXE4mwLiBv6JTHzN\nrWLQwZx01QO5mfcft0JUd5cYyo/aYNZoeC7xMYCL81VJHaxL1/4PTsvrh1E8\nHxoc8gayRz3aByDrqtpoP3yOIS4LlsaY/l+1QtRb31w0ldmWL8/9r7V9mpb2\nV5rf2AtWnuml6+ixaD+vVLbZ0egndohpmYe+VU/VdHTq0x/SIFZ4HAxHRc0K\nkm6b\r\n=xAjh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"637437e6c99cd306e90e4fae7ef375d89189fee4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.21-update-dependencies-637437e6c99cd306e90e4fae7ef375d89189fee4_1595904774824_0.09608146846916132","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.21":{"name":"@balena/jellyfish-sync","version":"0.0.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"d7f5c6e4ebb5777689100983039c506116e127dc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.21.tgz","fileCount":27,"integrity":"sha512-+JXc2u3fN2eYX5GNC4p1oV0UkPvm3Lr4nyBPiWm8I1o/2+gTCeH8rBXulxrglH/1ubicnB10NpzMYkDwWRwqUg==","signatures":[{"sig":"MEUCIQDf8ExzTQLhxPG95korA0RBfGmlQOx8Ewwl0/d3nSYtlwIgO/aSsN0saLdkQ5KrRlU5gH/pZZDjK9dHaIoLzXmy0gw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfH5O3CRA9TVsSAnZWagAAY5AP/RXTx32+Xy2F/vheSoku\nAtiPUGVjeZdtuWKYcq8aW58oF3GvhCmgcre1UCUWM35MgebmGMPyJQrRCkwS\nEJWX8MwovbkN6Q/tdV0EuSZGxYVBBxgxfQxY9fxYkQetxunX+xX/xXFeejcE\nXN6wPuMcGAtovUB2cXDw344VUmDY7TfxrwXntwU+k5zhxpeLFpnMGq9uHbv4\nemcD8cJ+0m+bBFwfCes8iQnU8mRvtlx8cuL/QuSvhN0Pa8zcXU6/3TIoRnXB\nTp92gYtSNt/A7ywSu0FA1iAPUC4SoIcPXwX9aYUQfICXtme6VUvE7LYdkE8O\nqk2xG2bVRDdFpFRx0r+6mqYO3tweleGIMmxWEvGWY1MCDn1iTARo16i1ScHj\npO2reNPtgQdYGQAS0kT6Llqvb4tu5BTh0KMTgKxXnVjQja6MtvIsBzGZ1qht\n+YKxuxVavBm7T7vUsHd9DrDTBisa3vIaFw9h4PJBfy9rJuzcarjEl076tOjE\nosEYGXSvKZXh+1T94qsy70itIWR1FnLVy/04n+kbC8XOmoOxGdsu+BOeI8OL\nESvLe+pmc1WfWo1+CQ0tGesxCej21mppyki/kvXxG/iOseedkaUHcCgCNc/p\nww3sMrmvZT24KWcPHk2B0shqFSODeSs/C/C0v5eNJyl6VpZhcs3+oaydZRbq\nQaxV\r\n=JLB+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"b51676942806b80e7bd71311ac26a852364e5061","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.21_1595904950846_0.7537475980057287","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.22-Add-a-colon-to-renovate-patch-commit-prefix-36f894241d2e33da1819770ab56a982b1669d1ec":{"name":"@balena/jellyfish-sync","version":"0.0.22-Add-a-colon-to-renovate-patch-commit-prefix-36f894241d2e33da1819770ab56a982b1669d1ec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.22-Add-a-colon-to-renovate-patch-commit-prefix-36f894241d2e33da1819770ab56a982b1669d1ec","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"02621cd5468a963ea51555520544d0a2c9798249","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.22-Add-a-colon-to-renovate-patch-commit-prefix-36f894241d2e33da1819770ab56a982b1669d1ec.tgz","fileCount":27,"integrity":"sha512-sOoZT/sSBX4uEs6w+2DnoVy0PKP7jjMFb12nTV5xt/NS8Bt8wzy+Uo8i0sLu02eMRAMoQdzd0rKTlYGz0mWf9Q==","signatures":[{"sig":"MEUCIQCBz3ZCKfb8U+eqX081rTf4hYAJj3ncIPWtH8f8q/1xogIgF5FKjYRavMjOqOZGSEj0+BfnzeribRHtrVoRLMqz8Ks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfII4qCRA9TVsSAnZWagAAKbsP/3CimslqIs35er9KDmun\nxsezG2uAF3LoQugklFMIwDKOPpmEeQSBN9Q3MaTEk2IlLORt/7GWVdxN5Z75\nU84h8ZJSfB2AwgAeRaU7p/dpIOUiywkhZdGIc8NDO1wv4nuQmapaKWxIy+rG\nrvwNx6NV6G1O1KlwiLo87UB9TAOmlsbieAkZRgynyl9zj3DTgH9qys/oYbX4\ntOdFp8Mo8IE/Dm73cMBBZkMXU2odWYkZRUswdOdeDezDi3+Y9cxv0MqVmuQg\ncLMXZnamURiQdshvkHxJiORpngTNaUOCovRbfq8hAvkklI2Hjf3URH9XEa1y\nvRsH7WxpznVkm7lQ6ZSzr4klCnShSXjuZGpUm02T0U82T31hlAltv9dFOfrs\n8ySY3i8ezf4Q8V25MOhg72HxL93uzfVbvEygXINiKAgA9/iDRwpCYOVD73Hn\nL2ze8uMf6aLiVti6rpeu9oKdYCeHVoXvIJnMb+AwvHeFk/xaN+d2tenAVXZc\nEXCSyOzae0wdLEgh1jbLQcQM3sC+cYmUeTwcmLoqJFwaZTHoM2p7U629EoNt\nIplJ6jFsC2JXLlm7Z/k5T2KQk4sZmGmGRL85cAdgugxZVSS47XTFWbHAhKAD\nwQHRwCV9thXcg7KPohZxPkrTxlwKxuXsS5RpZOTJy+Za8GzNlU/xtbFcJ2IK\n2FeK\r\n=ELRq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"36f894241d2e33da1819770ab56a982b1669d1ec","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.22-Add-a-colon-to-renovate-patch-commit-prefix-36f894241d2e33da1819770ab56a982b1669d1ec_1595969066024_0.45738262895281667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.22":{"name":"@balena/jellyfish-sync","version":"0.0.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"2c60843ad65779d4af0aa4a551979345083553c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.22.tgz","fileCount":27,"integrity":"sha512-tPyPj7tZYfwAv+zPxoaerxaF/e6wOUwxeU1xNqeVlo5iqTr+XSawBMgLtdyCABTokgwFyI3qa29izXb4YCSAwg==","signatures":[{"sig":"MEQCIAiIysKX7Vw5+nvBzJ2quoMuNNq84cJHXwQ7zISOUJvEAiASuIDNnc2Hcw+YpdXlqJUHF73aIvLGG+c3pjT9BTL5Wg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfILUxCRA9TVsSAnZWagAAt1EP/1kHQY7CB2kq8wQBpokQ\nS5LaCfApIlfAbz/RHlkCOOXTa+zRy7i8A/sCG4geoYfs3jgcdzOvzcQgJdzu\nIkfZM73Qwt5kJRf0oGv8wt9qSoCxwFYO+q3hFowdCPofDJgAgl4YrHNASQY1\n5gtqjI2qQ6yo5DA4JCvrsGPOwHUKpq7sHczHMO5cH70xmCyAM1yAAnImYy0Y\naB4p0MnWLM9Gf4cdtsxYY6U/BuVS54+KxpxNCUs9lHC+nYJp9yqfB6R+CYY9\nPQU/Id01pcoQFtF5GmWc+53Hyk4pJhZTefzewyBK8gs06Ao2K5zW1Ufdzqic\nz4nfOF3RXLxZTyJNNdOpjX0WT08155U9jJEK2dXmbG8OSMQHwgA3PpIcEOWI\nR0f0SGCqU6BzbS1kkM82s7o7OsSI+ZhBfE8EnNQMiIbNo7tUXCL+rnIlElxR\nNuQxl7bq1dObavkL6OhGHK8Kaz9MpmSEvyxbPT76OfI84TFPZ456ieAzi0Z8\nXLvfoP57KOdCfpv1Dt6cARqKevNmxQe58qJ0P81AgtKxQWrX4cQeuwbnVTP/\nchHy83keOCKlGnryuduR5tSrdCl9EpCQbdgiNqo7mqmqa2hpTG6HSNk8mMZu\nvkNshdyamcxT6uZAFC1YpKMuJBI531XlZaqB8ukmIScK/P/1LN3oA1hT1YEv\nO8gf\r\n=MJAv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"4a577934f7e796d6251c5f0ce837139f564936d8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.22_1595979056549_0.5217187556819061","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.23-renovate-non-major-f0ddf8237bd27412860c55b7a7d97ef484f82d24":{"name":"@balena/jellyfish-sync","version":"0.0.23-renovate-non-major-f0ddf8237bd27412860c55b7a7d97ef484f82d24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.23-renovate-non-major-f0ddf8237bd27412860c55b7a7d97ef484f82d24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"dist":{"shasum":"675cec97c5ae0213cac949307a653bf05bc44fe9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.23-renovate-non-major-f0ddf8237bd27412860c55b7a7d97ef484f82d24.tgz","fileCount":27,"integrity":"sha512-69uF8N5fPGTcFNcfmlvMeYMx8nC9wB25cQcPiaqBZLHMMbc1XySJEqvCq55lI2azcfQE8nlSbgmCoNvW6QLHcg==","signatures":[{"sig":"MEQCIHUsHF+Agv79vADmv1u/TBEdgGX520Fk6deLXzSLoH3hAiAm7thRHPvTt0EDEow6lnDQHiIEe3OxT8aGtivVETk7yw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIMO7CRA9TVsSAnZWagAA6bAP/1IdQphhZCwAH3n7CL0j\nTUxlnc1xRtJpw8hOoeGMr7FTm4R13ceP2NURvyjcx3o+e803qTT/s2vFjzk0\nI6q27eJNE27RVX89lWbheaVLsOjU1o3nbUB2kVmtXxvZNIWS5pGLWR9AC5A5\n41pdnq+eeizziW4m+3fWda9qmauZ6JXzd1sTGkP0bhJmhy5DYJpLplK1xdGc\ni5Um/BTQtMpC9WlzqpeAlA5Cwq9ElRvoPo+glUlvIAek0vDa8khAptfkSvZI\nhrxmPwMIgGjKsRLiq9qEY8ksAQTDEn93CXFKOlFXR0ePy8IQ/emW3fSvjWlq\nffIEOgZ0zALGdHLZg9lPKac1GRau1MSvy0Zw9w1400kpQAbRGBJ2h2Yx9tgE\nuVURLLLaf5EETEUErDKts8V9ZzidfAC+yZZg8ck7jh1wHbTINUvFUxSTiR5z\n78NkLMVbrY6FCZ4TjMxCMtK+w4PwXzoKpo40U9J4hcAQfZc8h5WnqCwCdgjS\nQL73bq7l9BJJmfrkR5/UqTjHki/4CRuukgDGCoakLJEADRu1z9ofPDnwGBBN\n1sfwXa44be9OwsWKwEVHbFd4fX93z6DMr4wn+WR5rrFqo4Swv2taL58tYQN9\nUuf0lJX+Q++/G3ur/FUIOBMYsSl0KHxrz3URRYJ7vc+0KZEvfCQA/P/P3pUM\noF36\r\n=WgwO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f0ddf8237bd27412860c55b7a7d97ef484f82d24","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.20","@balena/jellyfish-assert":"0.0.20","@balena/jellyfish-metrics":"0.0.21","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.23-renovate-non-major-f0ddf8237bd27412860c55b7a7d97ef484f82d24_1595982778657_0.47544856155638904","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.23-add-repository-details-a120eedeac37960d68f20830037b61a61ec7c8ce":{"name":"@balena/jellyfish-sync","version":"0.0.23-add-repository-details-a120eedeac37960d68f20830037b61a61ec7c8ce","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.23-add-repository-details-a120eedeac37960d68f20830037b61a61ec7c8ce","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa8943b4b2292ab1a321c7b10ad6922dbca927fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.23-add-repository-details-a120eedeac37960d68f20830037b61a61ec7c8ce.tgz","fileCount":27,"integrity":"sha512-0N+ig2DSZubGZSL9WGwI3ggjPRbPDaz+JVbX5QtJcTesJJD8dIsSgRxPwWJbAkfPXCBfd8DOBX5xwEbTY7715w==","signatures":[{"sig":"MEUCIQDau8mxTV/QSgr1PctAwGKlphM9cKRjplz1R7mDyRqVAgIgdwPMDiBTTvhEdpkNjfeDrLqIRDhO+cJkjEZjFInpDuA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239743,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfINuqCRA9TVsSAnZWagAAkkQP/3muQyMfgwiAPnwnWOeD\nNhPPtZhOzwHkZ0Jj8EfmP+WnC7OBzp683pQLzdDDPmUTCU65Ko6d3haL+wBR\nnNCBX3YMWhvB8KWUrkMKqMZbO2G3GIPLB2OU/PIE7+DtvOtj2W5aVX40G6YH\nTZ9o3NE1/wX4O1bSuIG1jH9El8HHWWzgp1YTLv+mrwBxkJM86f9cHgV1EdTp\n33PQQroR0JjowfI57wbbvQVqTEYmZXESLTz+2EwXRVctIQ9vb4Y1hESmokwk\nfATPBvOjNJzQ3mhEe27AsTG4jtXaYlKvp6Ep+1NjL93/IQJl6vr5kd433PT2\nFWdDMSKL10LK1tDYsK903ZaupWZaNA0dz3gWtbSAF+aZWMLx1011YGLYIIqf\nyZtWNFlmFKgobeOn2PaPyCybl2sxrGaq88YYtj4pKdrtyXCow8wiboOKDOnN\nYvjRM4ND5g0VEqIUFzm1ReEqWoi8icTpxdx5JIE+7xpaQqnXp7vARZcx8Muf\nNLeNZKCkdulGq2u9k/xTKYTTWTta1VaRRpqcduufXgeaVciYQyQcCHYl1qXo\nyGcx7zHVxvikzRbAkTw4hzzWWZX+vyMn8zaGSQitoum+t+8zluZLmC5JKEct\ngAQ3EzCrSsQVLaoYCNfo7mkGYspvPsA/ndTEOeDFCQWtU1z5J8XVbpRtY/BW\nOcBG\r\n=Bbf/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"a120eedeac37960d68f20830037b61a61ec7c8ce","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.23-add-repository-details-a120eedeac37960d68f20830037b61a61ec7c8ce_1595988906462_0.7871857323809914","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.23":{"name":"@balena/jellyfish-sync","version":"0.0.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"98620a704865a3e3f24cef6245ea00750073575b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.23.tgz","fileCount":27,"integrity":"sha512-QyixkBZOWzXsf61Dl/YIIE4cnyZiBL/eiEBeXjZGetHKgdD0l6XmCcbi2z1iMbl8mbS8wPRM3Adf53owjMGd9g==","signatures":[{"sig":"MEUCIQD9VAzOxilAZA3cOI3N5+U1SneLiM8M3E2I0VGflpiLwQIgJPwjHb69TyJsVFG40OzHZ2ea61bj7KMno9iO2Tlx4rs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIN00CRA9TVsSAnZWagAAccMP/R3jIPrBnLuAXmQPVe2T\nFZqbYGnyfKCZjJ5olxhc9BtAqVKD+WMn35zoA7t457LrD0mWPddltg96lxj/\n9UhTmfKF3eLaJOAdGivScdDXQ1XabNGhwhGNMdhNJVzcIWjBcbkA2rTVzX4o\nWm6oNsQyQnYzydVmTIg6ZPt4m3ubp/c83hWvFtS2KukWi87v2jkQbBL7trMC\ntXC3TaUrCgpEbsI/8myJRtsh//qOHq+PizDOwbc0rvL/2j4z9fl4djkUWTiz\n6hGJWMU9Tt1TZUf1iV5sOaUq/nlpj48Fb8PSUyKF88rKImeRoh2a3m3wCMlP\n16S19yAWrgeC0efMjD8eNO/EufXRBQb51MZqR/Z3o439rb4wjE/zStIwCWES\nHUmpqueLwMM41QwJ5h83qZuH7ZeOkLo4lQvE04HxZH2ZcMEDXGJOlBSNfnz7\nJi17EL+Ivi2pMFx/j3PzMBUHuyTPHj8j6zrohaqf2bHi3V2XlCOSpC4Am+Er\nqoiAdY11wHDdfNURAos5RYMloVXwc19qjt6KK2D38SXoKwGEG3tr5bgzfkX5\ngMLaOtAptBB380cR5EnKtwOH+kCs5kOZiIzyeyK4iCk6RQA8uTNlSaC+cV8M\nfwg9eJGxtuNahjAZddzO/Kc1S4iaEOOpva4WEs7Tq9bkC1n1CJwV70pCSRzD\nJFrA\r\n=KizP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"dab108d7fec88b43d2c313101a2e5ec9da990fa3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.23_1595989299759_0.6665890608719807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.23-renovate-non-major-07d71f91a64135b679450ff8ab6db7195f95a568":{"name":"@balena/jellyfish-sync","version":"0.0.23-renovate-non-major-07d71f91a64135b679450ff8ab6db7195f95a568","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.23-renovate-non-major-07d71f91a64135b679450ff8ab6db7195f95a568","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b1dbf6213ff84641d2ccb1ef24d1ccab6dd276c2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.23-renovate-non-major-07d71f91a64135b679450ff8ab6db7195f95a568.tgz","fileCount":27,"integrity":"sha512-bwMemhW+Fy49p8uf1q/RlPSXOuuKxfp43+gLIcRNd5cktPt5eiNCNmbJZfb8SZTkuLcc2QeJPoFyoi7S8L9R0A==","signatures":[{"sig":"MEUCIAzrhU+QmbXlfISozzRsv2ZjwJjBs0fckJy4Pbn0YYaqAiEAjvse8B/uEBbucm+X0BHimwMyp3P43yQDuJb1ZTghobI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239780,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIN3dCRA9TVsSAnZWagAAWVsQAIz+HoHAQtQScFzGJMbF\nrTe+fxkA7kHydwZhVdIKYKf+Ikeml3s3WohyW4FXSiUwBJwBiwfJXJE+v+oe\n+OXRg+3fBTLfGeiK6PyoQbwHl5C9qQ0mSrckSSdVBV0sXAVHlfZ8IE2MZNER\nY29K7dM0t/oOewIoKdqdbnkFHPpCHuKAKK5fs2YLCvbRjzjovNTpnrLTux/O\nnDNLotszVItgZEETwM36hYHYwH1gvySKBJ78UGjmUCP/5q9LkHRFWvpc8Ez8\n+FPvQuithOCYqbF9AHR0DmL1l7eiWsGWgY2zjWn0ja3w9BtVad4XUgaGXm93\nmeYcV5YsS3Of5DQ0ZVuOn69CAPfGcnGevGQHCJgTjFNEZ/ENxKF8/Q8hERum\ncG+CeUNnPkZkrg5IvxCK17vk2tS0YET2+7DLx6BL6vswh0qL8EDhTUFv2TDp\nP4ElYjQwVHtYR8oQnpLoSd9y5Ix7LDJ1WIKA/dOTSM+CYEbmjtRMeue+yPM0\npvgGbolnL+uulipnvKWWQtycLXRBpfvQwyLswQ2pT7k3fruZR6n4Osi8vUCo\nVFQeg6U2tWgFBcMV0tc75QACcUecK0cn9XvuFBhU+0o0axu0XCZMn5aXKs62\n1zWXCxRj7pl5iqnUJzcGnjRrrHmjhgBkhCVL+P3xOdb3GeqPZ+IpA2TEcrIA\nUxYv\r\n=gMIY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"07d71f91a64135b679450ff8ab6db7195f95a568","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.20","@balena/jellyfish-assert":"0.0.20","@balena/jellyfish-metrics":"0.0.22","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.23-renovate-non-major-07d71f91a64135b679450ff8ab6db7195f95a568_1595989468764_0.7604366465509698","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-renovate-non-major-3c3a899623cb7abbd8346d23714e62793a707de7":{"name":"@balena/jellyfish-sync","version":"0.0.24-renovate-non-major-3c3a899623cb7abbd8346d23714e62793a707de7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-renovate-non-major-3c3a899623cb7abbd8346d23714e62793a707de7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"70fc1f648f931e6f28265fc00694872bde9e5e23","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-renovate-non-major-3c3a899623cb7abbd8346d23714e62793a707de7.tgz","fileCount":27,"integrity":"sha512-PqQp2hWWN3dNpjTYfJVbYM2bzrLKNTM01F3dNHkj7pNjUsnX90GTZChf7bqIQxCoYCF3PZA8o55ed/lZ7X+nTA==","signatures":[{"sig":"MEUCIBmOo80PBu2+Uw4nPH7bUDspwtppqAJjTem0HaOnAUEoAiEA/aCmuWbhfkG7IBQ7ZY5AU/8zB05RctoI99HwKaybSys=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIN5mCRA9TVsSAnZWagAA0bkP/Aw5NqoGdW61C0ZMywdU\nCtBYYrzTgr0PzSpsNg8l29BcegoC0cQBzHGdB+f1eFkp0bErbc30+CzOrhNE\nNMhgAIEu+Z/cHB2x13ZOqljVxwSPJU/Lqhgm/NNFJ0hcUChmx3VRTpg9aAMz\nD8wIPKoVrxvi+ejLgyWiH1hO5ZI0DJOumCcoVzVSFqmbE0xFsDi1SXugyJ8I\nSjzg/goumCzkWMknxP0YeP8jwqbmUKcK9r65WlwYz182Cp7g5KdnfMiUodYH\niTWsG992Yimx50BUiBGl+3sBk+wqzx+jhyq5VLBqAzm8Shcgu+k9QozqgWmL\nkiKipXhfiZVw8fIoZ8yeSWAnkWvkLrf4c76hyTsGGKpc3g5lM6w/SAS99kSj\nnMCV2clKO4VPncvJY023LztkSu2k/d8B40fLK88WPxc0H1VSte+D0hZcgIUJ\nolX5gqnHGjcFqPtfftlo80HcT4Sh8zjRsEArtaWbP4XbIdNoa/8YTOtuTbrx\nAQ5CT5BOlAOBFrMDn61nflIy+kWlpec2tbNRy85o37EMdmKdd5ZjJ1OUwT2e\n9ukrL6X9+efuvP7Y9XyLvXUvTj8jNUfkJbq5qXXFF3JyiQvqbr6F5RAqhQPx\n451GLXcWjdDUWxZKN6w9lbjyAi3JTwLXP7Q6J3xwUdF7QCZzJ/ukfjqpUp7b\njTfV\r\n=Mr2d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"3c3a899623cb7abbd8346d23714e62793a707de7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.21","@balena/jellyfish-assert":"0.0.20","@balena/jellyfish-metrics":"0.0.22","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-renovate-non-major-3c3a899623cb7abbd8346d23714e62793a707de7_1595989606314_0.5754174403015453","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-github-orgs-8736a60f2ab1ce8a7ac837e68964713df7ab8525":{"name":"@balena/jellyfish-sync","version":"0.0.24-github-orgs-8736a60f2ab1ce8a7ac837e68964713df7ab8525","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-github-orgs-8736a60f2ab1ce8a7ac837e68964713df7ab8525","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7a0528836266fbdf905445c2ba57ca3491307f79","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-github-orgs-8736a60f2ab1ce8a7ac837e68964713df7ab8525.tgz","fileCount":27,"integrity":"sha512-7IR7tFZhSASkgZwi82M1lW1K8GV/E6eMvKAiB6s28CzlU0dxZb3nUOsr5FuowfiC5SYoDHEFoD2/+/urmirj4w==","signatures":[{"sig":"MEQCIBWippwR/cY3R1mZRnr2bK0MSiZxrSCNRJRDGvN8s46SAiAdOxDNcds7oLpsrLb6qTrzcXrpE2hngUbouzYyJmVGAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIURjCRA9TVsSAnZWagAAn5YP/Rz2VplMdZ1YLZa+6Aj6\nvXRbic4jkSQe866W0/eBkwO89Cqi54Y3rWcaJhRQFMiX92mzNZHcTi9RzRDB\noKjkRp9PpKAnWdc99ds/Qog6bnQFvXbaXr6xGawIFP/bTMBQBzCNXsUqcEtC\nXDzbiGaCNOqcID/aCPHMakPz0khAIHmu1rSYW/pBrA6hwjlrhSEA8ejS869n\nHLCP3GruKCxnvPhzXgFEGIDZpZ68kUzauAuvXa5rONidYoh/b8TtlHumfbwg\ngS2nVgvjkXzDrofjJJIwkRgOFpShhkUNTjcZpu+g0ju9PPXeoD0NYsUOMlk7\n+VE4eIlSWd+RFJ+AfEdK3a5ufEjPej9R1zCErY6ewiOW7PliZOqWIuQrdIk9\nTHNjAdmDSwge8I8q9Y1T/YG6TnqjhRLlJMu+WqsKlUWDy08UUiE1XoH1kgvD\nGsgEA3L1e/JXsUvXb6LmsSnLkT7MrNpwYC4elr2a3fdVRAM1EawpdXDhBJkJ\nqnvDNcwYceL4dpWxNgM7e7J+ImUcQua5PC8n6KLuIidxjWoJjrE+cY5pJe6c\nbJmis9ku2W3mYSFVpBBeyMGu+TPpVY/NaO/afawiEpwIBVAet8syRUSV5EXT\nKR2fSP4Bkz6fdQznocuE0E3jsy8I5NZeE6zGMie64Bkbs+GcOlsf+bOICyG/\nW/FO\r\n=Qi7V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"8736a60f2ab1ce8a7ac837e68964713df7ab8525","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-github-orgs-8736a60f2ab1ce8a7ac837e68964713df7ab8525_1596015715009_0.808173077838543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-github-orgs-aa78b3e72c93d09f50dbf54e2c64641f4dcd8255":{"name":"@balena/jellyfish-sync","version":"0.0.24-github-orgs-aa78b3e72c93d09f50dbf54e2c64641f4dcd8255","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-github-orgs-aa78b3e72c93d09f50dbf54e2c64641f4dcd8255","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a795f32cc9019070186afa76ce2e85bdd43be7af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-github-orgs-aa78b3e72c93d09f50dbf54e2c64641f4dcd8255.tgz","fileCount":27,"integrity":"sha512-mjignxeOO0cchk5zTHumNsijLx35Q5tNeqEr4iVSMsky/v7Jy7YH3Eco2Bk63Ia4usiPZ7ELTdpvLi5FcrpfPw==","signatures":[{"sig":"MEUCIQDxxoBaxEDBQTnyPcXUmQ4M4GPYOIAQ1t50LBQCPua9KwIgD3vupqYJa/7cXF/Rszji4ipi83Jle04ANey3JZME8Zs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIUcnCRA9TVsSAnZWagAAKPoP/RCL7udUKuxNZHsYPzCW\n+6vTh1AP/76aphR+nJV8na11PdHX39eo+ZgghZPLwP5LJiG6jwiyw2YJHrqe\nz7G0yELHViZ5tlm9N110mSqQv6zE77NUtDfxr68iPXMJ4AgmrGoLyhe/os/t\nZoosNhcYmiY0R8G3+HDtJcPxipSc36r2/cmKryFerh4Su6ABAmnIShkhjDOF\nTXi12QGAkWq4OUbWLS9t45hCuWAHDAi3OLge8zsFBhalGH24X+XkPZedcuAP\nl1gGXwdyvPMNV6BbsyMSsSDXs3Eo0ZrMe0Zq/rtGbEGFefNV90+uU1jaVnsY\nQ9vyLmYlIT5DGpkSRMyWORlvxmmDE4srNpo+ieyCtRlvm1HOJ+zqDbGP5CJG\nHA0nhf2rgtiwJ7yIITtxt4l/ysmkYhSrkd61DQK9FpeAOHdPBWsjLOy6j/Tr\n8iu5mUUPVnXKiFXwhEeJjK70b6nmD+uoANHF9IRxHmFb7oYHe3Mttf5Ok1+C\ndCNmd1GzOkwjD2Ol/R6WKUFB6t434I25dphkDTkAtbDBrHKXGRCpoS7GvCmf\ng1q3J4CoIOB0yyT36E0g/M4emCc60cIjILpu7EhNtbtt5Qe+JaHwl/8Dh3vJ\nbNfgSTZ+Z9panNU3CGLg2OpxWo3WqIrF6LOUxZ623XWJpKBlrnXDolVKnOr8\nLSs0\r\n=KgGM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"aa78b3e72c93d09f50dbf54e2c64641f4dcd8255","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-github-orgs-aa78b3e72c93d09f50dbf54e2c64641f4dcd8255_1596016423336_0.556187272760468","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-github-orgs-9227d08c8af20c82ec014c5d26bfce141e8f205c":{"name":"@balena/jellyfish-sync","version":"0.0.24-github-orgs-9227d08c8af20c82ec014c5d26bfce141e8f205c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-github-orgs-9227d08c8af20c82ec014c5d26bfce141e8f205c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2398c1f2cd0d979f9a61a341ec798d0631bff702","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-github-orgs-9227d08c8af20c82ec014c5d26bfce141e8f205c.tgz","fileCount":27,"integrity":"sha512-6lli6RyghfsoA+Ot2JghQc6ub1dBON5fwyA1c6yCdTzV9+nTKFlsdPxJaC4PBbpwUSOuH2+2wqrItAK1JZGJ4g==","signatures":[{"sig":"MEUCIQCEtwpCVayj6CkKjShWC8E7ah7QJyj0YxbqDbQ75M09/QIgYNCndlKLKC+M3+ppdXBaSgnT5yL0R1uqMxQoHfD7s6w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":241713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIZ2VCRA9TVsSAnZWagAAzfwP/0JyR7Rn6UD13tFmPoBN\nTarQJElqHcO+3opUHVtbup0cJOUfVeoyWPTquDOsTZpIjUj1dD5JC3Y3UuOw\nO+mEIzKVthY1uwqvdLgr+9dYAPJLE5kQ0QTKHZJuUAYRQfVabHbHd13Yr/So\nWpyQ3ZVcKj7ZzGES4S7eGOZ6ofdDwXJ3Qc2qTiWXh9bXC9GuqcliJw96qIhN\nfkKk48rrbJu70Zd/X5CQd61ZnxobQhYPDvjw+Lk3C1xbcOjhT+2VipfD1ySK\njQ3eKHWTep7prtRNc3hRculWhmJ+C1G6TNBJ0Fd/Gx91K3Rh7DWLI4XzvxaF\nUUl2/WSytBObbyKC4FpLFCHpqOBrxDfivjIYx5pWJSEEgUL3B8l9dAHnBmHQ\nJtZGUVE83gGXcRufQFB8TEfbS93k9EXVTruxVDIL/3hmI/jgSUSp+nVV0CTE\nW6dn8bV7iNYnltPPYZeL1R+Ou/YCEiyqhyEBu6XoJrykJD3O5ykAYkVj3Ln6\nYA/v3ZvzNun5pcM7tQx+VemmSBDCXqg8Le/YRkhWfdfQGxKLG77TajDyQY6N\nCJHEI8fPcbg2oxxi5IKbo/GdQxcRlq2erauNjQlXssPZGVXCrya5mKZxrzeE\nJq6+TNOCbVzhco4vzlGdaZh7faAa+4rjiX3XgunZqfnkmU7ShKdAOSXz2A4f\nd7gB\r\n=7Gcr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"9227d08c8af20c82ec014c5d26bfce141e8f205c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-github-orgs-9227d08c8af20c82ec014c5d26bfce141e8f205c_1596038548014_0.9540429410518976","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-github-orgs-5474d6b3b95c3a3c675e7a8aac36b915bb9bef04":{"name":"@balena/jellyfish-sync","version":"0.0.24-github-orgs-5474d6b3b95c3a3c675e7a8aac36b915bb9bef04","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-github-orgs-5474d6b3b95c3a3c675e7a8aac36b915bb9bef04","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2dbac758068745d62ec02e59fa24dafc0485b48b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-github-orgs-5474d6b3b95c3a3c675e7a8aac36b915bb9bef04.tgz","fileCount":27,"integrity":"sha512-gfV1hiCppLnUlT7Et/Chgq+Px7rLJ99NUDUjxAZqfHj/oFPzwVzvphx0V6xuJ7q1tDyJFXtlquRlIBSm+G2kUg==","signatures":[{"sig":"MEUCIQDziz/J/fmf0ZhEHCJSRq2u+nxlSV9BlqD17UyM5/rQ/AIgVi1gbDk/Kw+9dFrXB5xtTITd19dRZAETpL3PeS9XYK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIaMICRA9TVsSAnZWagAAlIIP/1EnIRxNeKjHmLDuTSTZ\nYSuK1dwbQ/YkYR3F2QHhrvWQacCOGTDacs2vq0FVnutQO3TPHAXRhQG+x+yd\nSczodjUACpCLU3RNlbMJvT6l1Ra3R093eOurrM4hKHEinsB2VI8ndhtDqJcz\nXBvlxj/a5mFImJcfMn5zPRAgGqY26G/GWTyNTm3ucHa3kXY3NPDBzK529ppz\nwpx8bXLE6Bn7reG5P2VNR+k7PYaiPRqg0WRuCa1T+X1taD5Nii2P6BP8mxdY\nabFFQ7t+3hHzwOjtzLHDvBmTx2ieiY+t8qaJpwPPuTAOnmBLlAzrUVtncj7u\nbazBKUdkc+pIumtpMixeVyoWYmNFWdbiVDCQXcB3l6AkcmhsvxNPazsJfGbg\n5K9Mh8Uj7PzOTq8VueyCYoAScayoMtnIzFE4z5ZkIIAQ3LAeZHMWSJ1bNih1\nkgWLiBtrcjlC3lwNb3Bp/kF5GBVgY5Gn+0iEnrg4EK+AYLZ61qbXYVtKii44\ndISTcvMMFiGIa6YueM31bWxJgOg6vSnkbAqynxI22XkLPFlCn6wHxv1EZ30G\ngYVf9Re8KaYxDaHaWyW6lGHo53tX4hOI7OQM+opANFauzzGiloy94O2gnIrX\nqbQfuUHTJqJ8Nk3NgQBqeXxtae0OB+pQyUwlw9c7YR/BXg/xfB1bEkOxt9aN\nIXsM\r\n=EUBi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"5474d6b3b95c3a3c675e7a8aac36b915bb9bef04","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"0.0.19","@balena/jellyfish-assert":"0.0.19","@balena/jellyfish-metrics":"0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-github-orgs-5474d6b3b95c3a3c675e7a8aac36b915bb9bef04_1596039942498_0.765570928004365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-caret-dependencies-c252567168e1a51c5b76eb5521122d82d73dd9a3":{"name":"@balena/jellyfish-sync","version":"0.0.24-caret-dependencies-c252567168e1a51c5b76eb5521122d82d73dd9a3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-caret-dependencies-c252567168e1a51c5b76eb5521122d82d73dd9a3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c3bd5705b70cd3ec24ec747fde9c645b894273d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-caret-dependencies-c252567168e1a51c5b76eb5521122d82d73dd9a3.tgz","fileCount":27,"integrity":"sha512-AvMvoiYyrvF9nFYSbvY9BJ4zVI87MFIkKdSiQHaqdIFBKP2NxL06KIpz55KI5CEqpjdmJXzlEOHZ0txoPebORg==","signatures":[{"sig":"MEQCIE4TM3hu7x4prJLLwrREIFFA7smAJaBRzrtqcDDgYWvuAiAgTq694nYPociIXpwb1ihsixg3+HSr9QQpJD3AsFd/Zw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIhj5CRA9TVsSAnZWagAAhFwP/jKJKU+VWk9l+Is+E3+k\nseKJFjeSIuQDaALX71MoCXzwCnVGsP8+mnhRRLqjsnRJN0xlR9RJmtvEKWWf\nNW0jH+YWb2pRrDjSjjRPaMX2s+FtpOxNKiOFBPHsUq8N3znY2c/OgYLtA3bq\nl0+BWimjaSQnK3uEUig6qu3I8ac/ENL3HGeppcJK6rryKhIiYFWhHK3koL3V\n4eGBIZwTyhBR4GamHuaeivkrevuTaGSuYmEAqGbbC86cZd7WvWniFO48oCD9\nLsb21Hn3EjzC7v4i9jPxKs/UxoFbJy/zK8GygjB175cyTK1fakHLh6ccdawd\nJ25tFaWuCkKgIfvBNBA6SFGIpR+OAymeqXN1y+6GqxrK05M5uYM1U8PE9/zo\n4F+jwiN5OPcLKZKEw2CrCkdU5e/nEOw4Z2YDTM4U/OwoFFiExlRq2J9F6cSz\nBsYjvo+eqT0jgEGdtmgWhhEzvKhW5eQug2snMG6LeXCNBJjDHybZXs4mY6lG\nk5OrRhosv7HMP5alk0/h30sgwRUlOkqRyYG3z936IXRSzWjOVMA3oWwWqzOx\nxzCGXBtnKS9vhJ5Ev9erpHXMO+GEBaDGbJRNQR+f+c/BO5NnKfTRJkyftarD\nJ+rMrdE10D384DxgknM/zBCREpufybHAzk+bazcVAIS2yv3WjpwSFBScHM5j\ntfA3\r\n=SD/h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"c252567168e1a51c5b76eb5521122d82d73dd9a3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.19","@balena/jellyfish-assert":"^0.0.19","@balena/jellyfish-metrics":"^0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-caret-dependencies-c252567168e1a51c5b76eb5521122d82d73dd9a3_1596070136625_0.9431045421885509","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24":{"name":"@balena/jellyfish-sync","version":"0.0.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d9d3e64ae88850a30b07469568dc8fa53e08e9d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24.tgz","fileCount":27,"integrity":"sha512-jhVl1gZeqRvlbzSWXxAPkbxkcW5Qqdrzq8UuPV4PX5i1iPfK6AENPOnrJ41RATLHdxRNbSA/dKvGMMm1Q4sHSQ==","signatures":[{"sig":"MEYCIQDlMkw9XdU008C0dU1lmqrXsm6MljujG0Tl++vo16Iv4QIhAK2TOLR3tDkJoN+YOJ0q6w8KwgkZ9eWePl38qEgC6sAD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIho7CRA9TVsSAnZWagAAKtsP/3q8cKWJwGxKEgQtYmQh\nyMbHCsAiTG5nrDQ3bsDqlN9oCTHHSqVWlMN0SQ4FMJWf21/a16JkzLhbSdRk\nwyP/SacgO74ruNejb9h7pXAoYYjzO3Hz/VHTK5DcWiqztjU1H42UheCv1Cmf\nSh5LgN4CDS/ii2VFQR4iky6uUYNOTn7AS29/HiJjNglW7Rs859fsoBJ6eyRG\nBRH+WlHMvAXCyUN7rS9rRUYng7l4wrzj+MQLRa0+R+p8LgieHzTFXYGhv2je\n056uhkPzyhTKPKcR/eDnp04FGNWj9KRdrQxTdCZ6hak15tCwcNQJoPmRT43U\ntYHqiT4ZYm5HCvdnovRwq+SjTV5QZd9LF84erFHJlcqZ1MFR5J+Tg7I/FH3A\nlQgIqfdKpnmvWcnKjOUd2BQpQidaJSVDKKZ7ajLdC5Oh0pwTb/im5RaNri5m\ntU+EXDcnjdiOZocHLCmHXBQsKo/SHAFk2LkmoT4SsYKrH2UdvdcgjOU4SJu+\nBEP1R/FNXj26q+47yA6uyI7X7UB8ki2C+twHSx2V09DZDiLV9c3G4ObjKszb\n8ud1Skfe/qaD+MIe/n8PjEAg2SexeZ2UmaaEEl2K8btgqdB6qSx6aRNZsOrE\nf4OOHtiR0Do8eyIYhCIUb5LYn2oUbH42M13dxnohwfOGavrNZjLo1b2yCu/X\ngbvg\r\n=4Bol\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"92aac8f4cee1e2ff9d7f68db0c60dd5cd3de25b0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.19","@balena/jellyfish-assert":"^0.0.19","@balena/jellyfish-metrics":"^0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24_1596070459108_0.3333063355522665","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.24-renovate-non-major-fec42087f9ec651b67155a7f4ed3d4a633dbba5e":{"name":"@balena/jellyfish-sync","version":"0.0.24-renovate-non-major-fec42087f9ec651b67155a7f4ed3d4a633dbba5e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.24-renovate-non-major-fec42087f9ec651b67155a7f4ed3d4a633dbba5e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f3c30ffc52d01f33ae644cf6591431fa1494e11","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.24-renovate-non-major-fec42087f9ec651b67155a7f4ed3d4a633dbba5e.tgz","fileCount":27,"integrity":"sha512-znu6m+8cX3wuCf+gjNEHYU8zUafSXbuk7bB/eT5FPn18EomPhYmm/CVcSYCK4Iszj0eMlqov4/pdM/h85zhegQ==","signatures":[{"sig":"MEUCIFKX0+5wE+RzKbNDOLrlmMGxU5EMsmEij2dqpQXoUD+TAiEA3JaQERJNtHSo07FU2RC9Do67IglMmJ8QCw8johu56m8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIhrNCRA9TVsSAnZWagAAZXMP/i56zLseYQKYMFshcuU6\nm4s4E7Rz6IoyRD7gY38uBII69sVl5l76NWGpt+wgS65gMAI7XLLkYkildR3s\nqi/IEEcwGh8AV4EmMI0PUkst/faPmu9DX2MJUhhLZwW4gdDlIWCOhpirPKqp\nm03KbQ6HeTBAFryAofKk3e7KPbCVUYIz6ia0oAGyEzfbZkofEqVm53QtDDIV\nOFz3JyQYqJ+oBdBUTEexR2l+Ud7R8uH9yIkA/I0cP10zmgOVn25hdd0pGbSw\ntOcbKK15tqfgDmir81jQ46mgR6t+gRx38YbAlJlUHtKtSozvgOyQkI5PqPz+\nx0St+VYSd+7rlK2PB0c6WkUFnIM9DtIMHQ/L1393AsJ8mv7rlEbNQ2rSdeEl\nN/PKtf1oi5eCD8PHEAqTdt3Y3mb/oJ5Bse9T0SYg4ok5N0cZJwjG63G2Yzk8\noP11s1w3woy3xbin7O22LDRaUrq7kac75ozu5l7hR/amDlPRmFsut/ORvGff\nMkdvQfoGMgqSJQFjKr48/jAmhMzc0zuGJtuF/c4c2fHLKSaV5Ry3gld+mwo2\nBAGdH8g9nU4WhMPHlpcfX8SqDSZ6G5GwHaEsk9sOfQN46kVrQkUTGZsx8YTr\nfdewKfso666U/BY2wPKmtvA7idoeoCP9dq8OYiTl7IxIweKRbXg+bVHjOrwQ\nwRg6\r\n=n9h7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"fec42087f9ec651b67155a7f4ed3d4a633dbba5e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.22","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.24-renovate-non-major-fec42087f9ec651b67155a7f4ed3d4a633dbba5e_1596070604573_0.6165553981139162","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-renovate-non-major-b5d88055afed73f68a4f854125b4325298e3b465":{"name":"@balena/jellyfish-sync","version":"0.0.25-renovate-non-major-b5d88055afed73f68a4f854125b4325298e3b465","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-renovate-non-major-b5d88055afed73f68a4f854125b4325298e3b465","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"624c062118d319268cdccd8a0bb429ea9c9bf03c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-renovate-non-major-b5d88055afed73f68a4f854125b4325298e3b465.tgz","fileCount":27,"integrity":"sha512-JvSJGamZ/ggn5iVZO8eKAuaAuPvWyipVY/aUFrAJOMUHFBkXKFQb3r7KunirVDy9DZJj4zpkAxk7Y0AqqBfTHw==","signatures":[{"sig":"MEUCIFoYOZktO4J7fydvRnF2BiU8KqvW2m0LZcecg1ZS0EIfAiEAt9saKIEK9SGqjlCu8bKfNPgWT/6EXpJ5XqvIfuS8ycY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIhttCRA9TVsSAnZWagAAS3EP+gLnnRrAqNZyV253V4sq\n/JzuvQNAOFfYcV4mlMeQcv7/RAYQsZJsUc4ZqYTiSMHzA9dsIpRW53UAIbVX\nA/g+vw0PYKkrXQrOfuJAQKROtV2B+TGioXQyu8xn0rXhvtWjjsqX1A1KCVvy\nNYaTJs64KHkI16iqzrHMBiY+8PKKXkq/tSwygw4O7mdan3DW/Kv5/eruYe6e\nUfd0oO2g2GpUQGgawGnZql+nBehXUTgYCZ+Wqv0n6+5n/AbAtMfalrJZyf7G\nL2/HRInOvRWT0BXqYUdqBX8wcPSRwlnbCD2DuVoCIt9FdTi5VlJqoWgNeHAm\n4ZbxEhKXlSZJN6MTOTqTj976nWygR5sesoymDLLLAeDdqOSPwfCmU5kZTZNP\nQ2qmjwGnj6zS2yOv7nImAUyIQjumCSb6gVieQmnfi1BNy9v2aymeoqdN79TY\ncEW+XtXfUUa5mmWEZ1hBrHt0U1Y2izn3yMdph4rdvLT+z9+xK42Jam9+xD+V\nKClqUF6PCpeyFumFhF/K9Vv/S0rfQn/wsY3dSQVgRN+gWslBaeMzaASA40gx\n7OhsyKCLw8DglSobvDNcPehZHN/zlkUZFBsM1VNB2Mj5Yyx3IG8cKUiF9JXC\nYMkOlX/D/36MUo2/eueRxR7SQagLqv3Qa0yj0ebW9rA1rjRPslLN7YNaYd8f\nRrXl\r\n=TGBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"b5d88055afed73f68a4f854125b4325298e3b465","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.22","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-renovate-non-major-b5d88055afed73f68a4f854125b4325298e3b465_1596070764881_0.11456872939435114","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-github-orgs-f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e":{"name":"@balena/jellyfish-sync","version":"0.0.25-github-orgs-f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-github-orgs-f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd356589e1f6ffe66c8be86630a16dfb41f49459","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-github-orgs-f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e.tgz","fileCount":27,"integrity":"sha512-Buxe1v5Y5sygLVdFMJLu1ORWQ/deGk48La4PsLJeJvw1H6nHpGOuhpeQWCBkoOor5NuKk2SRLryukxLhIf7znw==","signatures":[{"sig":"MEYCIQCjTqdXMJXOi1ZdyZmFOo+z8kUBPxZp/LixpXJBrHeoGQIhAMvcRy9Gr7y87BzIwFL5zUX/96wk8IpdRY44P4ugUz6p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIht9CRA9TVsSAnZWagAAqI8P/05tG0ASMzb89LqqMKL6\nUoNdByN59OCmEJxHqyVvwqeIRtW5wn+RnqQTmJjm//3W0vZFoBnFbtIgsecG\nXoxVToMNntzOMZOS5cwbLhOz/9J29OHoKber7ErRJWX1X/qqeDE+L1+VuCVn\n57R35RxhMoJqzTenAv8434Y9Ux6ntO4V67JZZF9p5liC2BOmpVW0Dxw8wCsP\nFnrBrc/duSyQJAHq64K3qj0aIhzlNo0PadTvyi2q2gw8P8Q7g1Vp/2ww3l87\nm7+FmYYHDVHgyJAC76cB6I6DMLhb5/IPD4pR9lS0xWTQtrTD9hPAK3s171fb\nTj/gGj9kBTcu7e5YObtFg4N0XUYR2uN9ufYSMSrJbce7aXXvF55KMJR8fBUB\nkIu0LoTiKOf1g5vALnVpX2B3ImuoR6jSxREUNTmgOwdwEN9m+4uvBVbpXamy\njqUQKVZ4xs7rnfM63ZrPLyE3ZzgX3QzecPhhKE0clrx0sTl2JhZldm+ESHr2\n5SgZxBuqCGx3ZdG7fv9FTJMH6JYQBNI0HYdiaWL+ZRkhsXpdjuQd+vPF45YV\nJ2jaVAhms06KBvsDbInWLTt/8GgHGW39mc77FGUSVytkmICRnmoqdyVwbvjt\nwwM5Nt1imZ2jv8XtzqDz5mBRKEMjjFRE4baPgTDF6Z/rRDKG4fJ0OTyEr/7N\nORSP\r\n=4TJZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.19","@balena/jellyfish-assert":"^0.0.19","@balena/jellyfish-metrics":"^0.0.20","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-github-orgs-f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e_1596070780717_0.04903898155748165","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-renovate-non-major-16bfa573840e1e0b4eb01b7f9a8a462e06e58057":{"name":"@balena/jellyfish-sync","version":"0.0.25-renovate-non-major-16bfa573840e1e0b4eb01b7f9a8a462e06e58057","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-renovate-non-major-16bfa573840e1e0b4eb01b7f9a8a462e06e58057","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9e95d5bc406c89a23fa9894654085c6568368e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-renovate-non-major-16bfa573840e1e0b4eb01b7f9a8a462e06e58057.tgz","fileCount":27,"integrity":"sha512-AAcL5g5WscOsiDBULTGJHalVzIO1nyWjPQITTTwECB/xx6Sd41bUfLrA+athcwtv4zn6Jukg0yEeeuTX/BQMwA==","signatures":[{"sig":"MEUCIQCQ4J+Y3H1x97T0gPZ4aVgeuwP/bZQstwk2QRdbPret5QIgUR9ENjgUyLzfKHCElkOqlAZrnS1MQkVbEeerSlupJx4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIleNCRA9TVsSAnZWagAA05UP/00iZ8Dm7KiT2wSPcw59\nGxBkLTYP2jEA1W2LxSi7QB86SK+yP594YcNa8pEmxBSyOC22+k3DMvvJZusL\nkII10mtV7oJ5ECioBOjsTLWyz6IsE96SxhXKeuCm0WzySivZyzwfl2o836ig\n+jUaPzMb4CTnO12ym2t/YbGEi6neisC/fhWL+wQcnZwnELa2s8NvoYfK9oQq\nRFCNsnU9hzSw70UvrjVjmCJHd5rKyv+En0Y637swyuCZuQ4B96Wnb5rB49gK\nbedpNihzhSOYb01oPZdfMt+uYLdcUPzftesVav4BKtVTIa2JrVdDKaNZF8tm\npjnPJC+GuXNYrmXRwIy+e4S43CwH1qYpgeVD+70okU2738xwbtCXMWxrMGzq\nTlMtAfr/r1uCGJ8oNkAc+vlva8Ilik6IH1TzvG3fzegLJqw0HhQnRTxipqfI\nBiWxbDABAhJet72OxG3FAnUfFJagSJiBQwJspsUiS9jDq4WxiQ65Z4VjUXsR\nZLDLU1yIB0tqnH4WtYJ+3ICVvA7S12wW4xU4T5oie1ODpoPEskel2oIUHqs7\nydD8WnhuSwzbzRUKIDC30aSWMjEo79dSBffUar3fU4X08rCbSdW7+TA4vUTk\n8gIqBQbxQ7HoeV6HFI8Z9cDaXtvIXTD++PnxZam9PxqTjw1FZpstKBoH9Owy\nevem\r\n=8kAW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"16bfa573840e1e0b4eb01b7f9a8a462e06e58057","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-renovate-non-major-16bfa573840e1e0b4eb01b7f9a8a462e06e58057_1596086157121_0.36878827234719846","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-github-orgs-2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b":{"name":"@balena/jellyfish-sync","version":"0.0.25-github-orgs-2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-github-orgs-2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e91f26f36ab218f9dbbcda7cce6ed53cf13e726c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-github-orgs-2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b.tgz","fileCount":27,"integrity":"sha512-HLFy0E7DwiCM0CuLPSGqeUA0Hu9PmPj0Ayy6qZ9wxhpxfNyiQxL0uib8pIVhGaNoHHwqJHx+qnCY/P4PLAzX7Q==","signatures":[{"sig":"MEUCIQDf6NQYgiZNSq17GmenmqRl4qhDy72PDZVOFhVxHlzI1QIgChss7YnDPR/uKhITHVWaVgLrff++Y5A13mSYCvOYl4s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIqZ0CRA9TVsSAnZWagAAtM4P/RIRWcgPd6gZ03kxvkGH\nmX2c/zpYmEwcRVDZpJFVl7HTluroNu5u6yFU771SlHKuUvR4pV/XVR87JxJ5\nQ5jlqxC72dGr1mUFKCl6cDKDSaM6GyQYdIe3QhJOGjlERbtPwcmz1KI77ygG\nVU5CgMHWEtlVmd9wqx7kd51jWjy1tygQilJpdUnIQHZiHiZpXWuGcvHbmEzs\na2P40WQzdmqVYNaW4f8+5jnJfT8/kmBaEYkST41IcZKdXEnGdTF4NHZGdE7W\nAHkLZVrJ1a31HvAvlYJ+gKMSyGNWIwuL+hJ+ptDEDkjpP+gLKuOYgeAM8yf0\nHxcIKhYBAUYiPbeebzIzVWLILbG2kblieZwTxe+Piq4XoV4Zy0kDZeJVdo2r\ntBg/v0g2hTkdPmX9R1CXFSacd3SqWr2Cu6pH2tk6+/wQRlPmmHgxJ6ZB94Zc\nE2lsT/he6Ohz17xaFHOmlWNnmsGTacHZTWVSl051mQSp0UpC1tfgjQiOGfa6\nUBn3ANyy47RytG+48dtcEnS3jptsJqcxX5yicuaPOHCF0NdZKL7lOqK0xG3W\n809ttwux1hnl1vfeo0VCXc/giOA9IQMheh2P+quV1SQd3CjDlNHE6neebHFD\nWAlra95uEc4LlgS/PIplY+UqhJqf3dDD1bNYTkmKlTi/CSmu70Ex4+wYTfFM\neHk5\r\n=46fh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-github-orgs-2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b_1596106355696_0.34329278581267886","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-github-orgs-312256bde58a4388bdb28d0761319e734f69af98":{"name":"@balena/jellyfish-sync","version":"0.0.25-github-orgs-312256bde58a4388bdb28d0761319e734f69af98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-github-orgs-312256bde58a4388bdb28d0761319e734f69af98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b3a0320fb96f6227c94a44ec0cdb21fc22334e3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-github-orgs-312256bde58a4388bdb28d0761319e734f69af98.tgz","fileCount":27,"integrity":"sha512-HLO/fouG4a8YMglw3xpVJXDPCTzHsNxofvUzg/VS5OsQ2+qSzDsfAleFnGr+fA5Y9gOf2l4+lrom3s7KWPRpZg==","signatures":[{"sig":"MEQCIEw747FYnvUNUzh7a+le6IJ2IIENTQxwnqzC7L7YKeR1AiAuIhzrSfyjuPmqGMXw5eu+Acdp+Ycb9LI60h8kFIimVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":242483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIqebCRA9TVsSAnZWagAAFOEQAIebrcpmY03OIir0vQnB\nJqIOcOCaWXMq8ObquMKVNtAg+fc1kCone8Ys0xY5n0YxPiLJOMQwpnYuKYMq\nzC+oBdT9yO/vckCNzYa+4KoW/lCf1VfEAsZxYGJsl9b0Rq884M0hRjJOA3W5\nHIQ4nL9/RnpO0n2XMPqpLWrgUKbx7Yxxx/mTkEfkmWZeqGGUZnmTSCSPwo9U\nLVVo+8l41zW/Xp2zJYe+fDO/l1k6XxjaeHhhuVe4l+rf9V7gxMwMxZVMH16W\n+4ynD+MsHEgxBuFLECi2KCzWSshhMi26C8lkU4YemP1yvOdycsxwfz4SIvn7\nr581D0B6jxygxm5XrhTNEwtRelGQY2zuZIlDJzOzfHq5hzKYVvLmMFbR/Ahq\nqfOseFwjwxXf2vSiCesCp6br9093KR3Db6xPiTtgolvcTTt6/BmuPRWvNZ6m\nWSZ34QWoR+15+//0D6WzYFKfJqziZFRBvNf6hAiNWS12lUruHmW3d250OQ6/\n4bsyoREHlQfIphmAXpIECQG55xYgBhriiN0OvAmaJdALZao7B6WwvdWZ9A/G\njvRkIB+mgEwTmcmn56KY6OGLH7ne6up4VX8MlMkhK0JS70GomUlPaPh4YB3h\n+3+/nt3pC7OzGXvwovxNEtoCaZeXIr7wRxqOQEW6rgxl3/APPdgm4X84JKQ/\nEOBd\r\n=06/l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"312256bde58a4388bdb28d0761319e734f69af98","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-github-orgs-312256bde58a4388bdb28d0761319e734f69af98_1596106650990_0.9931769006944091","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-fix-if-statement-9794e52b7523e7ef95015d0be1c602fe4336542b":{"name":"@balena/jellyfish-sync","version":"0.0.25-fix-if-statement-9794e52b7523e7ef95015d0be1c602fe4336542b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-fix-if-statement-9794e52b7523e7ef95015d0be1c602fe4336542b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"54d69fb9352f88603bfc35258af341e6e9b2f50b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-fix-if-statement-9794e52b7523e7ef95015d0be1c602fe4336542b.tgz","fileCount":27,"integrity":"sha512-qmrTwFa8NNbO51uFV+Dta+pxOad1Oa6hK1FNPl4vMQzDFifoHakigCCViFZJ6wrYBer2H7Wn7k8r48851T3tKg==","signatures":[{"sig":"MEQCICvyeU/9Fpaea+xzo0qOD9MsGUQpg4FfLAEyW1uKoTgbAiAE1zYMhce3NXh09d3I1QlxN5X1ACTl+qu1P6dolf6JBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJCWyCRA9TVsSAnZWagAA9XgP/Rt6zbtGMzBFWN5lU1lq\n+T/1NI762obhPXLTg7HLVshXmWw86QDzC0TYA3RJJK6Dee2qYN43KFqbd7an\nKDT+nX+5AFh53m9l+2PzGk9D1czsCouz6XgEAPuZ17vfoyYS1ZhTYbLhdoFh\ndtM9wFTcO8kmc3FF5seBwsoW11JET7NiBOrgJPnue92SONfb55Bm/o7yPhPq\nK277B0BHIMytXkKn5ZJScKA0P72kx37NHWD3ube2EUzyYmlaNe/L7/RgCTfy\n6vGmpZw5uFwk5UR1b48XJ5moDAQkda14ICCNXWEjPSpjqkjjkWlMC9iNB/7F\ntH7Tc62tQloHJU8Da/s63Rh9yGBOQ47JQDJXNp578Lme6mo1lMcwVwpmVk2M\nhE+j0fKujVUs7yFhGDBAqtYW875WuUf87aOVbtxcK+m+7MQneEfgNTr8Llw6\nGtTcrhAQ1FEbFbbjjw3phjKZrZQb3yHbYACpIAJuAyJtWSUseloUAZqSZnPB\naShS5o6YRcbmZYk++XaGzKpbA6pZXVWowsmxu21zNax2D25OkQ9QjB5Ei0Qo\nsrbuL1r+bT8hJbwK+MSCqHjUvRRWpo9Gw3gTpj3j9f6pibadUtZRqI+lRXUp\nfa1JUReaD1FVWA9W1rrzWzu+VSuADFffhKKRGg+QEL2IoyNgdmx58jj3WZ09\n+h1M\r\n=vAgd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"9794e52b7523e7ef95015d0be1c602fe4336542b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.10","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.0.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-fix-if-statement-9794e52b7523e7ef95015d0be1c602fe4336542b_1596204466179_0.7741581070015207","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-renovate-non-major-c2d95427bcce520a1684eab219259fd9d6cca08b":{"name":"@balena/jellyfish-sync","version":"0.0.25-renovate-non-major-c2d95427bcce520a1684eab219259fd9d6cca08b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-renovate-non-major-c2d95427bcce520a1684eab219259fd9d6cca08b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"45fe2d52d30991a72a711e78b108153a7b5ee9d7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-renovate-non-major-c2d95427bcce520a1684eab219259fd9d6cca08b.tgz","fileCount":27,"integrity":"sha512-+kh/7ddNgPj5jNZHlDNbtioMjZPccNKzGCHLMfy/B9bFhOYQI7+2FTkY5XH3dIcPODEeHRhBA2ev135ttE6llQ==","signatures":[{"sig":"MEUCIGcIGaJlfEgl7pt3RW2v0Ut2ojFNBURE0nZLbKT7jg0cAiEAy7UKrufRdq4cluKUQkFwMj+pcRjFdREkCjuHEZcqdZA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":239995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJxdmCRA9TVsSAnZWagAATg0P/AomEwgmBXA4s5+iQseI\n81pZcNw0D+Y/0yu44x+ccL63dR57BtgpHwkUXAxkOCCa24H/Qpj1XfPSvGb8\nPTGy8h5VfKBaWhNT2hBiR1eJ65zv7WJ341NPO11WT3NoQ79CwXqCHOi5qPQH\n83ekTVECCqf/CXIPJesgEQxgmjMbVFO8Qzcrw3j5te8dzL5IjwEGHAJliSai\neJYAeWzcFH3QS+qDv1OzHuh3dEO3pQ5SYZPSMO+scVIYaGBcx0o34NsjW2yO\nnPu3lls2AAJ6wnEL2/uk48q2xiLYcUULkHqSaormjKWs3M667moxW5htlSiA\nVUekLXZAY8KnOASNZgmuXezo4tBcunk+1VGgLvhuMOG257ffhXJAmYGuSwCl\nMCe+58M9AJi4dlRjzc3Bbn/3D13sP8kgBLMCv+4yZLP2O+hZm0XnMtuYKOBs\ntT7loaI0U8KjHyPDrYmiMuZD9xOXhd1f3xnema/5NlK75WnAG7xDG+qSYcBY\nW36Lay3Sm8CxHc6Bmw9uYxkIGX9Oinn0fp0kicHNhe283Ppz8KIAgxyOrxQj\nUu9xSDTI5Gb/i9xxmQXXSAeX8IrWXduCJGCWjBakwXN1cFa33hTGGC1nPESz\nKwP/fEhQ6VeGacBvkTsCbnDAJW9FNZl2xG0Kolf6ozTM2VTg23JDgvGhB6QQ\nXF3f\r\n=DItW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"c2d95427bcce520a1684eab219259fd9d6cca08b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-renovate-non-major-c2d95427bcce520a1684eab219259fd9d6cca08b_1596397413857_0.9292715607324435","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25-fix-if-statement-1f7b5bad417a419079be23c96cc188992f29497c":{"name":"@balena/jellyfish-sync","version":"0.0.25-fix-if-statement-1f7b5bad417a419079be23c96cc188992f29497c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25-fix-if-statement-1f7b5bad417a419079be23c96cc188992f29497c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0a75891c5062a6f021d17d21e97c7dbff333e8fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25-fix-if-statement-1f7b5bad417a419079be23c96cc188992f29497c.tgz","fileCount":27,"integrity":"sha512-PmHO1qCPc0hxnFXf39soBBg2sRc1d1PYY80g+YlGuOKy5t0CoU6KJDyhE9dEnZ/rZZm9Kq1Xf8gfZC1vomSjog==","signatures":[{"sig":"MEYCIQCIlNeASVLdo2lMhULz0vKlF34+JQ02qc8yWPLK/VDQZAIhAMf+F3Jxb9Gk4FA4pGaqXIqkWU7nkbPAitxEjWVpNkRC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ0lZCRA9TVsSAnZWagAAp14P/0O2EBYWKyH81Tvx602s\n5OS1fJJm/60xm6aIFEekccGPm3L2nZNamD5mUfiUXXkLc3MzSyOrZ//l0u/t\nKBZbsH4KlrPGsA7MiNwshmmVXoDac3I/VTpAcuOTIDX/sEGhDJoQjPJ6B7/m\nrZB0NX/fulro0TEVqZ3JA4Sz707ClzY+Di9gRyibQOrwuuigDMLYmDGLPotB\nIs7tEmDegeT2f38EJbsB+FYYLZoO8RotA4L6mzS0pRMMW++w9Ywii39EjLk3\na2zHdxtQqOL/uMBteYei08RiV3ZuMkInjbqy5b93NG7IA0J10GUQaNN004Gu\nlp5GZuPJ1X71XM4n2wYX1l7usB5rHBxd0wGJ5ZkRwBLRHI9mlAWwTbzFfmPY\nILOjylH+gGACr+sS/GY3AUH6dQMN76T2w1zVABHu6bo5zMki3CuwI3a5wLu6\n//x0oICByBqc+tIISj7i6ZjKBRl7HwEUlcRl+6JI8UpAPiQyUmfa1npQM2X4\nF/tsfVvsP8cuNQgIS46tUuw3JmGKIRe2yjNB0pvB8J6OLNQ8O6u/QPmKKhDt\nenbGnY1GQjNPrC8k3wDpFvTMR5on5dqrrCG+0MvSwNrXbD/JeZwMnoiism9/\nuKoKOsm1Ww+vUEcczqKUkBntvBvUrifWng0SsDD06QXRz9Gf9wD80AgvyGAZ\nnLlN\r\n=n1E+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"1f7b5bad417a419079be23c96cc188992f29497c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25-fix-if-statement-1f7b5bad417a419079be23c96cc188992f29497c_1596410201402_0.3211702290299716","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.25":{"name":"@balena/jellyfish-sync","version":"0.0.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63cbb3fc8e43ca78053eed6a469b257da4b874d6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.25.tgz","fileCount":27,"integrity":"sha512-TQWMNzr6648YjBq1U3ySH0aCdx7ZCdwHRnbkHjNV+X6Mk4xjZf20YtmRd1jDCrW1s3W6UUZfcB9OQbITEVwaeQ==","signatures":[{"sig":"MEYCIQDIfWHea7DPMU7CMtFHZldzGiTLvkl1RS8waT03XYmh6gIhAJNsuTa2wdY8eZUjP8bUPPFHRiymBxkqVrBjjUjQegRT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ00ACRA9TVsSAnZWagAA60kP+QGkSuNs/0iCarwoMxQq\nQd0zE8636P1XQS8DSbh+ATp2uzvzd0XQDUEeK51CZlX0siBYU9Whcuwd54Yz\nBRJ7oqTLfG3XVDH3VfAjXwuBnwACIJ+384iVT3q5nSNpKAREed7/dAmQb0DV\nX5G8shuDrG5LCk/uQ5G3+heFvuOkOV4wPIvgIsFRQUArqgOiEGhqYWR8jMps\nx6H3iiABvDdfn++s0Ga5jmj1nbz/9ui/7tugt4jSD75BKltNlPk1j0YIQs3S\n6zq3HxOXDde5CcG0rbU26KDNMVBswDdNj0MnB242KSscgRmA7oCFYFXa3Opk\na3hOFxWTybxqBeJ/fuq/FaszXmBGqHomR6jFRdJh7ABTOrSXkPK9MYjDKSCy\ntA1JNLUr0w5rffq4j7uGyALxgLYoIVLbDkVIGIS73Y25VJIBgSEkoXHWrMSM\ntrUVfVJ7V9csH0R6qsuLIEzk6DUggCE4ggH0mSWht4a6pQWwJXNZhrC/LuxV\npuQVD6XLycDRTW7hsMWeB07/Keyn/91uwhHy5xfUt3vCt3krFfOYyuqCHVzD\n2JFyYlgyTxqtTB4OMQoKE3BQE1FcQaTznXDFKel1dWpamW4BVykl6UZLk4ML\n40OG+t346LJE/YLVTkJRpGDKXLrzbBgXyjN34l7sMhj2hmcqhR7Qtp7ijwhm\nMypA\r\n=bNyu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"dad7ea50b0927166a0b8fb5781f524a794bd0916","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.0","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.25_1596411136481_0.8372883885050251","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.26-renovate-non-major-e365199ceda807f15e482ae4b9d257430ead24e1":{"name":"@balena/jellyfish-sync","version":"0.0.26-renovate-non-major-e365199ceda807f15e482ae4b9d257430ead24e1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.26-renovate-non-major-e365199ceda807f15e482ae4b9d257430ead24e1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5e6abae7c4475a89add0f58c0aa7cc7c768fbae5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.26-renovate-non-major-e365199ceda807f15e482ae4b9d257430ead24e1.tgz","fileCount":27,"integrity":"sha512-jkcxuuw5CLMXoMhCjtbmx/0reqvRxcpAo+4enWHaKXdmnwcM1iqFIkzG9/unAaMMR/dI5cHU6kkZufiwfb0ZkQ==","signatures":[{"sig":"MEQCIFj1hLMnVZygknnu5lXtz1pCdZYRiIezlVm0KAMvNelmAiAgFWFBwNp+ro+ggEgJGs3NtnS+97WMKeiUXsCGcqm2dA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240152,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ7/lCRA9TVsSAnZWagAAF+EQAJ0P+XtT2Qtf9hoQgIuC\n1flPZARvPeoKl8U2nT4T4FFL2nCOtuQ9k3FNPCm2zZhpYcFp/d75IFAOlQOm\nj0EOL8eVZ6yBhCo4aj9ninEj7MyP+qTOWu3CdPKwRRRuhBOQk2xyeYZ4zWVk\nimQ3sqTC5e+IV0fAQD7E6arSUsiSWM2OMaGu0VKBYSm+wrx7XMEXncLgsAMx\nt18aLSPTvGu4GSctXCl9ALOWf8mvUdegouKPJrpshj9BtHAd2vTDHtGBMjYP\nrb6NyliygGHd+9NmBRhTG8j4brBhhGvT43k+BY1KgczkzPfHw665BrLgnzYZ\nQOeWkPYXsR3wAxdUeFfRpAmfq885U24EsO0kfBMM+nUlUjRReqKzLNfl5ajk\nhj+aJLyVXA+aq5re8PfCv6xBUhRFL3ER26MHixg4mZ3LS27YxDOv/hkbfZyq\nsjMKs8Eqr3k/ZaLmH5wjbNW/6sqoA/GFTPaa+fQuAjKK9M1PeqHW5qxHsuko\ndb3h4yTRwHLRwDYcRclWNqLjd0ipR4FmzImkoGL9AIrJ4KYuriY3MkYuKzzB\nCgknDXiYi42QyZYbiao2WCWDYl7HCJfZarY3qEX9HsPz5MmhLoS0Ew3w+0Lb\nszmJ96f9PJtNZhIRR4M6G6UuDYIuPp6xpT374T0yI5kqEQlSgXzV172ox7gd\nXIvy\r\n=15JE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"e365199ceda807f15e482ae4b9d257430ead24e1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.26-renovate-non-major-e365199ceda807f15e482ae4b9d257430ead24e1_1596440548752_0.1729199030292632","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.26-front-missing-arg-18d146a434d27980822c7642fca4836beaf5f35a":{"name":"@balena/jellyfish-sync","version":"0.0.26-front-missing-arg-18d146a434d27980822c7642fca4836beaf5f35a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.26-front-missing-arg-18d146a434d27980822c7642fca4836beaf5f35a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"606f1d698f29fa3a19affeb178b2f1b7971df84f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.26-front-missing-arg-18d146a434d27980822c7642fca4836beaf5f35a.tgz","fileCount":27,"integrity":"sha512-jaRXYgsFoU8Lkj0x/FhL+sU8ShzpgdQO1DoMj7LnImeHZ2zINjzOQFxbj/unWDt9f/n3clVaWoLpetH8dA9nQA==","signatures":[{"sig":"MEUCIBWRLe7yWWGgAc35oE4Kufcjytreeg0iBfeL8v48XpyzAiEAtA5GV0tO1F0bOZTH86gEdedEUxn8/g+a11GLtcCdOjs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ/TqCRA9TVsSAnZWagAAy2MP/R02dHVwO/1S6tA46zNU\nNeTiKB2OQ5mimv5c2CsVJpqA4EvHeIj4ST7BGrbXsKj8wUkYW7ZMoTF8sqXF\ndDbcmW2xMEkbF8z1exrRAFZXeUvBKZoY+U9e+ZRQTL+V03krUztGKt7RXjSG\nx/1hKSsmJb/Ipa5Woh/AdP3ZDk8Hxtk2hGwtxIe5YNoJzAe8C8t++7NP3Ypx\nLPSauaXpXwINRkRC5xyk7O4kh5Rj2xje4IfdSYLbcM0JfR9V3hOOEiGnE+Xu\nfOEaauaPFtEfc7BPkqfzVs2M66feAXaU3Xo8sLMWe9qeQRodNpN/d8VAWUh1\nCrHDqRX+f0RGHo2DJyVBvqB3lsU4oz2Z9k2paPxnAx+lS/G+jL3lwY5i63GZ\nFvB++rxvA/w9HrwFtYNynEQD1voBAt0JLIISUzxRucqfO/r1+NTA4I9Mmh1C\nhbDxtdWsOCBExf5RGncOq/led1odJD42bqdFe7nAFL6ArRthH8bptDO3Q2PL\n269P9PXKca/7Cgrdp6XbDlHq3zCWMAY/ED5KCvykJWi3PgElulXpTJvOwmem\n2EJ0KAAxPsx4ctcN0K4p2NXclEQXHW6P6SboVAB2yhjtAG7Vm/YLKozKuKFP\nx/yITCs0uShVBgGSTegp7JzFWY9iKOmlBD+mdpkf9qat27t5rp88vRygOGvl\nW3IW\r\n=PnJr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"18d146a434d27980822c7642fca4836beaf5f35a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.26-front-missing-arg-18d146a434d27980822c7642fca4836beaf5f35a_1596454121724_0.5849641408187491","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.26":{"name":"@balena/jellyfish-sync","version":"0.0.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"133cd750539e75e9c6ff10fa824f9d74185b9882","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.26.tgz","fileCount":27,"integrity":"sha512-fiGM0+cmtCDH9Ti5ZjmORIJdSDpQRIV5Evwh3pMEAiNN3ui87VIWxh5COYK3c2xi+Jm4kSBmbDlcYnxdoUfqnA==","signatures":[{"sig":"MEUCIQCl++Whv1MNNOzGvtG/hCzWLkhBj+GLuWadJeRMkX4n2AIgevBRdwffFYd8z5K+6iQRiW7iVr/GHPTABpTvzJB/p28=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKC1QCRA9TVsSAnZWagAAz0kP/1bspt+ZV/ePvC4FE3G1\nHji/CVSbJe6QD/cUvUr7HlsGyO9CCCfPa3lhRZVq/jXkxtf/0XMZrLEPFIRI\nBDn+ICFsY+6Z5Ja5o/N4AJy2jFw56ulzq9xcwKEnaJqw3zGjwab1u49RkPTr\nMD4xtG5sRGF0wwbrKT4If/vCfMFT2wduY/PaKNz+mnPeveHnGyYAnsa1iXAT\nWQHDS9Fd3djnzO0+aF73yWzar0N9EvcXGcjs0IwmOmSvMmN8+aWFAf7k2TEs\nvD5OHtyJ5GNQRBPV8qdgGiQK52RciF8H6vBscHyyCn2RNr74cWGxYO6mQJGN\nS2QPs+uUt5/6wE3Lgf8H/vc9XtbswFu6U8n01jmUvm0pYJrjVWHNuymNyCEc\nQzaZ96wIj6rDU1HUNMxAfpeMJuacCdgeuPl7EQJDIfcAXqPEDeZxi72iNy3I\nXJ191oRI60JpdhSfzTdj+BTw5UzyqaVwWx5AERLJ7haGYZOx/goPiLfcWbhy\nRWzAQk0HeQOdb6JoilK/qXKzvIHy3mSFi1xLqoxVVbIB/6fdW1i+7kYoiKjW\n2I8zi7JyIjGXs2aMPMhWo3N4ViSiIOk/sUfGtdlEhTcyaYjeC5hTL3W2Bob5\nMR6FpcgL35yk5I6T0UZ4odSZN3W4S2p89Cmr5KeVzr+W5xkZYvtnrreSuBS/\nHtUi\r\n=ZvN8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","gitHead":"a20633087bc7e4829ded8dfca184593ff9a608bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.0.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.1.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.26_1596468560368_0.5149948291243496","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.27-renovate-non-major-4d4c892392806df01bce0ea6ce3069cee5a242bf":{"name":"@balena/jellyfish-sync","version":"0.0.27-renovate-non-major-4d4c892392806df01bce0ea6ce3069cee5a242bf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.27-renovate-non-major-4d4c892392806df01bce0ea6ce3069cee5a242bf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d3a182a756ec3d40dfc16651b2fd667821a03aa3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.27-renovate-non-major-4d4c892392806df01bce0ea6ce3069cee5a242bf.tgz","fileCount":27,"integrity":"sha512-mGVUScVM1udHj4dFwXFqgZKNkoQVVhKcFUruuCNSETtSJkLIbEMjJP5AvtoDrZbGGLr5MBapgsIfPwhwRK7N+g==","signatures":[{"sig":"MEUCIQCwhACtq14J3tjPFgmgYAKSY07cUFQKq/15wQ7o2/uwZQIgJutRt8iWTO1O6Ws5hlxiKrFO48ojAXg21NsfBXgvIjc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKQCdCRA9TVsSAnZWagAArncP/iN1V3YXlz5uiUhWST9D\nFlN4GUxEEI7PqroZDhHUdXrGqTHrEPK8vZNtM46PEduvAzguAiqaM3p8DP2a\nmxjHrlihBJTXotXdUikgI7vSKFBUCbC3c/Vl5SuMfGGVIX4GRFIvvAMQoC53\nzN6AE8gJxe6o8mTjJOHVt+lwVtw1vERrqNnBfUkqtEExUVnxgG1Xwv7R+cKg\nfH7an6GYj9ikz/0YV76BbCyHY2gzkPZzn2wUxSgxzyamrulzNeAoGbZ05s7x\nVOTbFQAEkGwBQEQmcm9qgp5Gaxuc1GxlhYbl6Pd6Bip0I2rMyJ7BvS2Purbo\nu/XRIYITnaB88dabCIJTbrCSHt54quKohIxr7xLd6eUEVCEqpR5/H0SsExCE\nnakg5njFAJd5yzK7qxa0CSBDILcruyYOtuD7IJacA/hB8AsOhvjskymIK66Z\n7cDhdmIla5Dzk5q9/UMIel74BipMsn+eafORcrt2C41XkF3p445r/ZTNbftS\nvLqvuvd0m+oQIRYsUiN+PwSlE62zyOMhSUltjINOynN1NCEihw/VZEa+n91C\nPXPJ7XVwkhCY9b1cEOy8MPSAm+vc23wEprXw3rZKKGRl5AUyNEDmzNY0Qn4E\nrq1+EQ0CXS1IjBObE5frQY20M2My8ggMxqUhF57iEf/wZgmafeGu4x55jInq\n4SMF\r\n=hyYH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"4d4c892392806df01bce0ea6ce3069cee5a242bf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.27-renovate-non-major-4d4c892392806df01bce0ea6ce3069cee5a242bf_1596522653517_0.11532030994680564","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.27-renovate-non-major-3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d":{"name":"@balena/jellyfish-sync","version":"0.0.27-renovate-non-major-3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.27-renovate-non-major-3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fbe1703c792a860e1c9626d9dccd687cfb921d4c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.27-renovate-non-major-3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d.tgz","fileCount":27,"integrity":"sha512-M6GnRdwvpBEpoRV8qNnqV0+JkuVcNfvAIIW6UDZRqsAcFsaSLQnwA3gnDk3IigVtWpDAOHbwtwDWOYXcV1sHeg==","signatures":[{"sig":"MEQCIEH6LugF9ulY3xLPBG2efi8yOa7Y/eRAZoxHPT/Oh0F4AiAeq2Pv0b9jmzh4S2dp3PotqZ9d99Go6QP/K9mPnvxENg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKgncCRA9TVsSAnZWagAA4t8P/jjhce9TlbQyEVnL/1FQ\nxV5xwVxyHW6JRMfi1uV8zXFn6ZiVLL7yzJwhrCd7UKam955/+oq+xosYUPEs\nHHJNuQPqsh6260jWUnLOWx3aNXo6BImT/BPXScG8Fx5lBtp7OsKmDwlYd5ek\nuepzMNkVBecfAV3efgL0iiyZ+UW5cwCAllW199kccArhE5Icqid4LW/zewpB\nXp1FuBVnQhj8QYU12gGZJqEOub8nPkWrUiui0ZuTGQPZ+SxAB80mvgkzuQDz\nXvdDrNDqNHLtziFKnctZhZSMOdK0n1SIcDjHCq98T1WH3YC6Vl02Tgn9qfID\nH6W3unnb05Nkyyq006rgz1q89xrjAp4N0U5tCZdm2ckqHr4uR3h8+e3fMA4E\nMAu8QquzNKgWxiaZIa0JTSDUGZNfoueyruRllfk0/BOKsQAp4pKW6JCcSUTs\nP4k0YkJD2DlQZK/yLDhQlidkb9SqetxNfdIgVM6E7gyLqvOEPJ3LQEoPBDpk\n82xMsOcQg+db1FCmSAsOqfY8SXoVdHoJMIfERCwIUPblgkmQc7h/QYfPhukv\nvK6yE7RMoNHyQtZ9YvQFeMKFBTO9lGml3GdxsoDeca3urUsQ+WpAGQ5hHDLa\nOMhh7PUBNGHb2ZlpCXYDxwbfEuKHi9W7QCn8USlV+vO8fAYSrjZsZdSKs/un\nIRkf\r\n=jv3+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.27-renovate-non-major-3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d_1596590556344_0.25819644942747666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.27-renovate-non-major-ba367516554aec12af8d51c278c82c922000b6cf":{"name":"@balena/jellyfish-sync","version":"0.0.27-renovate-non-major-ba367516554aec12af8d51c278c82c922000b6cf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.27-renovate-non-major-ba367516554aec12af8d51c278c82c922000b6cf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a4d00a98da8790eae77541401236216cd57a8ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.27-renovate-non-major-ba367516554aec12af8d51c278c82c922000b6cf.tgz","fileCount":27,"integrity":"sha512-TBW2X9l76b9Fbixi5OujT4iyVrQrCgE7dh1jsmLs/E2kKtUl3KdKcq1pqZNTz6h6U8ZVUl+WpPXbUwY0iX2gog==","signatures":[{"sig":"MEUCIGRZFb7uQoho6MxyBY/xMHlb+BUJerY/ykThT2rVAMmcAiEA1WUbkFQwDfoDHSRAa4KbeStyvg08SgGD3MCI7ZUFPm8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKjp6CRA9TVsSAnZWagAAajUP/jrwE4f5IkUoaaWhubS4\n8Kzxk2YzDQK+m3yO/0TlWkTESYJec1DOHJkFttC1zq3WUVD6i1toD0D5z6Pb\neci3A7GSbHqc2Eo5I6csH+6ONeO6A9mJUSd5ZgBXMbYOErLjqf+p5eyGvk3O\nq1+uaMXnWYz8zUeBV9+MDlx+WfrzvZl5rz4IcIl4/Tvser/n42pLynbmDzYD\n+BqRULKXUqZV5oHXVgjUMzdX7d9YSmLrASGH3xIMgUIrJiX7wfy8Yx4KsJOF\nMoXkDhcoX02ZSpms83X3unuvhu9hQfy/h/YUkczYIyK+F95FsXgfP7LS7uEE\ndzpFf0ziLgLz1PAvlp+IPbnJhRzh92RhJDT1ntYnoQGpsw+8TG1M9ujuF2j6\nrjCmoHXKBCz9nRSXR+Hdi/4KlurmYZBKnqbuNXOVGYdNZjMaPTZ++oapo5Qz\n5Kz01Cpyxe/iH/l+KChdNLGGYkmpP31iYzCAP6EyIIuEcRjHJP3D3/GAoblt\nBIKgv9C84GxNAF9XHM/lw85iSCqxJKNOQ4LU/0Up3N74yHUrLAaVr8rQvbfv\nAtZsZOX2Eazou1L+Ct55HbF5c0B8NF7oXTXAGdqMH2qmc+zWILJoQnSOQjeK\nogYXBClq7hofR318oJ+D5qmcvbhgEsrQHBA9QBurfU02cVp24kXg20kCeUow\nnuBp\r\n=Y+Cf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"ba367516554aec12af8d51c278c82c922000b6cf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.27-renovate-non-major-ba367516554aec12af8d51c278c82c922000b6cf_1596603001972_0.8952542605263714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.27-increase-linting-5a5fbd97b7dce99c728b3506b8761038c22e3eab":{"name":"@balena/jellyfish-sync","version":"0.0.27-increase-linting-5a5fbd97b7dce99c728b3506b8761038c22e3eab","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.27-increase-linting-5a5fbd97b7dce99c728b3506b8761038c22e3eab","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4ad8f95bad8c5902364c1ca65fa91aeabfd496e3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.27-increase-linting-5a5fbd97b7dce99c728b3506b8761038c22e3eab.tgz","fileCount":30,"integrity":"sha512-1MBT9BTByh4us0mrlNdF57vo2rTOxZUn6BnUoPdhA8vNkdce9HqU0kDeQVS2NZD/LY7NrE/agpzc96+DSjsh2A==","signatures":[{"sig":"MEQCIHdGT+67WgsGceuhyTwc3AxpRBZ/s+pwYuw+ltani3S/AiATuTJ0FL/8pplhzqM4rPKT/ktxsMs2/P6J2EPknYXKCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKjq3CRA9TVsSAnZWagAA9lUQAJBLv+LJ8mXoKLUh4S5E\nQWFZfzrw4oDbrxK022z6CgbxctPjA/bdtTI+0sARoBn0I7V1FF1usKHDyLUA\ngF3mO9vi1Z6y+Nll2cd+MOdJYcS9DhWXpUhFjgTwVgzuSruR7YnQ5KMec2ja\nUa2MnIodDeKjjPU29gfqYTt9X3GfQIRUaH5+fty0snCXUh1Yiq3lNDYGdFsy\nU1sY/7CcrW0ur0C26AW72m18ImLn156eXR/VpjnurnA0yAfO6XwSV+E+ZjXq\nJN8Vnq218kpDfN9y/WsefXJbFrFl53m5Cq+/cMShJc6sgJ9/zwh9BkIm+E/H\nBdhv5AlscIRosDTpbOmfcfCjkiI9bGWOUWGYRrr/qPoF6eR3D+XhMaRnsTLO\nFesj8AAM6bWJWVdIBYJsvkNxpL7B23XiMhliqSL/hHoll1VT6EAU6gMZJnit\nNkB2XJ+69I+UCZdglzIW+uvaGIUKX7KABhtuHo6JhMNiqlcDZsjNB8u2CtxD\nIXJDCh/WouZFgGxAsofKxIrwzrcy+GI7TRaWqQUKzU3mbWtqNItVvHuyKJQI\n4ggjEzl4EiubJGBsIVmRZ74E9Q60oFFclGSGIa+PT19Kvbik/VlQE6olF/8J\nbm369nrLx73COUNEgCoQb7rxOzUTK4ZY1/x1IzoYZNPcOrK/oTEyue54pZrj\nLqdo\r\n=2CwH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"5a5fbd97b7dce99c728b3506b8761038c22e3eab","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.27-increase-linting-5a5fbd97b7dce99c728b3506b8761038c22e3eab_1596603063200_0.16134410664892007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.27-renovate-non-major-8f64f90a1c798d15eb009104e81cf983063359e4":{"name":"@balena/jellyfish-sync","version":"0.0.27-renovate-non-major-8f64f90a1c798d15eb009104e81cf983063359e4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.27-renovate-non-major-8f64f90a1c798d15eb009104e81cf983063359e4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"178b25111f749bf0a21873b297b5ab5b10f57e50","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.27-renovate-non-major-8f64f90a1c798d15eb009104e81cf983063359e4.tgz","fileCount":27,"integrity":"sha512-9EM6ZpFJEspnTh/KbTTvs5wDAOKiF/13voU1xylxavo1Sosvs3cmE4K+fXlJEN3UHfyHPUPWsNZEd8YYN5haMQ==","signatures":[{"sig":"MEUCIGTuhZKlxla0y32VvwTORd5obRULm9rvgiWRjLNCxa39AiEAqHXP4yMdKtKrRSknClRXcE1ldSllIj9UD6gOaVCRwrY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":240416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKjtsCRA9TVsSAnZWagAAnrkP/iPmWgUX2fst8fPTo8to\nN4q8dn2sJRd8yHPjW3nOoj13nAh+gsdyDezGzFtDgiv8lrKAuDfXb+OeTz2d\nESdWTcZhrJneYZg/vVGI8MT162zsKZMoMdo32pawByzMfH1/c96DT6CG3bxN\njOCtzGIdnqo/nUcm3ryxj5VEN65vCECQO0eP0ozILRP/mXkIVaLyH9Hidash\nyNSni7R3uEKHiOmmAy/KfsQEFP99x1XXnaMTjXvADtQFrOdIHHE9VCPwJ7lb\n4TOlS2Xm/pHGrdRquxdhvDU338Se8nW6A3JvTOxyWl9q+C4rSbB8c9OxR3ZR\n8FYCTeR79BGGmYXW3d5jGP2HBiJC1Mr+JuSoG0L9WjjSOvEL/3yCaK2p1JmA\nVxBacQeqpYOZN2a15hNqYuW9/6KZ8yh0gGirSqqrdDJbtNG8ZRcSWNcXt1bU\nPN92PXIzSzmcRUjLlu9fsl0KQWcKEIdeCEOb66tZHKuvBMj4YDrRnAbT21jl\nyOkuicd9G8MXwLmWKdOxfwJ1pEs48He4Na5CW0JXmPS2udjdaV/DKLrs7IQh\nfM1vRVpxsRe0YhY6fG2h+WWJp0vFVVrCRyxbWgx8Gg5NUBkoPSiMTVBX24DT\nagQDgFlhzeN70UKz6ZesX9xNbrd1NY7A8ey0ZeAIe3lznqbYKeD2NwX+77F9\nPepA\r\n=2aew\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","gitHead":"8f64f90a1c798d15eb009104e81cf983063359e4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","lint":"eslint lib","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"ava -v"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"crypto":"^1.0.1","json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.27-renovate-non-major-8f64f90a1c798d15eb009104e81cf983063359e4_1596603243728_0.5248585480071848","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.27":{"name":"@balena/jellyfish-sync","version":"0.0.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"40593dd2b0098b5e8da64432abe2697803b7f36f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.27.tgz","fileCount":30,"integrity":"sha512-1lcnrPHmd1+lhijqv4EDssUg1O0NVGfgF+EHmS1JyuhKl6PUaRanbD7N7CLhiHhXBEX9jnizJIjFhHVnAmvOWQ==","signatures":[{"sig":"MEUCIQCiVWL0pvGsUBJByS8pWzzO73nHuVlBU/giyrdhX/8duwIgWMio0JZsyUauYDtv6WIAswnv0MPU9gSL2pr8hu763bU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKjv4CRA9TVsSAnZWagAA3PYP/jai9AYey4+cxIJCzQin\nzzRqs7us9fBfazgP+4bu8xWnqrqAAaF+Ky+doxBAnfrOpc5uvmVeaIZYzkj1\ng3Ol0srt4+1CfsVgd8YSTruGxG9WJUf09XkwNH1J+qqtDWeCWKFPR309vgKd\nsp/Ydpdw2MYjY8Wh31ismCfIu/3vMddrgAt5DwufSr9MVnwiT7XnIbu+6SEg\ng/qVkw1QMqHlVLUNlcbIWLfH1ZCDGFcRkaJcN4jlOmlwEW81+e6FnliwlkzZ\nPLSGEezS+5taEZMHVAOn3aQDc+pUxbXI6S42M/pvbEvaF2r/jhI4MJwT5t4l\ncSRqtM9D6Ng40joEgZ9BDV2lesbTUF31XupwYmgbqvNKNy8SrwB+aNjTwnZv\neiCMH0NbEXsWE4cddMLbEBMoZGt90UZ4jsIA/OszAYjMSzrqPwJyat9vy5Oc\nI0vBaTayhFHib0emHlxLtpHnwoIIZQvF5gP28ezzfAbsubi5uyS46gbIzyJJ\nAqVlZ5SCh5A577NIZflMPYHSepv0SrgRnsWBAUKB1KK6A/IuqmRAgxsOLlXH\noVbm3otpr2OGcVRIp49EcUc6jsa+AXIOjqgfP2KlNh84/sxaFCpFpgLVA5sC\nFrSTgKYq5SNkj4SN2QbTHxJrzpAsVMC8oskEEg97uW4tbknPYzGwICdb5lXa\nccpv\r\n=w09B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e4b6c4dcf4abdee386d5edd3cdfdbe78188f3de3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.27_1596603384451_0.3959866806684009","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-c775c3b195e982e9e30dd5251f78e6a85e0129f6":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-c775c3b195e982e9e30dd5251f78e6a85e0129f6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-c775c3b195e982e9e30dd5251f78e6a85e0129f6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"887506d67b940c54f1838df4a0eb5077da5cea92","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-c775c3b195e982e9e30dd5251f78e6a85e0129f6.tgz","fileCount":30,"integrity":"sha512-HnxeynzS1pK2ShG/Xn3GI/82G5TVYul+X+/3ZZjh4QGc9M3kJv7Q0jP5MPm9HeCOyIGu5jvL2rpf+irfHjnnBQ==","signatures":[{"sig":"MEUCIFpUxAZUFyJnkhkd+CDvCvqTdFRe7zZr1LaHMJfJ+DceAiEAr+Oi5xkpA+bU1faZIvZ/RBeTRWYGOBVEsewGWux3GuQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKjyYCRA9TVsSAnZWagAAOa0P/34hjimH6wMKTTJKv8z7\naHOhs7B7b5ckjW+IZXilkuR+AmcW0QnqR1EaajZ6cp5fgAavuIa7W3rg5f0P\n94KEEtGJAWoXp44WM0geDTiqa5vXVDlAno1wbdrSahh2hi1N5ZxZ38+M50W7\nsFJs9qsDYR/IyGtYt/MjDMeL6PiGvl6Kp9JiEf0Wd+UqNAivlwUtckz8klV9\nE8bLfgVzsK4aJdWU/ufOqQz4ct+qnMqbddYb38cfdCAlQjQjCxlzNipLoX3h\n+E0yglhuASAdlsyurcJ6D7BbR5f0dU5VL9hpyDbG3unlI1kWQ55mUPFH329e\nGJhoCRmfslrtmL8ArjqKpjUTJesgL8wKsjgXvIZ7q1njRRktYvpceDCC2zqi\ntl2rTag5uVIC2/6R42DxCOrBvVeEBE1bSBHPaVwddxT53GZCeJ4dwp78pAWp\nMa+H69oeU7FgrrDr+DfDeg0LqB4dqz5TFLwpk1xtkvFCOIcNqt2mJl8niG5y\nOKRQ/zrMyUKwJ2qKjLSX4Gk0JPXPExoFt73+9wfML95ru7X5ZtM9K5Gizq8F\nI25yuCmRilzazLDJcB64UV3Y0mrZtm79StQzvonTlN2uVUOPnaVht4kl3z2B\nD8XfiDk0TPtuMUna4emjH5dkZTLiJcK028Xe/2xCSDtTxOjT98l4L7mrNSdk\nBspO\r\n=Vyeb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c775c3b195e982e9e30dd5251f78e6a85e0129f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-c775c3b195e982e9e30dd5251f78e6a85e0129f6_1596603544212_0.36511201874097443","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-github-orgs-3345307ee6520e31cd47a5856d3df6596392895d":{"name":"@balena/jellyfish-sync","version":"0.0.28-github-orgs-3345307ee6520e31cd47a5856d3df6596392895d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-github-orgs-3345307ee6520e31cd47a5856d3df6596392895d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d8286306d6fa22a5dfb5698f3f44344bebb65f4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-github-orgs-3345307ee6520e31cd47a5856d3df6596392895d.tgz","fileCount":30,"integrity":"sha512-OWAckhfiBTquDEsnTpjtBce0w+Jl+rnJO/n/0+vajzUwczJpeh6X/vOsJWCx03Z2RjkgAhhsuKtPFEjL2bvrow==","signatures":[{"sig":"MEUCIQCo+NLxu/c+rjFBKk0m6CEiiqyCL8QST2kfqAZuGWjyMwIgAwmuqxtiYVZ7698zAS6osAbdtzIPMXtamEh7YUeb2Ns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247191,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKj1QCRA9TVsSAnZWagAA5QgP/iRCdZ6jGoNPd6PRWKMK\n5eM5tHAOVfkl6/OAaiTUljVNprDO1tRg1EcHMk0f5zJzdus50Nyovm71nUZH\nNz2SCvKv55L8diRkBt58/KLCSOUjq61wHOmllsH/CXTEYk2A0dpGs/TyGNhg\nXaL77/z3sMuUXF3KCRxgvQYhoI+upAEI1cIjyNLJI3JYtRN1rnElYhfb7u7O\nwqD9giJ6MAEPSw3lsypyZSSHpPJJPMNNKiBkTP0WR4+ic9+cXiHKmsTPrxRw\npph7JJhoRSiYLmjyAHORnsUXJzYUxdQw0Wz/4Hoc+qWDkNLpEqywwsF6RaeM\nJKq3Lrkp30De47cVzc4BE8HaZjzd6BX/Ijw/20qJdw5Eu9a7A2WqchXs6hYE\nTAnoxlOdAscRm34C7PaYQ6/XsJCHPHYU2ReR22j4kwy7V/GC8HBi2u2smcGn\npzGWiph35sj2MUQe1MeNM3GbETgXITa6a9JqkRPqfUPD1mI13BYBPR+Mvm3y\nFEBNcHTmPoLdYZGuXQTkEwjc/R3FseUCMxldLrtRdo2Awa8trb2z3t03p8V7\n4AWJrPXuj/0yTNRpXN6S/INebq6zFADqrByLnAUyi9+b8Q2uS49t4AAfdC54\niURpb9zgnOxLRRfA+hkpFCzzUpDNidCibvAaYNUoqtzknyJkrFCvCqqnOqNu\nbVeu\r\n=ALvH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"3345307ee6520e31cd47a5856d3df6596392895d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.21","@balena/jellyfish-assert":"^0.0.20","@balena/jellyfish-metrics":"^0.0.23","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-github-orgs-3345307ee6520e31cd47a5856d3df6596392895d_1596603728474_0.8929580108643054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-b6930981da962fe787a27b4b5f8984de9b101d0c":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-b6930981da962fe787a27b4b5f8984de9b101d0c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-b6930981da962fe787a27b4b5f8984de9b101d0c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"601326f0aff4e14fa33f0d4a2a6246d8d0551640","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-b6930981da962fe787a27b4b5f8984de9b101d0c.tgz","fileCount":30,"integrity":"sha512-bD9T/CLkCbmyXNg5REXW2nMJO3w19x3usAyH0MKwGDj6BztoFp0mBIC6YsRFjTrRFLQ1E61upYHVOHBxm1WUHw==","signatures":[{"sig":"MEYCIQCjZwBIqvaeN4w8U40KhhbggpEk8HaUNdi00xGcBjT8gwIhAJ0nbEhfK4C+KTPw0108Jw/UuFkfyUt7/5Z3QmT25HSa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKj4kCRA9TVsSAnZWagAALggP/1MpRTuIsmWOnzwb5jqK\nLWw0OsDTAexQXKhZjiqcOu/ZhPQEUZm7zr1kd+jzuu1kX8kJ/N8Rievgel84\ns1qsWzDi6BKBLYKBK8Od3V0qxOVigpmFdqGgtXUl2RPH7mwfs4oZ4E6CRekJ\nkDimfi/gGyoMjBDKwLlJlHRa8LT+XHQ2cyW6m7mzCgbTDRyQY9nXJNYGOZd0\nZi5DUAk+M1reRcM1Z619H0qB1vBtlPs1Fs55KfIqXqvod9o9gtECx79tFoSo\neMzHoMVZUMGKbthvI6mAEKm75TLLTmFW6ObnnvvLpoM+hVoeRRKz9XbuB8cY\nwEfuKhTB/kLh6SFO0emjWxjIvXAI+v64bdZQxMsVnI8nIJyyjHB73v2TN7sT\n4GThmFmqWnVVC5JcrKgP/k+MhXP/xUX7SUlMjBmmaACBF4X07mmY8lzT24vy\n7wPynXU4cMsR00ZIPrEfVq0AI4Dos6lHJPp1ut+WzlSlZSv8BDEwX/jejt6K\nSIKOP6qiqXy3wv2e1V972iIaiT3HwmNU6U+/cXP4gNtl6Dx8ldUTY9X+Q4B0\nLKzny0lecrKTF3rs8wHk7zGSjmPNQGETD4UtKvjQgzAOvxWzI0GPMABHFf6h\nX1166Dbd3ebZzA51LQoLmwXWBufl/tltHgiWTDd+Sc04/UHKSCtLDeRwJ18I\nbHap\r\n=iCXn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b6930981da962fe787a27b4b5f8984de9b101d0c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.11","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-b6930981da962fe787a27b4b5f8984de9b101d0c_1596603939968_0.22845900843560862","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-8dda18ef6bb179e6dd8f369af944aaf0e159356e":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-8dda18ef6bb179e6dd8f369af944aaf0e159356e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-8dda18ef6bb179e6dd8f369af944aaf0e159356e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"018f1bd6b9c229a12172a7435e01bea5bd73479c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-8dda18ef6bb179e6dd8f369af944aaf0e159356e.tgz","fileCount":30,"integrity":"sha512-o7+saFAajTh0RbymWY/y/FbIC58ycGqiIvVdBeYfzYSaUeum0RKM2dM6z/ViMefMQl4tq4hg68pikWhJiGAEfw==","signatures":[{"sig":"MEYCIQCkAJNrz8VAFknBsRdYNw79Q26JhKLziBVWxqbZXLDtIgIhAMooSeEfIZ/STkCbAxYrkkunqTxLFXsCt+2IFZ1IYjku","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfKzEtCRA9TVsSAnZWagAAAqMP/RwkX5c3JRZ3pdUEBiID\nkeKk0vovfdAIFC8jgkfhWakFKHknFOGiTJzZHDcOj3ebXoK65fZ6EtTcooyc\nHJs5D6H2Fze/hI8XUWlEjQC0hlsYOF2UhgpH+cQD8HCqggexjXHRehV6GDB8\nM3RgNJd5yq3blRPIIXwKJB6FHbVfvQ7K6CqiwJHbheigSj2sIhXeloBf60Ds\nuiXn3PFDVhoNmtB3uz8+vPZGxhIK1OA0PbetTsGnCvXJsr6QgnzsF+uIw0n0\nGy1fygrYC9y+34TMhzDTkhzA3GKwc6Ag6jmVZSiLSAUfrzn3JMxugkNi9mSi\njS6/3iFPo3Yk6qXf4jWHfrO2SJwbyz6s0IhwyHErEZT7SvB1bRWdq1GHUnQu\nYKwB6O/Sxkn8zfUDXnAgR9CxArLAwdFglm487OCkdOuBqi7HjUO9RTFeYUf8\nZbE9hfqC7+CyaCc2MJmHpV16nLwC93Q1+c2xBP2c35Yb7biSDElh3VzGHZxo\ntyMIEYAKlWaDAsvgw0uEsvmpxMUTMWR3ikTmb+jyAiZmq+mKmbk19lyF7FI2\niuXnn4WkmlCrmJvXT5JzfZbaOEQe6s407WJ4qHAJNdcHjlRlQ7IVMb5O+uYb\nRBnVPOlxzVU4/hapg8Rtq5jdUG98U+Qsc5UD7QbFC0AmcHM9VLK7S9pJzmtM\n8CBS\r\n=WG46\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8dda18ef6bb179e6dd8f369af944aaf0e159356e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.12","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-8dda18ef6bb179e6dd8f369af944aaf0e159356e_1596666157065_0.6932093150898324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fdcc1d53091099f126b038347676d766fe798a87","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7.tgz","fileCount":30,"integrity":"sha512-dsu+f5zwX2gziiepWJq4rPaxiph7tdp5CrLA2VoGkJpcwBj/ocj6TwTG0TKH+VUZBJAUDP4KQDV2f8uDjTbDOQ==","signatures":[{"sig":"MEYCIQD/mPKOkjVY1ySdZVMI2w0toBZ7FMxXoI34AR1qBXjf6QIhANz8P63VXxieLIsOWC0VSPmdIKNCBs/I/e9AxzwcBS1m","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfK53CCRA9TVsSAnZWagAA74AQAI3N7zH9hplDVK11o0K5\nz8u8F+H7c+1Mi4uK6U6vmTEBvuVdzp0Jba9CFLdGNX4Zyd/U1ewF5pSDlxT0\nf+bjh6uWgDUj9iqvt8x0hlsdpYx9cltRpzQufbzekX0ZrDu51lbiFWTV++sv\ncIMJUbNcm3g5hgZgCVp7zzvXqnplSLbMM2T4aEUzh+zBJ8mf1nY7jOa71BIv\n1oCJvcJjcJNzvBGJFnQfN5RXUn6tKnKfSCjArQ6la2Xgd+CHSEuz6kQxSf6M\nEfxlwX5vcMNQbZwIUE8jx7Ac1TWeLJ39oOWnOpGFEC5ZRHlML1JaC2ti3NRY\nA0GkiCPOlbpu8JAe5pE6ESAYIH43blfNvR2zwQxXt1zWE07kM6Iz6ujGq9yN\n2DiY1+s+CG6ALKrgri2IfPLEU9n64mpi52DbtmnHj3qnR/k72yJlUmPEjHM0\nvIucw7tprZhIAbERn+Fxq4oYpGxhOgav/0nakOoePI2aYC4QCGpHkNh+QCD+\n3CprS1mWabYNrPsTnSWhxsRbKCA0GRXzT851wIzYchRD/8nwS50WbIzZFQzO\nV0MmfVjoRgeaOcx1r67WyvQUng9u4kV3g8KdNaJUP80/IgOvWY+tiKpMRbws\n4Cd0w4gyFnY+j73MbfCaU+3Gwu1QMli/YPNvNewYx+HQeejP3C2Tp8+6G/uL\nz4Yz\r\n=PKQg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.13","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7_1596693954295_0.7995540593110588","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-631eec3b9eec4f36fa3442ccd3c55ab2aca405ca":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-631eec3b9eec4f36fa3442ccd3c55ab2aca405ca","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-631eec3b9eec4f36fa3442ccd3c55ab2aca405ca","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5689bf5d2a3ad8255c631eadf3f561e15bbf7179","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-631eec3b9eec4f36fa3442ccd3c55ab2aca405ca.tgz","fileCount":30,"integrity":"sha512-bpmdtCFVOa/CbHN+AXI7b9EdaDL3/RJJ/s1Gy4juP1bBHki70qrCInfIQw4IQKoHkm2RG7MGzh+9lT2OJOtL/w==","signatures":[{"sig":"MEQCIEm73gMrvMc/3g9oTYYPwIWbFtOG/b3KurYeRbTbjsE/AiAW4yUdzGL/kDlZeSUy+rEWvhlg3BT6fjzEDKMKGToLpw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLYvcCRA9TVsSAnZWagAA0qkQAJs9j+GnzcuTS+h9fWA3\nN1XG1o83gpkzaJpZKeBWfkC43G+Q/iJgeVDithWmAeC00soy0vFYJm45Ml1E\nO9LSqqmlajxAOnM2bNWSBiOqnXwjicoWjabHXySzva0NezCm5txQMWQQlFaQ\nSGMWsSOUBkr38MPDrRWXOrMbdE6rk/Zg0E6jUNA0c4GiNRAObj4ESyE2FYdx\nHlOaBbRnfHnOs5imzQIyIHKcIvdWJstt9EfTtk3cgjjcDIJeiMdUwWpsjXss\nyG2t4XESZR+zu1kh3lXSzZP6Iedk9sR5P1tAEk9PqSfo5X42kzLTq2r8vbVG\nLT6lTrj17I7dTJP3uWaVv1Hnl4SoP72+j5vmNrHJcQ7h4Npgo9GgEzPPalc/\n90GTe0w89JObmM9IZhCM+njMAB6pZMHytnAAEAYGzvt0BDQ2nAlCv24gtscX\nfIHDFgUe7es48f9ksFJJf4EVuLbbn5hXnDbNjJDfNMR8DOOdQ5NPJt9FMQ7F\nED1D0hGhaV1NkvgXDZttaescWx1Zbc2vO8MOhJkxG3cHx1+iqResHQd3F26o\nifWZyEtv8InsZ7lETyQEBUv0eYZ4xucVqEsR8OnGOtafPUnibAWMTatv+Urz\nTxMw07w1NCP7Y6u5tQNaqn9PwYnqlCV3IC2y/WKwpSE+d/9LsaLs/gtpgy6t\n+W+a\r\n=qbSB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"631eec3b9eec4f36fa3442ccd3c55ab2aca405ca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-631eec3b9eec4f36fa3442ccd3c55ab2aca405ca_1596820443521_0.6590797670812258","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-381a2384642ad58d4920a965c8db6f5f2c4b0721":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-381a2384642ad58d4920a965c8db6f5f2c4b0721","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-381a2384642ad58d4920a965c8db6f5f2c4b0721","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fcee1d4f0805e3a6b305c1b571d4fe989f449668","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-381a2384642ad58d4920a965c8db6f5f2c4b0721.tgz","fileCount":30,"integrity":"sha512-s/F1a4NSviU4eFCmMbhCz8jGLr+fDnBc1TsbEdYsRdhI8mcyyF0Khrqzz/Fpxcwvt1B761KaYi5h7eUZsCCdWg==","signatures":[{"sig":"MEUCIDs/2mFzo+lMRJ+zFhalLPiNe5wEVvt+JPKjxOBNFqWvAiEA5Jd8+6rLFdWyWXPPWLlui4UoY3tmgPMnycKMEU4nHu4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMCW4CRA9TVsSAnZWagAAKOIP/RvYBcVCcNj00iWVwaFM\naW2PvXt9vGVT6TbjY1KhKCtqyeF2TnH368UQcRFS4TDc5NTL1g3tFSNmrkaQ\na4oXlPylCeUM9IJxaNQX4jLShQbZla9m5/cM2FALrZQq0cCnZR9u2ve2x1+A\nuAJ8bTuWVVQFjS45pZZPgtLEXFPDkzZX7x+PSNyaWt/jYx5u7JUhuhDwGtcf\n5WqaZFzKxahiT6GLZGGpURH25O6e2V5GFj0ZURz/CKFDHosh7hM9tY/4LcL8\n1Z6A7yclWXDgvxAP/+fGzvk2ocCuzgT/DoAuBsljFS/FtiMHK6BuhuC+qNWB\nuuR+6d6t9/5OrZiCPist/x7h4XA5fGIBnHlZFl+vQPaQxBs8jJ01fK4jwhia\nTHJ5KrP5uhgs1gCZXygcoIlepJz/C13BvkdoFIRFpr9FFSNsWLs6PDr44AFQ\n8GXMWkS8etNvG/fKp4XsaREuNifKpj1FapWiRm+JhjsxL6I+GkaBI5oksoqp\nlBMVrc2gtezEhJ8ZDGRgqXx0E1IGTuuT5emJLx9WtcUzVP64XagQAvevnb9a\noGiqqGvBYtq92Aj7dTGdSzBUMbGau0d0yFCjLyHAHmeGM66yULGUeccZTa/L\nfSALyI3SRhzHweXMJ21fP0tnaNEC7Im8QY5fbUzZx/++YkNT+aGCAKrwHXi5\nQLJW\r\n=zsWG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"381a2384642ad58d4920a965c8db6f5f2c4b0721","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.3","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-381a2384642ad58d4920a965c8db6f5f2c4b0721_1596990904005_0.3437106513533674","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28-renovate-non-major-69dc21f8628571995f7efcca5030a976af940bf1":{"name":"@balena/jellyfish-sync","version":"0.0.28-renovate-non-major-69dc21f8628571995f7efcca5030a976af940bf1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28-renovate-non-major-69dc21f8628571995f7efcca5030a976af940bf1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"18496feb59cd9e2d584ddd738d2dd3f1d7d6658e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28-renovate-non-major-69dc21f8628571995f7efcca5030a976af940bf1.tgz","fileCount":30,"integrity":"sha512-ykRtQSMaajnej7f1/oC+FeDRKlxH7VCo5AEt9UXZhQKxg7fsSOUkOUayxBkyNMqrGuBGMvixX09GorpB4RyQLQ==","signatures":[{"sig":"MEUCIB1jBdXNj/Gg9lPZMx6FuMgoZKaApxTcmCIDg9hfDWILAiEA5ao8iMZjCslJIc04ADpXDTPn5LHY1z2DD758rNL0MAQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMuFbCRA9TVsSAnZWagAAlCgP/3Yd/wO59J/e41+ADyx6\n1B7PtKpt4jZeP3oLxwUCwa8+2FH8o1PAO1dadwhMZhh/wG0fuGsOm4wF1qlm\n3m7E32J11Bdn7MJav4eFxRKL/LRCEi5cSJOsIRnUC22W8Ek7znRlD4TXjBmx\nda+R/A+hAGD+1Jjecuj//ZqXwxjVwPjn5NHI/NhfUtg2JytGPOm/TGqc3UOp\nNu3BaKUUQ0nPgA4uCfBrUPVbs37hmZSke/Xow0xXL/sIObMQeoCeqCvp2FF6\nNE6pa2wBwctJr1NjMUSbkqE1YIhutlBCBMYS/deIZv8RSkIvnbo0WWHhOGjh\nr2B55i+WQw4ZcUyPDTUwcNSvZd6pjtTvIgAXv3iKFyXaqv705ojRm6gPYmaS\nsY1ooqKyzKtD4Mb2Ionrc39KjOqUsxc3nRDryCCmNEowpx1TCC8URcLoUMVa\nydnL9oF05U6FeAV7Hv0o9j9IO2fpl7ssNzrlUEvR7ddrS/xceNF64Zpn8JvR\nuTyFx627F40UtTfHJhVluJ7ROWNrQ8updhpggaRFRsOWbMM3WBc5beaaw5g6\nEheDDTqpO2/nd3wZBDK19fL7Khhl4ATkP/w9Igxk//czrblCwoFsBvZH6MbN\nNK3wkzh1i0MTjOka1NafjRspKeSGbweZX2hAMlxoqKHussRdW2Yt5972DbX7\nIRGR\r\n=SWp3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"69dc21f8628571995f7efcca5030a976af940bf1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28-renovate-non-major-69dc21f8628571995f7efcca5030a976af940bf1_1597170011120_0.6904444171844064","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.28":{"name":"@balena/jellyfish-sync","version":"0.0.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d555513b09744daaad6f99c4c3ffced7bfb41476","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.28.tgz","fileCount":30,"integrity":"sha512-Eph+H+C+U094UhpUtnVXevmwabVU3CcjfUXUQ9iwMkhsDFtE3uYn0sha09dxux+CrMCCZwwOBr/DdeW6md0l1Q==","signatures":[{"sig":"MEUCIDJVOyXm2h4ArQJ83yO3byqJ/Y0uSd2Y/xSxYKGQ32qxAiEAmRMu1zhTlnf9hh7TE5nRkxA7g0vkPkQM652jUbxFkjk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":244996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMzheCRA9TVsSAnZWagAApVAQAJzUjNfY4cdQfWaj5xgh\nIY2y7yLhgZZ/XbfZ3RGOkYrjJVY62nGQQnHPkFxIOEJ2RYzQ/BWRGUdV9GzJ\nXSTldW0aaecsYPZEMNNoZgGOlXNMpWLGCyN6Cy3xpj1YMTl4yuGTnibmZz/9\n1jgKHS7HmGqWZ8Vj3DLTbsEMcbKbMOWmooCbEOg+vQV4qWAyWkEleqn6dFcw\n2Lsm/dFRLL7Ckdo+9ESVCE4AoQhKympEy30w0hY79eOHwOyvhMTzMHPtp4tm\nkWkLi5aJuTqerLy+Tq8ER33WcV24p7OMILQQjnY/9xmF2H0Dy52znmFlQNl1\noATTKRaUMEDa57SjJ3oDCIxZwv1U5bwx+KumGDgnejSXvQyztJh0yv5n0E+g\n/Pa1Tw3+DXgc5TtZl2MxQ77zM0N17DEGv2tHdJhj/TRX0c8wV14V+61i9EBl\nIFb/8CgsTsA4Nv3HTShv/+d4eR03u1hVCqeL2CRzzjNhaoVO0VIQ3QBVUHvH\nlDsxpSxPW0eqQSHQkM8vabB4G9x0ahHYtuzNWreZsXoj4m8+mpQ6XcqHHFOj\nqCsry05ux6t++viigIr4ej+mrSTfABzDDDi0Ftd7tIVk6TBnKFT2SlBOukLn\neRmWXZ2YABBYlAbrHqbslo2sgU0v0NVsWZIlVGO0f9NK8Goal6loxavRS+ir\n/J10\r\n=9Kfh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"19acdb5715086f2fc5b747dc5b584060a48fdb1b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.0.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.28_1597192286147_0.5827871470889496","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.29-renovate-non-major-2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a":{"name":"@balena/jellyfish-sync","version":"0.0.29-renovate-non-major-2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.29-renovate-non-major-2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ed17a9b659f4dad2ded9ce45d0abc9a48852c0c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.29-renovate-non-major-2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a.tgz","fileCount":30,"integrity":"sha512-tqOAOvLWkmu7veLK7uCT9Ug9/Qjlp9cls42ec/y42xjFvB5qa1EcHnMCzbaTI0QzjfpwCHQ9G3+UjO20u/Dr2A==","signatures":[{"sig":"MEYCIQCagSKT4hmWeFtgr4DBcjEH0hbjlaVDDRoH5XImZhQD/wIhAJUJHD6O7zDixEoVWOoVMfpUfcrN8yvvKIUY2J3R6mi/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM6+iCRA9TVsSAnZWagAAfRQP/1S7usqYCfEMcUHwc65D\ns80Adz3K6+uDwXg+FUv0O1ZY4ZALDFcCni6dzV2rbdc8BqZq6hMJYwNrpdR7\nrbax0uCkUcipYF1jGotlalZ+OfmWUWo1D2diX04uRNMCcNJJnETUpzTs+GCd\nKiCroUdYBe2cZ8Hx+QCybj4WY4+m2hLPAhCYaa2eMzJ/RMJlpsZiZKTTuDLd\nslmX4fSox8ZpUj1i0ebgZx6K2Mb44K3kYLEKYXG1LJAxzCMmSI865TsT5jwr\nya+lfvnDSjLBkG6alWd0iELJwEjIXK75Dnz5uofYXPy4mqMN+r/aqwgAVba7\nNEoFdC+py2w8+H9sm5KA1pCJAvfhk+Wzx5uMiIU3/czmhrLXKqNGjYdmUtXD\nhJ6csnueWruH4f9DvLo8g56O/br2atLEHkG/OB/FSoz1ULT7oo0UGmvBHAU6\nrb+4wtSUwvFQsamNg8QdoxtO1x0YtHwwrUfKMREt5i7dj5VEk8N4f0y4D/Wy\nYx75T7j535tWG0NZceKectI+Wk4sMS4+Z9ffj3zMVQ2xkYId/Q3YHgmp5ndP\nKGqNUug80R3J71HR3o5B7P/KuPg57Nm6a0c/3nc3/ZAE4nY8cwY5o0Mw0ly+\nk4koIaNQMCObr2YlLzKKinPPn6o/gAY8eOaFr8ckCSqJFG2K/dj0YZPYtp8D\n/AQu\r\n=rbol\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.29-renovate-non-major-2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a_1597222817959_0.9566105080568041","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.29":{"name":"@balena/jellyfish-sync","version":"0.0.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0904b9985c1ec9ea1a608ca3af971ddedad17fc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.29.tgz","fileCount":30,"integrity":"sha512-QtztBFJQuSJgPV83yvIqwVjtGxwog3u4aagReAEiZ4aAr3H72hJtAC9FRyhOW1jlPdY2o+H0x11f4QhWD+TESQ==","signatures":[{"sig":"MEYCIQD2787OQ9WiaxY2Wt7NAhJfyW1lGRNxQVHKmO2cktsXoQIhAIM3u2W/zzpqvCAfcbNys2iJgj074iaFcO5HR82t9RsY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM7Y/CRA9TVsSAnZWagAAR7gQAIMksV658LOQtb7JK0Zj\nFH4f/21oVXGC6SKf5zcpgddfG8YYA7lwwfY5tq6tuOL8oT9KS9f4n1s+OZ+6\nNuzX8OLhDnC2weqoUPBPF9KFvVeU4mLKMs5VAYE7L2Gt1HQFfr/Y95SayPVc\nTCVQOrLNymctyYFJqAeTjVtFRytn+tkBxYrwarYp0RkL0ixz+geE31DR9Hnj\nBmqwiIsav17D0YSQMLl/P5zJRJtnRUcZnNOkme01jnJyTfzjsE9MWHsarqbV\nH9/A7zJ9qJtepsl9Ta1Hfg27/A4zHxG2I9IuLE5XukJKi+2kLKWMrMaetZPV\nJBPbib2KfI2ybdrdg2h5GP2TguzPPNbF+tbVSwvROZsQ8gAtAi7YqHliGU78\nSGoBtKLowEItx68KetJVaesGf3gqJy//fKbJ3VfxLUVI8rf4NI3AEctEgPQw\nkng0cxhXIr2QhzEQtnKoHXPU1ou2msxYrVunaDt44aHMJNZEB5IVhMBLn418\n8gxa2GOg6mE+A/TfuzgYoLKGbXitSbiUrppgbW55vUcO3LSRGPTaT8turd2B\nKpksOy86WCqgQ9rLkTSCSGpMlHXJRwjv7ioOEnx1RLBwTak9PChKRZ21IMZO\nE4KuZpPXCBhLgdwxCzELFr3/RYmckdvRBeuKrYktVNtwPHfhnSdV1YzUBmvl\nbtyn\r\n=lUQu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"6c693ec814fac0bec7aecad954a28e2720e38064","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.22","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.24","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.29_1597224510833_0.3422463785153598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.30-renovate-non-major-07e66e059ea624333dcad5bd4bdf5f5493b886c9":{"name":"@balena/jellyfish-sync","version":"0.0.30-renovate-non-major-07e66e059ea624333dcad5bd4bdf5f5493b886c9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.30-renovate-non-major-07e66e059ea624333dcad5bd4bdf5f5493b886c9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6211b0cc6c67b081681933370c3f60ba415a659d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.30-renovate-non-major-07e66e059ea624333dcad5bd4bdf5f5493b886c9.tgz","fileCount":30,"integrity":"sha512-u7e+OaxBe8HwUPZcfAlI0aJcMWgUabUIK/8PseWjh8NlQ0b4FkIvyZZsk9xyaT+MYlI0O5bK4E54CtAY9CV4Ag==","signatures":[{"sig":"MEQCIHvxHQghhuBqabGoRKhBwZTQs0Lyom+zPmqQfgylC54xAiBLlOI3hcfZlbBW5sVeZap4thE78RqVYCs8tRsiu8VPiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM8aQCRA9TVsSAnZWagAAL3cQAJsE9MGitNP7lE4gbB4V\nE9pNT8mM4m5QBIsLPUEL2A5cwjr+Ag8FHziZBAbf/TRSmzS32wBD+R+ENkKm\n2w0sim7GLU6wPTASLt0Dklb/ibCw61VLzfFvSKouMPGA3YUTG83tAIuqV/8o\nYqs/I6Ix5vIZTT7qHpU2xiEhmsYMY1TaFXjSRiZgO90Gn3Olw+REmY2OopaP\nVpPb7eGShwR/J8jhlLbmCnR2swkCFvt4aLpCx5ALNBMvPo2LLSrdk7cLkeo+\njfWnhOO8Iww34yFQCTVDfbpKY/ZbDL7NbcZZIpdYJAlnZhYB+PatCTbgBjqj\nywWBCJq1EgCAylsadrcD9pU46zhIeIKLWaLhjK35jTehzRSFn3aKTXDj4mV+\nE1KLch74m2YOU2wF+lDAInThwZchGfTvcanG6bRJLto56JMEN4uuiR2EC+1k\ncORWWKaRnObxF3SaviQUxPYBPxrTGXe10WT/Zb6A4JZWgxG+CXcZ7zNPa2Xl\nnOW41EIng1vFu3bpwEVmj9SSfdoPV43WwL0ByuBn6hOKgw73Z46k1XoAXgZp\n7BKlArsJxLaCVB4ee08fgEIbIxhdhEgbG+/CLaYSsiaAyH7XPjqE1d1Bafa+\nvQCgxvBZUhamSlSO/QqEwc0SUKMFnfmK0MSdX5KqFAq4h70R5NtukVgDPFfn\n+rz9\r\n=ULwJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"07e66e059ea624333dcad5bd4bdf5f5493b886c9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.25","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.30-renovate-non-major-07e66e059ea624333dcad5bd4bdf5f5493b886c9_1597228687758_0.877794408219559","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.30":{"name":"@balena/jellyfish-sync","version":"0.0.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"035afa439c400c3909a2192411bce21a73b54104","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.30.tgz","fileCount":30,"integrity":"sha512-i7cTXXnR8+C9/mdXSqBwOm/GsA8pwxJCb5FwNoB0JNXZ6/v2c8FKE4Om1O5SAt2fo/bioizbasXuPil4h9RSHg==","signatures":[{"sig":"MEYCIQCroypBiblsfjfSPz/3bD+Vv6q9fjMJQBmBAwxfdMTPgAIhAL3HK7GFDz1Y8zK0tiUM8c0s6VFZmOiHdFeHKpWLqO/F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM+nUCRA9TVsSAnZWagAAeAcP/iI6hI2Js+3q9cHUxeZr\n7p+mfu8DKQXXhPPhab2he0g5C/Fg627nfdekmFEOH7Fx+fpIwFO1rksPTLbs\nQglRXS3exceZukatfA5ZvpK7/XGwsTF63tKL1GF6VJdXgQ7WW/FYoc7Z+DtO\n3+DkY9XedztU0R1SK9SygON/8K9QK+8/Syu3h9RBSnWinBZlLpuVVVIpM4U/\n76ulvZ0yue1qUqr0f+8cOj9LVwyHrIugS/8LO4/logSNthXZ0NgKR+NTY06G\nfV3Q18mJmRwroMJy4kODttGWvyT6nkscOFzSf9nbkwTjflyEIEp5X76Z+6sW\nP5d1hGAsl0JTgE+mtssD6fKXZU2AuCIacwu8Eol0Ngb41M00cfH8rX+ueI9d\nG1YYZN46yFMNw9q9BypArEepBoQPTH94JWydvPA6BYNtINpsaB76IPbAMEVM\n3myLMA9hKyZmK1z86FJmh9SRHXKUv5Ekcl+GN1ZocFwtSZHiWixP1HZKHI5E\n1b2LDBlu9tXSbrx2+6eNB0vr6r5J0GLdoBpRRQj77iuBzVvqkYxb4MaDnMAr\nKzazwRroT2Kv8YzVSG1J0Zb9eBUqnTMqZU5OTKaYifK/kpsTXNqMK01eLfI8\nmsRuu47H7GMNzy8ZVBv8kgmRTuqOm0uIU5+wyz+gBFPcbQr1OXLGL4zHj1eY\nqxDU\r\n=GUm+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"931fdad119d350123677697b2de603652b0f20fa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.25","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.30_1597237715720_0.5265754214111145","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.31-renovate-non-major-163b12f365a4645727fc2d984549d4e9787a0a6e":{"name":"@balena/jellyfish-sync","version":"0.0.31-renovate-non-major-163b12f365a4645727fc2d984549d4e9787a0a6e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.31-renovate-non-major-163b12f365a4645727fc2d984549d4e9787a0a6e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"38259e684691419692851975e925ec16ed655a70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.31-renovate-non-major-163b12f365a4645727fc2d984549d4e9787a0a6e.tgz","fileCount":30,"integrity":"sha512-oDkuIaudRGsu4AEswIsMsjxxAq3XUUX1Wrw83EGe7rzmPSpBfZqlFXPkfsXyJSFzpGr9BQxdZbHiJnCVMcUqjA==","signatures":[{"sig":"MEUCIQD/4ItOZX5Ia0UT+TPnmPg/gSlzpVBERuI6jI799x1b3wIgBr0uYitBI7vdoWPc9cNNBKaBnOIKLEi50XgtN7N3hto=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM/oWCRA9TVsSAnZWagAAD2EP/jnXYHMMlhrN/5toEye/\nHQC4/DJmC/LwamW/LwY8KwJOjGLe3Ocn2bDxvum9R+SM+b/VgxgcX94StWvH\npL6rM4oEq+L8aIufGAYMSxeY9JKNGNUVAhnbcKTllAuS44h62zRTwQCiE0oo\n47utUIsotbzcyYSscWgMaWGcHuZ+8hSRYdHKxwg1bKwFmM9c/dlzliVcj2S4\nHjQq+KHNrzqjO3ai+bu1Xj174gvALgtaQrhS2L0HeibgienwcrXiNaP/dlzJ\nEIRS3rTimf8sZQu+/0f5cyPN5qUUJ29vokKXCfbNJK64iuhxO62LSrsDJx8s\nEqEEml5V32NFvGF/nIdZkc7PaLmV+RUQLmqLWMw5fIrDGjH7nZdb2AlofQv+\nziQEpQmg+wfau1X+a9ZieEcmNMRtsPWwHgB772YSwls5ftrFvqq8pxlrzy1U\nHgltz3WsHWvKdWJEtUBLfKJiRIc+tR+4OAFInus4yMOyPoEHLzQr6hc6FwFW\nNExdOlC6MxWYa7ViAWjATy5PMcIY3QjoKAAlz3kZHk6ygr8DYsOcXD72ASGd\n3aoBFc3vduwWbFdqcot+/zv+FGELpITRrtsXoB57lmHIa7hypAm16c/4Q+zN\nDpQqNoU+L/oTQ7Ct53EzRxyjjqQy+3xj1qpsw5t7XB2IIiNcYKG6Pabt3v+X\nmZ/1\r\n=EHfW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"163b12f365a4645727fc2d984549d4e9787a0a6e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.26","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.31-renovate-non-major-163b12f365a4645727fc2d984549d4e9787a0a6e_1597241877815_0.9524308458270339","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.31":{"name":"@balena/jellyfish-sync","version":"0.0.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"64d914a722b63a6ae2a6aaa517ea17d75ea38914","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.31.tgz","fileCount":30,"integrity":"sha512-uEEX5yocXbBYnaizvSi4qwN2UGUPcf8J1a8MqciFd9HgfnDEeNwxINGgC0m2w2FdHYoTMUnBTRbe/DcieNqwcg==","signatures":[{"sig":"MEQCIC2mQmPB5eI6c5/qNLdkHwABnu51POvGmvTfwnrQoENuAiBpI3BK98JlEiiMEXkF0hK9RhiNM6EDG8ANN3MaShT17g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNISvCRA9TVsSAnZWagAAPoIP/0059PenEJH2pVjjKbVq\ngO+nfIQTid9nTKPnL/o/i5x8MZYmOAQQdJmYoE6TyLRme1SZ7ekP9KMkr1rB\nIkXNc0a41qdfFafQNFEiIpmjvZKvfg0rmNHHn8jwtHDs4AMi0KyWGu+cFYWI\nWaMpwpFQ16AnVEMyo19q8qzqJyQbnc8HehDtvvyz+aBZu03BDAeQ5/Km5yIM\nscXWOyIOEUvAKTm6/GWL0nlGuGl+HpNvtD0dvA+Lrz655BMiD4UT/7skH6uf\nqtaFp46Th7qHQNG3L7B4VBZCUwkyUHJOrK3FUW6JhEw4Yeto7K65NSHGP/jg\nGs6K2SJQpm0iJ4Ou4wwADYllDsOtnMAFagKMUmLES34hSjJSaWWxrZybn477\n/uFCB853YkGBkuuHREFqZeUF9ghz5q62vcfmGaO4911h+l49WaDuRLC+tSuR\ng77T/qme45Ov+fD9QwxJ/zFgIVll+cKPafmODCp+u+P8rqIBvYHvyMq7wTK4\nuISgzmhhCARX39JVCAV4okS+vIchsiaL84toVbRgwP8eZ8J98CKq77hTJegz\nIdu6m4suPGRH2eHkOkRIEL+94UGQocfq8rD7uW+tK4wDHoTKOcRM0KzZNIiA\nWgVkmeFL0u3F2DVWFQa2sj7wVeUcNnMHJpQ8D5siQeDQ441D3u0ixwRoQuLD\nEvyA\r\n=rs5C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"036eafa7b8e818e3c90700317c23a480ffa80f9e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.26","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.1.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.31_1597277359112_0.3776844553807912","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.32-renovate-non-major-fcb2b053dee4c21f1face1ea679f772ebc6e89a5":{"name":"@balena/jellyfish-sync","version":"0.0.32-renovate-non-major-fcb2b053dee4c21f1face1ea679f772ebc6e89a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.32-renovate-non-major-fcb2b053dee4c21f1face1ea679f772ebc6e89a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"45bcce3e121d71d94ab02351cbb80d16b74546e3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.32-renovate-non-major-fcb2b053dee4c21f1face1ea679f772ebc6e89a5.tgz","fileCount":30,"integrity":"sha512-jAivWp/y4RDphnIHl9JhQwBZtMYkJ0ybQzqbSBdEkhAsFkNUt5p8KdY0PzFeTHfFN1KvYqgdAGU2eIS2Pn8Zvw==","signatures":[{"sig":"MEQCIDEgcEQRDCBHUEb7bO1yn7K3KPVc0D+e9J52xQVAt6NcAiBEb+toGON6ezLBvtuuwS8jCudM/czM7+64JxuZx8RT5g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNJ7rCRA9TVsSAnZWagAAzD8P+wZYc1qDrhcGaecNjr2N\nX6bIuxI/8ECTvQwuKHPEP0auq564b2zNEp0yEqBOQKYYS89ABgocUTZO8s3v\nWB0Ohd3EtZtMa/iVm3XqzoGB8qKVYqTJa0co6iAWpIqdIoroqyNvo7CNKuaj\nnU3YkmzKJXU/PZgAeS9nJ6p2fnar7rEBs8S0neBu9S63MCV8hg7c0fVqV6PY\nJi4e5mXe1SpuvrYIzy83/9yFAIz6j6QSGRRfnqTaJUvEjs4xpvPmlBUvs40R\n8gD2TzZLe7ZkUIainY1XCggihdejhFEAR8HQTfiZ7hWNmJOvPFpDMWzBhz98\nmW/LpKwDf5H5cT7Excn0nlwHBtrJdGnUXvcPT5j4B4uhENAHPz847MiIXxMF\nWlcDBtbuIEFpvIJ7xIrTQYaL0kKKebbtjtxUfIjmIJG4RWGvedusreBWH4W5\nXtbgEr7PGj40KKEKCkK1i1tc7ST2P4LY4GoylHRhtJnQdpEUNUPd+uEbNNm3\nh/CUkJ4FW0aPwuVdLe7mS1/7shu+7wPumKqu3rTpqy5gd9x60e4HewEWxoQX\nXDGwHI8jFJLaM/m52MSfASpUo8wFJt7nznBT+uR6G9yur3eCUEcSqTT3BucK\nf+M+CqbuNitRr7Q50wIERjhLIo47whaQ2gBQz5Z6Fx8EcUckmauocR3KfNos\n/tq0\r\n=n6Zn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fcb2b053dee4c21f1face1ea679f772ebc6e89a5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.27","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.32-renovate-non-major-fcb2b053dee4c21f1face1ea679f772ebc6e89a5_1597284075002_0.47544251862676457","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.32":{"name":"@balena/jellyfish-sync","version":"0.0.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5cfd8abe2182d1d80b5261a7f1e1119180929ac1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.32.tgz","fileCount":30,"integrity":"sha512-DAQYCTFPzM1n5x89d25obUhhXSwdGll57Rb8EcSls/JZMrkf8aYjN5DpMym4F9nEN9sWg6tDXwmZR1ouDvn8Vw==","signatures":[{"sig":"MEUCIQD+BiiJIvwV07Yxbf5fKXxmq71S8nmXEW+egw9kgJsynAIgMXLD93nTtmgivT3SOeB8QeNNvD1+YNumTpQBA0ZDkiw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNMDECRA9TVsSAnZWagAANZIP/35W8MbHhJYuHr2VjPnk\nIvakE+TYZqNKgRhcIhFuLdEPAVC60PF6UNvpl0Ms9LZBE0vHckxMpCtyuByS\n25gI3d3xbD/olj0HajWnWTGzzifp0/cl96AR1B4bj9XPOdOkon4GqIBUl9b1\ndwUEuuOFr0N96HpcT7oR6ExtGQrVPHPBpAT4XpQ366nNZY9jacMYPqeivVTx\nqSDDD8s3GoECjUOJ/7ZPTWqtbAYobPfdpBOHP+W2WdwSW/6z8l5w3aJ3Yaou\njlcm6Lf/9L+sW04lfE6bExbAHd/Zwx/9cIuJjhcj3W+kab2pnmhC6VaOn2zH\niRx+pnSdBXWElbRGKfOv3Vu+qgKAxR672DVkroQmS+uu/iwJApf1YTdnVzvz\n/wdbWIM7Ai5s6RaA9PSQHEHhMpNFEal/Zq80++I0WaQ/J/34BrbKp1HCapca\nQNckn6owWMY76nT2sHDeqo1hoQe/CHW+rVgIektUf2CcGPngjvJuSN84qVOD\nhUvHWPMOk++4inlJOM05zogDo7ACBY7Jya1nHJbZshf55AIlIjsc66O4bLIM\niBrHfUsfdQdqM/BwbY+xIobYqh9wmMmjsVRCn0fCmdR5Paofv6qrQdQ+PXAK\nLBYo/fJ9+ywU5cxrwdyEQ2d8npHrsnhnDDkop0jlsseluibRNwA4XRpUalYn\neoWF\r\n=x+NQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"23873938bb5b8545e0f9294b80f4a09828a9a07a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.27","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.32_1597292739832_0.771838545043354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.33-renovate-non-major-99be1688164417b005215e37355d0a604e6bd5b2":{"name":"@balena/jellyfish-sync","version":"0.0.33-renovate-non-major-99be1688164417b005215e37355d0a604e6bd5b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.33-renovate-non-major-99be1688164417b005215e37355d0a604e6bd5b2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72669fb2328313bf339f5f3be8d88d34990c96f3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.33-renovate-non-major-99be1688164417b005215e37355d0a604e6bd5b2.tgz","fileCount":30,"integrity":"sha512-VPRl+BcmEN6wxcn871kWZoISdjO/7sMdNVMHFineFOE4wSkDLR8ew3cqfHdTDMxMvFzEjkSAR6oDyPaROy8Y6g==","signatures":[{"sig":"MEUCIFCixC2F8JQx6gY2YdjZ5A0c3gxyjl/8vC+eJ81XjUQLAiEA/VI09DAH9refc5aB0gEcJAmxIlTQxIE+nLlxGLCPVoc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNMG8CRA9TVsSAnZWagAAPEwP/juxaZ9Puf2lr3gMtamY\nvh6zcciSNbX9sW5ck/l30yfwC2jg9jWUG5T+9XZRWelBZJW9fxo1U5cvnq/m\nUpdS9bcKY21dfVeoQcozIPXBeX7VQl09mweKTGKYtjF8b8fxAp3TcwDxmtW+\nJMlPJVt6vxm4+X0swzS8x4nCiWd5QqpjWtd6mUXuXoiRVj7JceJF49dQvC7g\noW6k5351ZbtvG1of5xet+uxtUYXwIIgsoX6p6f8T47AsZXayvPszw2/A1YBl\nROSyyCPRBQ2HfATxBqc7YRYafYV3TzHQVejEKrqbIs8SFdcqwLSe1xnszK9b\njMz9GRv8JoruFpJsf+/2kKPIiy+stKxmfmKpBGyy3mh15Vo0FlxQUY08gj7c\n72luqM6tVy8DgS2KW4VWKLw1b0IMhhVm1B9Dex45TuU9YYXwOU3RZk8Ctwll\nZdhqqcSw63vTrGByTGjiazBEu+d69c+P1oMlHxfp121dSoxbBC8KkbFpurFN\nlCxV+52JBHKZubTpOhgqSiy0mDFaSzyAZ0GONUD2BULRszXFamnmongfjLfi\nXI5ujHBFSDE6lGyuiipNu/gFu+w9Od+/XrGmSv6pBtEu5KfSzx5r4NthuU5Y\nQFYyZa3C3yOTelwZL4KeoPqniVv3tvoPiFPxFItVqF6bwh6MmtMnpM42z7IM\nSRo2\r\n=2QM/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"99be1688164417b005215e37355d0a604e6bd5b2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.28","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.33-renovate-non-major-99be1688164417b005215e37355d0a604e6bd5b2_1597292988316_0.13448717575714153","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.33":{"name":"@balena/jellyfish-sync","version":"0.0.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"051254f6551db55e16379b1c29a5c676045807a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.33.tgz","fileCount":30,"integrity":"sha512-9vMBT99rXwvl7t/jkBuGuYuhYkLWz2r6Sd/3ymG626FcAd80DcLkzmVEZMlteqgUGHx3G6a6XaPAu8lvi0tj3Q==","signatures":[{"sig":"MEYCIQDDp9Ee28ILVTCQM/A0Inmz8RZ11D8sIWDP61DnQSCmQgIhAIb4oBEfPrcGYi+TBvcU2ozHhqcWL7uHtaZr+K6Jt7cg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNNcfCRA9TVsSAnZWagAAi8cQAJhIqbdLmxDDHu5BTeEM\nN49aHYchZJ/nfQZjJu8taqM5Eerswfq9eYFb/CdTWpdqwbHdFA4OVHkKtD6z\nN+NFI7g/nDYTis0YcuT6cwxyPkKKN5sOZn/ATiDxs0g8fuc1CL6UMwfkJsov\nVrnyZT+B1bmNbcAa/sMCLl8jQPy6Dcv4kpFd3ODcQZB3Lv1BKvm4WJIEiSrt\nq6zxPzYVUUsbZPOdygeVLwK+fLIiFKfklreuX4ESp7Hw/YNhY9q/QiGfHEhE\ntBC0372XKyiMpPWtGB/d+HUHypDhlndL6fa2vidlpTVgtcnpTFipxEBW/xWz\naknxIKo6IGkJ04VxuzfLJhZlDO5kyLN8efUq/Suhg16CTRLCkFJ03Jomb4cY\nevP0DvWxYsHM7P3okTC+jo5ZFruc+ILjyjbAugoeQqdtJ19ddx8otCoB+ppK\n2+S4MLvckJglCRcNdMBtaQREwMEhZHZ0cg8O7iipgZfrO+DtYM6CZuMU/yEz\nIa8I8H2mWzwTdrNfqg9FJDmoeUQ6Y5WiYwp9W8UeJTmbZDmddWALX3t/NTQI\n8blsy3D7YSG51lA6J+w0pB0bzSfbtDOBF2OhYJvH6SJbTi2EpKxieczwf/N1\nJsTQ2KfL+gWbst47eCxb4PQUWhIWrKuFuGjIL8smEdyTarJqSGN+R8t67YQA\ncm75\r\n=4GZ5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"3889f8c381da505ccc41eab31be2b284a4344781","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.28","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.33_1597298462732_0.4584410220402526","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.34-renovate-non-major-a5f4f115f7f30df86d73508d1020e45971a7fdce":{"name":"@balena/jellyfish-sync","version":"0.0.34-renovate-non-major-a5f4f115f7f30df86d73508d1020e45971a7fdce","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.34-renovate-non-major-a5f4f115f7f30df86d73508d1020e45971a7fdce","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d15992e96dcf34093fa05a33c642ebfd5c18e77c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.34-renovate-non-major-a5f4f115f7f30df86d73508d1020e45971a7fdce.tgz","fileCount":30,"integrity":"sha512-DO9ASzGhRtncpYTK15ylPE+QCqf0G0WcEzQ4klidc/y6Q5fq8UajmueKuP5/RWCKjvbR3iQq7+QgUfFLi3MOtQ==","signatures":[{"sig":"MEQCIAUmzL80TsBQfSZSAjaoPNfwJ2FNKYkv5wqH0TiLv41jAiBrh/Hk1SvWfay60gmBT/DK2pXXLuUiXBYWcwadZfo2Ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNPInCRA9TVsSAnZWagAASjEQAJ/R0wCLno33XDBdzjrx\nkz+BBSw51aRSCu3nokEfKrs3I/50A8M2DFrysOtEd6IW8RkGwvDY1iWl0HXq\nXb6VaGuFW3qJUftldSgTvO0YN4TzHdjUbU1oph38aW1UWqToD6P6ejD/iQis\nK44O7wZwmSbW5g6YW7pMPM5iqZ/CgQylfiaiclLzpNp8WwbD9VsxDlsf8IGP\nnlyFfnJKFkPth8XMoAsU2y8GO18hr2+QdupsKi8dVm4EnmIAXFfKHBlVqnCH\nOet6MuefijEfkpLCovN2HMUQWh5d+LmPwN8JhNQ6jGmKmFSdnn5bQhwA4qBt\nEtZCRkuMuLjjOVyP/MZ0px6lvtpQzqQykdt1lmqkJfzsU8r9tZGEnW44jNQx\nRRjyTn+vARnqkVe3nwqC0Kk0mqnroJXP49Wr2alYaizQyFfRJT4z4QauLPyW\nYo42OqXqlMSKamwWqD6pRXdSbs1StPe5TzXYSi+LDqHwcW+vBMxwTaTG0Puz\nd7d0lpyd24d8Mh3mhuI7cEHeZeggPEq2qJAh9zdGd8adrrRDe8nXWnwV65hs\nxxMEiEDiimgZotkc8Yc7srwxnnDl8qpxRBAUmh1FG5BI0iyl3+Zf+MI39ZPf\nIQggI9DHhcVCaGAgjrsCO8Aibu2b44jAIsFi5ZkU9x3+yfPJOxhM75YSEDVV\n/LfO\r\n=wFWH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"a5f4f115f7f30df86d73508d1020e45971a7fdce","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.29","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.34-renovate-non-major-a5f4f115f7f30df86d73508d1020e45971a7fdce_1597305383322_0.29728772995290464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.34-renovate-non-major-c4905e7024cdb9d14c228c644d755ffc7fd170d2":{"name":"@balena/jellyfish-sync","version":"0.0.34-renovate-non-major-c4905e7024cdb9d14c228c644d755ffc7fd170d2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.34-renovate-non-major-c4905e7024cdb9d14c228c644d755ffc7fd170d2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e45f17f0c9d80913f191ed9ad281cd8343df9901","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.34-renovate-non-major-c4905e7024cdb9d14c228c644d755ffc7fd170d2.tgz","fileCount":30,"integrity":"sha512-2b2M8uPapJI4SxWC6nikJREJWj5a2HkdQA09D+T6WxNEZ1St4myPPDNZL76vcEWV3IJKNKJi7gosq2ooRvO0eA==","signatures":[{"sig":"MEQCICec44F9KCkiN47Of4vVazJpH50tKl/LnDBz2MMmTUsUAiBkCzxOaJOyku4EPpTA+b9NDvpeUaA5K6DJoiWi4vCdHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNP21CRA9TVsSAnZWagAAhykP/RGSRvDRtpgNWgbixW4O\nCpB4jFNG9WqUcip24mIoBrf1gXTRxvJ3EUESWQelxJk/BH1anoKlu/6fUWK6\nFjCIs9DJQSNFBOuk9KuSGcg+Wpb7SgwYVCc13ygL04AX+JmKSn2B0STTRulA\nmxLRuVRL+hGZX8GVeQxuzmX/52rBXPTWTbFL+O5WyV328xntMWisb/LW8hN1\n9q7z65rOWB5Zu0kYa7wH+OMrd+/skvLA7qRqA/8os5We1D4MO4uaM3pnSV8A\nZ/zsVCrQ8rPHNCi2lbCLp75uEOWZosgRzhady6v7+nbDxYDOjSls5xdrjoET\n5tv6z/P3HDZicbYaTfIAauJgmd18fquI6CLitxVSnpIwSsnCq1Ceet4yCE7f\n0V0QnH6f8CBygenmcwq+sdYIoJUG+BBQe+39vKPLhY8XRHGbv4iPyefz3R9r\nHbU559qx08lBdtN+MmhJoZd0+X5qZaEINPb14xfsuHIcZfeQZZoQAfPSGrkC\nFjyjUXyxXHxSk3b3o0uZagBErUB3AMsgQgx+QkkI5Nmm6O5uflt7/L8PzGj9\nmdmp9KibvURvPNytyyu8jtQUguCenL7VwDtSpGr66P8/+S7K8rBWWhXOk1Ui\naktZe6lO6iiYSGsPE8BuMK/FkCiQ1IFPHcmaa85QWElq/aY/CF6XJigBGIW/\nRiAY\r\n=9zYr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c4905e7024cdb9d14c228c644d755ffc7fd170d2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.29","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.34-renovate-non-major-c4905e7024cdb9d14c228c644d755ffc7fd170d2_1597308341439_0.09420754576497492","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.34":{"name":"@balena/jellyfish-sync","version":"0.0.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"45fc670d75e5601793f8524aa0e734938c151f5d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.34.tgz","fileCount":30,"integrity":"sha512-WQzIMOl0ysV7vH0M3Qi31QOJJY7jFMKhucEJl6SFJlufK8D6Np9RU9OBjIstQDyrPAWa2G4UdT41+BnN3F0/jg==","signatures":[{"sig":"MEQCIE9aHmC7OLa1w3gAYBapbJ9wFGN3d6fOXjMDlqNUhtA0AiAT/OK1QA033wWJdTD+RsSJWG7DFPcXTjXvzTlyLyRQQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNWiWCRA9TVsSAnZWagAAWLYP/2A8+5leuQZ8drkVr6sM\nQ1hYDfSD8h5FDLrSHmPf6gEiU0lEPlulIic6zIjlI6gNMFAlL19XvC5fxwtQ\nySd+Z1n3vbIf1OkrqKY1kuZSx+UIKamhYWlFl56xpzxeil31V2w7zRgldvn+\neCPU1pOsOH4YMiFXNZDHpmxuzKr8AomckJusuQMwAOG3fsO49XxirMXuByHf\nQple2MTHtyJvWyckvH3UEJnTeoaODsAopEmRGnAV/FDHVasS2gNZRXjHYNb3\n2f/AQP5tU7ZZ+0mdUMpnOySS+kKDCYGZ7qVoChCwkYrYNXlCX8fm1JUOuOTy\nfvGzwyE/Uxs6E6zIfBTdXD3b2hOpOEh0cn/rzs7nw0YoQUGvfVyn6duuq5BF\nYtD+CDwYFOQgpROGvicy7FxHZY7PqHLDxlevUikFi7GsIhziDBmskc0rxvmn\nFqaK2Toe8zH4czG1/k+xEX39FN1clSzbzpuBPo1qWwdMBamDykBaH6QVuqWu\ndnWy72h9vt8dLfOqxeCcD5juIM1vFp0HCIHd6B2BacIO5t2Mskl0MWJm/2lc\nEYwpmar075/EZ+UjJ05WOSi3oqMwhebgLQlcqxZvxcl8TMHqZUjPXo6xwnc2\nB6g7203kIjEW71ZnyVnkmO0kM25PJ2wXOU654grrf0F/Ob9Woxr/J6i/+q3x\n9dAV\r\n=OuSm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"356bc746493ae682e8af370f650667d71e55dac8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.23","@balena/jellyfish-assert":"^0.0.21","@balena/jellyfish-metrics":"^0.0.29","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.34_1597335701531_0.4729192516960994","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.35-renovate-non-major-6bd3033fb7c61b653496e619425c0a9b61fc490e":{"name":"@balena/jellyfish-sync","version":"0.0.35-renovate-non-major-6bd3033fb7c61b653496e619425c0a9b61fc490e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.35-renovate-non-major-6bd3033fb7c61b653496e619425c0a9b61fc490e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"399d0c0a642e5b9ae0a1fcf34707d1df2b7179cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.35-renovate-non-major-6bd3033fb7c61b653496e619425c0a9b61fc490e.tgz","fileCount":30,"integrity":"sha512-SuhvYgRTCrRFWwMJgUu6Xrh5aBeFrdNn9ih6gNXnqK7k1uihHvVn/PSWmGApsNIkU65ITxLIkY9ySyjzIkpCkQ==","signatures":[{"sig":"MEUCIQDOB6bdl8JNxvgowBBqeGWXX0b1IPjx2Yc/2VKQLMIUFwIgCpA7PM0OTQD9ciy50IWgRWyZ0KsSB9F6IGTUz/maF8Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNWxQCRA9TVsSAnZWagAAOpcP/0JB7bwP4HAHQmxQknVm\n2lk5iYC2pzgTk9tMc/3mVB+HH9AEcd9VphYEP3mbDmPfFlufGrqxMYvjyOQd\nuZ7baymfnRqw51psYA/ZMkIVbH5SqAUq988VK8qPoNPgCQDUMHVvAMPAeCLy\n9rohTJZIOa630omYHDB/q0KvDn0vvyQ0/HnLFTUcwEALOjmCyOgbKU8trWRZ\ntGNfLHnrz/TmUPRDLJ242zHRfo4y6k/pfhG/bPpql5OKrC06CxN/q3pTSavS\na1oiEJW++nEpDuJJdKmwwIULeSShec1mb/aA13Sp/DRz+gvH8YA3/E234ojA\nb2wb8b2XnHpDE2L1slFXjvIT/GogGaKXuVPuCtFGkThue97VdtO7yB/GmkK8\nnIENPgofkqEta4DZGKvsw0vdC/aafHQcbig6AEgzwS+d+pwXVpJbxB/JhUSF\ndgiju7VE2n5tX/Bb9t+ZU3fNnj7ICCamY5HJrqo98ZCvhp2sWPfVpL8QJD/b\nni9/JYmvEaoOJ/fnJsSBDfERdsWPyIwtMbGHSxQCIt/l+XpzXaabt20OxdIT\nYa06+1CRnKBTS7mYhk0ex3xRW48ee0elW9VTnHyV3fCl0u1YIRE3iGHRBVeL\nni/Tc+CGeRDjVXrvkT6zaaojD463SxbCsFw3GNNaWKvjpnZdcAoMyLfw7DRZ\nvzIU\r\n=2Lqv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"6bd3033fb7c61b653496e619425c0a9b61fc490e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.19","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.24","@balena/jellyfish-assert":"^0.0.22","@balena/jellyfish-metrics":"^0.0.30","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.35-renovate-non-major-6bd3033fb7c61b653496e619425c0a9b61fc490e_1597336656494_0.1851653532088351","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.35-renovate-non-major-beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a":{"name":"@balena/jellyfish-sync","version":"0.0.35-renovate-non-major-beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.35-renovate-non-major-beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39908e8e72df561933f549604bfdcc9821c34feb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.35-renovate-non-major-beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a.tgz","fileCount":30,"integrity":"sha512-/c7AJppxGJ9vtADjbZAaTlUZN9094VEI7HTLdZka5kUKzYQPBzS35PAokn53/Ml4sxbdAsMRGt6A18gyJ2lQTg==","signatures":[{"sig":"MEYCIQDEiwtO83EdFVc4rAzCyz/MX7gOI0Be/38GcohkneE90wIhAPrRCfBgWmeX6EvMDTYsEcGADQ3trnU+zWurDvA22Mvr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNdAeCRA9TVsSAnZWagAAQMIQAInCVtX/rPA6rcYk/seZ\ns/JQ0qalrPQE9vtEq+2REx/Ix5hNsDMOQ/DgppbYNaZXg4XmhPHGTulGBjJQ\nkFLbjlsRNw5YdXifS82915PDBfM/i2lcZocJiuISC/64WyvwVzGdnr3iDOy8\nUKm9upp/qdnHwFauRFz4OaoA49w7CSqzol/7XdhsKiil1Tk+vvkgFAijiOea\nYra13MBHl/HpVY+C6INZ/wgiYBjfw8QE7IkEBk6HLvHDcpeCE/YQbU5XU/FL\nZG1pA7TVr5n1cTxKMK8EP44JcjGXhMyJR27yWUOnpNif/R22775zxz5w6k1I\n1wW6DEYegwHk2ZjkFIHIlnDkVIor4Uy/kQBMbhemHUZt5VbLaAErXnAYBtJ6\nwXqjBucFsYXAxWtvTYrwJlsX+oEawCypldr6+KVi2w/0JCpczbRe+B8eTxRS\n6OBlVuCTmycKVXIroJvyvgmkEx2jIPQVZfT2SjpidVmFhlbH+i4J1Ade4Y7Q\n/qEYWDruh6Nj6SWNxfSRDZzv86SAP7LBDsYgWpc9n6xiBNTT5BxjmyrJ/i6H\nP3Gijjaji3CHuVmpvTBPkFpnQ6vVRUkHloFv4ENuZUGg8vg027kWoUVCJKYq\nhR+ntlGLFcEyV7HhwBG7TkRyxaVf0XjSWGGjNRQe2cjsQQ8i5PeBla4G+YBT\ncUXa\r\n=yAlx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.24","@balena/jellyfish-assert":"^0.0.22","@balena/jellyfish-metrics":"^0.0.30","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.35-renovate-non-major-beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a_1597362205518_0.49303890233325665","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.35-renovate-non-major-2844a59db6cb59a1541c21f6d235accd16dbc1f0":{"name":"@balena/jellyfish-sync","version":"0.0.35-renovate-non-major-2844a59db6cb59a1541c21f6d235accd16dbc1f0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.35-renovate-non-major-2844a59db6cb59a1541c21f6d235accd16dbc1f0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c3940fd52490a6bec4ff7ed4aba2e5a4c542666","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.35-renovate-non-major-2844a59db6cb59a1541c21f6d235accd16dbc1f0.tgz","fileCount":30,"integrity":"sha512-oVenPHgwkZTwoi8X8LEtFMIkXaknKpeAhoU7c1aDgy4/Yx4bL/Ib4BbWe6ejxBIQ1HjdA3SAM3tjfJEFGB9O3w==","signatures":[{"sig":"MEUCIAYXzig6Bhev6575HClL7HFu6yCqYP+ZY7sX12wgv0J6AiEAgiSz3/DIcfwDFn8RFNUISeOozbe3Y9xCTQIxVJ2w/KU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNdYOCRA9TVsSAnZWagAAd48QAIhADEYYCWFp2rOk3PVi\nhcH4NSS5Kb2BvwgBZXaZRutUQPg1d7t8F+ImevGANqcViWRmkRy2amKZZK0f\neTFN8Qhnjm2zXs2JOk/QVjqP2maRIwY+bGir33q5jTTMI4grVHUg74aBXxk+\nyxCLMfjxRgAE+kbqAb9J0UjQIV7rLzHETV3NeJmnVr69W895C0qMMlpoIXPs\nA9dqp+nzputoqti0eu/HouelzdhjESM2lBnu/+p823LdDIQRUDeOXy0Oq7ca\nXirHRySNcLj5Cjhhar8ArAwdfeT3aL5GtoWsRjVMXs6ttVKQ4kJfFnsJv12I\nPURCha8ypvHFwdd6Ib7bxXuaRYcYnctGp1i8WHOQLT5JYMfguuKZEVR2e5cx\nDIyaHJagNszs97Hc/OSrB7REZh2OApI5GjjaEHcIrGnhSaW4PR1V4ikVkesA\nu2uz56kkV4/L+Ml4by+SZBhKFQJbNXmU3wF6ZDAYaBpsjcVqn8KssHIVkrlA\nqyuvV/3bgSwKsE8v2Cr+0B6SwExezCaiGn+NOadyAqr0tf2yyZDWJx7pRaKG\n6dyrT+T3kmWQJeYj7i6BCftkMTnGNsPjM+IBHvl4Hvs7AGd75VfOiwshEmnq\n3Youvf0Y6hTnz12JHS9+7yw33q2GS5o6ES+Kft8ls4lzK8ytZuUmR5VVOMeY\nCBF4\r\n=8SwE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2844a59db6cb59a1541c21f6d235accd16dbc1f0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.30","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.35-renovate-non-major-2844a59db6cb59a1541c21f6d235accd16dbc1f0_1597363726411_0.2350821989013938","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.35-renovate-non-major-7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e":{"name":"@balena/jellyfish-sync","version":"0.0.35-renovate-non-major-7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.35-renovate-non-major-7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd04551fd58276ecc0ac29ea7807a003c2ebc0d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.35-renovate-non-major-7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e.tgz","fileCount":30,"integrity":"sha512-JVXLRFe6el0nXp9Z2tGpgAy7eZeold8gAwXitFTDKpPz0YUPpnQZkKvflVG8uOKh1Q0aYqzu1fG/QAY/d/LIrQ==","signatures":[{"sig":"MEQCIFmIAjwX0f8nBJvwqI7zIudIbiSYjdngszCdnMfxzBMVAiBeDukQhQyHvmLzMHl+Ry2WMKbzcxBOMmMKB6lJi+q7KQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNdbnCRA9TVsSAnZWagAAGcYP/1PYrcKSihjPYDE/JbdH\nGeKTKI3IM2tYbgVuO28lO7q2cdVrGtGjV8jakWRyAScSRjx6gKu2YQm3QFK/\nlLfUkLtFUIdK+n6A+ULDhKm7IfzRVMuwZmvBZcz+HUs+gW1stGKOblp/tqYT\nu+rsEQxIgDfx/fMCpSvfS4Hq7lAnm5viw2EEtg2SY/ER2qHIthvxHTWtLfVo\nWQA+mmgHCR0fh4+wmX2pdUrImW00PoJLPJ83Avi7jxjMMnkdCctW51SCEmfy\nimhx8y6X9D2YxQbKTMKSpCzB3IGatDOcID/pcVKKm4mip5JLWyew0b3qxExQ\nACrnRzxfGtrNOnLN4x7R8kl6DmKigMWdKW7tGst6O1kvP2OUw2LdGz578Gm4\nZeajB2GFXeBA5qRO08FllzxufLGbxxX+Sev2UNQAbi/IyXMBFZ/mFodOuhdR\nkpnqqRYyY4ECKkhYbVujczK/z8aGum8r3cjzBLDwnXxTKDRqUCRcqkHqWIiR\nQnLcPXTdo3s+PCbIvs1jyuhicBLFMsYv4JwaqFLyCSAZYh9YWUW6SwsT2s3r\nXZnDoejysV1weIm1F2ELhqVUblQvoJ/MJ66t9oIbOYbaeICoTFP8+kxTnR1O\njRTIQ0/wRiHheh1kH9gNCcXrI+HF1qe1oQurCzJQpyvPdAC6eVTal/+/dB7M\nmyx7\r\n=MypV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.31","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.35-renovate-non-major-7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e_1597363943114_0.12140857477526112","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.35":{"name":"@balena/jellyfish-sync","version":"0.0.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f88ac4be8c2d0079eda26ba1c4dca4008ef6653c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.35.tgz","fileCount":30,"integrity":"sha512-b33JGUbs1dcR71Vi4yAHrJELefcKVIvTUrPKKaOTUkRiBQKnb0YSdZB3ismHkFvkzRkrToMiHtqn70ATWyrKKQ==","signatures":[{"sig":"MEQCIG/9l97eBW0om8bN4IeWOw2GfJ9nhc1DYt7+kouLWDlnAiBBfpBreL+QcHtUL1rvN3XfSrNFu8+z1uWy3m5ZYnxC3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNdehCRA9TVsSAnZWagAAbLAP/2hWfCadi9ehyOkPRQ56\neV9Uh4U6RIUwZ1/iKk7qd4p5g5Pjoki+SWo5OXmk5SxJwAifWzkiIC+pYP0a\neUx1osRvMAxStlvyxjLnSv4SRcuAUg+ORrelkBvdWOhfsaqaoCeKgOU0vIno\ndjbkOiY3HYn3mFsjYGAHIHhlILFAoFGNUJVzRJE9CGFiYdYMK5zGBmgeIj6s\nT63DasI4fVZKG7LptMz3MoADNaM1Cw1l39zaD8iHlFzvJIrx3b4NiRj8NvkS\n8fzx55To9QD1wiumKrw2SgVlrf4Z875T5tNzUpJUXAefkL9g1PKsaFAit7qi\nGBuEp7Hhsint3AnkOLp8TE2oHMP9FYwdJHrZMbNBgaKNzljH2QheXpY9Q8mv\nWXGeX2W0JHUpvUzo2m44SRHqcVpyTb0jCnf/Yt/arHw1Ch66MxY5QWR4fzp2\nXbGLwxop02YossYq+5gH0RjHr52IiH1hQBSMhbcAfeET840fXwSDDb6ubWME\n5wUDSwQigp01d7laOXgYR8ZJTnkeLxhODAIXH1kAXX2tg4BCeSu9oXJEXVFZ\nP72z3ijOba8yZnA4bbTmhyStbMNCVvNQ3otCyCncJaSV2CI6h5NVhjLWzmO1\nAROpH/orD6qIfdBcwm6YYsBb2V4cEhbsp1o+4butD79Oqjby40h1wADMcFwc\nLrT8\r\n=5+Kx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c2e255b79a4d117e2aff1e44f4ed942c1e84732e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.31","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.35_1597364129047_0.09953006107812046","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.36-renovate-non-major-c11d709ead17c325a0b886286de8bae2cb1477ca":{"name":"@balena/jellyfish-sync","version":"0.0.36-renovate-non-major-c11d709ead17c325a0b886286de8bae2cb1477ca","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.36-renovate-non-major-c11d709ead17c325a0b886286de8bae2cb1477ca","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"340d7deac341583a0d2339cda0b6b9bb223128ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.36-renovate-non-major-c11d709ead17c325a0b886286de8bae2cb1477ca.tgz","fileCount":30,"integrity":"sha512-9zDW3EWRRzN8d5LL2IqSdcg54XlIz3A4y/ulCsKj6YNnn4PKrxQNHzS1aqJMYqWkLPjqerx+pj3/KFjAzWYqCA==","signatures":[{"sig":"MEUCIDxOSIlENUVvbCgXCzT/C5RnBPqsyUQQtAc+ffeIDw4HAiEAgir4osKnw3iPU9mjxkPWy4Pc7arUA8WTeVkGet3AbeE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNiDuCRA9TVsSAnZWagAAxqYP/3QnZeIaeHVu4wGfd0LD\nS13+UTz3bd3Gukv1ehUgRvfuryBZi0Z59ya8gJqaFcYqV7bi5EQEIKn8yAZq\nh7l7sQTyns2Z8gH4d0kMB5gR7h+m25IXkftkF+CJ5KTqK4zOOISpHKcoKWEr\noOBRZ1NvBX3/7YgChTGCTYDd8HbVDGt9LzypNQPjDI+ImOIYfm8fMPcqCVlo\n9Bfw/H1bzjOCQu8mSBjHf35+jHPSBrs59tIPQ8FPEWgQa6PgBUtLBQGvecEG\nPEP50TcyRIf5FgKuKAlSA2sTg7vtdHSmBFgnvVKRLQChQhSYFliWDJ+2svGO\nUeM/cmiEUYJ9N6iYZl0bwf7ul77kSrC9asZLJT9Z8qQBhBR1T59B+ufzxOjT\nuSQNrS0fk17LAKaSOTXag5TB7vDLcd7KMFLebQ4zFK1YG/lnzzrFU4jLN7XS\nN8xD5S2yYLWZKyRieqiFMWJpEEiuOAeOJF37XCKypc8rZEYJf03OjeXkquHi\neK28vBKaP4/BBAYrRr34yHk61+M4s4qoi3n7khj7ModzXxH4zciBJVTsYnlu\n492ZSv+CQZfmtbKJlovKqib2FQdt7gJJKcQgsQ0Nsy9K5lpRT9LLTfBnvA9m\nV1llsmNJrShXG7GVhLn/n1MLeDRGC+iUyZ26Igv+KSzHrT1tqx26hCgTTqQR\nN2ix\r\n=OxrZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c11d709ead17c325a0b886286de8bae2cb1477ca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.32","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.36-renovate-non-major-c11d709ead17c325a0b886286de8bae2cb1477ca_1597382893632_0.9642561579030833","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.36-renovate-non-major-fc2e6a0637ea2b241b77b71833956e198cb74f02":{"name":"@balena/jellyfish-sync","version":"0.0.36-renovate-non-major-fc2e6a0637ea2b241b77b71833956e198cb74f02","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.36-renovate-non-major-fc2e6a0637ea2b241b77b71833956e198cb74f02","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"658762ea9700b2ee1a3e4086e871f293e835830c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.36-renovate-non-major-fc2e6a0637ea2b241b77b71833956e198cb74f02.tgz","fileCount":30,"integrity":"sha512-8rK4sv91UBgzsIdkGq0Dysep7WYTJc9W7lmVuXse4rybREU7Dclp82xpjYVkzofAFRCBZegAQ36MAcRmk80dDQ==","signatures":[{"sig":"MEQCIFR/5mt9bdUXKJd7gWQhwRNtyLoC8IGRFVIJ6zdZd1PdAiA1elyiP4d6hfwYQxU9MNbNWzchnULZdozG3pwhonfc9g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNjsrCRA9TVsSAnZWagAAMXUQAIMqBArWVZnVzcBxwvtY\nkGqos5lbRhgsV80J2ra3LA/H+6/RBL4MxN6xxY46dLY0P/zFI9XO5LLHZizC\nkUOo6fAa3QyEk3+QoiqohswnL5E1erfm8Uu2J5oEUkCI5t+HicxL/qSEsdQ/\nKKBOptAEELdRwf8S9hTmHsuUlvj9sQ1JvjO0R/5rYWjN4pMplY+KZrBTgmiW\nrXlGswmUyVZdQgNL72o/IIcbfBEpNg65ck9+1i3aAhwqW7GYLVmYFnEdmiW2\nMLo4L3O9FiUcvRfwERlhja2pfk2qF4gS9aeohqwdu9hZKf3uv/bS6YhghySO\n3CtbiJFqGpGzxYGFGmCgIcBoqW90HeHpCyibgkDJIkQMEsZQWMaLDiUEzPP9\noyzBls7hTbgeUZabrf8RSee8O4mVHQ46FeMWUjd9eTHgLjMTx3pMh8ZOoh+P\nz3D7Mj467z1S3RQZfTyjTZKwnIIBDt1HXu2j9ye/XweN/uJekZCWSJa/3LeZ\nTVPvsPFxnGy5MDlD3KqEg2xyW30pcSjN0HvP8BkgYlgaD0ok4xBr2+tY36cB\nQZeh3byGW4YAUpaETKieznZ3iWUh+0E/g2QcCpk2ROyTxqnvaskUzZ5hJ9LK\n+lW0D7v3IaYS2cxpIsYS7EjV0H+AkUeOWQ4TI6zJAZDmBlHdApXD4s9v9THc\nbhGV\r\n=C4OH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fc2e6a0637ea2b241b77b71833956e198cb74f02","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.33","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.6.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.36-renovate-non-major-fc2e6a0637ea2b241b77b71833956e198cb74f02_1597389610805_0.9393285083006353","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.36-renovate-non-major-45bb1cb3da30cb5870d66ae6dd431e42970a4ae6":{"name":"@balena/jellyfish-sync","version":"0.0.36-renovate-non-major-45bb1cb3da30cb5870d66ae6dd431e42970a4ae6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.36-renovate-non-major-45bb1cb3da30cb5870d66ae6dd431e42970a4ae6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"81aeee4ced5c19b471f9e7ff5a001036c5dbb2fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.36-renovate-non-major-45bb1cb3da30cb5870d66ae6dd431e42970a4ae6.tgz","fileCount":30,"integrity":"sha512-e8OY8HSJ3uBYgkzLEkB3dco3/VP64OzL/ontYBksKxiGrSqeEExxO/iVoic+MEtVROhvxBbv1uYCVi97eVIgxg==","signatures":[{"sig":"MEUCIQCVUCkg1uiUBT0N6UwOCcNffIq+YT5KJAwjE/PbzNxHWAIgC6UqKN/1GQ+UpmyO/xK6wj08AHKTZUKFeaT4rmLehqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNwS0CRA9TVsSAnZWagAA+ukP/3FkWgtmcPyFoA2r2s1n\ndUX3hj7JZpexmV0nxcNko8oES0mRFS803DHxU6Y8W+4yEXeQUvxInBxsWYAA\naDGgT8rJq75WAd6I7MnUzdVYCrw8xPXqRIerEsYoRRgLJnY+DUoS+3rvL7Pc\nq9T1X2OZ9yGzwrxcs2sCIO42L4ionjRLlX38MHmQ6BDUAU00wIBpXh9G2M9f\nAjxNI1Q/O3pYigT8qcGb09CUv/MQxIgnjiC6FuwINllukCMWW23reycYAuKF\nG8U/Qx0b7Q61pxZW4Gzy0j59hBEA+bdLCDrVCmEt7GMmGKU5mJgytBjypO3t\nbxR4RD4RTS4lIf+hjQpO+4R7i6+Lk5D6wOQZGeyIgEW7axs1loLdDK6cRLip\nfU9r/T7LvQintbuW0GDHSWMU0yk0H45Q13NYJ3SQlShK3Oi/ZBNeKHeQlZjZ\nB6t/kz8pRU5pG/KmGIjvomt87R6QYGr1pOFGf8ZGhMTp6nVvFh5BLEPvitMP\nmoSkfaJzV4Tlfl1kdIXKXkx43cZlZEQsAuqnedmmiwaDsShvJ43Or1/RIwjO\nWwvtLiF2p0ShQcYC9br5cCOdzhLW2vmFJDc3dB5ETfHo877iLrUjLmgjQPBy\nBv1AysKb6UtzOV34m+sN06vWmyleRVvgpM6pDaQJ2bNAfB9XD21DnagBdQnn\nteFC\r\n=IuJs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"45bb1cb3da30cb5870d66ae6dd431e42970a4ae6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.33","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.36-renovate-non-major-45bb1cb3da30cb5870d66ae6dd431e42970a4ae6_1597441204252_0.09111156115940822","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.36":{"name":"@balena/jellyfish-sync","version":"0.0.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"15689e8be2502efa849f51ef5f9c3ad40cdf9918","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.36.tgz","fileCount":30,"integrity":"sha512-e0zZXi+WgDNtL6u9UzM2fjv/OjiCzsqwf3DEzUomkOeUw0UFwUWqPVFamecLZqD1oFPfGQqswPqNjgl+pKMIwg==","signatures":[{"sig":"MEYCIQCJmY+sGLZZyoF420xZcRRkGJXmZBDQmIjxmvML4y8VIwIhAK0etarEMygoTt0xYzpBTeCRNhf+jZo856Y5oftEw/wO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfNyfsCRA9TVsSAnZWagAAugwQAIbTzEgJkjIiwxJpwURA\nG6suhKhyIvCXw76+qXUxhbTcWWpuMnSvQzco3s33rjkLNPs5a5gRFD6D8wsK\n11JGscjZMMOZQlUkxx9TUlfnZBlx2sxkFJCB6cVuq7VSkURZHRmiQn3VTIjj\nmvVvP7KMHPUznPLDN7hDc9GtBFrl6jqdCYxtBKEQExxz/lTyGJOsu3Mha6fP\nKFiHO02D6ENNFs64GOpzcGAr/RkLYpLfb9GMYBcXcWXls0SmUEs2wcgi9i5F\nMZezuIW3U1JjHb2mHn0uW57F/+UynPgzk+YX1VqdDDQKzxXUbUttuTxLw53z\nznPQzpKayY29iLGcrKdIKMzHweVx9+QjnI8RbTJ2LvSfZjAyJPMPz7r+jkO/\n1hICniz+sy/jku1Tb6vf6W/+HFBRiJVBb5FEszxLIYrhLU3/uCaO7Kc7jA7P\nTvtos12+ypCu0zq4jW0HuEx9Yy9ziKMINLYgdexXFL7g6Q/j7Cj0n6O8Mtcb\nP69BR6rLPudQeXWXuNvFqEirQBMIZqFBUsTSQW6MUk+djhua0E9VdGoDp2ZT\nHWTR8DuChU9tNnoVynW3+NoLU4qcDpqOrMYNgvd813GW9N0a0v0JNbcq/36B\nzwp+6uiDqDXlnWDkHkDuWPIezSagjeFGsyt6NI+ERXnoEFMD3DikcZ7EmIHm\nI+YQ\r\n=M417\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b1fb0d1fb3b063b4264735db0f04d91ab94e039e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.25","@balena/jellyfish-assert":"^0.0.23","@balena/jellyfish-metrics":"^0.0.33","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.36_1597450219919_0.29939291930591705","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.37-renovate-non-major-0bc777bdc7f4742d83d3cfced48483dee7ad8f84":{"name":"@balena/jellyfish-sync","version":"0.0.37-renovate-non-major-0bc777bdc7f4742d83d3cfced48483dee7ad8f84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.37-renovate-non-major-0bc777bdc7f4742d83d3cfced48483dee7ad8f84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be04a7274ba02a5f8cbb61613e093973aabc9ca1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.37-renovate-non-major-0bc777bdc7f4742d83d3cfced48483dee7ad8f84.tgz","fileCount":30,"integrity":"sha512-OhZFxCgS6o5Q26QFx3JSGkHeR/mhk3ayQ5FUDOFtpB29/yiy2ok/btmh+1BzqJPGeH2TWbJMPx/RQfACx6HYdg==","signatures":[{"sig":"MEUCIE0xEpCjpZtu7kIq8ykwgxO6WRjHzx0Usx7ylnWXJTBIAiEAyHkU0Zc/RPQXqtdiaa91bNi4/OyGzd/YDqKS+YfT5lU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN0ocCRA9TVsSAnZWagAAGIwP/0OiKBUDVv7bT+iNOaYk\nifrMnO4rMPbvyZjzsbM/XBFAKcErIy64CjtvEomOKrX08Gl4k4zKz2ih+UGE\nz6qtmBZxvEYMfM6SEMVaN6JIp83Kid50mG+erg1WEHH39d/YjkbUzUPNiwyS\nGfnz0aqaDWVNciE+VEkUGO8peC25le67Y3ro55t4NpMeVa5oHi3nq0ycx4CT\neRBeJV+XffyGsSOCPi3aqbRqgunxTFtrFez5A1zs9kUi3MNjyM04TadYlIfJ\n1AlgUobcXabAmoQ/24G9szLYpiYhMifiKhllVtowH2lwbjjYIQt0JnHjcZ1p\nZ1wnwFx+CdkB3S5Kqpv4K1VdYZsynPr2IKQdfHTgEQJ4Z8oCK9bqc2LMm8dV\nA1KLR2OhYJLhrMY4GVee5hQ+pnr/TMjoBPp0B066tSwuGZquf/QZck7iK4Ih\n72R4eT/EMWWL7zCpJWYg3V66BEY4U4PFQqjjvdZ9rNrFe5MMxCOMs7jYqnGE\nxP+t+E7swPaY4exJfROPR2vjDEbH+nTTbRCkM9rruxop5s6dvuVfL7PjEtv1\nkmrDz3MyPtJwZFU61eGDE4TjSGiJ3JFrzt5UsI6mvNSdVqZUHMGLqKKozeAY\nYPqQ3vvr8rX4hlbKNlQ887uDGNEwwsE3ocNMkbPEEkfZpqU6s8Vy/cd8UufY\n4fBQ\r\n=ZkZ4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0bc777bdc7f4742d83d3cfced48483dee7ad8f84","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.34","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.37-renovate-non-major-0bc777bdc7f4742d83d3cfced48483dee7ad8f84_1597458972130_0.5559170749431022","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.37":{"name":"@balena/jellyfish-sync","version":"0.0.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21f07519783e50f9634fdb47459975661ff2487b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.37.tgz","fileCount":30,"integrity":"sha512-RCNZF30IBoU5L+7yYWdp1bknacg5n9YG6Tt2WWmymrik3qpozzCn45h00aGOahaC0QXOqvs3GdO52AGMPNyfcg==","signatures":[{"sig":"MEQCIFIz+laDRgujBgKVuhcqlwxjfJvKpR47mE6URbSMGlw2AiAnEDcw/uSqKPxKtAZ1OOKf0Olq/2xn2zaYiUwtJpgdKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN1qECRA9TVsSAnZWagAAOK0QAKGUDXIO25uVZkRrEifQ\n92cnHXDu7lzeKN5jHjmIRP1mSwL5WipPGugtv1e5KjuODXRnz3UdXYvXcaNh\nXp2nRuyohDZXfsc/rW5z0awMb3ekFPZBdpe8tYh9R7uZ7j6DHx8sVKA1G0PO\nZps/D+oe1hpPYIlXH9wQFCp6TVpe7eaUt2odb71mxz0GAkw92xF8CTOysx9G\nGm2xmB4VXv3htQMY3pyKK0HWqMPjlAoYHV7N+MUQ5dJCE0g21h+UA/uGchEA\nOGDImsSTGWl2krTUuomTW6oxa8vFxbOzMa+PDVyRPLnInqLKq6Pd4jzV85x2\nkOZ4CDrzBcEn00NoEFsIHS6Xd5ZtU2PJ4LMCbfEXh0rLUymP/Zs3y9sER+F0\nr/WwQxJ2PeuBnKfvbMmyIaZ4QFcgum0hOaB1Hohd89bDkWUfaoWTCf8mmw+s\nmf1toKZ0cRBPWbcJliWfldxq916bB/pZ63jpGtrW5aceI88o6NN+3DejXq8M\naG4cYoPJyDPUo8qxPFvwD4RvlWdGihvmKpNsqql2NXbKl7jcN+TiZc9mKtVL\nE20uUYI/ohitHJXYNjRcAvDX+qRIwd9SePNhEa2UXGEMugtAhb4D1J+FO61V\nPCZ+y4He0iLktJ+oL9+PsQtUNotv+yRv3c59MqKNkQ2QEJuawPmx2hm7lyk5\nKb2J\r\n=i9ma\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"38b81a7b92508f506e6d719845587ce6a19fbefd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.34","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.37_1597463172256_0.792651005461823","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.38-renovate-non-major-00050a5616f68756059f64323f5fb5f2a1c9fdff":{"name":"@balena/jellyfish-sync","version":"0.0.38-renovate-non-major-00050a5616f68756059f64323f5fb5f2a1c9fdff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.38-renovate-non-major-00050a5616f68756059f64323f5fb5f2a1c9fdff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c3fe636f50b4c55a110a8a4180fb254599ebe2f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.38-renovate-non-major-00050a5616f68756059f64323f5fb5f2a1c9fdff.tgz","fileCount":30,"integrity":"sha512-CPDWPGWIBpetYLBcbg5f9ooSNjUMB2UPHv52FJqpmyevAMFK7nhtsgatkPAdpNX1IsoU4GeuwbxlXIz1rP0ifA==","signatures":[{"sig":"MEUCIQCI/VyQc5kX004wBiWItMLm3onZ5Bvwywl733UNgxllFAIgXc1CFwDUyAcMpUJ6loD6S6TrBXLNwC29ijYnVrtlJ/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN2SvCRA9TVsSAnZWagAA17UP/jwyPe/W5ogdgKQ77eCh\nvpTouFP09+bb3A1TuMX9eYXx05jk5640vkbBy1jlgRK3GmbBPWH5o1PGkwZR\n38J2u2s9Yt/UlG/Bsc2iTEnmt8XggZZUZzUK6Q0F6yqE+cSgyG3E3m1wUUtp\nT3mJ06kzwTUPINmzrCalQPMgBwrAF1etkLT8gQmenzl5Iba8eczyZJZ7K+hv\nWuRikQnStaKucng+D0GFVlMs1nJKfZKLGadmDUCHRqSI+O+OMhkiHW3tzegW\nWJwuQ58l797pgviZIAzjDCY/ReOmlk0vEA6hlP2vyEmKazRbv+aSnGIC1XhG\nFzFrYLkXyecDlWAL+9YrpZEKrlek9y0+CJGOBPukcCXzZWL42wQ+nyDQjp+O\nJaRdbOdG4EoLvoRYsDELYuHM3g9kNyP8TBywDDz26yagiQSC8PpzkL1bSUVr\nk7fw8YOWPVAAXVK7kgcVw4mRJOJVkt8exK6t+Q9dt4QAvuXJVd/OBYOc80Jg\nOCftL5zoIAg+bK63uLS6iWs4ygAfwrsXkQKVahnG+NufIQ3MMWkTDTEidJ0E\nKSzjNr4FSU290rcVtivTUb/2pSca+LPGOPohtan8lxAmwIlNx/FUUNEfJL4k\nr7OKnhWHnAUDeA9ilaysuqRndcC24gxoebOWvtuCWL2JDvI8X0J/716MFQQC\nBbob\r\n=4gV4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"00050a5616f68756059f64323f5fb5f2a1c9fdff","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.35","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.38-renovate-non-major-00050a5616f68756059f64323f5fb5f2a1c9fdff_1597465774750_0.8245483622755023","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.38":{"name":"@balena/jellyfish-sync","version":"0.0.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"056849b449f9ffa3a2de8d7601813f9a5fb889ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.38.tgz","fileCount":30,"integrity":"sha512-Ztbv+YX7zq+e81WfJCEgKox2fy36wKEaFqqjDGxRwOD62p1ummvD134fPl0hSYnPMiG3Eqv3KxvOAzLASyFK7Q==","signatures":[{"sig":"MEQCIHGnfgjRmm1EmjsvKXkoz81hP0J+bhaAGNnwhDMIysC/AiBX29ck60m8wjOoou/R2bNMG0LsOPKoJGBs3I6HkQdB0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN5SZCRA9TVsSAnZWagAARsYP/RzH8Dbk9DiDalDbaiHc\nefYSa6BKe+PxBNGLzcOW2We0u2fPD0WO+LwXj+dDM+ciDJt+Im8vChiAMstE\n1UVecesDHUNaH0sIfRQ8EhMl+0eRW8c/JatIiJzvB9ve8fV8/iXhZS3ePPYW\nE7MGiQu0kl428uOG6rEpkWYBPO+h3g1XYj0iM4Ifwc2ojEeq8nGw6VNuBBgF\nh7Xmk8PdOQcdbjkEAP35fN8OE8t5y8A6R7Hl2oT0xD9lltN7NyJp7MKBFeNk\nJxkyak2d93UK1c1Z6auYtrSfAE5MSDWBDFi9f8qBaeSEraNbfHICKmMtd/H0\n8YmKP6+3aOrY5+3KCmHvLyRvS2dnpQbdF3Sz9HdDB13ZMwKKBMdxmuW8tS+p\nYcHm1dMbjEZ65euXPLd+EfWZHP/Upp+DbQT3y4Xemg0KfhF6pD5Rn8UUpB7U\nhIz1J6ovjHneSFyoX9hjhmALq2K7d6alGg+MK9NtJqRrefxL+HOdGOoe2crI\n8iyvY5f7FsN7F/z48zNYvwD+UhitU0JBMWeCuJtOkf8RnKNdBxEOLakxR5m6\nk4gNMiPpN9LCYQN6IT8Yu6LOfj2lI5L9jYIfe+dO3fH2E3LSOZfBJRcAjQe5\nXmdX+iQWtYExlob/05W96GQ66Y8LUPzw+RWlKCP8YYUryk3PwqByDx2bnqZt\n0uYm\r\n=w6RY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"207c0f18c76c8a343734ce8b7edc337353376b09","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.35","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.38_1597478040893_0.5013957573730903","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.39-renovate-non-major-4b1b1dd0ffce23cfd126b1643f70b33092b13a0c":{"name":"@balena/jellyfish-sync","version":"0.0.39-renovate-non-major-4b1b1dd0ffce23cfd126b1643f70b33092b13a0c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.39-renovate-non-major-4b1b1dd0ffce23cfd126b1643f70b33092b13a0c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be9d1f963ae6f12f125632b12b583cb30921e5c5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.39-renovate-non-major-4b1b1dd0ffce23cfd126b1643f70b33092b13a0c.tgz","fileCount":30,"integrity":"sha512-MYMM40MZzAJsuiJvxhbyLFqqQ1yQkmVfs2mYzIUsYMxgKWIvvgn+iztK2dxVGjJHnPhH7NbkejEKbdTb6PbbsA==","signatures":[{"sig":"MEUCIQDj8XO9pU8yHouRXYeie2tkqysDZvbnvSEmNcW8mgdfgAIgKXaib3KYqGKfaeyBS/e+JrCNLinPiiD9RKrVLd4EldY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN6MrCRA9TVsSAnZWagAAXroP/R/867BZPr/3Kl/eBwFr\nXPkFVL1PyFgiee8RtJ/zh02+iJCJq6W8baNoIdT7q3xnfmhpn2ryw2pralpf\n2rJ8ua9J6ftu91GavsDNO9+jskjzTam0yoG/RLIIQpG15AfIWI/5uKG/RTXa\nIEJDHtLgQAuYITykU9Y0MJJuyTAOok0U6j7y6URh6Hal7Z2k6u2jpXVGO6Zt\nncdzEQ3ICVlTKsDByRRRkEzY4txzT1lp3e0kiFediMBUq/pfrZqTs3uc/8I3\nF7zDdX4jKMprcgNrTroGOklG2i2OmR+bA1b5lhblj+fRoED+zHDsyb7N35jr\n56RxItNvmXbCZbM0tD5fbTOfgK03L0zM9bw1pgBBgg9CRkHKhjqkYkKyfOG6\nCeXj9IjVFin9kPC8sCcodnDOzuVQSkGtSidjexzCd5TnqrU+I2JR466Z1cIG\nAorvWXpgqvcpiRNU4yXg0eUv7LbricrgQJFVs4U83DVqwiufy6LJjkvVBz9u\nO8GkyxwKMXFYt634zvNq0kUrCJd64CGntI7AYJg+xxOmAFsQAuVLgrba5e85\no2ljjhAr/QXYGyXAgSTnSfHrPuXMApdQE2m0ZzamHGOUt8QsqnyY5Si+G4AV\nMQ6tDWpv1jE6ISvgFC5A1h9Fny9vIGal6GYPWIA7M2Lel8DlRUb2kxLJEPud\n7ugn\r\n=D1kV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4b1b1dd0ffce23cfd126b1643f70b33092b13a0c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.36","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.39-renovate-non-major-4b1b1dd0ffce23cfd126b1643f70b33092b13a0c_1597481771098_0.9478857598276713","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.39":{"name":"@balena/jellyfish-sync","version":"0.0.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"77288dc3939bf1e5c60ebdd1dc70780de91e04e0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.39.tgz","fileCount":30,"integrity":"sha512-q4Ww0zicyVvHLZD4EJVqm1svPQnGSVnVSrWw+QntV0TtxNOsVHuIIx12Q0Svg2YoydMUX1NuzMKg9DpAh7K6gg==","signatures":[{"sig":"MEUCIQD4DWQVi1OiBWzYLxGxdYcsUAhDojUr5/D5t3Dz/j1BCwIgWkCevh4NErMsGbilNm1wAgMX2xl/B9HAhQaBVLIL1Ps=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":245927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfN6PSCRA9TVsSAnZWagAApdUP/3BtZef9gVI2ZR01XMG+\nH7AFWK4w168kTzuvclnrnaxStHCfYZHVZi68zCUUdr22Km6Lg96NMfClcIzH\nztGSieC3m9GgJRkKujMmaGaJJEpj/DYxt/wy5wggZ1Mwx6N8R0B38lldMgjM\niLvoQVWjp+8AW5+XiUeQOGGXvL12A/stdYDyOwLml6xVD7pQLrcadEyykhTW\nuwslpPG9HHogQEv5JXtMymNkd+uG47jN5ou4GY7g/zPJ2McAN87H9H/3tzOB\nDkf0qX0Wo5Eav3h+e2a1zhanBT6cwVCcIxmNq/S9ud10RzAKe4dXKVnNS3+j\nW3zAFLrddJ9DhHLdH2WbvZ3uN/XUomQHTa3yJLTkoi6+LhhRIiuD/229r45f\nVDKlHhhGt+nrbIeyazEJtJIGBcqHRW60gBLzLbvUpE1qitr1znSCH+NkKDiv\nRKGiTTVmnE8P20cbdSWcQgo7/7/mt7r6fqbycmMWGz1ZdOYq6CDOCTBz/Izf\nb+tevaOHiJFmgxycPz2r/Uaslz8EvaIqqChc5kQxLWAFkZRroamGvuc5IJ34\nXvWoDGiGFkxn/hBRxpKhKcZ1px5VfITohG2cYNcrSFAJm9h/h7uhcPR6mQts\n/dZmGR9vKUxfqV5ueyYlo6Gt9oF3cpFLFRR44bvfP0X0dqEdIeNGSHBR7l+d\nEFhh\r\n=l1b2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9ef401b68fd08960f2ea9aa940447a7d73b27302","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.36","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.39_1597481938238_0.3914990998469816","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.40-renovate-non-major-0db755c8d71758b82eb51dc207f44172e021beeb":{"name":"@balena/jellyfish-sync","version":"0.0.40-renovate-non-major-0db755c8d71758b82eb51dc207f44172e021beeb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.40-renovate-non-major-0db755c8d71758b82eb51dc207f44172e021beeb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"117f74cadf30b91ec56b811b85a10a26317d88ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.40-renovate-non-major-0db755c8d71758b82eb51dc207f44172e021beeb.tgz","fileCount":30,"integrity":"sha512-KebzVyRqGQdcpZo2l+ls7GB4t9iy0w2UImjBLS0GBwDqVzb93ffR0A68piuJORfiowMWwGS7HQnAgtBwRLNSMw==","signatures":[{"sig":"MEUCIQDgR8dPqwLENTgMZAN5vEPMES7uW4yA76T7VwoQjPAE1AIgED+S38LHwaLodbrAbvAiHxNnI/IkD0ewU9W1wAHjpfg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOJu0CRA9TVsSAnZWagAAkLcQAKKP/BxVrJsi5o4TUj1h\n9AxrjuL/qe06e9i5Lr5oelBfbNJDNaJ3POiNR+67a8cHfzDSUDzrOqMmCorP\nxaXGJEwOkc/poVY5AkYjANDDH+C0WWDakhu4ueh7VqCNcjaV3GhF+i4BMYbF\nxl1z4k6V986a5rMSpPzReINbXOLlqsF4czWwPN+07plrv6qhA+IgAMS2x8Bb\nb5nF1S2F7C+DGqxmU6TxVWdBkHDNJ6F5Hq3RtyQusoXwEBbg/l0s5aLSqA7i\ntfwInbtuab1Cl4GnPYOnVnwUWg7xht9iyjPj/AN/wCktsA33lhtUG2DSZ0ax\npLcrYLI7VEavHYM+olo6vrWYSvk0vy9cfqnGygd8Ll8yRzQ0C4ajf3qV9lAU\nqqL0EwYejjRPd9N/gPGUUWVsQRrbtDnB9fH7LULliFreC6QwiD9VySK4vkGd\nB6LMIeY4hRCLb1NGfnYkoX2wI/qgbQJyxl1nVzpq+8upxfTYfdeEZ1d/5I/w\nReCxMJN3958IhGvTj3Uz2JXwB3JDph+ILTwAkZ8hCx7MlfeVOFlj1ZkN01LJ\n/1wCD/UxxsjiINUw4c7QrwN7ajde/LfGoPSMj/+9CbQB/nb30Zx+hMvBRRTf\ntcMZtW2ihiWCqBhOJSBgeyMYMLmDTPkQo+0lbM2VSBsbaosjrIVLEKleJ3hV\ntZ7B\r\n=RbXw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0db755c8d71758b82eb51dc207f44172e021beeb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.36","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.40-renovate-non-major-0db755c8d71758b82eb51dc207f44172e021beeb_1597545396101_0.8433361965178683","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.40":{"name":"@balena/jellyfish-sync","version":"0.0.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"343a970f1071018829195032e5c161c92f858f86","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.40.tgz","fileCount":30,"integrity":"sha512-IkL+TwfvIZw3Vp7IunrExdC3LMGobN44TMQZDgR+XKJO8OAxmIQlb2WvlDXTTkTDsMYrjhEI0D5EPPGprcSV7w==","signatures":[{"sig":"MEUCIDWRrjQjM3Co0fIL4NJxiMfMWUti1Viz5pQifYxiUKozAiEA5tw87261mBymXbQh+qHo4QVwFnSLUVpGherr64dYkKc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOKn3CRA9TVsSAnZWagAAfIQQAJaD2BAgeSQc0KYra8IY\nwNgbBMTpkYacBbiCACoM3bBy4PjpaJEXo7a5gRnm1k27TYeStr1+v/aMti6j\nPgA4cIUeK4sFQf9MjIuX4MnjBzJpLeVdwxi7+asD5ji5kKxO+/ZKAx7vmER6\n7tJokMcuesSTLtFGVjz89N1a+r7Qryli8mtsdrUnVwOdD4BBiFK3ZKN2Uvg9\nY/67EI2XNQr9m+0+fU1sp3Rxm7eQu4MVs10KpaY6TbmUfxzrqNxJ03O0Nw84\nIXY6Nqe6akYHD/PfTRpTmYUdhcSFnYH01uP+HwWKcvg+qg/WjD0rHmJ1z4vz\nbTPpHv2p6QauO6lWszuPtocqbfse8x2N25wCfbyK1Z1MR8JWjiyvw2Azh1Hg\nhXxsKScvGN/HvsJQgY21blCXcQZvu8Kv3x17t1IwbfFnaKmUC304Q3X96iDH\nJid7NyUMtiCDkWU2CRbVAvE/S4ZrWgH02pmLBMl2H66Wtpe6nQ3CjDbGkVYi\n7BxFhf9NrQRI5Rtx0SjlzPV6SJIJdEXHWUVJitX2ixxONqzw7zdqCTYiu0j6\nQr7miVOJIcnenbvLSftfq7V1ONIntpPadbJeXEkcH2K+6gb0ZPI3luOImWBQ\n0UUCkJ5uOmFXIykMHmJIUC9h8IJdpdMobS/ItTan1zvWsTVwWeH66rdktMEE\nI8IH\r\n=idPM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"132a33d34026419ade70d779eae4cba2e1536b84","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.36","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.40_1597549046446_0.33880457558211585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.41-renovate-non-major-f02a0a2d053bdf38e0da629a618f7be7d574d5d9":{"name":"@balena/jellyfish-sync","version":"0.0.41-renovate-non-major-f02a0a2d053bdf38e0da629a618f7be7d574d5d9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.41-renovate-non-major-f02a0a2d053bdf38e0da629a618f7be7d574d5d9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc59e7adaf161b6cd98226fff0ce38889d49ec78","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.41-renovate-non-major-f02a0a2d053bdf38e0da629a618f7be7d574d5d9.tgz","fileCount":30,"integrity":"sha512-hJH4F9OuSmKk68PeBz/Nks8cfJjK/nN96FA7zBiOypqx+Q0F8kHFpIlvYdhAOhAqjVzdUy/P5KcFgrsqP3HBpg==","signatures":[{"sig":"MEQCICpOtbCpi/MHdiOU52Zum8+chh5udjJXgHdpmhNrv+MsAiAszJ1hlUJPS4rVl8LRVTbMNh6Sy3trHFnlILUbLVGHog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOKsVCRA9TVsSAnZWagAApLsP+wRZYrZF2AYyMJ39WLwk\n8TI6lDo4/ctVXJhRbcSgMd5UTg+w2gx21TRM1R1h9/BQKQ1p7Blo5LH2Nj3L\nwM6etDG6D1ZlDEGN3ZH5lgut8h8aG0yZBDntU05Zly/7PxXcmbAgc4zbOK13\nwvd+4xTkfGXLEtHrOxuyBlfVanQb04EPCo5SrTgJKc186/q4fuYxGw9RW+Cs\ndJKhg5hXwjd57qd6Qn5UjL5kI2k1pKpJPsJ/PHOTtBjbeba5JFIO/mJyCGAk\nJs4zWjpIcqqVEkv8IdZNidkt5Cf+ca1axXuWqj77kQf3dWbs0P3hN5dlSXnc\njWAWkDURNUMjFAs77vpdUAt7FCcPL/vTOFaWBCiLHt+/TTGS4e78sPE1Ltp8\ngiYxU/NEFvdOgWjCrcBS8izm/jfnC/dZxop3NIe07imA1b2UrR98RmpdcyfD\nhAQNDqb/DjhfBIar2h/XiKNwvcurlUTv5fJUAOHzTnPz3kDJ+w+rEoIZMCn3\nJRiJixjYreb0zxNF0GoTyY5XU6IEnh1kP3HrfH7YFP3/nohQa2bXPOzjAb7/\n2hJS/RKk/86u360YTmDqXKARn+yWSLVhXFkck3eEy3QGzCZLaULvgZKrzwCs\nYO7mAzeb2oF20A2d2uyS5MwHWzSjXwVtIJFhuvYxWgbGNxALceFiCNwY80HH\nnqrw\r\n=WThx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"f02a0a2d053bdf38e0da629a618f7be7d574d5d9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.26","@balena/jellyfish-assert":"^0.0.24","@balena/jellyfish-metrics":"^0.0.37","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.41-renovate-non-major-f02a0a2d053bdf38e0da629a618f7be7d574d5d9_1597549332414_0.5961677344336462","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.41-renovate-non-major-913a36d83c2dc2533dd25429c85cc9fecd27fc6a":{"name":"@balena/jellyfish-sync","version":"0.0.41-renovate-non-major-913a36d83c2dc2533dd25429c85cc9fecd27fc6a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.41-renovate-non-major-913a36d83c2dc2533dd25429c85cc9fecd27fc6a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ce07c9a3b19bbda8979ff75ecd3e0d944378cce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.41-renovate-non-major-913a36d83c2dc2533dd25429c85cc9fecd27fc6a.tgz","fileCount":30,"integrity":"sha512-XpH+wuva4pRANuZFX+aM/KVoXrw7vGcNez1ipFpM6tU6NVH+6Zrj0H87MY6DBjgz7pKIbz+6PTPFwtMnNneRVA==","signatures":[{"sig":"MEUCIQDPT7G7/xzwA2KDIBPenp9iJqHR2bf2AQSYVkfVIok79gIgCSkrG0/+4oxA3L4DQuV9EkdilbVYufmEx+mM6qvo7wU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOKwICRA9TVsSAnZWagAAXMAP/3c+5SN3Ful6UqQnzKJW\nZ7ngO+u4GCXjJh/lpnHgBHSw2LFGkJlo+DZS5981zHhODcWll4gyA8B04jxT\nfU5m9aTqkHvWxHPKvIoBQ+ILxJylBIp2i21roA7cTYvyWpTWfTyVjEq122p/\nOol0lmvAEq6qJXT+qJGOGeVFjHdFgoUwQHd6/JLVPAXoamNlezMhTOiNczDp\n8SwhNYQ1XOmP8k+YK60Ifz2hBSfYarCYjoA8v2YRvfSIxBV9/NqY8Txbkvug\n49ZZaAJ7kGm5t6HM+Qd2MipBSRe7IkMtT2Tb48MLA0HNKi2qIQmO2qBsELDN\ns49tjpx1i0AzS2SDuWQvZKJG6/gkmRFxcmXm5MmEF1LfKExO6rtNEVTDs2Jk\n/3Fe3viipfuyImbtAWOsVVqiLrlNiXNU/sA2KQVqKZPhuZ3lPmY4T30Seypt\nbxgg6HIgDkh8SYqYj26H2/ruucOo1uw7CFGoragZAtT5rzOqEqJpkwCcBN7I\nl2YEhhag5Yti3eZwhIw6RzfiEViO29L+SaJ0X8LlqR0PiWFvzdI8u0VpN0Y5\n12FjkzIClbbwhq++4K6n/H3/5H4KuVfkLQyXkMffQUhwxoiafUEMr4IWwFVb\nLywZ/LpctxHoIT+QgN/VvsHxoq7p/abFWz4nltFzaVYvuGWvc6og+nOzGWDz\nrSba\r\n=vozt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"913a36d83c2dc2533dd25429c85cc9fecd27fc6a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.27","@balena/jellyfish-assert":"^0.0.25","@balena/jellyfish-metrics":"^0.0.37","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.41-renovate-non-major-913a36d83c2dc2533dd25429c85cc9fecd27fc6a_1597549575487_0.6266394481749975","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.41":{"name":"@balena/jellyfish-sync","version":"0.0.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"06fe5e99aaf140d93136bf9e3d544f8c6e110a51","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.41.tgz","fileCount":30,"integrity":"sha512-gGmjb5lpZ4z8aXlLCJdNVwWp2TR3wEcrlPlyRkfuoKohOCzshgWFE2yZNibhh865LE3U12bOfxMi75WUiuBVIg==","signatures":[{"sig":"MEUCIF6Xf3PQrnGimxPO/jo0YKov9E29blTunvRco2P3wipCAiEAlVnzBuzuSNLMAAuzREg4uJAk3edOnfvG8T4KkbmMzLw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOP2TCRA9TVsSAnZWagAAACUP+QHEldsBLdtNLtUbmRtH\ntF/9ockV8wd8mRuXuwxoppu2YJsl9Hpv1OUE+i8S5VvhUrE9yfdtYv1HZzx8\n9tJy2OstE4xSK5nlhn3dzCIvX9m39LAk4Gg7yA6Flr80z1mUSaLj3LmzOaV2\nzau3cF5Z0Gxars6S2/VRC/Xx7T2tPCzfUFcmQ472XA8T4t8b4E9YL9yHY7tg\n86PRwEhIjLdIHq1XC/SjExPWuoKsW83HNgDnx++8ItSh6TbJ2lQEmbokI68q\n1V1v/b/lTmV+6ffbB2Kua4xTjDUTDMl6Zlb3D6+OWeeH+v+VxFgqwM1P4w8p\nlSLIymqEzInQ0rGb1iZ44oHl/8LieHBRR4S79pUTco8RM3aKvgD6hHd+UqST\nqsCV6icwyoBcKV3UA2IfWMu06/wu7tadtTp7j1AF+aWhRosYOCNOI5b6f+B3\nYpM62PrFRjILfQnxB659onav/pELdpJDXwW5UZu5CXeNkpJ54RpIPGoJWhba\n5ogaJ6632Wpe7B8Mmw6kj739/QgEfcfbh85FH0F06mivHeQ++7iSDaWBCGXa\nCZjHByliU32zz+PYb4bEmbSYJHY43ykOhrg2l+bmwbmD5smJkS+s5dvwMaKv\nScgCrbYV+N3Ga8N9ss8mtXyyOVFEhxfhRtvRP4fMo8L7aHJM0YZeTs6HvVC5\nrRj5\r\n=Dh/M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"a5e58d6209fa7eb5a0a1c86de04e0b469c120f66","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.27","@balena/jellyfish-assert":"^0.0.25","@balena/jellyfish-metrics":"^0.0.37","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.41_1597570450975_0.9644633351881786","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.42-renovate-non-major-b8f2d54d223423b4fd47a06bbc455e1a64303ae1":{"name":"@balena/jellyfish-sync","version":"0.0.42-renovate-non-major-b8f2d54d223423b4fd47a06bbc455e1a64303ae1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.42-renovate-non-major-b8f2d54d223423b4fd47a06bbc455e1a64303ae1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4793d3396b3b8e7ea6700be5e9fb78c13dda1b4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.42-renovate-non-major-b8f2d54d223423b4fd47a06bbc455e1a64303ae1.tgz","fileCount":30,"integrity":"sha512-Imdi4Radz221gzxBDZBODXFdF3WcYc1+mj/gLkgOVf3dSdOU01HEbpxF3jkNACwiLWaisMCxgjL9IrbGUBbG3Q==","signatures":[{"sig":"MEUCIHl2Y/6WNQrk8jVfekFQHJAiXyt51G1G0KqL4vY2cugMAiEAv3Sn1LheUu8l59UjbjWjWQ6+DsyOjr8NA/uuoR/EaMs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246264,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOQ5yCRA9TVsSAnZWagAAkNgP/R6T0XKQ2d84g3h7e5CR\numTWuKLi+0a3PMbgzl7tLatNA1qi6xv3ZMzLG/O67EIbHFh0OCEaGoZBf3bX\nxtxVRflvcx2Z9QDPKtVD3WH7m78sy8ZDK8cPn1jdjXrtu6R+rzXNqkbFsRFz\nVUfOpQ9yQHvUGtTq2ht+mXiE9EY279U5rpbwTp4cFonxs0CiXtN54/xHq7WD\n4jTm7ogKe4Ac9RUngJNXm3ywE3m7V008IyU8k040KfDenEc2HcQ4dJdGAKAU\ntu7huKmzECIb5jipcZgt7s5MiZzYIDvfN8qislOYYAO2am+G+C0bZMYoS5hX\n4yJockalB2yxBhcxKmgpJ//4H58tLdNVgSVpXl8vOuEU0ZpU2EA7mLSbpEjc\nV7n9wRSGI135CRgo/8ugn3eQXUTrEPk3lmRCp412kHtnPsccI5GeaKkOqaoq\nZViC2Ky6WVBDLpGHfqfSeRLh3IEqCZk3pyvEy+uF6q2uQpsXMYArIRwNUDM4\nz3Rmep7gQ7WvuEz2TE1Xy6dCKQTQv42upxLVSI/5NJGP+KmHTm5NqNfJu4w5\nCriaU4T2VrFBAv3Pxjgke5dmvqvMDHLI4D0N/toQZjcnxt2Yd5sYcZgWbaPj\n71ZMB1Xhe+MKTuo6EuXWAdVgSkaUJ+P/Eyu1Tn7XxJ2kf65S+P7btxtEMhPR\n2xFy\r\n=JciG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b8f2d54d223423b4fd47a06bbc455e1a64303ae1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.27","@balena/jellyfish-assert":"^0.0.25","@balena/jellyfish-metrics":"^0.0.38","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.42-renovate-non-major-b8f2d54d223423b4fd47a06bbc455e1a64303ae1_1597574770242_0.4901717420637548","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.42":{"name":"@balena/jellyfish-sync","version":"0.0.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7c0085a29f660bebe29ad8cb15b34bca731ad59a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.42.tgz","fileCount":30,"integrity":"sha512-HcKxNu4HYCTpfEK74opQlVuWCPPTw4GR8T0luH5vdeKpFMgUtP+7Ibp7fSTR9RtVoDpLpnVRvMRjf0wYnnV8FQ==","signatures":[{"sig":"MEUCID5fssI8YuAdZdPhJkhNKw+toNxmBnAL8GhNWZMvLjYXAiEAs4tKcEJ8NXLCu4U+LAQBFx3yP0bHjeZ+IPRW67dvZIA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOQ8bCRA9TVsSAnZWagAAkzkP/0v2QwbI0MCnOLFz7nwT\nXBQavcYTRRLlnfvI0DsLNGMb/CzZmj1ioXRO5zmtDcb0Zg0FsmeExPMkhSTQ\nEX6vfSZsAtJwyou11BGxbFe0COlmC04ivuvx+LuFt9A0RTLOarHo0Jqtf3rv\n82BdC1gSxHAYM0r/wR33eXghErl9T7gunYdHzm5I0hSrKUIabw2+u7BgabkY\n8rG1T4+bUVoIzm7RWOWD/1a3Qu3RCBYpuSb8+zeGsj7/G4qbNbwcTNjKojaB\nd8WCBD+LQdkslkDqxRklEVNC7EYcdNGYavm8IMVbBTxy2u/nAxX5XfilaevK\ngrKbHuP79oZFhkt9f7g3/0AR2p4plRefPas7kn1aC1SUfpEhodljwqhO38Wq\np5COiQ8ofzCZMoysldCzsvMI3MWaUQqz1PlF3o4FtlpaYkZGfX+Qjk1NDfmX\ncE0yDK/dLT5fXaRVBDcSwA76sqeFJ5wYw4Jx/6+286h/oFq7UGP/f9EYHE+L\n+Kmq9UAjpocMmpemBaP8+aW/q76apyfsqWPq0FaDNB8NMazJc8oC76xFQOVL\nojDRQRtezjW+RpFv/oqHtfgsVztZ2ajRXRy/3PElKK/ridQFeftfApzZgs8o\nhYrtMGD1JQkJejfhaNlVdtheCxOeqaCjVYrbPPRuPdBz0cDAku56gp0vT76t\nYC3I\r\n=Qmrs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"254504ca65e8e4af66f344bcbdc8fd1cfd19e18e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.27","@balena/jellyfish-assert":"^0.0.25","@balena/jellyfish-metrics":"^0.0.38","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.42_1597574939321_0.39061153626477574","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.43-renovate-non-major-bcfbbb0f0eed8320fca9995df35f25e7030351c1":{"name":"@balena/jellyfish-sync","version":"0.0.43-renovate-non-major-bcfbbb0f0eed8320fca9995df35f25e7030351c1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.43-renovate-non-major-bcfbbb0f0eed8320fca9995df35f25e7030351c1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e018ea14e705c20f7e87598e7021ecf8f04cd3cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.43-renovate-non-major-bcfbbb0f0eed8320fca9995df35f25e7030351c1.tgz","fileCount":30,"integrity":"sha512-ouY/vrlKb+fs9ap/MZ/bquLoporUKab7FYPRXDmW0fCUj6pzZyAavCP1ZaGUYp7lvwWF3J8Dgr1HoY40CNV9Ew==","signatures":[{"sig":"MEUCIQDp9tOy623wO6UY+j02IzEwtJ/4h9FcsIYy+Bn9CedWQQIgeSkesfmklhQI/Icch7+daPLZ1jt27wRW5X9QW6krBO0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246333,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOrhJCRA9TVsSAnZWagAAzLIQAJrSbDB3A25FHzse++f9\n2Gi+VNkCvTo+admmdVLaYmVnQJZmYWteaIIktfwcMZdl/Hs5kWDFYjsEvIVT\nfdGk3K1yPMCwt8q7zvEDwfobawlVuisn4VnEdThI61QKT0+TtcR+dTQFOpZ/\nqsWbl+IyVoYsohU6BMoSSsUrKeUBE0wo/6pCr+7iyhK2VMf6sxJhwKZqrjVN\nXehfdyOiZ/eFSgKBXZLkIr21ti483HbgiAxuPj22WLAKhLU1lXGRHDaLUgET\nBh1mLXUUH3EmaUbJqJk+j88E7ZQ5HtjaKrw0aMU9tmgjk6IkAUAUvV99vAbG\nnpF6V0UjhESUIL5SDfTaRkTrDv/Alp/TfCnGn362ViCrw32/DJaWx6S+l/Jl\nd3clF8Su7PTySNhoERwu6mUP5FlcWWgG7PTY4ZIoOmheHqfHI46Fj79krH9H\nO/8sJFmjuk3arv1rScP6u3TLrtRYTz6+iErLMgvVQ8p+4EZPMS4kqjREm5Ei\nOYAw1KDJbECagDvP2U9AUXDtzPFycSDnGJyz/naECXCwwUaSvrPwj7eASL7e\nDLkTtA0nFWtkSXHt8zEUrgOOapOtDuh1JFk3ZB2C6LHWG/QO1jHonphD5AnH\n9WCgfaq40n+iWle0KzIRDIZrPveBg6PNQn2CTdnDY6JvHPAjUtlUiMYDn0uL\nIVxi\r\n=ERBL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"bcfbbb0f0eed8320fca9995df35f25e7030351c1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.28","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.38","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.43-renovate-non-major-bcfbbb0f0eed8320fca9995df35f25e7030351c1_1597683785328_0.5499122838218209","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.43":{"name":"@balena/jellyfish-sync","version":"0.0.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a19e5ec7fe7322cd573829a11910398bca2b4c6d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.43.tgz","fileCount":30,"integrity":"sha512-sPMDHX88XuakVW8oLQl4xF9XMejjwPHg6S6bSml/b76C6HxNHKGjk+ov79QD/h4hUbpaa2WFviaVeE978A286g==","signatures":[{"sig":"MEUCIQDBngiDkcaqFwidJEHzL2p7T3asOSfBZ8+AHEsG85ETLgIgPFILrcNRXLXWQ/cExYnwdVY0zsT797VDK83uYIqR748=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOrkPCRA9TVsSAnZWagAA768P/ivBmYKlVbr9gdVJPQWY\nJVyW2Wf3Fhed0VMOyykQOTl6T2UJAaCuGo/r149vircPTCpBN+Oju3HyAWDY\n1TP5Te488m1S0f63w7/Bkm/kA1lZxLihE0cQJigJqzivA3N3ogQStNPIpqPw\nYnF51fr5JKc81zY6I7H20VuG3yF3m57haqBxbHxCbFTqtz+gBlLGqbVeZNCq\nKIxhcAxM5vOb2SsIHLIAy+rm5ow0pXDsLrXm/kWNMNydLrD0v/dnvNwuHhzE\nSPdoE6D2qwO8aEe1Od2fwKQMXnZk7vJjYzwXKPG5uIRVFvaYI1moBtEZhEzN\nkz+ry5meJdGeB7p0ZaiGFGemS2zurYxrsGItWS/0KDauA/u20D4HEDd69EjB\n9w+klu4SuL29X4hzkFVpxmF9DVagYEQcP2oo0ZJL38YfQJzGYGSyJqQnMk48\nXW/SAayB7JWkOYt0pFtFxeUFNdLDXO2n8rJH5tU3fTLp80O2+qWJRm6hpiGq\nzr7iUruG/aAZhnLTWvj4pYHKlXPhKTW08uhjAi09BZ4fA4ejqP0LyEgjdN96\nU7nJ3DqDVVU5N8FKWlrYNfN6CcHjlA8F2sVzXwwkMgFNqN+dJtI7mI60MPkg\n07P8lk8jktUwoqmEjlSYy0RxTEADP41LlD8KVv6lZHs2nRnIgsvK5zK3SOPA\nqkWa\r\n=eePH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"061fa994d21da41af7be7b94e9ad41a01b4ce80d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.28","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.38","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.43_1597683983333_0.5927666532849989","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.44-renovate-non-major-2046d4e48e01587c7c8916099015b79309b59375":{"name":"@balena/jellyfish-sync","version":"0.0.44-renovate-non-major-2046d4e48e01587c7c8916099015b79309b59375","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.44-renovate-non-major-2046d4e48e01587c7c8916099015b79309b59375","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d25c5f1924737593b7b3c96d0e4a6319a20e8ba8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.44-renovate-non-major-2046d4e48e01587c7c8916099015b79309b59375.tgz","fileCount":30,"integrity":"sha512-9CAda4bKoXDaxLV7hNrvoUZjjXltLURldT6LSNW9OMe2nw4A0BENZwz2hP3moOi4RD/bSZzqzlVm13v/Ie3p/Q==","signatures":[{"sig":"MEYCIQCSFBhxAMQh7Smh1oeun2OHeLqSH5oTxNXd7wPhw0QGhQIhAI9J84PJCKn5fmVc1Bvh99CrYdLu+FLv2vnV4HNkowXO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOxaHCRA9TVsSAnZWagAAESMP/2ApSTJ1ARIZ9QNHrL2t\nB2+tuG2ERLaoxPOo9BAcONI6COa59W1Zp23jK1d/oHTCj4U2qOM2ZU3C1kqZ\n1171RclrAq1mOpehh+9oU8kAyL0KFGN5RlVCwwHlMBQzhw7ZTI0DlZ33PvKO\ndusRXzgZPrtF/5fgdJqr3cCm8Q8WXxI03bXXl8cxkz1nuLzEw2ybN0GUeLjZ\n9wtBI8RUca7FPrg1D6cbEIIUUZ8PP70ygYBCmcI6XR+yqGFBktydmqvBQfdv\nSamlBiiYosxB5Sg9dOZNm+yoNt2hOKbqKV5fLnBgSExkfPQchn50SHjQv5Wn\nriHF6TZiD18V+NBygwPkIZZkLI00mpDiRFdLXxc8WUfbwTv2K8nn0IZfwKWu\nbU8pgnRALuIL+cuS1TiiVXmE+DwuWjPWeW0yupgOVtveYyAE0+PwmG0gfk9z\n9PCOoa4VEphKsmlfSJ4VYKiw+Zw+465FHIC/CT8VLdd2vN+B1buRI9Po93Y+\nx50SmlLyv0+Q2rhKReTlxWCwQ71OAozhI2gTsL6qqiLf0z3MNFEdYM1XoLSr\nBEC6xh7ANpwg7Rc4PU1WvnPKae9U2xhjFSrQJfb/1nCg19Ur+3tBVr11OIyZ\n4AMQQVMwObOxhrmRTXI3H1Vb8gLmm5aoVzg5K3FFPchn62BHJx3NmIpwgSTh\nmEzs\r\n=joI3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2046d4e48e01587c7c8916099015b79309b59375","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.28","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.39","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.44-renovate-non-major-2046d4e48e01587c7c8916099015b79309b59375_1597707910883_0.76898385189676","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.44":{"name":"@balena/jellyfish-sync","version":"0.0.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1323536196cd12f697582722ff525c2479484686","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.44.tgz","fileCount":30,"integrity":"sha512-vjiKyv+G+eG9xmX5iYCgTmp0m+7z5MrFz57QjzHwpnxGX0pSCGI/AusYpcP39aNrNNrXlaK0XMg8Q9Vi5nLsqQ==","signatures":[{"sig":"MEQCIGM+fDcToU2Wop/AQ2YUCBGbG0hJe54xUnmc3yPpD4oXAiBF0OiGCvmsMZs5rtbHvMHod0F0nVNvHc14PA8dmYml4w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOxdECRA9TVsSAnZWagAAtY8P/R8dNtV9jqLC0cmehHmj\nVeBhFalXiOVZpqp2hA17OTZNm6MeLSRw31/Rxpw7GNLBoFmJ6vQl+6bbVlD+\n5L3l20qlD/M/ZGA/h1B715i2zIOIzNW9iuXSMss7IrxxKu8/EQgsaAFgvdbn\nO4OD3WzXO2MLXz5PKRf3uk0ZoF1qzr4FSs/wzekEBFgkSxEfKJqGA3d9FUbc\n+hAAcE68FXojLQ9Q2eR5LNI62MOJppKSurVtF6dssS4K5HlT1QwSF6jTPECE\n+3KGx7KEuCBrvZ/Ip49oXbsTwObXJPHvJhxEeSFVfuTGNplIpFQb7nrh4DZw\nPesBvipGdoz8nEGk1A0HWlDpOpzB1rjajq9X5RWQ568b1DHc6Mrlw5rMQNOP\n8+8ijBx+Z23UQY9aAoMFlitrN4ZzY6BVT1m8Zgg1l5CjjmHmw5r4zUdRP14h\noJ/Mt1drU0qlKxkS4iesy2klnWTmtspf9SwsUgOifyIK9hmgTgKe3dnFI5v+\nL9AwQPV0VaLcSytX4xZRtNJORPBvACjffy9S/o4gyxljtg57m7fSRSR2ZQTV\nydo6LHDwYSvf9Ls5O/XJNKxD9IzjRGS4XDXuMWRZdACN+D7KcmkuvCrsBbGw\n4tlP5/tFzwOURHcOiEKDHpzwaFMlgoDUKUBGBx1xgekmCsdgDGPha2zhu8PB\n5lL5\r\n=D68e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ce246fca4845830b29fcc8571a3b34eecb20a0da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.28","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.39","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.44_1597708099537_0.7831856778239312","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.45-remove-dev-major-563d39b6ae9225f84e399c9732f3178b07b36bb3":{"name":"@balena/jellyfish-sync","version":"0.0.45-remove-dev-major-563d39b6ae9225f84e399c9732f3178b07b36bb3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.45-remove-dev-major-563d39b6ae9225f84e399c9732f3178b07b36bb3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3aabcaa7ed0fe8b42b19b356579211084766f2e4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.45-remove-dev-major-563d39b6ae9225f84e399c9732f3178b07b36bb3.tgz","fileCount":30,"integrity":"sha512-wSHkY+5WJ4FIUg7h+dkrlmRS40LAXLFHK10+kJ6W+N5hCjK8EgHuz6Vn98T8lY/F21mKyFWgJgsUNgI5+bI9nQ==","signatures":[{"sig":"MEUCIG7RcdXO60OUN1jYozgXD0snCejCud8mtGMKcTK6WlwcAiEA69c4KiPc+/AvIaZ4KQD9pbfeXeNDahf0dS+K4wF4Tlw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOy9HCRA9TVsSAnZWagAABCYP/Av/56IoZIwpQXtLb2iA\niaFNX8YIu/AgeKCj8Wl3CIYuAVWz8tx9rJruEy7Mx93zXXOKCp0ncrbloz0u\ni/iQzPFKR+U3VEuDuhu78TISfNcIEE0HwIU1NrQUSJl6nWCYfRXkqCbAYwwC\nimDWGSpLIhuRzmsoKEyTEatPJvs2xPOeDa6ljMn/B0IeQEQXdeH5qkaeNb0L\n5xZmWfBJESlGDeLtx9s/Y7b05Dya4uab5d9b3TzUmU16r3JciFHKkMlOprub\nHKC//CZeC/hzejrDAMfn0QW//WknRS6M1nzaED048oiZp/2HmYT54xSSlpUc\n9BXWVvuzMP0gfLswl5wdCG/+wJvANPARoOyfdt6GRvKHUTza6bTBGY7tneC9\nNSUmIq6STbmRGPBTY6gmgUEGN+H1fCeB2Z9ZHkAocXM3mnllTWbxAy66Qp70\nWiXPFYncZcU6pzHyvp0fp9FzwCF6fK8Oe5HVpOzOI0BpO3W+6OgtRh6BVklc\njcJy0F8e9ljppEsmtmGhiKbLRkccEDKT4sqJSRcuhlz2/DInbxwDg10rq/Vl\nPRFpBVaMxi3dyzZsNuvgzABM1xiIGTr575oT1UxozWmJ5if93nn8Qaa2c3Ti\nYsN08ExZHgUbD8foDjibggb+KG4GbFx7DC04k07ZtzCzJuneYusjEWD1Ir80\n1XeQ\r\n=2KO/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"563d39b6ae9225f84e399c9732f3178b07b36bb3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.28","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.39","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.45-remove-dev-major-563d39b6ae9225f84e399c9732f3178b07b36bb3_1597714247166_0.18283084116657755","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.45":{"name":"@balena/jellyfish-sync","version":"0.0.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fe5a0fc076eddc6281924325aecb1d123871aede","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.45.tgz","fileCount":30,"integrity":"sha512-Oq9SVeO1GqhBpG1c02Y367BcicENsJotGEO6z3hX2Mwd8X9byH1fApLZgyRUbKvRQQTjY9ewfYUbbepFiNY7qA==","signatures":[{"sig":"MEUCIGZB18nlfGklwkMezN37bKlchJK4sQOPYpU/km7RBv0yAiEAwRNzFolW/E1JP3ukiHS5mKPM/acf3tt7IH76nmp66HE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOzAICRA9TVsSAnZWagAAhGoP/RF2HyuAVp31CFkx4oye\nbySJuBaLxiMBiCwDyGVK2Bb3AnI6+qDQ9j5bLscQ1fqUrdVMJU+DdNvRQWGZ\n1N/xIx3JC5NPXvPHIOYH8d12Xxq5wjNGxrumi73cyIxrdsB1Hpe97RTM8Yvb\n1Zq5Vk7f16sJZK5HtkiDQ5ZwSZaO36xa0IsX639+4+v7uDKGxKzlaKpsSnTz\nBbsVBigCK7XKUg22GD2PeC58eWiC+s70DWPsHztVhgxmmO3nKsHWX56fQTSm\ndUAp/DpP3jlSN9TDws/zdHOXu/fYrZlewLOtQQwMGwTmpSPnuqEpaQA3KsjU\ngdUm2x63vwoBBYmlkOzEngzUBL+fbjoaimhrnusq3HAZTfm5F6xBPTWdn7Hl\nE4t6RVz3js83OuC4wte+9r7hPVc3SH4FdjL0H4DewY3qjvXL0l53SQeSVH/4\nK+oC1Ypl13vhL5dvAp8Tzx/zbkhh6YuohBKnCsl3rL+sGgPRHEWF6k3uvFdq\n0ZbwipFKzZHOoXU5hkGtcI1w3vROPcHe07oXyC4O6TftqiX0cLmO9WdxnctW\nmzlTBw0nmrXVJ38Xbro3aH2ik/qRifBZh+phaJKKjOMQFZa9jVB6WzcAvz7E\nu2p0o2BK9kZslYFQzPoaoRYQlPVYHkehWgN1JZwepw1FQSCmiUMTB8Yd+NK4\n71A1\r\n=Jbxi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fce52a87c1979abb62391f19554aa12c988d0c6c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.28","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.39","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.45_1597714439778_0.3279759289901718","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.46-renovate-non-major-96bb2fa62ad041af4d058f66e3427fbe5bb84cc6":{"name":"@balena/jellyfish-sync","version":"0.0.46-renovate-non-major-96bb2fa62ad041af4d058f66e3427fbe5bb84cc6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.46-renovate-non-major-96bb2fa62ad041af4d058f66e3427fbe5bb84cc6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8d255c0a02f42f52f3c6093ce18185b97a4ece68","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.46-renovate-non-major-96bb2fa62ad041af4d058f66e3427fbe5bb84cc6.tgz","fileCount":30,"integrity":"sha512-QeUbTFQ02J1qzz6QK02KHm3evSBRUHyCr9YkbMPCh+xR9w1sUQu+qWxu11nCfnf07sAr2Y7stvrTjgV9nXMx3A==","signatures":[{"sig":"MEUCIQCMLZk1QVYxJ6+GuTLbxK1zyGmHqVbaS4n+eFhp0Nb1iwIgbjrMBo70SEdCAQ4dRaR8e/nAR3y2rCIVLgZI2IHgoYU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOz5CCRA9TVsSAnZWagAAd0sP/AyBoTsyP+4Kvcn0ubGd\naKl8/YR7zGk+z7Sw6sC7l9c9dR29y2EqkeISaT8Ma8ophHbGh3waSHxNcnpj\nAKJL3LeJPIaVXnOsxD5mfxjLSsJw+vDAMGsiTRTG8y29JLhTrZWvrS64TCZ8\nCnd7zaxETMYcHWp21+MZ6p6xqG5VT3F5f09L6gp3whhcKW7hlZN0a5IeSFPW\nl7qUk04MOT1np+dIo7tKqT61GGETp8xvFSxFmhN/Wxr4YPQxFjGr3uC+FaX9\nKucTM/n1F1KM8AhMUXtUR49FY+kPWAEwtgsAX4L6pbYqUNhTMxapySEJZ4SK\nb4GXP8xBAqggRAEW5AdILjIMnhiXuk98+TA9Ma/o2mcGJGuhvOmZv/KaEIYS\n2Jcykrr9uXcTj+JLbZGRfzp7mmmNVLJX2wTR9hDbGRzbTxfeSHI06iXqIesO\ndk8jGPYLu8rNt4ZPvekRsJA5s/QGuVY4J431F6jGP04cjH/n4MVUHW7Ib9ZJ\nZkk1uS/2qTjYFXasLAjuZLQS+UeiUqUILB76u8aGVS2VcrSXpiWaQBkN7zZY\nXxB7c4c7Hx4m74SAcOOOSj8Dvvai7tsWkeQRFzgBvcXNx5a662BF7Z0fU58m\nHt426vlOhMPsksxzCQD48LnflFpNZGbiW8No3BlcNz7kHIvSWUl4hR3yUv4e\nwC+C\r\n=boVg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"96bb2fa62ad041af4d058f66e3427fbe5bb84cc6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.40","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.46-renovate-non-major-96bb2fa62ad041af4d058f66e3427fbe5bb84cc6_1597718081833_0.46586590200638023","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.46-renovate-non-major-fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3":{"name":"@balena/jellyfish-sync","version":"0.0.46-renovate-non-major-fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.46-renovate-non-major-fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d807177b12455332a3bcdeaff1b7130ef72f2460","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.46-renovate-non-major-fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3.tgz","fileCount":30,"integrity":"sha512-UJlCMYHDpaZ4lCqGJRCiA0gYVd5W0GwB7tTU81IDWbiRB5MgVtgVx4YMGQw69I2qlc2KUurrMpDi/EyeMhG+WA==","signatures":[{"sig":"MEYCIQCfhaQ7/HCJhvYgJaHk+Gop49PVp4Z81hcx2Ivy9PxXrQIhALD5kNNtrSIygGzKB3zryCfJowdTkyR96vhWDnH2Xh/S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOz84CRA9TVsSAnZWagAAEvQQAJVknKrJx5wOV4kF1xPh\nQbgrBeSSvLyOHEATTjTilh6gNdm2iHq9V4o6IIC3f99y4LAPEeuYkP7ahYZH\n1SxqN1T5ESEzGBYmPvnCHCnPhCEvGQcQaXibEpo6P/EVFrkk8sStrIAwDthN\n62/T03tbU7RzhuV3+kzP+hbCCOqYNaSXSb9Q4iJuiot1+ZXu3VgZ0m3qH4o1\nN0lMVVd48SnWHx5d56zcYy8lIdHAMBjrR1DazPj+f04OD/Jb0jspFQIeqO12\nKiSiXu6l2suFEUjVZVPujEj1D1xP05dzIw3kZf8Io409DBtmj0wONwnAQox2\nB1+BatAQpWit6SW1jhteZgUP7H2M5p5vx7bmc2p/lJus79dZ9PVaNkbEQaR4\n26jIGLVa8tatEGfDiL9xbnMSRkDpMLVFLH9f4nmBlaTU6xn8gOI84zpTZilg\njY4+Mf8yFksBvQvnxpyjLnRkrqkxVNKR/TWIafJiP0dhomCiHHbI3HQu8JaR\n5Y3LSO5CYQs5VsmkEL1CEi7i/JThZETt8mulasg3jntcZOLMu4rcoHWbrqEu\nikBXec7ydfe8RXzqcpa06DSuN+A10YkYyN5b93jgKwJ1VA1CZiOeelkBaTah\n7mOLbnBtt9OStrdMeIuVotLuTgxTBi2AC5jg8elJlZGkP3L7+nMrG0d6tOnB\n24/L\r\n=sb3A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.41","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.46-renovate-non-major-fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3_1597718328363_0.008453044356622197","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.46":{"name":"@balena/jellyfish-sync","version":"0.0.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.46","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc9a5e878be70bed8dce8519806658f611164358","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.46.tgz","fileCount":30,"integrity":"sha512-7x/v/SKwAw4WQo3u0zTnCBEB2WcQGbw+qcJKIIk2AIH/ExNOn9v8VGZOD3sauinEd9MbhQPubIe4Mf4i9gQm/g==","signatures":[{"sig":"MEUCIQCkOMn39rz04Dko/C0j2Gdrjc5LctMdnkUlhVG/IOhrYQIgOJqXcb/bcTS1uhhitLiB3wjmw3ZYa3bjox6VNZG42ws=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO0APCRA9TVsSAnZWagAAvlUQAJ3A/BIIXBG1UhOWsTg8\nkMhPSUKx3KT2vVVZIkEaEOgair7Xuj/hw2nQ30OVTPxbVNnM/Hd8UbBDCGQB\nFKBMXPm9KWKJjaVUxxvyF+5i49qJyMdnNLSJ5WQ5z053xhxOxckenDw3HFZZ\nl77RaRaUi3by9l/BDVnC09btF/n3u37gZOtjeMXyerYRD2ISkYduRdrmoN4S\n3ECdtY4EqLiLJ0H1wv8/bhSprYCfoEczdW5qngm3FuiEvF8zm2mlLaMiaAVF\nQzblUFEHQKDUSmMpnVcvQnipb83++LvJmH3xv8YfYVPp3JSaZB3zdkynSc1l\nxYjeiRKWaM1pDK9xnGLqX9dWu448OZu26lKwvbcwn9mu20rGLWXZDJNXDvIV\nFbzKPLcw7ySm3apJky2ZOtLXyfXvHq5YZW/R2KPRTfXfb9gEswrfVMczE3P0\nSml0kd5rwr21pPqtJzAKUHmLHnTG4FEKcsFmkX26nqSZI+aMvU9zkkGn5OIw\nyb++30Yh25XA2qTZC5zZq46cGGAQpXXZ/DgqWT4YbhZMhcauKK0k24Dj8sGk\nGLqfn0sCxHOLW0AK++31i//0OcazTQ0hTPZU/XpOkBo6tu409Gfi9zXFvPtA\nuonBO7t+85VNLLL/6Yw2RzMzwz/ULjh4pbXMcquI16bZW8QZ0CdY/lF1sSPl\nXD6I\r\n=8lDX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ddc54309cd71ff1bd79e1e6e553ee7e6531c6a32","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.26","@balena/jellyfish-metrics":"^0.0.41","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.46_1597718542740_0.7368526410925329","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.47-renovate-non-major-ed5d696a86414b7b91ba2123c0a6c17ff4fd02db":{"name":"@balena/jellyfish-sync","version":"0.0.47-renovate-non-major-ed5d696a86414b7b91ba2123c0a6c17ff4fd02db","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.47-renovate-non-major-ed5d696a86414b7b91ba2123c0a6c17ff4fd02db","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"78ff52dc56e90f8bf6e5bc52f05fb7fbf3a26780","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.47-renovate-non-major-ed5d696a86414b7b91ba2123c0a6c17ff4fd02db.tgz","fileCount":30,"integrity":"sha512-YX2UtEROhWnJEiTr61GBdX4CkiRNIC8za681/aGq1Qf9skHYS5ROcm7CLwXkvLRfnLwK2KxatfixLDABl2xjbg==","signatures":[{"sig":"MEUCIGheFw49JNSXHxcSNjVTzDEfxzcbF1UxMqoQxFFo/K57AiEA/lLkljqHBdhxNwY/Kbsg/wdmvbUzdqAxNjaArQ+4IzU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246533,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO0hNCRA9TVsSAnZWagAAyjQP/0huz1h37IBizNVzDn/9\nm9lpNdmhIYk8puRNEzAr5F2mAZjae/Qg7N6d86VG4kJyGP8Ibg7u6xNMmIk5\nTaIk0KBhEAVaKP2hM49xVs+PgEmFsu/SciFfJ6InQLFC7rdS+Fol9uevvrex\nutzsoIMJRI+nHokNqy7GYKWRl4KXpVikVNokGH4NlX3rpXEswnAHMC3sunlw\nDcOB0MPN+O17Tr0gdchsvARLShs2S4wHe0Pqqh1q/quTknEUnCmi0YGOewHM\ns8di5XQT7Ofrgg++AeaYwqkabBAjUrpHR+Sn2qR5fXzNmVNyuKLNjDi7U2dy\no5QD0z8A0tueO5WwpAE0qo3iAMweGJc4/ZTAI/XwIBjAf8Vsf/G6xZrUMoCZ\nPRRTl8z4IhT0Um6cwu+HIu1hBbePo759CoMPtbCzT6H7F7kQAIU9P0JoSZ/l\nMWpHgDBNZ5ojMdSB8zbWfs4id6lVi169nY7JSRqAPp65t0ZybIxl2Vdj78Ie\nVvYHBO2pMV7JUgpfKgearNEFU9E2ZQfZMDjzzw+PIZRlQN9E/hH78Hxk0wPF\nwWPds/sl+HZldKaETaLVGWaYSO3aLZbFBn4CjpU8Q1FDXpOexaYcFKC8d/yW\n++hpMJYkyBd52ODPmRPgHn8JDqvQqQDwB8tj/sCCnn2dCIXVDcuLkGqRXsid\nfoFa\r\n=grLr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ed5d696a86414b7b91ba2123c0a6c17ff4fd02db","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.41","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.47-renovate-non-major-ed5d696a86414b7b91ba2123c0a6c17ff4fd02db_1597720653338_0.4001988159341665","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.47":{"name":"@balena/jellyfish-sync","version":"0.0.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"74ee5f0b92cc01d86b85217ec4c32aa51b3e86ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.47.tgz","fileCount":30,"integrity":"sha512-wkVf0EQrNvmPRri9ysZBR/y1P+5EM0yTnRK6+l2mvS3zSdYfLuf66eY4lTv4GE3MLgwzvc2HoWZHGElCibU4zg==","signatures":[{"sig":"MEYCIQDEYVfX4XJL4Q/9DJOwDw2GGj9HYuZhGRbPDDsiRNs2FQIhAOZn+e4+gcusj6amXrLxWbhz3nNonz1yBkUxM/nFfp8R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO0kACRA9TVsSAnZWagAAdrYP/R3rISTf+FY7FS95n+W2\n8Nr+zBY0L/KoEsz+KAfT+DMW7cpHrfv/3zF6r+uQIgEBxQe4KMqNrR36b5va\nfTMnfC24rWnwbDTlifSc9pXOb1UAljLYokKki5dtHy2XRwK1UHTgp2s+znrg\nZzpzmmfXY5LVYp+zbYjLGTAgcde3TlbqtBl/aLnBTR7Q24NtCOZdjf0380DD\n+R8TjrWJK76BlMDEGXcrRVtIcOE5M7uqIRzLRB0dRuaZw3LHSgZkvPU2jTPi\nZgt45SV2a77MSIpt1m88W7mlmBRNvWMki3L1oHkVB/E4buj558+maM57X14v\niDyf00NYJvSnPWWae8X/dgtB85wts4hdaXw0/Twutcg/u42DsDhsYb2JOQ6x\nM3OguVb4HSJlir1Wv0l4y7wD+9o5KzWC8+yoMUpRj1KgoAwXe4ybtzfjG+/y\nvNFPrlmUbVr4Yhjb0RDAILX3A/7ACYEoXXbEk5xtg8sdLRmbMQHRRVTYprcz\ncuVyUFOIOptGz6UN5XFNXYBn0YPZqvZhNfQfpqigGUU0MV/0zYCzb7xEHALY\n+qJz+bmd1N9N5/Udjb72IrEKXVkCFAZmgWHZSwXrPqueKbkj3idO09GkAT4z\nu1cf+Ejr6vNmDoZJGz66R1WXXY6luKsA6DZUhX1ZpXFNHLybbYfeqXA1ZVBl\n/eyd\r\n=Flju\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"444451ab3b35102306da97962de9f9b09bc4b865","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.41","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.47_1597720832321_0.07280614706903465","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.48-renovate-non-major-19e58c6f385e6f913dc7febafd67d6b682ff3907":{"name":"@balena/jellyfish-sync","version":"0.0.48-renovate-non-major-19e58c6f385e6f913dc7febafd67d6b682ff3907","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.48-renovate-non-major-19e58c6f385e6f913dc7febafd67d6b682ff3907","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d983b9bb4e873da4449424d2480046c7c32923ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.48-renovate-non-major-19e58c6f385e6f913dc7febafd67d6b682ff3907.tgz","fileCount":30,"integrity":"sha512-E4qoZrzGmLZ+eI2u4L+rGfctT/vhe2V056NB9DYvzLo2Aqkt3qPs0r9S8matA0Eb+rNAo4Mh7II6vfkrW7BBzg==","signatures":[{"sig":"MEQCIFSgPml6oGsaDz+5K6A+eiVK1Zzlh0cNVq8AbSz656ceAiAtZt5K+nZ/ieFwXo1Fc0EhQ0Ht4eITx+EeEKF71fE0WQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO1oRCRA9TVsSAnZWagAAhbIP+wcQ9ypT9iA6olqKORU8\nOIjFtdSymNYKqczJZ8hmK4+mGK94UQUOfJhibZefw9ksV7X/5mHAuytC4jZC\naXP5CMH+aVqOCiCDxrrX1n4oTICGCOWgwwo+zVSfn8wS65K4wIQp/IHLrZKv\n+65xM3l2zb4HMTIrgJk+UbRs66lDRWQiokrJWk406fcMrjB9h6jcMwfc8xew\ntnWF1JnPgn7UZY5Ss3zScB+2yR8jliD7UcMXlaO8/SOv4Uq8RkB4f/WS/6Ul\nKH3cydsCHPSiZXt7uucmtTLIPuNOUFD/ZWzSVznvsfr+3tOEzo6w6eNfTB73\nAYbimGolQoMulmsvIlY8gHRbOKyifYe1qYzkdjksjVy7ZJe6lT6f3duZvXQ/\nLjWZoGh86iAbehG5XUko7QYy4U2BzHI1yZb8ZV7vAOtJ5jjPzE82+DNItq89\nNrfjxPsVSZKO9/rkYEakIXNHvveGt773R2iJu+mFLGQIgFki10FcXCQYqp41\nlQEuyTnYlEDzPWheCifwCLHADnjf7UO0yspwApYXswQgaUy/9i94aO16IHJf\ndBYP9Cej6u+781d+nx4f5CQ+iMXuc1+l0ay8XHBmAceml344xOq+9Tck96kV\nkSdy7t8H0N/YpZ9YV06PQUBE6iLtA1QJUn4uTSfey7ZEHSIPVv/zrUJ346yv\nOABN\r\n=sA3u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"19e58c6f385e6f913dc7febafd67d6b682ff3907","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.42","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.48-renovate-non-major-19e58c6f385e6f913dc7febafd67d6b682ff3907_1597725201374_0.779227945655443","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.48":{"name":"@balena/jellyfish-sync","version":"0.0.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0e904d3137dd7516ce60825a7ee61538c4dfa34","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.48.tgz","fileCount":30,"integrity":"sha512-S0JBa4z1VYZWfMFfoRFvpvyTxo72WiBBJMcdd06CXXIuptzrXpOzDbs+97usJynjrGRokxOGxN13OzsNZdeQvQ==","signatures":[{"sig":"MEQCIEcfvqSix2/GN0YkFUq0tuaJeOQ4g59RXXP2By/8iMb/AiAMOaExamdJZ/kzxmtuh4Vy51SwOs+sgWH8wOmYGPH0jg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfO1qzCRA9TVsSAnZWagAAv/gQAI9SO9XOe3AzkbTQoSbb\nPlVxlRL3DbM+hob8ZfhIhOUdlc5Ixyotd5UwgrwQRKDBqZbe+2rureAC9EqA\nzgyKYTWW8WrNMkNPUc/FwN5spWGOBrleR6ezjhmA30hUivApo0qtt7K9GuN1\n8VbU7cYnINWMJlYjvGTHPfawdBTMlTFd7cywVO+SXNpVXRBrCKjuHwOPSzco\ncpK1gB4kB7nA1i6if5dJ795BbwCYiJ6GG8+0NKdatlC7tfCsgvoUP0uVLQpa\n5hCm+g7/pTCTxWv4pD9je8kYEqmp8hqPGz1akchqSLZpUYAR3zJHbfe64HDA\n3PF8sRgKt5pRiRE8mLMzyscUIO6VU6GxPuJEHzXNsk+m+WbD1yMaScxwB5Ug\n2blHFjoK0C9iX0TsSYyo8InwGWIEVHYP4Q2xZxE1YgyW92lGnCrZolY/BFvo\n0IbvuCrLUt2K67BViJxREjj4JgouKb8U8YpkSQksba04ctpRxSzV+yOf4Um1\nItGTqf6mRh7cr9Mt7uik327cgnNw0G5YtOWmVsE4nIBf6vf7mcca+CtTv+Bk\n8l/7HCbWo6zQT9yMk1oc+ufPEqt456AqYaW8V/pnXRTKf5m1kq134qTxE0q9\nB2B/5cJ2lE7xDKOwup3U2xZnCxAE4YUWvIRez8KZiGQCE4fOLkvNGa+glZkI\njloM\r\n=jxWS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"440b228c4b5f8154e150c13db99fbb4ff088105d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.42","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.48_1597725362643_0.7173125155938707","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.49-renovate-non-major-cab0be8f0883bf2be325cf09d6679f380c0d9495":{"name":"@balena/jellyfish-sync","version":"0.0.49-renovate-non-major-cab0be8f0883bf2be325cf09d6679f380c0d9495","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.49-renovate-non-major-cab0be8f0883bf2be325cf09d6679f380c0d9495","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1d379fd691194ecc429b46b6e49d21fd4882a26f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.49-renovate-non-major-cab0be8f0883bf2be325cf09d6679f380c0d9495.tgz","fileCount":30,"integrity":"sha512-n+0yySkf8shvdck5JU4SVOElgo1o0l9jJuhpj+lzXN236O+HILrtM1sW92B/hKJzOCaTWqlUlfPag2Bg/yP8Kw==","signatures":[{"sig":"MEUCIBI3ffXoHbtsyGJMQ2Chx4kN+N9XmLWKwuPC8A9BzwsgAiEAv4MEeof3tYOIZmf9izLISDiX1xqRC9e2038h3B+nbV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQDoDCRA9TVsSAnZWagAAbFwP/2OjMMLjJznGNcDL5vMk\nTVeOFCuIemBrw/qz9PLAs+NXjXcUdHkIPGRTu+Kn1EIY1cI+9pc0KjoNNEaP\n6W9VXs9KGaKdrOd2NySGzDKrP2flAMfpRThoTK5XceZ+FkL4mPM5Ywd1Jf7s\nTeaXIVmy+ygENLqQEMX9aLLVd6BOHAi1F/BPCjl7oAaQ4YL2+uQEM8mw5E2A\nszHQWiShQxVAEw/TtEZ5rd13AdkT3bHlAhV2wkaFhvIMhppWNceSEf1EBBu5\n91FZ1qFYlHK5YoqTQ8ze/q0Utry4kf3X5qWzMT/gIEqY7gudQzliWrcWAW2v\n2n85VPmjBk1FL3LRA42t2BeXlho4i+ufhYUbeAkj8LgHpA9joOLvwbNmtP/L\nI14DL2+88RM5yMqL9Kgjg4ZMF7O4SmDWRNECszptwJjeEtaDnaf1q/u2+XAZ\nJJTWcwsxIMLsJP/C08Jm0GhSOpR1eCJqaCzj1RWHw4gFS++ak7Y/7MpgtaNx\nPFDIGQ+LPBnnPhwjUitlwjVP7gtW10dpFw32w885K79xSA1k8B0VQAp19BMa\npXCNl7qgiY2GSBK1Ll5IzWb88NnhJA5hOru8O3XTY/MwYIncl3GmjZcyKTci\npjcBoyuU6CQxuq4akr67HJEPBg8too0tgiSE/4yZWt/0N05B3W1RjxzvJoFE\nWRDG\r\n=I8GO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"cab0be8f0883bf2be325cf09d6679f380c0d9495","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.43","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.49-renovate-non-major-cab0be8f0883bf2be325cf09d6679f380c0d9495_1598044675065_0.7284001835514502","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.49":{"name":"@balena/jellyfish-sync","version":"0.0.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e3ebe1416c559a652e3e0b03316a66856fce13bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.49.tgz","fileCount":30,"integrity":"sha512-SfdubTs7ox5QRC06iT2Iw29kBjQtepUuY8dUHXcUW8kPa3bMlkhlrSBPoxr8FNIE7H6Iyc0wjvXek5t3YM4cKQ==","signatures":[{"sig":"MEUCIGlIph1FlBhrfD7Y9ehexUM5aL7DcLR1AsrKq5UKM5DvAiEA4MRrDLtZuQsxXhqjvqfKcqaoFLN4RnoC5WvrjoSABJw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQDqrCRA9TVsSAnZWagAA9QcQAIaKd2/qCKhEvYbRG25U\nrcx5lW1nqPu9q9NjGTG9lnKz9Ft18EcLxTu39h6eKdPp4YhRrIRQ4m+4lCwo\nLH7TZOBo5Pqxd4Co91H5aQWU1k81DTAaIbDPPKCDtAvkgsJrwC1+h3np0mUq\ntB4uo0gd5K9Fku7ipZqz01CTunmRRMp0TgN+VmMwkSLuojT2xTF3dTXH6f1l\ncWbay7stSbEtQOYxUWeFtT9H7d4G4AUPSuuPAoC9Paj6N6ZGHQ5dol1MFdaH\nr6ZApgdS6ic57Yvj0g+ABndIVlhGygn1Jr4jyQiiNKOY+2BNaztJuVq99GB+\nbuxmIDSt4SBsYZkoNy/sk+qGzWlmkRRMobntL4aDNJ3rbdxg+U/ILq3sbJX4\nyju+ktYGvFko6Pu4HmM7ighnK2nkOGci1HdmZ7Pt+Qd8jhQgoICOmxwcin+Y\npwM2zBLhBpMjb9/dpIZSSyPp1vxLbj2PpTl/IWYMbDUut6SwHuWDuusJOdP1\nnMY9jgN2tw+BUY47HPlty7HSf8jJlQyJraHSmxYKExMVA2tP0Z/1AyhE8smT\nfPZQb122qxGOXGKmfcolNArWVhHh3wFOaHQIhfBN21obEjfN+04y57ucOlWw\nnR1kWAXAcZe2lgkKgTAnfTDqjrYmo5AUv88Lwjr30ISMtRHAvw1bAV2qRCWt\nTgUy\r\n=OFVT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"80a1546fba32813ece126069908243f94f4ca9eb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.43","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.49_1598044842985_0.35535217520928963","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.50-renovate-non-major-9f4b39897a34f0861b3b8786044c625c6af4f82d":{"name":"@balena/jellyfish-sync","version":"0.0.50-renovate-non-major-9f4b39897a34f0861b3b8786044c625c6af4f82d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.50-renovate-non-major-9f4b39897a34f0861b3b8786044c625c6af4f82d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"52ccc7ad2db40e2993106e6fb067fd5ac1e685ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.50-renovate-non-major-9f4b39897a34f0861b3b8786044c625c6af4f82d.tgz","fileCount":30,"integrity":"sha512-i3vfG2R5bTqR2aSFgCnyOR00wlJq0ciBc/kTowki7xL3HKqUfEEKKG66RF2+OrCKBJ2qGO8wrjZlNG8gIz+Jug==","signatures":[{"sig":"MEUCIHrQYdtKPAELfDERJMToLH/ztPFJEOv8XhCTYJaZEjPcAiEAyW2sEzGocAwZEm5sjfbef5cb+qwtQSDA39Y9MCkGNN4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQFgGCRA9TVsSAnZWagAA8x4P/1nQFCeOHXt/SBFRPWq7\nfGP07aqFyuSAZgzmX3O30VIQsLhdS14+pyO4ANT/1zSnuS2eHSXKeeQvO6EE\nOrpEYl0lq0RG5IKVj2KwxpaOHZZ8seugfDG7sYLY7IFih7qqQr6pcFDuh9lv\nBtcwc77HrMZqSltnrLTHQeSHOOlRvgkgL0vmWTx92LhsUIeQuKLvQaVSDq2B\nzzn6SMd4d9/PrjUs4ivdPK+UOF+psyMrqL/wE2TfR4n3qraV2rB09Zr/VSNS\nmouH9zlshZpfHJBglcjgjAn3uR/Zc1H6sMNXOYYTZB83URzp42HwvuQ+Q4lZ\nqSISZGO/VzZecD/zv2K9/W5Saj8onuzI9TV9KIOB5VmFa58b3YG7haKRlk2b\n+zscH/CMT+RF/j2trYyu4vYWDDkumYD685UUwqd40Lg1F8sej1ENdIhA3uYM\nDWgZ9NhmH+SLNywXV80xiomibtf/bdo2EN+mMTGRVDa76YKDcIwvLO3Z8ykp\nqPdWlwa8fO+PvuMHabnmEMKb/dwDN2fScj4Ypi4K+ozVwfRDvAM4Msfe1vx9\n0sn5FSNY1RJdriRHrAxoj0IaavhL4UcV9pGJZff61MB5OPIVtPoP8Ugt7Dqw\nRBNS1SIOiHgqjJU8tTFKtUpsuSQposxwIhHlYNxZXeiw2Ho/ZDlO0VfVjykw\nTDH4\r\n=A+/f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9f4b39897a34f0861b3b8786044c625c6af4f82d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.44","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.50-renovate-non-major-9f4b39897a34f0861b3b8786044c625c6af4f82d_1598052358231_0.05546530639232028","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.50":{"name":"@balena/jellyfish-sync","version":"0.0.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.50","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"79e2aefef8a3422246c9aac766a03c17b3fdf44e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.50.tgz","fileCount":30,"integrity":"sha512-1ueMvpro1SIFVpjPgPmPs6zo+981b0HSOW2s+qPXFvwinM9o3xOFA3FU4vK1S2KIghre56Y0OtMUOn2gCw+oVQ==","signatures":[{"sig":"MEQCIHWJKS/chY+6HhKF5mcei8XZLMW9L2J0bV9gLXc3nBwXAiAyHkwv0OrF3nQatxq3g6J4g5l2IcPnus5AamPd3vajCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246794,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQFi8CRA9TVsSAnZWagAAc6sP/3DZrI8jwTo5fwNghvOE\nrR3Nj1V53+JYLnrEaBfs2CooP3Apk7otlxiGZrWC8twUhKH93l4Ugmn4Td4X\nb8XWQR6OgbpVop9ANa8B+AS2+mmG1HuQMC2F1rJgD0gEr9a9+W3easSPEd5r\nSZRTODdhYUJiKL86/DVT/nxwu1YDla0RKJDNGIvOJLemM7JBxj4vxjntXIuA\n/4uPRs/rexmPmjDSESSCgiNonEsM1jTtSnWQN294i3uyrN4LJ76zu2sE6EnT\nVz7iwIGABmnWyOs//mEpHWEiWIcPUNpUm0KrOTIqrLDt+e7WfiFr4F9VGOJM\n42lmPNpv6URHhASwhjuoAw9G+M1MMR14TkXAFiiUOVUAUxCcxkwY65kiuwv2\nv+4U7Ts1MAWgbf1J2B6w2n+qe+D8t8zwf6/CBvJCLy2NQlc4bpyh96w1m3Ol\nEaV2fDR+29iPtCacU/CgCN0nOQaFq48B+QMwSWSG4zZrqZxbp4NwIuczdNWJ\n1ngIKVPLMuf45sGaenT6+LLmbmqhZgedfWRiV7Qm3B0PKdXnDQU2l5aMyXyb\nWHUBtPbGUnER5iQL3Eet/tn5SFQf2cBSCtu8GEnPWK/IBm69h+EJrpVGZ8Cr\njThdsP44s3BRs1qcuDzEfuSJmvhIR8UDm6pVoMAASqxBWXF79BzWBLCLat/G\nUDV8\r\n=ibo3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e5caa2821ab9a6858e2b37badfad595494364248","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.44","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.11.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.50_1598052539983_0.15501671001593498","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.51-renovate-non-major-dda248cff611fdca39b1b38e62489c7a3f3bd1b8":{"name":"@balena/jellyfish-sync","version":"0.0.51-renovate-non-major-dda248cff611fdca39b1b38e62489c7a3f3bd1b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.51-renovate-non-major-dda248cff611fdca39b1b38e62489c7a3f3bd1b8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea16d79a727e85573c393f5de54b1ea5f671f20d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.51-renovate-non-major-dda248cff611fdca39b1b38e62489c7a3f3bd1b8.tgz","fileCount":30,"integrity":"sha512-6lo4UDkSCbp9brjAAvEHVOvbOxHRxIiHdzCMVKek9DjRIkLMzry2jO6rmamW4S7oJk3pGd68SRqlphZiyWq2bw==","signatures":[{"sig":"MEYCIQC19r0AQtOvzBeh5616R1M1wRzfR9XHm4D7lVwN3qbFYwIhAP1F9DFUu3GJvkTOxBsm+HXClKyu9Qif4U6ht/kzwVhw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQskkCRA9TVsSAnZWagAAc40P/j0orxQNJ6ZMIdYHm58k\n0IU6CVS3acf5r+2xNHrFnnT0Eg47A9Tgu3UVwf4MjKM715ENM9HnyHs9s8MT\nsKkeVt0ZeEXRzyJv/nZnB7L/VGlpt9UX2ubge03ZISxcUW/mSCFE2BJdKTaT\nk/kWRkBQ6Bfg0zA4cTQA0s0XcX79l1HEutnsFzv7pIloBreZh3iPRrNbIDXS\n4VRjtx7dqcGuatiTN2Emyno0oKlwWmEJLarUX6N5wB0MJHRmsQKdEVo9ZK8m\nxJp8CdAomF7fTzlLTgSCc7Jqy34qmOI1StKk5PjqtyhuTCV1mh9svJLa1sXg\n7NvPLK7rk+K14ruNVz/C21iiQqmuqV6Wqwlt1V1NMmnCaia2vxZlzFYNEvwb\nJdcMxa4o0X1QFCUbsMmKM+dMpOI5D6aYGfe7136f7L8JXRAUzxSVoKsVGB39\nVT1+BQWaqdP/yWHYdeEGxZIsTKqEgI+Rice+Kw57qwX0F3KTCpGhxL9OfHjI\nAxrAia+sBGjZQgbb4aSZ2Bb0pmzNWLO0FcXbOxXeSdCTNCYOKxciH8OzRgHD\njEVMLV04hSXUV3Qx5Jv03MjjAP47WkP7WTZgqjRPtCb+0B4rcX+MD4KLRnEo\n3OU9cex2LG3W8HBhFxrX0ehCS8x7nVDri7gRIfuLDp6v/++OfZOPko3zDNxk\nAaLX\r\n=YQhk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"dda248cff611fdca39b1b38e62489c7a3f3bd1b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.44","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.0","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.51-renovate-non-major-dda248cff611fdca39b1b38e62489c7a3f3bd1b8_1598212387944_0.04533485920544145","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.51":{"name":"@balena/jellyfish-sync","version":"0.0.51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"366e433f9f387a865a444192726a9738136310e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.51.tgz","fileCount":30,"integrity":"sha512-5HrXDzD1c8gSvrD46XfAZsYV4cZuHneaUWAFtiItyfue34z6If8OKn0Pen6pI+RtwcImTPKwVbx2VVXR/j0NFw==","signatures":[{"sig":"MEUCIQDr3a56wGi1Qne+EB8h7k7TgrgwlrcN4bDpADdXvhLNMQIgXB+w47RoFNEmhBezdX3iUZoZWSjIzSpVOaD16MSMv1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQstnCRA9TVsSAnZWagAA3coP/195OLL+xSfoBCPxrvso\nTMO/J/5/US0T3qLYWLrU9hV0iZsO/7W+7BTAzBkoiSKPdaRuznXG/RGJlF02\nFOtNu85mhjzkRuQDTRmHqtwTUmMLd4yJgP02G/ZBvuWjMFwToyxhqWt246J1\nF7cYXKTqIoY/b8oCbSh3H7ULDitk3SNglg4Di81KceljVjjFBYlml4GMbfRA\nZO587zDH7pVR/hLm4EzxsFY0GX44oM14ndK1+ay7WVLJDCEsR37T2FXfY8R+\nrGMe8RmlVpdo+AilzBrLZe7fPK0OR6CejVivf3BGGDWM3vXtgRHUbxiB566r\nM8tmNbrHJ8bh/e7czp0e3CaNTph4xI8C1MTh9vK3AlXhUDFoWiIGi0DELi6w\nuibiKF2tMm3GOUnsXwxFJwVBCNn/fTjTqjk2DsanREUZvQmVJQF5O3YnmpoV\nMmufm4P+Yu45JF1e2GjMxS41NQWLrEn6kSR87gsBNQKCZVlkKH0hwVo2ZQGN\neobxMRrXeJxkFJFniWG+AsjYQk9vsZO00J68CO1Y8Z9Ju1qo2sOQEe5Grn5z\ncg0hNa8VmuQG+Q4Mzkz6Df046sTh+clc0DiWbwvNNLLmDVD/ScNxHoK64hV8\ndVXwkhlljHvrRPQG1xEMjiz9Z4aLA7reCvwKbKHvvFWHS9aQozso0sARTzxy\n2jCs\r\n=yEIt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"67adee3dc31c43d929178d34741921402dc2851b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.27","@balena/jellyfish-metrics":"^0.0.44","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.0","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.51_1598212967337_0.6506794944660088","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.52-renovate-non-major-ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa":{"name":"@balena/jellyfish-sync","version":"0.0.52-renovate-non-major-ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.52-renovate-non-major-ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f72b5c3f719e883104364611149eaf51d6f1641f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.52-renovate-non-major-ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa.tgz","fileCount":30,"integrity":"sha512-wru72InEEmw3j8+VqVym/skRnKbbxc59JK1+l/Y0XsPlFyvR0rFpv+L4QZhmMJzV4CbecqcEtayNxnXTGz/hWg==","signatures":[{"sig":"MEQCIEDICTnC9iRQt7wt0jXT9tdN8foSresZHlO6O5TD6+dhAiAxBB+NcUzuoCCdg1vaK/9FyU1c64s823uQKv9wLCEI4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQvG+CRA9TVsSAnZWagAASZcP/jI3/dCFRQyQwNf0ME8l\nuPBjZGnrQp7Zfj0/iKCCO5zo2JLhQGEGvW3Z7HpDE7a4Dx1QY0HvPlEssnt+\nOkQhY1xk4UMVBCSoGHJtV7RbAkZZatvCxPp2crNgHKQcW1YPPodVlhVOFfv8\nMV4jmgDXa0bUw5hH+1gvC85XqnS0ZYhhnh9xHfjtr6FvxxEyzJMKuhYAacJe\nBAByiW7KGoy2o4DzaPj22CDGe1f1UbHajIK/O6Cr6RjBh463EBF4t0w8GlPn\nDl4oJbzTbxRHT3GXz2ZmXpVEsOHmPifyKIMw/z5vi0VhxFYF+lGFhmYoxLMT\nqVZHqvyoBvdg4WpQ7vMAyBY79mpCuBi5r2ZbX38RAp6WVX5SwJCzoErmbwYc\nS7tghcnfwQPwjxunzL8se1DcsY+pzw7vOat/GFj7SUM5UVZOIUhzsVJshEBF\nL74vfbSh+8lniz2IPgRk4Fo4FFb5m51Aq5O5/P43at3cspkqHA+fwkWHBAUH\nsVw7f/nOpdbZohnd4qth6AHh1vK1xEiLdQCKrpz/qSsLz3epwlDo7/k9hO85\neBefnKqCwhneeMIMsgHXLwQeA2WNaCaiGPR6ImxTyssMSdrj0TVE6RDXW5Ar\nh4ROJMx52/PQtod5bZEcyNkpoEeVu1QSIpPzhL1US2a65NwTjcgdxDzr3+Mq\nNnBE\r\n=hpWX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.46","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.0","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.52-renovate-non-major-ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa_1598222781926_0.23021921327738482","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.52":{"name":"@balena/jellyfish-sync","version":"0.0.52","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.52","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"886a3530bb89858a7f10475568758d4ae4c66047","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.52.tgz","fileCount":30,"integrity":"sha512-hjanUKiQgY/0IllzE0pPVJ3nPBkPLSOmObOEBkire+iiGU/oz+1C8Ab4V5DoOw7swfZUaH+CElQYysgwE80ICQ==","signatures":[{"sig":"MEUCIQCdi5Aj5jfXYS6j7jwb9zNx2kaPJ7i8VH3TQKhnmqYAkwIgPVKqPq5UiwIEzEM+s83/QrRcw7esFb73mtfWajr+/Ds=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQvJuCRA9TVsSAnZWagAAGU8P/2jps9CSCA3cVjSO0D3m\nBATb3FufFDtNBrnDJUUuI3prjNTythg6/xxSp4tj7kJ7hgliN+nQXRztAJeA\nUM6+LGc0tx7zJYA9j3WUFvZWXxO25iNiMhefsWS+/FhwzAU48NNPAsewtaTY\nCunNNpO6zVgNLXexQpho8h5huMQXMMVI0UM2c8I/i2+Dz4fitD4D0CSdxnmi\nLyduElSPJERL6YssLGR+nRQK6AvdaHP3wUtLccWzst36I+XkvQfKfGOd9Pqa\nTfG2Og8ypgKE99qb1eEPIRk4R9cAgSAJ2y9GnZVd/iEd/+cVmqasRuMX34ZL\n0QPr/4ThJVAYxjjE8Btpf1NK0NPhHBdc5kPaHRhFSi6spHUUzfWzV8VcqlV7\nIeI1uH0IGyDPPWOU4doy8BAUKZi+5btN4l+EDOAfu5i6/2af6u3V+OMcsksG\nCpes8ME5zSXqPcl6ltBl9iI8osJEa/qolIttPgp45RpuUTGuDoi9mB90sp6I\nGH+XL8SQ+vBunz1fI+T3gsN5Y2yQvUcgxD4p32hLTqgGCA7pdC+7zYocufb+\nqgdAgOhI8dLAsTSA4Fr+6QgNEe77oj4sKAUAMz2XnEo4VLfaeUOU63HTvsQi\ngfTHuIZVgvZZkCGt7Hc6cBKX5AfSelrVr2CrnPeo5bBg9lYgrLb20tU0OiIu\nnGQe\r\n=IeZA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"a9739ddec2528ec8f3ccdbbc0f52f99f78608657","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.29","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.46","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.0","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.52_1598222958135_0.9328353777299621","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.53-renovate-non-major-8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029":{"name":"@balena/jellyfish-sync","version":"0.0.53-renovate-non-major-8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.53-renovate-non-major-8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"caa0178b5796befbb229476d5f9129f72f153081","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.53-renovate-non-major-8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029.tgz","fileCount":30,"integrity":"sha512-VFZAMu/QfiKX8ZAhUM5ID/e5Ft/JTK41cBQ6RO70M2cmel6pEfresQ3/x1C8+W0hdfAJuu3DLBKSL8WPp2iAWw==","signatures":[{"sig":"MEQCIH0GIn2ZWTBFSn3R15fiuh+S8T59yPfVYOA7ioo0Jaq+AiB4t4yXQtKIoHJ9fFSjPtgrtv+I8bYldl3rkgNaUhUeXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQx7/CRA9TVsSAnZWagAAXrAQAI2qiQJth2Lhftb5I74e\nn3nFAz2k4caLtVpkSIBfs5KB6NW8gAMdOpitBZfiu7d4+QrmKUdZhTHAC+cX\nfwQdOkNhzgGHEq8pvwyKHmxmQ6LmWN2htj5iAy4G/Iuxb2Yq8RnN4dbriZFR\nRrsCJHCfCb/igu3oO26VK7P+cKueUN00ASqefbpnOvr9mfzrGWcQ7RkYXgJJ\nNvKqru75wpcM7FvXtX9HQQM8RG27i0R/JyAxFI+Gq35QKgApvP419Nzm4lvH\nDQKwJAxZtuLs1YuIaUdt0O7bHb71RzzNYMiQiEgfEHkTLLbcQ4fcRxle/LYy\nI1q/mq2Z7r1d9KgcMs2EUGU6Yn06KYHL5RLE0VfmgBMXOTurmzwaOLzvXNXp\nMxDbqF7bbCPbc0eW9NfzoxB+rr8ojqMHyKzpF9gqgXC89416grT5KMejWxeX\n9blr6Oj/E278Qq4RfQD7XMZHjqUmBiJKEgqHp+U+pZcMoAO3e2hIvZ6Nud3z\ng54MN070juoeDcKTG16PEcBKTzMOXppf3DQB8amYdKrL4gYtvxlXsJzhTfMP\n0OeCVhLL10pe8CkI3ylgTFtsPIOZ4obJjuh90WNcgeJG6pz6LlWmJFJ3d9Rc\n1REEKZyArEk1SsmBWd+26heJk0bkcYOd0SU/8B/Wdk7Cm253Ftq4qX6MDbRS\nq7KW\r\n=Z2Cp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.30","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.0","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.53-renovate-non-major-8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029_1598234367220_0.34628831200667287","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.53":{"name":"@balena/jellyfish-sync","version":"0.0.53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"20d42c65ddae0b5c1cf0056fec903b270ae5be5c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.53.tgz","fileCount":30,"integrity":"sha512-Kx59cb5pwpWkjZqVfaYip0lwO3n675u+IcbyNzlrssboqFNQcCIkti08T7NJrzDITzcRn4VOzwo2J9pqSvLCnQ==","signatures":[{"sig":"MEQCIH6XGzv5DhDH5RTycydhdyUCZecf6WNGNph2wLsj2VAaAiBGkf5jxzUElJweZSp3JRhHFPJSxWGl/Cgq1G2t1Mk7jw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQx++CRA9TVsSAnZWagAALzAP/jTvj1QJoUrW+z504Eh1\nJkti9vAjV/f9nmAPw8QzYZKo8xENnKqlwmGXB9X5zBi/kePcC4fhn8WO8JhF\nvwdQL///hUmpqlNd7tkiATFsx3pNrRj6Xi2FMRSEmnaldITQSNOGPuNbMxyq\nAz72TyzpnYz5OxJ1fzlXfe/XFKpc7KCnxGOck5F+IToa0cOj5m93kDHBk9tX\nvPJ/q9WDe+IAyS1/mKBLp6Ww73zTMPQbw9l2o5LcthEmg+DvsTWqRymQMYrh\nhwti6dBTTtK69gJMAa7rVAOFCaRnCSf0dc1gJjfzhZEi7KoTKkwGPe2hJ5Gw\n1lKFKC/rIfEtpPx5K4s1TeHQIkHI0zYGCPOzTrrhx1u+/QdssC5l0eHHdbsN\nJx+osoCyjTgJnoEt8eyR/oQrzcFE2MBkpKq2NfPOj2vrnFsTnTZK554Zd4AF\nvMwRlhKUxMXdHOqELubILPJopTKOWGu3hiugnmj7ObgG35/r5DM7irs2CYXy\nvRC0EjwE3SnnSpUA/SAy/BzjApQ8jQjAxObX1YokLls7KK/F4YFZMc3VOeJj\n9XX5pT3tAYMXOuR777VDgXTuYG1frUCSrjf5unDKRih5KC90Leb4U+nrdV40\n9nKMpSZ1aO54LKKLp28eBjCNG0F1eKUO5gae/Sd92Vpm9HJSknK2EelY8pgc\nZfbG\r\n=GWHj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4f162580e43a0b1e9df716b2b04f7a869c34757a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.30","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.0","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.53_1598234558116_0.27006944937386645","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.54-renovate-non-major-ee841742f5534708f55da2b5a8a7f328c23c0427":{"name":"@balena/jellyfish-sync","version":"0.0.54-renovate-non-major-ee841742f5534708f55da2b5a8a7f328c23c0427","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.54-renovate-non-major-ee841742f5534708f55da2b5a8a7f328c23c0427","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c312f749d246c98760d34e382d61b0a6f07a9ce3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.54-renovate-non-major-ee841742f5534708f55da2b5a8a7f328c23c0427.tgz","fileCount":30,"integrity":"sha512-t27fGMNk0IWX6nkYq/X4asgjRfR0kYG5WrlOAbOtaASMDTzkRs/Rn+C04N5mz0EiyepadhFuUeIZPYTKJHU4ag==","signatures":[{"sig":"MEUCIBj3Vd2w2xqdTCYHSs+9+110DcOpNsFC3SQ9pX/D2H4nAiEAhV3KZlWjdg9bn0ACz466y/GSwdw24RJuhkxnvI3yBxI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247162,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5J0CRA9TVsSAnZWagAAPbEP/RCakekYRnBdaofeUE06\nAGekMUFLE8TDrxsxnhc40T+JKddR8CBSEC4HKmX3RDI+PdN8xz60CrNcdq3z\nOMTSb9RkINN+7S/OIhmFqMoeVPwG+Ly32yaTrCD8WvVAgtk94jLCVZKzzICB\nvgHhDCL1ONXE37BjR/aHuIYwWA1qcHeaLMb99dgl4G0YkES/Fc6/RNfl4Mj6\natE7iHhTxnmsRLcsPt3DiJwpYSUyIPVhMHdmwi45wVoMb0kFG7LGLaPqQcYR\nt/kOHDyyBmHULefyI8DkRhum0vb30ReB5bbkK/waSCylwoIPp8Tzg5GAo8OY\nZUnwYn508RLCzOIlyZW7OTVc3CI66ki49YAYUCe8XuaRQeCnI0AcL0cP9E8/\nANiQaBEBIB155fbikYoLKz0AFBf7dqTsUGXdFaJhioTeoKlIRDgcmMSLZYzs\nWTs3tBu8ZlberPztSaZGNPNhvyb6SSGR0dKrqupc6cUotOCeWhH153CEdmiL\nzNUcTEDt2Itrsp/xF+DB2dyJcVfeQJT3NrsfnF5IDXYcLDYnH+5cpo1aqSKl\nVjkIyCk/xtubp/yorbVmXMSvLjmIQUZ8KgO4/1u2DKQtGXoA1OhXwPQPv/vI\nZBRb0SgKJRCGjNaaQy9QLefnZsu1q0BE5Sjm09rRAwcX5OFbnx95t2whFq5w\nLeZt\r\n=LoKF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ee841742f5534708f55da2b5a8a7f328c23c0427","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.30","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.54-renovate-non-major-ee841742f5534708f55da2b5a8a7f328c23c0427_1598263923895_0.04479083333441447","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.54":{"name":"@balena/jellyfish-sync","version":"0.0.54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.54","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"92fbd969c31a4ce73fbb2c0df7b1467840cad23a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.54.tgz","fileCount":30,"integrity":"sha512-+62LXXPwMvTU7KsEWkwZcNeVS/NOV1aM1swrRhvchS7lI4tnO1cjLvCZy5oPXA99B1rxW/jSqRC49x1RlUj1sg==","signatures":[{"sig":"MEQCIDyZ8O3HoCrgEYcTEu2z9Cntofh3YAQ9HbTfJKnIsaq9AiBmhnGEhzezNUz21NVhnnNzjLZI+7V5YGMBvITaF8zSpw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5NTCRA9TVsSAnZWagAAI24QAJ3geoYvRq1qi9eV7DSh\nSX+8yctOThNKHs0RghX0FTWqlkGHDgtvU2PsVaBnG+Za0t9hCEV5aLEVf67g\nZ8WtQ2I8OOX1Jx+5bKGgFLFamYKoBR8p8UBX3Yf86BDEhHfFpyqFDL/t5uzy\nxbPcau/2MhtqmqBRvT0x3JWSKAaP5+mbGdEFaHKsJireU31YcIvPqzEQbjwC\nG5SP/v6UVRlSCN3E06Z5vdKh8VyB6ATYvp5Fd3+noYhXPw/TwU5rhwTMu+Md\n7DHXlLENZSMxqKAeWAO1ELPaOx/5g6WfY8KxBjJZb/AsZRKKl56wy6haTMPI\nbsvEc3h+6hqd/x6bx5uetO8NzYX1AI72MRiaBn4dmApUJsirwxNX0r2zcMVT\nIzwSa7Nu6syXMMlPVZluK5TOuVj9Of6GacxJ6AHZOtCSuvknl5H0cKXmMxki\nNZZvFAZPZGJghEUDmiB8xM9F3h+uDZMYWDby+RkDbDYaerCVd4cl7L682Zip\nW1Fn4xU5RGVMp3BfJtUGrz2YuSD7xpYaEXSQTBHuqnaPLJdeCZRpmZnUVcFl\nfPIyxWzAmzYzYXP85Tw82JPDAkeE6AHYINm9+J4c2v7J9p0K3ZCeDX82c+kb\nY0JTdPXA0zBStgMNwaxwJ9iYDUmB5K2/EBq4dwIxxPmeYTjO9T2flPjhK3lc\nxRbC\r\n=b9x6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"6f24213171aa368f0e1594873efa9f03118835a4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.30","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.54_1598264147412_0.2583434579086068","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.55-renovate-non-major-4ae3c0abdf950d0653fb7e70299723cb48cbca20":{"name":"@balena/jellyfish-sync","version":"0.0.55-renovate-non-major-4ae3c0abdf950d0653fb7e70299723cb48cbca20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.55-renovate-non-major-4ae3c0abdf950d0653fb7e70299723cb48cbca20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d274b3db91e9bafeb0da29d4af32d669abd8eecf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.55-renovate-non-major-4ae3c0abdf950d0653fb7e70299723cb48cbca20.tgz","fileCount":30,"integrity":"sha512-yeu51cmbCbo50CUfrzwAzRTgQsuB9y7lxqn8lJsyopHuW7jI1f2QK12mdoVQxvPi9MQ0wty+3lyMvoMN6GNAvg==","signatures":[{"sig":"MEQCIC9acIqXzHsk/Od5os3OMerxqnhon2maQfphEidv5jQVAiBpGgovVwZKzLVTtwiPo+ueU90VceDR/Dh/rXv3/nK6Tg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5TRCRA9TVsSAnZWagAAhzoP/RCSf/B9gupZZgl/vcqx\nc5RuN1WSucHwE8S7G2S/SxHBa+K1ZxtXTZ0xLVjOEHOtAgs5o9F2cFwZg/LY\nzfiwzaYW+Sn8py+eqYDrO0gYppm2cs1zpnK4lYBFNgQH2zaHLzB3jvZhTf7L\nvZiYkwaWrc8QppULAynxzHQbAvCg+4V32rq95Ffeo5SZZRuUwMqG0hH7rjI8\nie/tFkb3qiIFCaYh5dJrA8dCcgURRkwLnlTVdGLzqG8/YRkv66zYhLC4toKZ\n7GKupc7pMrpAFZFqJytcVYsN6KcCqVFgcNK8e14GIifiQpN83/e5ZO0eb6fj\nWQhFAsPpDrdPMGq3kFyUYMKUAE8DZZH3DVJK99yCwShfQUGsYZ0NaY1voRQZ\nnQHLo9+YPZE7q7MioXZueIMsDA6JhePx7sIIizy2pHRLQLnMqJ+geQ1cwLnz\nuxoJLDiylvLhODRLonHIPbBOkAMQkona614+wgQy3QjuHARfSK7dLBKYh/XH\n+so9r8OOxA4iCrDdm6InDPsk2WOrw+kL0qT4DqrhUrkzfGxXyRe7ra/inTwy\nLVY2Ml8PWhqjVheMyJ+zKQMnBNQ5x3lLFNusXnfVnss7S0BlKOKBIK1Pfs4X\nIONGrSgdLRqG5uTZ/QozlaxF+2n6XVbUMWt2CSLahsgpWAT9ZmJq6vzIqPxW\nltM0\r\n=u59B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4ae3c0abdf950d0653fb7e70299723cb48cbca20","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.55-renovate-non-major-4ae3c0abdf950d0653fb7e70299723cb48cbca20_1598264528895_0.09887867344581602","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.55":{"name":"@balena/jellyfish-sync","version":"0.0.55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.55","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2fa003d5346ab89fc74e215246168174743246ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.55.tgz","fileCount":30,"integrity":"sha512-prYJwpt3PY8EP4pjnedDgN5q0+c8EfWBibzFVdF65Kwx+5roAyOYuS2ZKF/EeClfOqHKAaR2MQssdy/PJjY+mg==","signatures":[{"sig":"MEUCIAcnU0kXPuAUMqu1+MFNQz4/n4i1eV5RhAs+M7BBKJGVAiEA4QvQ2knQ/E330VNkY+88DXsaU2B7UPzw/En6OyetJKY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ5VlCRA9TVsSAnZWagAAOH0P/RU1/TAlr/kMt+zJlVfB\n0P/oqUCGtfnyKp1a3tTXGyPPqICzLUItAuIIJJUqENnxXPzkaxWZKBkuvhsG\njIv0cUjAqGtblIbKp2OoK7F6u0tE78w5AP8hPs7cpN2PBXwVPK3twJmKK/+c\nIVm2TPwxYoKgcSEs8oC+Wz42ni4+KpzxrhO+fzmWN8/fZ+jNMPNnIJ1zt7OP\nkDW4M/q684QNFyyhVO4yHIm9e+kyeMk1qVDGqjgICJPTq7pGggnhNChIdv0h\npcOJoTNbUMYXdV14uykmNn1TV/NkkK83NftJerN4UFdMbVpLk67cL4SvwR9G\nyE1/vvU/1oOoYYABmhUkL54j0FNI0JrzsRYw9pgwlDzfTVWNS8lFaEx2Z5/2\nub3JgRHJVg6/Leu/Mnbs6aYGqE/W+9m8YLuNh05GvJOocZ6qrbfEX87FlmNd\n+PQcbyfAUBjMY0Fjewa+d+vBdWZnUrilJha3s7jTrqIyEJs8mQ2dn2be0Yvj\nXPGfAY2k9i3CB39SDV7Ar0p16ZgvZn0iwP5UlJEISQkKcYLdGVIrDt+yhi/M\n/wzWGutohZWH/5e9mYafAVQCRdOF5h2/kRFAEDqDUhGj5AezZ/yQ28TQmOjB\nfI/UA8dWxP6EeZbPSCno5hX7D7nAVMBeSRsrOatcoYW/aZj2ygPAx4UlooL2\njUGK\r\n=FVFr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e74e47f56aa16228c7fd357567512542386a9396","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.55_1598264677286_0.7521859811094613","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.56-renovate-non-major-29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0":{"name":"@balena/jellyfish-sync","version":"0.0.56-renovate-non-major-29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.56-renovate-non-major-29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f26e383b8f02ed0af9a8e53f78d1c96a4b411354","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.56-renovate-non-major-29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0.tgz","fileCount":30,"integrity":"sha512-pZ7m2IbOMObJCi0G3oyh0cC85NYCDeXmS+NiAnL8fHUFsKP0pM4RZPdFYz/piSdJOUkjePtV1VONgciMm0xoWQ==","signatures":[{"sig":"MEUCICTTtsb0hnL+7oRHUH1zCR9Tqa/o0/u6GYAs6N6DVSpjAiEAt8mZFL1fjshO2brlA/jrvvQd4GCMTTiEb54N+zuHOpY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ8cmCRA9TVsSAnZWagAAtuIP/0ZFdEVO8I2F23Nb3zHi\ndCJ/NuAmf7NDkBue4gN86Zcnroe+uLrWGr7yc6pekvHt4RLZoKHjSoJctdRd\nUaBhGpkQf561JQ3SwN+prbRYG08IjFNvev+fJ/KgDK+49IehxMr+G5xKOM0c\nSkjGjFZ+daulWGypDSSoK3UaQEIjtlr6+iBK0JSDTed34BwvXuCaJOsAVcNp\nCAouVO6P9pDO0lqk0Z7BgpjDF0mRtW7PVQVWzwFf5aF7rpooSFkN7taVKtn/\nsYlJIlEK28gnYnLPjsRMr6Ub1Echyn9FDzKA7NMETQT68xxFIBBXW8QZKbya\n+yX34nXJ9sUky/KImVSKE5/YOhOTryQf15epr64vjaa1HsfUOLswUeLPV+od\nmh9aGc9NW2SuEipb+QHUyCzrLHhVtuNpDU3QkNLvVmOtMu3YrS/mCm1Ks8+v\nYC9UrBYYzXZcL9oy0ShuzuhGYGurj9XxoAWNgy3y+8PABwWBl/gP6oyHaCbT\nGsRoDY1/F+SFFWlw4kYpELxfaeOs8W3PAqSNjUfCov7ihspWzEdxYEJryuEd\nUVpBC6KF2TgPVcK1MkWwqdEYSfANACB0DEmTm64VqoVkUh1cnhFKLlEGAknf\nKGpWWbLFoiik0rdzaoysIe17+i3C4vLtAaladA/PCFsyyTH9tgU08yOhNVrU\nEif4\r\n=po2w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.56-renovate-non-major-29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0_1598277414024_0.04780462583409473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.56":{"name":"@balena/jellyfish-sync","version":"0.0.56","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.56","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8cf7d6501cbeeb412036a80ddd5d0f352084fd41","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.56.tgz","fileCount":30,"integrity":"sha512-lZau24h9xKnfQwFItKNs2zUROLEMTBxEJ2QikfxPUd/9n524hmmIp+WiWibpI//idYTXH7UhriTPHVKNIJYwHA==","signatures":[{"sig":"MEUCIQDjw9yU/8GewejvyyoVhlsbCM59moxv5/06PU4feoFyGwIgP3myM2JT2skyJnDFt7ETMwlvWt8F0Tx3m44q+lZO95Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ8fPCRA9TVsSAnZWagAA96UQAJ07Z+86mrZ56WVqvHmn\n6WR7Ulym2H+xeBYxv7D/05TtfgblyjQryCKQCk8VPVXFBM7oFS6+1NbIPJcO\nOI5wbhF0Rfc5kduGH9pelT5Gufw3Qg9Kum25OWPvRE0hglYPuW5vlbXz+03G\nM59m8+JCln/1oHBNXm7c6OyNAws75KNVJemyMfV3Ega6YjWMtwq2q3c3jxgY\n0rJczfJejUjuXAO2ediQkVMvgqchR2qXGjMCHDgdADKIaajlPNmME9PUEXe7\n8qsuSlw+8CGqXwaGycUqvPnGsbyY0+ykK2UxlGeQC11wOU59cHOltbxToiue\nEBGYYDUM1O28eCYqO4bP66g+2qGX4mQhlz7/F3yOdgeXru26QDlPhMQ1hs9K\nUqNd6G9J5JcFj/TGdTRzoo9fqldDl8Nk85VCR+DuFuXXluuXPPegOR24d0CF\n1ZwONc/TACJkST77JkjGWjGoUZZ1mG0oaU+xhYI4yz6KHNVPXICPtvvAcdzW\nr6FvntR1uJ2/zQAGhxOuVQ5xVICr48tXdvKNl08rFHCUbqWhvB14q7UIYrw2\niCAg4aQ70R4WNX4ISfmmBzUCK9DGGSrSFOaWMjh0h80E79IUaJYZLWIfDOT+\nSBrV7Ny76I5nE0yhY61kmitU9gvUt9XD4Hd8Jup9VlZsuKOq6RlXgy3iTWl4\nWL+f\r\n=Qh5h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9767829cfe9be8483cebbb62f9e68b0d3379f992","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.56_1598277582686_0.8627881400884305","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.56-sync-balena-api-plans-7a12737e5526ea846d258aa9c1406ec52ccbaa6d":{"name":"@balena/jellyfish-sync","version":"0.0.56-sync-balena-api-plans-7a12737e5526ea846d258aa9c1406ec52ccbaa6d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.56-sync-balena-api-plans-7a12737e5526ea846d258aa9c1406ec52ccbaa6d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bdda96e2c7ee0d24e4d12d2218753f2883805f6c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.56-sync-balena-api-plans-7a12737e5526ea846d258aa9c1406ec52ccbaa6d.tgz","fileCount":30,"integrity":"sha512-Y4Zfb8Vhtu3pYOpmykcnLQw1sM5oIvWsUcmyNFbysZaXTIsJ8TT0ufcdC5qpte/PTC2PZKW5h07Ig5zkcrBN7w==","signatures":[{"sig":"MEUCIQDfu0dccB7iRlYsFoMjJowlLznITY40JKuLUzrBYKkRmAIgXPIvVBluOKaQqqAAbWynfodgkB3jn73XI0GfpotYI6I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRNwVCRA9TVsSAnZWagAAi0gP/3aYzUan6FEluIbFtyUH\nzf7T9NyWZ70moPB+AI9QUHnxgVGFYWHwseS5JCYgYCUCb44Fqcmb7rZdOuae\nNheIR3Aj5MdpCTLmbq2TYSoORCt1tlw0BpftKXXBBRX71SBxFc44ftcMw9xF\nbd4aOaM8ZXBScba29R0CAGnEg/LK9VFqsrmNx6zyRRtPoY4VEmcglZQCpKyN\njyA5bcbiEoMqyj85mLb6BXDN7ncQfR4NWGqi3is9HpaoAb2A3CQmGmaNypll\nGOp0maIrZaxzqm+AaWQKTklEHBR/M59/pjg4rAWeZ7z+B9uxBY5xpNsEHRqv\nqXHU2ttCXRxi3zdvBLmCnORX694jzhMOAXDWY2PW34tRMAMmNenYSVrutVWZ\n1yIBmseD0nnfSBPZ0B5FimMrUH3ag+kN8zYJmyypidu2vxqQkXrxNZKI5fA8\netO2b3Q4nMpMYHCgEnO1ZfFWIti6upDmYh2ZDghGz4TImwJGS3QVdSOCaSgg\nrmbhzjhCWMLh8XOJK2dM5v3p4ZF991OYM8wt+H6lvgIOzpM9xZf6kHJwt6jO\nUoi8I9hZ3SB492KUUvOOxXAf7ClhWCQWPwg3x6nxx3mtYWxfgiwIvudtlNF1\nWTxD44uTR6cB0yDytrmJNaJLkO+EWpPrf43A7IEnJCs7Xc9uxYmO9GigX63G\n78Gx\r\n=inuH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7a12737e5526ea846d258aa9c1406ec52ccbaa6d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.56-sync-balena-api-plans-7a12737e5526ea846d258aa9c1406ec52ccbaa6d_1598348309105_0.8418956215224325","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.57-renovate-non-major-4ac200cb6f403a5182f9c6474cf7537426a05dae":{"name":"@balena/jellyfish-sync","version":"0.0.57-renovate-non-major-4ac200cb6f403a5182f9c6474cf7537426a05dae","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.57-renovate-non-major-4ac200cb6f403a5182f9c6474cf7537426a05dae","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f3b96f32de4814535d3b9cac4ab42df0a80954e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.57-renovate-non-major-4ac200cb6f403a5182f9c6474cf7537426a05dae.tgz","fileCount":30,"integrity":"sha512-BJJlNGodaNy1GA2I7T/Nr5BwC4t4aGGHEt6Wj0avH+MyK2oPMmhtPXnZAaMKLWW/0nj3SPKkbf4rr3GbfcPDdg==","signatures":[{"sig":"MEUCIGMHTfeKIERaYBDrI369e62lbhbuwfmTgnMIxgXZbN7ZAiEA7pOFmqVXOb3/7B4uzCAib04D1bsBL+i6S7IxIWfLbTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRPnlCRA9TVsSAnZWagAALWAP/j3nxcgYtkQUDZJ8C54T\nwPI6uecAL1V6ElIQi5luWV4yJ7kPVo9E7ymbb7HU4u2pamkZsGAvv3CAFuwV\nGdBxwGLcsxd5uaofEJGwEL38vQ6ZO5UBVx9293MDESSCWVVOl8KpnXRn2GN0\nQPmlw7Ryg1gweQrboG9/EQ0BM58IfTZqNe/4xRh04+dNSiCu7a6Ruk1VCZQv\nwxJ+qXzP5xMoYL6dB/lYtvEjPyelyE1dosMQ5i+hegVwNuzZx88hjWeSaymd\nzr0LIugL8dlooyBGG9DV9/yRyaJn4Vkm3BHDA+GBVXE5XfEib5sLOLj91j7z\nxTAXvT/+8YM317yDdxhH4PyjWffuQ4sabZfqkfeNbT9+QnsFJx2R2dWYb0dZ\nkUkG7Ydnf9UTRFUHS4fci2NB++LB+I+2DMmAmdoGSYwMmCWwEsYQNQSFBRjz\nbbpfCU1fd6tPDT4+iLXOFdWlPLp6yURxFznDYWQoxRYGqSZV/T1nPBftqt0N\nBWHz4ykhFAx9rv8rRR28b7QlhMSptzS1vcebJAwPUo54s297V1utshtWzoL+\nZJBy5V9nPUJ7gaHX/E5Ah+jZjxz37agDNUDaas9RdWpGx3kIjk5isSxG5n8p\nvrh3jvVtd9LV3uixSiE7nBJm6DiYnZZHijbOloKXdjswh3CFk4DlS7Es1Gds\nShZd\r\n=hRys\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4ac200cb6f403a5182f9c6474cf7537426a05dae","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.57-renovate-non-major-4ac200cb6f403a5182f9c6474cf7537426a05dae_1598355940300_0.6950799479305987","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.57":{"name":"@balena/jellyfish-sync","version":"0.0.57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"628706f7286b192e688bd6853a82d3b3dbdc2e2e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.57.tgz","fileCount":30,"integrity":"sha512-m8S+UpwaLlx1UX+yBaZTrTAd4SUDqdNV6OdJoRto2kC3dzjkzWGT+saAUazPWJS9PiWPDuBvuB9ErM+jMI+HVg==","signatures":[{"sig":"MEUCIEtj1WC/P/+DUhH3+HAPOOk1BjK9RQBIcSMugLFoC1hWAiEAhNqR91qd2J8rInIoeFWzptt2WZrpCqwOq2neOpCp61s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRPqYCRA9TVsSAnZWagAABBkQAIjzaquIpHmm+fxGFnQI\nfeO/LV3MCURsgFWrpjKbTVpTHQY/AoevbIJWrg+zlwvC7FFNe31OkX6aYbX0\n5C/I2LNjVhgZsx4Qh6/SxwGiTy8CcAIKqwZ9vZSk5xnutCWuxPu4vumMbZj1\nRXWlKKUGxgqLhbwa3HCotsJz+yl3903MneWgOQLb2nnJ2gvFKqM4ijY3X75t\n4XzPTzP2x3pTAZOVyoVLZPNU1pNJZEhuY/DMT4nOhHpEdRtFy4qRhAvJfGpo\nP8UaAcGMeJOLIlLlf6G6JnT193r04GEDI34meVS1hxE/v3RE6W7uwvwubY+e\nAb66EB1qixRvPLXT3Ki910zscHcK+lpgHW8qeGxrATzR/pYcA/Z2KWM7FmJG\neoNrQi/OHyOszhlu/rb33dfgmbTwfKu15tDdh9/HRH9cqflQs5yIrb4fnNlR\nOiYgZ4ub/TURYE6+SpTknXdcBX+CUkRVVHtveLdZYMyl/hRU3weQmOgHaqce\nKthaQ+gWicTGaZlueO75we2in31AUEaotdW1yhHHLqPw1u4giCJcWP25fUTV\n82fReCG7bR/a67CBtIS8D5D2+aYIGzWKMTUYc1BmLYxHogUjTM1S7uiWXrx5\n+F0UCO9Mbu3dKZel7cs8kfbGwCt9cT/YPbrBdrPjFomNc0P5SBukza2JD7gy\nCmKQ\r\n=c4NF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4156d28242f45529dc88a6ff1b7cc00ad361e401","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.57_1598356120041_0.434862875585851","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.56-sync-balena-api-plans-89c03c561fc00769807f770f6b2dbdd8201431e9":{"name":"@balena/jellyfish-sync","version":"0.0.56-sync-balena-api-plans-89c03c561fc00769807f770f6b2dbdd8201431e9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.56-sync-balena-api-plans-89c03c561fc00769807f770f6b2dbdd8201431e9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01fe20a58f93422cae82413e7e1a90e91275fd89","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.56-sync-balena-api-plans-89c03c561fc00769807f770f6b2dbdd8201431e9.tgz","fileCount":30,"integrity":"sha512-ohw0p2GfqEG2JoS9SiMiZBCHi6s9OR5sgDUUWTGz+eqSP6LK8487xMTVKBBT5KWyk8LvdL0giJ0TKA7zsPJZyQ==","signatures":[{"sig":"MEQCIHO1wZ5+gRkT6RBcNDX70RajtzD6pv3m8bTCtjymGEpJAiBI8zwQXND4dkqcfFJbw9aO4cYCDFA/XfMrv+XFjBrEqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRU/BCRA9TVsSAnZWagAAYyIP/0x5hQfzuiMvxz4rEFtt\nLmOCIs7drGItsiKMqluC7TIin+dod7N0IcZ2uVTLr0pwTCvN11b5+s6knsjn\nlBROiYJec7e8bslyw2VYuJgR556/q2UaWrGd1IDlJ4Rxq07EAEvM5hRCLbpw\nyEgttF3loZ+aCaHoG8P8m/u+hVUfs1uAiyR6UQ1A4llJw9osKjcDBOvZgjlk\n4KzuY1CmiiHEOgcw0LuDMPndmonfGS565GFVJkX9G0gJejJkFalA8VwAuc5z\nsLeP2gUC/4pa21HJe58b3lwSHHoR69+k943hlb/zuPXjFKa2+n+6KBJ+CzJu\nTLAhGBhF+JdZrrF6l3QTAqXBVtlGJ1c+HfmHswPDWpwJYaaceKUadbW+6WtV\nf03razx1+oP1R2+HGC1j/+S0zAJe+rtWH6mLwSgH0uak7MHPSZD7VYeT8lRK\nbSBD8/FwlCfCHJhOv3fOJrEpFoB74WZjKBqURJIADSnP7w9OJTqNuF+AwEqn\ncZ7wjDAiB3SFEbG+OXoTepzsPgGFs5vreAWXxOUlj1D7ZS+Qn96yhplGXV2p\n5AYUhmiCmIfInu1gYe/8t+JQ2ESts9MxcJCN2W9EGHjsP5QrrkVAVNZA/tfJ\nHWERvUhZnF0h55AKP2AJmFLy56zh0O1zQZINtjypzdtxTxiCfoTs4sSV/4Zz\nsabH\r\n=RTK/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"89c03c561fc00769807f770f6b2dbdd8201431e9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.47","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.56-sync-balena-api-plans-89c03c561fc00769807f770f6b2dbdd8201431e9_1598377920531_0.23830079500655632","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-non-major-355221ecc4b5c2d91f66087381cee84293ad152a":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-non-major-355221ecc4b5c2d91f66087381cee84293ad152a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-non-major-355221ecc4b5c2d91f66087381cee84293ad152a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f426c7abfd1ebe248b753279f74cb2744bd2f018","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-non-major-355221ecc4b5c2d91f66087381cee84293ad152a.tgz","fileCount":30,"integrity":"sha512-TQ+nCTWvrbXfN6jQoTNBm7/0DMDFx6VBJGiB+usB02CK/i8j3mRFrXdwUY7upQjL3mnuCEZcjU1yssw8PhIF7A==","signatures":[{"sig":"MEUCIBa+zW3Iq3njhF0r3/4UuDzSOVfpHXEQr2I2hoaf4gQaAiEA05Xaclhi9joM7WyPBN89apxGSGwqjEPNA5DcLJ2ttAg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRbGLCRA9TVsSAnZWagAAzSQP/R+ZyGavJ1779uPZHnTI\nc91xtIsOsbOqPKJ9l8i+ewGKwJncp/S5DoEuQOjqxcJSuFfW/rzHl64OFHC2\ntkvDyr6Xzqwemk5imXhgyJ7tUIcAACM1rD8bpH4ZV2QOYUbMBXN7DmSKWGDC\njVRr9ptBjxGsYiQx/tOKxFiPF5DcgN7WLhjWJQ0Xg8rddqXXv450xpsq6aVr\n3PBpBp97CdJCqFxTm1YnmITwrJP3oo/7ddPrwMN9ienglzK0v88Y89QiaJAo\n6zTcsyqh1i1/F5rorCWNt0yOGmUJ4/shCYoriTyyMRpMye2GV4yeOLDMD1l+\nAdsK/3ARodtgf7pow2fvNIKBMVJ7tO8MOOHyi7ne4VEj8SXrKTAwm8aqhLkI\ntGyQJWzLbP6g6uYyiBZDs2qvYkZPW50KR5w65800+Dxpo7elftZZEFyYCN1e\nlBE5J1HX+ifAV/Ref2eSl9uNM9YlwTf2TEoYl9Uc3MXfSRRxlrGPuq5NZKLS\neILh5ZGXdHBRiacX7vVlZJxSOtqoZdEAREv2iP236Tq4RYqc4kK9QjBGlXYO\nPnDDwqiLLn36hK6mn8YPxjIIEVDWLNGz5xb7/5JivMU91ryPS9DgTByp/r+8\n4gT3AjqwTcTJHREQGBFvVfM/gVvU1C6daCeMHpULwIV3fPDoA/LkGbDME/PU\nisSf\r\n=qqeg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"355221ecc4b5c2d91f66087381cee84293ad152a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-non-major-355221ecc4b5c2d91f66087381cee84293ad152a_1598402955035_0.1527498292275069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-non-major-2bfd406886f275dff22e1c60c196bc453bffeb9d":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-non-major-2bfd406886f275dff22e1c60c196bc453bffeb9d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-non-major-2bfd406886f275dff22e1c60c196bc453bffeb9d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6c061062e83cacbf6d01c292ace74464186eabd3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-non-major-2bfd406886f275dff22e1c60c196bc453bffeb9d.tgz","fileCount":30,"integrity":"sha512-/V9QiGvvQGYw1fUiSMwbweYGzZg8jwYTcft9FU+JXd72RfgNBQETrAOoUO/6U5uJqXBKxN4cE4R1Y+sKcBECGw==","signatures":[{"sig":"MEQCIBES1+ExCqdHrG7Gwbf8Rav8gaCK/ktv5mOF1EYrPlPZAiBaJZLw6bc0Cf9AfR7i1gm008+smIg6rOkCZy5fNAF0ng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRcZ+CRA9TVsSAnZWagAAEyAP/RbgkPoBczireIB4cyN4\nDz+7ol9iDsC7cMyIt0IvMVbFBjvDTyaGsKOdDW4lFKirrhYkFe2Bmjrevhr7\nvrUgFk+7/sQlHTDFpCzHX97LZqw3DyxhsNlv18b+MeSXSsCvvbrSJmvxgSct\nO3KNd1FvWufAHQ5/HbeYqyLEyUlfCWugUek0ilg8op+aX2T0g8fDL8NDWTuE\nCKjl4C2SWOZEXOsRUuhsw7cyn3TeLVWwsI87r1Bpp8t9S8PAKdG+6nwlcSiB\nPB2ARxRk8jmzmvbKTZeV79bIkbgAwG2BBvrucFZltWmNmmKtS32qWgnSWUZR\n4nUlVMVPbk2k27asqHNlCeGtLdMQaikt+9Pg26zlPEU6I0SWtRDoX+KV54cr\nNFyo1Mko0J6yWezKJVxWOm/KtV4BOIf3qmVLQ1/fVzm92/xjJcz18n3FAH40\nDUNaPckOLsPHaW/D3uqx36des5HuS2MwGwxWZ8UflS8MenYP5E0jCbkgzPQU\nIBat7qDZRsXKdCYblfdWnTp1mE2aLV3o/KxYouyaGkKK/XeT6SBXrqyt2bwb\nTdLWkaVlsoKzhPRxaMJlYpYq0ciOicb4uDJ25mWzrn8S0qobp4FRqhA+l/6/\nj338tVpSGoc4TVSs0fOiGttrtWTUdknEQRs9nXMPFZlAdgG9IARVYToRXUnJ\ng3l1\r\n=iX5z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2bfd406886f275dff22e1c60c196bc453bffeb9d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-non-major-2bfd406886f275dff22e1c60c196bc453bffeb9d_1598408318136_0.6319690513405436","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-balena-jellyfish-assert-1-x-48460dd80e77ddc79af024f1b2881c275538b114":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-balena-jellyfish-assert-1-x-48460dd80e77ddc79af024f1b2881c275538b114","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-balena-jellyfish-assert-1-x-48460dd80e77ddc79af024f1b2881c275538b114","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cbfbc26d5867c7736b0a23412fbaffb90268784d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-balena-jellyfish-assert-1-x-48460dd80e77ddc79af024f1b2881c275538b114.tgz","fileCount":30,"integrity":"sha512-VJE/IB/BpaRsX2fkauk7MShWbuZi+DxSUVmMCw4KB7iT4mUx/yg7SooTA9qhmTsP485u2iUSkqBL3AvZ64SuHQ==","signatures":[{"sig":"MEYCIQCBHQDcLijrAsBmZcIKmU43ZoJjOODuleXqAR/8bRl46AIhAIVjbj3MJWagI1cIlu3O7E6Zi3AiNSiQIo8k6IX04nRd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRca9CRA9TVsSAnZWagAAWiEP/1PDCQu3u9lVt8uh+go/\nd6CtJukVf72i1b+pavT6NQkK2k8mJF7yyIubVzioQg8Ao7ia/5513od2ubmU\niXbqbJmO2vWZW7/C5BowKAIYlDnSVADA7L3Jvbin5ZZwW/VUq0q0r4tKXntd\noq+N+wNYCpLvoOCiWdXkFTYw6jUgcGk/7Qdlwx9YDXR0xJsNLGNV4bJjnyDv\nezE3NMcgsHvUGemszXo2GyRPSSiuBuYcljSlxfHAoq0wlVqKJAajyGnfzDzO\niMm8SilZueGH+JiFBYoI5X6nEO20EGcHTh4epLUAl26+OoNdnvpudUDv0g5F\nqfqWnFQ/DM6mGFQjW2xiEzIJ3/2H6sn3vuf7vNTQiBvpglx2PMev9n7bek0p\n1kfVu2zwveisfiEau7anlvi5aVF5dzSvtcbkSf1MzRoj/Q/tz66WzEgs4Yee\n8c3CZS3wQDnbSqiW1G38OrlsZrCeHWw6BguVU1ls30y69aJXMCdy0+xqhz/h\npD9a6wt9qAHF6gaBbGVyOVeF/+y2p6u6KGuJPD4UHUzAyis9GFtqntMIg2HX\nLHFBjGiahdYGWOl3UnGyXHqHYM7pwBYEPLLl21wHvQErBICc/Rs5qAjTJHN6\n1l2QkTljaptCTehmzYI27yIJSpMAjujLFQIlCDAScVGaiIt1Ts8YK+u9MlbE\nSNQ8\r\n=M4Ve\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"48460dd80e77ddc79af024f1b2881c275538b114","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^1.0.1","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-balena-jellyfish-assert-1-x-48460dd80e77ddc79af024f1b2881c275538b114_1598408381209_0.841918912774386","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-balena-jellyfish-uuid-1-x-9b17f040d151d96d6ac2c9be522a693f16c1978e":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-balena-jellyfish-uuid-1-x-9b17f040d151d96d6ac2c9be522a693f16c1978e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-balena-jellyfish-uuid-1-x-9b17f040d151d96d6ac2c9be522a693f16c1978e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c38a69be23568062932a815eb2ccee1a79f22761","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-balena-jellyfish-uuid-1-x-9b17f040d151d96d6ac2c9be522a693f16c1978e.tgz","fileCount":30,"integrity":"sha512-fsX0+v26hCP3dYY7W6asGaAid9umSS+GOdJPslPT5nI43bIYyV6mBKAtF8wZoIJ0IjS6LMMFe6p/HFGgqLVYCg==","signatures":[{"sig":"MEUCIDnoFZR8Yrn9Fl5QFtL0GgVZBAcr0xNKKP/PutORHY/KAiEAsOlhg5L093+8eK5OEuipF/vEiiCkAD0ZkmGRrob5r6s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRcblCRA9TVsSAnZWagAA5xkQAJl7shDeaIi9B69uGl4J\nlUEqsmSllW3Ufow05Ve7dpuZTIwtWMCB8LVzNb4urzt9J/E5GrH22I5G32W5\noGTS/emZwNuf2uoyyQieZ8g+e8oagkMGBZ4J0W5zCoOzQ1epc645Xn0MRfKi\nVs82EBhq4y3MVE1gmRYELqCxJfeNhRmcuzi+Byk0UDx3jTu3szcgwFuzLa/Z\n2ZKKIuA/1Ed5fyyxfflf7D8OIRzfhzJsRy+ZUwQOjLfNFb/YiEmnBIecXcDu\ndsBuPm5lSvD6Tfmabzgf/yRJY+i1pAB3s9PHs+HzRdusJQ8JS5OrO0CoXsYF\nXeO0QWhExMnQPrsDNPPV1KFRt+lS7DqluKax+NyU0SLNPykvd7OtpFNITwsA\nEQ2XjS3VddkE7mN76jaO4Ok8TLlppL3fYBx3OMA5VTUlMLYp3hPSFyBKOgaG\nyFJcV+pJHM/NVypZhoh3ERpI9i60nm1eOLTmZ61fzknDPUFKJQ9B4CYeMT1V\nUdtt/qQkfjhPUXxac1x9W620yPN9EpM+JjkAhnwrpIeoDX6WAx6nM/nHx92l\nh7v9YElg8Dn+PoK08SvSp0Y+WW/ob4YRzrHKKWBDjBFCy2qyOALamHTI6YTF\nnL+aIavpNiGfbkcMFFTieq6NansoJwTOE65sfAGOWBZK1JntcyC+EeMRBZ9l\njuI9\r\n=ycZI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9b17f040d151d96d6ac2c9be522a693f16c1978e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-balena-jellyfish-uuid-1-x-9b17f040d151d96d6ac2c9be522a693f16c1978e_1598408421108_0.4096114150300052","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-non-major-b102693f1f465cb80c30e0ac694331761c90c2e3":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-non-major-b102693f1f465cb80c30e0ac694331761c90c2e3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-non-major-b102693f1f465cb80c30e0ac694331761c90c2e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0b27274638fd20d5669c090226ba5f6f3ca69c14","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-non-major-b102693f1f465cb80c30e0ac694331761c90c2e3.tgz","fileCount":30,"integrity":"sha512-fzDllQapsrHancVul5NRCVrpCeH71aRwd/Imimc/AacOD/2p8259KxhooGFEaz9KsGsXAbXXRkJCV4A7eB7kag==","signatures":[{"sig":"MEQCIHmUFz7yo8c8kpFGA8a8h9kI2euP7QWvOw40yqdLCZnRAiBiimTDQLIDAnnwvzx1j4lORWvbF9zs7OQjXR64wqP/WQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRdqSCRA9TVsSAnZWagAAtw4P+wcdsz28wAzrkxOObXc8\nWkYy/GwEKS06M2VCSIJyNObJlrmmeiKGWsbERjKJ177kfZM3xFQWGCaWMZTg\n81MKS0KtoG+BUHmO+LlLV06kPpIHCmAguiZnVbWxFO7M30BoR3yiwBMsza0s\n+5Smn+OdqSxN6AXrF7zKbNvg3dUTTMMrTCoUj9nuDLXuRX1k+qfyWZjRahY2\n8tWioifa9k1tJU+bFrQv6z//4GTShRjtg+wWQtnD8Rbg+O0FnXLfc8PoPBcZ\ntwaCRsx2yhkt/z1aTmFYKgcHz2u4ZK4lFnzDrR72DkQiWwLbYOEIMIC+qhDt\ndCn2TFkxjq++m7b6suJkWN/dAm1gVyK8Ed2NmG8re2N9SVESz734if5YJEmM\npOPGAp4ttwBaFyrNLlcpa/c2vaN9x8M90nQA1bcoRQyG2UtJwFckjiHMONtX\ntkU5vVACjpuuK0NBPPqlhRPi9Ls1yC5Es3lACmXwCHwPbRhCG7rBdYeLT+PK\nBBcJRGcDvLj7LwQd2oaae5UpZRJyy69xVMkX2WTcimjU9ykHCsqIaoB8TPOW\nqSKHTFjH51pPtXhOjIBW6rfA9CVqTaGwi9Rcf1qoWP38Dyly6x4ZfhWuiUVT\njzqKkZ8K+8OT1i1OuoSsHyU/2Kd7QaUQVEArxK0LIwcgaXdsBlD7BBRdNTtc\nwGwv\r\n=dcBT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b102693f1f465cb80c30e0ac694331761c90c2e3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.49","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-non-major-b102693f1f465cb80c30e0ac694331761c90c2e3_1598413457926_0.2768682695063973","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-non-major-bf7bb86f963640574136365b2d88098483098f49":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-non-major-bf7bb86f963640574136365b2d88098483098f49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-non-major-bf7bb86f963640574136365b2d88098483098f49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b8a42b9b37d6f130883a415c31f07350bd6f74af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-non-major-bf7bb86f963640574136365b2d88098483098f49.tgz","fileCount":30,"integrity":"sha512-VqvEmppGy4Uu1LIJWqbz2XW0KdFFwcX8vYrgWMYY1c+1AUNC30hBIVxgLZKJbawhcpQuA1gRlhL7a2JD2WKWUg==","signatures":[{"sig":"MEUCIE1lDD90ceydtpCVvF3GVHvlxP2NEfjYD17N3aGdoGOyAiEAh7f38AOSzZHkVCGuUdz+y4xXFgQLlyokuSWCUS+4Jug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRplFCRA9TVsSAnZWagAAHeYP/3PUQVdiOAVLMAdi3k4W\nBXX46W82/OGpdHRPCbMzfRuGywPwoy5idVQXemKLkqRnlGy+N2WQRfDl2czC\nrEz+dCIwr2DeJjjPSXg3IYeL1RG+3hdY16iEYFGFZjOVC1w+ZbNWftQJOSo2\nvJZFP7/bYjxEwT5Hwotkr95IzfHcn+WlON5XsP7b9L+dgv1k6eRiNX4qFy4A\nxJYAPbyXCUu20nb4BA2u7Q1tXNMwwId0+ECtlYh7BIcBbxIH3dROScQd1j0i\nlaiHxYjtgchCXIth8sIq/pOY0HU2kcjX2G4Lz5P8yMkTeScSlDuZdnq6HRA5\nUIu+Sp0/iA+YsfWDU3BoCsPO8e8ZOPFw2sAincqorYAlxdiQUv1VRoOpomoy\nuaZhhLAXMnommpu/1M7qyqu0V8MpKer7G1yHmyJM0rWwAFLuDelWbgMw7V+I\nZlfR1rmjecScqhRBLBJEeqnKBf7oBqzRgKLzlvyI4I9rCePjaAv4UIs1D9jO\ng62ymSxTAUQ1tupzPxIObnnuytnNVpBthjCeEIk4l2oxP3Pft3wtcIeSr+oc\ncEQXkIiwVUMXrarHXcKzPsbtylfnBITbvaGu4Law3aFj0ZyodN7u2Y/6lqzx\nrBAGrbxq0jv8nRD1tqZgWzW/VkErfI2UQG/dnEPrs7JvLSENdnHzfHeo1Kqx\n5GVr\r\n=Y8hF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"bf7bb86f963640574136365b2d88098483098f49","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^0.0.31","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.49","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-non-major-bf7bb86f963640574136365b2d88098483098f49_1598462277092_0.9157314447015978","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58":{"name":"@balena/jellyfish-sync","version":"0.0.58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"48379f7e5472f9dec09be7695686843c5eb2818c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58.tgz","fileCount":30,"integrity":"sha512-otYII9tkgEn8S8RhFdfJqtcDLCdoybIk4Zi3JAWRMRm7lKk5WkSbJnHEP3Hgx5cCD16oSD3jKyl5+RaW1pK3/g==","signatures":[{"sig":"MEYCIQDBCAAIdjdwZiwPfDUfoiK9CmpMQKnXgKzfTipksY97CwIhANeaCaUBMQTyU5LLq8GOoXO8VnDLD1zdvm+PZSmDZdvL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRuvzCRA9TVsSAnZWagAAZzwP/1LwUl+ZXsqjyZrik07D\nyM48dTnCMay1TAfuqqBeE2ruPAW1hS/yiBiL6t6QZi4n2CtIUQgE59lCJjhA\nhUiPJ9ssrWXVusHl09rJOfnbyYtFHzr1DmrrQGDy5K5F/vDCfFu4ukZK6Kmc\nkQ0jTeqUXIobCJERGuFqALE5Bv+kMc/fLe+ZaRTY//b2YoJ2KtpZRZzAR/OK\nHS/BTIM1Q/5jjNZd4ZL4+zAzQlDbl8QVXKMsYAAwH6OJu/B0yYyPhUJH1f5M\n/222+sx2K3iMiZyZQf5RnpynIjNO/zUZkR/FceHuJ+hWXnUMuzTx6vu7o5nj\n4YxZDEKHRUmA0wdF3pmxvfuNkQd0pctYOrTX06hNZnxpoDn9bS9rO2uRsmiX\nwc7ZhoipnkQ5SrRf87ZmIoCvOUj9xHSqMTop9bUbDK6xa7rfsbkx4Z5E/A5i\ncnw5i/IgQ7vPoUfonOt6wJfNomK98bqKfE6UvXNtVCcfx5e9JRF0WcSvGi0F\n1yw87zBO7rJSF43gepZ86Y6HKAejh6wgjEdGOMXA8zM9UAHJYycAJ1I/CSWS\nrSQSAin/pvV8FtdT11rYvbh9OM2cvu/CSEj+/U8DnLMEekRAuHNQ88Yl5c3w\nsGSi2wKIQFTD8GchmQi6RuEeFSHuvSXMusOWTS+mDwde+094BW68x0r5Z2Jd\nauAL\r\n=u5Bl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"cf5b85a25e6c2b4f4f2dee96871df6a1da0b1e23","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58_1598483442965_0.8034252661323702","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-non-major-0fa550f7ce00b72d1d0b45f310d83a8b88575b74":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-non-major-0fa550f7ce00b72d1d0b45f310d83a8b88575b74","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-non-major-0fa550f7ce00b72d1d0b45f310d83a8b88575b74","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f882317a7fcdf7b381e74755c2c830d040bd0ee8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-non-major-0fa550f7ce00b72d1d0b45f310d83a8b88575b74.tgz","fileCount":30,"integrity":"sha512-lmU7ptuElcZ3OVGriffSbZvCaWfln/uDrZkqpOrev5lKJMj26QsgsuR+szzyySuwhyEm95bWPhrSBUrE/+jzuQ==","signatures":[{"sig":"MEYCIQDDYgrq7xcHVwXJzc7ayKrpJxe9QrfX1J4NdqdW8h4fswIhANzd35aieQJIznfxT4OpCODxG8Rmaf5GcHIDlh0Gi6Fw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRuxJCRA9TVsSAnZWagAAkXEP/1Zp91FxWZ40/wm1hMQa\nLGhe18qq0KtbSGCPnCrcplG0/0KXfsvBcCGHxt94agAwz2YnRI86Y56xpAf2\nH4Y2kngGnOKlQGjgDQ8ijL8Pwl4BvFf0czR3iLcOCx6gtLH+rJ3hG2W2IiqD\nzkZyGbgF662je0dj3NOpxhwnlAqMJn8GdxGXuoZXPwGUGokMM6/zB0wEaCa1\nSzr3GUXDOC1T98FYgX/tMUaUB75kewK9PkE1cdFmbyJv5MO6eYHXPoI8+gf7\nIP0g+1RfMNeNv9ZoH44HBFfpXn6wwER29YkKYv1d50fCumhqEzfbN7CmFoO/\nGm8JJbSfgR6J0DT1apStH2MH8MoYJQPjDqGfX+R0O4ICQlHcxzfCf48uR9ta\nE4oIl18IkqVPwehWUoZ2fxMSTZxXZtlc03dd8QOksPdm4xlxaTXYxhRun4yI\n0xDIYGUzhOpziWSiGH1y7f9nm/L7BglWRF922SnTVQ6HfkpePk76i9ggjzXU\nsQg1ImTTyPxfS/3qznU06rsiVDnrr5h1e8xV4umnapL2S/WDrxAFDs8GYHBT\nS9pgc7s9sLceLoS1qVrLCji+cthdInbQ3n7/nVqlOAo1bcXTEqvWxtBoJH0K\ngaGVJPeHqKlG88EpUrST1j333Xi52VR0htp0SpLH0om1ReECL8c55skU+M1c\n6bHt\r\n=J7L9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0fa550f7ce00b72d1d0b45f310d83a8b88575b74","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.49","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-non-major-0fa550f7ce00b72d1d0b45f310d83a8b88575b74_1598483528662_0.40489498681813396","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.58-renovate-balena-jellyfish-assert-1-x-6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555":{"name":"@balena/jellyfish-sync","version":"0.0.58-renovate-balena-jellyfish-assert-1-x-6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.58-renovate-balena-jellyfish-assert-1-x-6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8e6afab750496bba160cda57656e99c1a7a0d6a0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.58-renovate-balena-jellyfish-assert-1-x-6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555.tgz","fileCount":30,"integrity":"sha512-v2zK5LnVb57VYrjrsV6yOxDqtpdZDKjDtp0/h0mh0IpFXZOM8uG1KzU9lCPFNosdIrA4chiHi9HQAjLO0hjSRQ==","signatures":[{"sig":"MEUCIBZWot6zBeZuwi6/MXiUXy61pYGSlkpswQ3GIMtACl3hAiEA3ldFPTBrC14YO7HBPq5n52ckj5nXhKtBkdLqAUQowsI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRuyZCRA9TVsSAnZWagAAFWsP/AqUSmzbvLTHXSE+kdM7\ngc04xmw0X40elRTLq22l30M1wuCXKQR/qFUfXKGlgk0MdVJboLn9GP0FJhLn\nX2ANboxhU5+bdtUmBIgXyJs55evDkxbZldrIC28g7Ti5AchDN5anAZ26/RxI\n5gQWNLS/6P0uLPt7N8LbLY6voWPWwX2xROPOYx2vKeM/JDgoMYhNyXQWqCZv\ntM1uRBqDo6CFZt5t/gZw9SUqC1cRCCSyAamZY/dis2VVOpXpMh7qF+/TeNQ7\nMxh31PAM2HDKmG5WrpoYwHWOp1QSQ9JGO7sz0WmzqTFqiciIwxvFo1kdpGRh\nLWc2utvK3c9sIHVVrRtHwwaIFH0riSsI+tkukvZBJkuyHkIpwfkmjtQ6AtMy\nA4hcEVxbd0Hx3wqXyQMEjZqUPNsEUMJqx82qes3LiLajh9au9aABI3ZgvFtf\ntOJKFHXg71QZe6jhfce2UTsD1fMn+TSXxI2ozAUaEeolsCdeA2Vd7Jz2BnY8\naAphMRBllnEQgqKooqOXaHIvZY4qrtw9vCa4vAnQvAsF0zVSjVzv9JiPnOVQ\nBNR64q+sShW5VeI4KpoY+SWHn893bfxDg4uBG4yhPzMxGl4JE6JBfwiBKRuk\nHDV7gnZXjA7v99Lez1UzcphjNzboSt+TEoBuzomnrQQNBfNKQyx4xpvVqajH\nWTVA\r\n=EKMT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^1.0.1","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.58-renovate-balena-jellyfish-assert-1-x-6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555_1598483609453_0.9631524109444036","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.59-github-orgs-e3196929de11acce157c1b57ede02f3c2b674d76":{"name":"@balena/jellyfish-sync","version":"0.0.59-github-orgs-e3196929de11acce157c1b57ede02f3c2b674d76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.59-github-orgs-e3196929de11acce157c1b57ede02f3c2b674d76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"83b4d35935601bf981ceb2928d669f16e6cf90ef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.59-github-orgs-e3196929de11acce157c1b57ede02f3c2b674d76.tgz","fileCount":30,"integrity":"sha512-PybIWTTa7R6m/dsKVn2qBZa1dm4206NnlLANwp4sHjU+ARplNV300aUjybOyv3+fdZLhVQzci+8B1phP/IxZwA==","signatures":[{"sig":"MEYCIQCd5aPXTCLvKeGE7LQnGwuOryKJx7/aGZUDoggNjnOhpgIhAOieeodZrCSsq3qaGC3Gko1r3tVFkuPntjk+gVps/5LP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRu2FCRA9TVsSAnZWagAAAHIP/RREUKDouO8XF05BPixk\nbWdzX6Io8HTy/1zGz0hEX1IxxSfisww+acN1idwoaWmZu20BHKZ99tfpbexl\nsPtwoi05sn/O0wDDe/SOJjNCh8pcg9W4JSh58GoK0DdLHhpSo533wt03s7lV\np1K5DVWVF5jIE47xdVnIBeIWh8nS8BiHS2jlGJXjol2LA7I4JBD5Nv4TJmQu\nDpDVV5j5yXdem2d4aTdIUhcGrMt3HIV0S7apI8qK51E4Yz3cghMFLS93SPbp\nyEm6+VvjZD2mrpnf7bdCneJP+NG4iSKdTEduOceatHQHStZbtmPtZVP8Zz2T\nKjCsszeDwd2b6CGfVF+UZ9KLZvFwY/Xq/UVDRMpJkWP8YbS/SpPnHDqyUvHr\nnpAAGqmOhOoLFTuT5CXhBXRN9H6zGSPV7Jfq7pY/rOaAxbHdezzyZC2NN0+O\nN/DJxMC9jiIFs3f0WDi1oZQAzVjP/XgOAjp7heYRj7vpZhbTRyZ/l8HmG8yM\nqpB+RI6aJYm0FNMqWEjoDnTncbCG4ktNQ9BOLkunfmOCG8CQJC+8VBx+i/BQ\naPf/XVQrBwREOPhLs1uURW4bRso2vEoWk6io0p/6aT0uPUXYHXTvORTDCiol\n9C4Ktz/Nc2IW7NuQuqNekZmXlL9Ny3y1LsyS8qKtUM5HbREQhvpWgv/sYCJf\nKiD2\r\n=+H75\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e3196929de11acce157c1b57ede02f3c2b674d76","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.59-github-orgs-e3196929de11acce157c1b57ede02f3c2b674d76_1598483845332_0.48196055599664067","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.59-renovate-balena-jellyfish-assert-1-x-2e94c9dd1c153e54f3809cd581d8e808794bc67e":{"name":"@balena/jellyfish-sync","version":"0.0.59-renovate-balena-jellyfish-assert-1-x-2e94c9dd1c153e54f3809cd581d8e808794bc67e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.59-renovate-balena-jellyfish-assert-1-x-2e94c9dd1c153e54f3809cd581d8e808794bc67e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a980c1f493977a7c1d4037a1f61b39732bc829e5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.59-renovate-balena-jellyfish-assert-1-x-2e94c9dd1c153e54f3809cd581d8e808794bc67e.tgz","fileCount":30,"integrity":"sha512-NpChenWhGzd50y94bxmh5Lhr3QNNvsZKtFhn2lNZonURPq/Pm3jG14b1bJdWKTWuNeFu++FjdI/vZHjKSRYSsA==","signatures":[{"sig":"MEUCIEy5WTaGily4dujRINtb55BPtRw0xRF0lU0Jz+wMpkF+AiEA1sD6ya1Yv8iTaQ6qlPtdKPOuabJy632SPnzoPk3015w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRu2XCRA9TVsSAnZWagAA3CgP/RhaiutvRO5oIp4YF8hK\nyVsNgmQQ8XyRPwzSLWdnj53/DLjHQjkOuKPxQHTjaPVs2csitVVo8DaE/gsF\nrZETO8kXDiBGhSThxEwBSQQ92vdOyAAMQtR0+41vUlAN0jjXUS3HBWP1UpBr\nQN02JyxltOp2rUVm7y/WAYBIkqBbaTgsmu5L5zTpSP+R8T2Zm2h0eqtyPrae\nA7zGe9D7I9uyiXEeoXdbSc6IkctU9CxJ+tkz4BVKsgn5PyeNker2GS12Cu9e\nst/WWVd9tXvhbFjWgEuIpO3LhLV3yH/IgJOXBFSmNJWRrSXKU5kog0V2dNxf\ntK3AMk4qPscmIecKFrd2Whz8GGuuM04YgNBC5qXQwSLdvzKsTQwbiPzwltEl\n/a4xsDi0lxlYT4svdgvbY1DBs3WMjpE67l+SFBMi3OZVcDWMdzWPsovntRR5\nBxSaa4EwOzr6yRidvL2vR1+dVDmylXC0n0+8PrLeshB0VzykszAfdbELyGz6\n/DpyMdhFxFQqOZe0LVF1yR5kg8l6G/4EgFXv3j/3J/uaTIetxaCoQNU47GIR\nFWap+LZ2jUwfMwIICvf4nJud+OXl3mPN326aZHzY9pfxxlNfGRUBpVWthLek\ncRj7n/vx3U4UgYVCrIaDJP30mUM1cq31mgVIxfFiiSvrMW3HupeueJM4vHaJ\nKGzv\r\n=vXIB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2e94c9dd1c153e54f3809cd581d8e808794bc67e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.59-renovate-balena-jellyfish-assert-1-x-2e94c9dd1c153e54f3809cd581d8e808794bc67e_1598483863321_0.6181085691571035","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.59-renovate-non-major-4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd":{"name":"@balena/jellyfish-sync","version":"0.0.59-renovate-non-major-4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.59-renovate-non-major-4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ff0ed7099c08b29f019dde75a72bb00af6be15d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.59-renovate-non-major-4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd.tgz","fileCount":30,"integrity":"sha512-Ki0/ELPDVwiLDCruXFyenE+VxWBXwHYfwSxLe8nlOYq1CU+42PuxEUf+uWTGSauNGaAU793cgyeHxKqsmDOn9g==","signatures":[{"sig":"MEUCIBo/k4EJvPAACGLQ4kZg2Gj2MU5DOP9kmjw/rUZ97yPKAiEAzvmfmVFoTI0wNu5euTIep9UD1eYMPzM4lKU4Tbp0jRs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRvp3CRA9TVsSAnZWagAAuwwP/i8HhSW1n5fjlNZeri/I\nqM7wIOoNUM1FdeCKSLfCsPmAhCfJB95eo50QeLY8pKuk9hYowG7mMuN23QgH\nBAhHlfaTdWf3WhQ7xgEBoJsFtBRLt5sVMEP9sGsxi5zFYUjg6AbESVPmVYKU\npldIac8+2i305iU0O8fH73qq6zd+JZf2AQ2GT0kyMDTsvWhXlP9Q2nvQKaWM\nvA8DVldG8pmyviY2oOnnIgIrD+QFKApTLDzS91GFKfjE4VKr929hi7J6/D8I\nKsKlpBWf0dD9SKh0iM738tmTP0xX7/sSjirf8L/6KmUnIDSpiAM+L6Tm4MTw\nT5hA/7DEARs1NkbtdPD1wz6sY/heHEvGSZ46sLrEDJP5BzazQeTUF67PuHW2\n1eQ4o3rVGKLcOx5YXMcmLLNkRBYAYsSrhTcyIJs+nWaSriBPMlOTNgRRXKJ/\nc2dxPCduslxZB1CU0PzD02QMdyJnyQ7Cz3j5C8l/bT9B0mA5zHgNsGEDfaHm\nx/4HiH785+k7mJ5Gpqxdwl31Uu7L8j8tJANwfVbl/Sel6nyeJK6c0Jg8piyV\nt2Si11auH6D9xTe/G9mIqMz8KjiiidFmG5+H2LljAr4rbyHVZ+ciRZyJ95uK\nCpkHLqlzSLbEYJKxRJEnnbPQvE1nyHxkTQRxl4BDRpQ9Ya4oNNm0ive7F7T9\nYF1H\r\n=DGbd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^0.0.28","@balena/jellyfish-metrics":"^0.0.50","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.59-renovate-non-major-4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd_1598487159214_0.027890118516393336","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.59":{"name":"@balena/jellyfish-sync","version":"0.0.59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dbf7b35774576f84e56932e6a96648747cd46f50","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.59.tgz","fileCount":30,"integrity":"sha512-IQ9AQCaFfp6teuuz7zb1GvhwPkquv8/BIMMcbPXny2hiT2ujVnacXQNfbo9pA+oFnrn/FdJkBOOW+yzxAFdT3A==","signatures":[{"sig":"MEUCIASQjqSZD+1qZczYpzoIOXksSWqbzRkM5gfPDWmCNxa1AiEAv0yRP29RyPI2Uj8ofAC/uR9bN8hNfDbIwIs7ApsDBeE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRvrvCRA9TVsSAnZWagAAeU0P/j+nKXkye31yFqzpyzm4\ndXBMhzM6QhBp3C/9nF8cXbIilT6PXLSHSvs2g7xfHkdTTJzTQjkcR83IC9Zx\n/FOQiXePl2mzcNKaYWvxCAMQMm5QUBZrJkhj+tsvlijNDgp8ZKTl7fthBokN\nAxsDj+oJis8sUH6ktr98Vs6+k5g0V2ZVCdzsS/LfYpGIgIjsuGyegSN3tAeR\nQgTqfnNW9DjM5ydtuXIfDK6wtHiZMss7mUX0djhXzPp0h3TCzMwhQ/dZTjIx\nrRNKlbQkw2W7TL4AHptKxtApA+2Be0qrpL1jUIMKw/2c4N3DTGo+dd5GalI0\nl8k2/tFOUEQ5Cq8dHr8SEckbUts/RITM4qrCzORKz9679hBNK5utVy8UZBUG\n0PzpShdKHNxMzNun10ZH7QMJQBQn2ENHACIDP7/AddrgPC2o4xe9YT/DpU2R\nk4m5FLH998mraKpfNYuNvsagTVgFKiiPxhQy0J3+CewsM2H0CelxdJ8dwKC7\nbAqnkYT96evgv24THdz1B3zWuLLEmV3aKC3UPsX6xkdUbStXnaejuKJAw7Mu\nKRsxPweUYtgj6aGmh5OCE4DEHocSU6XWCMmjpWYhnU50vevJX91MLJ0LxUOm\nFUMDTvhxRmx1k8ufrteu6CMLYB65ARGTc2CFyHJt7zIK++03AyZnGJXdC3ST\n4AsX\r\n=3mDm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"924bd964feb8040ad0e68f5b1b2c3e1a2dbe3009","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.59_1598487279229_0.09646394510157497","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.60-github-orgs-d6c79c30310f7bd791a32a042a9c8ea78588b453":{"name":"@balena/jellyfish-sync","version":"0.0.60-github-orgs-d6c79c30310f7bd791a32a042a9c8ea78588b453","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.60-github-orgs-d6c79c30310f7bd791a32a042a9c8ea78588b453","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"94e0a17859e697abd43b138887fa38a91bb8cd71","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.60-github-orgs-d6c79c30310f7bd791a32a042a9c8ea78588b453.tgz","fileCount":30,"integrity":"sha512-5CDZLNLiK31pSNXmuymYgF4mxEQcH4sDHlPklxvUJ9dy4ADQ38B2TvFIUzA+K3JNjNBLl7+LsX84evCCjloDBg==","signatures":[{"sig":"MEUCIQDj9CkxWd1uyP3yGV1wX5kaNEPcNl2W35OfYs7Qa4rHbAIgN6yy/965pY6QBsvo7FxhjjoS2aIIxlwpk/BPOuQFfAY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRvwhCRA9TVsSAnZWagAAD0MQAJ8dNKduC2oY+uyQ+TRi\nfn49Tm6//Fj6fV3LHd61W0R2dEbfwXo77CFCu0nFuQzgGgQ3LuQ2dfjKzEbo\n/7WKBb2UK5TqDk9APTdf414WUky+D9Wl/9j1NfyKo0gYgOF94K53BzPdp66D\n1OCg5WQiDYnEiIRrZqGoOpjXEYt6AmsESIqFokT0VgqcJh9brmXbgsr8hroX\nyOiy8pSFPjXlrGshPgJLSGD1JhEoEuU37ZrT/hCwaZ4C9/qjjAkbNeHtT7jY\nB9WzhPyeuRj5TcXzvVj7QIBRRrRiWHWzrj6w/av8Mmw2RHzmO6Srxjoxk6yu\n6DLytCxFT0hy2bq+AJ4hCVrIzo675XAmkHN2u2K8NeOOu+clzjUL4d1oDfaE\nL9+2ChAiEC+5GESu+mIHAnsVw5akHoNCnu9J8HZVVhjOUk6qkDX4/n71COBR\nbfJizKYL3YB8J6uLp2ww57MN6PbGm85EgpoL3iNC/hCt0o1/tH6Ks01KD3lM\n4hPHiJ5H0e1nxba3yKYiypB29ci7pemSNWyCjtyhyVVUosXKhX1zyu6koK+S\nKCyhvKEYS4c40ycc2PshloxCzKmBkDhUv5gL/Krkumum+EpGjw3nBjeIZuRC\nWggSjnmYYLnK+hk5iraxcjT74yqw3SWoVtaXFiq2TGkX9X3nsqGQtU+PsTCt\nYIbf\r\n=Rg29\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"d6c79c30310f7bd791a32a042a9c8ea78588b453","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.3","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.1","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.48","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.2.4","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.60-github-orgs-d6c79c30310f7bd791a32a042a9c8ea78588b453_1598487585444_0.08892438699586624","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.60-renovate-non-major-cb0707bff0a08c8ebeaced15761ea35390ef14fa":{"name":"@balena/jellyfish-sync","version":"0.0.60-renovate-non-major-cb0707bff0a08c8ebeaced15761ea35390ef14fa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.60-renovate-non-major-cb0707bff0a08c8ebeaced15761ea35390ef14fa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9536c762e0d4f571acdfa56ad5a7adfc8fdb2b22","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.60-renovate-non-major-cb0707bff0a08c8ebeaced15761ea35390ef14fa.tgz","fileCount":30,"integrity":"sha512-beFsgQBAjbqFmZZ4RGi9cdw1XFROnkdGstfj+EZKxZC95SK/KRRyd9pr+qRHSkGM6jOVyHTqqQevn5bsiClYtA==","signatures":[{"sig":"MEYCIQDDPgwMqXss/Gn7LqrOfWe8B8F0SrLkggNPpS9qlVMkVAIhAN6LPgYxAQX9FzaO2Jf/pWdU1xbT2Ec+zj7JyNenYTAI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRwIvCRA9TVsSAnZWagAAU44QAJcZLcy61aOGEP7r7Fa9\ndQ3GJSrB/6qbGO2MwnhgNiNczDdn3AFZZRMW2SFTrOxbcVKuEP1Oj8yEemWk\nMEOn0RljIbJdJb4sCNejvi9X+Pykx6akOGbtzFRXLo0x4UTyO/O1TM1KnQGd\n7H/8G0waFjDvOxln8TOG0wwQ7oqpWeF6Yz3edIEAlK/+wfakOymNL6YytVIw\n/8sZzRZOo9P7WSad1zT0nDD2OWL5nOGXwmaKQFe9shwbCe2BCKZNmdsADCEy\nHJx6DAva1eKRCmUg6MmKyTNknRcLUxBvDbqbVVZaIeXyGbcvrwji81CMZinW\nO9aNcdzo7KHQkIYDEFRB/2d91a0X81Bv8onsQJ6v1ki3W+xRuLDsYxI9nNF1\nJncLkehgsIpbOd2TLg+CCFAZtvrRJHBqw5SBaFkqza/4/0ybqf1+rdrl1/Qc\n6lF8+DxQ9/L433Y/EwB/540rUmMzFhQRS8zhrR7BgfFm4K7JBLCRo3+cbiSq\nFRYjDre4HCUZxcXfmiglOzrFEsDdOt8TJUxLcNYw6qp9R6D7UsaRYnWGWubE\n52Gy6T7IUedYvXQVj+D81WryFSHD3aflIFXsmPx6MqGL1mRuZacpE+QW9WJQ\n+fYJKadd0eJLY4B/7s7cvgsdyIoXy+ryUlTdEbWC/9PcSVbzWd5NM0gbWWM3\nY6T0\r\n=u9cQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"cb0707bff0a08c8ebeaced15761ea35390ef14fa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.51","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.60-renovate-non-major-cb0707bff0a08c8ebeaced15761ea35390ef14fa_1598489134760_0.9743966543544924","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.60":{"name":"@balena/jellyfish-sync","version":"0.0.60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.60","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"34985799af0e85c807e27c9e96a5641790ba5075","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.60.tgz","fileCount":30,"integrity":"sha512-UHvRJylVT7aJQrR/HfZwAMwpDggus0HDfNu7nEVYy3k7WY6Lj26HsQSc1O5sBTN2oxZvH2QF73YL/JmMmUiedQ==","signatures":[{"sig":"MEYCIQDT6YMig8OnOd4kgKyBizK2+QbMH5YRgphy0glcMkmtLQIhAI5lzVvyzd/lfL61Yhg/bI0b3X9DYaj8s7dseiO34Qne","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRwLjCRA9TVsSAnZWagAA0CkQAJET+CCTt1mbquEwcdyE\nxH6ZV6sF4/6eBgG3qad5DDftiBDNHruHLe5VTpPbh/9hZxuqi5JE50CMEKTp\nLpl/K6x2WEpB6XqETAp2j2j0kQKU7OIZO5HU3c0kS7BuKDs5LDzhOb5tBKoA\nssY5YTsoxFNoYfY2kHvZtnrRdraBMuc7/Ck41l8CnEd9PYOckbmQgC+0l73M\nRVzAjObYgWvEsv5Nl2/R79nbOO4ZM/+oVHpjH5lUJkdrdj2Zb4TaShwh1uIf\nqFT3UiRTL6j3MRi4VhZavyXn7TZrN5kULMOaWHEqOLllO99TWhsMvBtNUiom\nVPqPX+DVu4xRNCZZiTDb5EtXPTtCprLIQufesrpdJBp7cw+Vu4zWru1ht8qk\ngV3FxNeMguDVXUUBS+NSXCN344RJgGjdyb+efbAnmDjGfh1qT47hbLwL9tg2\niQTTpWR78tFAzEsa0gb2akJ+8bfBR46QRng9CLY46zsBTaBm83KRaF5wonvT\nIP8BRx9+j/rh6pOIy1uqAehedy+DM1xj5FvE+nfCgSumMZr+HU7R+N+KADUA\nKBb8DEODLzI2urjzJvmRU4odanP3HES9+JYzQ8Ngb7i8xZFrKKDALblCZc/A\n3k8utrdjwa8dS5ZLKdv6gmcNrvmzz1LyXA+6mZxZUCQ1MJcgtFZqQtl4nyOC\ng6Uf\r\n=5iU5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"dc01de93501068be63eccc3b612057adc13c30ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.51","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.60_1598489314743_0.04967265598395354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.61-renovate-non-major-86c91eda9827288b575936c40f4ae5b39aa1701c":{"name":"@balena/jellyfish-sync","version":"0.0.61-renovate-non-major-86c91eda9827288b575936c40f4ae5b39aa1701c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.61-renovate-non-major-86c91eda9827288b575936c40f4ae5b39aa1701c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c8a9515bf68bd8f9c8141597e57ab0dfc2c8b1b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.61-renovate-non-major-86c91eda9827288b575936c40f4ae5b39aa1701c.tgz","fileCount":30,"integrity":"sha512-Td2kBso02VGj+59MEgSktThE/zJuDRT4Zk0b496BBd/4pWNqP9nN34Fhf16JLq6uXxfz1oU9nrvc3RO/nCkVIw==","signatures":[{"sig":"MEYCIQDvKNyUABnj5lJB3caQJ7C7XMKX14Y+eKPoNzeDeq/34wIhAPnaZKu9RzO51kA7PskG2Jb4fAZm5DZ9ivNt5mz84TzB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRzXACRA9TVsSAnZWagAAGQIQAIRZsbSuN3Mf8OPyoOo7\nMSwcRyWIpEQG5mxNDUDlnxjxbd7zSRrm9ogE7N6j/cKGm49zEH+FAyLNBCrl\nBxyxleo/TfH0PveLOa0z+UfkvikIy/Trk+HNWHCmjcE+wCJMu7+V0AuQdaoi\n0DvE0yndS8fSv1Ax/geU7XThppxaYn1KDVaVeIXFVpQ0ztVDt/j06hgsoAQP\n0eVRDw/QH1cuIv4bGO4p+MEl248UxZNlfkDU/28To5wZONwJ7nbr5Nt0qjTA\nmfgSzuoCWZdkdRrOz0RwuDO6F2ybtYM2lvw7eE02KubV9F1P4fUmOCG109Uj\nqquLo7HOZEY5wTDQBOXQkiwiXeyxPB5fei3RbFascE3lOkO3NwwRGqm2zXXR\nSJV20WPhtBLpOZwy4aANd+56HneDwaFG8HvKIq7PZUe2GcSSH3D/U4f87p9F\n4aHI8gL/pPU1n6qJ4b1gDi+70lEI15yUivGMjAAPS+jXS+Up4dMBefLS+BBN\nLVVv4EBsuutFGRdGbOuEfgMPH5R6005I34RbktHDpeI/Ov62utmxTxS36U1W\n51kubxddqT1UD1prhXhGo3ac0Ckonnfh8hzpVd4doE1YFItGzKopqEgZ46Bh\nGOqCW2Mkht+Y++l9BIQjCXHcLjEnlde4fPdnWsbrkT5tMU7FdmKhOHZAur/s\n5uJa\r\n=1Ib3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"86c91eda9827288b575936c40f4ae5b39aa1701c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.52","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.61-renovate-non-major-86c91eda9827288b575936c40f4ae5b39aa1701c_1598502335493_0.5388177289994864","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.61":{"name":"@balena/jellyfish-sync","version":"0.0.61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"15e20e21140ebcdc544b1ef5eecc69c3c256f203","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.61.tgz","fileCount":30,"integrity":"sha512-K0nWDD/cNwCCGp6aClMEkies9GV8TsEhMhPWlR9M8/xqDuLZjWfajn8odHnzOIb/F4LlZsoQ4D4t88JWaT4fZg==","signatures":[{"sig":"MEUCIFgQbs8LuMC7WzSqfYt5YL/KTdTNnb6LxcR6Q/KjuFKLAiEAwVLrmmt4AiF9m8+cytfpcEDezG9SFKTDZaQNSpuEZms=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRzqNCRA9TVsSAnZWagAAvyIP/0Rlp2znPxJw3wrrMiSx\n8pgulbkhzGLrD1Ib1n/bp9tIgCkGUh9KITtLFQtj/rxOvx+2/kjSLfq9ju6s\nEfHj5CFWfvA8QPkjoxBWlu0JTpVQKdybdWHP7BUYVgPc9VdkmVwuRBUQSfXk\nxYalL+1PwewQKECsdzA8V/cOja6O71RY8tnZ1tuqiKpTy/pjyGP1VyjX56Zb\nlg+1sdPJbch2founJEcZo5GtieNBK7I1z+PfQPv8JZEt+IO62qHo78dHhou+\npFNPqVD3qe8m1yMjRWILZXoJ8tTahaf2w3Xmas0CURf9HVbkiq45kFfie4ei\nWyQi898RPyCVWFiTnuaj+TLH2UGDj0cItI5B384RenGRsmhJAM7TzJlU5jSl\nxx4F945Ybmf9WYJG65U/lF7VuOqd0u+gvhxjeGJuCSnj49HiBa0YoZbV1TX7\n1zRTfUkNpAqY0RzuElD3OlZW42U93dDMQl1wH9HLLgr4DwmHYSezWN6ARR5p\nnYX84JoVKReuUxfuEGPzNSIJceV4TAIUWCoy0Pzl8ik7KVDqiLE9JNdjwLKP\n3EhwEZlqyxRWGw6aLNFdE/3NbMMcYnAS72KCdaa7nF4BikUxdTwxXf91pBkV\nicS7+0P4bBj9219Yq7WWNUGHv859jpcVfSiuNmDKnvqszqiSB2DGGV9cFioH\nXw43\r\n=mGmX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4eed6af37c7425bb7376029c2e048b4974549a59","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.52","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.61_1598503564993_0.4718073592290024","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-sync-balena-api-plans-e42bb14fc15b2d85d16b31767e60eb6e668100b8":{"name":"@balena/jellyfish-sync","version":"0.1.0-sync-balena-api-plans-e42bb14fc15b2d85d16b31767e60eb6e668100b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0-sync-balena-api-plans-e42bb14fc15b2d85d16b31767e60eb6e668100b8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f6cbd2b97c678c4eabe068346b4eaada6525fb1f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0-sync-balena-api-plans-e42bb14fc15b2d85d16b31767e60eb6e668100b8.tgz","fileCount":30,"integrity":"sha512-9tYEbnTTBxFaqlqQN2PTzo4YNq1S7qR/qOR8J3n44LT9IlnnWI1Dj5qayUpuYqEUxQPY1KZtNTrHogwrO3vVTg==","signatures":[{"sig":"MEUCIQCj7WkhsHzRZXTb5pUXg6w21dYBU/eos4wXM19yen0PfQIgDF3Tq0Pn2eJEQQAf2SWjHGImRY2qj9HzfCfqkuqYCBI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR4N2CRA9TVsSAnZWagAAnp4P/0cPodao1PGoooEntFxL\nnNXLq+QI9GAH9St4FvVe75di1iTNATK8TTNXO3jgXnqU2CfSd+/Mq92wop1o\nDc+W1s49EGxeIrxXWeZ8FZI3fhEZhhGaJOKQcofUeCN3BmZYPU/dMVNICye9\nUNuzZI78k//51hl83haRBGiRNTwLHBemhlev4tiM0qwo45F+7rrr5KdNZc6r\nMhGr0LHKe92mieEeiP2M6TGDzUa+EydSzrNWx3hgQ84yMWeCYzEbvcwF9jWK\nP/lIVGnuOh4qH8OrDmeV7s0ZNb0+be6RSIcnz4Y0sBNHodZZv/BSY7QhtymX\nHksJWYLea5RqIy+Xzgh5rEbV5AXEsOiBpsSk71GDsb5NoihoyAAvC+ePRopP\n0Kc9qbr0E/1pSghxWGBu1Ng6QdyKYApH7Ibog9BlCkCYwTecimkCfKfgulXX\nbWzpntR84cJ72dBpMjNTp8BCVQXPU0GyBp1fQHChw5228BmSIP276smy8dN7\n0eq+o4zUkKcH6tUcOo9lcTcEUB2NPTomzsyAuzruuNVrhYm+d/xzyE8y62Eq\nbhhWXCHuqzqapZI558fRqnizd4YZmYKhHKv17CLzDbnSNzIbFvFLa8a0AYxH\nY+acPL+TZ2rcHJ5+YaDB5IhnC0ZdaVfQadSzChGJItev9HRkwlyiqcYIs45T\nczCn\r\n=ZWFk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e42bb14fc15b2d85d16b31767e60eb6e668100b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.52","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0-sync-balena-api-plans-e42bb14fc15b2d85d16b31767e60eb6e668100b8_1598522230293_0.24946126156681525","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.62-renovate-non-major-208d389f8cfb62a093ee22be10b225bcf51deb89":{"name":"@balena/jellyfish-sync","version":"0.0.62-renovate-non-major-208d389f8cfb62a093ee22be10b225bcf51deb89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.62-renovate-non-major-208d389f8cfb62a093ee22be10b225bcf51deb89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e216acb7e107664594bf7d4bb0a837e6c7131e49","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.62-renovate-non-major-208d389f8cfb62a093ee22be10b225bcf51deb89.tgz","fileCount":30,"integrity":"sha512-NGgbtJDnu27N8wzLgi+kGyTEFjcR+9YSWzOoxA5KNbHMAho7UbmgpGpfAm2AIDFClLBLioOsijy7sNS9yzijkg==","signatures":[{"sig":"MEUCIDE5ezP6IceYEcfl7L1+0hPuamoU/FTw3cxaFTlcEi6uAiEAmtAVgIVO7nIVJ83PYHb+bTGwNVsO5nLu2PoK9cRFLBI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR60ICRA9TVsSAnZWagAALlQP/3NUc14vs2FcmseI/S2g\nZW4T4T1mUelhYqawQ+SV3fIncwyYTY/86Yi9JVODi8hprBCt9Qxn/yVQNCac\nOcdE+zEkPAF72greRZihDy0OiiPNod3jaym0NiLUBAHEOuxcFwVeolQWNgbI\nTSwuWGf6FKd71vced3gB8Z6yup439WSTsj441oigCsau3TL1EdF/6N0t4Fo6\nywAXw7vOMZ7a1o4kpRsESVkCa93J0jzPgqZvOleT43ZKn3Uuni6nwHKerZts\nIVBFsxkWaH2mJG1B5+Fvb10j862W5I7KKeNDGSQ1Q1UaNV6e1c7Pb37kW6nB\no5QFNpYfv8UBG7LgmwYc2nyCgkj9JuImv3C0TWrYdVdXjWakOKi2NbwOwo57\nag2sslydTDI7lLmbepPJBl5hUjSgmg1hRgQqsS1vx5AF5kM1FInrAIYgELm2\nB62pEsbkVkFQQw8KAJrNtOgu6DvglPJT1y/FvXIXFBHftr4HD2ygOz/HlS1L\n5UKtPKoczquyL4IDQKxkXML/BZVc397QtseYRjlQ2EwArrdChNaCNKol5iMT\n+3/ORe1ASOQ8MjtwRolC9mexgoobaGWaoJVZCxI+STQQCSvnDe81SayNhTIO\niXdlBav7a4nnEuZtU84VQbiBLfb3RHYNJ2Udu2IQ18XiXuBR18abdRBvLMrQ\nA2yN\r\n=3Mzf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"208d389f8cfb62a093ee22be10b225bcf51deb89","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.53","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.62-renovate-non-major-208d389f8cfb62a093ee22be10b225bcf51deb89_1598532871879_0.37204269154803793","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.62":{"name":"@balena/jellyfish-sync","version":"0.0.62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.62","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"506c472dabc10f809253687fa13ad73f2938f565","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.62.tgz","fileCount":30,"integrity":"sha512-ii53Mkg2PQ9L39RXwZs/lwHfBJddj8JLQfnt/DXtahymCej2QgBQKyBXSXS1WXewAvgNh3kkXmnik1fVTEhjeQ==","signatures":[{"sig":"MEYCIQCyVZaH+j5CmUFEA0xqjQ7sfDkWJ/Rx0hPgGxWFtFK26QIhALq7FQbkpTc5WrpgdDNXP0WR7XVXK84GU4gDlZJikpKn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR636CRA9TVsSAnZWagAAj+cQAI1Fkxgut7X2BYfRxkIW\nGJM9CDSkV1LXIMTz3S5521cu4C2qWRWLSmCkl0b2mnNprgCPBE2zZmcX3pmo\ns8bs1r14/Y7plemvAgCGNHfHwnOL+OMW9ccyIH3Gfos8UgPZM8xD0kCywXoP\nP8hUgIn0GLCIp1F+ISWH1U4PQdqDqtJKCJkcoq/tuvrJOdAgy5D5Zv4YiF+Q\nwPZD538aMu0RBsdRuAuGRoPyxYdBBvIxQhI82cY+IHiXn8fvGTM9YSrnvEXy\nFSpAXyUVeCuP2R07kgKIjU3GgSdEJm/pgDTfQBRqxmtWC4of3BDI95uJ6+yj\n64CsGRE31mfH6wr0eWn+fKlG3u3GbeYsIZQnjxtTpgi76DbOsMk70bsBuS21\nKtrZW0sUvrDoseUVpYqlkavNylOajHeOShNv0pTH4JAmA1XcixYKbOYFncjC\nqeI7uAcn+MSKtQDbJiBhV9CiOH9+Hw2KzA47kbou70olrfBNHOaUyDMr0p+a\nAl4C91DI/1aUkbdKjjhIxZ3JU8CTb4ovFtjLEyyeIdF1ce505DfYgzDn/iIq\naAOebQ0U2Fa31CFcX5eeq4rwPweqIkRXmm2JO8vKUqXbbkZ3zb3Pguz6ClgJ\nXVg0+gGFq/HLx372/1dN2nkni4jYZ8CjK3G10d8iyZSaMV+WcEK/07IBa1QC\n3ZU1\r\n=qhoy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"a93c114028b16a14a73cad20e11a34aa34e63174","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.1.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.53","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.62_1598533113991_0.365304100019588","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.63-renovate-non-major-2fce628998a058eb863ef1a540e51642445358b6":{"name":"@balena/jellyfish-sync","version":"0.0.63-renovate-non-major-2fce628998a058eb863ef1a540e51642445358b6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.63-renovate-non-major-2fce628998a058eb863ef1a540e51642445358b6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93848269eccc350ca635d5843c886c7be370258c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.63-renovate-non-major-2fce628998a058eb863ef1a540e51642445358b6.tgz","fileCount":30,"integrity":"sha512-mmyNkOz6Y/6cWF7Z6mWazXQBR46zGP1OZqfGZVy7p5FHIqwnmUg/akrfqubc9Q5mLgfeHro4POJk2NzagU9ZeQ==","signatures":[{"sig":"MEUCICagPz1PkqVpN1VDJd3c4IcYnkmQLVVHic2CNBbDlyeJAiEA5+avldUGULU48HvNXBeG8+F0RnRWBznOHpcC7HmgKuY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248051,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR7JJCRA9TVsSAnZWagAAVdAP/3XIq5M4a2lTS+ja1bc6\nZES/j8HWqB1wfIc7xQRLAV+h/gdz/6cxjKXJ/Kle3Rhaue6bBaduTj1XkFH8\nYXnI1mIFAG+9pSfULJ2nkpHOSVHtt9EhqJWb+YQCp8kEttVD3Nfy0OxAM9QQ\ndftMGIU211C78H8ujcBuvU/yH4okXF0r26X2odsb72YmeyWn2IZjACjZYsdd\nq1XiR14heh969BH1L5yQwtOBBOXfmtKIA8B2Ut04sB7S8PsNiupH3fkAXnqL\noluM1P9gvMDtwF3+9R9hs6zwZEbHF/GGLqqX765U8TJiMl20OFOWADmN1hGv\nGMoSM4YpYK5goazBrTrMOdQYAcLEJ22ZdlNqMKit1jNQQKWHbYm+VxxErRq3\nQnmx8FgVixyzlEdZ5KLIF3EWz1P9dLGnRaYmCMKb3gzPOlRv1wqAGYyeLzga\nQIPBu3U0Lf/xGGQQP9Z/lhcCEBjCU87KOmOKbgC8Z2V1z5NtHgXnwrwZmMRe\n+CTi/up8hLGF4dEPf1QC1iu5J/0k0EI5H/tA6B5Yv4gglZ3JmV9Q19V1NDYi\nOygMuG4RaI0MRfu1fsJK/NATUK75JpBAihxAApYerR6Jj3wtqE4du4pe+8U5\n3KU5egbvjwCQr0CJV2DNWWXjBmVnZ66e3pK/1wjw/eS2sIcmmJ1xRCxOw/Zv\nVGej\r\n=hm+2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2fce628998a058eb863ef1a540e51642445358b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.53","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.63-renovate-non-major-2fce628998a058eb863ef1a540e51642445358b6_1598534217045_0.771454027056272","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.63":{"name":"@balena/jellyfish-sync","version":"0.0.63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.63","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"720a5baffe34098c1e5ea1517f0a0855f19272ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.63.tgz","fileCount":30,"integrity":"sha512-BnP/qg9sLqE6GGlvw+UYhIDubJ+oOgUDx95Xrjg0va4CqX4oREoBXCZAEoUcOLOZ65P4VIFCHfbc9tgw+mo+rw==","signatures":[{"sig":"MEUCIDsuqGcxxfDNgu9KFP1dg9IwyftRthmtY37ALnew0BZvAiEArgRLmm4OsG/FJtb7ykiSoQ2sh5MUYc6paBFaPqD0uzs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR7MiCRA9TVsSAnZWagAAawUP/24zdVORYH00W1uUtLFO\nRriDrGpYwhnYo/0ZBPajGHOpzAw/Y/pbgXyjOXY+GIU8/WzDxu1AauYvBSJL\nNsSftJfl6weo2pcTDfOWjnmDbdTPajkxjd0U3/CHQitpubeNWpESPES4K1Ud\nlxXfV3FaZu9RckuRaRQHeN5rfP8IeOJz4yaWoCFCR1Lrg3h8Ganz9gi70PTv\nN8cz1CfyHTftIC9veIf8ulcB+8cJNYL7FQUPtXxWp5VFgCvtdxUCNnl5U4gj\nVtx/FEBp/wnw2UlNMJu4uqkxDCXdvR1lpRWQmtXm97MHfrXDr78/qN4nDG9l\nCkJ2cJ2g26/nzRUiklwM4KO9GohWlZJFKazFCjeo5LMswxQjkAqwJ8c9nEIH\ndJue5mbgUML2RRX92nvotNQZsGIc2Umati9+C1I0mCDZQG7L0Pq8m3iVk3zg\n6M76UxDWvHazCR5txPWTQbA8YsH3jym0G7s8pT7RiKWEO+aNvP4UYKasPrE0\n60k/TvzVrV4I3Fwqw5gD4atBEG3FYzHDXbY40hihl8If4/j6yxm48l7aTQj7\nEIRooCkW+XQgoxLHAuAX51lCvjlDnffbh38ECUkcwPupJeylBdnpO6HiciH/\n2nofQcIzwH+g7rHxj5R7F+sfg2fOT+We+DSJznzkD4Zk9QiYzP85BvlIqSR8\ncnkt\r\n=3BL5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"5ed3088996c2e57e40ee1f1c9152976c42c69a71","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.53","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.63_1598534434077_0.20729931757772468","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.64-renovate-non-major-e6bca93614f94387f4a94c47cf13e6a169800ae2":{"name":"@balena/jellyfish-sync","version":"0.0.64-renovate-non-major-e6bca93614f94387f4a94c47cf13e6a169800ae2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.64-renovate-non-major-e6bca93614f94387f4a94c47cf13e6a169800ae2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e93cf9df5b6455a48426b12747be772b4ce0a85d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.64-renovate-non-major-e6bca93614f94387f4a94c47cf13e6a169800ae2.tgz","fileCount":30,"integrity":"sha512-qRRru6S6To2o+qRFTBYEI5BWa8B1ZPj786meaAzrrBKxns4mK7xQ9ovGoPwisto3QAEIf/w65JigcW1uu3s6zw==","signatures":[{"sig":"MEUCIBY26v70tPrWg5UmLnEAB9M3MS+KV17GXyMqVffGFrYIAiEAotP6aTyyaLEjJoQAmLTH5/QkXslFuk7w7pLT+uKX6TM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSQzICRA9TVsSAnZWagAA3gcQAJv60l5wbSr5C41hGXqs\nVWWDpZSg8fF1wCnirYxWl+nehlhi0U2w9/iNYBNIuDhI7wPoX35wy4zSYU9l\nL2lYz1bg7j8jKkInQgp+Mx0NOeu8N5JU0zHgIj61K+cZyOnZVeeQmcb6sP3I\nYp5FsLrz2bcL7Xl/22oODIAYzqPo26SKO4rM+DdihkzVc8hZ+MkDbbM3PjzW\nUp4DgLhDvnef+pFOKLHGXR4I42EEIfEpUAw1YKwg4fpyDKEgU0BScrkaoMGR\ngoO4UC8Xl8bxMyqcDGglaYX7QoiRw7DY5aP7mg/Uh+Pb9k8j9kmihRjM4PNY\ntBNeG2tEPQMZfRbbvEAlTyjlsfOb7AhAwcVC0lBvnEyFEwY7usg99gr8e9nY\nIwcWz3Igcd8uo+h0EzDGL+s68uq+JqqdUpFSZLmift/3BN1uiA/LdY5XDJ+C\n6NsK4jPT7M9l5uwONl2b6LuLB1fGn4TwjICaJdKcYsZafA9YnhnnRhFlEgzJ\nuZeowhpi+r8pcRINJzr0t3SzzifexVCVsNrxIoKxBuj03QRprqW/CEg1JQmI\nhxs5bReE7YFZrG+FWpVwo7xCEPKVAvOx6XOp/I/NySGVNAgINvpltXLupqUY\nGR3Cmsj5LpGGcFd0YZ9Cj93Cy8ZdvqE4kWNSDlHYNpKM2fwQ5Vx/N8/b5bSQ\nZ8JM\r\n=GuVh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e6bca93614f94387f4a94c47cf13e6a169800ae2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.54","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.64-renovate-non-major-e6bca93614f94387f4a94c47cf13e6a169800ae2_1598622919782_0.43555253431560215","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.64":{"name":"@balena/jellyfish-sync","version":"0.0.64","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.64","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0284672baad22f86051f52b8988d5f3824e3703","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.64.tgz","fileCount":30,"integrity":"sha512-KqEwutjRhztYiXTXrU8kuW7HsSyI5c+M8sQreBSrcJsbWcz7+qcOyWOEvV9EbLkZjzat5bBxln+6/qqtLeoggA==","signatures":[{"sig":"MEUCIQDDMp2Nki8O0SgR7yYhWRQlIWNrUsGZt0QD08fzLghzZwIgAyxgP6KU1Y70KqYePwiqeCR6TUh2ILG2RWzgyMiWr44=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSQ29CRA9TVsSAnZWagAAVdgP/id3UI067Xskbb5/Tdp/\nWCkdNn/Y2+wfmzTtOV2IIKUu7/wL8P8TwTlaM9KjDrBZn85ncpPqpZSUkfJ4\nHhKlHHqw2OJAOgZ0JEKh9xbzmRX/mbx0+L4oFT2Hr8pQcvLXqsq23lfsFT4I\nUMosf9Ci9Rl6XQuq92uWgWQbNT9dosbirAkMLsa7SUzEAHn+US/Gc6/G+YlU\n/bdn3mwtXijJfrqTyO9rTu40quCYpfpnGdlVBrw8m9lQugkTquSV7iI5SJ6C\nLmkK5lCFIJ4CaKhPexr0VZFrQIy96nUXNnlrIJe3jd87PpGL3hXCubh80vqr\noAUz34pebFLyb5iF81pmp08tTiKOjcoFfE4iyVPy6r1zSBEC+KLZBOjOlMPy\nc50E+LyGb29t0PzdtcQhoZR2HRic1h04yBUZOKvl/B6tycoYhGaR72fdUAFu\ncaKCwknQser1dCpLetB5xbHy9t4ZYh9RqwNKNp0JreL33ew2Jsrt2ir9XM+H\nnyonU44MfMQ3ogyQAq/muxCyPOmSCc8vld0WCKsO5bwoH6TN2mZYnyioZ0oI\nC49W09dAkzwHVzZ3WK/BJjQkvi8zp1ZGF3sEFYkF95joCmMz/M2vcU1npooF\nf0OxxAu5i/8WKMlaOQIUVm75OMWkcNgNRMQcxBeVxHRrWh0tl38IM7SKs96h\nO68E\r\n=MSdo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"d8c0c2f50d6709639394dd991608c604dc7dd2cb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.54","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.64_1598623163840_0.38666427834792705","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.65-renovate-non-major-4af5810a1fc7a5d667fc954ab448918632946fc8":{"name":"@balena/jellyfish-sync","version":"0.0.65-renovate-non-major-4af5810a1fc7a5d667fc954ab448918632946fc8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.65-renovate-non-major-4af5810a1fc7a5d667fc954ab448918632946fc8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"923a65b48fcc6b8e36e8ff8287b3bcce8dc229a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.65-renovate-non-major-4af5810a1fc7a5d667fc954ab448918632946fc8.tgz","fileCount":30,"integrity":"sha512-3aZMrvhmiFtd2yQVN9LTnCJ0oOCyY7atP5FQin65Vzg4ozGb22fdphhep6FF37VhBDc3ePOqNIu5ZBYe6028fQ==","signatures":[{"sig":"MEUCIQCLdZZdfAklODus2Jl5sL/bXbOxIH1X4JSYRowgIE/DiQIgYHxRgsK5GXIf0bHZv8pdfs0Xgb5F7VszPy+ieOulolk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUE5CRA9TVsSAnZWagAAwzgP/042hz/mbjL71fHognl6\n6d6m26K/B3dnM13mydzfi5aeAZ8XV+pxIy2uoOiSLiqQNYAtGnj63+iMLKqv\n96Stbk52hmWrxg8tlaHD09jhiubO7I8yNrImsLym9Mw+qvYNDQPRDnWsyG4F\n5guq1/+dUHjh4mg5H53EbOb7lkFTB1Ll6JDHcmUPVCJs8fZi7OTptX7uOQFO\nm/msKRVjAFc+RW2PmJg1wVQSE4U3Wg+CHbot1l73ntx7VjRjwKjVT3R9oRgK\nTLsGbxriUVVgar35kWDSaOX942reWO18+fkjHF0YVNmZQTHpe2GeTbneZxi1\nRJAYhuA6VTAP91wF/m9opqETV4goIcTaIbnHn1QvyxKK4Huk3d10mZX1eNBy\n1aVBqA+kasBb8V4HBx2NjPriSWHot1JBP2nlDdz/lc2BcqQ5omnf9FJ8MQIs\nFXzbJ2SNcHdfRa/nVVwJD0K85uF0xD4ncqbrZZB9JXWXKCraOemL0v9yr/Pi\ndw0hVT7irF/kEnBgghjakdWWjLXBbV5oRZzsWQLHj2FzWSqoKViA+kwod+WK\nGdWc+HDWXggxjNFHiSmevQ7k3m7ybtqWEzLM2LltBU0w31CmYXLTvoiEGRpt\nO8XFEHdSklTLayhUa222o6BINasuGuKTTamDBCYjwK9sB2HqEh/nPfEWovDz\n+GhW\r\n=kY14\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4af5810a1fc7a5d667fc954ab448918632946fc8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.55","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.65-renovate-non-major-4af5810a1fc7a5d667fc954ab448918632946fc8_1598636344633_0.6199001879056723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.65":{"name":"@balena/jellyfish-sync","version":"0.0.65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"74572710dc28693e90f5070086a0a405c7bde1a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.65.tgz","fileCount":30,"integrity":"sha512-ltZOgaRj0sKOtGckaP6EfGEWjF+bCZU4FSAX/gPiF1MBDDpb6kvj39k45HRlIw0gR/Ft5pfMq2BHLmFNG3ufgQ==","signatures":[{"sig":"MEYCIQCb9bm9FibuT4yO9wWmnBvS0/Xb6QT6nZ+W62r8AYDxDwIhAK5mNjwy7gkfX7X7xBB4dNpH9aYkgbB9Q6jrlPterFAC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUHsCRA9TVsSAnZWagAA3rIP/0eUpbfOxqVfSI3uIoRQ\nw0hiiLUvxHwr7B0YtR/12ivkcfK+NEh5F6+VwIBdJrt2hn9ymxUjB3uNR7Hm\nAclElslZ9ub+orc2s2XAeYM3Xpy/25uCYZP+XILnJcQtSUhZ+7hz7riLQqE0\nFDozQp5bEEZjQcZ8pxs8jvW7giqH4akZi65Et+BCblbqHWKXKc9JJeeSFldG\nBtmtePDscpFARBpnMdAbTLi4Sr+vQ9oyGLSsV77PkcoUc2jVnZPuvQ+7mtyn\nmZ1bN/rpDkDwXzfnguMw6TLzzbTghbXIucr2ewJsXVosAZ4dQI7JlEwM82jJ\ncgLjWE7OWIZ51NCo49bq13B0J5tsegbYMbq+kiRY8vu4guUj9ksXpv2Nc7vE\nY7gn9+RL6Pdamy6WCKv+lgDSWob/JBug7gt1F6205Z4Ks3hJiedFQbu5wzJh\n3hExlDfewHkY+iuLUkvCrkpW6z32jgT/3dtnaBDCikeLW1nvmQddEiMB3xgS\nKb8jMfCgPrE1nRi4Lqj7+rx22wkXbAbzE/GX1KkVKclZ9eVZZAqdG6NnWMQ7\nVSVyU96aq+3j+oUiKC5NuZM60SxpXejmU8v4K1xaaS0MgjYCf78pru+9JvU+\nafPoaVe8FZvLPTY8LU5Uaynwvz2FFSiYXEfVtdMTHrVHwH1HOXhrMIji2jmQ\n512h\r\n=H+bQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c72ac1e7944dafaf5987d9e0a467d4ab4550a421","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.2","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.55","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.65_1598636523651_0.9678173835426531","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.66-renovate-non-major-0fd152268986d91b64c80d3de40a34a0c3d3ffb6":{"name":"@balena/jellyfish-sync","version":"0.0.66-renovate-non-major-0fd152268986d91b64c80d3de40a34a0c3d3ffb6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.66-renovate-non-major-0fd152268986d91b64c80d3de40a34a0c3d3ffb6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c20940c1a143040060d8dd77204e01e692e065d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.66-renovate-non-major-0fd152268986d91b64c80d3de40a34a0c3d3ffb6.tgz","fileCount":30,"integrity":"sha512-dXXpuQ4GkAdd0CfmJ5ypO9mCfCwB9hbwH8U9QTj/6S8WocshPUF08Hs1L2QMPppOcYBk/MRR103AF/hEhXIl7Q==","signatures":[{"sig":"MEUCIQCHaGVCdL99A0jged18JP51dQfg38mKvPCFMIQIkK/2ZQIgLaPcMgvkXHUH3ZvanImp7dMbsioQDxugzeanzuEvrGY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUp+CRA9TVsSAnZWagAA2D0QAKCjpcrd8phheF3xLCIc\nVGtChbznSDtBOnTW14FyBalrftf3if6CvfCdAyOsFDclV6/Bc3TsNuUQW+u9\nQitQs70HOA2cmZpmEUXWRqrFdAe1iQcB7qAG4uIfjjy8IGABLj6HpDpO67Yx\nxPIywnJWQeJS7SixpJvSoHX2l3Ctfnm4oMuohGpdRsAU0FKs9f4wbhpy8TKA\nZoL1MU1AkaYB0HD5IfdnpyNgfS4CwA0hRC/UekAo0RmFXd6LyMvKsZprvfb1\nLpRzJWW+30WmKMry62hIUOhIN5OJywv090LNikIz6013LOULnxsn4HPQfkON\nDPlzAqidMio4eKc+fnzjEfprSAMYEBPFOZ98AJ2CGPlnuJ7mrYDtu4bhgmNY\neold7/1W56eTnk6N2e9mIsVSWLNmG/myQU90vdn0C2b6G9SqoZ46KnLGwdSx\nJrfNgMQGAOz0y//K+wwV36uoB26tLCDS1tZJVCjTPqh7vAmdutwAadXtjibw\n1pSTHydZFXYSTi27QDjlbLicV1tkSUy2kWr6QVvcHAYkps0F6fpDSAQFxnz2\nJgFaQ9vfECLP6P8r5Gz3g1rCruqvccBAU5BVaQo4vgmVe4s8p5SL6HuaMZEM\nqwrknF4jItNYO6ugwlnjojkbEKm9tsqf/7LjY9W5rnbPhjuREAiQ+O0ugwya\nr52V\r\n=UmtP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0fd152268986d91b64c80d3de40a34a0c3d3ffb6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.3","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.55","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.66-renovate-non-major-0fd152268986d91b64c80d3de40a34a0c3d3ffb6_1598638717920_0.46747331395919645","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.66":{"name":"@balena/jellyfish-sync","version":"0.0.66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e6867f846bbf49944b9485361aa5307a5845c13b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.66.tgz","fileCount":30,"integrity":"sha512-vxam4zWeUir8f4+1alhRlSIwWyIqmTP1cJHTAs0MXWbjqmLjwYArgyaVAjdOpnLIx/QBIlVSXpD0hTl8FsUJ/g==","signatures":[{"sig":"MEUCIQDgF4a8Mk2GxPu4smHKBjr+a+Iyopz4S0yEYlDayyF66AIgIkOuBq0EbeqZco8JnTxWcEPOKRxn0DAt3m0/r2gxKAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSUtBCRA9TVsSAnZWagAAzSkP/3/Rl1B6SGDhSyer4RIZ\n1tyNfm2DknFj23f1td+b01rBFGYW3H2CnBUXS9YHHAR/9WWqvEmEWFnagt/D\nRXAlEvqizh3eGV99/PxTq6XSbf8wlV3wmyhx0g1TQB46wX8msZlLqn2gyYXw\nn/1kT3kMEhYaTBF7hvg3Tc6yqcM1Yqeliq+rrUL/zFJzGmbNsomeIUftu69M\nQAicbO05MvoaJs6xdRex6jU4vd3CeVdiJKo0BsaydsPEvvzqxvY06HEnMjSs\nOqr+MGuPd4esD+TcFnzY235rxl1tlBe9OFh8vl8OGvb6vHufc/HRgnXXXiIF\n0VRYJBlcviamqKkJeIOmgB/4BLD9XAlIcxJg1P+g6Paw0EsWTxWV5jEexyRc\nh3TkH088V5CozjXSqK/vDsxA2IpW2YIqR8kMedIsGfefg3qfnulrsrErhTMx\nhuS6sQKueU9QA0LBMVWARdi6SyijONB3bswIvxHssxqGqu6O6XuFQhPwpjQX\n9o085LFao1nR5SzI7Yu/IpjyFV5IJlATfeQhmhQpE12ZHyjj1YwtKG25wM/3\nnqEkeF2C/RTzcj6K1W3UD9qk8ram9tbz18orv4IL3YG7Od8TFywZtmCJFEvS\nBqbagM/xphguw3U6lkZEsfHGMijsiLonjLBXZlgn999IbXRz4/ZJfYl/enA/\noAeu\r\n=z76J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"d01ebf5ad9fbfa79b8e0e2505ba33e8e747d312b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.3","@balena/jellyfish-assert":"^1.0.2","@balena/jellyfish-metrics":"^0.0.55","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.66_1598638913365_0.06436937695981415","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.67-renovate-non-major-7d52415aa197cd4bea08ec085cb7403413458bad":{"name":"@balena/jellyfish-sync","version":"0.0.67-renovate-non-major-7d52415aa197cd4bea08ec085cb7403413458bad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.67-renovate-non-major-7d52415aa197cd4bea08ec085cb7403413458bad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"953a94d414b96effc0f45a9884fa64136efac600","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.67-renovate-non-major-7d52415aa197cd4bea08ec085cb7403413458bad.tgz","fileCount":30,"integrity":"sha512-0OCDmuLfLwolo3NqWeQwSoF0BLgPTrxIX8MF75mbpM8BziMDXAmTheXyONWI6XSvWbyJFa7Q9VtvfNeek032fw==","signatures":[{"sig":"MEUCIBBEpjowmJeRw7qN8biaabhA8UBQ1C5NyiEW3tnzV6aPAiEA3HyZPam+l4xQu3P8v8n5SGk0/9O8x0kBq259EP12M5A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSb8BCRA9TVsSAnZWagAAkbEQAKLUUR0IruYz8JlWS3Mr\nksxqGWgBfxYxhIkGkaGOGyLIL5Rp8HgjIKsaCmiCxnSll/IbKtWkJstimk7r\nDwHZgyN9NiA+nvapqTpdKUhjrzddLDjM+bL0y4lBnYp5xqX6UQZXUAQCv/2t\ngcvGb16d7GaPeCe/SIWBUnCdi9f3OIG+NjfswWrPnzOdAbc/MSIjwfCBqREr\n/mYIhnwSMSVtRhsGzgvpmb0z48kZsWZs7n9SSg86jYF+uyBqUWvwGZJ9y+2M\nA65R+jjVIPUxw6lOVwpg7E0k1gD8/pTi19Zm9cZXwwEJ+DGXZvRYcNe7QvCI\nmuIdZbthXRqzA9FGYcZRU8FlPg9rbIte0dkCv5ewreYt2U8kC8KycDzIjwPP\neLys2O45W2sijz3wOWaSJruWMx2C8PgPr7MW37w//4gAQvucND2x0BMDlx1Y\n/BIbmMsK0h9llGVENkwR43Tmh5YfDC9aIEM3Zl2dYaRrbUxDxubaCgi3dHl8\nhUXMQBsRcfIOKdxOBF+KXMT3POaKqTL2l07G7VEDPm3rNhHNHqYy4MDtmzzf\nig4EwsoiMabu4y1WcKCf3IdyjzH3ZbWRfvx2ehiVImzp0G9N8e8zCWzM48jB\nRqkFeTwoE5zihXbTRT71UksmjrFU8bKtGTZNySJEkDzQce6+yi3vH3hg4FmI\nQYcY\r\n=FwEo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7d52415aa197cd4bea08ec085cb7403413458bad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.4","@balena/jellyfish-assert":"^1.0.3","@balena/jellyfish-metrics":"^0.0.55","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.67-renovate-non-major-7d52415aa197cd4bea08ec085cb7403413458bad_1598668544694_0.2334060324835625","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.67":{"name":"@balena/jellyfish-sync","version":"0.0.67","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.67","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f996c125336dda146c85793b6e0ef1af1a122bee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.67.tgz","fileCount":30,"integrity":"sha512-NnxvdE6s20lr7d+5Jo6KQpq7jI/waN3YC2rR6fhOq4qRJbHMrOf8LvT6ZSLNUqn+CeJmhzJYexWSWKjlfGfxcw==","signatures":[{"sig":"MEUCIQD6VckNLSv03PCVToLYDOHQzFeH137yfVUtXAhb+pfIJQIgF3k3JAibJxWsdKfkHQbREW5DesXZTtqqdgVbJheNNZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSb/LCRA9TVsSAnZWagAA7doP/A4fHh4NOD6umR2X8m/b\nIpuAfXvPB5XbnM7AYstbUG/xooZ4P5sqj32/TIpYTCSmI8X8MI53mjirxxBw\n/5UVM2CbVX9Dl1zHUWv9O7UEw07ij6IspFjHvlQgI219mgNGrpYycfmkkr/B\nPlGbW+MJ2O3AS89ybrVmiqOWjBylCvMJHm58dDT1VMMeVSE8FT+hYC5W7DQD\n1bOONfX/wF4mkvtEY9w43W/ih7t2dawQCwFp9szghZLoxZF9ZfGeDH4rjMQg\ne7sl0ALMtJ5t/6bN6WDDa6I6LeaqlaYB6SK9Z0rlr7T3NF8Ans0CVXRWPcTd\nydfxKR6oaYm10KQsevMnB83YUiDd7j2OHK96BChQrnLpdcgaQtZHrGSlIHVV\nUU11+VeXP4VidPmRjEEvE/H5So7SlfMaM8CZttlmZF3wZcwPGksPBEPMuQ6R\nQsS0fBpgm+2kGezjZM5Wfz6O0WTuWJf5XOcdL6ePIuxMJ03DhclnWfV3tf4w\nXOSkpVAp1/zmgAjeUp1b3fthZz5hMTeems06c/6yvfxl0YRVHujQBtgPX/er\npbp9KmEx57vJbZxmmSxh4gJAlPQe51YCZTgppyAKO5L86qZ68v6+PGgFdMdL\n9nRukvRHnlL/brlccj2emyZBXboGeijDOHqK37lumJUxDbJ0cI3Tzw9Aci/W\nlmKJ\r\n=RsuX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1ef6fe1d6f69c50d0372e96d89b5374cb777c0b3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.4","@balena/jellyfish-assert":"^1.0.3","@balena/jellyfish-metrics":"^0.0.55","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.67_1598668746623_0.8387258200586272","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.68-renovate-non-major-b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb":{"name":"@balena/jellyfish-sync","version":"0.0.68-renovate-non-major-b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.68-renovate-non-major-b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd0483a07bdc8624e45221ebed2effec2f6fe87b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.68-renovate-non-major-b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb.tgz","fileCount":30,"integrity":"sha512-buiuU+WK1qJsCdqJfm52RiUmn4/4uLe2iiyQ+EaqtabboAs75GP46yT+pgQumcP41qt62gA1saERs67Op6xk5A==","signatures":[{"sig":"MEUCIGuLfJ25EFgxmpXiv0qr/PBgRUpcdI4qCEJp2HAZPqA5AiEA7INCqmVUFbAM4ipTApCBxGaR3RYvxY/gdAL8+EdJdzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSc3PCRA9TVsSAnZWagAAP48P/3xZ7+oGB7O39DSHjAML\ny5YtSCAfl7r1nH5MIiEm4//9v65nwjX5b4YLr9jiWFvtmJxxglIjx/jhYK6E\nV4xcCwXumRyGFZ7EtQbcuN1/u1hEsMc4XUMjdgwqqEQWmnHp8Bm1gRZ55Uj8\nJhU6zQAttepHmCJxD7tI5PNVIfwHLrLk83jPRYaOIJo30YDOPnrX7Ps80fN0\nH9p48D3NKdvMxPh4o+NLNdMekmQMNtg771cu5KnGv5b/PaGq2sDrunls6j3I\nmgCSU+0v9KjYlvD5Dyz6bv9amUqrZfNDjKLLO18nXoMEFDOyi04qjSAJ1Di+\nUWfPzPmyKwcJEmyF8M+btRvot65GhVs4RunzT7vC8ewq1ULW6jpyHXnHTKVI\njIwWF+iM9s4Q5BvfNlcR9aU6yhES3odtt97i5CRmHRgd1R61GacHDcC+sefJ\nGyjjViF37p6RbQqfnQuLMUOa97pg3mjnwG09JeE8pduwsDg8t3bWlERDU6tm\nl6GFdMiDQR5ky6HhSbqo9ZZ4a7i/buDBvLeGfGzIuwuUlSH+/74gLcnHJPLv\nhlqQZAw2+TVExewtOosIEqSuQkblsXP4WWyI6qBchQX7V9ulNB31Rg7s+S7Q\nLVr1lvsg046GzeCaIPNJef6ldXx/dfgBPTEqU9QfVHSdFac1A/T8hnwwRXnv\nArIp\r\n=D9Vw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.4","@balena/jellyfish-assert":"^1.0.3","@balena/jellyfish-metrics":"^0.0.56","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.68-renovate-non-major-b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb_1598672334459_0.7845520931948906","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.68":{"name":"@balena/jellyfish-sync","version":"0.0.68","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.68","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"761efdd97864e4d2c205850b0b66487c5ab97faf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.68.tgz","fileCount":30,"integrity":"sha512-Q5qqOuW2+0LGn0Y80eqsvp1cwNBADhx5WSshH3DPqkpcpvWxAtX0xKe9m0iL6yDN1klY4IXdw/GpoOZWcmCDCQ==","signatures":[{"sig":"MEUCIE5SXZoo5W0Xl9VPW/BYZG1zTi670W9ZCAF7Glx6vGktAiEA3ygQRgXd6Xydz96m21st8uXeJIp9Ei+rFbPWPp94Yf4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfSc6KCRA9TVsSAnZWagAAf4EP/3MKU6P7jz3y3tlZI2Bk\nkk948FJ1zQBALsw/yQwQIPrEUo0N9pRQhmOi5K1M8xnd1uFns5FbHmxSkU+M\nS3+rEZkgjlGdT2hm4rSaCo4RVpvXPpR2uYKOCdQKGCodqxn/MBROWtYIXYcJ\nmRWKMNjPm8hl03Pw97NPQL0SiRK4n2tL4/jZOA1eNJs5hsGHamLKCi3P8GdR\ntcCS/SOT+Wtvo0nRlUEcagC4pdTdRAfhJilBTzK09MKM6mYdQ2dztoq2qOO8\nbq8ewp/DMQBtF7hLhc/OwFueW88aNa4N3RNvIlUah4ob0du1yxeduylW3kIc\nR+9Y4ajFLJPUWtsPJ2sGXZUekz1XwO5JPD0IQdajwJ4eCKVkAbbDFzIDfAic\nH79kXpXvcOA2wBLiIIq4b5GUBOiZYcjvaopBq9Qo+yvzzyZgzm0YcOu9DMeU\n8VQ7hqV02VDE7B3ZbL87h6VeTZz5pW52pARKsDrHcyXmqhUJCFQW9c63cmqU\n1GcOmgmizzqk5Y+NskNYc1ra6DRlR0mA1YYnve7Y2l0uJd5Qt3IJtpHJGyrx\nkboX/V1rl5CfEYxfTpxmsaYkI++vQDT6T/xRqtfz32Kdunps8+4083n2MGiU\nmM2l9LgiRnlBUiylZleQix8lh0lXh6nTQP5lTZdtRjbPCNuQcoPDXrp29ZuE\nSdrg\r\n=sRte\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"507e7edf0a2c5c44a6f94cd72cb2a5a2431c3406","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.4","@balena/jellyfish-assert":"^1.0.3","@balena/jellyfish-metrics":"^0.0.56","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.68_1598672522031_0.30388650384398264","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.69-renovate-non-major-3873bfd15c647995fb5263e4a335be76d6dcc084":{"name":"@balena/jellyfish-sync","version":"0.0.69-renovate-non-major-3873bfd15c647995fb5263e4a335be76d6dcc084","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.69-renovate-non-major-3873bfd15c647995fb5263e4a335be76d6dcc084","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"124595ddcf8684757850727954653042a3d1c026","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.69-renovate-non-major-3873bfd15c647995fb5263e4a335be76d6dcc084.tgz","fileCount":30,"integrity":"sha512-1qgCGRNLW1V1tR29kCk/Mr7GlJazQdmMWNrDt8xC4H2oWOk9Sc8CKTXx8yEZj6RtZ7t62FMi8UrxRnIdmdpp6A==","signatures":[{"sig":"MEQCIH6dGOBWSUFeqXQqWlz3oov4KVGq7bpbO5Ek73K24mSUAiA4Pg+Ds72+ph4DQ+RQwY854puaTRHo+MTu+IFg8ysnUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTFejCRA9TVsSAnZWagAAjjgP/2nYJbtkyLz46jvJbn+z\nVsLt1Lz3g/Y/vGDrBK5p/DohXcIlBzC5OGVZWmTobG4BoErgZAXlLufKhp9g\n5hZrJmLPZ/j1dbdbuCpIxQwqcRX0poaKXMmgWYa8RbD1pq4VbxBoQLOZLRFR\nSuHAzD84iEHZaZqD59e31U5H0zCfOqnm5aWVakmB9ewBMsKvBZTNSAqT+8Au\nLxAvHsKvddnXjJCE5AxxpyB6FiP+MDgtZLbVYl8olgyY7LCMxfPX/6/YpoA8\nVzLLq86f6LmzXNiQlc0SK0gjJpnuveRQar4c6ceNwZRjzb6l9q4/3gu4dM15\n6uEbBQOB+VX54btzvsFs0wtH2FOyQgZblXBZ8VnKb0tQpR1Q1/CO5/KdIq8f\nIldrcWdIEpNGvvtOW6iudf744Z2l0Z3BGW30W3OE589ERyumJk+/Y9igvBpA\n5TE4Upl6QGYfAd2SoOLgm0/HYvZzNzGzDf9oqH+w6q6sMz6WaD8vvntiZJze\n2PTiGsCDfzO8uFLnM35XqciiEExac8OFAlrpmtlOGPppZhHWkADzek7nFiEm\nHAXbo1CYPRkh5qNAzi+h9cegh25FF2ge5iJOocIr7owoZX/nV/3tf/YCopEw\nUR34Sn9SSRwCCS1txYiUZ0egZWjWbz3SYy8nFpJJBpFQ1f6p3AYD80ESm0ZU\nI3jk\r\n=rPpg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"3873bfd15c647995fb5263e4a335be76d6dcc084","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.5","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.56","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.69-renovate-non-major-3873bfd15c647995fb5263e4a335be76d6dcc084_1598838690679_0.7323144285410799","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.69":{"name":"@balena/jellyfish-sync","version":"0.0.69","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.69","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b41576211095ce010ca9de43d72f1bafbf3caddd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.69.tgz","fileCount":30,"integrity":"sha512-loAax+GIsb304FKyPrGBXfFfiA7PRjlxgbMwQqIi9q9xKQLw5Hq0JpnVqQaEk0ryxkRkoenRznalRY0qYLaYFQ==","signatures":[{"sig":"MEUCIHVmFfKVdiCWePMRkPH54o7m8+KaMvv9VqvKZsTikpFrAiEAgOopApjWILZld2mSc6uXii2LMJpGH45ohWKwpoNOnBQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248553,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTFidCRA9TVsSAnZWagAAacEP/iOYi8Z5nSienbNQyT2T\nqIWCeaiCAwaj1JmRS+O+74aFCkcf70IZaZr93tI/ntB8rxBA7nM30oU5/HVh\nVmCOGSdkC7XPym4VFPri3+FlKvrE5vAhTAH0pV8WIzEpM8xVuPCNntXg3Ln/\nHr8yCGOFSYSBWms0Nkt7+Fk3jLaCHTSk0ZIiizQSmRZqfixh5vR89jRpmRwb\niKVmpW0ziyTAbG4ua33lETj1JaQeW9Et7rSsyOJ+SFG8Pw62cXjchT+2Dnqj\nzuYqTVgmRTp442K2WILn8fjPghfpWgkFxMUvv7E6xjnbH3Ck4bXDA89838wi\nt6SRxH37GkSKKCTJfisUO4oMqJ+uJCaWQAvIMvd8r2HkSRU8qcU2M+S+PhJo\nNnSqjAMb4Jwpf4+IEr00wn8bmmQRua2ln5s6IM1zjrVXvZuzScAYrCjis983\n4j6Xue4JI92RfAh5c8bfnxxVIgtk2liQZdV4tmxxadT2EdmV9Oh0QkGXk8xS\nNY59EwEHpzC5rP4ZNj3d/MoF9voDmZ82s4C47UATU2OHfDjS5zILpMF/vmGa\neyKqsPKoCbrrAvDkiJm1fXMyLLAtItgZGNcu04WE90nPkxzUqJ10QK9GRCNd\nw5EMFGv3HnH6taX2qBiBHmrK/hOM5FWdTDPTXoI0ZpK4QWICAs+uPmUdbCYb\nUQ0m\r\n=kdN2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fa9e7fd85e2361d06375d8d9adffa25d0bef3ee3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.5","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.56","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.69_1598838941416_0.7647265287141198","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.70-renovate-non-major-90ac2349d7e4b8ae1bd844725d1b76f67eb51a66":{"name":"@balena/jellyfish-sync","version":"0.0.70-renovate-non-major-90ac2349d7e4b8ae1bd844725d1b76f67eb51a66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.70-renovate-non-major-90ac2349d7e4b8ae1bd844725d1b76f67eb51a66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1751f38418b26ba1cfd7b807077fee6e6eeb40bf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.70-renovate-non-major-90ac2349d7e4b8ae1bd844725d1b76f67eb51a66.tgz","fileCount":30,"integrity":"sha512-TEdnFxmBbcmlJtTg1bSi1+H9gz3yKqsvaOAKiWqVptUN7yOICfmjMDg7MVlMO+VhOzrsJsNbsWOkEKD1Zzli1Q==","signatures":[{"sig":"MEQCIEE4lVC9crdXCYH43Z7D2y7GgNH6w2Qh3P3DfwxnZq6fAiAIi+ntXMZfSJYZPRdsgAxjHP1Oe5TsxhFVJe+3qnXbDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTG5aCRA9TVsSAnZWagAAAbAP/A9kA27wJY+vSXlvM3cU\nLQFkwQTDkMGYWeys2wrQxrNL7Fs2pQAWfQWbJtwyi5ssLgJuz7R1sdhCbLKl\nvK9CHyWC+79WuYLtwM/lfe2IRRkksAuyf7estGZAhasgVQp5ZtFM8PF2BFjl\nzCrbOdV5g634mYbCNNpEkj4sJZlGTaEHrkf3B4tkD9AkauikiI6q9ngZ0kyJ\nw26CvliK1QoBaKwnC24ljtoHGutA4s+8eUGbGfMS0lx0wltgIE/Pc4hTsnAC\nKjbrHKNYtT5w+Z9gHQVPQFjAQysIoiauYVItBMo6pFz7KRmMj+GouWU+PHKA\nSKeQyIlOOD1bqHB6bv2kQiGZDa6DTf2PAaiTHT1ddaOfV+BbVKqlL/fT/PjS\nXFrZNyqaS1UxF+N1898sHGs83dvdxlhcchwhlkPRgeCNv/favwTdYD68+M9i\n2MPDklghhspN5SP1nsoAt/IxF5nwhZraAWhUXiFNdLYlUCXB3+oGf2782Y3E\ndv0m5EJBVm0mzYYtW8ZhS/50ydfQVNnwLjSPFpOyrNQdeW6lUtft1BvlSyan\nKAQ+Ix6DzZSFDDBHV8mDxIuAMcpmMsZ/Ncsogp3FJPFqMjgqjgk0HvWntkZD\nLOCrpRcjKDU4m5F4Bjz7d8X4RJk0Y9fCIai6CWejuImm4QNmQD+KJ+w5Pq3M\ndUOi\r\n=LfA+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"90ac2349d7e4b8ae1bd844725d1b76f67eb51a66","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.5","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.70-renovate-non-major-90ac2349d7e4b8ae1bd844725d1b76f67eb51a66_1598844505806_0.04863277120306808","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.70":{"name":"@balena/jellyfish-sync","version":"0.0.70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72f23d9909fa74e59727ed089060b5f45cb68c34","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.70.tgz","fileCount":30,"integrity":"sha512-ZsGOlfIJkgiH2aJu75e0A1y3hEYwkiPYHSmLQ5/H4bxrjEfML58KBqJQcE+7YEpkr66R9uHaUc+5hDEm/1ovBQ==","signatures":[{"sig":"MEQCIGsPRVDDJlWU1gvA/KGtuhc6GtHgJJUET8RUsGMVO4l8AiBsK/LPnrkDMZWVGHshhrHRZXk8NFwxmjO8y9c74UkGng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTG8YCRA9TVsSAnZWagAA384P/1wDa1Rt3H7hRyxguw5x\nnQ1AfdtrdJfZaQ/GlXXlkHzSHlsT+az3Hdf1pKj1f5B57YBJ6ZLltPvuyqPk\ndklSIq+EJ7Kuzh6ENdrH/1T8yM9fqJj0a1ZBy5rQVdvylFXE466VwfILXwvw\nxCXImegj0pyfq0Wkq0tTL2tsMz0vLbPV52qh7KbNc2U4RTJiWP3ZpWQYO362\n9vMOzmbEHOLsJH7W0cws1sPUPGXApnL1DT+BoxpTmZGYkPcmWEi9bgQzPQia\n+yGCIp4LvbzNon758j9Fvi3TValkTz7bP2IiRXvB7VIVNVXxFqOaLSrQfVdi\nBy1OlnofM6gBphbi67BAV/d1oTTDcB6L6I2YTkBll9GDniq/BWojvWWBt0oq\nN1GEN4FwT13KmNRXTzlukfSLLAuWtu3hCke5sS0xNxCz1rabs7bUB0r0Ca7A\nE8GmZPH8AX4FSP36TZlwi/paeS7eGBRy7wLOFxtf1Pc/9zrUW5sC9AK+ARcn\n55YroTeP0eIMAzgIMRXj9irPcCww08clmxNH1weejDq19tqjrEf5WWMWdOXv\nhHhCsruHCV5GSjLXcOJ7S3K2A33NFNFqKbZ4k8JeaI4tsxklOwSeCLqSLpn8\nEbCP6+KKXe01HKfbdB96cPZLJitQJffGemxoa1qjhmJLjVfw2NxWGOZJWcsG\ntuGE\r\n=/orG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0a13381f1720d8cf35c60ed40b5a74c8f24791dc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.5","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.70_1598844695564_0.7784582716222685","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.71-renovate-non-major-721509c3cb387fde9526a8478f55e02df4fc0e47":{"name":"@balena/jellyfish-sync","version":"0.0.71-renovate-non-major-721509c3cb387fde9526a8478f55e02df4fc0e47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.71-renovate-non-major-721509c3cb387fde9526a8478f55e02df4fc0e47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c4395a39f4fef51a56948f57aecadf5ccfb2795b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.71-renovate-non-major-721509c3cb387fde9526a8478f55e02df4fc0e47.tgz","fileCount":30,"integrity":"sha512-pTLGz6iBibw1rRw4xGrki/n0dhyg1ALlpVhY5XXaD5sXFfIUaKCzZdy0c42tUO+umXfTxChT+o7YY4VESNNnTg==","signatures":[{"sig":"MEUCIQCP3Ues7DnsaWb+rb6wP4a0/lLfvOPwVy/no+YQF18CEQIgL2gTZXWRu/OmjCKu2mEpQInRnBQNcqhrmpNex2K8pAg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTJDCCRA9TVsSAnZWagAAAUkP/2d4C3HpAXMtfgR9HmQE\n1zZZRz6TVTKz2lRHYkCpRUuUwmQSyoUnDD22BWnWH+YAzz9H/AUDtQ7fbXWr\nS9GN/IzhM3bEB0AcRMOXLWTTvsM00i76R5lWocwte+geYb0DwBqSFc35HEIg\nm22ayFYD2o98jQND2RtZWUpwf0964zjcBppxC5cOzlPLOm+Lf6jZm9ISf1Md\nosNdOczQHtMqoke52X9PQe217NzGpGiF3aqmlQnjvK+2k09BwdAF7Is3HATx\nS9g0qXW1dUsFVS3hFU8He/FJxzJSWZcjLJOZL2rRVUgiBi3ntvZJ1VHE/phh\nSfysqANbH+F76LDUMePUx7Lu5BratIRXozqtfnjDv5cqQvG92LwFnMtkknOF\nDAQ0OOm2YBt/gLY9SWpmfpebdSr3uoZ9gsyDdbAGaOwH+pgjOJmSXaUVxVba\nRdFlaNoq/ypNnrp7Y+yCNFwdHb/nb9P4tr1gUo2wh0ekJ4Pl+fjECt3PoGjg\nI8KEzhyRF6yQFBcltSlRFvF02yj4owGZRcxAxD5eR5S5J7OeEV+QjuvGGpc9\n8Mv47DnU+XjAzxhK11mDTjb7tRwvFlyRBpcpR3uX3QVtKW6UUvcj4Zkg5lP8\no2wn8nReNDEiuUg5Z4KuWBGC12GX0MJ2zB23/abnwZI/LQdjcmkIGDtGOiiU\nRFpy\r\n=hfLG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"721509c3cb387fde9526a8478f55e02df4fc0e47","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.6","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.71-renovate-non-major-721509c3cb387fde9526a8478f55e02df4fc0e47_1598853313794_0.9188072842919692","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.71":{"name":"@balena/jellyfish-sync","version":"0.0.71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.71","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ba11f05125714f206aceb4756267d18294c649c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.71.tgz","fileCount":30,"integrity":"sha512-2W52EQ1pXXfPM7eVAhjsP6iggBUUV5C0MdgnTqAxMTi420p3Zt/+XqKdUiozp4aOhLkM0MXryEFhpUmsgMHPzg==","signatures":[{"sig":"MEUCIQC2+Dlgj0FSA1rdF2FzK/ShYrIBJ1/9GawXH/uUskvNWgIgYcm+iyStaRfWLhzpejHjOa5F5kGZWvl2wVQ/GiJ4RcI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTJGaCRA9TVsSAnZWagAAM+IP+wawkGgJ2pJqkErOgIO/\nbTVPHANYRTqsyinIF+OwhST+qtadcLoZB3O7As1A+VCNye58+AQWS3sjXpVm\nM1eqcre10972LggDt+n5yA8loB06HSRtWRsRE5tdKnJPs/7qM7jxPBBaL9Rj\nidmfDasN+WwiGtDV5IMxIhwsTKnpTU3j3u3Xzk5KEJdiYXdSMR01KNXe8SeK\nHFHIC6+XxPCrGRDUP/0GxYpbuNDil/2N/dwMaE12Yhb2K2+ZsYVvXXqQ8Saw\nuLD0j5dbo0sl9VvzCVcJAFwRheFaFtKdxFin2O+PjrdfPEKY8Iul9skVRkc0\naz0uyiXxEpCAEU19k7v4x1dzQLgt2JqzVjEaAgDQMkNHEjlIBGXjBnvDcrgP\nLrq2ux6sBlx67MXAjT3504SEtpzuf35mTIsQjF51G42WwZWxC8L9ZKSKFdZY\nJ4UPZT8Ma9wsfzBIOOP86oMsK73PZ+CnzYmHD1bZo4YKPzsro9LOFv9Ci7uQ\n9uw9wTDJgWbkUwKxgSuQX1p1KjonR5X9bumI90sohNbK2aNGGOrifxBQK70n\ncdrUd1/NpA6E3YEo5EVPFTbompIiPv58LUgU7hgQ+7O7Nn/JNprv8B9ObwfF\nrGiLAa4f4myV9liXRcq5E1+5dZAUIhOZjCxilXPQ3moaqrjzV+KpGsOnB7nr\nKFYm\r\n=J1/k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1b5a233369cafe4bd9a08e19b7d72fd88c6d8dd2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.6","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.71_1598853530498_0.027950396427486313","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.72-set-commit-body-b176871e498330d4d26181f4af18e7fd5fa65a1b":{"name":"@balena/jellyfish-sync","version":"0.0.72-set-commit-body-b176871e498330d4d26181f4af18e7fd5fa65a1b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.72-set-commit-body-b176871e498330d4d26181f4af18e7fd5fa65a1b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"96b4f23d61552f0b20bbfae51dcd8ab909b874d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.72-set-commit-body-b176871e498330d4d26181f4af18e7fd5fa65a1b.tgz","fileCount":30,"integrity":"sha512-swF/1pUzietCCgF5Tcr4kFI0bhdZVGLcwF6lup+Fb3Y0JBcdfzn4AxxsKltzgxzE6Rym4tEE15CCDWnAFpPSCw==","signatures":[{"sig":"MEUCICQ9OM66tPgNLWHPn6LiEbT/KFfXDcO3jIUUz0KjpGsPAiEAlYJWsGvJvMRTfNLRkIhCYLRl304ZoYF7xtKsKrye2EQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTJPICRA9TVsSAnZWagAA37IP/jfohVP1GSnKCX9uE6tf\npP7qcAaeFFjjtiblhxSYwtAn1xnE+PsIPiL0PPK+T3FZC5CFs7NtCTZ+EeL9\nfdEAYOvYEj0BVBGS/muLoUlrE2f+OCWKYh4ak5qBDGfBypmhX9zbTAjKGUkj\nhXUNptEWrRSmfW/qdL/7bLMW9kw1bKGFioCnGbEELKYkzDmVFBNmHt0Pk5Mw\nFV9PUpPu4DVAfRYueQxB9V4H4ASL02yeabMX1tGZTnwaz3rhXapLyyEqpGPr\nCb8+cNdSucKfEF7pnvX6FKjcu3KSjUMURbOqPdB3/odrjt0K5PLMGRo4hbQT\nZWwH5rKzyvlJTbvNiyJgkdUF7Yf0jgIb3cnhgY/1DVb/N06TVGwIzinZyxNT\n2d4n7MltuPAoN+YoiLPMjBDsRmMdJFOBz3yV4PhRVYTOzTyhfK0jXRkElQYz\nYva1euR+bzRAWRLO/TFatIEWe0C6y3UT5nKuLD3ROR4B90N0T6nhK6LDdwGr\nbPDNdHG0/t9Y2hmYobeuPVcJ6Cqms1jVks2zQqVpSK1aex3d3kEfhl2Tjxlz\nBDyFuM69BQo5JcMtlZkJcWklzqp9zHUU/SDCU/vTdFsgHN+3XnfGWdR40GIw\nsZtGh1ZjZc4eDljOv2TJUiPEktu8I2cmMWcJv7N2eW3Li1Z925R1fCU2QSye\nOiOn\r\n=lkA3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b176871e498330d4d26181f4af18e7fd5fa65a1b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.6","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.72-set-commit-body-b176871e498330d4d26181f4af18e7fd5fa65a1b_1598854088380_0.8611035301044023","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.72":{"name":"@balena/jellyfish-sync","version":"0.0.72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d8683ccd4964e009550acf4abb6de2fa3a929d2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.72.tgz","fileCount":30,"integrity":"sha512-PDpAr3yF4Nl2JI+Vt9LD8qN2mrxHZJHyPauKnF3QHJmPY1WoJxuwhcqz9rI6yRfGLt38brCqlLVqD1Pk1r+fRg==","signatures":[{"sig":"MEUCIQC5vvitQIocWAAJEW/BqAXf760uyjIB1SDjx9zk5V8vpgIgZ77Bkd4YE6x5S1WH4kuCeU1wHo/Y2OMR5Zsc6YwyWng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTJSMCRA9TVsSAnZWagAAfi0P/RvMjaCipA30/+CECFXb\n7/AlPY7sVyHyd5mCkuJeRdW1LRQKRcZ1bX9UIXpOgtCW63hloqiULiI7Hm9K\n2nbW25Aiee5qd2dJOwV1la3HNuxzttVEq1qd71r1VWvK7hukv7Hq0Ooii+p2\npYqeJcu7CFqJz8hRPkzkQK750+MCbb2znBGsE2DPYqRdGdXyurv8a6wJ7fl2\nbeVKk98EcRcpmC8MDqCQqTLH7nmmxDjWiKcXsYybRY9snl8GRHMGmPUqK6jh\n05UtBBUGfBxqaj7DXF2t3+dn3TfCqE1u3WWwGMUub1w4t5zmKzjWhjqIIH3F\n05sqDY6Qy3VGarrN7GDcQJUGwAJ0vtdqX/7dTSE05+jTOSbmttdw9ytu9LRH\nkS+5SabtzWws1dzph2pwWfjMv/sDRI+NPeM0d2c0rm5MJGPHY8SnDJ3yzaho\ne9M/aboqDw/Oh9oeK0jg9l2VYxxjjFFjHBKX11mIYjPQ1lOGc1O7aDhKuUo0\nmTo1shuot3ihzTZuDkkHdlXUN9kcMcW2busP3kxb0tI6RXOtVMz1RMGDVttq\n+onDBPqHZeYorwdfXAKAZnoFS/zwreNE10/rcIK5avX7rHEOrM+292NwEwHT\nX65G/q2Nb3nK1BMpoKA8YC8RYOL4hapKgdYOXZvEpLs9iwQJJOrb5QLfMIy2\nJAWo\r\n=sD0n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"54766ae7d338e0fcebbc1578e7aff78f80e863c3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.6","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.72_1598854283876_0.7411396750051873","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.73-renovate-non-major-3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e":{"name":"@balena/jellyfish-sync","version":"0.0.73-renovate-non-major-3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.73-renovate-non-major-3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"52c7e05eb47d4ad087202cb5b79f921203e84a0d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.73-renovate-non-major-3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e.tgz","fileCount":30,"integrity":"sha512-6E6W/nNb1/KgX6MFel1BJ4/NUPTiV60LOo/M+iiMFZtwiUR6YHDGmujZtsrHEY0OuAbZj4vV3cRq0zXRvqZEyQ==","signatures":[{"sig":"MEUCIQC40/yFmdl3n4pP+ERC70NNfCid/32ruHnIEqJX35yFmwIgbjGOPjtl3OahKD6KXTn8AWgVtNgh7MPKKIWvqCZzJrU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTJcUCRA9TVsSAnZWagAA62wQAKRPcj7oDS8HSOd1dhpo\n2fp/xKCx7fGtDHsREVLrnHu//06AJg4/ZpFNQugPaQhtENtUgxD9kwv2Q2O+\n037bbIsWlApBG8lf/oGA14ggfcGChPZzD3Wa/h6YjSaCRcrzFfR1Rykbm6gH\nCfROqkaFB9bAHh6NYjFYdTghickqQHPFmtihLK89KO0GOzz2rQJWKwBXrbWu\nkj6QWF7UyM+A3chhIKe+T3ActgJr0DNJrEcT7VZC8+C4wEXDVozEFgXdQvIU\n27U1fd1ojMdVQi8XO4JgPgRjVuAYczvU+2/axpCN+Cex2LYs3duTrat4U25v\nQBnMCZR5k2HNQtFRqNU/SKjJktAHwKHkErXxuQXXrHhdude5MSAuq04cx3Pu\nousj/zgW6Ne4iLdufuU8dgu6Qe819UBvzkX/jVMs4/egfQdcoho8G6bz0s1G\nqXehRetRF2Tjrx9HJugVnvOlt0n0z2akWyeFfVCwtumBxFsRvHzRReOCBkCy\nAf/3bRs4XCGIiaNCrygp+rrs8gKvp3QHLpPVdoFlzrJxitc4GD8hZzDkfBCW\nwxJeYhsowtrQ5o+/HKwcFoY5OAYG0Nvs3GOtpuAwiLcElSYCcQVt9Kjh7reK\nqnW2B1q2s33e/ugOCwECnSWtAy9blthhWVurVD+lMXpb1ZzXzxAuTcVWkhv0\nmvQJ\r\n=53cC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.6","@balena/jellyfish-assert":"^1.0.5","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.73-renovate-non-major-3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e_1598854932499_0.9656359102608694","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.73-add-revenue-front-inbox-cc5d02752deab3cc070b15222fae57d846e7a04f":{"name":"@balena/jellyfish-sync","version":"0.0.73-add-revenue-front-inbox-cc5d02752deab3cc070b15222fae57d846e7a04f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.73-add-revenue-front-inbox-cc5d02752deab3cc070b15222fae57d846e7a04f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2faebccc0226f2d74d1a4fbac352df1df31791bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.73-add-revenue-front-inbox-cc5d02752deab3cc070b15222fae57d846e7a04f.tgz","fileCount":30,"integrity":"sha512-9vU1k/N4tndgyZy6vTVe8zUaD588oGx2blfZ4l2ACjOnMKeEMGsluUr1fdlS/OhBHnDlsLUwvcHZMF4cpVEgZQ==","signatures":[{"sig":"MEUCIQDQhi3/FWCIz4gYIbBwb+iQgQPmVH9oU6l7cCZdYzWvywIgHNAH4fel9x/oL54ft3f79TIgxXbczaTWZ9T8nFdA1uM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTLlxCRA9TVsSAnZWagAA5vQP/2t+XyTvz4C1snQeY64v\n0vV4bZHEvFgvJGLzkAGNqQnZMWZHPsfnWyHMYm5r/0sgicGIBuBvTz4bepWB\n4eQmDIehX29iNgcRwEdQgE7fbw8+9ggXkX85UEjnRtcj1yBzr4L3gKeXJFL8\n02YcZ5B61If6IhrUZvmUt3w/+DqU0Eu6+qP1pNVBJtwa+PytzQAr5z4MJ7y1\nfZ+qgmiTa8mv/VXVZFV6ny96LI1x82X2Y2M3OACEOSgYvg5awhGkAiiFwVHz\najeyCSiVvqd6VJ51FBYpB9Fxwbjmrc4VZAq3JBZRg2tUhBd2lQfc3wgWKl1I\nlKE+a8Hh8mtqEOVeLBEgfTeaRF7c8DqlLN6EX9tt2Ff4pDQp2P9h3F/ep6iz\nFbYfiQyGxz8wDWtcs0fkNWl7HihPHL37DbkVvyY+xjq2kfCDMqfg9C0/TL3I\ngpPS7MAvhXHMdg2yqKgTrqFYNo9w+dntFOu452vmd7Em/TFjPrqn9DS0POwM\nPpan/1I5RyvqZxUMd9cSj681duvlMVZA6XhR2GPX42cQWz7Kw3PJduom1pKJ\nK1wyHv9qymSJBlapB6VEEbUS+/ZUo/DmgDF+F3qgxs8aRf0fZPcEaOVFRUh+\nueY6IN6d4x1hmMcXwGcCL8gwD2ilK1Rin16GdNYXKyOGmeyF4v2YiFbIcpPF\ny+rW\r\n=ZyRs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"cc5d02752deab3cc070b15222fae57d846e7a04f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.6","@balena/jellyfish-assert":"^1.0.4","@balena/jellyfish-metrics":"^0.0.57","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.7.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.73-add-revenue-front-inbox-cc5d02752deab3cc070b15222fae57d846e7a04f_1598863728947_0.9231151958979968","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.73-renovate-non-major-5eb4d368afdd6b052a099bd76f5fc8b99945ec73":{"name":"@balena/jellyfish-sync","version":"0.0.73-renovate-non-major-5eb4d368afdd6b052a099bd76f5fc8b99945ec73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.73-renovate-non-major-5eb4d368afdd6b052a099bd76f5fc8b99945ec73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b2679a1400089f71c0d41e62664fac575fa57ec1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.73-renovate-non-major-5eb4d368afdd6b052a099bd76f5fc8b99945ec73.tgz","fileCount":30,"integrity":"sha512-BAnXhc1iIiweGd/zpLGpOyeOUC4G6QlxoUkIbRB8hJfzSSetg9/hSNO83b+8wQUOtOR3aJL84Ldf8BnAxbyr1Q==","signatures":[{"sig":"MEUCIQClYZfpqxkEsfafbMjMnQ7JKJcA316zl+LZkEL6JLOSYAIgfA5S+LuCeYQy7+vbagc/Rnp6g2QQBnxN5y+5JN6B/hU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTX/ICRA9TVsSAnZWagAAgtcP/25ahkSdW8RKMIlpIgID\n11/Bimr7m2n/lB8AjzRlqhpqOZI9kersA9i8XEHAiEkSTJPj7PLcXeYYO94Q\nm4dEHi/WlQjdKAot/eRX1cXbK2BGPVZsGfX8kuu7Jv3aHFiSjd0rvN8gHmGW\nmKstqU01bP40F2PjitjEDXdilkS602MFjJKRSIy/GAhYOBnLctNEpEuLeXLq\nA+WXv7PXY/x1ApfixImvBpygSFimne6MB3A8l0PXfxov8U4qL573xxeFp25V\nTII4SrdT1tJ3yhnMntK6Dqj/2W0vBFxAt3oI9h8ILjukOK9vvEcvymQyZPII\nWAwE/tNCtQqwUr7cY3yAnrjBh3RcaXnmM8XEnTIXb1WWGugKZma1uVjIKjpR\nRbVmpGIQz/16hlwgp41Pw09MAwK5IxwDQ5IHuzznQxvuwG2ixj4PCfzbX2Bx\ninSrcHpMxQ5Yaa6F7iLKXv0YxFfVPL2iIJY5sT2jyRVaKwvPI/XyFM/r43nA\nw8MIK+T97JpSO9mqI0Sxi9ofg/o+DkVITHSuHew+pY16U8SRv+JY0ArGaXgA\nSu2Di6UT5oiGkPKeXQ9XnwO/L/0G8z/mQq/9fLxA0YnOqfQ7gI5+5csnmHsv\ny2+aw8BktVlTR2APBQJTGvSvWFGk3aB7HcR+ZXuleGmV89208G9jL0h0WDlB\nTTx2\r\n=2OK8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"5eb4d368afdd6b052a099bd76f5fc8b99945ec73","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.5","@balena/jellyfish-metrics":"^0.0.58","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.73-renovate-non-major-5eb4d368afdd6b052a099bd76f5fc8b99945ec73_1598914504226_0.5290443500465281","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.73":{"name":"@balena/jellyfish-sync","version":"0.0.73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf0a6eb91a1b56cf7b1cd9d6e357e719c9c4defe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.73.tgz","fileCount":30,"integrity":"sha512-hMUWZDqi3rzPDf2ZGp9863ZTrXuTVzq02lLH65x+QvVoUTuGt7zOolVxxMAWqPJRX3AmmSB0+69EvImEOqL24g==","signatures":[{"sig":"MEUCIBPtGTID1Yq4xR3yKiCotHMrW2QEUQWcqEdR+/jJqgXyAiEA98SOa/Lvk6iA5B+K++OgQQeZB9axpQkqQgOZ+34tW94=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":248954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTYCHCRA9TVsSAnZWagAAaSoP/1fO1wQOPAsR81CppMJC\nfPUs/UmyCr3eU8L02ntXyfpuP/13amBAfCU6ogW9qiYMGEqstjdMEM2EtQDu\nPXHCT/7Xc0WltCT2QN0eYHwnE/5TNqnCErAqJ06DM29GoUFIsWdU8kj6W1Jy\n8UvMECXQx9XqB0MZymutBgeyU1Wz1mO5c8/meY7vm1czIu0F1+98ybb8/LCy\nvJ9WheXTMfA3msYmjB7b6Eqb43Q+Kx/29ReJ8At/MUVC/jDfgzPJYu5v24JR\nJt7umbNM4VkuHh1hcCUrJDWVsR+HexNG/dmAOPXy7OGvL+wIM5b3WiPqiDoz\ncXP4QNk7OKRgLtDWkcVH5NcOmi0fgUZrkPkNRtJLxrVxlzyMbxN+dlA7K3Yy\nFBLHWtwJzBlFgXiEJvzyjft7gkyM7KBCtQTu2/IjdCnoLbMSA02frk4iLEEZ\nKPmvmgudzzGnSKkS5dii2PkLnHTPluaJOXvX1aHvomjz31oUpHLK0UqEU+hA\nTuHyfwqb0otyHI61zwPDiRLGHy5+T+zi7KHZh6hbL3Vj7ynyNt8F2SGf0J0w\ngKa9vwVrBEMJFb9SUGOm4DuxkzjGAVA1g9NtPoAgrAglx6l49dHfbEJe+9hm\nRgNqNUCGhe7S/u1fcq+Z9uIWelpCpkVAzVmBkwc3L51Jyg9B5u7iOY8Whvrg\nooub\r\n=QiR8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"bdc2d9fcbb8c995c32e1b1eddfc7ffca40bdaef2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.5","@balena/jellyfish-metrics":"^0.0.58","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.73_1598914694549_0.3074783321655987","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.74-renovate-non-major-35cf4110d2f653fe17fd4bb0dc07c9a879749b85":{"name":"@balena/jellyfish-sync","version":"0.0.74-renovate-non-major-35cf4110d2f653fe17fd4bb0dc07c9a879749b85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.74-renovate-non-major-35cf4110d2f653fe17fd4bb0dc07c9a879749b85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"66e64edcf4032a87e5d04b6b2e3644cf1c7057f3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.74-renovate-non-major-35cf4110d2f653fe17fd4bb0dc07c9a879749b85.tgz","fileCount":30,"integrity":"sha512-LZzr/N9mFyjC8di1ZZcctMJBj4BehEYPJY67VrUks7WPoa4PteRHl1qSwCv+RRcoWlGu1PEfIIRkdKOo1MegqQ==","signatures":[{"sig":"MEYCIQDodVfhdWqYHCVEaDZT0a0EU/UKbKlQUNTY27F+rLMmrwIhAKz8MVSAhyOWwQYMtxUbofsyvi1JLnq7/NCGa7yO0lCm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTadDCRA9TVsSAnZWagAAnU0P/0Pp+2owpyrjjlP8XvjD\npWFHaCai2KECOSSMCn0Cd0exDCxv3JtrJxYk3qAnjR6F6TjLTerESaJMTgc2\nhB6Dzteyxn/pa7ys0c7zSCvwTVUz/uUEnNE5nvl+pdth5AP30ns61VFQPCkd\nuwAzMJJflZ/8Fub957l45UaZP6ePZJPhtOiNa97BT9yzszwo2qjFzqgDcVyR\nH1eh32am2diW6bap1JrvhrNh5rHt6kM7/xUFVFTeLM/yEqzkPq9EVzG4ISZT\nzvzzQgtdFCKy9ovdZZuuchRNpDwPdopQKkG+Nja07p5HNOHJdXAqzFGxZq/w\nJ4xhJWcOw5cnLKHD7QaOWQjjr+rTLoMgjwxSdewbh+dMA++A9LKqIEuEqZ+/\nUGc4MIlN9Kl3AMVrq8igBQmkWe4z2NFHNqL/jP2Zibg3BZa8jGJQLMeVsy7u\nPInCnRAlbstpcHBTAxPI1OIQKFhb4SW1Yvym09VcJQY/13Gn570K2kY8JAWf\nzvcaVy2o0ihMa/7an+oz0WHgYsjFzZXXnCAUjCpukXXt+We+PRc2M8gtc7qR\nWkSeS7ThhAsiKa0fx1KPGW4Gn4YGu4XPJQQC3gSSv1iNZtlCxHuZ1pFa8yZG\n6G2kkO7IQIqGgXAPX/0gjq1LI3CJpuQCEWtm1FvZgjglAYfVmmwDO0cvKika\nXZ47\r\n=yDCw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"35cf4110d2f653fe17fd4bb0dc07c9a879749b85","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.74-renovate-non-major-35cf4110d2f653fe17fd4bb0dc07c9a879749b85_1598924611153_0.41142727217052033","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.74":{"name":"@balena/jellyfish-sync","version":"0.0.74","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.74","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b3be6fa3c7e89c3a316921fb56c2a7fdf2160d11","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.74.tgz","fileCount":30,"integrity":"sha512-9YfFN3gDVF36Hgy2zVFIlKCM/yOP+Nzp73MHFQaYdmyqZKXCfexqCI1Ix6OI7+pu/31tE0Nncje5MRcVwnFqNA==","signatures":[{"sig":"MEUCIQCdfOz0ZdY679JWVDIrREAMZaOhXMKlmIHT9Ow6qU0uggIgU9yJsYEcJdDt1IMMs3AON9tlzuAPzIWuBHZfhMrVZl4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTagqCRA9TVsSAnZWagAAcS4P/0vlyw2gCrflzTCHpJIA\nYnPgERiOfG3tkMyD8pktbr/3ADhbOHi+l/9rSKWG56S9CGCg8r8+5Age8/Bi\nBga7RQUm9MTmQ3wn3QFL6tGVIQomtx3uZZN4BkgJqk80/Bt22ZBQVs5yyQC+\nAKiHZqc2UbI3VGv5fFsEyt9wL05+Uf//9U3MdGhXWONyeBGEPToun6tps0jF\nZCwR0fjVyoexWIsM9XFWWzBF5vxhwlkbxqWKQ+YMCU+d4/8yIri80zULuv1E\ns93f8rVQG9ykMjx0lBQplZUY8B1DECzo4V/UScj3b7hNbfePI2KasTh6df/c\nl6a+tnnS5jR1siDBSs/CBgBy+WqA/Z2UxCcaepNOQWMPL5bVbSkm2jnVv4Ph\nFl9uG8EqOEAmClDDGrVF0hzHWItDfGg2qa189ER4FGE1av11THAzNSuwX8Ni\ng7kGgNNOIcV7pr4knBD00QLXop1CtjKFT+0PtR/lYfxfMQsy41/YHaHackWF\nenpc55b4qW3Dz6b3DR0NGOJ10+Vh0qYJSnOEowwU+JKzS56HlAII4d2ZheQV\nOUOdI6hBDOLdEo7acIfqXb7DuR8IGdMjO2AI5mBo+dY70grnZhOrRajCM9Er\ni3gQ2GvYC4snveJJ6VDvh3XdGvImcLLV5UikUCy2pCnuqftkGXg4Q3tlh5Co\nFraZ\r\n=We69\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9df50c6a96fc218fe1d405da39770c88e622aa6a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.74_1598924842258_0.19239370524271804","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.75-add-lint-staged-03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa":{"name":"@balena/jellyfish-sync","version":"0.0.75-add-lint-staged-03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.75-add-lint-staged-03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c3a5f7448336c174a7c5dd348dab7b76b9693c66","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.75-add-lint-staged-03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa.tgz","fileCount":30,"integrity":"sha512-8X1ZpAayFqAHuVG8YPWOYtuu63av0ErNPLIIM/s7qm/KS9SP0PJ5aTykZLmhqBiwz4mljAFbZlCRwJIYauINfg==","signatures":[{"sig":"MEYCIQDwA+b5MKBhjO1MOrHakiqeIP3Ne6vRW4zBUNyvQTRgLQIhAL0bIZw1VcefVEZI8RlY6hh5uWiiHvtg1F2y54UsxnAZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249376,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTap2CRA9TVsSAnZWagAAF9IP/i91r1pZbzGwr4AOx8df\nEpEyld9biuj1A1/1nDNiwVFnzTJmX0KnosZMJDEIvGV5J2xX5M6wex7mpOAg\nWEmrHvUa1p1LEIIWAklCJ3UBRCuursisjRWXkc2DywOzJPX5/6qR2PAZ+Mzt\nq6ELtXKKtzFLP/1eCJXi83LuWmkTy1JLxKHg8VK0VkXZDUwpsS7Gk0trwbl/\nGkR1z6hEyk8QJAOyf49evRi7otwO/qjheiKynNYXcN7gpn1SWG73OjhBXs4X\nnjF2qYrCNQCvbb1FvsOeS+EigDClyFnX8ZLN1vda1TUL/Wel2+a+H0cMTE1e\n1o8RF431c/Qb7DEZAwFnzu1Cr36zIQRf3I9O0jjbDUjEOEv3qB6TvMAI7iPK\nFJ0nfji5Ag3W35Mg0jg/VznTTZuJVcjG5FPX9JKOcQxztDFgVGeQ+DOZ81jR\n3ad2mAMmPFhBySpRSTQC0enRomgqAYa+BGkfwH9EUmWV8zObod+8PdukYmee\nZJPfurUIN8naBLaLdWyt/NUDORpkxQ91b6ZW7jxzJmaR1OqhuxVzRXEp0wOF\n3LYMKcfqdJlOXVS+NfMKR3qCTcXa9qtih+2xT5JA0W5Rl6iKuqJ+oyc+VDO4\nzfb+SIC4PnrsWsxdb4JtC2tOzPdw/B8efae6LFy/9Q04E4Lzo5z45rFoDGw0\nf6us\r\n=ruxk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.75-add-lint-staged-03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa_1598925429519_0.7821897966082574","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.75":{"name":"@balena/jellyfish-sync","version":"0.0.75","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.75","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"afacc2d54279ab59abbd63a1751e30e4bb9db817","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.75.tgz","fileCount":30,"integrity":"sha512-66uZsqomCaoZbLNjpm3aBL0S6ryur6RbQWr+S7WBqNOKt7CDi8iq+wMr+SM4QO4Wt6oXQS4QOaa7itljxc4TXA==","signatures":[{"sig":"MEQCIFQG0RYggA5g116LG2kdKwCCGVJxUlPuT4q+1NeLUFkFAiA5X0TwEpuDRm4YJExhv4M3DnWfUBxtoGMJmY1QahIVfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTas5CRA9TVsSAnZWagAAhS8P+wePY0oKCk+7IA+B7g/l\nP8ekzsRbq1OXmv8wSIEgH8b2h9JVAYLQ5oKM61gywOZRV9D188e2KO968y8j\nefLvWdfyqm/z3dvRqNeLggTpztbA/lNYZBKTJ5TKGUh8PHIV+nnhuTn32DTz\n2eAtBhicfA9qsGqtk06ZXz6+PX2og9ae1Bp2rTPdquKdHJFpBWitxySX66UW\nyBj1dzGtQ6qZqSJFQKcDU7V0XxHDWcrYsqvQ64ZMoftRlFxVlGdr1lyY1+36\nY96lP69n2kEP72Jz6aGle2uuGkSEORKDmkox+/aUVnNq8hJFtytCnxKKRHfA\nKuObAXe1uFGx6yqJ6cL79969xanZmWwqJQbnREFwFq3d1mboa50VuTpw0A/3\n0X36r2WRMbZvDqJIFuO0IWVXCTbj8w8F4gluR3alkcTRo92WjmIzrvg90+9J\n85ESWO0fGmWbECz2dRwPsaz6ZlJ6EZyZ9ceXE9GA84+ySE/tV1R0SxdponeJ\nYkU6ZeJFNPJr8CvCgi3zaUzd+hXHbnzcENGJLnUy6LBbQoMX5XMfhoEiBMfR\nEbMXBfs07xR3CAV1yDaniAwVT8mBJMrhAcvZ9jj4XWRwLiUrRpH/Sa89kpnj\n/d1m10YPEOM4y70Vta1cwofJPB9/ox99glqv78zchYYPVcCynsPI+MNzAyx/\ncnuv\r\n=ce9c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"281e6473966f72fe716e100ebb07047c2d3905e9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.75_1598925625434_0.04113790943749085","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.75-renovate-non-major-8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3":{"name":"@balena/jellyfish-sync","version":"0.0.75-renovate-non-major-8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.75-renovate-non-major-8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c9358adde902a948c297532b0479b7bc87d25504","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.75-renovate-non-major-8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3.tgz","fileCount":30,"integrity":"sha512-M1e6MVrALVdnnAvnMV/faQVi9OCWs2gfThQ8tMafaZ9ehPB3tUzMuMcDVom1TVx1/8My1V4vp7rc4KFv3RqmZg==","signatures":[{"sig":"MEUCICZ/w4kFLJwxN4n9N47Ck1UPYAeO8dBZDJDwmQ3N48PnAiEAoZhyYb7wNrMgZhdyC0rXWkaXoZMEX4vi7gO+qGeMkwU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTavfCRA9TVsSAnZWagAAOFAP/1uTOaCdQo28fPu6pVFC\na2Ztoz2lQ8U2517s4K4IrkJGFA/xbXkCKICer+K37014Zn4RCnxSuWsxhz4W\nLlSFHOFO6jvaHd97cizfAmfpFSfWLpN5GkTT0o01lUa9hp7h+GROLlVsKgYS\n/x4wZHD7VpJ6o2qRtbYZ2fFv29jnWxVoz4GoVGTxndaAAfNQr56gTIZnGKQ+\nPj6mOueTaTL59R9xnrI6uXHoLj/168HrbI4D7JpKGLzp6Dp9IWDRVpHsA2Wp\nMfxJwE6sQFfgIjSQGD/ua8sIwK+95JVvZPnT0k6w0Dl3TuX7/9L32h6iHUaK\noyME+H2OVANLcechfRLb+qvqKVa4SYgS+tA1ZGxvKtKeJDTrCn+lNGU22cvp\ns7DKud24LraRyLxhUbvHiN/dN22irgUiRR4kYUgd/ouL6DmJjYot1YjuNOXJ\nKJFYWrZyup6WaieSls0TY2nZEeguQLNLdKqDcEUo3oSaSxQk34QSB/NcjWew\nTKPp3eb/UjbetNxmAqeMrtUkXXr/C6Oa+L6V/Srr21XnBY3Ohfu7LJdYqgRg\nWEbrE4PLQJ+fmyFZOhTKhkR77EdjJU6xzB0jr9oidfGTWF2LcPoTs/M3PoBV\nsk44iFlW37jSgs6GVvA1592G1fhP+WndhwlHEoY3elrmxOXpjyx7GdqYEdI6\nhXpV\r\n=w8XP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.75-renovate-non-major-8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3_1598925791497_0.9646157985445449","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.76-update-license-check-f1c1194790dabba6a20a66937c13f3e243cad096":{"name":"@balena/jellyfish-sync","version":"0.0.76-update-license-check-f1c1194790dabba6a20a66937c13f3e243cad096","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.76-update-license-check-f1c1194790dabba6a20a66937c13f3e243cad096","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b50b0f470889f6bcbd48d193e301306962dd83cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.76-update-license-check-f1c1194790dabba6a20a66937c13f3e243cad096.tgz","fileCount":30,"integrity":"sha512-oDLVj+z18zqsHVEyakZbuSdm3X0JA/MEAMjK42hra1TWixDicDUz/CzXkI2LnjtKiJmb9Fd9GJM9jkoyYD3UUw==","signatures":[{"sig":"MEUCIQDkl6atWIXxw8rW7Rm17KHc1sXmAM3+xpy5pVZAtXvaQwIgTkTi29BLdFPolXkZEC4A5VpT3EvXCKtjiLEE6QPQ6rE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTbdmCRA9TVsSAnZWagAAkSIP/RDvkDIcOsHUXsYvaWPZ\nIwu5qVVOQXHt5Bp9n9O1GHFgu8pcQcsmX+ejgWpVHYYpiR506s1czl0tteon\n11Sx+0FowKPM+9tBBXz8HEEjR6jrzTHJFgiFEvEJw2wyzOT/eHuUfnNo3K0p\nx0ugcYS4oR0fd79SI80wspNSGrEClXMw5rc/bLENEtcWNi5rAYf3IQquT/5v\nRvgJftfSNa3qrDdUM/ysHjSyeZoUauAYpgKwO0q8W9OOqvm/YDlIuqJ4GwxY\nlZ/Sun9z/sV2102xPrQ5us+IFnLARL/aO08xgPLmJOT1/M8R9yvqIjFEXkyp\nRWXlL8UwE7EBqAWWoR/83t98PqQZ9XD7NPByZFcfHbMya6fiJXmGAYjvl8lR\ndGbAlWi95/ndlC17ukm2G4hbIPZhBec71MQI9CPsGLlssT0Nv6mjnDJK8u5+\nB7+WlqepJMCqaeH0Rh5TZJFTGcY/SKhv5c4wtGgRMAGcB3r+Fc8OdtZYT53e\nagY8IYC5QWuzdRY/QXKPRDbhFI3ckzG/TW9u+y2lzxdSnLvY1SbdXO4wWaFt\nMbtB7T5GFGajzCXlVVihWU/CAI8Zl3VNRgKxL4U9FD2CDtayNmiXzDp/jdab\nUhVh+lulg3KDZN+U8SFKr53V5DMhAeaozzGJlGfoF8UdW3UlcizXZZIIdCek\nYZXv\r\n=k77i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"f1c1194790dabba6a20a66937c13f3e243cad096","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.76-update-license-check-f1c1194790dabba6a20a66937c13f3e243cad096_1598928742336_0.07573540014116054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.76":{"name":"@balena/jellyfish-sync","version":"0.0.76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"91d703c5de6cd499087103cb0e1fc1a2ce9b6423","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.76.tgz","fileCount":30,"integrity":"sha512-/switWOTTnHd0SYcH0Z8BYjJ93uKvU/HaGZYx7FqDj5CCqyf4yF8nsDh/IB5d520uHnMfWs4PTEHCt9g0dzKTw==","signatures":[{"sig":"MEQCICePXrHwbi+llz7OaBD5CYAH4LQ0/wjNNG+wAJsLJ6AlAiA40V31KaQ0KbWkKkwRFWvQareECg0Mz7ojPUAgKWViGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTbg4CRA9TVsSAnZWagAAHp4P/2IxO5dy/GGRNdKQ0gL1\nwQKS8wBpjuvweKEnN8nrU6OIpbsJSf5BkPfk/GGbuHrspkDYFGrxeV7DZruN\n+SHr3468hHH1xMmpu8eX0UC7BukZI0YW91/dIktAfjXXN984XnRH976fOmos\nzDCkpaUMIIOKTpHO+v6+FhvGQUVyes2OljRryAFQlA2arwKaBuyi7WnZ7G6c\nCbTGXRsO+iFm3oh+o3CTE9470CML8a7KBoAZ5CmP5A8cKZUMIhy56xpoDjZm\nl/ACU7Dtd4kZoSe5wRgCzOwEmzRBJj4CIFliO6MkfQtyhyCjba21RHui1vF+\nFFs9oCRj03F72H61syl+s2F1TPt+jCHAE+QHOmP4Qe5drVDnYg+hJ5UxPnIA\nanNnHVjjk3KFiA8dNF554X13FdN6OOVIeUuJ0EGAVLd9zs08mUff+vXjgmS1\nyOFqeldYTgr5JxjvfOROuBv4C4/8tWfHJXWQJedROtwUjPtglt4Sa/EVPNXd\nCsHICqZWHZCkA3LhHmraHrr1my91aMB4bQ2b1OUL5k6oOoKPD23M3VzABvNv\njdqzclLCDpgze3nPJNPjsWocAo98kZG0JvjP7pDo6t0In9bdGtho+73ZkDAX\nMLZnG3DX5Fm0rfsLNM9Zcz1nhb10xB/b/OM+v/eGiVpGzK6+l1Guq+wWovcx\nSDP5\r\n=gbKT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"219417521d2930610bd4fb6fc9baaab53e86422c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.59","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.11"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.76_1598928952220_0.24613999545806098","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.77-renovate-non-major-b9743b312c70e317909e51481f45241e3b485ae1":{"name":"@balena/jellyfish-sync","version":"0.0.77-renovate-non-major-b9743b312c70e317909e51481f45241e3b485ae1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.77-renovate-non-major-b9743b312c70e317909e51481f45241e3b485ae1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5150aaa4ef648183a0009a8337a87a0e64c8cbe2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.77-renovate-non-major-b9743b312c70e317909e51481f45241e3b485ae1.tgz","fileCount":30,"integrity":"sha512-nAcwHXTRHFLYoaBJgSvdF7Rwh9rOxsbvRSBbsiasrEzER2b/MzxURCFiQYCH0nLCY3MJ5rZGEd+UrRGBlUfk8w==","signatures":[{"sig":"MEQCIECXI8UQQI2Bcp+4+8Ry+HWn7uaY4sx+aD0fOEL/ZfZyAiAXfxHsAvpigSe4rZcX+vik6bFzxzJ/C3YFrLxh62WRBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTblZCRA9TVsSAnZWagAAbaAP+QEwL3QJCZggfwwuz43R\n+NKXG9ojWzcNz48iBAqEtwAPJOsnuxCiRmOr0fgaQsWSHadzY+2UvSVOj4g2\n/p3Y6cfwFnlOgfJU7OwfXx5147nFPkpH5cY7TS/l2RSZ+nQpOymZd6lTPkkK\nl7vzVWPFtVvNUp+zCn168sKo7H3XPGoDzvdUvryxZkQB9bWZPeOH4c8R1k+f\n3G5k5j3j4iBDu3s9HRhHAqsY2y+HRjrtgYLMuCrGRaDlIzZr6vA4EoSq63w6\nBzrVN5gaBG4CxVUbITOl1Vg4Gq/zXGBNcRbBqCEcN1ybSay1/5a8LWigvysF\n8lc7Ac6/GwK1NOVV4ccD9Jh9wgH/w1NDqG8z79PQ/X5rTpIqyDJHeubnUiK1\nZlCT3ncf67dwyPFvDv/Dmvj9jTbmIItmpxGW1vVNVLjmJKmhVBjiqnZECvh/\nDB8am6tVn7XIVIZr5sQCGDqxjwUmzNIaZnWkrRAOD893597b5FjTsh6kh0nO\nOEPKiL7mFspePV/dEH5bLLF40tb45XNJpIk1kt7Qqg6C2BV/4cqjbeei4Tg8\nEki3+4xtWw6dlbnXWHJFmzDiPGJ7AEooYAYfYeqBq5ektO3YrMXj3XgC/vaV\nGA+dRYvGZJN0HTmEgIZL22h1BN81SNOOgW+kPQg91XUoWYVlSTpR1+iJ3NeI\n2rY4\r\n=PLLn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b9743b312c70e317909e51481f45241e3b485ae1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.61","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.77-renovate-non-major-b9743b312c70e317909e51481f45241e3b485ae1_1598929241112_0.5585735858888854","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.77":{"name":"@balena/jellyfish-sync","version":"0.0.77","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.77","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b8d5138c18f43b26543f6299d597a5169cbd89d7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.77.tgz","fileCount":30,"integrity":"sha512-UMe6N+xf9OxQlc2tXkuxN3kXC/EsYwJn/XAU+Hz/pq18i5lZ26Rip/TeS6kSXJdIYyLhhuw0VLM+bOwTJfJvyA==","signatures":[{"sig":"MEUCIHGyyvbqP2ybcrmO1956oqy2xR3mKEkmWLzMAmm4guF0AiEA2Pq8lB8hV2ISa0P2qB+0PIda65uP7lM7/tgNMNrZ1i8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTboOCRA9TVsSAnZWagAAL2EP/3M8a+7e0zXHCEvQ8D54\nLttv6okHdOEwszpVXOsWQZ208eTKhCQno6TnUqgN4wbH2XLhvwmABzar/+87\nWkQcPhp+kOxB3S5RYtcbpViD2J6ZlBw8Ue4P4yD4hNpVD/0mES6PNlbBwvEP\n/yskSLUyPDNe2SNLwdbxuSFDJIPj12JgdDClqijNAZawQKVo5gar6yZ/ih68\n3SrHUmPalR1oTGrmwaLTmMKFeXnyp1t850Sr6OqwdzE8Jy/vqffetO/xfQig\n4zsWBfN11lcaOZqP49487lEEBN4VM/NxikA9bXvTxjrG22Y3wYe/icOgU7iZ\n6Hjx9Oq05pYPVOXJEC6aafvDQS3an64KZgTACg6AbcHgCMEwEW6eN9HRob08\n90jsd+W+N5uaOH4DlyqiRsyc7GKMffIfDVc0vv3VLNlMLJQgQkvxLqyBUk2J\nL4+B4ow2yaCHxRaX0TMoZaaCfdjGcwGK12FZ4x20mEy/tdxwGj2QIjQEX7vh\nuAWXtKNTImFZ72UrTz+fjBOeE1CSV+GXMKTYZKE14d+ysvMfaHdA2TkWLn6F\na4ycIjbUkGFEybwPMYvMHVTU9gm3WIfcvJCpOkX5kzsiBD9ct4qr9ovZpat/\n4kqydPrfY6SmMXZmZERmWCHhbpu73dkpwa5ig/HGfk/Bs8gLlUiZlRPusitB\n+wxK\r\n=gbR9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8c284303da28a40d5c1ba846e095a6be790b3eb2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.61","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.12"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.77_1598929421946_0.4385544053075312","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.78-renovate-non-major-08d749e1e1342e49e0ac28659cf63a2e13f6ff48":{"name":"@balena/jellyfish-sync","version":"0.0.78-renovate-non-major-08d749e1e1342e49e0ac28659cf63a2e13f6ff48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.78-renovate-non-major-08d749e1e1342e49e0ac28659cf63a2e13f6ff48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"785bf85ef90b919f9d158c0502588bd0b7fa3fd9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.78-renovate-non-major-08d749e1e1342e49e0ac28659cf63a2e13f6ff48.tgz","fileCount":30,"integrity":"sha512-yGkuexTR7TGgFJ2Qn7sEF9d9w6M+MA9gCz396NM7CEjCOvto3LfcM2EBtRuC2fSLkA3rWurTI7heSkM+MNwURw==","signatures":[{"sig":"MEYCIQCLvnyyagYHZwx7oipoou0mLt2YWzqVE0ifUbfuXrsaTgIhAON1/Pb2cmxbGaybwL+7K34/emZvXdIZXfscsA/wu4bP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTdBLCRA9TVsSAnZWagAAfCkQAKBPYoL+RdpCVFAST8wg\nNdwNBneZdSnuRZnLZWTaEDN/tRI4YCxHGiqSj+Yz9mArr3/zlbwI5RuzBiZT\nWSYbfpdVH6dqMAcWpn6SwGtM6OpMNpg+yraF89d+SsgbCrBYrc5Gc+Lu5rvO\ndKDJ3dlsuovIKNLlvlVStuBvm/rFvx6ZKKRxZULBSMytdisXeRj0i0E8Jn4K\nEMrjwhJvntXfLKQJnEDz4S26AHavVImCGJOLaDioHSzxChXi2TdMS/akzhnZ\n9b13t+jbB07+d8aL3LRuPmoRMyZrPSshNA5MFE7QIR259wq6lipQGP/5S20v\nNYtUedxDGP0N2sGvS5Q7+re0TuCUwWEh7JQh3g0eTqJqOLwHj9VCyFRMJbWj\nsl7wSXjRF0VjIU8RWNIbqciUwGykQjDVpJrShTBx8sCrImqKc1VHCZxk123v\nmUOkVqnETQo1JDGcKbgLOnxKDxxKX8l3K1YJzNOp5v1MZpKrHvBc5HNgqNJO\n6TY8I52MvwIbvnEvYzui9cPAdhoa6yfCCXwqTX8TsjILQvlxrh1xl/7qyC7f\noPcMvc+9ccp7VLbsJUZH0dbB5LjzsE4kZXWWrKOeavP4yXIv+EDziKGeG20u\nkt3xeldjbS1Grid4ZonF/IoM3t7/3Bg2HKCQ9LouvXnxTOLB3D6LUhgQlmFy\noYoP\r\n=s0rW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"08d749e1e1342e49e0ac28659cf63a2e13f6ff48","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.62","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.78-renovate-non-major-08d749e1e1342e49e0ac28659cf63a2e13f6ff48_1598935115207_0.5531061418894778","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.78":{"name":"@balena/jellyfish-sync","version":"0.0.78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.78","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"275843eb3a9acfe5db64429605c2ab1e0617e89f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.78.tgz","fileCount":30,"integrity":"sha512-1zGYt/cFuy8JI0KZaGDhxFJW4A3ynDR/33JdB+zmwUU7CMgiAjsn0355inKv+WOmTuX83V+ZO8SNV/WsZjEc2Q==","signatures":[{"sig":"MEUCIQDQk2yUPFI3xdFTDlyy2Q2Fb8H1PA9ZvDdIF6uCaZVOvwIgMbpZ1mR1eeJx/9sQm/Htxz4F9ke+GZG12LpPq1w+io4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTdEFCRA9TVsSAnZWagAAM/gQAIMzkEQsv6LyiQOpSW6G\nlWbbmYFT9dVqe9U4K2+JKwNVVsC79Usw0LXnDanzNUWPjq6I5NmTtIVem+U2\n7u/kI1ZLRKl+ngN/6D5IcVQeCl3kzIOVSQziuy3ztUij3JgnD0HxriS5dG9o\nJ/EImWU52TztkdXPiL+apZ0mCfrcmXFwClO+KpigvVIKeHn0nyhit4y8aUCI\nQOZioq0Tj8ykjziljeYz/2m25kLu2gqOJzLup2c+zPvDNQc53NdUKKANjZSU\n0nPSxmnmT1/bbiaQL39Y8fTjBVsE1wbrwWfKYa3bkXjZ4kZ4zAsH9bRl9J3E\nohYC5OOXeqtQEtKaN4AbRbJp8mi89Iwr57zof/7x3H82uHeKWEuMbsm3eA+J\n9F/1otXsWyqGwpNU2daXeTtleXZI00S3eXqEL3ccNE4/bHpIP0qD6T3a8H3a\n3dMsuyNbt+yxZdzFiHAjy+/NO8m1qrj66kpseVGBV+4svH9LyWBeJHldJIFw\nP8iS38TsOyKCTqjKAb5yaSHvg+l972cQPBL34JHBak2/hdPzTF38/Kfobxyu\nth+h44NrH8Oo6uRSmuYl24W8pXWMk8BdBpGe/HxcUeI5tgc1dTzPbJGsZl6e\nV3kUwrd0fNRpSUD4uwj0e75ZjR1BJvjH683cnmNJaQ/WTC6jWcyEKWAT6a98\npczt\r\n=aeW0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"d8d516a1959e799a49b846ef62cadc9e43f081c1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.62","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.13"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","shellcheck":"^0.4.4","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.78_1598935301195_0.672733058464839","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.79-add-jellycheck-1a8168bc677974760953b2ba87f8ba92575ddcc0":{"name":"@balena/jellyfish-sync","version":"0.0.79-add-jellycheck-1a8168bc677974760953b2ba87f8ba92575ddcc0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.79-add-jellycheck-1a8168bc677974760953b2ba87f8ba92575ddcc0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7a79df10ffa9deb8d5dedd2538a4b565b51d32fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.79-add-jellycheck-1a8168bc677974760953b2ba87f8ba92575ddcc0.tgz","fileCount":27,"integrity":"sha512-FImWxysvPX5BiayUiRK3CUpyUSzIwqQyjy78ySPEFKm/HlFD8C/YdYGhE3537yoHeDh3+aEkywfbqcB/wZ2mKg==","signatures":[{"sig":"MEUCIQDzlbNXi/F0jrIWpnmWmbAbGayr/ehnS+nlU//odCEDagIgF6Ad6FN0InDPr8EIsURYddW638gO4eMoUHrzQDphsNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfMXCRA9TVsSAnZWagAA0zUP/joRbdJ3q2I9IwOTIrUl\nJdQDv6pZVqMLLAyxNKaE1y5H0MTTh+v+bwaQLz8tdpdIHU7bSeGBeW+BnNCB\nt0MGaGTRIzK30pqD1G+hNxDKPgM8R1tVRbO48TItNT/9v0QgMThrsikL0PrA\ntydSH7oehlyLIMHUvunf/XDapBxDl7MPJy2u94LBVsisHoyEmG3rbt9NSIHX\nr6NUIy632YiDG4xVZp9iPA3hMsqGTYR4Enm7z6fjUm7Vrey0pctxZNHZGw/w\nv8+FKEsLHZ50HCQ2l8eweJUghyDizaglg1QUG86ZWvvm+2zy8iXuhT9ibTmv\nWwufeLGdJ675cvGUBD2fZjaCOzf2qK6Rv0t0gWE+1T22UbgCUvnVhq+FwikC\ncQXoFS6TNpIWF1/Wz5Faobh/QZ5s9hYlqbfFTtiMCuVEvKvAvlndfNI3cEh7\ns0AEEITgGl+DkRthV8pXsDtiWuImt7GJV1LaRowT2DKBiEnZ+mEF3VFTi1nQ\n1kt95ep3mtgOvhRqEtBciGP4IXN9Q0E3BgD3olT04Dn40IdsqAtF7zgzTpI/\nX5N7wreXcrd3q06OpoyQbGT3+ffTNTG2kAz9KDKrRO17XwJihVCvre1CjdmH\nlPMgYLDbJZe06YJxvtVpRkIA941Zn76030c5B7D8vaZGr70KsK+shr4JjLwv\nlccq\r\n=Oms0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1a8168bc677974760953b2ba87f8ba92575ddcc0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.62","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.79-add-jellycheck-1a8168bc677974760953b2ba87f8ba92575ddcc0_1598944022825_0.6736423025275264","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.79":{"name":"@balena/jellyfish-sync","version":"0.0.79","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.79","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"20247296647fedb5c95172a25716cc5730ef30ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.79.tgz","fileCount":27,"integrity":"sha512-tk5CEZEMucwCetCguL5hA0ujqj1AE96TNNu6CgqKMyCByGQHxomLT/BqWcgC8+hub4abX2u/EPog0GO9N4BUEQ==","signatures":[{"sig":"MEUCIQDZWZLi3LfajsiHPzWqgYHQGtlhmoEQDoLv2uiDwRYBxQIgQ0pn6MGgAtKROwFv5fH0wJAexE3fqqvJSpK6Xv+ILsA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfQhCRA9TVsSAnZWagAAASsP/0hqT5kS4B4qALxjVd8K\nJmxkDLTWSUGCRVKUK+LSbnwuaT5ph01jZS+uVm4QeJhbE/L2jSrAhPwrlirU\nbStZ8aSbHV9KotYoR4hZUSI3A6Jg5vcuwPifs4tUf4S5JPvOJkR7muZChkzj\nyfPdm0uLsCQ8N7hFEZGboHHJXKwGwVUI98SQv8vcWp04Lk96SmKVSLx7x4g2\n5l3LFvPk7k2piSB5RVJTCZNv2IZpbRLOnrkx49+NAtZ9ExZkwILdhtpbwopo\n4KNFqK+r8M9aQ/ERmxevj6HZJZQ87ohxGyb209Um8Fz4kdltTAD5wJd3uMja\nz6lWb7O/u2BQEv82VCpVX7XNcv14g77JtzUjZCLyqAhia0thh25rO+nIAcpQ\nzS5b7AEBQHQ3rCCdfixXfx09nfTJoJIjAduWpFjD5qwFnzc8ptx3bp7GyFMa\nO4e3b/uamBR94lsRoi06nx11a5HAXXMFzQGBXKPuDb4YsY/VlDS+4Rf7wz72\nkw2hunXRO3NsmMSCrVqk6k/Be7dC//88jOsDLWEuIiEiioxTYOkBO7D9bXEr\n5XyLKSSBHzOKZCG1og7tZdy6NAz9ZIyYU5krKPsFnWTAcMBlT4bnkQWMVnTO\nhNWv/uLMNmAQNSnKUiWHZjKVU4+jZN3oZItas1OGh6f97gJkD1dXQ+5qTR8l\n+/Yo\r\n=w55I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"89bec08d9c0718738c7233551987f057504a3f4f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.62","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.13"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.79_1598944288817_0.09127277090578234","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.80-renovate-non-major-c0f79c8b8e1324a3450787b8e059292ea84e9682":{"name":"@balena/jellyfish-sync","version":"0.0.80-renovate-non-major-c0f79c8b8e1324a3450787b8e059292ea84e9682","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.80-renovate-non-major-c0f79c8b8e1324a3450787b8e059292ea84e9682","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a1f5e8e9a271468484cda22243ccbcdd0051fbf4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.80-renovate-non-major-c0f79c8b8e1324a3450787b8e059292ea84e9682.tgz","fileCount":27,"integrity":"sha512-NxFtEK80VP9qChTNQaQ6cC2j1afj1mv3WA6IcrB0H8nImQxIZGpbugR0gyfiOmjYFu0gHLO2yIW3iryHvWV79Q==","signatures":[{"sig":"MEYCIQDOsZhOaop2boEFYEwnH+pbFuOhNlt4206SEUQqsbo6SwIhANByieGdlEH2GxKuMy+GvFCpyruMsJAgGT8clxbh7t96","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfU5CRA9TVsSAnZWagAAGp8P/ihOESl30hDNxOcmXClB\n0AzEQ1oCr/TuHy4itK3gDVGa0ZbAl6laNt2raL+OEap6HmuZvz4FPGvDrXZX\nX4tm8bcNTA68y9jEVwxXE7tdfYRF6M3KRN0Mb3K59QPm3CbRAR+cQdoWtagy\nq6oA8o0NqLG83+mGg7g80jxnedb7Jg8xIdiRS3z6WrDbmPqR4utpqg52e2P/\nq612Cy7IhEOMyEeETnX/3HRxo9l4GLdIRTueaJxXJewLzCZq+9JhZQuIC4/P\nZiFxPdrYJ4qKlWcsty6p2Wy6G6+TDV8JEqK3Y3CTqDYRJNpdZNhzXhv4sxmm\nGCkS3hvoPGXLUQq+xoByEgKXr4YGPEa9c2U5Iyl871LBs9R3E6Na3rX4XqiU\nKVAiLetlEEeXUe6lTUU/TAMIrLsn0LuxT5Df5INFy55w1i/SbMZ+nRrH7d7J\nU+2czgFmdQZZP7aTGzHXIrRnn5ySYtt4QmsTQ0cPoEgM/+Va9zWjapsiEheN\njcISbdz0PDWJZ/G+u+7MkmY1MUdBS+K5PVFM4Cpb1xPW+KAd7oMkMD/qhKpk\naA9C47OI9MLSFgPh9Uks/UR006yBn7EdD9LGbP3cu/xpWJ3u84c36Vf0Otx8\n1ZS8qKZ4AAx7rk7xx9+aFhhv5ASzrTsoKQ0YLnxhteYP0hHAAx2Iw3ger7mh\nsdO0\r\n=q+YF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c0f79c8b8e1324a3450787b8e059292ea84e9682","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.62","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.80-renovate-non-major-c0f79c8b8e1324a3450787b8e059292ea84e9682_1598944569292_0.969206880522324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.80-renovate-non-major-cc9668c5e5d5035c80bf14f72367b71fa7f4d433":{"name":"@balena/jellyfish-sync","version":"0.0.80-renovate-non-major-cc9668c5e5d5035c80bf14f72367b71fa7f4d433","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.80-renovate-non-major-cc9668c5e5d5035c80bf14f72367b71fa7f4d433","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0825f94161819fa5bd65f27c926a9492da2635d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.80-renovate-non-major-cc9668c5e5d5035c80bf14f72367b71fa7f4d433.tgz","fileCount":27,"integrity":"sha512-KG6mkbBqIfVjubg7toFr4sJMPwt0I0+cmnbu4w56IObmbvL34LKQvHcvFdRAIcf1tPPTIaYJ4H3FY3j31hT5/g==","signatures":[{"sig":"MEUCIQC5p5bBgVSbOkdFuYbHDorx1WFzmJCVbv1r3fC95S8l8gIgU2w3VymvV6H08IV9FBq+EOc9Gatn/bVo7EAvj05GMtA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfZNCRA9TVsSAnZWagAA4RwP/1U4RST4NKy/8StukJLH\n7d6TUiojTLAyHSLmERzEVJml3+Ij8hmkEM7uMalEmxRv3VcCkJv+fvOCnzFd\nB2YQyzLaGIcYxszXWHCsWFQ9fquZpVVNl+DZOxTCtQcqPDaL5JOzgbE38aUT\nU4jC5LFdpXs9nGXBV/D726VGKYZ4pDpDKFbYCRl0RFzEklr5I/bGoA1BEqGM\nG8j/7otXkhp2WjIto46horbmsMUkC3ire0soRqFQtJZJyP0jlU9hNzr09qFu\nTJ+OoKbGHZRdkvVgNkXFr1C+5fEjVqq4WXjhYMhaoPadnNT/PhDAl5MP+CuT\nzOFY2davRddUXt2d+PRQPME6BQRQXiafE08rNGO9slPkdRTiPQ2Q69NUBxJ7\nrC5WE0NcHVkZIzWyQDJTWAv+gclu8WVNCi5x9WhD33tS/5FTLpaIzzmJSU1O\nntbVuPsCXlgG+3bMX9QDaBBI6Qifb5ZE/97cwmNauL4NTrptnW5ShSa3qEX3\nhslb1km2wYLuARTx0ic4TeH+erGBiradWSSO8/8gLMHC1W/9Ez2OQAh18OAq\nnnQX+GMkmmPP2rFzdNvwgNd0gVvG8biaLO6VL/YYSAfYJpXB8zND9a2XLNXn\nl7M9bVi/+Pu0NImQDE7x+Cpv8JddrE0Z+fQIaSOu2ZfCf6HOg1n+kTcKq2RL\nguxv\r\n=9FvQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"cc9668c5e5d5035c80bf14f72367b71fa7f4d433","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.63","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.80-renovate-non-major-cc9668c5e5d5035c80bf14f72367b71fa7f4d433_1598944845512_0.10500237119025346","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.80":{"name":"@balena/jellyfish-sync","version":"0.0.80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.80","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e2492524e384cb53a375cc58d7e40f59add7571f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.80.tgz","fileCount":27,"integrity":"sha512-+uVdBzXozXVD4wKYShylt3NwtUTX0CVB9HtpSASTiuR0U8v/4XIJfFhuCqDgmxj4NQCtWl032iKRVjzwhkDqLQ==","signatures":[{"sig":"MEUCIEEoXGrDFCG1AkMb1nX8QgoZVZXNEvc+QQRvh59+xMCiAiEAkqNAi2UNG+Q4w5qF/dX/QKmTU3W/EqFLxcJPJELAVNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfcsCRA9TVsSAnZWagAAjM4P/iU3yoqkj00Ax3VxQO9x\nz3MHD1H/rVfwRtIA329M3bGbM+y/OyHIdWKJ5mhf2qBrp7pzTIewLvKasASU\n33riiMS80wiqkGL597mn56FhceKMfb7qc78Xatlha9PMHhv7eksE9qDCRIUU\nAfRZzeGP0gp1xTHkqczY7crSlCatM8nLYYqGWWqj9Wz/dM8QTgZpEa+uj/pi\nL9aGdNMfJGrltaOF/lnXGZE/e+mLDfTC47K9jU0M+6F2PLA+Nlqy6hh2n05R\nwrTzer/3CEGyAm2oVch8+2wJhnBtS5tl2BICwnQXc7Qx2ZGsHZg5v1uxCJEy\nRuffExj1X7fKL/7LhrjYS4G+NgOTQiSljGAud7omIviXjkw4/r0dlLGfz6M5\n52S1G2WUMpDjLRO8T3gF/FbTpcPXV7cciYtDqTeF1yP/u/56svBDnWedn5Le\nNfsl6n0sUpYF4rGs1yfSQow6ATdqGFyTJN1++XhVGXLyLhP44jveyWzc14ZL\n2LOmJUvgUdDP+PenG1wg3hxzv9X3JWgHbSQed0r5RRN6YqXotSzS+9WPsZPa\nLRmCxtUH95a12R51jOViom3DDWoFGUfUsB6yW7OgB/EobnF0Dgkyl2EU3rsP\nIt2wn7tS+FHrFMVfaQNRnEu+6EAeGdmoQm4mrjz++DbSArgJYRdG5Yg7Ym8+\n3FrC\r\n=JpS/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"483b3c8dea049e2a65cf70331c66cb5ebb5194a9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.63","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.80_1598945068365_0.914626709330087","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.81-renovate-non-major-9e6046c33d6ba90e9dd9e079ae299666edfb993c":{"name":"@balena/jellyfish-sync","version":"0.0.81-renovate-non-major-9e6046c33d6ba90e9dd9e079ae299666edfb993c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.81-renovate-non-major-9e6046c33d6ba90e9dd9e079ae299666edfb993c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2830ba1943850f0a26e5e4c9d291550347e0bbff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.81-renovate-non-major-9e6046c33d6ba90e9dd9e079ae299666edfb993c.tgz","fileCount":27,"integrity":"sha512-1rqyFb5R32Q0aUwnhQ4Aqzux1IIHxMWwCTb6F6uJ6SPiihCQwIH8762aPlGSlNIGGR8N5BI36mO368FQ9GOZTg==","signatures":[{"sig":"MEYCIQCZZ8sLs2f93MS+qBNoutEE5diAqDfxb+w7Mr9X+tR7rwIhAJC/xXvRB71e7XRRnJgnCKW0aM1Ef78N/FhSKfrQOd0a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfiCCRA9TVsSAnZWagAA6T8P/1d150KlWmG3+xLbgjuN\nwVYqXxxymy6JF6vFXWteHchqpnY6tsz74rVgaF4oHvnG/xupt1SMOsl1d0IY\nVs/tRwAcEmHn5f7kzLUaClEhcanz71KdLIameKrmFfTjLQLuRMR1bGEQBGRk\nwXGzP5ahMWtyFa94DCACGoglHM2Q/GmS/z6wGiXSD63QvJKqK1vzfq9wYJ9x\nbwsDjthZ1hioswKZmentLCnbAdaehrL/+NKv5mOXLC0ek4vMUfJll7Qqaucq\n2+FXJZSYBYNcRM68EmF/RAtA7XVSYiT5f/1JpDw7+VQzQVWJZdwtghezDgds\nv2cPZwrA26bS8ccdalJ0xfYD1AU3Vmd/aEWU0quh808s+xqPM3ImhG8/kReD\nV6FOqJtgviEdjJWxwJRRVHGz/9SHXHoL52vqi0EWTgSZYNFrv6S8bYy37ynj\nUxc6jgiuWi+gjI9pAKSH8KfUuegL+W+N2wLSS8ICSXAqvECvPuGnTliMnx7F\nkP/TCFJwsg2BlPeWzghhohQAlrUs1VR2j8jixkCPB10j9uevKNWTZsPEOCZd\nQ3O9YaNlWHR9OBP62F/0GUtPvTgFcnCwdg9S4h7EwH3FNsssRghmpjDMtS8t\naIAG+RwMegO0QXJi0DJ1Ql3YlTr9aeWvHIy9EKOSMhPFso08ezCL7otpSaK5\nxndw\r\n=EtII\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9e6046c33d6ba90e9dd9e079ae299666edfb993c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.81-renovate-non-major-9e6046c33d6ba90e9dd9e079ae299666edfb993c_1598945410082_0.8689682511314878","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.81":{"name":"@balena/jellyfish-sync","version":"0.0.81","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.81","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc643e6862199786f0083b8803b44191ffd5003e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.81.tgz","fileCount":27,"integrity":"sha512-vfzmjJri1SiIC27tIDZGYEZPiFBoasm1jHdp+gWfbvpJv3c5MU7NbpiWWaAnFwLY6BvbalalX8YQ3UYkBIE7uQ==","signatures":[{"sig":"MEUCIEiCJAtK5f1sQUXQLoETlgfaWQWfmgEo23TWyL/sYNpFAiEA+M7JPqYHIypyYGekjB83App+o6UhExHlENPj+250zZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTfk7CRA9TVsSAnZWagAA5mEP/1e3Lflxd6r/7EKjoOhL\nY/YwiyAzOAqhwdAGctKRMgSwHyYXjJctMwXU+XRsaLfv8WSP92VMTaiSEYEH\nsZYGybdtGojAob8Lh4V4wQEqGbTlDkNbA/84OvX4/wWAqx/Pyt1y4JmlN42R\nv2yDvTGjT/OVvMmExjviQUXDgLm/AGes0u0vwRAS+Bt+avwAGTOHnaGu9DTE\naHooX6/oHeEdRVvGJSGlKG/fr/ceQPobPoxMyaHNq78cEII/f3YiSsoImy7H\nim/ukEERQaNyqVjSIuyW02RMvPm6Ns9kQJGYXpXx22BOzFWAPDOxrfg2PaR7\nSp/qLDc8jRhoSJkjT2wVQQnXAhFWrmAmfDx4SIR7eJ7SDJbLII42N0O8OSLt\nVPd3hu8g0tal4A52K29cD+izKGO96bKhtyoPvnVz550mNEtrOxui3F5FP4Ji\nPY+FTldRBNqmLUiT3vy4lwGOFYB4c7L5w+QcKRm9ToYrMcsUn+YOnRvtNkTG\nrNIU4cVz5YB54nx9bM8zgu6v0wCiVtLtKobJJFwYzcP33eqS9SlieOHoYbK9\niNMxZo2lbKyr7LM0Iw/18hM1azSQZkG1p0oRRgdJS3OG939+cgPP9sRjC0vl\nZ2H+x7J5sI4yuuLitB3P2ABl7oVA5pSbPWnqQW5tX/eLlDj2qfcQL9ZSYoej\nTid+\r\n=Sz19\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"15abf44a8c6608c0f60c874bc584a20163d71b8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.81_1598945595125_0.4428265780594698","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.82-add-revenue-front-inbox-8cfa0f817bf3802e19974f31845ec61aeadcdddf":{"name":"@balena/jellyfish-sync","version":"0.0.82-add-revenue-front-inbox-8cfa0f817bf3802e19974f31845ec61aeadcdddf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.82-add-revenue-front-inbox-8cfa0f817bf3802e19974f31845ec61aeadcdddf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1c68e01ebe1c1931441f4b2d454744637085db7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.82-add-revenue-front-inbox-8cfa0f817bf3802e19974f31845ec61aeadcdddf.tgz","fileCount":27,"integrity":"sha512-dRrbp8RPhWkDdzFDyKo3+68Um6EN2vwzvOlU0BRxnOQl4MOhK7M35tpYZv48ViP21LZPVOKZ6Udo9BoBzV7JjQ==","signatures":[{"sig":"MEUCIQCMaC8wx4Kw4r7mUo9Hah5T57eAzuxIahXtFDDN2Ir0IAIgB8U7D/uEVQPGKwaExLI+LH3fnhbumb5ktZygo14Kjls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTgRbCRA9TVsSAnZWagAARoYP/3wBhikV2PsVmrA7xOjO\nPetZe05g2NyTzwaB7/7xBGKlqoPCkTfQ7Z/VInOz8POSFnL6LdGrS9BniYZt\nl8x3gDT0wHsmY0FcxOvOIVqCc4ju/9WuXGoGijlicQ1ZtCaHtuXb6o1sdiZi\nVIJHG+ezdo0V2nbxKiaUSoZda7mtikhOZBM1/zODnCl3J4l7tkNHgf9TnJYl\nGMdFGKAW5Osu8pq2BBT8fgFBdNEU0klaUP0CtAl22D45Dl/sM3XnqzPn1Cvj\nbfp3AUqvkmEBVN9JxIbUSut9BqBHn+YwUJ1VFXomLvCNHENXLagwSW7NMo0c\nFQCWQZ3xevgkdgp9ec3rrd5bbz7KIBh3vpGhu9YidkX4umWVsyv1B9p7rxjS\nu6JdqS21pBB+d6Swt9gSvEl3ZB/oMU5RCrgY3T0Kh9e4FA9eaVmvwg6KpdvH\nxq0WaX0dZKJxZwfq9N3nL4Aa7Z0IfxQA9LukU/WkGQubPfVaw7IDUH6Ns9dS\nPm/XS5ypY5HJVOzHDCJnsq7MQTOw91YSO7KYmoD0wLNSMTRAtZpKseJiwQpH\n5mbHW957K70q5/5YrdEEbDH/rIjMlEcearaXRnzMCJoZmyYB96OJUlENBoum\nvgAKy+nFOBUvidTD3WfW9EDYkMe7kHNn9h1VWjpl/UEjgWsEcD9G2ZqAYJfz\nhIu3\r\n=Y9xW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8cfa0f817bf3802e19974f31845ec61aeadcdddf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.82-add-revenue-front-inbox-8cfa0f817bf3802e19974f31845ec61aeadcdddf_1598948443299_0.1485424926598946","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.82":{"name":"@balena/jellyfish-sync","version":"0.0.82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.82","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5e4026b2583f6b6e4bdde3ce8c82e7a595454086","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.82.tgz","fileCount":27,"integrity":"sha512-LnQXU5f6purc9qhvcisXiEuSyF2M6uWBYZAs7wN3SK6/DPmyasUgaNt151pxIMdwVMf4DO2rL/6iRiwXYIWuxw==","signatures":[{"sig":"MEUCIBuxrXZ2tV9vLTMOsB2Qq7GnuI1sE0potQYFch2HFX1rAiEAp3PG9Z8phAPi85Z+N7u2T38diaubX0DXvN3KUUHghkA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTgUaCRA9TVsSAnZWagAAbmQQAJg+ekbtdjScswxK2loU\nxxLioYxMtbIx4OhEltX7lGeupo/XNfoOqfPPwedUnAqCEH/u9E/ZvaoYQDo0\nKJBjlMrO/9CmJ5jTJJGzJED2QFSj90G9pFvEruGP5XqZBATbKmYfZdBh343C\nt1wvf1dZAUkOoNA7MJl0BJCCdQdKIW9oU8a3b2K4isPH1PrK+ExEdeyCcfV8\njX0B+IyZcuDfWlJtvrk5xmIWPsJENaPesO+Qbh+fqw2lFVzPHRyVeFGzxPg6\n6Mxc+WGsqqtZd4QVbrSX583u2lmNAHHlH8OV3oHWjqac7zIPvz0lv3T8qQu/\n+hevdV49+xoNd8eXY5fcTKY77RdYSutnEYPSlukHE7rkTEXPBbVMJRrPveIX\n/V365o5LV9th6Rl4zuCboL9H822LvfBxuD2nnFxeE2vHvY4J9xuBNzifZnKd\nCHaMkIP0pZqF0+yalKYnjdm2RXoG5tMXgg0cv9z+gWzCX3uXEkKMezNldsaH\ncDd+SbiueCPEBwTsT5LPj0QIE54gmKazjr13+bWIHa29syK2glrHjW7vaztH\nZnQIPox5eYIR/kRHuBep9mPnAp7H9OO60J041UDYUwN3855k1qHPocclscl1\nz4EQqO0vOPFFqTHHLxrh6LVi/Jv/hPsHFCnVvEGrLCM44CxeeWdqiDujbwYw\nm1+p\r\n=jh4V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"cf99ea8526158fcfb06938157fd74d984d44cecc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.5","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.82_1598948633601_0.3090241936447826","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.83-renovate-non-major-bcc51c12288032c7e3f4dc61bc2a8d728d89914b":{"name":"@balena/jellyfish-sync","version":"0.0.83-renovate-non-major-bcc51c12288032c7e3f4dc61bc2a8d728d89914b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.83-renovate-non-major-bcc51c12288032c7e3f4dc61bc2a8d728d89914b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c42a30e2574cecfa2aa35c03fd77509a1e741ad8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.83-renovate-non-major-bcc51c12288032c7e3f4dc61bc2a8d728d89914b.tgz","fileCount":27,"integrity":"sha512-JSQSPQRV5EZFMfq80SCkXJHmvY0OBAUTOL7C8uNhtjSwWIrWxlKMmXjoE/Kjb2pUihZjYzjfrlmfuXwtEwOoEg==","signatures":[{"sig":"MEYCIQCxmMMiQixo4kxVKsEGNLRp26sv8cDFDVUoPybYkrMNuQIhAJeEVyr2uL4fgB1BQx9rX5OdtojEnw9/pV2QOnoE0gRz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTj/QCRA9TVsSAnZWagAAaNkQAKQO92KzVbmgc6zTXvM0\nYfKwDcOtHC3SsWayVhluM0IK9n0QpRJN8f2a1wdDAOt5PDB98Y7i0iuQN8H0\nVa6563TEM2HCb8yXMfQWqD7t68eUAhNC0u/Ci2HwQhLtpQmN5AuzGgHbWH9x\nOIRLsw/b2zXoTM7r9fHIJ88kgRX3/o1YKl6HYJhdA4R4F8lvl1p4DJ1TTkFP\nXRk+G6S2aSINES447Yvh4z1E3fPQwF3vBIn2TXiJC1eWYrIku4pEUl7EwPFx\nMfmK/11a5Y11UyXmhJ2m5HbgGT5bcSZU+puxZrFsEdkNMYI3bXztyeRZD3PY\nDg89FDvTnt9xyMGWaYA5PP7uEA5gJcDL7Cb8NIL1987cSRgbu1ukSgyfmmOz\nms5BVFZV24IBddkumtFDD9u0RJSPq4eJc6E/8g+Q2V9allzbDVpNIS9eVt77\nzgb6vwZ1OMB2cBwV7h14SnKXW6X0KonDi2Qxcye00zFOs8RR6Ybdhbt5ALlz\nzR9yf82cwI7jBRYvSqWmLrzoFlovZMzshI1JZwy+ePab7VivzHaVF5+SVYqG\n6maDozrnzVdJ9n5a7zCelkQsz1ej19BGzYwnyk72cyUhS8W4ouI/teVekK4/\nzY75qFFDAL3AhVaUOkOMtuGO7dIa/TuHHr0UXDsmo6yN6VK7n46LCo2SS368\n9hKS\r\n=5Bc+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"bcc51c12288032c7e3f4dc61bc2a8d728d89914b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.83-renovate-non-major-bcc51c12288032c7e3f4dc61bc2a8d728d89914b_1598963663918_0.31884631852405354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.83-renovate-non-major-69696c25491d0c18da8ad949206176e7cf9c84d8":{"name":"@balena/jellyfish-sync","version":"0.0.83-renovate-non-major-69696c25491d0c18da8ad949206176e7cf9c84d8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.83-renovate-non-major-69696c25491d0c18da8ad949206176e7cf9c84d8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5989ca5dd3bf333b7464aff1d30ef0d71d7fd9ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.83-renovate-non-major-69696c25491d0c18da8ad949206176e7cf9c84d8.tgz","fileCount":27,"integrity":"sha512-PhmF2wovHYHKrCWsPtN1yi65EeRN3WTwf0GJVbMfuQSutunc0wzaDC0L7dFMg7T1gqT53XJL/b12h7uZCyWgww==","signatures":[{"sig":"MEUCIH5Dw2ePcorhEB9KAIVIQl6ZNSdJDj/dDRgVwPdClg30AiEApZEsktOqvr9VxinodwwEozvo5akmT8cJHfee7Myd2BI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246852,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTkyyCRA9TVsSAnZWagAAgYQP/0HwLSZCNX+D9wt/CNQE\nBe6ce05xiA8vK1dv3iJXXlNF2jiszir4kJtREZygwnXjx+AsECGpw4B6vHy/\ntSmEMjwL8OB4uCJQ20uN20p9M/+hu9Dwb7qIXNTgq47eHk6oEI3ApWM0KB5M\nbJfP/SzKmdPi/xOME6VU6D0SqAenJl+V+kbQoa0JUwsr8cydjtWig6TOWAhP\nNjIXQgCpH68lNOFYGlOAes5LaAsi2ei+bK5eDPlYNlAN+O6QrtCkbVZH1QXK\nvb32e1svqSJ4tM7vJdkt8FIg67Uwtat5Dch/0EU6Oss+M+b0l7CaDYIOld/p\nWQG5aptBU3q93RFAjMBBAw4KWlP6S112c9+ZXFeobmx0WLzdG5PQEWVdLdyW\nRX0LujFiEKVQlYqjBcRYBSXVpgNycBCuehc/HLMlNbh56FqGpyYRSutDN/Hs\nI7rgnF9N+7suqcWWeUjmnUVxBuwR01iG/08F2/zTpbCspxVFI+hqFk60kr46\nl0YrV9p67ACELui6zHrlODEo1RILFnn+U+BmY7c069ElxWkjp2GEPtMhhMsl\nN862fU8Gd/RiIdfaRzcgfoJTLiemOOxekg2hPqtCwtU7ltDWnTQ0sI0Y2WRd\ncNLDoSOCAb58FWXHMpvLYxSv4MLsW4duTaFtdjO6ltCemN7qYFdPufBZCbcJ\nrF4z\r\n=aFZT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"69696c25491d0c18da8ad949206176e7cf9c84d8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.83-renovate-non-major-69696c25491d0c18da8ad949206176e7cf9c84d8_1598966961943_0.18791672646719682","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.83":{"name":"@balena/jellyfish-sync","version":"0.0.83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.83","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dcc0dd87a34c0fdaa6f82d6bc0a6dc9d5a34a84f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.83.tgz","fileCount":27,"integrity":"sha512-Mia3yakYUiYqBBOa0IEZlKUI241JX9SfO2u4sPgy54wpjUuhwLxHpO+EFZf/dfwFG6U19a0ZEQ0LDEW5iAFx/g==","signatures":[{"sig":"MEUCIQD1+aYjHNlHGSoSZn5QgYtbwodSxXfcd0Cci8674wB0jwIgGUqBN2YbJLsY/6A0y07s7bREZ5SzBLHJkdqxEAKE5oY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTk1UCRA9TVsSAnZWagAA1wcP/iLCnsUBS05HMYO0OJol\nWdqqSfvnVUCJUkBPm8nFLKat7eVIrW89MpaJOL7AQhx9Had9EecWrXULG5FG\n+rRPpyxfSrqY171I/LkmSB8hHtNZjb+447kb9tMHlOkD7uhiZo1N19mhMMcV\n4Fj7qZqLPIxnMOyl4xnkOiORZpA1w0UIpCNhqcJ4LK3cLjMGJDAHdlav+blh\nIjhY32wyQ/LIqq/TzNEKjwNDhgeBSCzpclF/aKkb3AHJwcy0+xosfsXLwJpc\nVa2HfpA0oUoOIaDxF47e6z8cjtWM6BJsxbmNfp1aE7rpJYRs/AiPJaAElwzv\noq8aSg+DVuATVTubFZdGTHw9ve+u9o9N4braJ0j6QKAe9xd+F3MGiZsx/xsI\n1Uaw/HfTGzKCofe8Nj4RhDBXw1BquXE36fWLsXELdKI/FUk0qXhnYwqao2vs\nyoLEyHvDb3ZaaUAmC/tBb5eL5bcsK2+wD8NU95GgZhX8kn/RfX+2mSunyz2o\nniO9BYP+PNlifwo7153Dh/qH6PECi3Ibk2yWJXSYMdSpNJktAMV04EhuBrB1\n3e0APpHaBiUP6eq5GvLQN5L0r4H/tE5TYS+Fj84gWkbfbp+uITXxWzaAH8Bj\nIigA23OztHhnzN2fjjQoQVhq3ExvOs0G2h+/7lP4fjUOnaNo7qv5/Ek2v996\n/Aap\r\n=fNzd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c58dc84c1b02a17b27ef72c44909c72250abcdd0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.83_1598967124183_0.6300803631740453","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-sync-balena-api-plans-4dd0b3e07ac0371646a10528c148886ac0db5556":{"name":"@balena/jellyfish-sync","version":"0.1.0-sync-balena-api-plans-4dd0b3e07ac0371646a10528c148886ac0db5556","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0-sync-balena-api-plans-4dd0b3e07ac0371646a10528c148886ac0db5556","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a39e237207206b66799e2a6f8b1b515b38ee4550","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0-sync-balena-api-plans-4dd0b3e07ac0371646a10528c148886ac0db5556.tgz","fileCount":27,"integrity":"sha512-/1JYi1Ljx6VUAhIUKNreyxF9ooRnF+yKYn6r7E0HQyEP1yLnfaFyeqD4Ki810aZbwyBMQumo8rrg2JrTE/d4Rw==","signatures":[{"sig":"MEUCIQDgRuKEBWMvi21KYn72JaXkskBv4QxojgBiI0e757/tywIgbGfV4oYub0a4elCCjESoP9qCOpRBUZA4V9L/wJOLhTE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTk9mCRA9TVsSAnZWagAAj0MP/ih7XgvaCgE8Whn+Jsmk\nBhirVlhwMInWnV7WvPttQ9PByA8slFAHrH3DtQ0UOJdLLXQzgHrDceJ+x9i3\n93eDRW1GxNxhN51bsbZMgDxQNG8zxNKHn00yZPdFShHrBl0D61mnYjqSOKvx\nBZaYYHtF02mJqcNrBv+zh4lyI6l93Up6BmHVz34mXQmQQJS2Ao1gA6KcpSbr\n41wMU7bkT1qq0moWNjubX0FkcpUV/scZGu0aqyAoFwWRgYpk8WMFECTQtDRv\nexLB6RzKipS+vn3j37Xg8nnE86xMYawcHFAw3UjHpg2FbAM+edmyMtnLTlm4\noBdhC2Q3hh+OuxR8uz3ByPEVeZMTqEvDOwTEYMbsSbiFmVF5kdeWXgDnE4aB\ncmIDHbzBL1vs6tZ81jnj+DrQmWqp69OeT4ULm6qV6zitUv5L9H+eIchwCxe+\nwVBXaFPNxikIkdTWW2gh6ZNdAYPfFxBYOJu5xG259D46gslhtjRjDYH9Jvq/\nYKAQBhC8squ6FIPD7I7/zYYKd1KDI4aMDWl8jXIGuaoogeVjjBimM/qWp7Mk\nyxKC05mErQrlw5VIgpNoXJfm333PZO6/iSQbuPEQfM1KQFyg/qzjvKVKKTXv\nlxLdmnp1tNDnuFy70WmmAgDYDQJ09PlPZeqBcCBFEE1NlELOalD+GI6/CTya\nDxLt\r\n=9G4x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4dd0b3e07ac0371646a10528c148886ac0db5556","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.64","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0-sync-balena-api-plans-4dd0b3e07ac0371646a10528c148886ac0db5556_1598967653739_0.9044934827321642","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.84-renovate-non-major-7e08955918899b043d0c6ff3eb7cfc27e795482e":{"name":"@balena/jellyfish-sync","version":"0.0.84-renovate-non-major-7e08955918899b043d0c6ff3eb7cfc27e795482e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.84-renovate-non-major-7e08955918899b043d0c6ff3eb7cfc27e795482e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0319b0fdc1d4d2d6fb239653b9a8563d63e22f2f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.84-renovate-non-major-7e08955918899b043d0c6ff3eb7cfc27e795482e.tgz","fileCount":27,"integrity":"sha512-RehZxqBJYcdgKfx07HwCGMI7ZpaLc73KF2D9F+Q+MNChPtQmSOCw0gt4Q88LnNDtBgO1YByf0yl5zW0c44KTXg==","signatures":[{"sig":"MEUCIQCMcZYJn5vLTn6MJvQnNSJn3lByeo//jjPv1Z8BrnKtpAIgEZNif6e3kLkYajsm3Wv8I+UmnurMVIj8caXdhoDFxgk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTl3eCRA9TVsSAnZWagAAW0QP/2QM+yM03ZGibAKZzTFS\nfjtX1jYmnNNnm5YPXDPwKHTAwal/Raug7dZfh0dAukDzpztDj3Hi39fmpT5A\nmSHcZ9bTafQZYNHEGaYnzHn2z919DrCUN+JqTFYdlINe7wdGKXmfr3CUHzo1\nQM5t/efkMgSrvjCTUqCI8gAO19JVKX4aajzvpxh2LKTc5S+PVNiWS1AGISxl\n/vgkUuBmgFSuYGgW3LCudLviO0/ol7LtGcakDk+21+hyu6OvfGb2nEuNXQNU\nZ3CrCfl4Z5tdXV+wtrD+vtFCLRDX2+MyVyeK/DdbD3w8u6SmGqoIft+b0OJb\nZYdfklsZXGVGSPRV8w/pN3XMVO5OBJsc3b+XCLBBKP1OxhOzthfPW24LocSF\nZHlkBimbZl1toVNjLR9DZGpFGrgfwJZbLnQKYTpLTJsXCbrnWf4BjMy9Xlsp\nnCuCJpRNCfKSQEPzz/0QfwBsr9YHYr3tviyiEUkTDUjJt+C5T1ymb5+00LIO\nnLOTOM9VD+MDb7WyStAJib1vQjRib1LhY/aIeBwnE1NoNqUXEdXw7AylZqEU\nkV8U2hc4R6OYppSjFL+SsX4PhsYhLn2AiQliyap6AwMHs0pU/5Msqb52/wU/\nd1gEzICrBzVVqzHHPTKxIR9pYWZSVgra+qj8gdKWapyNScPCKG/rS0EaZBtJ\ndiKu\r\n=Sup3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7e08955918899b043d0c6ff3eb7cfc27e795482e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.65","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.84-renovate-non-major-7e08955918899b043d0c6ff3eb7cfc27e795482e_1598971358175_0.26863635892670445","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.84":{"name":"@balena/jellyfish-sync","version":"0.0.84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0967a8892ec490a825832327a8f855189aa40bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.84.tgz","fileCount":27,"integrity":"sha512-uIh2Ui8sCEQdocGde9o8yvFUs5/Atbv0N0kCd61NaPvzKlPVdvT9r2E0kofe/Fi6rVfVJFyj2kibXo7sR5QM8Q==","signatures":[{"sig":"MEYCIQDO3MXDBeIVQlpdkhePfHorVI8PKi4R5DdezLucSTALdwIhAMC4viwCC65XJ/Db1MK2m98KzWmbZalPXk9iSgeOCuk+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTl6bCRA9TVsSAnZWagAAo8QP/2MrRZCNobDYC5o1Iy9S\nkf7pdbPKJ4dUT0RbL4LygKDRbYnx71RXFrkjuTEi/C32PGniSV+7ez8jbQR1\nB6Vd916v4VgjYhYi+KC97w5OcDY3mAJeoxg6/QPwdsWGIDaGtPMx0m1ht1zT\n2d4nUM1hwM/CcGLvkn02B05Z9Tuj9iqlR+B+5AC/WjsftwJdgADX1W0CWlf3\neZ6iHFnOrvqv067dooAMAt+FPRvbEuxJdjw/9tNYpBWE0gHWtkv5yI/VOumX\n0SSs/PMF6vK0e3s/njBoZOxy/Dxp41wa+PqpNUKYqB6bclG8GW4Ak9qIWa3g\nI7yUQlAuY/JkM0nudN/Qa9Lz+YymHE+PLXX0NenZZUelnKgG1jLX5I0F4VC7\na2LjW7nyUPNdJAm3s9HPr10K7YlDW17TrHRe0QJlp6rpFkLHYhjqCOdtmGWd\ndf9PIcKStNC+p5z8/oDcZbGW4pjZbT0abKm5TNEsnb49jPNXU5IZR+xbHkbu\nyNgZsQu5kQ+BRFCv7A6Ed61dUB612dNJwhIGcaRhyILcHArcpXYClVnKuH85\nUwFQ5Yog6G7PQ2St38w7VWQoDwbRaraxzTlJ5jDLpXrRTX/u85OZhXPhj5PF\nJZZ8q6JSypQ9SExrNmRYiKHQK5LUqVPhg9DOZ2Ju035+49wLm2IlWTIFaya1\nxCEe\r\n=Wyu8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"d2b5dee38324ddc46f9f707a974350ea723e71f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.65","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.84_1598971547071_0.6357684294277135","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-sync-balena-api-plans-b7eeec6fad911d6fa672b8315d85a876a16a8e8f":{"name":"@balena/jellyfish-sync","version":"0.1.0-sync-balena-api-plans-b7eeec6fad911d6fa672b8315d85a876a16a8e8f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0-sync-balena-api-plans-b7eeec6fad911d6fa672b8315d85a876a16a8e8f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"622412740646c9eb8dede36c0f7cc3e4dfdb8de8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0-sync-balena-api-plans-b7eeec6fad911d6fa672b8315d85a876a16a8e8f.tgz","fileCount":27,"integrity":"sha512-JNZqLR+C6L/skfluwKoYdnJWjTSnc80gbdc0poQ0i8ytfq5OUBoMHhwEFHOAbrdO1nyZ8+0f13bUEBLUeLHamA==","signatures":[{"sig":"MEQCIBCrx2bc3HSv/dkVFB9yLyyStl4M/oYyuXBznudKRFLNAiA0xbOlgqUyBlEeylgx8KzBDhfdGahxKQLuR3iRTWBGqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":249816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTmNACRA9TVsSAnZWagAAA4gP/jdlNj9YnrQl4HWw4rlO\ntcEYCnwLnUCPdYSDizyD2aw7Rc0udmaV8WZxMUW8C3y6O/p4PfBTZXk/D6mY\nTg9v9F0FGl8ULeD/IgRYWppnytxnt6fg17DIy7aXvRbQ46yxV9sFRLeFrVC+\n6+e864EftsRl/wsXULHn455t2/Yi96QyttQquvYuTG2Kg3z00djGInbrdXnI\nGc06lYIsAe54WjqM7/9GL9ypBxKfvzqtV8SpP7zaFzP5JG1TDnZ1S/Je9fpm\nQHJPdv6MCUxUfypUEt0hzBdz73hvf9YEJRGYBhOCrkXI5SqeI9yfXY5Naeoc\n6XTSXX2e/hEpMcZYgEA2/6JSnbSIlvnDDrbxWr9rJuia5S1Lr/p9ODK4N6rc\nclN5Z6TPA69RWFh2kc9CUvehe97RAW5c/VYKVlRl99m4C+5cqpK8yvuXxcjD\nUNMg4qThZXve1gS5uyB9iiSGXLcIaTsRzFh7hRXOkibslIlvzcGt9r6aLOcS\nJXdgSHg49yVyWoBknX9UX/BETanxir6D9ejZpgRPXVdVXzOdTyFey4NejXXd\nSe2m2qtA2ELdORtyuM4ODmyggMshyebw/h0aSOGCSl0Hc+euHFZwVNS7okXB\nimUkVDneDMt5403mWFQo9Z219AG7PLmynNqdPrJAa+M7vXLkaZW4KppCiAhA\nW4DK\r\n=LL09\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b7eeec6fad911d6fa672b8315d85a876a16a8e8f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.65","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0-sync-balena-api-plans-b7eeec6fad911d6fa672b8315d85a876a16a8e8f_1598972736264_0.8441318921092382","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.85-renovate-non-major-e0905f6680c64e567adda6b197915c4f3882e768":{"name":"@balena/jellyfish-sync","version":"0.0.85-renovate-non-major-e0905f6680c64e567adda6b197915c4f3882e768","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.85-renovate-non-major-e0905f6680c64e567adda6b197915c4f3882e768","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"50af393878b5370d74271df508f8413b8982fade","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.85-renovate-non-major-e0905f6680c64e567adda6b197915c4f3882e768.tgz","fileCount":27,"integrity":"sha512-pIYFB2NrPM57wh79OTY39JZESWNgUy1KP+hopTIhvf/vj0GWJJphQHtbbPZG+uh9fr3lOw9PD8BxU1hs0v3xBQ==","signatures":[{"sig":"MEYCIQCwUe9q6MMOxiLLFxHFiaECW0eR0Pxk8fIjZbFoCzfMVwIhAOl7Y3rCYf5H+00IBd4Xp7WDuVuUf6bKPFSs+98jc+9M","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTrX3CRA9TVsSAnZWagAA7D0QAImXDze7HuiJHRVW9rOb\nqfF5BmngoaBFmYzkZdejgIDOHjJxtSgFdvoQ0kSzIHqBh2Yt4P44bK5x96GY\nAl5hk6jdTyfCRNGiMYJcIZPAxsqm7MtbB32w9CeVU/8yzId7TS0ZVLXCF/wN\n++eBT57x9Cx7XLNIWA1+t2y7XnSVJClUoIzIXNXwhdbDEpm5IsZJ9uqxwm1/\nd/r1MR9T3hXkmFVy6O1tB/BqhnF2mG0iiEDMWQPs8RYtigrmocV5DQfqVZF+\nDjbR8s4gyJ3sayQUlPK9C7gLVyrn7lipZ7+ER/D6pPryJvBzi7wnQPO2RK4Z\n/jbLVI2MX6/cvhgA2oYuhjwRWT6/jBrH8P5KwzVk7W/qUYyOslynCG3AFjdM\n4VP1HxH1YVnqyS7iS9UtDEsQGlfA9ok6eMkLWXFdC+mcwyktOb60JZZLgmKu\nfkzN/bhLOvFWBldLHvSrO2QBEiJSXjfu2i3RSA2FmSmIzglE8XUL8+XMDhWn\nPs9Jtx9rOIfcCnlxlNlfRqzNj2r26IQs1QLKsjkUWhsxINbkpu91lB2iQQ+2\nDdlVkqE8+Rg7z0PmZedflh6/FCc7ORsjihfLgYBcV6MbBKYYXSIydWhEtfzY\n+lzm7WgTDRcOeL0b5lbvHrnySMsEReKiTrSrTHmJ87y2RgKMKfyt2plyEWiY\nlg+Y\r\n=+QC3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e0905f6680c64e567adda6b197915c4f3882e768","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.66","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.85-renovate-non-major-e0905f6680c64e567adda6b197915c4f3882e768_1598993908711_0.4128542439795708","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.85":{"name":"@balena/jellyfish-sync","version":"0.0.85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e0d32c0afd42093fd3ec3603481e7a737cb8cea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.85.tgz","fileCount":27,"integrity":"sha512-hzI3oV2DiwXpFb/bT/kwk3YhAluXrMelLA0htirLVFtF49FybL6jJnxbExb+HS/9LByWcuCvOKOPmW5XrgxDEA==","signatures":[{"sig":"MEUCIAIcUtx6TTY+FSErbBnB7uwYmcaNkg8mgDkbSoMvyXiAAiEA2Cep+wp+izJ3PLHcbd54XwfyEpBTY51ET4fl5C/Gxng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":246968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTra+CRA9TVsSAnZWagAA/sYP/A4WB0/hs6gjFTJJLHBY\nBTO2IwmJQu+4if0ZYCVBtvYikE8qaU9JYuieokOqh0zM/T+Velc2rK7RgR8d\nmTiJCY8EaS9RMliqZNrzr2ZgFUcazmfTFqnd/tqodo7DTEdMUYI+FJ3Sym0a\nJXdQWwI7DzugQh1k5vGQP1AnwDDr0gL8dRLyhUuUHzRu69/ezEimVPwCLHM5\nIzHcKLMAxcUDDp01ivbmv7LGvJsiIJKyUjq1R8dXH0KdrDONF7dtRB2JcU86\nb1CdXY/7wIFzEgYQctHdji9dSI5vBA7CL2vYS1vZDwZoLjkGivyDNc1ZXhT6\n5b0GijIIXTPRKjX9ZOlQRbQhauo0kMILf1fW+3Qx1l0r34RlfwFzHkbOkJ7L\nzvUwIfXIRkR3LWCGwPwapmvDEEfvZncBGyWpBI3UwQIWMxChULehkssid1fy\npEEiEhWJpTMrVYxGPcCBgtQuCPQPGVlu57YImFsrPKt1La/JOn4aDu4mHdqV\nHuXTySqjd4NmhS7umGqi7LW7P8U8iPC1XuJAGbgw6AlSNvnvfxrQy6KAAZDO\nK/168iIAw9kTgKsxO9vF3TMFRcdfQ5z44wt1LGHfJJcxG6tP+aC9Nmc6ntzr\nHzAmPPm0iZIJeGFeSKqpS4NHz+nfmTl03r8y/9cyQdMG6FOzDgqUBSZex623\nNXu2\r\n=Bi6K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1187f5d46a6c5785fb45474797820cac26e149f1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.66","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.85_1598994107735_0.5478198459441821","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.86-renovate-non-major-b4255fc9724c505e9e17cbbcbf301f24d706299e":{"name":"@balena/jellyfish-sync","version":"0.0.86-renovate-non-major-b4255fc9724c505e9e17cbbcbf301f24d706299e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.86-renovate-non-major-b4255fc9724c505e9e17cbbcbf301f24d706299e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c4b4f1d4ca22834fd387d12ad24a1dca00edb4a3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.86-renovate-non-major-b4255fc9724c505e9e17cbbcbf301f24d706299e.tgz","fileCount":27,"integrity":"sha512-VDFy4JPnrO93gDcketxTs9LWYtFPWB56D46RheFqRG5ufCd61tskMqeDMZ6pcikvM86psGWFuuHSjG8JBKj6dA==","signatures":[{"sig":"MEQCIGN0X15EyO0BXP7ViznHf3u83ZlxN3zN6mIjCShEVqUZAiBBk8efmyHiVhcigVEVbnDw5Y2qBU7OUubmAwjpZTKXKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTsreCRA9TVsSAnZWagAAPbQP+QBRSBYauf39yk/wclD9\njjq29zaZjevtTmmid8ddgEINPtehbEmhLI/Vo3sL+lETsEgqoPeUNnP0oOmO\nMwBLRgfMxyp67SE9ERBxZJfLte5PirF87jQ4s5WLdTItugCXxAOsv4JXMx7T\neboGv7KP3Ov/69JpnfTW+nOhS7ROcke761q/LZBEkOEb3XHZsxi6DMbTugin\nGycLEE99z8Pq2ptBBsoDrOZXiwvZtxKP2mtn6BD0BgVHE5dNvpl5q5I98rPJ\nE2PegzDqeXFNJN3sVIGT61fu7wt99Gnih+5JAfG9xqyT65C5c4e4Fz5GoFh5\n6HdbaSR6cRC7lJAJA3Ftc+69AYu4t6gs+UWcSdHJvuzK+erd/3q71bIG0yQP\n5fShrKVA5nNF4e4RX4OciXy7BrNp1ZNEAdyTV9WcLxJzqp/o0by7UG8Xd83c\nf97VHucRvpk0QS4OJ3iRotNpfbBaG+wo0hVfrFyB41rEyfMEywupucpTmcpa\nVNsq68qySBHukx7AaZceUgJNmtsMJFb3b4yfNK2GNahBoyRDyJItVQU8UDul\nVJQGKjMmtks1hRfIjj/v9y8SJewNJriY14RrVVf1vWTjpWP+esCxkfktD8sT\n+j7Y/EQ78SbHY6eJjQ2SLX9xdSQxe/1jbptcFYCJSRlnEp0gJ1aP2UDhcl83\nLoE0\r\n=Hc1h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b4255fc9724c505e9e17cbbcbf301f24d706299e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.66","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.86-renovate-non-major-b4255fc9724c505e9e17cbbcbf301f24d706299e_1598999261871_0.3461908528051616","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.86":{"name":"@balena/jellyfish-sync","version":"0.0.86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.86","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3cdb9568691b50a1636b23ed6439f8c29fc56a6f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.86.tgz","fileCount":27,"integrity":"sha512-iplYF3eTxm2Ve1DiELkt7acRCBXCOOYO8jSU5v6gsUGLvh3gIUNZtK+DIoEyu0cgUdEpgE6MMMaza+jbvMItAg==","signatures":[{"sig":"MEUCIHMd1Bth5WKi+R5maW4c6uJ8HtnVpQKct1HhgEB4DBQfAiEAzZqc6R99OAPDhe2nPGsSuJSbd26N0W21JpyDPYweUeQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTsuXCRA9TVsSAnZWagAATNgP/2vg+UpMqjnaeBqfgqsV\nV0pELmgykJA3qgRLpfqkq2PQFkDrRbKmwRZddiUpoGk+sZtAWJfv8hCCeYzl\nS4tHvWYuJgycXjMJY+ZSuheuwC+h6ax3SxAVisWrdI+LU/rHflt4WYS0Qppu\nFUlpeABBGYkfsjgTyaPv1DYzO1si1zCFydfXw4mYueiEzcq4K/zQAg6S1f5H\nd5EYb6/NjrBQPhFdHuIV5pICBDTNNQrvk7MAE1+5ncbrylqPByvOPp0KYo5Q\nABpFrGDM1FnbxNRjGNhZ5x3vuOaHKGZjb8UsiZM/EQTRBeiiyzYjxitT3H3W\nqSECht4n+g21WaOWOxgMl4zwk0a68ctXzzftBNkeitXJjUPmMJHEtsNiXRes\nqKInIgKf8oHPiTawNtOlKldwpGqNS4fPH6kWe4XGZG8qEvECSCpTVgKMf4JJ\n9K5WR3jhbex4jhfjS3G6N9ZLpxVRgZwaKEanppgLi8SmPnqWkh6h4Vp7Jdoe\naQgCTTra3ygo8uB72etCOkzxL/r//61OrRy/EvWPZZl6Ftef8M49I/gPzuzk\n6ANtu3rhGqkpIVY3IviJOdQwt90J5HmJlTcXrtCP8tH+qv2JuDUiOjvhoPNM\n+uPNOS4gMz0wDbn1m4xlCoLY9Ow5aVyX3u/mYRN48yCD7eDDCQv+1z9z2NHA\nrzfg\r\n=SiR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"9edb6b69a7f1ec79a6692f62e39974294c9e45ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.66","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.86_1598999446771_0.40068796675291973","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.87-renovate-non-major-f53bd91235820bf352bff4ae6b7e1c346e6e4c8c":{"name":"@balena/jellyfish-sync","version":"0.0.87-renovate-non-major-f53bd91235820bf352bff4ae6b7e1c346e6e4c8c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.87-renovate-non-major-f53bd91235820bf352bff4ae6b7e1c346e6e4c8c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e94b9b74461601e6637efee33f5019ea47f71baa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.87-renovate-non-major-f53bd91235820bf352bff4ae6b7e1c346e6e4c8c.tgz","fileCount":27,"integrity":"sha512-ISviMaZy0okFRCto/i2VUn46sPzbvFqW+xPRe+nALparHDqmHdGPKnneo3kJZ/rsI9G3p2t77gNVulIEdh5RjA==","signatures":[{"sig":"MEQCIG4aR20/6IFQbz1MeUopPHpOE7Nxkn1evTS8H7EMX3E6AiB0+dEWmeSz85RQpXpXKWBP5qY1vBMFXRfOANDMRsISPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTtjECRA9TVsSAnZWagAA2g8P/Ap0Jx9wr5IpTwWZe65u\nub8PqfYZOmQK8qcNmi5c8nfZmEiwMbYTfOsHKloJ5vzpk9u2YEjfUiJhs2pN\nmsNv+Cuit/tpz9Pyz87SNJrksPYbdLwA4Mula873xPdT0YoNRfo/1X+ptSfm\nnApFJm2vEZBHoFOKS5uY+q3Fo3ZrB1uJlUWBPW6FfUtH3FfYI9RAZSLJHBB1\nmm/4xUGwKlWD7/aYgDfhqNXWVFfXQ2yE2aTnd3hqlcUFZY+pJdEpIgcGIWEg\niHAbvPSEZhJB8SL+KZwRZ1yr/KuJHtyFjwo0Le4PJefoMc9nMqaHMEKN8wX0\nB8J/NZcmhg2MJb2uNJumP2tdXmoVBX9PaK/DBpmD7Q9EoIC8i5xvoulwErg6\nWazbFAqtjfJGp8wJPV63h8+s9d7RaN+3T847jQUSCxC5Fo3lYr6q41d087Ot\npsyVbP08VHt3C3jrUzlkX7+ZAVUWmcgZClUpIQW18udAPnVeVPLucCSW7qhq\n9IT0wha0ZfrBNNVOp+rqRnf6oINsM1xpWEav0WIG1rr6CHoyWTHcRA7vefqH\nmxw9VBupMxPzU9cCzKMusgrydOAxrGNjCUk60KNvhvFnTDo7JnuVAXoiqSn9\nBTsdU+3Ra+3lJHvBL8cz0SBkXwdxD0P3PTO/kHa0I9RYNG3Zh7qXAvlanefw\ndWvu\r\n=7Bc3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"f53bd91235820bf352bff4ae6b7e1c346e6e4c8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.66","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.87-renovate-non-major-f53bd91235820bf352bff4ae6b7e1c346e6e4c8c_1599002819773_0.4874041947586918","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.87":{"name":"@balena/jellyfish-sync","version":"0.0.87","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.87","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"630522faf015c98c7e68d740ede0aec0618dbf23","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.87.tgz","fileCount":27,"integrity":"sha512-aJRcVSxujZ7PJlWD5/MgVD+e8Jsa9MSD/efMnTvMZtWVOzG+s/v+hDXCCyi17EoCwMtc5hNPU+MX9BnE7jTjDg==","signatures":[{"sig":"MEYCIQCpBwh3U2Ia1CyUuZUq7Yvys7ww2l3FQXLiv6qpVDQusgIhAK/xjeb9j47Fa8e3iJvqs+RAeg1uXhNfHwBllfj8789r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTtlwCRA9TVsSAnZWagAA0HoQAICT7wtUUxdbYdSr9T+N\nbmY01MnTb5UGMy44gzdc9WckXwC1SuYvn8lEvTwg8WYlaAas7W4GcaVJwd3+\nJHu1Tp4RLaAtEP0gEZCyHZhmPyHsiUKJ6aBYkqxC4ejQPB+/bWMiNKpj4g3G\nw3+4GEH66GYtGNWUOUrdJzs6N6hTy3d1EYCffrWYvU9eUO1HXw7Sq2doT9AJ\nFxfc/5b4/7VZj6b1ITFQXbYaCmwqou52eEX6EBXGYQhrA3zFonXXi6F+7SUz\nMBewLtGEwq8C98jV04pTTEuKFnSHENoutsfX9NxNiOiddyFLupeYq21aLqhD\nuFcyxoWsN6G9jog9/ZvFff1O5kJ21OyKIV4c7C6hm8XSS2tBeVbGhzHr25QN\nnvDJRkWf8ju7HlEVpL6B6xosaOSi+TMrneoMT9eSCzw3EsNtGgOMu8wU36ze\ndvUCJ/aPEXFYqELdiLd1Rafg1WdjFxnB2X/6Nh/eTuIUc7471SkSQcdvDPYc\nQeBrdB6kg2IOR+KPItprPimdnH10+43c38jUZw+/SzZxxbE7sZ/mNKSsDQIt\n8qlJZWet0ki45EtC9spdzZJWY9kthsF4og/oc/4Jv6GIbTQdYQFJpqNBNgtb\ntGUbAfJokgsSCa9qAH8OFBRgLZ4ngFt9gncH1sBebBxwFc+yPMhA/QEUFwDt\nmAZA\r\n=aHKn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c2df39a88653018259ff84b8e83280954026731c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.66","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.87_1599002991928_0.42524758784658045","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.88-renovate-non-major-324073ebb3df0572e3ce3d54b5b7837c0cefdd11":{"name":"@balena/jellyfish-sync","version":"0.0.88-renovate-non-major-324073ebb3df0572e3ce3d54b5b7837c0cefdd11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.88-renovate-non-major-324073ebb3df0572e3ce3d54b5b7837c0cefdd11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"906febc05c6c642dfb760efd3864d2a5aae6b8c2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.88-renovate-non-major-324073ebb3df0572e3ce3d54b5b7837c0cefdd11.tgz","fileCount":27,"integrity":"sha512-PHSBGmOw0Z8zqakz9pkF4mTaezZ4qELVJuGnyy8VfqnDcZ1hLH4QTqL4ollwiUkId2kfxKjrugv7/xpiSzyTuA==","signatures":[{"sig":"MEUCICIVMbUR1z9cEhY7djRlwVXjOqvKemP76/MUSmux+LWjAiEA2uVl1tgJmk078hLdZaUVXZiOfCFSXX03VNnsIQWX1Sg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTuOyCRA9TVsSAnZWagAA0CkQAJ0GcW3F0jLHiXRrwUXo\nBOGcJi58aJjA+PbK6Yng9y/0HzI2JuvoYXEAzVoTCgMEfh/o/p/h46wQ4lLC\nidCQqoW5McIu1th/rI6eJCbGAJ982MxXcxEmTCQpmNcjmN7C9P3CeLE2XqYr\nDSJ1TR3SLeYht/WD21IHgyx7MqSmEDmOk29WejqO+IO751Xk/JjqUpirJDFh\n0XTSElbA/Az0n5UTjyji2tn5M6JPhLS4xSFgD6spyQwy3Pa47rBZ+Mfp2ZI2\n7No1AhSTfcRpHyO5EoZd5dmV/fkwXS8Ukmn9CTDSotHjOXU5QKwndPX7JHn9\n8N+9oqbETTkMvJO87okmo8sRJVpdNGRtGTcvQB8NC7JOEoVx1VS1DFhOnxyK\ntRxXa867E0hKxjkXNZNzh8WLdICw2vOMLoiy0ms9bNz/+Oe5qWDIVhzGuAub\n9qLcaq1YrAnte26vHOdOIaztw/d7SGZX6dF/4xDzLA4xz81BAtdRdORtzx0M\nY/vTA4UNtBuLoqJgeUCO6PpxdKQPXsssONiOV3WLIYbmiDsddLwSUDO+qIty\neEOfWKg2+qM12osE/IS1PyoVs2JZuBDKAJD751vVsHbTn3Q9TknYDDBDvJ8k\nuAZMGYycFN2Bi/6A7bnLjA9v19UZx7FJ2xKmIm/4gc4EI9jkXgWhpmIfXfu1\nBwea\r\n=Ed7u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"324073ebb3df0572e3ce3d54b5b7837c0cefdd11","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.67","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.88-renovate-non-major-324073ebb3df0572e3ce3d54b5b7837c0cefdd11_1599005617917_0.9494367578414153","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.88":{"name":"@balena/jellyfish-sync","version":"0.0.88","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.88","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1ceb7649225dfd4e1fccbcb3fddb9915a45c17b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.88.tgz","fileCount":27,"integrity":"sha512-a00BTBb8wZ35mysEYJNekGOMxVMGlUpCisSaIWYGwVAxg14eu3NfSxGjjJqcOZS0eI7NXlufZ8zmSJUJTxN8gA==","signatures":[{"sig":"MEUCIE9opUrXMCdBQ9tcfnzRp6WtXdDBQvirO2srw10KVX6/AiEAzrEih4V18+8zjNOOMUUASwpLjp5aVPfkzp0ve4CENmI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTuRPCRA9TVsSAnZWagAADUIP/Aq4UiclY+3MPl+p/k7x\nfKG/UjoMsdIntcl7QJdcLMEUzmKTcO/Wd5kC7WYkAUgrnb3yiw0XRIhKBJKF\nqopPfhSDzDDdJC8v3RV6LopPZaYb0XbB+xLc77C1kGR5ZEPa1ZtKdjEFvFe4\nbURKj9BRuHQtRXndasmLBjDsBeEksV7p8Vko3VW6eOfgL3p+CHLkPr1dRwXN\nJUimtxMwqAgc8iUWh6yk0AIbzGn86N4VyMifYFSQ7zn1FVrJEBnK2zoVBzGY\nkf4mKCpM7tp9JvB3KYekCE2epRtAMAFTXz/ZlErk7OJwxd20s79Q4oBUR/+x\nqkW7gF4KUmrE8LVXrcpO2pze+QSFkw8QNjvZL4z8cOHXCVke3e95nRXAlt8v\nZEzKZfV9SE+42nfLQKLRHUpiNrDj9dza0RNljnU/xJbu+Z4B135nhF1ch1iF\nr4JJyigja0VXqCv4UGuoIa0v0HA/KWZPRVhX12BO2QvHV5WR7gbnxZRB5DYv\nTziJJNkxVglios4W9G+Fsnyis+FioUDAlzi3oBAls93H55jiJiyI8vjcQsTK\nJ8SppRGsLuoj90Grrqtw+0FfWUV62lsztLw0Jc8U8uSgiVSQ92Ijz7ZCSyBg\nlslJ59jDhLnKlFGsokDlArfB/6+BXGOO/3+spZFA5nqyv3RiXUULoWcw4lyR\n882a\r\n=cZNg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"eceadfaf91d6be0dc9becc8cddaa1d3811cf744a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.67","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.88_1599005775367_0.6234066702392018","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.89-renovate-non-major-ec2da79c28c7229a1dde94eb025f97dfd767028c":{"name":"@balena/jellyfish-sync","version":"0.0.89-renovate-non-major-ec2da79c28c7229a1dde94eb025f97dfd767028c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.89-renovate-non-major-ec2da79c28c7229a1dde94eb025f97dfd767028c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ad66a9da3d8ee9df68f87802dc09dc4e055cf068","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.89-renovate-non-major-ec2da79c28c7229a1dde94eb025f97dfd767028c.tgz","fileCount":27,"integrity":"sha512-G+y8k4DIcFlmUlJJYvOl3JgXT3bMJzViNU9dYGGFsZhi8xpjEkUJfeGVxbrTnfX1z0/DYbdsEavpJKPVJihdEw==","signatures":[{"sig":"MEQCIH9eA3uKwryqmbH23iPyqwgkukwB9JBxYE0U2GXZGgVrAiBOhekONxZkzY7hR4U3y+NAlaTM3JcYOypJqMmIhodw8A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247414,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTyyXCRA9TVsSAnZWagAAC4AP/1A/Eg1mUgLw6d+GAWVK\n6GATsojq5kp3fWJMTOTUaKbL9V8MEfm+ce5Ov641D9W4TT3+2KbCf/FlevuP\nSfEOAJKue+HWEx1x8MPO3QfPWrgkjJFEYWyCJoFGpTv0L0sR6vVWUqlRQU2W\n1HJYK3IooUTMWWaXNUrxIPwGO/0gNq2hLg1BilPLgO7DuR92ascUbynA5DRW\nYGtc8LScfAcbuI9aTYSHNzcPcNqQTWrNXbav8Yiy2muHAAhk4BUc6nHx+Uch\nWsACwHNk7p+c0YDQ6UkZfX7pyJHn6+KAQL2CRaF96Jt8IBGnW/LEX0XHprNU\noFj55zyZ+/vPXdyRMw+OoJW2bCkuewPZ7fO+Of5wseN9uOfRvxsQlbtfgfOW\npkm/Q7kO4lhRLa8lrgsN3XmZG25YFs0fxo7LeAUjAml3qfgoTmn9Ik25xDLT\nKYr06INVXgK7/ntjVT5M2NNq43pQyf/ai+491IWgl4RYMyJgpCbnKD1vHpu4\n7LwhB2kIqWk4oUN8QJTyeJA6VABrTrLC7qRh00PJ4iN5xUZOA04Wks0B+pEp\n1wKOgI/9SZI8wdStjly/1QbTf0QPLNSodREAd9qUDoV8Z2MFpcAsDnhFW27s\nfyAmCYc81ZyI+pMI6WGHqw5zkybieIgyAVtm76PA/eLV8y8DGpZf3PGeBNUV\ncGkV\r\n=1igL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ec2da79c28c7229a1dde94eb025f97dfd767028c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.68","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.89-renovate-non-major-ec2da79c28c7229a1dde94eb025f97dfd767028c_1599024278943_0.9117506956278971","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.89":{"name":"@balena/jellyfish-sync","version":"0.0.89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"62738ffdbc1a67d01871b5d99042e74613361633","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.89.tgz","fileCount":27,"integrity":"sha512-8Pxj2at92dPIs26/XCkoOZepW0n/FtG9r5FUBBUBuy+BH5ME+q9dPpaszADftASP8T1/ui/+3nY+3OsBojh2iw==","signatures":[{"sig":"MEUCIGBNXsX0TEzwnGgKQP/O5EZgHbPf+ScDSV6QhchF5o1YAiEAriArJ2nNMbDgVAEVSOqHAGkJiMsPdqdqHqTsPsHcIVk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT1tuCRA9TVsSAnZWagAAzeYP/1nBYmzCqmgxphB9KZHd\nJbMpvhQtuLDMHqtX6bTDLKYV9BULA+qQ0AUw7ccqkAwxlK/hkDVNPpfBerGo\nM61h7eXareXoGZrvMb/e1oE7ZOschmyGeDwX5Wtnp7pBCFutTQ2nS2tW/rVc\nJjIY0HD3aLvXpUOUvj2L0PaPdAzNDpwRgmwWaOw40xHNbt2aQHVI+hMn7KTp\nliRGkppFu6vM7A3GsmpDx9VWbK5pX1CsMIKrnNLHPFXrCCwCwRGjb3FZyi6D\nxJL/i46A5JPn8klB/PIJfy4uLqsIrIAeKvHXKtLbh+jCkPbKgtmS2QvxFGAe\nJiauLYhlYwmYpdzAuSR8c8NQQq8vH+WVIcSbcwGQPHLPILwDaJOessI4w/i6\nSlq0m8gNMSf/nGTqdnG8TQPvBC89+1tguMZ8q7tP5lX2ss18qusZjeueNr1A\nsUytBFy5QTo+F4N6Hf7LhpiZ1fwlV2sJdKJjRZDVeJrljL+USqorFVwtl7bL\nhPXXKynIaF4qttOc8FUVzQAntxQaJFEbd4YWWRZDkuipNn0iDFUX5/gt/CjF\n5HY3WreQ2jPUPolG14SaI2HzySKWVuSh7pN3sgRx9EtaGyhMUsdDGHo2+1Gk\nWmbJi45/2HxwEKtZfgfirGNv1V8L4wsnM1YSquKM1r8ooS6LsfAlCazFrXVh\n+POo\r\n=opl1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c829da820b9037ec3575c5b3045442f27067f11b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.68","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.89_1599036269663_0.9048896840418637","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.90-renovate-non-major-f3e27bd6256c0643515e0112da1231e255805deb":{"name":"@balena/jellyfish-sync","version":"0.0.90-renovate-non-major-f3e27bd6256c0643515e0112da1231e255805deb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.90-renovate-non-major-f3e27bd6256c0643515e0112da1231e255805deb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4fe6662768907e1395a20ce42e7f1c03cf917b37","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.90-renovate-non-major-f3e27bd6256c0643515e0112da1231e255805deb.tgz","fileCount":27,"integrity":"sha512-29zunecsBNMfLfUdL5skBlrjk6tzGWCLbD4KuwoUsvfGPdmbywntS2kuY+3IsuaUfBXL0M9oDPjqVr6Wuv8v4g==","signatures":[{"sig":"MEQCIE9B0SD37xA2KwefwZKJHz8Gt/15X3BzQrg7Ajz4w35TAiASWdDNKAgwuVYIkd5xX6RvEqlraSF0vysarEE4xcM9aA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT2fYCRA9TVsSAnZWagAA66AP/jzHi63QJ/YD13SYeh4+\nqcvdyiHZoyQifPRv5ZGHelR9JPP1kNSXBiRfUcONO6dz9IrTWyR9JtNAc24Z\nh5SFVOxLnVOentT1GO+I54fT7wx2oCpDOohpSztWWGyzZcBDf1q7OqF/gxwo\nsA6xTsimCpoUdVtIvoThWM3fQPzeOYiDgDkRstROOBgtIdS6xN16Uad0WjAB\nPyBB8TB11yEdJrLen2B76pwydTftnnnAp8m2Rf6eeWwM5BHIKsutQ8jKd0yz\nS6XWizrPQoOgmR8ZXYdCSs6IefMRSJ9WxpcMEt8nFBwksQMIDKmYkAdk9gWX\n6CNs2X8Aai2fFovwjmm9A8wj0hS3M3vGytqUy6w42L/GGILDWUV1Q19jW58x\njEEYFyK4qX2FnHx3rgsVrzLHKuXYe4dkfWs9ybdSPeWF91D9RdK0GJADSvq8\n2nYdGeXAZ/nhFY+fCf09WpkKGHtV68/qh2UQ043u8bBx+e+7yb2yMFsce8FE\nzI4XSQdeH8xGSt/HxgQE/hyK+wLlcQoLne99db+1lFBytKjYlkNM3/okDWq9\n6FQdJ3cBKo/sQVdun4Za5oMWNaoH8UiCT6SOps2KHQzgy7RR/hP/JI21gGxr\nu2HHO1S1EKqv+FDrtVsp1rlGnX0EIvOGFXnRKRk4g0BkXVroOV0RNGHV+RNi\nVIGA\r\n=JrMD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"f3e27bd6256c0643515e0112da1231e255805deb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.0","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.68","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.90-renovate-non-major-f3e27bd6256c0643515e0112da1231e255805deb_1599039448070_0.24354099252710903","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-sync-balena-api-plans-13473ff705b17ca6d50f28915a78f9b0e8e51b21":{"name":"@balena/jellyfish-sync","version":"0.1.0-sync-balena-api-plans-13473ff705b17ca6d50f28915a78f9b0e8e51b21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0-sync-balena-api-plans-13473ff705b17ca6d50f28915a78f9b0e8e51b21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b75a49780eba0596a3976724e35710c6ca03ae2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0-sync-balena-api-plans-13473ff705b17ca6d50f28915a78f9b0e8e51b21.tgz","fileCount":27,"integrity":"sha512-N99GNLqxMpBpx9O2SaxymGM89sxQvTDiTjj2+iyYro1gmKKhzs0ZSq7OGtgDwY1ZJjIK4Z6joxs6FNnYoTb/NQ==","signatures":[{"sig":"MEYCIQCKKaen4G3D0rfwWOeVBB67lsRUu+fKpvLNo68TNcHFJwIhAI722NSrJ64eLhjAkqwUyt/NZKuOa1j5aZf2en6rfOG+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT6h2CRA9TVsSAnZWagAANl0P/Ag0YZ40Vy+vL4w3hpIU\nIeT7/jf2MXKyO+34jw2i7tBRmpn+Y/vWNuLaScSpGYq5mCLqeAsDz958YD/l\nDW1VkE6dGzt1fGSY6OtuXf85rcdGqtjmiego52ZVtC64mV6fdln/wqqJzhLo\nVRrBlZc5yEGBpwyRQj4aOSk6v1XMpoG0i1bwMBDUM6+EjYWvUU5YDqiBlji7\nIXGnjZFj7krxAS5Md2mafB7boP0d75WVncXxhIVzNXznZ52LVwm/MspKijnC\nNBtp5cRv3oEtPBkfCwAQn4/45BgTVP8hBACnuh1lJJa/KEBlNtAfRGkpW41p\niYlPK3LOgLM4COatRnrg7UZQ84+h2dVlc6XaNcBUwCK4LP3Vk29ilw6DgE4C\nyh/PiczkluBTmDDw596ikO1WedO+FR4p/Un8BoWNAJiQnvurumedDdo1J/eC\nnBdIDrSGByYNmpFMeSlFXDSeTFdkp+VR/VF8Kwf3dFZZlbvCOXNL3Nus5uzg\nSSls+AdV49d3lOi+bO6unNTzbmbwMnVWkN7v+ncnj3eoxV8SjCNZGaL8tTzV\nrEzwKWouQiCufqu3FeFdsZ3L46e3ReRsFOszrAQbxyNAKEPnzUZ7rnEBzJBU\nxDQeWUyc06TmrG9wDl4a5FsJ4XcUGJCu/xdCu1VJYUpKTiThM5sKbo2/jCJe\nvC9z\r\n=tmiu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"13473ff705b17ca6d50f28915a78f9b0e8e51b21","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.7.2","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.14","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.65","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0-sync-balena-api-plans-13473ff705b17ca6d50f28915a78f9b0e8e51b21_1599055989881_0.743389680090252","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.90":{"name":"@balena/jellyfish-sync","version":"0.0.90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.90","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1bc21ce3fb151929738819f2243d59516a8e880e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.90.tgz","fileCount":27,"integrity":"sha512-0vs5wy/7kdoQowfUxDNcPpho0qiYXxcQyYGf9d5vlTNFBXUfitFivCF30ve9ZGf0QN/u5YFV28smjOMfCsuvYA==","signatures":[{"sig":"MEUCIGRWXAFc2SUjKGTyvT6wyc8llIACTxgM+uoECctiKPB0AiEA92C9IEe29AGmpXROto7k6UgA5/TGicYyqVxVkRUEqbU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUDZACRA9TVsSAnZWagAAAVsQAI3+Ndg0hnl9AyecxVC7\nF63qkONgISKDtcFJYgtgaiy9OK4y7zdVOAkFW+TIc7eBqir12r/a+ZpTr17R\nwx6E1El97VkEdu6ggTD72cAR/eVVu8KvewQ8NrJCWyxrtPPojG2/ghsFVtKC\nC8EFnQ334LxmYJfd3QJlIq5Q3xbo49iI/lRYXb0FCLPDsbKwthJvQdhJtXBz\nPDDagXn1fcEMcKbppHFvakxs1cQaEu/A7eltzo1wLkbye5d2hwGvv3YA05eN\nH99EJmhsohgYjQQDaEmDIyC4AVlOPJ755t2d8922THs7ehe8qf0/e3xTZh7e\nNBsnr/Uyn3sUx2OpgSIi7JPlO4KdkbZEDI1Hint6xQDC/MXwL+o2zoWVoUNt\ntpaY+G96DQu5Otm8Y3KtjpK2UPeOP6APLcch2m2EMZM9mDVm+Vxi/SXh5zGu\ni9RQjV+xr2U44QlNKJPxYq6jFhAA1uTOVqOQ929O9qJp+1T7ujzu089CzyVv\n98+VwyIzCuegIMU9IQMNdjrbD1yhAXAyR5ADJDcgU/pK4B/5fnEn0vmZMfwe\n3pWlnyfU5v88vqxJis+Mb64nfC1Y99Pw8aLTs3bjiDtGgyUT5T5M00biJjVE\n4gu2FKHYW6gEu0bgCo2hUA0dfDgCFAePE7iQR1RWymekQ7C+PSYC0dqCvzzq\n6ls0\r\n=PBBH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1ab1b5f15aaa1fcad5b3845fc3fa3cde6f7f47b7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.0","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.7","@balena/jellyfish-assert":"^1.0.6","@balena/jellyfish-metrics":"^0.0.68","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.90_1599092288312_0.9875604409816059","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.91-renovate-non-major-7619b8abb42eca4a53e466a68b705df66307f361":{"name":"@balena/jellyfish-sync","version":"0.0.91-renovate-non-major-7619b8abb42eca4a53e466a68b705df66307f361","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.91-renovate-non-major-7619b8abb42eca4a53e466a68b705df66307f361","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7ef9f70ee90de33e78e0dadf7e679db1df8afd85","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.91-renovate-non-major-7619b8abb42eca4a53e466a68b705df66307f361.tgz","fileCount":27,"integrity":"sha512-i5fzq7OaNNiss5+qbdW0H0v9/EEGpYfy4QtMdiLoT0k8TjaS6vRY1iim9Mm+d4f6Xr5mbLwXioGVdL8ynBTCSA==","signatures":[{"sig":"MEUCIQCZxmRkERxxs2HDYjIGwIH1Jzu3IF095z2yyMlJjNLGPwIgdtisVtCEl7jOOrZrNT3UBvEvIh4LaMdrq81jENFdi3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUElyCRA9TVsSAnZWagAAvBcP/04aB+k+qcq7en27P1j6\nsHPFdm0gexNWju1SsyDblzOGsSEe348I/vXnXP73OSXDxt5cSneUE/Q3yPy4\ngAblaGQWWkzEs5sNrKpDtR8tkXs7PQtSTB30FY1dGwDXYnbq+VCagEv1kWiN\nag6Ns66gS0B1JrFJwnBKDWxUM+lgUORa4EiqZrd8dav+JNC0FzIVoK6fg6dP\nnRcJD3nRZ/br+jODbUmiw4kW0qHGMxC44UAF9gaG9YmxJydO85XW3gjL0uBW\nmdNChPjoHmHIzQzH2HOf02QQyVfEzM0gKtoHtFlxRpG7rIOZeqW6+hgZp4vS\nmNHTeCC2DrNhC5zWni0tcF+fCtl+rQHH0kdfFoQReq2zVAsFPRfRM4nh9X5R\nrNAcT2KFWUcUXKbIaCSZp3H4CQuuSa3zkajY8392Rsu2qZmZckFDrU2K/04T\n8hn3DG/LX19zPN0bX2qByCdCqvdPqw5eVaMsvEsRqu6jHLHdAdEsMaYxBu8F\nX6PCrB9BPTSc6V51q7kLM0YKnWWSxdckhgGfpx8OjPY8RZ0h3bdCJ7yAQ9Ai\nPtLlrXfizZHbQPZFZlTaiZ9bdS8TvNTVeTKlS1bUYXGB01m/gRE+OiY1upuX\nrfbyjAeGlkeTKD/ccUcQJZJmCF7ZAl6blYurmykO7aS7xzLTRduhB1Zu9H6H\ndIgE\r\n=dJY4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7619b8abb42eca4a53e466a68b705df66307f361","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.0","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.7","@balena/jellyfish-metrics":"^0.0.69","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.91-renovate-non-major-7619b8abb42eca4a53e466a68b705df66307f361_1599097202138_0.47430987006520153","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.91":{"name":"@balena/jellyfish-sync","version":"0.0.91","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.91","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0cf8d58b1dc361782609e0cb3317ef333e759562","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.91.tgz","fileCount":27,"integrity":"sha512-lkFS5hvDObKvLRxSHBxhJ5I8TLwJXrYyaO76EPoOYUcJGhNfhobYBzI/y3dedzz70pVt4YGRPLMKGNBJoimYIA==","signatures":[{"sig":"MEQCIAEUVabH6RwScQYaeBUClDm0exO2K7zhP2F3HVwbHZeEAiBm8jRu+sJ3YPumUOLBwn0AZ3Ilgg+1KcZSc00ADit79g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUErtCRA9TVsSAnZWagAAEj4P/jpgJHMj3wWrWUtRqqXc\n+sGHl5cT84RiILBGvLocRPRbn9YtczYcLnrBDDFoUqfujt+otH3J0m+XRAi6\nOu30j0IEG3RaQouT60AVZEqGWRGonLbXaMEJNkywPIbn5OxC2EaXI433Vt22\nJ6HlLXrfWZyPoDD/tpOqBFOzHNxFfTcISSD0EkWbdJxtm3L0I4IL/PkTrPB2\nrQxs8gBms6uY1khD9Bbd3XyDBEKt3oPghjPTWASO8VCXvu1vorIjh5i8SybZ\nTuC2UnrNA6mS8kHkRLeWC3IHfdeESTbjRkNTr0AguFTEEC3y6ZY5heATZOTq\ndF1WxZi0FZwaHQfjbVxyu+M1agpXF4EwJXiWD/YQgqejOTtClMX7wTu1010M\nRHUuP6TTwH5VVU7mQS7SL5YnjBWPiNUx5A46uPMF0DKIgKHzkjQZFsA7hj5K\nHLbTOgygJEOK1Cz2Ytxr2HCwdizeu6oFay9+EpZA8vS5xRNX0LAzAWcK9b9r\n+Zy9BM38n1S+S6VqSCmA3roGZDx0eaOGY4nBOM6YqequxSUvEV1P9+tN6a11\n6r6I9y6m+WuB1YhywviQb6JgwhZIk7lXHdKkN2yE0Xec7APc7814R1+ENLTP\ntuQdtsuiNiI4QstLRzlFm5dVa1t+x1YNntKVUstV0Cjw9JbaaK7POOkGPKdp\njD8x\r\n=FeHz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"2e1463a25cb9f9c96dac5b90cb66c923839a0f9e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.0","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.7","@balena/jellyfish-metrics":"^0.0.69","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.17"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.91_1599097581383_0.8726349244235372","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.92-renovate-non-major-717106d73ba39cdba99d766db6db7123a64558ef":{"name":"@balena/jellyfish-sync","version":"0.0.92-renovate-non-major-717106d73ba39cdba99d766db6db7123a64558ef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.92-renovate-non-major-717106d73ba39cdba99d766db6db7123a64558ef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"954aaa81bac76073f6cf098e07aefab45ee70552","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.92-renovate-non-major-717106d73ba39cdba99d766db6db7123a64558ef.tgz","fileCount":27,"integrity":"sha512-PzBQEDOc09IWUdOuuiryyZ6y9kqVH/MujKGvbDpTbaOGFqNtCSKHC0fBYCOsffJABXF7dP0nWfIEow0OzY7SKQ==","signatures":[{"sig":"MEQCIHlB2QQ8XyUj9v95adY5SHQahi4o3kKyGl4wbLvYi5qBAiAwdCjGlsKcOzDFlGjcgcglOYt7XOrySqdf43iaNV+zVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUFIwCRA9TVsSAnZWagAAM/MQAI+ube51xADmD3mlrAbh\npuIpS2XL+8NGtK5IRjMiIZD7Wx8/USlOn9QSibK909UANbLHjak+j9ak6vxZ\ndBJ8TL/q4MgiatgULjBZB3odtUt0XnjadWt7IcKYHnbqeNfYx+cGZB8f//x2\n1RysySRiZCq3d0fHNZEDGVzIUnVAVVmpKlNpEYeXiphV+XP1LZFO6itbXmYq\nk/2wf5rGdpGy9XfJBTnPFsE7xPs49YtbyqrxqR1bDjJhPae4+zLGE5hblYHG\nbfUs6J7Qy5OimdNF66q0ETSJ7kzMaZG4075+0FfRAKZPlCpN3jJb7ATdlodL\n/U27DEfRo4dPJZlHfNJ4hxGFerd83vKYQi/GOWsM5BP+Z/XCvFmF/0sOl8Fa\nDgr3uj1ENwVm4Fy0rYdEp6Ly3MEabCDDMWiVUleW504IP8c9fDdrLEN8mB1L\nG2FN0FLpnsA5MVA7/TqDf+3NhtxRiorYC9OneiJkLYZtI4s/w+1dzFv3T8dT\nsUk02E4xvFie45rIZLiFrBY4uY5+aV8wy1wwjvELvQppcMtk3stcIdQMcmOk\n8cHoTlRw/Wu6u6DQLtBl4ZW7sxntbxBYOujNngLXtPdFE7qHIGT87BtLY12l\nQoZm1ttM7QtmeyEEG/n7jTg4xUgmeGtRhFwhq9cZ+u+kxNNKSJ71cnZxikLJ\nt06F\r\n=CERi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"717106d73ba39cdba99d766db6db7123a64558ef","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.0","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.7","@balena/jellyfish-metrics":"^0.0.70","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.92-renovate-non-major-717106d73ba39cdba99d766db6db7123a64558ef_1599099439767_0.8013722676512336","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.92":{"name":"@balena/jellyfish-sync","version":"0.0.92","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.92","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c55a408a68cf981171f5f9cfe1472b335d4947b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.92.tgz","fileCount":27,"integrity":"sha512-y7+Q/00dNhj9am9fIxH5Ujm1VyujpyAxiTp0B/AYYcZEX0k25cSAjB/0v0QJ7LH8ms3JdSE+MiBuzZIYBQKoUw==","signatures":[{"sig":"MEUCIQCG+B1P1WJ2TmAoA4hvrTByVQTaUeS1LMHLjdKkmyQskAIgPpPsaTTRL0ei1T3wIzJn99gvLTps8Sq5UPs3Pez7k3E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUFLQCRA9TVsSAnZWagAAIU0P/jSaYn9D1TEyibWsfO9j\noYXdEaG524XH5P9WPxLxBwBdROXZyY21La3UU4pGZ0LDBlnNm8vNdQK1m1h7\n0lfifuKGHhILtqWgYfPwTtK/sq+LDs8bNoZi9J/Gt9p2X0ZRoSgqsSbaWWg3\nQtmAW7rSfMuZuAinUmns7oaUoP83o4uJb2xDpwZuv9rtjOdqrAG9x+ZOoDf6\nq9UZYypBN33ieWHhioyyJLMVxOqUEMk/7ktzB8pA+AAUlMoN62JaqsG23CPE\nm3E/xYVOoaroEc2nh0nB8Ucve0+4BLZQekAyUjmFu2PTYtZa1LdV1wy8tlpq\n2ezLhWBnylihjX+sGBoRu3kkgFKksQTKY29OP3OGjnG9coEKVi/USwkWvxzx\nxAwdi0uVxiFZJ6GLpt1E//iy07CqgMDIuSX5/l2NuMstT5HvW0Cuh2IR6PR6\nDOxFzQgni4UQEvctbC+moR4IvRbxMs7uSwtK+FzUMtiM9GfX47Yg3F47S2i/\nVlmmYsL1BZ8wRaWkK0oKvm9w5JrtRdbDy6zzU841SmlqU9RYMAkFdWwG4k5e\nEXPtWgdbAz3G0lcD6IzN9lQKsKdIP3stwwn/msUtNXSHonnb/07FQRoLMRxK\nLcncdj4Kk1BBuBuFn0t+65cxCMCq6K0YG1FWX46ySaXNQMAT0j/r+SL3ecls\nBjOS\r\n=5zVR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"886af6d3fb53e01508f98d8e0198b3c76a25f15c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.0","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.7","@balena/jellyfish-metrics":"^0.0.70","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.17"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.2.13","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.92_1599099600193_0.5249981572525295","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.93-renovate-non-major-575d5c485802b27103c66d01f66ba92ee8cf7334":{"name":"@balena/jellyfish-sync","version":"0.0.93-renovate-non-major-575d5c485802b27103c66d01f66ba92ee8cf7334","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.93-renovate-non-major-575d5c485802b27103c66d01f66ba92ee8cf7334","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6741ac8372592ed77130745d79b5c9ce1dd5a02d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.93-renovate-non-major-575d5c485802b27103c66d01f66ba92ee8cf7334.tgz","fileCount":27,"integrity":"sha512-2XkQL3CwvBU19ohybOPqhs4YdxLcmxHmJpn6xTiMnEjDFJMPJxxbPkIawdtmVrEwUxSHZqfltfUvP0Q5qVnv4w==","signatures":[{"sig":"MEUCIQCfn2sf/x8N9WMOa2skLF9Lth+B90DYDfbKCrPjGtvekAIgYIjpIWQQ0wgKP5bCeBEDdJypZ6K56xBXdLLm5xlrpv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUKwsCRA9TVsSAnZWagAAi7kP/2TWMDbIi/X1sihTx6Fy\nRQjWHntK5olS5CE68u1GCctytS+AVuWmRQN6nuxfVF6fLvh8+FahkQc9VeJD\nCOZP5MGSG12oPOUhyuTeRYDsyUZjcbVhuuN8gOuPZ/ZC08JIyDi3Ur2KFBOY\nARhAJR6CTg2qZTDhfOTgEXWN8wtqpYrVxnuI2a9HSJvYmx3JjQo3M1Bp+LDH\nrtEUvRvtX/g4TFVP/vwOFAoUMA9bbzILfY80IgktGE+vORWBoRL26sAvGSRW\nP+gyDawzaqDcS+86p7YAN8/FF63LFA+E2U+U8iWgx4bD4aE+83W98T9TgEpE\nY2lBZCRxUeV7txT3msQTFuy0/gbtUh8K7W6KchD0qZSsNCG/zFNyq9D+MJ9/\nbyrJGNRyKDP/N46fLejF5dnvd1jTYNprwekfmd4glrjfD9wi0QcrAg3Umiy+\nveMsvxUwvVpRyAFIGE5n7cHal87bBMYZdpUPfU6+uUT6yN5GH4cxNmjo0KCE\n2vH+xd9rFBsh/UP0NpNiAK38GKr5vEesrZzjBHZJ/KUd8TGucd24kNLNi3Hk\nR4vJiyn5i5iSRBi6rXkVp2rtkwx+BbwU6TIhRn6cov0l+0RZ6IEZDix1EwjV\n6ZnWyqlMzUMQ2om1k03T5y9nkDmujwzKOirZsF5UqtOjFanFGb8D0Iothp5H\nduCg\r\n=j9/K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"575d5c485802b27103c66d01f66ba92ee8cf7334","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.7","@balena/jellyfish-metrics":"^0.0.70","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.93-renovate-non-major-575d5c485802b27103c66d01f66ba92ee8cf7334_1599122475691_0.1329141695906335","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.93":{"name":"@balena/jellyfish-sync","version":"0.0.93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.93","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6dee31fd2caeb0519ffbbe2368454f20d60fe4c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.93.tgz","fileCount":27,"integrity":"sha512-9/DMnOuRPs8p9l4iBpwTB24sDKydX5PjC8z5KEHkAKDmFfMqCWoqWbupJoYcZTFqh8nLlrD49KNk78p7dfPZ2g==","signatures":[{"sig":"MEUCIQCl/QLU1h8FH0FjuRVOrU7Wj2S+Gwg1+B30j3EfCdMSLwIgHHq6xHTN6ufWmlLScW3BhZ3G4QerJZdyubj0frqc7sE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfULHlCRA9TVsSAnZWagAAaAsP/RIE2G5K3JUyCaXNBS7v\nM1875CwIbofPp7gij8yUN0Mah88BUwDO2c2wDx6mvQkpP4ckOU3DR7brrTxg\nQ3RnEsO48LhJ++Uc2Yock4dDxrC0hE/WM2TiQltRMkvhtXQ3nxAVoGlNEOjb\nB2jN+dj1aYMY+OKWZ1dWvaJeMrTMKELnT8W6rlqqosXEPYGAo+B0/28nUbdm\nQgW28qzrbI3edPq+TZiOZighPh4AB75IV5X5JC2rlfEPV1rTRg2tAuuEvpda\nSgEHqZL2w004xPjWXUbp9FRNnWJ6Rdgwh2JpExaSpgkfN9+Aaww9t01eNWfs\njb/I498hlcUBPLHTXJRceod3watyTWWXy/jPzfUflNnzH/VI0VdcRkd482k8\nGfq2WjTcq/rsniEre7tMJClciPVpfXrP9RZuAXQRcHDJ5B3qIMkDsmFaj0p/\n12wTGQGbQKpUtcBOkEl79oAmo5eiNmDVF+esSYtI+1D+jCCz0GSMwqVnofip\nmG2rQvr3w6ZMpYgzgHv2zF1i52vHX0h+r+MxbGLRuY8I+6R5pmGIH1pDsKbz\nOgM9+h3vfFMJ7xaDuwOkxYX/xdnttnPgUN7tdPS1f5c7wqougLL3sDSxCk2S\nea+b3QVHucG0DNNndEhej7e/awzUcJmGn5wwfLe6Haxzpy0e6BH1wELS5hsg\nxBWI\r\n=l2lv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8d94006b599438fa4cb5184241b15a3bf7509a02","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.7","@balena/jellyfish-metrics":"^0.0.70","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.17"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.93_1599123941282_0.5420040225301315","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.94-renovate-non-major-0bd096baa3aa230fe1c59b08f08b9c51f8f9a734":{"name":"@balena/jellyfish-sync","version":"0.0.94-renovate-non-major-0bd096baa3aa230fe1c59b08f08b9c51f8f9a734","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.94-renovate-non-major-0bd096baa3aa230fe1c59b08f08b9c51f8f9a734","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4102db3e2d15eb8b41f1da46a49bb1d3741fb5fe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.94-renovate-non-major-0bd096baa3aa230fe1c59b08f08b9c51f8f9a734.tgz","fileCount":27,"integrity":"sha512-hcY28ffLP0KuQdsn4WN9GYCpyY+FKKACgN2S9Yjw+mqPMgs8Z6Brd8Aslp4WW8wkbtYIBr12LUzpP/KsQTRcSg==","signatures":[{"sig":"MEQCIDyAeTY8ZvmEZqWGirvkUOt4kTHxzR0v6M+Iczvp3/vbAiBNvAoqHtIPfAw5gDAO+nWVEio4YS5b6VPj3RrmtDGd9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfULMMCRA9TVsSAnZWagAAAooP/iDniJ9NmGOZVs917maQ\njdhNwkyzSu0CC9HmXBJMtkNeUKGND/fzZERo/sbM3vjT1ZTAr8KgrEO2l5ud\neo41FIN/7yuHqLOa5EqovUCdXTvQiwCwWc1RPhF68xpJI/et8Y5bcSvVIEgU\nOszhEYHsyZo/O8mcuEWGzGHq2w1OK8ja3kPIYxdp+xDduOfdcYgeWsQ8eH/u\nNx5ikUrONcN7XnmNYux4b45L5Pnre8+CU97B7d7C6s28yjY5jdRYI2F2IUWX\nfnn4pBQGzJuu6SGIFXClFQCFjyElQs4235r42Y2X8DYN1ufCwF1Jg5Gv8GTp\n1HHkwXJX1MORuLWQXZ7+SZDfBc6nkYVd1/yabpOjRsaxlrij0TFk/jQP761t\nkDI1hkwfx+o7KD/YIi0wkNTJEb8Rnt/rwNfA9QF+oPHGrirt7kTJt0I9CeBM\nJzdQB/JVtiefcYsmfAoG7bljZ9e2Ars+nUU0zu3dEhCHtlPCffj3kdquDRHh\n80NxKWR52FrPAOX2KRRn72SQnGSEXbIGOZyJ/zYQaB7LD/qywmxij6mwO626\nMrevYpjL6cYPLG3h4AdCx2bKo2RNmcY07MrGDol+tq6VYGyWgsvK0dEhHCJF\nTaKnbsLO7pD95XL22tuTdNdizlzYa/C7h84ff0QtzAtqGRRvalzREtqKiWo1\nTXcg\r\n=FNsS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0bd096baa3aa230fe1c59b08f08b9c51f8f9a734","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.8","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.70","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.94-renovate-non-major-0bd096baa3aa230fe1c59b08f08b9c51f8f9a734_1599124235933_0.02695006819810608","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.94-renovate-non-major-83d3a548e88adc7d574ef6902161f2c02c160a82":{"name":"@balena/jellyfish-sync","version":"0.0.94-renovate-non-major-83d3a548e88adc7d574ef6902161f2c02c160a82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.94-renovate-non-major-83d3a548e88adc7d574ef6902161f2c02c160a82","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ad28dcc402afc5320e93e79dc718b054bbce6b92","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.94-renovate-non-major-83d3a548e88adc7d574ef6902161f2c02c160a82.tgz","fileCount":27,"integrity":"sha512-EHtAVjyaN88/26QdJyL4Rz0sPRQiGkKdWM+AKEGIixml4iUoxp1VgZKFsxTDBgm4FmPiHVsXM4qJdzUBe2RiAw==","signatures":[{"sig":"MEUCIQDtfYoU73STGoYpY9qSYiLCPV0Uq449fW5S0hRW1/ALzAIgLP+oYMAk3rjBxas3rBjZesUamqUDDJQD4/Wwsi0q40A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfULQ+CRA9TVsSAnZWagAAcvEP/RWaWkf5tXQGgrG2nBqw\nalmPM4ZriI37p9yvcMI5RahzdIg8XUXSbtmFRQbRdW0tOBcd+Uban/RcsSK/\nI09xRIWIIaqA8dFe9bV7SqQ1aAn8sLWYrbuGCZUOEZa/vFlH7yI32J3b+XJk\nU4CA9lFlmQewXRc2ttTnmu3AzAeGa+PO3Jv6ub7ZE9cOAgxqhc6N5tze5fDV\nGybfIw7lH9XxVwM6b4xSuruxaO49CjzgEvGLHcuptSJL0DJyElUTK8ZMQaDX\ngPLb32/H0k2u1HhUU5DHp4o5vZ1yzYnox1M01c/kbFkl1CUVH+zcNorNoluV\nPaesGVmO+nokfBMMO0eMMW/vvFNYjcZTpKIZaCrqylt1SHPoB7wfEtp4slCd\nO8QBB+y1mUXGg0lkCaCAxkmEBs/bGKD0YcJuStO6YF/IMJHzIxuWG3m7zQd7\n43jY48pVF9FLusBhcEZg40hQPtixoyvbaVB4mlvcZxpP1CTD0Z8R47pjLfyA\n7p3svayN9cRCO4Cdz+lDV3XtePELd6cxO1OhU60ZiroLAQAY97Bwbiqj98JZ\n1GmijZSQrzrre4hVI808LfdvIj1wAaShwxG2gi/XkLnXYa/mwFxiPWDpNDNl\nGu+AbPNASc5aaCc2EPVQ2/WtrklUPRszf7icLuzRXtaxIE0zZ6svQsrmIC2K\nvsJw\r\n=bvU3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"83d3a548e88adc7d574ef6902161f2c02c160a82","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.71","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.94-renovate-non-major-83d3a548e88adc7d574ef6902161f2c02c160a82_1599124541811_0.6969182489812733","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.0.94":{"name":"@balena/jellyfish-sync","version":"0.0.94","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.0.94","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e734976b14c2ab61e2608151f39b097b93ff709b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.0.94.tgz","fileCount":27,"integrity":"sha512-R5KMLRPWrnW35adkz+yqjfddhwautptuVtlS1jo14PFUqR8W7S/dW7lhX2NQ+bOrT7lovNR6OXDbFZQ0FoKUXw==","signatures":[{"sig":"MEQCIDoO1YP3CAbrRQrn7wyiSlN8t/rS0/BwQJWAXixyJ15NAiBuNYr3SetnQZ8cfFFLP/w+7JAnbXwZbvbgczEEVt/kSw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfULY7CRA9TVsSAnZWagAApfoP/23fNDVZmu8Wa1WOKgi0\nsGqwIeCF7WdpjLWwjBy7cF+ZOLXzoiOK5PPGlAWeZ6CUuyjcffNTM0q0oXpM\neMc3dVtZqHheGE7g7dRG4glTXnPyRYWsVng5K0LfIJ1IY7tdM6cjs6q8af6X\nIVg+4/j04DXUayV4E/bRDILhWq7Nh9wfLKrkARV4WYhzLv6SlulFnuYSXgXp\nu6aiN3nbx1WOPQXWZl/eVSAty9dICJ7hhgbG34JLuJYZMOWULCjeMDc1aShe\nIbfMDvbmQfNotCjYFuouyDDpbIQCqUDe/UJJK1sla5OOjPbvUPzj3DPYKt7Q\nTBM96mLAsObZ+KtDB2z/FJ1SYl2D4vj5Cjl3+NVBuLEn7ekO0FFdjoF13ukI\nf3SB28R6UleTUA3AJIqfqn/yKDSC9TWlljshbS++Iyn4nLxIr/peFk6H41Wo\nR8V7Ls7JXDxqEheI4rLSM/aN2kVpflHndJq5an0QbzlBCKbFo/obk9t5l9p0\nUnoMu37jZmSGtABj6Y5qQaeu0RAJKsjHftLccyqlDqxbRNwYNc3q7pjS1gNq\nZwrEUPOy6wDS92xpo9aQPkd3U976hfddtfQC6umCPQqwtjj8lqARHnDkW/fI\nkwUccvfV6rVg+n60xowmeqF+WsowuKoqNqzeySR4I9+NKnbzVFHKxGxDjqBL\nXalD\r\n=9IuK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"e96f3ad1f650e4773416ee803b536715e38c7071","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.71","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.0.94_1599125051318_0.9339963473226245","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-sync-balena-api-plans-882084f2ff1adde134a390954713392a49abad65":{"name":"@balena/jellyfish-sync","version":"0.1.0-sync-balena-api-plans-882084f2ff1adde134a390954713392a49abad65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0-sync-balena-api-plans-882084f2ff1adde134a390954713392a49abad65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"995e744c25550c735c81c14d471f765457d950c4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0-sync-balena-api-plans-882084f2ff1adde134a390954713392a49abad65.tgz","fileCount":27,"integrity":"sha512-g+hGKaZQcwowO3n2eW90Ic+3AQ7FsAOQ9XUC5S6QG7PWjWEh1UEmYA9L/zh9POYDH/pHWdsxW/yjeFj0BQiCBQ==","signatures":[{"sig":"MEQCIHfr36VkLvY7H/wY3opkjssDToGQntMoK2Em4cxQYqSCAiB42DkczEiG8KLn4mGvEOivzU/315ladVJlhv+30TWFJQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUNkfCRA9TVsSAnZWagAAVVsP/0yZYqtaWDF89JN9ojG1\nGlpoNd1rg3DxY3GT7j3wA2C+nmQ8WjI9dUfaL7oYoIra0hzuoaUifY5Cjc7X\nNdIIkK3/FQYpHtjS4W1kglBuP3/Thuanm0x/N4q7IrHtFMqprfp7BB7pLfkG\nj8rZaU4d3DOJ6GMdbiPuYJV3/waTY0jTNX/baEf+CDqwnuDTw5AvOg0GZA6U\nh2GGHWjOJf6ol82fQa/pralvm+fOiwBgR8UeIRGgnf8uvdt38fB+T1+CXW5w\nX0rj1ik5ywtXnRiIxqWgXLQR3L3CdeMO6TeGLHye2P5Gyh4UxJR3RbHBXvjP\nwqvLoWLljUBxDpKs6xTFNYmi50axkv+ji6RDlIENZ3SNAo7gXQrobDu1/Hva\nRKvW6j7Te2UPtasPkqJV0HHYpB7LKHbBOZtyUa5ViZV72qjT+On82qK0XoUi\nMCi3VoQI7g/SSYSeBsVkv5sgh+jrW/F/feaFP4Y45UMR4d+J8RsugpBsGske\no4iTvHh1zuB6pob3osoQrheN1VOtCZJJ/JDShz+dA4WUfLP+dnoESaiNlxSq\nOq1FtSBhcYm7pFoS2pB6HQp/q2YE/Q9deEInnZ9+XvhTDzzL15EJBYQcvMuR\nAHAcURaS/qBjmG3xXhpVvfp3S+1VK4ASYNZKf0wPQcLye5Re8SKIQIurGoCg\nWWTy\r\n=Vu0v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"882084f2ff1adde134a390954713392a49abad65","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.71","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0-sync-balena-api-plans-882084f2ff1adde134a390954713392a49abad65_1599133983485_0.045057812924292895","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0-renovate-non-major-7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b":{"name":"@balena/jellyfish-sync","version":"0.1.0-renovate-non-major-7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0-renovate-non-major-7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1136a7f9ad028596cb519ecffb5b20fdb8470cda","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0-renovate-non-major-7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b.tgz","fileCount":27,"integrity":"sha512-Z+sPpwRa/v1h/TINe4BLCLjk9UZ6kIDGEKHCQkCAOD/cxyekXXSkEbcHQs/fEQ9wczPyZ3s3n9C+bfIqrw50Mg==","signatures":[{"sig":"MEUCIQDcri79P0h798ufW1lRz2xy60faUdEQtLmtU6tMQJBxJQIgD2UuCzglbBaZ3xugSf5YwoQTSw8BqpMFVZjc+YzqHtk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUk2eCRA9TVsSAnZWagAA1XoP/j7GO8ab2yakRjXdf9gx\nVfNip+6Y36uo8qTqTpmEmyXNpsi5hDD/86x+uJJzhSY9aOTd2VxL04/tNglY\nCqMbS9LsOt7Q80aKNLuP6oPvHI6/wFN6LDqdwuMBcf85ORt6wwHjq2gKVavr\nO2qFzBYrXrCrGcF1IFeGrq7TBcyO+xJsFFY6NjGMbPaGhUXP64VUIvxul3rJ\nEB02TNE6/HUpGLKb7lLWgYyus215H7GtXvrwLiT5DAwa/BVZcQMO6gsjh71T\nDIbwSDe3FUWmFgzBX486HB8ycS5jrXvzV2FyGGtxph+S9yj4vR+8cXyp8O4+\ndtatVCAEKwX2dJIna4YzMDK2tIxz6WDBeNDBK32qZJvvUFknKmrz0LgPWHgV\nA3nCkPCv5S0fyNGDHHhaVo348Dy0lh6WMVtJBQTzC54f84NIR4Vitdfa6v2Z\ndZmWoR9T/ymaI5X3qQcyjLILpTteZjT2TXTmuwhmc7CrTaH7RNxuBj5qThZI\nnrbEhdmA+/3/02piHbWPqJCHnHxl0ufygRWEjlVzJNQIaoEmeRqwL2Mt1aLA\nq1OJwVHRomPLthYirdQUo5gXG4LY9CAiorJHDJihfhSoPLSt90ptnT5cLhCk\nQXgujVMJnrbUFBIRWXjz9onBbCoh1xZJsobv5kYC1IxBu2v+I4uZPR9RhBFi\nxJg8\r\n=BdVg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.73","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0-renovate-non-major-7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b_1599229341529_0.0013663339881782033","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.0":{"name":"@balena/jellyfish-sync","version":"0.1.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21860466b696a35815bb8a3f3e782e6629f1b8fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.0.tgz","fileCount":27,"integrity":"sha512-FcoLEsDWyE0Eu2Wxki7bNHm5C5VVvCcig1VZQlbsuygtcLX92c/kRiNXHvUrj/elPnGezNwXn3wp/qtrCWctSg==","signatures":[{"sig":"MEQCIHUgvocLkfUJQ3YjbTthOfc9nCRA01g/RLbPtDyoKFM2AiA9puwA2K0yh7QQwwkq7dl9ZibfF+MrweFlS0B+SIIbYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUk5TCRA9TVsSAnZWagAAhGIP/jb8ymjULZ34r7126NZO\n6CrhZRIqdvyEsmNR50jyLPhLjHqn5dBpTGIC/D70+lXRueLn1W0go2j/RCND\n0FqcnZoGRi1Js/ZV8YWmeOVXxz+avHLmb14ij/K4r2e3//rokpspsjJojbbh\nnBxcToqd1xvIkSLs5tpe88gyid4wNxrTbcrI9o9eCqJjJP55pL1r4kqUhzQh\n4No911xA3WbMSMzhfSq+btbNN7fbv5E90OTALpJdOLjDpJ7P889YfrQRz9vy\nZLAvLni/Uic5Pp/suDeY+/2YUxvqZaJbS6QuUP735qWE6A661Ixaiw7AB8zL\nFLaFHeJbe6plNSvSjTDpkdbzQlAOYbwEM0kaGFiQ3CHKH/eG6Cb+m0rUGatw\nxCOQLkbuh2p2+lpSjbg6gJUGwpTd9290ohrjrK40d0d99iz06Gnql5WYbuZR\nWe4/3jma4JqNdeRgmlZRXq/oFOAC7+7pTcELDkmr5Mmhntez4QMSOvRm0vJA\nPU/k3lkxWXuV2jVQTjvtWnX3/m+sZC56u93Js+ucVugbsPhM+ZF3yW3kbl8w\nlHXLzWpOiDBQFXD3P4gi+v6tMhmjWb2iIOvOY5KZmZQ4ZqLNtn7F6nA7dbgN\nnORq4JJFUMzD2BVQ0XdIMVN6Tv9QkmFfiIMaOYZS0QFoJpG0QEQYBMP69Yy4\nn0aY\r\n=KeCi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"f105455f318b0f98ecacb8818ed58af97097ae07","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.4","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.73","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.0_1599229523359_0.028218705889071938","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.1-renovate-non-major-07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87":{"name":"@balena/jellyfish-sync","version":"0.1.1-renovate-non-major-07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.1-renovate-non-major-07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9183037eaed5b9c53661ce7e0ed012db199eb815","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.1-renovate-non-major-07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87.tgz","fileCount":27,"integrity":"sha512-Mq/pHMoSk6w5UIpPthZlaluDlCEoX0XgitgqhytQ7Y4PKEfBrdFKN0JheC8t6SGsetvGKsDT8+y2reNDtVYTVg==","signatures":[{"sig":"MEQCIFdQWU7rrRfdA5XkkJbF3ybPnCnrvph+YY/1evRxBRlvAiAd4Nkil5xmFZy+NPbGobuDQUHMrmOvhtVxXJbx3FpvUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUoN8CRA9TVsSAnZWagAAH2UP/ivZCs+2GvRAxymmbAKg\nCgDTwbarLpUEm64aTtM3Ur42hu0VtD2Ll+mQHOu6W8p/sbcfZ4ckcK5qQ8t/\nxvOfCVqWhJCwKXUwY6nnXaUAEleCbqoW5Pb+l8DKu5ZLnJCZi/Wl7nFw4bK6\nnJ+4EJkxXRh3CVwCHDvQE1xd6SlZUQ07L2Ybs52QfkGD56rh+UUxBeB2KBm/\nxBplKnWsfh+1xeixyQGyEjEcwpuSexfK8znx1IYwnVCi4/OCtNLfyrM7l00y\nZjWLBJaCsO0doo73d7syhV+0urHOnhXOC/UEh0wLlay1vrbaFjh458vo8d8V\nxQBafisqMycp+v40zxZpZhFP+rSpcNZWyHMVQwxiRrNnOSDylC997Qb8MoC+\ncUItssO8Ckl+ryTwBjOvRSc3MoOcqF+kbiWgO7W0I6FC0+931EG8hkM3Eg5z\nzfG2HtnquvCBc15T9JKNFOp5gSbfXFT1TxmhJRhRGTDdmzLJsGszWRArmxR9\neL5uZch4QkaBpBV1YwgurCuXambCgIJ5sd2sMwS+RN8G1rs/thvRYBhXA8t/\nn3G+VIOn8OdCZXgmDGvzhTJBnPOqkY3Rf1H+qTAk1jzgOgscZe4SD4yC1qLj\nyFhv0UUfTDBKAHu4XH5YPLE0m/GZFhQ9LVA5nsLmh1KXtiEprzax5oDVI1wa\nRzfA\r\n=AJqD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.73","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.1-renovate-non-major-07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87_1599243132106_0.7181796472243356","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.1":{"name":"@balena/jellyfish-sync","version":"0.1.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b510abf7d42efe8a55ca0c7e47c129f0528b02b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.1.tgz","fileCount":27,"integrity":"sha512-Af1jbzZh/i1nISNdtuMYFmM/vQB49S/wnHFgoaGxFX7aW+NYE+eHL4Ecm/SOadh3ymr31eELBGiBiRwJysxQ2A==","signatures":[{"sig":"MEUCIQDwk9RiDY1644ZPKFmm8N/ZPLObVzsJiX0fK7zWm/QJHAIgRsvk3mJ6y4War5MFG7/4b6n0W0T4btbkd7Ya9tO6TFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUoQ0CRA9TVsSAnZWagAAbVMP/2UqHMbIoOclRvPbDnBt\nMaPQBi193ywOLMr+1srCjP4l5+H91eSBqKFgYwlO9hjqhHzKY/G1Qu0AAb2u\nrqUablMOPN/HZ/hpmqF9CRFtkGH5OfF/E++vOF4BnLGfEQmq/zOxb+uf2rpK\nYIYxWsidCulMZiuhf0f6rxZUVb7kO39pXeQuFtBUcRovanJHhOEqTefzIWjr\nZTtG4yPaFHk/j/hXFV8JbCnPmcwgWNszWZQvT5H9n+NSXlhTGD1uKPx/IXlT\nu4pXo7D8YMB8Ml6dVzBH/rEDSQ+lwx5s82MmlHC5KMKzKt0V82O9VZEprExl\nCi6OAiYB9ZcXr+ze7kv6wsbKLU0dglNqbM7xXgwT+AecbKtM8ltOshigfRil\nxzq32wFJqOxyScH1Zur7VHPMlmqwNhq2BUfCSn2lOWIromGFPRc1N6u0Vs3x\n8zhbcZen7U/rjiQLsW6Un7DnyLa0Y17ZtI4tDCkJlhDoVoIjc5VpV6AB0gKR\nLk/6F63JDvD6DtQNqSqGvRyX6H1wmPLlyOC/USmifmtqkxKKAk6yMYjmlI1e\nzdfe/E2RfeJFFbbkt74j3vgU+oirosWY1z5XUlhM4fjjsRpXhVMdIHCvsL+8\nztwJA994tp0N0AwdgoXlIDq3sre3LS87epbnVdmIMSfQs7jyhnODz1zihNJy\nDIHV\r\n=FOqm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0faa1660292f6467c4772f09ea613eb95643d5d0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.9","@balena/jellyfish-assert":"^1.0.8","@balena/jellyfish-metrics":"^0.0.73","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.1_1599243316019_0.019908050830035995","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.2-renovate-non-major-b076e1462261f364823ca749780d48f5e9114304":{"name":"@balena/jellyfish-sync","version":"0.1.2-renovate-non-major-b076e1462261f364823ca749780d48f5e9114304","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.2-renovate-non-major-b076e1462261f364823ca749780d48f5e9114304","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d15969f5be29fa20861fa668a7010b89a9385328","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.2-renovate-non-major-b076e1462261f364823ca749780d48f5e9114304.tgz","fileCount":27,"integrity":"sha512-kaVJ4hiNvHnSDVPaHgyKR/BRLGBkMDa5899c4sV1r2ktyjwkWs30UCzyHj/yGy8Ev7/Eksrplzl/uol/RLjZqA==","signatures":[{"sig":"MEYCIQDCEx1DF8ZIJrfOgwrHeOJ1giNuYoJbVrbMELmJdbV1sgIhAJ5kb0RJxyov+JeEYIEdTA7kA4fd+Re0oHzsSfRpCb+/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUwkSCRA9TVsSAnZWagAA2f4P/2xRKRGh7bg1dzlPEbIS\nNDV0impTNjfOEJsj6z/8Nzx8c2Y4JRBgV5xSwwhiBOQm5EUUNRxwFZyQm60O\nqGUzSBIWCB5LCRy7Iqo77m4PlsSxrKeDlvuF/7J67RcisEGOZENyrsI3180Q\nOQf7Hy/I5RKE/HRZTgL9Dny2bOkI96w8rwrDRvBp6RF9GLd/Wknt7wqUR2Ri\nz8/6YpL2Za8TLpyp2X9KdBaq+YFeAfCCgi0JZICdE/UZHrxt1ZZRaI0qp803\nk29g4Vx0S3YOMiB4/t1Z95nvk32Dy945MlhHxztkYy8g69M9vk2+w9V6C8qx\nT0vmBuMvc6sMboXVryyex28hnHLN3rN8FxzuvxHaBSDVe+nVtTAexpz8FE7x\n8nUN3QS/NMojjx25p5pKI1cGzNrYinPkBkDCuNrwM8jV0vo3LDJ01CtSrj6j\ncgQTCLlFXUtC7KnqQ5zysWSPCl0/Dr0tddmPGPuwmP/s5QzBNRXwC4POQUbs\nocXwrJQNHyTVevdBdOvffSkmlZNrjSzv08vaUBLYRRFwi7CK/M18TLWRmCHj\nX9fXrq5MpGq0Ai0R+3suAkvYZ8CmbrSNo4iX5QNeBC3mQh4xO9rh7r+yB7Wd\nSHSv12+wjaJcU+mDs6f3f9zODUDw8opS6+91AbyrOV7xML2L85EMCjyL9YKf\ndYfb\r\n=whmu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b076e1462261f364823ca749780d48f5e9114304","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.74","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.2-renovate-non-major-b076e1462261f364823ca749780d48f5e9114304_1599277329733_0.15996518821236427","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.2":{"name":"@balena/jellyfish-sync","version":"0.1.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"523129991439032dad4d5ec0041470c91954db27","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.2.tgz","fileCount":27,"integrity":"sha512-zrJfpWZyTBlxECT7Jki9KElmLoBQYZ8gc5fBhHlWjL/cugOeiSFej8zajKkK/Mm/ubAkpjanT6y3yE8/JTELKA==","signatures":[{"sig":"MEUCIQDw4ECx7H4K4E2EEkB8GYus6CSNPnpY4igXeUaPxtmRFgIgLMdJpAuJMFA5TvmQDKO/Bddt69uCITrjzANKtVHNmb4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfUwnaCRA9TVsSAnZWagAAlzkP/RRi0G0ahKTuI44tV4Vz\nEdFTv7SR3LvIVniOP05IHsGlgW0z8X1VTjYhv3kjcMDvKFz0xauDnp0SoI2s\nzWiZXhOjlauV+uzDevp9QzxqzRq0V1uhBqoLiM4L2igYN6sivQkegt7c1VfY\nXPTPsHJ24qVlwp+zxTx61vGDY0VDU0aGlvnQLM9viYQ4qYNuUB/0U3tCwUUF\nyphAkRPPyR+qbX8LBWrWTYhxhkYP9/jBd70iIL/Ui23oHAUr6Lsa17XoG0g6\nkXuUH0PfMOEgoPl3O09zp6RvSKMmqVGg6F6r/dcoOx0OX8b6mxfkHnyFQXe6\nL6v59ON4kVotVCbWOaHszi4gB5uID5hIdjs75zF0S+NWpmDv+Jkfr5z/YcqP\nJhHebTOiS/dIGtTYSxr/8At4uNdb/eGJRbw9QfLV9YU0aJSUvAKzSPADqJ0I\nZYnNqqlGXHp10UmxBdjDOUKUsbn1N0RI7ROkGFgb5HH4Z1Pt2V9VvG4HSaqf\nsfZeECyTEHRbgjd/6qoLDstghJv0o/MTXh7woDDsSnilhbhoFZ61krSh/mhA\nYyYAzON5nQQIhmBuz4gvdpGlEd6E7oUBFz+htYcuA/QW34fyLabgUH1+ggIY\nIbzKfJsvr3+YqE/gpuXeBiynR+AvgfvMxsUWCoRoyZyVE4HrMjj3Vt6QsZVE\n+NM0\r\n=dsMP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4dfd11c21893c25bb072e0a43f7b4f118c8d6d5d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.74","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.2_1599277530285_0.5075936079499253","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.3-renovate-non-major-ec1694fc491a2ba5109dd72432c88184420e8748":{"name":"@balena/jellyfish-sync","version":"0.1.3-renovate-non-major-ec1694fc491a2ba5109dd72432c88184420e8748","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.3-renovate-non-major-ec1694fc491a2ba5109dd72432c88184420e8748","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7bb150fcd54664aa0869727853bfb0a995dd94a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.3-renovate-non-major-ec1694fc491a2ba5109dd72432c88184420e8748.tgz","fileCount":27,"integrity":"sha512-G+ioTiNr4MseNQdsg9EKZfjn9I/ZqnNp0ikla9L1z1XqhjtsjH8LndA0dc4CraBR84Mtc2rftGiPQGq82gPHKw==","signatures":[{"sig":"MEUCIQD6a/sQvDrPI47E2FQxdNbzHdyE2dBaNrCr4x/6wtwUwAIgHMDSP5Xj7czheG02cSgRopqsmbB3T7iIWMzrULnVnYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVEuhCRA9TVsSAnZWagAA8z0P/ifEzWRUg3kw7sRT4/+s\n6V+o2rFHd7E8ZQmP147DTdOxwUU/10UusOTNm31xFn+PUzletFbAVCg/Sp5j\nDqOOqtSN74LoGWPuAAddBKDLaDfrRRb5nUXxf88Mf07Bf7O2pXy2cEB+vMnG\n/jYhTeUw4oVQTiPn+eh9WCLodsc+agNmkwM8Zj+1lUYStqqR5d0EqBsk6kf2\n3gDqs2yVO1hO7FzNZTBhc/p2OHdqXpKUVoHAbpY00sqONCmARXlEYJsWjx1l\n+qJYW2KfVEuyBiV/M9uODjMlMSHdVQiD5OoZhGl8qNe92TQPi4rk0GuEOVFk\nWzxQs0bsryKqM2UtIgGJzNlfhUr8ZIRIj53E8vp12iORpehhlvqy2Y4+W6XT\nQyMdiac0iPcdjwFx1TIdg538EOkqR7LJVj1ZtBVfCZvEEKacCeIpRfIu/8VH\nBM2lAKz/ji1LXiiJl13uMB+QrDmPf8oRo3HFN635lEQAhr5cHhL3+tkzbcTM\nAFPOW1x+G3oKU9ji3pu5Z7iw+ovE+tc23kskKcQ9NR0DdXMJGmIzMm7GviFa\neGQg3Ur0GBhVrLgqQ2vK68HC7/NEFIzgkymuNxu7Zox+ZWRN8tjDp5yacL2B\nrdbb0/uFk3O0ddLYMqWKXRtJxuXsDfYB6uQUAaZoRLxNj+GqN7OlvqhYdnX2\nNphi\r\n=O7et\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ec1694fc491a2ba5109dd72432c88184420e8748","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.74","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.3-renovate-non-major-ec1694fc491a2ba5109dd72432c88184420e8748_1599359904604_0.6057807040652032","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.3-renovate-non-major-54d59a23a4dfe72c135a48ac5158918e27d6dc90":{"name":"@balena/jellyfish-sync","version":"0.1.3-renovate-non-major-54d59a23a4dfe72c135a48ac5158918e27d6dc90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.3-renovate-non-major-54d59a23a4dfe72c135a48ac5158918e27d6dc90","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"faa0add66c86e2c9e6360d8aa2edf3651a99f368","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.3-renovate-non-major-54d59a23a4dfe72c135a48ac5158918e27d6dc90.tgz","fileCount":27,"integrity":"sha512-Q13zGp5gvzGgFF23a/6/lLP28v0vCNqYeL6ePN7YpCdnsRwERgI1griQHAoZR5O2mTvfEBolSlq8oB8aO69XVw==","signatures":[{"sig":"MEUCIQCyNyF54ONL5+T7gdiELa6dY+Y8Fll3UrWVXzi2Xq/YOQIgepbLfbRydezuvNZHK6KPMMe+r59dJ4R+MXvnxF+gvuQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVFP4CRA9TVsSAnZWagAAPX8QAJ3yY2mmJZIbr50m35G7\nSnIeNPR+UxNjTmDy3rr3arn7x8IizPw0t0VbEjqUbLn2XDMflbx/wGrRNOQ/\nu9fC5J2r6EkGKpBcHa83icZaqVq+Qb//pes+If4tq9lnINq0SBkVNGUkX46Z\nTXCIXsD/TyMOHlYpLNGB9dMAr4Rmi3VXYVgopwbrCCZ5ZXijEqY4kr3HgB82\nd1fSABD023CNH3nGgR6r+pATYxQnV9wlhPqbuBljch9mbNuUc8+Qk1u/t9Yp\nma1/wuOi/vmUZB6ruTWbk6mnn+uxYBeddZh/wUSJHjcaH88xqPvXdiEYmKOQ\nyMKclOTpFOahbJKa8IUo7ASAu5fGtQ1y2VvndMKmR/kVK3no0x/3gwQ/D1xf\n8y69b07lY3iUCrxrgfxUU1yMtDph9A6sKoTzv8j5M9CTiFqlh62/mLK36CYN\nbyJ61KSnZDvVt7qAe2MP75kHLrZlW4okK9soPZ7tr43/Jg/oVwsIcCH1STbK\nm2Yf3I3BRvZy02wO92qPW+RQIdkPGQOP0H3pLrq0oXaMwgyn1OG2hNpIO02u\nhKxT/6BImEvAVF29qLxwc619RTRfWxw5M54h/xCnbClauEPd9CkrIRY2MeFX\nEO/w8g8k6Nt6xo3429r4uyTvK6qwJLSlFBe/iST9MSk6RvZSQYJ3ZkGHGqyw\nj40m\r\n=IyqY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"54d59a23a4dfe72c135a48ac5158918e27d6dc90","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.75","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.3-renovate-non-major-54d59a23a4dfe72c135a48ac5158918e27d6dc90_1599362039946_0.7888788045755117","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.3-fix-lint-error-1d6e3319849f8d7200f9011dd5678fed241a22db":{"name":"@balena/jellyfish-sync","version":"0.1.3-fix-lint-error-1d6e3319849f8d7200f9011dd5678fed241a22db","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.3-fix-lint-error-1d6e3319849f8d7200f9011dd5678fed241a22db","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d827d50a522a4e00fbb78f5bfd1a25de70808cb2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.3-fix-lint-error-1d6e3319849f8d7200f9011dd5678fed241a22db.tgz","fileCount":27,"integrity":"sha512-iDFAeboUUBH27htUdyuKad4DKz5iXPzY7YujCKawg2JGXabLAnqkspWB2j108v6lVjTl6EmEEZ0mA/ShiutY5g==","signatures":[{"sig":"MEUCIC2ZUcEkOnRy3MxaldQ6mVZNK8UVyCqllTa4vuwA+xIXAiEA1EOHeKzOx6z5lghc2Q/xW7p6kVT/UTn4J8tqgTUQq0w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVGegCRA9TVsSAnZWagAArcIP/iaNFfzRuF8GH2PQCJef\nEOwWyDb1vOc5MKP2zIHKNDW63hOXh9UkHd4jS8iuF62fG7Gou5PFPcpukUu8\n/d5mc3pCrBbcr0jTp0MVn7/d2Pc++7NCaJDYsfiw+hnE+Ai8MBDqOe2my5vP\nEZw4/LNjeJJo0Qckp18v7AGvCED6wLCIRoqmAYBZBSlFedEF/k92zlwOVkEx\nNEzMoO1THVENsTIx23kWKfvehutfYq8FFQ8P0x5fbZTrgo/XtI4CIMTkRa9d\nKXchr9urwkg8wKHBkMlMK7C0xNb0d4FRKYWinMR504OXHDKqSZHRfYJJmSvl\neJcJaRCx/SPW6Y/W8jR/00fJ9fqA0E2GRJWLwQV2tEqckHz09lCExw+ca2sm\n1+wvtlaK6Qu3CqMOyWhCqxpoZC5B24KcTCqTxP0pXDkJZikUYZrCsisTNQ9b\n2+qUtu8uNC88Wr+tSt08OACu9xqeugndvCEsKIMCc4Thisb9CfXVsnkci4z3\ngBj3dFVA9arkNvj+uCQDiXZ4qG/OzGwBbcuO6VBV+L+Vb2R0DnEne5ookH2C\npb/f0e7nCDslWws4scT2x+s1m9MkqDjfEEY7rZebGsVOQxy08zh7aVYuNV47\nz6mpU1Y5atw3h/qflqwVOV8iOsM2/vddraUzwGmE+XSI/0xt8cFwEDcsWAfz\n7Ttj\r\n=Txpv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1d6e3319849f8d7200f9011dd5678fed241a22db","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.74","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.3-fix-lint-error-1d6e3319849f8d7200f9011dd5678fed241a22db_1599367071635_0.6700379861472237","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.3":{"name":"@balena/jellyfish-sync","version":"0.1.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b12f6bd59ced018f356a9a3d8c8cd5bbe98cba2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.3.tgz","fileCount":27,"integrity":"sha512-QoydNm8NOTk0ILLZANPDeGL9MC0WjRpWJ8NOVGON8GnxNOOFOTAW6B8hoh1B8uo+ndDBfyrC1PYi7eRWhPc/fw==","signatures":[{"sig":"MEUCIFR1T4okBEJve88jS2L9LfhegJR6Kl1hPbNvyeNImOToAiEAkidc8mEf+J2eP36pm4ouRBO1xplsjB/sJFf4F31BjYQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVGj+CRA9TVsSAnZWagAAtzMP/RKyMYZzQ53AQUqJVZ5n\nPfVrJIHBFqyoXbGsuQAFmV2lS5PKRF6tIyu14l0dN1oi5WqlYtiexPqRE8DT\nHc6GAp4b+txwjRBlg1YTIUKjlEBtzhP6pv/E5oqS5GqwnzkFFMVamy/zqsNv\nzX2Ww9r/w8We8QZIVY0n6kXxdXB0QKz6jT+bxJVTOEnZk6V+X+Bj8i9gbOeY\nHAxSxqHuzxjeVgPJjvXYUdJGNC3TAAAXjh5tvKsGcwGVDvjCYX8cjNHgMc8e\nrFuuI5gQ+1Vgzpq+bWsQx2Lja45Cf7paoO809wrX+0zbdsHM6JmD5vFkR33N\njx2MNU1iek3yXnuaVQugxKVrAkr1pGFY3M0iLFgq31Ne0n4muSBayTLLrnCN\nMy8qC2YzWVxVmI9ClIV7OIUkim1d4mMIuMpVel1guszyT3lmmyGVjI0FVhcy\nyIIQ/x85Z+OWwU2GBQd1UJqKkli1v4c8Fw6WuJ9zrRcDMgGvLuQ8ZqYEIU1k\nSl+oKZrXZiw36F/BlovRXjPhifR0iwzcUPeYI6hi6uwbSZwmcjQJL2woZuDi\nJpNuEhG2DuqsIw6zm1q5g4ERFJGdLocibN1cIxOIu1nXbu0NgKxn5cbv/D/T\nJQXhkjqIT00afrs1IHelnfgnLghX8Tq3oBGxsXdIzLE1ucs011rd3cyofWHB\n7sD6\r\n=eMZe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"61f82aa0147576f788bcc812e67282b4258410da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.74","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.3_1599367421948_0.2358732171540232","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.4-renovate-non-major-49263f4b5488a79ec94d86262b1c7ba39e6dee76":{"name":"@balena/jellyfish-sync","version":"0.1.4-renovate-non-major-49263f4b5488a79ec94d86262b1c7ba39e6dee76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.4-renovate-non-major-49263f4b5488a79ec94d86262b1c7ba39e6dee76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1fd4b4b5d46b38d1a8e56c75ab386212a11e5c35","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.4-renovate-non-major-49263f4b5488a79ec94d86262b1c7ba39e6dee76.tgz","fileCount":27,"integrity":"sha512-gJEro1oHvkJcZ68eoUmqfYwQyHAtPntIF0u3cqKKmv03MhcYEXLTI6a4ofPQIMXK6jA0uQDhYJoY1771P5XDRA==","signatures":[{"sig":"MEQCIEX6tnWCp/PUctGpaqVBTB6x3EvjpbiZhCHmmlsrHSAGAiBzQrhba4jcS9XHnouKn9fPKmvuvAvHeeRdpFNKjberuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVGodCRA9TVsSAnZWagAAIFQP/1TaULw+hRPQb1gMHjCk\noCPSIUuGtFCcFL0Vc3kpVGAWTBCSGeWxBdnkMZYZ03E5y38IUc9tS6fcTcVT\nyPdoa9ENEpa0Kc0ApoIpMIx8d3JwnkYL5AKRZ2bkgeaXCokj6hw5/N4i330r\nr2Vtg2Tn4366457anyqFR/hXy0YPiWFmkvCuuWIkcny/SMUjSeCJHSrgKMwC\neYCnYoHPQAx2K7cOz2xFh8hzFpqZKYAobpDa9YX5g3oL31aBaEDCChpcuv7g\n+LhVY8HVbBjAL8obiHsWS+HTGwI5/XHaoOPKRHo84rvhvctC49rQgx3qPV+3\nhbhBfMxWF+CNUirj3TwXRg3gkuL4iO5RNkruN9Aayohjhwml92r6mgfKKTlP\nYSyHq60nwQf9G7RP3eQXbqQJC+DhAH17ExGP/1XW2I+qvV9AzBsOsZ1b9sxe\n4chcA3dMPJ9OTQTppU93ZVwlhJeRdm5RtG2s1N1MTM32Q4RiyebqiT3Hc8lt\nL3s9x+p4ur9bchKJBekaSW6fRrcaTMbJfEdKUVJnkwqR+Ez1+8whccL/rHhd\n/BErcsaPOmJRXoHXopzR1RA5gp7FOpwtCn41wbVtm2RfeZZm40ApCMhN/hIS\nSEjwKAEjrzXEhkTmnW/AdLrjSig0TBU5B+SiNWk82YW5yaT+J79Kio6NyTzS\nErXA\r\n=wdeI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"49263f4b5488a79ec94d86262b1c7ba39e6dee76","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.75","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.4-renovate-non-major-49263f4b5488a79ec94d86262b1c7ba39e6dee76_1599367709372_0.229424257808865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.4":{"name":"@balena/jellyfish-sync","version":"0.1.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b97201b3c98b5ecf99bd364b055bcde4e501c1e1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.4.tgz","fileCount":27,"integrity":"sha512-YTA6qJD8PcIbDPUEMF9kfNcxR1jXqztliOXt6bYxM+i1F80bnZTGePEQi76r4pf2tcBAskRL2QwWDudFnB96IA==","signatures":[{"sig":"MEYCIQDF2LKJctS0c4+ZdVQr/VYD7K3RW8K9mby2R3cl6VRe3QIhAI9PD5bwbdcyAy7XFCokV7bl+7+IaVljQJ7NMBa3+waw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVGqvCRA9TVsSAnZWagAA4oEP+wQuR4vzYa87iBLKe6zp\ne5ElNCEUPjFA8SfFJHYBX8mguy3IHGw0yJaH34vR3IP4bGWGKj0p9C5DTKpq\nvw7ITy4vlSzEzEcEjJ4V8OOZYEPBeLTzlfHIeKIaLxBljRgaZvPOOqpFhN6b\nRH8bXVme2VdNy70NUT51lrd09rmU/SbxGm8wXaNa3c1FPNALpiDMyT5I8ykZ\nVpzqFmEtQrtxzJgungFkSqz3VXdQKbu2i2gqKIerO1haJLA4O6LvUC4X8zk3\n7cIyKH+TCL4ZTvkHMeSxUtWJ1O8BYg5gMIfDDurJt9g3G8bLkZhNZ4h/gkJM\ndgjL4E3qHTtgDwIw46nRhkD8DbCoMNk1m0pFZLNe6x/xEXeAqdkT1dPO+YoU\nXNEcMK/HB2n2DyKZwPw1/IL6CT3SIUSC9nIV7VQO0Ed/R9vm4+z8ylF7OHtv\nLNr6Pd7E8KpuYCydOqz5F5N2ZqOhU7VbvBwyTRg8ZFNYPTZKIFIyUTtVa4j0\n1x+JcoKMoROLPMZSkxQFdGgeL0byF5DF3oJ6b1mOIifVyAxrQuvsXrKZ9gvl\noda2xsEzKgUswmvcxw7XW+h/oFMInS5jhN82ue37lWqL3rbJHz+QJmu3DJfR\ngxjGVSDiB5G3wFA/LjUcQVZkzauK7PXLB4ldH6+x3INE85CA2HGPlXbRVm0J\nWPH/\r\n=/ykd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"d75c966326c79c0538501d44124e71597803203f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.75","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.4_1599367854896_0.13670397959860092","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.5-add-default-files-a5927a786b087dd0add0eff8eaf41c53f0457e51":{"name":"@balena/jellyfish-sync","version":"0.1.5-add-default-files-a5927a786b087dd0add0eff8eaf41c53f0457e51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.5-add-default-files-a5927a786b087dd0add0eff8eaf41c53f0457e51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b200dada1f1238fc92f3c98a7ecb4ed06489c2ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.5-add-default-files-a5927a786b087dd0add0eff8eaf41c53f0457e51.tgz","fileCount":27,"integrity":"sha512-eZ1Cd6wjKmB8o7M088SFB5JEhEbFN5WMchLB2t/gp9kFehnMciRJc12VgBCXM/NHRnqyKWm0NuFRKTOzsM3KlA==","signatures":[{"sig":"MEUCIQDR+ErcEnBbLCuEITHD2IRUS36thTDei0rsI1kDbkZBSAIgNLt8DDAXOfCdTT4N8Vc5/JWo/ca9sozNUfPF1B+Y9bE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVI3BCRA9TVsSAnZWagAAnOQP/0c++RsfLRzOrcLk8Swz\nCiE3GBda25PBcHBFodryQ0dWbkGjTmUbP8wxDAJWVRNnn2g1mk4SYnz1wH2D\nc0sNP1M1bsOce8i2uRevDQmbl5jjw35+K/GVBRXGHczN246fasnwT51aM/uy\nBXGa2W0pp887f3D6ve72iWiGUkWpHXJ+fz/Bnwyo33w+je0IS5PUjfzc1oUy\nLyc5dxRkuL/PRugO7WQe+VD09LHqQSz+Lz45euFLdYweJLb1msBhueMNGSaF\ntTktBAYJBYNzcAkUuK9i15IUy/cCOOwk5EQzDmBfrNHTaEu29FMyYH3lv+yB\n+JDZUSyNuAbQLhkDSi+X25nALkoW91fqiSrBZju9XBYSMsbbilP5YxuBmUJQ\noBv7ablgZioh+njt9pUqJvepkVl4zEkOTZ7WkbGXJhghh55lb+tNjHsxWqGf\nmB0pacR4eysm1yvUhuZENzP6nAtcejzUfScosFtaMvPX6kWEabdo7zcTCGPF\ny+LJRiApOiyPaJcWjz5Ns086zQ3EABjWUgJJimnqsPbm/6dkqXnb+fFAZJEh\nGBPedG+KRcBmzl6LqLIULXGN4aAZ3KqoQW4ZbDHa3ytGU03sXJ1yk9+rS36O\nqB3jCAuFTwVZK0cfY4nZwEaqhMlp5V3cCNpY6SoMffAOcqCGLzLIiNu5ylTN\nNQJA\r\n=Qzn+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"a5927a786b087dd0add0eff8eaf41c53f0457e51","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.75","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.5-add-default-files-a5927a786b087dd0add0eff8eaf41c53f0457e51_1599376832685_0.8948782339699761","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.5":{"name":"@balena/jellyfish-sync","version":"0.1.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"122f31de4ee272fdbb073c8969b657eeee855443","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.5.tgz","fileCount":27,"integrity":"sha512-kxMg93wMJs5iVoLk1kZ7q80aS7jXyAWw02tnH9ONQe928k2wF06QCXJ2JGpSvnt48uhUqe1o4RLRn0kklmjkyQ==","signatures":[{"sig":"MEYCIQDQ3pjlYAvKlkhKQm1vDjbGhUGMDY7TzJLLkoDzUsILKAIhAORxcTn11oaVBgVYXylc6zkhS5lQNwac1J1/yzo044p7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVI7JCRA9TVsSAnZWagAA5XcP/0IvIETaqSzIuPkX/3Zs\nVuvicZz8rzY/+vFPSEU0D9m+83ei5gXbyKbf6wBFpmF8ZxzCwGl+Pi7fMkTP\nrbpQhD6Txra43dFdGcIMruEf9snVeeh2XQscDCczVfd3PI3ExTuO8gsuwxWM\nezd6oVvpTBszLbU2TkbDn4frI9a99D8hdgiyRKTyJv0STJMexvuV7H67fAvY\nKDyNfUJXuwfvPE2zXhfSUY0AKetwB8FQGdpbYyJEHKgr7Oe+9poPMbI2/opm\n6OQK6marRJUtapQqTkOZSLCEStqYI3zs3DGnPW9IlYeTR1Wuy1bwqaTwhUiC\n2KJweYFNHO7rZIADfGf/0pt0ivDApD5Kf8AIgV05DTd8gGW8B3wAEwEh/YbF\nSBd1c3mKAbVvAqRUkyde+FX4tRXrck/Y2HWgUzFdteW8iib8yg4F3RyAGRcM\nNQHi4okGLrBgsPUN4iSgAxYLGCLJnYnIMC506ZASSEnZz1eBZ3KZgt2DrAAU\nDu3rLsKGPRtxMv4LtaavW7ieSfzqAYq4byuMtasyfftMQG9b6+iOUgUXaZSj\nO64e7GZVq9KGCCkBedMMiwrpakuH+rYOjEq+wqAY6kLgcTqavOtM5rm4GVIa\nVfOMTZp+MgMARa1Db5UzXQZcYQ3e8rj7FcHGlFokJSyMipgPSAEfCyy7jV91\nqCMc\r\n=QyNh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ef5d7a31cf998c4fbfda3cfdffdcc4587a0f21c6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.75","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.5_1599377096899_0.5595957994613554","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.6-renovate-non-major-ac9f30f1dca888b31bfd0e504ee4eefe23488282":{"name":"@balena/jellyfish-sync","version":"0.1.6-renovate-non-major-ac9f30f1dca888b31bfd0e504ee4eefe23488282","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.6-renovate-non-major-ac9f30f1dca888b31bfd0e504ee4eefe23488282","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8d734f39ab84c4d25eda2aedba5b32a021d7bef8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.6-renovate-non-major-ac9f30f1dca888b31bfd0e504ee4eefe23488282.tgz","fileCount":27,"integrity":"sha512-99wT0G4sdGdZzGeSnxVI5SdryHBgBNxSIQeVs6aVp5bAKzdDdhokJUkZdMNJOYg++9YPIGx0fnTvOZZ9AWgljA==","signatures":[{"sig":"MEUCIE2RZOCcSyXlAlIdi1o/tmTE0k62wc0bSPkuYUwOJ0rYAiEAnoxIBtXaQyWgxv4irgkG4fgN0lG148Pa8PZQoTj8qTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVI/tCRA9TVsSAnZWagAAs2kQAJMt/HHiu3L/2k7GYnud\n+kdpfY/RNdSbzYTEoyXfKKsn8DYNtS8oD5wc5tuv3h+rT5MgoPBfdoVmo5qz\nApZ8U+JMXLS658y35ZXMgvkHWQBNE/YP7wcmb4FVuE4gGkhlXmTVPGb+2uGI\nxNsFh/LGKo//4g9RfAxWvEA8t7q7l/lOc1lP6rnAfrJPgsFXRhqGYgzcYnr3\nxP9mnBDoNj3RXSU4vxuRsBbcbw6owoaKAp2wz/HlXju0a3y9qzGbWEXUkSne\n9NDQbqdkoR2mIw6Y8o3uLWpPv3+icYiXtsZ7z+g85rm/AYamuewl3/aAnhfE\nET/eGYCP4LVGJiDrokYzx3kYUKaYBNUfFXBNUmX0zYo/7nd9mZlpXeVuxcQE\nCPYb+XGfk4Huss06RJfuNfy9k6Wxv3jfKnrpcgDbTJLyWDsATchRHH6dFXz4\nqyzpVzQc1SqoBXOEfOfn4wMKSElDuMOJcP11ueT6V799ZBZYmDd7HlpJrrNy\nk2N4CqFfXdmgh4pDREBoLgLZDyIf9OBwZpbHAZYeMvA7dEp9hF1xTl79m2lp\nwJYq9a5IOXe5RToMHVrZdikj5jJT0ZOUlT8o4QNSlC8iprGrNm4NIFU2wsRk\ntAPqI2ISBGDStfbFcV6eiFRT7z/ySIz9CiQcFDjHjiVbUImQAStLHcfCMtNE\nQ9aB\r\n=qPbQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ac9f30f1dca888b31bfd0e504ee4eefe23488282","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.75","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.6-renovate-non-major-ac9f30f1dca888b31bfd0e504ee4eefe23488282_1599377389202_0.06183039707561999","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.6-renovate-non-major-0dcb4c820db77c7af0b7c49de886328862123ece":{"name":"@balena/jellyfish-sync","version":"0.1.6-renovate-non-major-0dcb4c820db77c7af0b7c49de886328862123ece","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.6-renovate-non-major-0dcb4c820db77c7af0b7c49de886328862123ece","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88b71cd41ece965e7368fb1548a038c164d935a6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.6-renovate-non-major-0dcb4c820db77c7af0b7c49de886328862123ece.tgz","fileCount":27,"integrity":"sha512-lb/aepoobvze0KHjXpRLwOnk5FuFDd9Q5IT9EtKnvCYESZy6tjVrZM3KK8w/B7GxkiC6r2Rh7JOPE+XXutL+rQ==","signatures":[{"sig":"MEUCIQDLt+wo+lroWj8ZbgspXkLEbxsC/dbTbS5DaVjb5/YRfgIgLBbWGxudtcVQktg01Ito8zf5OoSPpgGwFpqtXFrEw3o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVJDWCRA9TVsSAnZWagAAwiMP/1U36o+WRCfonMYNgAOq\nHq6UD2q1dRziPAdDajdYu04aPk+4p16b9c9DqSfxANVwKOmiWDuVdhRdx2+r\nX6CyAZTgV1kXDJuU/iPqf0AtHncvwcbyAdHhq8dPU1TNNwlbCuu1ZxEOpiU1\nPWdfeeu+3ndePnFi+fUH9aEWxpYC7pnBDi1cSckrp0JFs1/RQST5yjjlohtR\nxXzo4QeeNP9ts/D4Dt7gByOpXu1/E0kyHTibuiOSmA64d3A2ikBph9Aw4kqS\n1S8EIYFD9DeL+C6IGaFRNm7/jJ/qygIYApSft5Qxte29hlTfxiAu+g6aK6nx\n32TVOvqydsKQUM9D3AO77072+9twaPQiGIDPfqydFZPuXRv3sr7DGZRT8FrD\nIBUsyrjvLehpbLeh30gurOmmCRTcwzXSpQpFcyWtjCJTYQt8dFYV7ZLXqPHc\ny/e4Fkqc/i19klpEtzLiJZBfS1ATKjTfQlooVy2T1iC1FQIDxb0JDUGpUKdV\n/rL6mmlvFW7K0XYw2nwsaPjxOtZdqTDAD8XLTwuO1sxVSomWIrzmnbwM6ZME\nDVemrnz0leT2pPy63O3QBrLDJ53QkEVd8RpWyMWP5p3277ihbjgQ7WKMlcwH\nfERAdUIohy3TPTuBkc7AS+10St/JiI4c2wCa+bNiHiag62ef5ajSVcQF8mtg\nQkRc\r\n=hFUd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0dcb4c820db77c7af0b7c49de886328862123ece","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.76","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.6-renovate-non-major-0dcb4c820db77c7af0b7c49de886328862123ece_1599377622351_0.7902684046644171","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.6":{"name":"@balena/jellyfish-sync","version":"0.1.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eafb509d741c9862aef0272f70456db59dc93e3e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.6.tgz","fileCount":27,"integrity":"sha512-nugrd5dZQekSPiKuqN8OtnCfVMyMSpJi6X2tQ3xa4soxFPRMqjpTFvvh7eJzvvZ7lMwjc8jl4z54EaI0dw7yoA==","signatures":[{"sig":"MEQCIFZwXWCkxLtSS/Jqx6xU1mgFTQ5fOMDPcM3CKXzRZqVWAiBO9Tmvcmdnf92sDxt/qyXyIVYHGWQbHnVEq/Ddr+EQfg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVJIJCRA9TVsSAnZWagAAQdkP/RupMQu1avxNIf6ugj6c\nIak277Dkv/bK0fvy0xVFVvZIZhAPaA0y8P2keZTagOI2W5kbuuP9YH/NMVv3\nvjElZOqe0aXJtRHYFZwXQPeBReQOYUFFjTHdyKyzPlbZN0Un4giKZHs/Mpyw\nZcb2a0ef6saVBp3FNakZH/j/SsO7YDEyNJn1FYvzbKDN5P6lgVcpHxCpxJ/0\ne35RNosi0MjnS46MTT8cxXENXWS1zQ8nkn9mWCWyigxAGKvI5MrsxVciChcF\nemMpC0q/vh8V2ySrIuKCQ4KSeZR/VpwBl27sFDYGBkpdOEqKIfgCSuqOCp5w\n70AsDUr8s9N/BHk0oJR+sYqWwfmq0BYamsu9dfud68oVzZpMuVPti0lMZYVS\nSqKGxL23ofNV5B3adRiaP8GdwtcnCEPVnUeYXzlTfb9dDFIoJCB/qAVl9OJn\n51TjF83heJ8PZ2bKTbNF/S+k5FmP1f6u2nSV/X3RLSDSB3iH1rHJ/h+F/d5s\ntgjSy17NA+YJzZxmRZonia96IiKvsKO6OjC26gWSYUk2+URGsvphTlIhnXPd\n5Wh5H/KmqjsqxSozCMxzF0DfNVzxEscx425s2TyOkpOxH5FtEFhXfnfYfQBT\noUNDAQd33Hh1MLDny1R+iIsT0fFdplBK0mpBEL/ppquoKpRN8K/BwY0hhRTO\nFuLF\r\n=COVd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"152bd54a5fd263fc7909fc396daae39c56a26670","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.76","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.6_1599377929394_0.8798647309370935","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.7-renovate-non-major-92112bc93173322c6b2c821958caf80b5f4f6e4b":{"name":"@balena/jellyfish-sync","version":"0.1.7-renovate-non-major-92112bc93173322c6b2c821958caf80b5f4f6e4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.7-renovate-non-major-92112bc93173322c6b2c821958caf80b5f4f6e4b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"310d4a512dfe276d79bc4641e6527918bfbda6be","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.7-renovate-non-major-92112bc93173322c6b2c821958caf80b5f4f6e4b.tgz","fileCount":27,"integrity":"sha512-NA1Wyb2qq/aafihQWZvR1gKeK5HjCH9w6sYOrUl7C5z1GBL9bbre8mEZjuWFzKpwAD4LpaWHuvsmgbwy12yceQ==","signatures":[{"sig":"MEYCIQDrahw4ZSBDR9Z85Adele6LPii/6dR8n0Dk6gqeBnPOwgIhAL5ESmypIR2rWt+zYRuTLz6l92keVZvBjSuiUKdMcPZ8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251557,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVJM8CRA9TVsSAnZWagAAVX8QAJbW+vfcVZH5FABp+FDH\nB0A29l7lE1nPOpASJrtU82dxIVGUZrj5fqpH0k1q8F/Hw36j4y8wTsoJAIb7\n2EjN9vtR76pkrJnObEDeVFnsvz7FFv19/fCh7mbP8fjXt3wXdedDh64GhJiq\nWDctuc34OH4077OdjzTSei/WY5nu2WDBBNyNqpubzV6QwL0DG1sNIKY0a8eD\nH8PKIicuAzpp3/+ub/XOEcjG04lSP+0A4P+Ye/GQCCx2uhdVJcyVp8ajvGNa\noiV2XtS9gJOXTdXf8UgRM4Xz240uopLZx/lUp87Ax1t9HKn+667HCdrrxlvN\nEjjL08OEWCA5DIK92NhewRBItUdqg0AI8fAPqsMAaP+u7dVMgx+dW6ATcmbw\nGEfJlLdy1wvoRBxj3776V3f3h1Whv7z51bxicqsVzwkJV8Ghcf1P6rOAlcOW\nZiuMBCeJkdIaTgDO2KGfwFqXyCaJgtFRSAb+S51+huM3qFlGhjeaWUlYAJKN\nxXPNK4fob9LbK7qXg65n8dcu8mJunr0hPCbM1CFMH5dKQRBFwK5zaqEfEq9R\nDWjinGthQiOAG7zXLdyF+I62VzBOm0b0VDNt6/89iyVAl7Y/b1mlijk2UKyL\nzfyR9QPX5eJ+sFcOosaLNy3EtTbS5Cg96X5htelgD+3E6+qaOYnfzWdkdbkv\n0u+U\r\n=LcvP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"92112bc93173322c6b2c821958caf80b5f4f6e4b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.77","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.7-renovate-non-major-92112bc93173322c6b2c821958caf80b5f4f6e4b_1599378236120_0.7046843216716299","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.7":{"name":"@balena/jellyfish-sync","version":"0.1.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"31caa047d034901c86c09804490616a289f5d932","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.7.tgz","fileCount":27,"integrity":"sha512-4hQAhKfjBRAYs0xfZCDhoWcb/4LlLC6Ja09DWo70eV9sh2w6x75N7n9PXwFQ+okarwp5ZDBaINxcHgpSZn8a/g==","signatures":[{"sig":"MEUCIAkD6hXpZx2u91N7Ou+vSbM0Pd22UpfBSLtPGvhUtgNHAiEAwcrz8XD1ubIIlfDieI8z9wxlGh2g7RqX84Y68WxhJiU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVJQ3CRA9TVsSAnZWagAAJyIP/Rn1T8++VD8NidHtSMJl\ntwD/0vSlktMRZ1fOwzjl1YuiQSLeSZU46Die/eK/18YpRfykhcbFf5pgdUpS\nUWAxmEfFuLvKvT2M395CdFOfOkNvFLkY2bj9ZMHZQsEP29YQ1He/alQ78748\nTS8yk5hrAND1W2hdcgIJTv5+woAu9yUhyyMJEwj1j1tVjrjo14TppjBeFnMN\nbBWp7q0FWXiBkmcK1T9ykiiYG+T38y2ljxs3lEYVpSsmdWkf3lgWcbOD6LEC\nWQHeA5I4x34ukxKftNhj6E8pwVncfa71Ic7+raucY7xPo1T53nn//s/x3UnJ\numxGC41UuIjR7rRk1jPnaz29maDdJDi2hmYM3SJGaCyLWAigV9PTNaeh803K\nkX74ZhNnUiGhGs5Alse9kSGbYFh5Qbu5OMCp3/MdX2b4ThX5x8C13zdGzyE8\n6mpy2mIvCE6puP/eBA7ZJVGtTIaBzsbeBdBMPOcNAma4h+eWIhY36q5xYSwf\nRoMYnlX1DnYeynX6flAe9ufWc3EWGS3bEs1rKyetRirWqUqysELPaMVBd+tc\njZwsv3X2d7+deuf1sToNlxwjziiydnV4bRdaV98ao6wB/RQILH0xxf8Oe3Jb\nYUVZn4OeOJY5XoPsaadr/2BgVh7hNQVNQPGxbTS0SxREEoNJ5kyiWNwfmmcH\nF0el\r\n=bdPg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"94d6593e118084a996c3c9e5824047dedcdbd9f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.77","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.7_1599378486599_0.7683263439202026","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.8-renovate-non-major-1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2":{"name":"@balena/jellyfish-sync","version":"0.1.8-renovate-non-major-1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.8-renovate-non-major-1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7bd596f0d54543138f7a2250d5020756707625dc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.8-renovate-non-major-1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2.tgz","fileCount":27,"integrity":"sha512-O+MQVp63wNUGIC2gVueJXuH8Ujn+fQY6Kpn8rPiQxloh1bFsGtmc+a6rBvAir5a0WRicFA3DYJkXeZThJNqRLQ==","signatures":[{"sig":"MEQCIC5eBi+lpkg/1GdYEVsUUw4+6X6Wj+G7W/BP3L4Z3MzLAiAk8+Rt7uy2CGelq3EKrZhWR1V688SEy1TCeWgeUPoF6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVKBNCRA9TVsSAnZWagAA02QP/jGdgcQ1j5RblpDjEzDi\nG4K4fvBW4IUqZ9B40A/EXjhEK1m2zTG31QCnR/l05nQuogHPHJdmCa8E1cYb\nFuiRpZccbyqIvdXf/f0QQtXenEo9+Az0RXR6bD/lyT/HwR9i0HLAVL06AQq4\n9wmN425JanA5LuFZsoN1OFNYwWO0YXeWJSbmeCYMCsSxrmtfkMHJmTTlfPTj\nXm42/0u9EfxeeOoypHPF/nOTyqiV0kO3co4KI5quoiW418xpMsJHCW92iQmw\n/80v08sp1mYkzt1n/mnaq15U1S0vI0tjmxait5EWLB7UzU5BF6J4Nn0bmWxz\n4znqqMISb3S/sQ+u2dyZ9KNDu1LDOs4rFtV3iXwbspbGzpXe/2kO02E/+j+J\nYjLS3kkcTwa/H4T2T2U+S5O/lcmOC8RAzzuW8xG93bit+JwVscKxC+z96w/s\n1SuUf2dj9ryp0GZxgrA6zqnrHCHjn/PjbSwJggHOdemhBR+23TkLYP+q9g5S\nJ0NsfK5VAgxqivjnuYhrbLYXD16uvd7ZDUnDiA4y4XwxjZzPIMI7c1JPCk5D\n0LQ8Dm//3XgAFRdAOYDSfvN/MYmXbQVDM0KxTqfLozjUL1ifw6lPpgEU7gj4\namm/jGJaxDNFNLEmplDoH+LnFwKODITNWdHMWAIhv5nvTetHzgmZbZOuDTvJ\nqkcU\r\n=rXtu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.78","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.8-renovate-non-major-1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2_1599381580651_0.9812882792512774","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.8":{"name":"@balena/jellyfish-sync","version":"0.1.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c442cbf14d86e3903f530dec56ce2387c74e7cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.8.tgz","fileCount":27,"integrity":"sha512-oX3wrjDNwEzI6nTPqxKI7K1eLOtLFu/FolhCvIyIdxH14EGTexJbhr5M6+FoBbxg0okWgSYzoGBhKXMCH+j0rQ==","signatures":[{"sig":"MEUCIC+iT1edqQ0D2RJLRzoq+IaFeTDEzFd6jO+9ad5VpvzfAiEAquO+hXoB0vY8V2ySeR0YiwK6vWD4RdFsNVKH8bQPdaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVKECCRA9TVsSAnZWagAADZUP+wTcypMHKJ4cWuJcE+Be\ncxvkKRRUTH/M4LMwyJPsGfbYsLCc0voGGMnLVg/f78IA6xbcyr/YhTaKUfTR\n8aUGChziF5vrDpGzGEg9HtDJLn09LYvRE0vcq+8bVm4NJMcSWgKTLVW6XKSH\nQE6O5TKnju4XSG1YUFbH8xqOJ0WC6z4Pp9FRe10W7dEjhlyTApUMX3DsXpeJ\nuIqAIqE3tZTgpfZFT7aL9W8jsipa8V8vwqPgLOQ/623xyXILigBdSchlenuw\nTCNd0eSKYBvYtlAJBwoNPlI9IDiRwjA9SaxOoCxplvFr7Gyq5oTZrkQQoP+E\nQ7cFF8auqoIXqKuK3Jhv7piR1KOLyHDgCG7LU0ItF2Wl3FRR8u3c4NSMBuQF\nHyAiplTqiOup5uaFLBwOKKIbcig01YKEJEYw2FsDtYHtGuE5zEu7khYCmVtH\nIEbWBvdVSQZkkDxB5h+hhytnLLm2crx3mLYDPMRFwN7FI9ffnaphJ+c/pc6N\n0qZS1JPG+FWstfoY28CIGKF527fHVEZOxgHFmfZAvCNNWwIN6v4/zxmNx5de\nwLJNsc9tjio6qeZp8TJSPqQX0wDbwFXh01kKv8c2+tXCzao4nJc32RO7r/ll\nPSmgXvRdswW6NM+4Vb5G8+m8JMKRZ+nkteLhpEkteYgwzpLFtU32jSQINSa/\n+3SM\r\n=gXAL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"8379822922982996915953a8dadf6e8aeb020583","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.78","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.8_1599381761783_0.0024988326220758417","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.9-remove-node10-tests-4cd06e372ef40a1a97cfb50d4445f2552258a4be":{"name":"@balena/jellyfish-sync","version":"0.1.9-remove-node10-tests-4cd06e372ef40a1a97cfb50d4445f2552258a4be","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.9-remove-node10-tests-4cd06e372ef40a1a97cfb50d4445f2552258a4be","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"76673535139e9909e2419a6e61ef4f949225ad48","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.9-remove-node10-tests-4cd06e372ef40a1a97cfb50d4445f2552258a4be.tgz","fileCount":27,"integrity":"sha512-asWAJa9OLBrohuihbYVt02iVV8gpvr5HBQyOoaRpowjh8bZ5DCE2QhsUtZftcTQyUeUf1IVH9/sAl8lVHskjbQ==","signatures":[{"sig":"MEUCIQCoGYUoUfaF5DnJnF6NHLRPplpI+HEf5UvD+P1567L1+gIgIjnYbgUFLVXSHNNZ8M+pQWmfAD0OvPm4SQ8vmyZa/ho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251739,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVLTxCRA9TVsSAnZWagAAs7gP/izPfqUiiBxQdaeAJPQy\nnmJVsxyMTrMwki1k9q/15byqD33JCltQuHwic445t80HflzY1YVQtk+oUqrK\nXGcl+h6cLsCdbRAYDHa5jmJ1m4bTRy8atNt4fjL0fKa4907eMlkb5jYhuO+a\ndqT/H7g/roVjX1n7/2PVwJBOMRu59HJTCtZxEcMMcARIRX2a7wC5+a02EPDU\nZKynfEEqdqEm/tB96Z+A2hya6+qV9jab5jR7LijX/ONoiHahIgbqgBxIYjpY\n+bRJJCED55KyGnW6Y9K3+ENQK/5XzdnmmFXNLvY4OQqxR5GYA4BbcilQ1KTR\nRoG+OAA2RixZG6Yj69o3xTqMr8cBwH1K7b9UeYzMZS2/BK1CTKZlUfwmxTHR\ni20Ft0b0/NTKeYfhWllSbDiNzOTXC3k4w6lFKS6+RMM4yYpnoflQiFzhFZsE\nKUxUx2BsFMbQVzCF/0rCruwCBNJKs+qdfgrcwNvClXrVK5X+WFCikMAtLDcO\nhkBu9MrRiNPHbSiiF5ZfYfr0Let+yFvDLjZpX63Prk3h2Q7muh947M8LJ/mm\nrZ28tcO5ozUoXGsqYIWTC1nKnRPbmOEYNyfmbJyL1VrCLynUkJG/DuvyE1PH\nwvQQ7g8OB2wKhNtUurMN6BA4mnxQVwKpAe4J58o6kSPVFYoRG1LTTY1q3W66\niTdP\r\n=yqVO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"4cd06e372ef40a1a97cfb50d4445f2552258a4be","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.78","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.9-remove-node10-tests-4cd06e372ef40a1a97cfb50d4445f2552258a4be_1599386865412_0.3875361984670691","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.9":{"name":"@balena/jellyfish-sync","version":"0.1.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10c74fb84ff48405b8404bae425a42502ebf6985","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.9.tgz","fileCount":27,"integrity":"sha512-zztX4W3wlvfn9mhQxQUPUuM363SFzNe5YYx8GXbl67XsbB5rML76nnUIl4b8V3H7RHd/9dxi7wnkvklO8b7HcQ==","signatures":[{"sig":"MEUCIQDT06xqdjalUwuyppMacGzTjLmMIQsU0dRCaTIr5fA3/gIgRTXQTTmqXwagbxjbSuQI3CqoTB3+Wu6L0lzjfiPbjpA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVLXWCRA9TVsSAnZWagAAemcQAJeUBoc5WGK9maRwfX2e\nwrlUlApagEWscRT30Zz02JYMCs4SByn28uMxfgLriJRB7PQOIsskGeIvS1Kv\nsYNDl3/RPouZM2qCkUjGEpi9W84GueniUq3CwDTVZxGHvJvPyYXefTRsvZNW\nAXqH6vDWry8slA4GwJfzy+GMD4bKISdjOlGDRWEBe+0xdCnMqlQ8ZG7HFSh/\norpFeG7Lr6jRgSfBX3YDNPFEAcelvPy9x31zhUfKprIo432vyAbfZLcNGtBx\n6G+LlpnXUImg4iGqs+36FTrkniQ2TpabHlhODj98XDzNiTQEUvJmJ3Uo6rEw\n3+aaf8hqb/i8+f+WnYBq9va7/tbKJ1NuMu4EVkD0iMH0CU4fVx5Gq8xNj28V\nQRsdnoIWr34H0xeIjHkooa3BdFO23Sfn/7vNlQIYrOjxbx1PDqcZhLLT8dNe\n4v7JzgAeuQQgB6rrn+7J/ov2XrGwH+4GEh8X8VzQJ1tgeDGAre8DxBjn9Alu\no7Dnym0O16CW8O3aFwlYM0WH3AHgm18kOsgdiTHbyUJI0r0h4Nq/ZPBVJrEc\nOyuDti5NambzX9Wx3SFD4tggFUI+G8Jr0PrWQrb1nZ9z9Fn6/eiACzi1u9K/\nnu8E784Lhx8CO36bLfYQDlk4BcTaTYpvEOemlJ4hnDpun88edT9UcaIGwteq\nbfvG\r\n=apT9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"c9bd48885887ccd536bbb1c4924bf1bd52acd583","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.10","@balena/jellyfish-assert":"^1.0.9","@balena/jellyfish-metrics":"^0.0.78","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.20"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.9_1599387094016_0.40946854460643145","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.10-renovate-non-major-7f4726b171e76d6f61a91695a365b779d9439f3a":{"name":"@balena/jellyfish-sync","version":"0.1.10-renovate-non-major-7f4726b171e76d6f61a91695a365b779d9439f3a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.10-renovate-non-major-7f4726b171e76d6f61a91695a365b779d9439f3a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29ba84fb407e5b20d6e2e517e3f99d425fa7bc8e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.10-renovate-non-major-7f4726b171e76d6f61a91695a365b779d9439f3a.tgz","fileCount":27,"integrity":"sha512-cLtV6o55z5iXhJbbw13v7M7XLI/gBxVolv210BX847HXRZEwBvD2YYlTrFsJ1OHfGB7p51PmOcfZwOn/U31nTA==","signatures":[{"sig":"MEQCICY3P6hK4D8ZKN7+O4xzb0NIh1NpvnLF3p/Anf6OryZIAiBIbbLnK3TtRLAMvfqFFy7yP0tAFgb0Uttem+XoiLWEKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVMWLCRA9TVsSAnZWagAA0soP/R63spNVkbjsuwLOGDoa\n6Xno//NKDqbsr/7kfUARDGxlyzISxNO31Mp4KMovtL7wotRb1r65uBobKAru\nvgB8BOQrWGR22GoIiFpknWKp5K3Fbq9ezgOu5k0NtyG9nn4ZXFp41vFPM8BJ\nxAzVDGVXt6gwElWyTPM91U/tOtdXHNroXRJO7jDqVgTToU/KIrs+cE0sGDri\nVuv6Nk/mYPlO+mrRLp4I6x/uIIxHobTK4vvtmbE9vZJ5DZ/ClfVrUHkRWm6J\n06m66/y3ft0KGRFoXzXj0c5RSE4541HtgpZNcHGaf2Gt3xMYXD+H2lD0qnet\nuYEj1RgBdJgQSVSFR7OM71jNKdfm8R7sI3eH/LQ6IiF48ctTbMOSajlobwnQ\ntCBmMxukp9LHhJfcSAEHRNsjCWp0j1AhVwocKwyNo6AFjjoBdAm3PaQ9EQy9\neQGJavEXdM8i8fEs2IpNeetUUK7GyTlTdawqvaslgd7EmSFpao7k3t6andq2\nl+Z9Wj0m0at9QNvJF8EFX662MhWV4szhCc8Cn1M1ML6A8f0mTBCmqRfBqW5k\nRjQvrdZBxOejJDVmo39y5ucYzdYMpy672VfCEhRBU+MQYMKcIH1lkGR66KaF\nqOKs6YbdZnHxtztv/lXmjCY75j55VYcT16gzKNIWbV5/SOl7cQgxLCoH6xXC\n7MRJ\r\n=c2w0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7f4726b171e76d6f61a91695a365b779d9439f3a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.79","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.10-renovate-non-major-7f4726b171e76d6f61a91695a365b779d9439f3a_1599391114790_0.529722195683807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.10":{"name":"@balena/jellyfish-sync","version":"0.1.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be34d3412cefd7a8e132f012b496dfc5f9f74707","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.10.tgz","fileCount":27,"integrity":"sha512-ZNLGFJQabMq7F/goc4Gi2tI8bt4Vcq8S/+Y01z7wyFXCglcq2ZunJ/gI+tzEW8zVOfAKp09hZ17odH/bGAJN8Q==","signatures":[{"sig":"MEUCIBWr2rqyBCBkeN1hzofSbvvZ3TSStCSo7V7FL5qvY4tPAiEA/Ubtabj22QG1TxuRaO55I5IIPGVZUyozWhJwZMi9fXw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVMZECRA9TVsSAnZWagAAevAQAIdG3BhhBhGSpG/yiNNA\nCimHLv1XIPEwvKSJiGYwyQCB3tHiBYirRA5gjjeJtQ9y3y3LtUhixET9GRGI\n5+NXHEMh2rpXKKHlD05s6HordcGY2IEbRVYU9o9/Pzx8mKk46ww9002rSNCP\n29sIgaxCAx2zjkmN3qBYErd70bQT+aBCUyx9654Y1n4it0GD2Yk+EZMik7Nl\nnOKI5YnZYRbCQSNQTN1koSaXMbhz0DjH/qVWLrVPeyiRf82B0zYm52oMBe2M\nKNb9ppZ2cg6UhaOvMnIf2buBq1S6btOcFq1mqueD+bAiGT1SU5wZ+x6vbO97\nnEzLJ1xyvvJW967diWjkGQwLTmmkiKwraVgTNGfabSXmhI0znHnHcBqx02YQ\n5tv+ELaAqaHjRBuXaPF4KoVDBO5LwUwRpxfEjvoTHlV59YVe7iPfaXiW400+\nCo5QymTgWTeT3iUdf0fPvUqc+lDwZIPt2NBxgJzxSwFRaNWymgEGQTt5cblY\nif1Iq2KLdMSBH7pbJHC2o4jvpxzlxE+bsuanyoXtHP5cnKupTNmIPzOuaJQN\nI2UHWcyJIJtwC3fBIPCp6ja4Fd05Yqx2+CP3IHtLpvsmtLHfuZMAQp755GRn\nVU8EGyV6iEb51Qd9R6MC22iN5rUlW5aRfSbcBsgcdGfkFiL4ZMWX/KQi0zQ5\nRIFc\r\n=vot3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ef66d50c339a25a82e3b6e166084593933ae2107","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.79","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.10_1599391300026_0.4287043411113802","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.11-renovate-non-major-0c7e07141b0ce44aefa60740f5d1c3d83fa78773":{"name":"@balena/jellyfish-sync","version":"0.1.11-renovate-non-major-0c7e07141b0ce44aefa60740f5d1c3d83fa78773","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.11-renovate-non-major-0c7e07141b0ce44aefa60740f5d1c3d83fa78773","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"82dc82e0654c440421baa8f911a9b8b92f3fc137","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.11-renovate-non-major-0c7e07141b0ce44aefa60740f5d1c3d83fa78773.tgz","fileCount":27,"integrity":"sha512-F35JmSn0E/gh/vUn1l5+CMwsBNKHjro9GZ0OsT5jH9fzbz9kHDher23+FBjuBy4URK/97j7j5o9IumWMoSZG4A==","signatures":[{"sig":"MEQCICVeDEM9qQaaHxX8CND9WE1ViJYbayzetHTx6e6XZ/cTAiAbhKXcC28tJ+Du5mLiHIDkgk6yhEc30njQXTjzYH/pow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251916,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVNN0CRA9TVsSAnZWagAACygP/0vkO2tJrPYxDF2ShUSm\nY0mvIlDx7I+nmIqxTQ/IEWCnyFTZknE2Y4UBMUxj8dHS2CJXqVmWNaaHb6oi\nl3+uKnbC9A2dmjRBdyEWn/MK2v/9/b6oWV+5OfWAIpPLkBeCGgjcJ6aiM1wl\nGRTU37tZ4IDn6A5hfPK2pdEnnco7A9TQDIQGsV84+WLxjEcwKIgMlhtUw6Rv\nDUcRN6Xy7iKca4iNRzXmC2K8C18zkjPL+TvvImP3alFgixVl+kqKy8rOPIDX\nujUqgBguls/oRQb3z/RoGm5IOV8P8C6WahwzuacKTLUsyz5DpN8TYhoo28me\nQ4wBGMrnJCYZtHiP0YnbBCa3PixJQfnkit5GbuRfpzquWvhpE/B1EdlAVO0R\nfVxVtZSPASC/jzyNmgEJnoDJxFsL9pz8iqrl/wgar5QKDwtIbNUqe/5jobbd\nrEMxkUOuXp3JhTbitS3r6I1U9fLbkvNauuCHZIJBeAUf5CsnO/FOzAR6GPUA\nWM3uqPFzrXfz+EqbGgqM9sCPb6CJ+zqUJfhH+2tVy78aB3xL1JAlg7oeRyN4\nyMHS3vaMmufjWqaEhHVri/DQkSB1VIQIAT9QWPbksGIAfDIaZvhG85XSwfPH\nn4M2f07bbejY02YyNuTTSzAclcogThs/ErLfI2tBs37e5DibOnZ+P8eeuzKg\nNUPu\r\n=SOMw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"0c7e07141b0ce44aefa60740f5d1c3d83fa78773","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.80","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.11-renovate-non-major-0c7e07141b0ce44aefa60740f5d1c3d83fa78773_1599394676122_0.42044996583059313","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.11":{"name":"@balena/jellyfish-sync","version":"0.1.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"petrosagg","email":"petrosagg@gmail.com"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"37eae8d97b0fdd9cb18d794cf9bbb3e88a88bf88","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.11.tgz","fileCount":27,"integrity":"sha512-S+nEGEGIv3jgM2b2IC/SWS6gRPYK41HDfIaxCxtokwHJhYmbe9fviv+gqdVq+MP0KUmi/2eUTG3r6GDI255mjg==","signatures":[{"sig":"MEQCIGLr3MSk07eYve08kMNfcmQ7l8mCYdaBz7aoID0tNYE+AiBiPo0pGY+D8V8Y/snL1PkSISkYBw6ZM1JSIz29WLXx2Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVNQzCRA9TVsSAnZWagAAu/0P/3qn7llQBwYVcRd1Wrqv\nmyfoUHi4Qc55/SGWV1EYZqHTuRXVCATskf7gxLijeQyY1ToPDq1cbKIZTsvb\nA6NusaLGRUq1M2tW2sjMjq+CS5xL94S3v05VpaJu4M8wQnS11Bj9uduh3p1w\nPyMZZvwiLvQVk39NLTTQabArYshnoN8IduNDcouFyVEPxE9uziIVRbbJmuXg\nP8bpE5EOhPNXcVu2PA/3NIC8HB+52ius2zj5vp6pPdLpdrBv8EHpCasgg/LD\naqswcBn4Ln6AU6wmHX+ENdrhGgV0GN5+q4+pSpmtoniIyUc8/nUK2Eu02Cgy\nL+MdKEqOE/cfkFMvFoMh/SJdl9nfQZgF/C6lFFWV0wZYs9h29rCeCVnZ/Biv\niocKbZicmRymV1jG9+UXpck0Pnom0Y/FQiUx4pQmpP3JB/AIm5ajssk0v/BG\nSGbpPv5zZBhm9cErWbwF9iVy+P5VBnNUjnvT+Oi/y8gqk7n8ZW8eusDcz/bT\nJAUaYousxqJ5mKDuNhiDB/o/21o+6tAdTtePyxG12CX6mrv90tnaDcJ4OSE7\nwBodHZ8DFh4dFKeySu0zm5d/yiqBwzUyadSkstDxRXh9Re7KeexxdtVA6SeC\nKaZO6I/fKCV43PgZzht65R+FadMYdX2VkChUXhsl1kCnl25KHJFc8dPIsd/r\noD+q\r\n=xGLz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"51f75462a3e9ee1d5a55c8a25e911ad977d63724","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.80","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.2.5","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.11_1599394866495_0.24467692224323923","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.12-renovate-non-major-fbde83848d52ce047351702a98673b3e48263b2b":{"name":"@balena/jellyfish-sync","version":"0.1.12-renovate-non-major-fbde83848d52ce047351702a98673b3e48263b2b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.12-renovate-non-major-fbde83848d52ce047351702a98673b3e48263b2b","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e501d72c1d6d184158b4efd9252e4d84795296de","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.12-renovate-non-major-fbde83848d52ce047351702a98673b3e48263b2b.tgz","fileCount":27,"integrity":"sha512-/SkVVlQt9oa7cSrqW3nSmWtEepyWNOvEaJZPujnV7D+BG0a3AsBR4UuYOgI5pNil5wTmJQW7rDIFWb1KMPz4ig==","signatures":[{"sig":"MEYCIQCam7eELN0jZI/kuoSyV9AptFTJydIY/iCP6bH0AOES5AIhAMpLeMmwN2gcJiZ4xH7NPlMnnzooE69oULHrcq1+Qzov","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251985,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVilOCRA9TVsSAnZWagAA2B4P+wT8rIWsq817ZgU86FT0\n5HsNe/748MujqeSGVhIR6UH6TblFKfOQFXC+MiiZbyMfpnQjwYBbtpkB9kHu\nLUQt0A+umopYZpN+Ct7Jmcjov7CaJwT0Kc+/AcsRtsLSwvY4IorZDr4UoMou\nyyUdg+kTy8TSpcM0dGU1/OYCLq4se7BveB8mWloX6EIzkWnBTFV+7BXY1ft+\nVCm17Hkmwv3ASZIV8qlShVL/uIRn2CHKANn2/NxGbrPhZldMwdXZer3PzvfN\nKSwO+q404pZw2mpLJbfI+gRUNt2fuWFDEaNxHMqOruTDFxFVb5DSgLHIEN2i\nbkeLoYXfo/uaEr7o8cSOdXlhVrAUNvvO2P06flIIOMPqaYF+iTG50FzT2lWz\nxiXVcqExJko/u3Is/pvMiR6m0w1ceg6M+57SoW6j2zUjREH5WZX6HASnCjzo\nyRB6K36AkD4cKL/9cC5LHazA0zGcrOQ+2zmBSt4pFXz0QDfVkGbEecw4O/cK\nMmlbW+FobZbWmQ5bfFFM9HcugRkXYOQALYhfFvjecegWyFwcYdjI4+kNyqX0\nyLg+paLfS/piZp5GOsi9zvmoReIfarcHWu9IflAH4Og81MgrQI4sXcH76Mkl\nhsRUJxGAT58zEVecIDs7ZKywX/jxAd1YjcfeK/JYFFCklWTyPYoNZzGtg0/h\nPpjN\r\n=Vob9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fbde83848d52ce047351702a98673b3e48263b2b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.82","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.12-renovate-non-major-fbde83848d52ce047351702a98673b3e48263b2b_1599482190569_0.14709462250393912","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.12":{"name":"@balena/jellyfish-sync","version":"0.1.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.12","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa2d2cee19fd55e86611250e955f808cedf0ccb5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.12.tgz","fileCount":27,"integrity":"sha512-qpEpjQRz4Z+Jiax0lxBYGeS3ePbabsJSXCllyncHtMgCa/4ylAlVTFCy50g8sTSPls4147zlksPj8aWzKB2dEA==","signatures":[{"sig":"MEUCIQCaBWI6c8K+ed3OqqYCtQpxPtjvl5reT/1ApjF6J30lhAIgLHxXEOQNys2C59Kr61wDp1GCEqbwz3Apcky2GBJntwc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVinzCRA9TVsSAnZWagAAh6wP/0q3cgUZDHJVPK1cYCMu\n5xGtz1XpnsZaeXvw5M9jt5+GMTtGGazGqOPoTN9IKr4cjlBhTlV5B71eoXPa\nZS537Wbjqp6sjZfDtzT6Tr0OnxRexWRwXGAdiX2p4raCG0nXqBxotg3V14Fa\nzVXD3qSmvFRhqJn+2ObmRLn53TpGsqnywXj/7Z2r/L5bygODP3CEb6OIQMM4\nChhfbFgj2eRcPqQyv7onaz1EbRpLHBTtOyihYWuWdTkUQ47lw4nxNWdYPw2y\ncfAeJszImwUEcb0lrXzo76QpYGAOqOlRIPYXS+Z3ydj6iyfOYMH/m6QQNz0W\ncrKKxXubGhCa0Yvf5M0j0bqYsHwaNYOCGTzgoccQm6vIZfRxtHx5chP7A8kF\ntJdBqXnAWKK0LVRg3qw8bngYKigjzJKy1v2+RgMwjqAokEPx/gwEM0Pa1Uw3\nYtmAC5DY5HcphgGYv3ajeEJ6cDkSvB/IyuLlpSX+NdKRPPpfksCq06sWjDsl\n7SYLMgD/Ek8m/DWmWR29OsBIItcYrUOtg2ay/pcbtw8Dy9Pk2+jWQbsv3ukE\nt8gHVI9eC+Kf8F2+cJ0hOhlXg5FmsisswMBNKWYp5aaQI44dZ/lltiOkl+q0\nPhkgxdamuILE6wd/atVn5d6sIv/yeR1jG3clgd/z6klGiL38Ikyxxx8U/+k/\nxzhC\r\n=ySSu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"7dc0e00d86297c3fc96ce495ff5fc4993fd83657","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.82","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.12_1599482354492_0.6078485457150025","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.13-renovate-non-major-87f7d4ec9a1a47c6ebb125503d1625a34453466c":{"name":"@balena/jellyfish-sync","version":"0.1.13-renovate-non-major-87f7d4ec9a1a47c6ebb125503d1625a34453466c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.13-renovate-non-major-87f7d4ec9a1a47c6ebb125503d1625a34453466c","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4de844796db1dbabede1ea76ab1d0001418103e4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.13-renovate-non-major-87f7d4ec9a1a47c6ebb125503d1625a34453466c.tgz","fileCount":27,"integrity":"sha512-o6IBwiXNONedeeZdxeKBQa3r1SwG7hjtt8H8JUKD27DscSxdz+ISfglq1qBXgj+osr/zyIu3Qr7USR3Ioibt/A==","signatures":[{"sig":"MEQCIF/Ywmj8CyLgPcJuMxj5kv16nB0r5jeonsKaBmH/YY03AiAkScxnNmtu/CgWwkMCo1cIDNjjRBt+OQMBRlvrLEStQA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfViqeCRA9TVsSAnZWagAAz/YP/A0bjrL82lIsbZaA3+Wi\nRCLD8xycKTO2tZlMLkadcTkdsQD/VQqGxoUAvoiYAqW/CR9JHwNZy9a3XVJJ\nIcCzBQl1kNW0IKVumEqrPxv4Iw5cvpU4+hCYEf1K6KV03xMorUP++q3EOEyN\nPem0VV1p66bi8+bt5eWnzuNAGXmIgahJFrW6mOu/m0RFfMRrP8x65HeRwLZs\nF45t5PfDSYxTNcKYercNucNZW5GeZpLE46yGV+KM7RgJSu9qzM8s8rzIJBAl\nv13XVQFn6LfpUyCI50RdFwY57umokP1YRZ3pKRWJFQ2UpfBEP9Izl7Rwu8+H\nJERPq9T8+8uixTOJSszPD1TrvbUajtdbylB9EGNhC99NqLxjfBFyO//a1qO9\nTniIawWqium1/A2w8ZCNnObhHB20JFrgwXRgaeIyesLGecDSpSYxka+NFHK1\nX2I85eBmkOB+7siXiDWr1zBNFKYzu3J8v/8HxCtq/9CM5PBbchPlV3qwPBhP\nzwM7ORPoRdczmkzPw/2UrFOPX/L12/gThJWBnvUpfVlNWJpAz4UatahxSMb0\nGKBdIRy4in5+XElzxtajfhgk2e6HugQi3Kq+jLmm1S0L5Srj28xy6IPGRpAh\nB06ZB4dbyCeneGL2Ocbrz1tgHziCjC28J4szgEeElZMRxRC0IzEyORoXQ/po\ndpA8\r\n=QLsc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"87f7d4ec9a1a47c6ebb125503d1625a34453466c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.83","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.13-renovate-non-major-87f7d4ec9a1a47c6ebb125503d1625a34453466c_1599482525812_0.248318173363115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.13":{"name":"@balena/jellyfish-sync","version":"0.1.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.13","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e761c9e69c6c8c1472863a073a8a67965fb6f7df","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.13.tgz","fileCount":27,"integrity":"sha512-SCvaejWPIUrj91yEDYiKkuCaA2ZyIKZezj/gv7LwNhu6Lx729S1POfZwhbES77wPxvX44sFRVrMaPxldoEleBA==","signatures":[{"sig":"MEUCIGQsXXX9HUi+ztL6jX9UyitfR/VaJrgEZtJNNQcO0s1dAiEAoOTOVmiQH4551Pu/74DWp4HfCxrtq0QVCth866vAA00=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfViveCRA9TVsSAnZWagAAUZsP/izHVxnEYSvjzGQAhVYG\ne93LINagoOKNQ9mdQPN0st8HTr8m764koaOxxnD/2WmLHqScASzGrb9Cx3c1\nFWGlP/9dUCePQHkxVJXlTuhVEr0JVWILE1XOrG5tDN6ssbDnVT5pt30hA7e2\nLCrOHl6dAB9j7Z8MMQlw0F9s4fw0ZiCmjAKFrXo5ha/fnPGkfmJF/aHgwHXf\nC44FhEhn272LgHwvbF/SzXF755JeSomPGz5DI1VhFm5zKZgMXii5vS4vH3Wh\nKW2UVa7If7MhgGUciG5EeOSeLnK4mZQUasIhMSI7RW/4uRvIcRvbYpn+roWe\nEckKbqUIvNKTKTFB63gnSzw6eltWr4hC0uFlkuAnHYQt1tHeJ8hRkEYh5ww2\nwgErYtAjQvPB3TTIYiau3qYJmTpjiQjcm2D39hytw4OMOLjkzFrkd0LR2gIa\nPgFXlMrOLbGmKVj5NWa8Sgrtv+l0tA++l2WOXN1TN8TJhkciMtnHopO6/Ek/\nGF648UB1xn6thbI/suwEevCYIYd2WXBypwFDcFOSI1nzpdnw6ni69IKZh3q4\nESpgc3wDrCKEOcrOBduq+jufQhoYgvLnbFeVt7GpxJVTqs2zjL4yxisyZSX8\nwX/RALpZmb9JK2UDHU4S2/Ft1gt+XhyKAshc5BhFRq00kK3ms6+Hh62BRWQw\nWsEc\r\n=5pqF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ef35cdf0938ac75ce981459792df1ba692698bec","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.83","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.13_1599482845608_0.8263935063263217","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.14-typeform-integration-change-49fdbfa6b1efe7d2f7f3a683972b57c4620f934b":{"name":"@balena/jellyfish-sync","version":"0.1.14-typeform-integration-change-49fdbfa6b1efe7d2f7f3a683972b57c4620f934b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.14-typeform-integration-change-49fdbfa6b1efe7d2f7f3a683972b57c4620f934b","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"33c4d7dfbb64c6d0de89c6f05d3836120c5cfbe6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.14-typeform-integration-change-49fdbfa6b1efe7d2f7f3a683972b57c4620f934b.tgz","fileCount":27,"integrity":"sha512-V0YdqQaiLL0XdOSMFCzAFqvNYeEbmzA9XXuxfFrnUfw9WclMnr3ejBmMAq5SgJ6pA/7ANK/xqk2beFAwmsusVg==","signatures":[{"sig":"MEYCIQCcNAZTdz+KN7EPoCtbWDQPvmNR57rLjvYzzGfwJx7hkQIhAJzgwnD4OhyR5Cg8EpGqeTGN/xOlZW0+WBLGeoW9OJmd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfV6kgCRA9TVsSAnZWagAAc2AP/32nzKwpM0kABPbKmy76\nM2BXJ8lEft1TRLETCiGmPYFcoIrjOkom9D9aH/8W5LWrckKfUgvVGmqHMrXP\neQAOM2onfjohA+Er3aKEqjMm8AKVrvIL7GvZ8l465JOF3OowNFJLihNWkPiZ\nsaPTY37aPkXYnDNPduA73icvwGBe6rApx47q5yys+H6oWWNh9nautsx0YbRY\nBkNGHDRANxLwRUJttKyaF3/2dH7G6qH1xX4IFMOhiINA7gBZCLle/ABtImjd\nd4CqYcFXeqN72nZSG4Tta9H+Wlsuw9M7ukkOJgNgp855i/9knlVzYt0VBatw\ntAW/siK4iz0myBAEFV4iHQwnFR1enaP5PHuABgxoAo8fqUXspm/kpFaMe/bn\nUqzZ7d6gHb0enX8ZwDh7fvuFwhqXGdZbBtSS/qd+yQCea8XPf8GV7ZuEffRq\n2+O58ug9AysWA+f9kr03gEiBkQMdMfj5GRitOelYFN2RBINEsjvJvrdZTPUP\nkT/hpD40tRa+QVPTDRhENV91qq0hNMU8aY+1OffIP/8ietp4Cgu+6ufjT762\nx4wrJciMrC964x8IaFg/xLAciyHIzEcWwEPumpDVSe5gXPEqcL45k4mOYX8t\nxBFRn5ysaR37t2g3AASLzVPNq5cCvTzfwluPdiaYJHNAZrUxlQ4u4qBDo2Pr\nhpq8\r\n=8jYF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"49fdbfa6b1efe7d2f7f3a683972b57c4620f934b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.83","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.14-typeform-integration-change-49fdbfa6b1efe7d2f7f3a683972b57c4620f934b_1599580447567_0.939028897755734","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.14-renovate-non-major-ada4964a28c0376258dfebbe82c0610feacb9709":{"name":"@balena/jellyfish-sync","version":"0.1.14-renovate-non-major-ada4964a28c0376258dfebbe82c0610feacb9709","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.14-renovate-non-major-ada4964a28c0376258dfebbe82c0610feacb9709","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ce402a5ba503637c1c9dfb071686e60e3149f58","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.14-renovate-non-major-ada4964a28c0376258dfebbe82c0610feacb9709.tgz","fileCount":27,"integrity":"sha512-0GZxC3+XGI/AZTvn5wL+vesNmIS973hIpcZhg6xh0/42INzNHmSb0aU4DQPmxaKEyCvjW8vSeytOBdeV8pYNbQ==","signatures":[{"sig":"MEUCIQCtQXIJxcP+2iGtkWH24q2+My9P/nzXub6cQJZx3y5BqAIgRC948mBRqrsap0HisA6wwMkzg2/SI/OB8NeYtoZQH/A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWCTjCRA9TVsSAnZWagAA3WAP/id+QJtOfR1CWYAslbQ9\nXNXwldpPkVdGVd8QxplIycp3enEQ48wv+2mzT3eWp2kIlbuzkYTMZWDKZoZ7\nC7Hd9fH/CzG7eUINevBawps14tqccGvVtyr27PhDfphgrscn9bOGMr2hO0Kl\nAsObA0G4fK7ePRl88MatMxPtXBmJwTUPbY1Sd/QWzSCeNO5bGTTg+0Q//WfC\nzQbBk2GE7cLqrepkgNX0hVzdW+lrsym2x85YBb9aLDZUsIOytsbvNoFuPEbI\nevAt0Q4hziJiFct3iA7SyDiFBzxy4m1qx6IU4s7IY/dz7gghaKju1R3ml6GE\nkh9poCyHV8VzOlNOOKxS1NaFBDY15hT2UBL2CMTl2BdzvlxE/Hz/3kAbvCzc\nYvR5JtxCUgrY/d7yP59hrMxS9yJTwgR3PTggTR+dc5QaYndADQSiHomrfRJa\nJ1P2ZT6xn7pHxhrY4z71ZaAlf63S8pb7MY+DgAxhjfRCNtD5rPFVgqWqRDQ1\npgmYlHB5V6LxBILzVr77mLUXpDb/74rC/bbR7EX4vkaDwmChX2pguhQP0i5q\nn2lJ2nWV2TsE/Wa6LNsThQJwOyr2HwvFMewBRLtuLf9eyy8eYIAsmtgDuyfA\nZ4QuRu3KwAFsEBs2qSUt2V8uy8SVvHhrtRWyVsB3QPvCp3KtU+X+BxpCKmwL\nN4Jv\r\n=AQrv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"ada4964a28c0376258dfebbe82c0610feacb9709","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.83","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.14-renovate-non-major-ada4964a28c0376258dfebbe82c0610feacb9709_1599612131322_0.6150338739304619","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.14":{"name":"@balena/jellyfish-sync","version":"0.1.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.14","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f426d090ddaa3e76d1583a8e73f2f0a219941fb2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.14.tgz","fileCount":27,"integrity":"sha512-SjJNsciTYZH2Z8NKIQQNe7QvQWKI5dmy6m37A1t+9yqFJonmUvIEE3250Kv8QveOeWPakBH4AJyjtowzg2WiFw==","signatures":[{"sig":"MEQCICauhYMgP9r3vxMTAB57ooaLlSIkrYsIdlgk4t+QE41lAiAJV0X3I4muaFZOu6ErAA6/N7ZhwkAmrIzSVSeFT7GT6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWCWSCRA9TVsSAnZWagAAzhsQAKQODU+REFPtieVXbfCY\nDHcas5X1lMq1L6/DWCFm2RtfuIWskAI4POQ9NpR2YYLPujiY86Pqppy2Ta0u\nWpPFwBhoZfAQmbFmvn4y8DZxVOUZ6RCyx53g/XUXCT2tj+V3r0XUwkfGrgzL\n3ZzZMRVk7FnlS3Ja5CmPWW1DErXuJc3JFyr72E11deCzXKvGCKO2Ok4PWWtc\nlANRU4MOlW9rAShfAE/uCVAHLqqXNG6zq+w3CsFs98cjaaOWJ9NU4VyS4XhQ\n5zlmL1c2DMOQaOHXV4K0nMlxdD8hrPJCwEI08XwtxFQwBwS7mAbNfMt0tRnQ\nCFLi+bgvO7XcfpURZVSNkuPm44UiAOTUPzrA96N3JjkWLbSp5vfvNACWFIfW\nfbJ5Lsdj/E3rmpn3YkTHKwPJFykJ1+EO3Zer7k/qiL3T7ZWAFAIGcfnekM6W\nHgSS7p98MaTUs4dHQMCqOW0NCbY/r9DX7I6S/rtwUMerwYXbeEUtkmofDUCs\n7bH0Uwi8RXCMup2tGPujLKLZdC1Yat6oxVPWVG1AhTLf53Xc+bspdi1OhjSH\nnpFahSA1vty4jqChTTA4raXHzEAUwEPAhZvcG73+neh3cG69Rs2y33ca8f0w\ni2nZTlIAQ5eYdbeDUaKuR0iKL8Sso5j8kFKv+NSAYQip5C/wiIIAasL1s+LH\nfkWF\r\n=2o2w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"706b804f1e4797784fbc1896cec40dce0f2b4bb8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.83","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.14_1599612305474_0.9913274741086742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.15-renovate-non-major-6d10c6b868bdf3e3fa7cad6512e6fce455bd4293":{"name":"@balena/jellyfish-sync","version":"0.1.15-renovate-non-major-6d10c6b868bdf3e3fa7cad6512e6fce455bd4293","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.15-renovate-non-major-6d10c6b868bdf3e3fa7cad6512e6fce455bd4293","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9c0c34817586dc46f7c2ff3cb212f56c45272163","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.15-renovate-non-major-6d10c6b868bdf3e3fa7cad6512e6fce455bd4293.tgz","fileCount":27,"integrity":"sha512-rOOA9DROL86jKrxEqbTbcjFtyITTitsNZsu8KJh85ccyGxCfQ2GooQ1ejMV9pqOX4UF492bIie5yuWh5hkJtyA==","signatures":[{"sig":"MEYCIQCa0QpVFP0TFH093SVsXjqoWo3gdSMK8p5ow6x+YXzDkgIhAMEsmJxtZ/+lM04k3ljXEvq7VvdK8ks4Eg6JogfuEGIY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWDqnCRA9TVsSAnZWagAApF4P/38CjK44siV/KZhAnmB5\nGFC9rPXyvgBjRxq/VhSJGfgYkx/C99MDQhmBTLyYYd2LgtZhRQBVSqo0M6ZH\nr2CT8NoSRm9HEDty5Uo/WJtUrt3ErNzn97cfuL1CI06NCItVvc0p+FECxRNB\nqRUSGoO790HCaKf7maplwhg/lLde0qbZYjOad4QC2woteLzsLtULAoiYTxfJ\n8gnJSLIOH0FdWuRNV13vdot7DG5EBGvedmabxeNOdHz3GqsgTpUJEGD6YLDI\nXhqzpc+/StKQPiFYoGDISV7An5k3/gXgEKoeHbBnjwZfZpkoDDy+rfL5op0T\niOqtl9XLbwLlgXe5LpuT/JKfsgyJamBdX1HnAQGKlPNFBTX//ENU8tZ16up8\n1O0TAdsENtDXxwQNZ5VI+QkNLiQfH23IpUm7Z6mxdNskCD8rzfgZa4T/0thj\nqsLThpc2UtcH4iCjepFWWCAlObYpN2atDepbOyw1nz9yg/CKrVy67EiIARWG\n7+bC/EaeAHt63ryBv63JDbh/gqtMK6hipYbXgXVQD8IAvnRbvZ2caO2TYxog\n/v4p0TYjlh0/Ot2ab0A8lAFW8exCHxgZR7H2p8oX4vOj0KJvRS9P4HVhJe2J\nmPNuraJ18azQHdk3fNDz5TCrf8Y8+CtrIkK/9PpqPQ7J0tOPK9RYkqXpaW8P\nGui0\r\n=VuaP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"6d10c6b868bdf3e3fa7cad6512e6fce455bd4293","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.84","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.15-renovate-non-major-6d10c6b868bdf3e3fa7cad6512e6fce455bd4293_1599617703141_0.2170682313526371","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"0.1.15":{"name":"@balena/jellyfish-sync","version":"0.1.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@0.1.15","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"956169986af350a715d5e8d19d5b94654fcaf1a2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-0.1.15.tgz","fileCount":27,"integrity":"sha512-0mP1FPr6ZtlNiJBUZ9jpVxmBItnVmdb5JagTTK6CcuVK8IVfRjqdqxjqxBGXE1cb8dq7Uxyg9X1PJAzY43YpHw==","signatures":[{"sig":"MEUCIQDHaAhBxzrSfstx9IAwJl7EZrtWdjVrKnxqolneeRK1TgIgPfqmuALLPtz+z4u1hB8P1oIqhwz/mxTzCbeZPdyh/Sg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252170,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWDtVCRA9TVsSAnZWagAAyDAP/R6ExbKvoS0wUrmyKuxl\nTyOyunOLj0dVrTxV/W6JMngYX20MIh4BcayZF9vYWoO/4D6BMcAhWxnTvjoP\nHYu1A+uvf8McVteuH9rJLbX4R+HX6YU5H0Z+XKJoOOM088K1sdbZvJKLPzX7\nJgJP28jQFCMpB9tZXtwymaKX89uVnpjn9LKtTUL1xWjptSi2mXQ844KmeDB4\nVDiuA/4IoVDKGPwI95yKT1gyk2+xmk2SavKFdyHZsZU8GKoXKD0CNbBaQyHJ\nZFiwxnlMEOdW1mi0h1Ja2MqGjva6qdJIUpcW2ROjwMyw0xz0C8XJa0XPm8G2\nnY9TputcDi58vGEzQWp7QbubIfSpYBqWGYkSESGnhwjJAtPM7q+nwqWr3HhK\nmDowMh7QYvRw70kYC5JcyIpmo2xH429tPBphETf9H752V/EZoLkQJhlLGnIr\nYgIyIBs6mI/Fz64sMDRqwNUInY0H9xd3eXoYx4hsxsOddttm85JUDgj4nLEY\nwpx9RaXKZ92ehAPzkNefPpc6Mtk1qYiksf/30ieifNMqtXsfH2tIFCn4kPbm\nBteOK6Wm2k0STz8faim1aXsDgw+YwAR3+jqjyBAxcQ+jaepXM3jnATLi5v30\nB+DIzi95VPPeqZFhuPbtc3wE0bwOXGoxk91lPCShpTbJPKvs/YgPMNjteMiO\nIYnZ\r\n=A+di\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"fcb3d79fcefb7118d3702951c13b603ac6b8df06","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.84","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.22"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_0.1.15_1599617876771_0.35468158091018687","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0-typeform-integration-change-50dbd057d4882193d43ce0d994c23aef9cc7c948":{"name":"@balena/jellyfish-sync","version":"1.0.0-typeform-integration-change-50dbd057d4882193d43ce0d994c23aef9cc7c948","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.0-typeform-integration-change-50dbd057d4882193d43ce0d994c23aef9cc7c948","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bca002379f3dd5a5ee881ffbc52ba40e118eb516","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.0-typeform-integration-change-50dbd057d4882193d43ce0d994c23aef9cc7c948.tgz","fileCount":27,"integrity":"sha512-Y1jVhdk3+PMHZXWgsMu/xE2h9tHR0WcceHLgZwLRE3WUklo1e6GI9loyZqs6dy4ahxomboxiC32gAi93DYli1A==","signatures":[{"sig":"MEYCIQDVCGIWSvgoavyBu90fN/hVEQOtVIOfY0Gkxlk7MKd5lAIhAPGw4cy03B76Y3OAmgxhcW0SH2GDn/k09X4ecKHOidV4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252639,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWOdQCRA9TVsSAnZWagAAr5wP/jxErP423Fc/vrIPmJ2j\nQMur1Ju0VGC1+D6O65Vry+ema7PzUCqAfwsc2DV6hLa8NgWshx1YFDNdmPiV\npdwI2n68fMbY2ziketnxFwwl42DgKRj+Kl4lUNYfVavrZ+AUH03OZbke/XxS\ndYWauxtO/o+JswG7lO8Tf3nThnIY3T88KIwDBLpt4r36hbU+cCSyWf1J5itu\nUTHj1lhltfuSi2PUpgoi8DUzxVAZJ16QA+VdZJNMHV+RnQx5iAI5/4WHjWz1\nPILZq7IhqRWsCrKyLAI+Fd4sbEoHF6j4M5nz2wyvaVR9QSdaz3y2utgdEiyA\nfNklnnQh6yv6/CqsuYX4t246MU8neHBW/iEc3v1RGWKRxnQdmrBOTapVtWd+\n923/iMmfthm83/TdhVTpWhwzQSMxWwOZfABrMDmbf3HLwj6u42YFP9nl73B0\naTjc9avnqAJf0ooLlZAgogo6rRl8S+RzC7tmCq9jqhpfCzUrf5D87HeYZ8PF\nwYhaw+6ZQQAjTiMhbD5nqW27jYZ0R94GddnQiqZ7SpAsNN69DzvOECzI3ftT\nINMV6g+JW+RFHreJp9WdyBUzvEMRAVWEDqCv2FFvf8RFdpkKZaCqJXVFc7NC\nfDX7d+MeM3JKxvhMhLpoRv7qe2iNCEHc+oNEEwn3khdi4VvMTEppnVqKdleL\ndhzU\r\n=0MBw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"50dbd057d4882193d43ce0d994c23aef9cc7c948","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.11","@balena/jellyfish-assert":"^1.0.10","@balena/jellyfish-metrics":"^0.0.83","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.3.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.0-typeform-integration-change-50dbd057d4882193d43ce0d994c23aef9cc7c948_1599661904081_0.7070740934113147","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0-typeform-integration-change-21b1465a9fd7c296030693d6e15ca1cb22ae5254":{"name":"@balena/jellyfish-sync","version":"1.0.0-typeform-integration-change-21b1465a9fd7c296030693d6e15ca1cb22ae5254","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.0-typeform-integration-change-21b1465a9fd7c296030693d6e15ca1cb22ae5254","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c1d986d9fd22f145e574f541830ee0f9e7a4698d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.0-typeform-integration-change-21b1465a9fd7c296030693d6e15ca1cb22ae5254.tgz","fileCount":27,"integrity":"sha512-ZcgwQF00+rrQbDtHsDp6D3p4hen16Dh88GfCurDDrDmKGPukOJo/bBYpSmox6332a6GxGgLyrcfpOqU4f/IALA==","signatures":[{"sig":"MEYCIQCgKwSiG00jDmLOUcHT9d4wqNT4uTk38KJeeINs4QPN6gIhAM1a8tEEOwodjlrorTWZorrLalSUfXuGvZrTAXblS6F2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWOemCRA9TVsSAnZWagAALAUP/jsVTdNfHZjq7I8ponyA\ngS3KXbucLcR508fM0jA7EZV57969xSY8tVo3EQgpxSR5gO4bJrRv0m5PFSbd\n53GYZBnUgc00tWTAGdJfLpPwKn0VNTI5aiAI16slE31FN3JXz4iPQloGKe2V\nFcpva+Z9qIM2eEW9nbJyLkORwbtVQV/o8hjcFdNomLorDucmXV+GdzVzLfKO\nZ4jvZsuepmlAQbxFrHyNaYkPHifwllD38c+FJGfAfO0fWCygflZcjfBVdP4/\nNyzWN+qJD/yNdEUj6UczMcnVy/dtOUg0UwFI/dNrFM7jDUXfGSWyJbUTzqjB\nxAQvC1hQF6Ac+meIq88igf+qilCBKxI0lcgqaOOfo65okjA8jsKy3hfG2xr8\n1XvN6TvszOzooOuYRMMgkNLkFxDMxz2hGu1jQfNylMrCNR8krbw8O2fldPLw\nxnbQGCijzwpw2ykhySkqjQeC+pT+zNSWVnfpjlWdmptCbbIDXBSxKb54fxR8\nbnX2ABf3YSNEmc/vaZNMWFzJ1vc1+pzH1abYDnInQkKx0B32AQ/35pld8cKO\nCN/7sw8TsVDowwYYBzKT60ZivqgTHqG3HLcawMjsqEhBEbGPnz1CGuDbhxM/\nyRy3Xbtctsx3AA4s9xcbN9cCLMA8g6Hm4sFX+QcpqJf9jxaUuaAnRerop9hn\nWhgv\r\n=jCfB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"21b1465a9fd7c296030693d6e15ca1cb22ae5254","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.84","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.0-typeform-integration-change-21b1465a9fd7c296030693d6e15ca1cb22ae5254_1599661990104_0.25377462530424055","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.0":{"name":"@balena/jellyfish-sync","version":"1.0.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.0","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c8f87be3ff781ab6b3e97d58f7b723ee3f34b696","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.0.tgz","fileCount":27,"integrity":"sha512-JwrvFagt4DMMlOXVBq0Tffi+ibIh+drrGl3uj+BB1jC3ElKmTjYnbwyjtNxnusm/W28dCEUcsYSKqBym8+FXmw==","signatures":[{"sig":"MEYCIQDev78FA2GnzkUmoiOIAlg+w+qZ1C9QgXwO6NPi8rz8UgIhALiyBeaDK2iGB+Jgwv6lr+ec67Av+fgJPvK22KnZYt/+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWZTRCRA9TVsSAnZWagAAQ8oP/iJrCzRAiSM6ykSkKG0x\n4tDqHUGC4NkPsKJXWsGwSjILVK4/VqG5LHKqMJdmKrV3z2LVnMubUraTMLw+\nyiJTKNpNO8BxOT2hjr4mNe8SCgPgT/sWQC7opCdWUJEa0B/+o1ZBxDD2wQkp\nxmBrVKR0wCEgYwsC9/2lU+tmnxTN5HeHuz9IHpgAJHcox6pDW01vuOZ8K/JB\n64xjCiJT2jUg+kIKHzLjg96GeER/s+0mGdOHOwIMSXFIulK6aRBewBUozYMC\nB9XZAxHdNaPllQrmEzsOfICnnXYoxh2cCPpO9hJlBt4aQx2CRI/P9UuwXv7k\nCe61Tbj9+j/lOtDNqD+vgIg8RV4FNc7kso2UeQkHXR+BY2n36mmrpStgb80z\n7XflBUGmaE20nudmGUEBRmf9AqPzzVn4Cny6NXupFzd5w3u/v7nqYpqGg/WE\nHFQL+lzbM+KTsaEYnm5BujxNsmH30Fi0weUCHmaJMsp2083Z8So5IsmJn8P8\n6v+h+nHzDYMCojya8h8TvfLL0ksRWS6vIN7OKl/8dFy5FnUvcFFSs5zJ/Blz\nWksdsstTSo1Sn8+la5XlRg/NakDNitAvXQBe7yRGp8YTZua3wXNmnMB9Qe4S\n3lGcbGbXDgK0HKBU/Ny3VSi/lSZUsfe5R+EysfpxTKmPTYpuggvl7qpyd5FF\nrr9n\r\n=jE0x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"b03ff897519ffbc6ba455b817bc60b15fccfdf81","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.84","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.22"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.0_1599706320560_0.5806004813258665","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.1-renovate-non-major-428677e3a3f7b720ebbff4f3b0720189060dd3a5":{"name":"@balena/jellyfish-sync","version":"1.0.1-renovate-non-major-428677e3a3f7b720ebbff4f3b0720189060dd3a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.1-renovate-non-major-428677e3a3f7b720ebbff4f3b0720189060dd3a5","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0480d73e8b6dd56c724c896bfce437f4aea8de10","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.1-renovate-non-major-428677e3a3f7b720ebbff4f3b0720189060dd3a5.tgz","fileCount":27,"integrity":"sha512-lxrqpZbNHO+agB1mq7nHkQTfbAiTTaKKkkib9KciO4iUUgH11VRDVXiKhTUB98W7B0UnX4eYffbtltQltpz+Aw==","signatures":[{"sig":"MEQCIDR/biwO+L+26jDFL2vQZCa0c9gMQ8/YeatHhw9rLGTrAiBin3PeZ72fsrx3t/a03QV0DYf/C+gbM+QZ+jYpH+UXiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252878,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWZX2CRA9TVsSAnZWagAAYYYP/iZSnQD+gzCxlIZW6IW3\nMM54qhsou6tEP09azR+jC6hoTBJe+Y9cF2TEhcCl8kJKtIVw1uyZtZs6tf6k\nhcLH82MmwmzAbnToYtlM8UovGgGi8gXh4Jg4auFCNGaedqjccSzmcPKxmikH\n5AGLnUOfFOS9HEqD1mK8jfaoaGrhf8FXqTGbd5bDTWFW5z/2VGUqZICu1oS2\n2JftQb9ZVBYPQ1rpr/dKX5Mq96AHDTNu0fpiZQJt7NbLf06C8Lx7DvRE7xgk\npxaS38or75Rke2AxYXIsnfRKZsajGRC1K00CpsfCmDs5H/+7M+U6AbUm5hXD\nPgJPBEc1umeEKo41ERMbGNKJXYdOWGoneg0CQi2z/yLPvWkLFJQlaYBlinIU\nhcMMI5Sg9TK+V/LR9azjNMX6ZdW7ZDQAtbZST48VM22YrHZgoaYFYz6wBdWh\n6IG6bhhzjFd3KH5AkJXondtkcGTodXiVKD6eHkdeS8/bstkbtWYi1Ad1gGUt\nHA+wcKOZb3Iw8njzptuqO5O/IoRLF45RCq/6cTgseo1FopVSwaUNAGNJHVe1\nHUHsKijrzoPr8qnotbMifvIHL/HyShCZ9A6SUQdC9fTEhZcUOqKIeaeymX09\nX4CQHXA2cwDpFM8zoCB7DE4OKF981kUrv9+gFluwquIxfJESbimQ1oMUdOzN\nswnm\r\n=gSyl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"428677e3a3f7b720ebbff4f3b0720189060dd3a5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.84","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.1-renovate-non-major-428677e3a3f7b720ebbff4f3b0720189060dd3a5_1599706614176_0.48702406340864024","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.1-renovate-non-major-bf8570117fb082261540a5312754f504b272689b":{"name":"@balena/jellyfish-sync","version":"1.0.1-renovate-non-major-bf8570117fb082261540a5312754f504b272689b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.1-renovate-non-major-bf8570117fb082261540a5312754f504b272689b","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a5a7ef046acaeb6c9c19905e597c3b31a89a54d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.1-renovate-non-major-bf8570117fb082261540a5312754f504b272689b.tgz","fileCount":27,"integrity":"sha512-tmT4P03xfIJWywCwphbVoYNkuEECDtHNL6TdKnWE49u4SIMclacP+SEUuVYvfQa3TSLiv3isleYuk9rTV/N6hw==","signatures":[{"sig":"MEUCIQD/NbB0CDUbpe3LF8q3ypHbZiqhOvOxubFC9a18gPOYkAIgVAKzbbZEgpH0s8+72Tujo5UKfC2kiMaZUtBFqxZrjOA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWrV2CRA9TVsSAnZWagAASpEP+gNHYRs4X+oYh8pgyaIm\nqr1PfULCHP9A08Fd5F9WqS64uLQIpHyJiR4Ci0KOrfDGqp+mklpG8OojggcH\nsRpLSLo01+57SImnUjCeBcBsiJoNkxyQD7y2WukXkURW7xEhqkK63fnSRE36\nHacM4q+eYbjQiYXdoTcOrL+UPc+7JBP/G/vpj7w+V/HNZFOcIdVtRvBSVued\npcSYQ5fDwd6bTdwbMqL7CmC4CgUvcqfufMsFDKaLiaVxeFAXpoa/PPAlokEQ\nsfXV8GDzcV/eJ4mjeB5vP7jWoHGfKMl0Y/3eOyigQnJN00iUZ69RmGBObtZ9\n9RwIgCW+065TL0+rgF+otNk0Qq2aCBVcSGlGbFfSDXefzYjn8WrHKSucPUHZ\nh05NB2OqYUls/ij2XACYuEAzbRRWH/8QyyMlvT89upKwUC5HnYocLWpRwWWq\ndPRj6J+oqUrGdSX10SgQYVuW28jfjMrUX/gnxK58aX/MEDS41gwaID4qTzgP\nidc13MkfZgn2mVTZGwjI6v4k/tfS4U4cXTQhEO46yJ4EUMiDw6j4Aerrr5pk\nJ60IzpKfBL3Dm7FRHoF+RqLXtqkSlm1TemywPmcyZJZLXAK/wbVS7yr1zzHP\nUbBKabiSE9+ohtFhVRvSKtwRsYHULzrV6WzNXLgWS7slKaWBYWJbGaq1DqRP\ncakm\r\n=8xf0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"bf8570117fb082261540a5312754f504b272689b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.1-renovate-non-major-bf8570117fb082261540a5312754f504b272689b_1599780213778_0.2990913823271657","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.1":{"name":"@balena/jellyfish-sync","version":"1.0.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.1","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2dcbb53768a00b7b3f155a597a820f92cb68d9f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.1.tgz","fileCount":27,"integrity":"sha512-hfnBC8ScUCQDu/H8DBo2RFpe517HKlMHdXVqXIeopfpkWSp/PT/JIvQtvfhINk2PqQBppcmcvI6B2Jx6+mRzoA==","signatures":[{"sig":"MEQCID8eEMl0C+JlnpzW8jZNSyQRSkfbOxMGyHO678FBP1OxAiB2a23eTpulUiiDg6X8Z3+UbfAsvGbIZlnxyi0Mx5nNIA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":252897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWrYaCRA9TVsSAnZWagAArGgP+gP+T6Jq/bJhUvsBozj6\nLlu4+vvI3yIStVwAi2A3u2JZKZJ2/DFuYe6P9ddFuFlF1zqLskRgteblqEcP\nLihEWXA4GOIiMbuCXR8Q9Bq5c1rwWglINc1zzLX5Oz2mMXygxnQKeUjltCKc\nU8uIlPcgIqndDa3KePyiQe4Tz5DnVGdwaLRdcf8TLTPQjFiPHUSUKPJ+4EQV\nJEiU6VNuwLtpTiqX4uZIRsiSEll+Ft49e5qnMi/jvUl7EciOhZTEkP2pEPPw\n0J8GRaDiXa5YM+kXAeKI/DDp3fAzwktwDVhEXzPHuKd7ELye/zKHJiqPGWiK\ncLJgxuVhfdccEIbhzxTzN7WreL2woE8X9s0nfE4E05PECAx3nwZB40tnHZlH\njHn93gAhCTlgd1UfcjOlIZwT3s93OBd4bbzORE+XRK58F8GLzzcC/FAbOwFB\n25Wz4ElCmCc3kjGanLtBa00Nad2Sq44O1vpDkeohpGMncsy6kO4Kcr3kYANH\nRd+RBIrdnZfOHYHPDNnCCRke3V9cG2DIZnr7tAnxJa/5krDPltiTpR54l0ko\nQx/byVaxdDq2nyekMMKE7ta62UG7y4sq7SS46CaEfXzoRuY1LAUmrULhLGLc\nLOJpm+uFLTAaOoJGOHGBM3yr/Nb/q03t0n3K/gMNVJpLqnTt/4v1M60dD0kD\n69lx\r\n=/msZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"gitHead":"de8d2913568aa1bf097a5cce53de0362d08616e1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.1_1599780377721_0.982619667979185","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.2-npm-engine-strict-3f85a83596a889488257491b0ddc3f9813b658dc":{"name":"@balena/jellyfish-sync","version":"1.0.2-npm-engine-strict-3f85a83596a889488257491b0ddc3f9813b658dc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.2-npm-engine-strict-3f85a83596a889488257491b0ddc3f9813b658dc","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3fb03fc09adbee6e98c14bbab736b84d00860d50","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.2-npm-engine-strict-3f85a83596a889488257491b0ddc3f9813b658dc.tgz","fileCount":27,"integrity":"sha512-5yZC/oR+X526rhXjpaOb+2lv+2Y56KknF/EG1yEu/W6+7NrtHH3AwKYpTP+IS1rpJTbTeZZtsTwaWVyhOuL9cg==","signatures":[{"sig":"MEYCIQDFVdzBj0iaPxMciHhkW5zALOBlLGkRDh6d6m9jqIc/7AIhALJyM05Ll5l3U8xAqBnyYTX0jlWlZnY7LTbja2+gLnfp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWrmoCRA9TVsSAnZWagAAUc4QAJQ+cvosg8MbWbB9JQXP\nRQivoGagmgBn2W/yZDillFaFDxJv7BBQfqMgjlzg5ELETmBT4ka9s90Kk0zt\ntnXcqr/g4BSGnH2+sTnLCsfbQ4U2wmfLaQU2jOEDk+4edG4/kbrV6UwCw5C9\nF6UGI7T9omF9gyoloJyMCdCDiUvPULZmzQAV/OXJXFfhpkpAZEs60uKpVgp+\nRaCLMevcOJzjB5NpE2cxBZHJcQGQ3UOYwGvXOlP8AkZ6meyeA8rOOZ1nXZYr\nC3f4SqHfILz7z3n4+C/gi+GiLeJ1BL31as7BxkYnwQwbKo+5/zYGCb2hdIUs\n3Gt35rnLVnNjEOanW3xojkzzOMnQXOa62SCm6QrKKyhLIZX8jPwHM8c/yXYU\nHcSiQlZCOXTM25A1W6sMdk6hajy3slj5xpnLkmZ0B2o2v1wUyVnpPNPKDZRJ\nDJALL9HkfdTbGn6Q5WVq4QsjsDY/AKT52lbs474z4Fbo9ajJ/v7lFybiqbjX\nBMUEKksI8X2AK2etnJG06NJy7E77Bbl7feFHzS70f2j0BUuHzRlkfXX3jKYO\nLMzP3OLbRTfFytzW+JNXrVA3TeVbQJLMQyJrK0e1DoqpC+bf+eYFabFlHUeQ\nT4tj/+g4EeSltf2bE4E3AfqLAZ7UL2f3l1LZz+EezcK5eaCaGKvvJnv0RRYw\n2UkT\r\n=e3dQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3f85a83596a889488257491b0ddc3f9813b658dc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.2-npm-engine-strict-3f85a83596a889488257491b0ddc3f9813b658dc_1599781288328_0.6374768692337824","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.2":{"name":"@balena/jellyfish-sync","version":"1.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.2","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a2ca045b88fab8311c72e197c0af0e4bf37d43f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.2.tgz","fileCount":27,"integrity":"sha512-TAXcVPliTXhY29N4Oxb1VDiJwI2jZ/lsU9iXhjIhj8vN/tCAPqqxyc0VLG2S/JHIg6N5vJAspKfSNcNRzvCnhQ==","signatures":[{"sig":"MEYCIQCCzCUlB6ysxjXM4VvT1Ubz0iIm6vNVE8TRaMIySEhfhwIhAMDriHqARUwJeGBBK2YV+5PmE8K0qBjG6r6tgEh0YJLo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWsTqCRA9TVsSAnZWagAAv3oQAIEBe/Xe+1wBDjDcqtxL\n5yDpgDd6/RvGmxPYw3U3AWSayrRfwoQuTCtKbrQnTCYwEXiaBFv/OFjM8j4A\nwJW2yxjgMcs53fdESoQ+0dyaPeQ1kECxdK8L9pbscvVivJKcN+S8dvppQ9x/\nzKJEpYWR6WoM36iZOp2eISBlVmNJGL+XqLbTvLq0FzJTapONixeFDk6rfml/\nFCyOB9Gc5jUN/Xc/szwvNexXVzI4YDkSa1EYFcDJVdfLdHt0Vb4wI5tGFb8e\nBgHLHasLUFfVFsgZ7kuqJl5xcOu3zciPo6o9oXYFoj6JndDNiQwM1RKxP8Bv\nWmCQNLUpnhjK0gDEFhSZGc7XC6Q+hWbRFJbm5JJTKqnKJg4gk5f3cPcPoS2i\nrRbZHww47Bs+BRYr3Bl9hhOHdmmx5Qu3pGrwg3iwHGDNKvHRxvUXI7EiRstr\nJ3hI+E/fiXDgNu/j8Qios5UyTEuWUaKSFgjvQ78G8eWgNi2pqLODYfGFm6o8\niostJMkV5KKWbS5yHuZyz8AbFeQRAJNPFq1gH90pukD+HCd1vSg1RVEZMgq5\nvn31jVmuywGeGLkekQKO1rCPPPSirv0tWN4dmkT9PQqcapIQSHHV/cO/ychN\nkG8Lyi3yAObKUeg1Nj4qOln5XxcqONFh6WbgdvBNjYGVwezl67081PoAINj2\n7WEp\r\n=ZIne\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"39c6ca5e0e46b9e6bbd407bed0903b80158209f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.2_1599784169734_0.04743596761745139","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.3-dependabot-npm-and-yarn-node-fetch-2-6-1-e7f82372b40067bce77c84240dd3b4b5b046350b":{"name":"@balena/jellyfish-sync","version":"1.0.3-dependabot-npm-and-yarn-node-fetch-2-6-1-e7f82372b40067bce77c84240dd3b4b5b046350b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.3-dependabot-npm-and-yarn-node-fetch-2-6-1-e7f82372b40067bce77c84240dd3b4b5b046350b","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9ae092a6a8156572a7bd0c691f9b6cbac0270539","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.3-dependabot-npm-and-yarn-node-fetch-2-6-1-e7f82372b40067bce77c84240dd3b4b5b046350b.tgz","fileCount":27,"integrity":"sha512-3WMoK2KohTQ4jK0Na29FYLdCBY8p4ClWs0VR1Z0iWHEk/aebdApNCwf4I8vyleOwjJyb7nbBeUV86qO2m//lUw==","signatures":[{"sig":"MEUCIQCmY7QoPoi+do7P8Ah0LLxW2zW57OrcnINHjCt0iSDbdgIgODlWuBAuUxiRLuzKGHc4dw/8Z15UeuQu9FmjkIAQExc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWsr8CRA9TVsSAnZWagAAEC0P/3Tn8ZNyIBeM3VYG7nrL\nDSLX+aPCSwI+v6th79tG5eXPBJ61bwe53XDRr+IwBRChNEa5rngUSWiawSLq\n7G7ftZKGK5kN0MDUQO8it3lfk3jfP+U8C9KfXpDPjji++LlMzRBwDvFahiYr\nnzaEELHMUIUyQLZ+bAf5xsEuaKJt2wCmkait94L7o6mxfjn20p3OgKkOG67g\nYeeZm4PyCluVT+8CbRZ9/bSsI638S4VcegFFs9+zHwZ24mT20tacFJFzetV9\n1OWecoc0q1LM6tb6F42T1EVySs5XYOsSLhXgvTuJ64utS7P4Xlncmg2lclFt\nyV5RyghtFxxHtIG9SlENV9hDT6IiNA2Tv+sGulz0op3gn4SD/OwVF20+RCUB\nG8NC3dMyXc154y7YMt1gAEyq1u0zgspAIkc4LBIvb6QV7W3APFP2NLLSRyS0\nw+8RkBPx6+x/x4mj6qYuudD688BpLYv9q3cZjFeUkhCJDFV4mf73njWM6ILr\nXqjG1UdFiLejGpu+X9SioVBE5kUCXeCDLB9S+EY99CzbJHvBxo/OQVcu0+FF\n0arNtAWF74OzMlC6UfHFFdEw7fd/TplSRU3LgqLlB3q6mkVFMQ1UF0PpYqUU\npW+d6JcJ3YX6qfl54GXbktrUMHitZISwm8GB6eyTEgYqW9n74RRmYd87Mpd3\noRYv\r\n=Mzkg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e7f82372b40067bce77c84240dd3b4b5b046350b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.3-dependabot-npm-and-yarn-node-fetch-2-6-1-e7f82372b40067bce77c84240dd3b4b5b046350b_1599785723703_0.3910089140352686","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.3":{"name":"@balena/jellyfish-sync","version":"1.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.3","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"101304d5db6d7ad6a2fbd575573649f14f344eac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.3.tgz","fileCount":27,"integrity":"sha512-u80hX77ComRSaLDJSBFbFevVlhOBLmYei7x2Q/23OHupfbuZ9q7mBMA5EkcytBSyGTKH4lgelKlfHPFrllLxRg==","signatures":[{"sig":"MEYCIQDecLDETY1hC9e19IIm4j89f+MHjAzdp4jBnhj2FO27oAIhAL60dSCNcBMJQO0rxregnmxCfrx8gDut2mhOmHtAA+pU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfWsytCRA9TVsSAnZWagAALhoQAIxnV8M6fsoTo2BVGeCT\ncxCMSiJfKQU2bRXhv1an9ze2VM26WONdLAlgjF9EYRYDoOh3DO5yLsUAey+6\nRw28FnuPHUmuDMWtC2bQ7yeOpj4t4umV1Aht9bLONUFLc5lnCE4+bTFdzH6E\nIDKuRGvBobZ2AnPVotA0Xs2uVMEa52vpSHfFmbgaGb0qbmblz10QaOyksqcK\nFmmbeU7myCBlM1J6dYQzYtvH3x5zd9idWs/MnchM7+nwgwQBRmajnE8+kNSC\n5sP+ARoYNclYCkrsj2FqYD5qX7vLLTlcXJKenguZ/lFIL7h5BsOxgk9O2Rwt\no99GV9Bgqsn1KQ4cDbkwr+B0Wt4yMYeIAYg0c5GbaKchyF3jlpkawNmYDsvM\nnC33KG9I7W5OKzEuDBCYP9KK0vGm9Pix4IaIPRbBIwObhKd3bkDv+mWTuE7N\nMiaGn3ckWFug6x/qjH+ttN96OjgvB27fzQ5HgCBvYYZN68M8JoktSUPoz08i\nX9+tIFpYTiZMs+tZlAm8EECBf9wA2n1sFYei6T2Z4RwFnp9LtTUHA/IPQeuM\nliPI0SI6stL+AAaC/+Hyn6OpqtdcUsGrr2S7f7EThFpbkysQh5NcOCADEMhv\n5l44CGtlGzRHJkFyx6PQW7x4uCTUY/0OQlTWAgX3vn1DzaAJsSorFMhitnvB\nuCZI\r\n=WCmk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"06fd51ce593e04e1621b51029245e35018226e4e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.3_1599786156747_0.7943101358687794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.4-renovate-non-major-6106bdfee3272344cc50d7825cb33438ccb93fbc":{"name":"@balena/jellyfish-sync","version":"1.0.4-renovate-non-major-6106bdfee3272344cc50d7825cb33438ccb93fbc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.4-renovate-non-major-6106bdfee3272344cc50d7825cb33438ccb93fbc","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"28ab8d64119181e9a623c0e756d78b819e1dca10","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.4-renovate-non-major-6106bdfee3272344cc50d7825cb33438ccb93fbc.tgz","fileCount":27,"integrity":"sha512-4AVXPoizrPKATD5bolXB9rDAjjVjDLiM2B87xf0gykgaNuw5Haok2QMDiD1RVBziiWDyh3Wex4R1izN8pzozxQ==","signatures":[{"sig":"MEUCIQCT+qMXYBoRzx0pPkgNgw+E/A8zFztXQ+Js9wEMZOx1TQIgCMv1uEcF/m+A8ieP+s6L7PXcIRvCewGAD1aKPHM9SOA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW8PGCRA9TVsSAnZWagAA5ikP/0av8F1XWaTz4Vh661Rd\n7lsOBXADQYvHumkhxo6VJd6iI2805wgf8zuAAvrK9aogUfJr+lYpt4WOU4UX\nd7sXTiyVkcXrYp7bQJrVs3HCV3iBDMABsTTtBJK5NxFr5sGEA1BMrMicP0K6\n8xAmZ3lTPLltEXdl3LGgI2yk6fSdxV0B3PlyK8Cis4xuhzAnmZ+9k/KxbBTb\nHRJkCIbNrGPRPkndcHizf6XXDX88+B+w7LR+aq27z8t/BA2uM4A8VB3F16xA\n2nt/20ISpOinRKfRBwnjAZSgXPK3zcOtN6Q1nOaJqAvsiYstKe+MmaaKCJ04\ng+DXQQmyyq/+t+GyKVINe38wpB++gr7Z1nBuGkV05fU/Y6LdySthmpqJ15sf\nihhLsBjoKUCEgvb4OWqFTVS5ewTSyX0b0Wzqsx8RYNwWWbgETT1Sa200yw91\ncQFfOmDOV4jZHkW2YByZTK4xVpGiPm7wITn2xqxDTkLySZJ/9MGAfr2g5NPm\niUn+CtZKiBYwIAQkg10OCIHrtjgKMfvRdkNcgXbRJ5hZFfBHpY4dDut1D1DV\nexAkVE7AbMqua5Z6f0+39wqv3z2HVSSRJpDDupoVIaiVcSjjck5jMNM1KHoZ\nCv0Ae8nrpwasuUPFfSYObJdf+cW1gvJdnt9BKcqfKaoN29uSAGFAhKgrTdYI\nanla\r\n=DJu0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6106bdfee3272344cc50d7825cb33438ccb93fbc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.4-renovate-non-major-6106bdfee3272344cc50d7825cb33438ccb93fbc_1599849413907_0.34322730545054925","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.4":{"name":"@balena/jellyfish-sync","version":"1.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.4","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c270488586884cf1339b1038873972e04e473e4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.4.tgz","fileCount":27,"integrity":"sha512-Z8+9MW4s5WWC1d1ZIlrxIkMYoNvJ7iVB6zMO0RwQOogJzFVxnYpqA82a21hNzrNVoIPawGsh/hxdcblT+sM6sQ==","signatures":[{"sig":"MEUCIQCTFmpA1Ae0lIk3KpuNPDh/t2SDuj891mv++YdXjA55uAIgaZPXvZBnbEqWfDH2d5npnix3yuy/q0nqKCGuwRnJVvc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW8V+CRA9TVsSAnZWagAATyIP/0d0wcU8BvzZstfWcEVf\nlkpYJ2fowwbl8xzHEUP2FdE0ubZ0lA5aiCGuLkcT4dC9NPvDFb8jm+nxnJzv\nb6Ld/76bg9Yllr5OlZGVydprHeH5x+u4BNqJ+LhUSyyqjZx9WlNyUrWKPaIi\nbdYhTx4IdaWSAmHRgoPY7Z7swpXxSv7Wed/k/aQhfaf4D8Oep6r4w485k3oM\nQX2aE+4OYbCvSSUkeW7g6YM5I5fsoJEG+8JLb6354/JpiXYBR3s//Us1b9md\nc08CJxInDjxI9bCjIoHs3jmIW6aHwIDdgDOpMZo5u8UyEy48j2jyFSSVa8CD\n3EpXbY5Ite2m7js7iEPh7moAm7Kl1GRaPaGQm/9+6zCF2KOeuVaY1Apua88j\nMBmCfAEDscfLTdTVbU0g33jPw/G3PTzLm6LRl9b859NG2Kkw+3QdX2FX1/7o\ns4gflGdF4kXke7Q9s6fuLcScZmZypmOnNqp8ysmFX3OHcjBAYLcCdVjix+jw\nL25p05lFX+AhjhwfN2FevCaHJMpjpyVsM/Gnk+uU3Zd5h8M5d2vbJo00fqlB\nCVrAj/hjNHDwJ5BxxS1kRjTb1yjnFpU3ngNISSHMeilCEmhsisFoWYeEMzGZ\nJjwPmUFUPwrtDkuAY5/WDW/Doe5LRKXoabVL71kHz+MxRMwygCvB/uSnzyhe\nM5p9\r\n=jR0E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8b598f81708d75a8bcae2e4aac84fdf7daad10e4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.86","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.4_1599849854247_0.6137070262427169","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.5-renovate-non-major-3d43f4ec547208d3205558bbfea3c09a3d011b2c":{"name":"@balena/jellyfish-sync","version":"1.0.5-renovate-non-major-3d43f4ec547208d3205558bbfea3c09a3d011b2c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.5-renovate-non-major-3d43f4ec547208d3205558bbfea3c09a3d011b2c","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a94fcab2c70e16ac7379a2d23f53978ef6af7b0b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.5-renovate-non-major-3d43f4ec547208d3205558bbfea3c09a3d011b2c.tgz","fileCount":27,"integrity":"sha512-f/5JUd70KdZJuWDMotRdWRMSXjsmntW9BGyAWIaL32qL0mjWOyfKfe6cTZYAoIFUzT4dyqOslpi8FT8m30GjIQ==","signatures":[{"sig":"MEUCIQCvqSe05HHvWRJUtdnexEaBySazuqI0Qj3TbhZXqlT4aQIgfJAnRnsvg7afrzme/fbqEwoRww/DeX6jj8C0Kw7V6dE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW9RLCRA9TVsSAnZWagAA3BYP/3E3iyl31IcKDE66Rmgd\nhfovDkXbUcyI14P79YBxtndVg2uf/sXe/0ae4oPhRmGE4mo9yXRRFAE7NHKm\n7KZYSJh38FMiKciFi/A1yeEhsJONO4aNdAgV8VQUjDTJ5i6hjRfJeY7iBW3+\nUvb2wU1oxjX4l4eVBU9Ac0vkh5c76NDzUGGfCs/pRze8wkZZB8wapLmbgM3c\nVXcVVR8yna5Z1Ldj/GGOlBM9pufIEfPC2fjb3nOuMCK0cLZVgIlkZVEvBInq\nxbrZ7nEkXAEUoL4ui/XjWj3Ruryw0HAAWPSAL7Bs35uCWKPpCEBFieNh3o61\nzeCYECZ7eizP+izPIOg/LEbUtqWZcpf6EG+8hKYNs/2dpcXOGLn+7ujLixpH\nxFGZwDlQAiU2VpxMHe1wCre06VBGNOhbZ6n1meN7Ei+5JPMYbFj/sJ+1n42y\nXKSu6Gfv1OlajKHW0CrK6RYS3ELvDxnNRhHmvMvOXHqkZE/APlRp7HDekteM\nWYCO3WWKgEFzaDEslL47YgN0dI0JCtxeJlBvCzD80IOSYlpp3/wLE2pUxIqR\nRAOeQ0yU2PJmehyt+Nx+xB/Flv8w1nl5Lermw8bejZZOXD8Oeejio2r3BKpf\nDErj1L+vBlYi+3D+qVMoOesTZQ/YLfbaBwKPI/7AvT3coX2Ief5cLfMGM8h8\nuOyn\r\n=Abqu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3d43f4ec547208d3205558bbfea3c09a3d011b2c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.87","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.5-renovate-non-major-3d43f4ec547208d3205558bbfea3c09a3d011b2c_1599853642648_0.4577849848812068","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.5":{"name":"@balena/jellyfish-sync","version":"1.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.5","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6553f0d97079798d4e04e39c0d1954686e20332e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.5.tgz","fileCount":27,"integrity":"sha512-pn/yWgrTab73FKZJ+/RsWeFpEBL1hDQIgc6kFh+6YuWof6/AY2zsY0fXDWNEJB/D3WJlwe13k7xtCp+3U0oxFw==","signatures":[{"sig":"MEUCIQDLzpDsk9rFKcbD0uxq95HMdqAmdfTVE0/wZ12sozyIHgIgWrDpl02kGMmgQpFNa3tAdXGMiA+IbYZF+pCJZ7swHuw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfW9UbCRA9TVsSAnZWagAAOPMP/jtRRWdaFcAKKVwQUzdx\nPkPWow7QEeoj9OsHaPrgwIbkFkHR3orc0nXCNOq7ORLacftizWpAwNmTHCeV\n5AHPIrlIqUbrLtfkvgXkYuQKb8lt0nAZnqWB8UvE1QVu4ATX5GFJngOpcO/y\nw5zK0m+KlZdAKTc/jsv1QGyvdEHyfBAAPphZdlF1qdIS+y+rSMnUvHu5n6oa\nAGBQnDuFtM2M7M8qarCJdF1M1PTYgteQvG3i2RbjMhIk6im6RRP+GeWhJ9SP\nphyBFF7dNX9YEJH1yWkIh7mSLccSi/8LsWdeCukOzZjaIDsg8dcfFgGrefvZ\nzf8ls1n1udH7SD/vVhjhiFe0irI+g2t4+VLtyelcdxBz7BpPijqBidFIwZvK\nsaUbbEvkTXIJoTDx2Iv4WdW+T2S9yQiJZCkx8a0yuOsvhzYp3LyU/7W0yj4G\nKrAkh+ngLs+k9UnqJ/x+lYEmAP1rSYhlDD8qprutHeL8MQ1u30XP1EWoyDoZ\nKJPH88U1EPD48uiamT/ZmMN245KYVIobUG9op2NIP4N+ZRDET2ObpQ7gYfa3\nC2qaiQWfoiu5L5cnvA0kSnygM9SH7sXa/zK0IoW0gM4Kv1gMxxCipDd/yNsC\nx5fPYnyWAQxUx05zNwqWZPEqUMxgjDXwhJIbVzFvCjvP0svjd6hvyZtA4GWz\nw9WQ\r\n=E4Z2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"05972e16f273c80684bc562900a9ca67f8c3a65d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.87","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.5_1599853850634_0.881865075125327","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6-renovate-non-major-3c775f2aab9786eb20c9a72f80b9a0dc600ba077":{"name":"@balena/jellyfish-sync","version":"1.0.6-renovate-non-major-3c775f2aab9786eb20c9a72f80b9a0dc600ba077","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.6-renovate-non-major-3c775f2aab9786eb20c9a72f80b9a0dc600ba077","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7338fd89caf1fad4a64baae0988f754701c2d6f1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.6-renovate-non-major-3c775f2aab9786eb20c9a72f80b9a0dc600ba077.tgz","fileCount":27,"integrity":"sha512-3GEUAZjVomOcu7wWIgHEUdBhUIHlL4Y60ddjlW61em8Qt5vHi1NgdNi3BRRA1trL3huZJ0mCcS0sb+ZtfMqU0g==","signatures":[{"sig":"MEQCIHLEafLnVnGxOUtVi22dzf+2q8VhlmWVCpaYG7g8AyJkAiARPZbTkku0Mp/VcTh+GpUfRqatqVxEqPF2REH1GHju9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXLBLCRA9TVsSAnZWagAAirUP/20w/6raG4BwsxWf+XRo\n7fg0hOu6ZStLzGt5D0AZGZsAd5cRZJ3z3fwTMKL9nij5qfcpgEojsYXVoFSG\nPKXZMGNx9f0zFsG3qWk45EC9KA2NkI6iLi+9R2mflkNWbbr6tsalH4XXEF5f\n6XgZg92pj2viMVg6XKE4bEOD8QryoOELsn2AhyOx3GV5oQqMyjO4fDM9Eii0\n0I1PV43jcDFF0JtOohf85jOEjS0gyB9LMI0JEG+grPN1R2rCb0mMfNh3qFys\neCG+dy4A9HyahJ12HCYDUT0oXTH+F0/yydNstlIZSWlg5OEMekM1iyzIoCc9\nRIZGtHBMvjBuW4yWdPeSC7ZCaRADKUlyVRfyt9VFkhLaRYOh/iHdJN2yNsYB\nl/D10bBaHvVBaLwQMglSnU1iM2bGjvzpaCZcX6ACV4rgfeNIR+Ot13KjssBj\nT+lgicsk8brQrmKNrpXz5PPENzNmsvGwQ4qTBbp1XeKv5P5DA0ZdKZZqJVav\n6FpZ+yLC0TwnIO6RDjX6vKFYfW89YxeTd1Q4tcNdNtBk8GTiGjTFVkjZ6Wt3\n1QKNaHIkkKAYpY18Jp72MV7ncIjWmlHe0ApGofdfcYJJ6FvAskmMSujRlNlw\nj5wl/XFE+4Nwr8qh+mstbucoKbmwejkpPzTagrCPFJeUAfyzUEFmosh0wjRH\nDjHx\r\n=Xo5e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3c775f2aab9786eb20c9a72f80b9a0dc600ba077","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.87","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.6-renovate-non-major-3c775f2aab9786eb20c9a72f80b9a0dc600ba077_1599909962718_0.29169661541646574","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.6":{"name":"@balena/jellyfish-sync","version":"1.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.6","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"03a1755a65f884f422fba4fd4ffd78348cfcd9a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.6.tgz","fileCount":27,"integrity":"sha512-lg4ITbS293QXzv/JZubrAk5Itz/9cAGDO9nk7sKMKAyeP3q28OKv3L+wj2YhXGmle7uMtlmg4t6aK02pu61IcA==","signatures":[{"sig":"MEQCIDZwcNQDGgaSpL9WMBVr1uCxbtxr4F6vyCDQTJ9qPm/bAiAWUpMSCkeOxakTN+Erx6+0sTEOSmFwaz4RmxjqzD25FQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXLIFCRA9TVsSAnZWagAA55MP/2WAbXY4Vq5Z76vzcUFW\nH2VeQI+34Jf9dWB+zDc6P+3qFQOn/2IFY6jf4Hh/RyH0XbhSPthKy5lb0tX1\nsuqZ86LozE/bqea1Sir0K8b7OOeS0Rtuz2L3TK6bR6j2+fHlsC0+ezXyaA0F\nscqm5JJy+Ra/U/r7lINqWKJ19nYMEHuJaEvddss9OZFjwI0fNCCE66LNpa4o\n8X8vIawYPKfPnkhqs3SmDDqtbHaTu1+9/8mRZoYWZgC1ZpXH80+akmpVAN8t\n5hzCfSN8KZJ1uTOIj8TvLelkI7kVRnNOaeINW5BNMB317q8HM5zO/5wW99eP\nnx3J86XzF7kmZxonmm0gq984YuF37BYi9asScGAhqEqhsIMRxeh9bk9c8T9e\nf/WAXpQcj0ZP+904fnzVbeq462QuhvRl6KMCQDaAlaeY/lXsO6fxweYIdGjK\nB3Vp35EOtQDCUZwEtdulXicN0ZP5RaTw3+8EJGqskpZTap067OBWDACeK13x\nzvGFnEvUDgEwX2O6bTGb3wOZTC5WKEq95XQSCpsdCK3Qm3icXOXAKkWKLZLK\npEyLeORVM+A3TRvvuXJv5/T9iaTlz4rcuP4cEPrxly7FfagLEOoiNttA0Up/\n3BGDJLKHJIhzHcUy4u24aFtkuq0PZUugPiHLeLiuck2rFkyyOa9p+krkvIPd\nPv1z\r\n=i/Xu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dfd6dfbdd7b671808ac3a1a7abd313c7f4029e76","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.87","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.6_1599910404912_0.5814134415655083","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.7-renovate-non-major-ff43e0f86ed1ed238d8b08a1bbce88c059b49941":{"name":"@balena/jellyfish-sync","version":"1.0.7-renovate-non-major-ff43e0f86ed1ed238d8b08a1bbce88c059b49941","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.7-renovate-non-major-ff43e0f86ed1ed238d8b08a1bbce88c059b49941","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cfe946a7c08dc0bf144b86c474670bab4ad48cbd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.7-renovate-non-major-ff43e0f86ed1ed238d8b08a1bbce88c059b49941.tgz","fileCount":27,"integrity":"sha512-FwyXRD76XxjEzeeyDqB1odGQ+GwHokfq1cOokFL98PwKKiC+/Ko+41s8T7QRvZZBU5G2+EXjiXxYYdIvmrdDQg==","signatures":[{"sig":"MEQCIGu7/16M8LydWEVuQUBb/oQW633PPeRFiTV1Z7nvmQi4AiAvUkqHHt4I/uKhbhOfMhGvykjUDANGbMk0+n1nGezglA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXMJdCRA9TVsSAnZWagAAQZoP/39jhXFbQbXqmCVH2w5A\nE6/W3QubFBpjAtqXtd0ut8xNx0zw9hjyxVBxcqYtAUjiygcGBykas6/aCNY6\nb4wNlAz58O4TDdwzhmTPKGPtVwprQuuKGpsfiGIJdpod0agH5YwbGHGsdRG+\nKBlj8VwAvo1YEvuy5A2yTnBsLyVZHcnbO5Pyv5XqueMLYf9osXcZN3vxC6UU\n0vyrhQbF5n39FP4euITKWzfVLPBYfj1xRiVlQmx0AycMQLrn1FECuDt8vxFi\n2KQYGy61h2JQimn4vvKq2dmYfSeo6dTJzR12qe1y2XMpPH6D8GsTtXUIf7hJ\nJS70cPT41bdAZn03r1GmVVXxCIq9UdcfvPxz9LqR7LI57HMzlucC6E0sPXWc\n0kzhhFwNNWs1/L27JLVpqgyZJoNO639Q7uwnL3fcsNuqQ+scAauylbRTwEcH\na/meiU2NAfB/MXwLPGqo3bBbHhhfI2JhqJX0P8/kVV2221trpw62EHohW3LQ\na8jqtpjkYEXvbr8wU5pl0Rtp9wW2CarvysWSUW/PeIscVXJwUEJV22GQ8IPy\nzHeLDYOrO86iGcLbtTv3ekIcmlhtoAtxLZacqEFkEQE/0Hbs87rvcYPH90vx\n2IKUocDXoUt0dKw6wL8cLlU2tl6eZB/vybBMUmC/3UUBDQOvDfHiiOimiIBv\nytIM\r\n=04qA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff43e0f86ed1ed238d8b08a1bbce88c059b49941","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.88","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.7-renovate-non-major-ff43e0f86ed1ed238d8b08a1bbce88c059b49941_1599914588561_0.8019448194139029","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.7":{"name":"@balena/jellyfish-sync","version":"1.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.7","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9bb78263376c17fa493255df94903bb2a3f7e88e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.7.tgz","fileCount":27,"integrity":"sha512-jVbVr0RPty6jkrI0a59qDLZnVJ2Zcr8itMr9IeKx4/KXGX1/I1SdPLp2fErEaLfQ0o3bGXguSU1GF1tHdFgcNw==","signatures":[{"sig":"MEQCIDN2+tNm5B+UnhKJoIVEtzigyjc/lGedsCITmK9EH6xhAiBQnx+D2u7EbDYI+SxXFYQos5r1eQvPbpO1L3sTCvWVpA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXML6CRA9TVsSAnZWagAAu0sP/25G6QFaWLJoQ5l8+tF6\nvTd0falIXRMx2NBUC0lK7DnIamUtjg6t9/PEZcw3NLJQ2Rg4xqA43vrgEqhB\nbpLhvnKeHoYbVgl9au3q2YtHDedaiA5yVIcp3MCe56ueA7IuJquvnIpKXBj7\n2YGlEkOT+p29mTWEylugs7wmSjHQNOCbxdIRug00Ns6oo7nSGYUGYLstAlNe\nXMESIFeeqslAMOnlR5MQN/hjF9kZ+8mb9Os7TLLPZbEx7y+lQ9ffcMUOMEXd\nUT/QutKNej7sIKN1JBfUz0mNnv9lEnbLhV1m5pT9hd9jUEsYMHmKnjnVK9cT\nTMG3z4rkFbGfEQk6V1kAxh6HhD03PigWK4rgxpVr35iof1+5Ol5JnJlddyZG\nY4lUteCjYwbe3wELwt9B2868Igz+522aJtmFDpR28YXxFH/iu8ECVh1EPKHX\nkjtTeHHOZePS9mrjO/p8UhV+iBWV32y114wfnuf8/I5JR1n5dX26dMbGtxpH\nbK5W3JzpWc5xCLUKCZvKT4I5pDvHGYLsV93iaU9V7TUOh+jwql24KXl6KAps\nWyeHJrXXufRY5omMHJ2GWReD6eyVkNLWv2grm1v7zEbE4IgLKP2r76VMbO6E\nzjMNxk5lpTcO/B3U7a7KKmhnjorz1oVg/DGAEOsHiQh3CgAOAZy7IiiA2J+T\n9CHL\r\n=FDSG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"85d5f72ee9fd227d67ce07bbf8cb826b93c89c82","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.88","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.8.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.7_1599914745677_0.7574618248796832","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.8-renovate-non-major-677b50fdd3a9d17bbe09a63616ac4870b32549c0":{"name":"@balena/jellyfish-sync","version":"1.0.8-renovate-non-major-677b50fdd3a9d17bbe09a63616ac4870b32549c0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.8-renovate-non-major-677b50fdd3a9d17bbe09a63616ac4870b32549c0","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"721881c15b3f7860e89990b81d8dc65f74853d66","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.8-renovate-non-major-677b50fdd3a9d17bbe09a63616ac4870b32549c0.tgz","fileCount":27,"integrity":"sha512-HVEb6FEbWxqnrrF1E/kJpeIkoDGDOpg6q5cHm8lfV9/VwlQqGSZi2oqOvqsHU1ehOzBSePzf4ZWdx/4TknCLeg==","signatures":[{"sig":"MEQCIHXdXKmMTcowpdQrgVNs5fzYEGpadIzespuNM82K0SOwAiBjuyFfmvsKbOM7444mzNgf+Hz+STYatTluy/VQ0nAyMA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXTD+CRA9TVsSAnZWagAAWtMP/3MQP0VojxBholMr1t9q\ncyhJeoe5YKCcfyz0ykmEHvn0fFlGx2UBAMCPqKBcmJrKTIpcEBjFSlwplW3u\n5i6xo2Tr8zHcF8LYg65bNSUyTUjUNPZLjLrMzMZEvqw83L675z4qkSF8M/ht\nXDS3dsmD9I4W0ZB1szb92byFKjcPaY2R0ftxEsnSpnDqzki3Jne8r9OP41XJ\nJaYA9mUOD5cZwe4F9Mg93AGbZjwFC4bk7/jhnFpFFELCHBwfmTD9vlgNVpOL\npfmaWx89oGh/Acpd4+cUw0fpMvCxiWiZnGMTtgj/skmmhVSuiOacTGNqpQeo\nuQ7zqfR/NTDA/iqEFeA2MsWhq6eoe2mOP6vQ5R4hJnQ03gfKPTrUQqmG2UBg\ndb9tg0taWCRZ2bzC4FomUml2cqfs/95MEFX7zgLTnL0ILGrW5o9PvRY7IbCp\nfRRRZcFXvDY9UG0kAhtMFa/1Ue8SZ53Q/tDpsYqT0B/3EI/n2u0JNTp055sH\nBTBNI3kLSxecA0MVb6FZZskjsdWdHBldh8YzZuvIjajIBDIrishnj4oz3WfD\nSCWHl/89fbdbuNoZrXDmi/YLSdAfgxLNl/fzYEb6n5hJibZ2nfFwYXAZHJwC\nqYUnyA+/v+55SD4OSW6cHwQzQ7u8FUCSrTj3q6+jztOJS4N93wYsUHbysUO3\nDwBe\r\n=Er6z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"677b50fdd3a9d17bbe09a63616ac4870b32549c0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.89","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.8-renovate-non-major-677b50fdd3a9d17bbe09a63616ac4870b32549c0_1599942909628_0.38676143220390036","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.8-renovate-non-major-1c89000ce3d621b0cbe0161cba03c4183b80be41":{"name":"@balena/jellyfish-sync","version":"1.0.8-renovate-non-major-1c89000ce3d621b0cbe0161cba03c4183b80be41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.8-renovate-non-major-1c89000ce3d621b0cbe0161cba03c4183b80be41","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4cccc366d857764594dfa781bfa354edd4abf262","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.8-renovate-non-major-1c89000ce3d621b0cbe0161cba03c4183b80be41.tgz","fileCount":27,"integrity":"sha512-qqFb3a9vFNuQgFMn2BHA0l4l2R90GohJqAWg5TbqAkWWOKAa6Tdi1o01FwvmU38gKx+902YbjIjlKlGaKmyI/A==","signatures":[{"sig":"MEUCIQCG8ggcB/8AE/xCR8B8Qe0TEizcDLfa/tWbZCWTVxfL3wIgTfCczKIk6rJci+l9531gh5tL9WVK8IYRV9EnF0isJCM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXTH5CRA9TVsSAnZWagAAsusP/1x95K5AEHvF+QhTZzNL\n7K8NE1s9nfxXgwg8pIJatNfCdng+j70jD8ssD4v/x9nLlVWgWd/xllZwz+ER\nHHq5f9W3mZH3a7PJomYCE5iFn7T/OO+DR45ZU2WuPxN+4kxh4wLSjVbCBUAt\nkp6JVrlMb59VjmofoCQu9I2d3G8yl7V1Nw34M+sZY/ZX04uUhIWm0noEOHv7\nEqp8newY9KoHdpTbJIQ4RHIQDtjgxmd45A31Z84KJyS+pEbMQu2FMLK+G0eh\n4Nl3Gjyup5j0ZLkBTb0B0vroHAqoTdSU2snECbzo+ceX79NRmCBnHHPxals/\n1sB5vcdgH2lQ5kzqJAWCz8Xgwz5Ue10FSU2VJlL9sv0WoT2bliHI4S96w4D/\n4dSRP167Vkyb4Pm4X+h7jcvlYwy1jwz0apBZVbL2Zi+mD3DKefKSdRMsWfgs\nKMWJs29YB1s+HiRSDY88DOtHUEO+8ECcHYZ5XfJUmAjUDnvKqKxrBuSw8NCk\npF/Ib17sQP4GpsIKm+H461evfbSb3hDMIscG36Wlov+oQCv+315d8o/5jIfa\nUh+XZxDlso0XdBAsLQ4IwdWAObMbjXiaS8rx05jZMGXtlvWHsYopvDl10A6C\nWReHqKxfT5tVt4YK2O2XwDfRDAQFwaGbDGErjo6cp4lgQU0Yye+dqRU6Wuev\nNa+6\r\n=6N4x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c89000ce3d621b0cbe0161cba03c4183b80be41","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.8-renovate-non-major-1c89000ce3d621b0cbe0161cba03c4183b80be41_1599943160994_0.30436465744858476","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.8":{"name":"@balena/jellyfish-sync","version":"1.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.8","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d5039332cf99ddfa389004242057f3181c11c0e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.8.tgz","fileCount":27,"integrity":"sha512-R23JiddI67fY1lhluvKHiW/0oUqlAR7nkUtr8cKWPDX4GmMDLGuBwShOD+jNBmQLbrDKHZcO8q9BE/12B2OLRg==","signatures":[{"sig":"MEYCIQCLVL6o3wG4O1CdZZATe2zj3sb6zfQJ9OjfX2mvJcZQIQIhAN4JqSc4b1m8941iQfA+ITB4noX51XarGRInPirVl2Cy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXTKnCRA9TVsSAnZWagAAK2MP/AiGgkZgwCyjPAQCVhip\nVEt+PpP8sO9AaSwtJnqRZYhklyfE3BV7RZNEBi+bMDtRE1SrTccnHNm7doTE\nnyYsh9UKvRAz7fnbMQAY6ogCrE3AL19n0LJCIOPQwAFzm1hD5S8Ww9ljOGiX\nP/Rt6UWZmhmj8RHCTXc7k0PZcFXerk2+F18V5m+5G7H+kN5GK8FESjFddxBM\nKw9b9uNvDZJ51NkpgSoyArt6kVMcYFOvvWgOfLGyIh35VHcnv1gFR82+VeZI\nsv6hPKrKAN+R3KK6dQh0T6eRG8UOL4+F6IVKnXTk226EN91LxN83Yagsdj+/\nOkj0RTXj2mYL0gILmHm8sdPN4Hcp7rOke8MWmeQqaxi0HdLXKJY4E7XvvjeH\ndLUlVuB0PEa0OrU/jleRP4svRFsOG7+x0UVDO8KBBlncycfLenB9jiZ7Qgug\nF9lswlhvAhuT/7xvThFfuB+piiNfHzewMugkMm0X5uG/73LTilWFGyzeT4qW\nzTpwJ3+dUeoIur6TwQ+YH/MfWg/5yTkYPPTnZ4ZxucfcdsWVTOUXJ3YH4yfp\n9Nvjire3FrUebNn/iOD8QvBb1PjAL58UxgfYzYxhWpdh/h0Lgayf8tGCb2lL\ncu+Oxm9cVx/N2SfYkY3KWnAJ3iJaW90YKu/IDkRJc+eb9D9RLW0v+szhEOLm\nWLbu\r\n=r1PI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"13adb042f5a23901c86d47720ee1f7aee080b82c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.5","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.8_1599943335014_0.5602153613538206","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.9-renovate-non-major-a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5":{"name":"@balena/jellyfish-sync","version":"1.0.9-renovate-non-major-a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.9-renovate-non-major-a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"201c6805212171c68901226451e0ecf341d327cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.9-renovate-non-major-a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5.tgz","fileCount":27,"integrity":"sha512-dXOU/qVK5Mkz2su0FV3QWoWMQT9ufk1mFNcGUOiVFgdjkbyTdvQQCeY+G3naiyogWqGOk2iQoXyx21v/3LOXbw==","signatures":[{"sig":"MEYCIQDQLy6qmWGVYqcAetJQ/k2pBG2OBAHgZsIhr49Zco53IAIhALZm9VyYp2Y0bhw4tPHCNDkWked4J3k4Y2nuSthHrtF1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXw6vCRA9TVsSAnZWagAACSUQAJcV+0bUQMAIqSDewwBU\nTLzxq+UJjByL9zj/Ex04YTvx8ILW+Y2xWmVur6cgD7rCAetgKJN1ZHx1W006\nKpUodG3XE32BjjlKpTsnF8B3Prrs5/wmjWIHp96IjumQkDBGTR8AOJ6nZhDU\ndkQHsjo299gJk7+CKalhoWHQr1HZDBXrL9xsa3MdPN9cIBrPoDYdOegUsxah\nHIIQaHlhwMTKwLBO9iFFOirZOZLxxkFfgRV9NknESDDr8LDXqqU0QRg/KKac\nGidEd3vx3OXLmpeA+PUqHqE1PmJGuLtXjdKzNmrjPaE8Yk9Am4G0KbVJtB+y\nnfFsWuTL2hAqrQ4Oe5k0M5fdZWvs+4Hy7dtmutTPDGe8QS8wyl+TEvduhxwO\nP2yVWNcUep+WRYLfMAeXQ2X94rea5ARQoVYXFQGKBZifBIj4byJQM4xDNqf/\nzR9jB9AJp6BzBmWOmvuLMh7dK6Bv6exlWIKlbQvPDWU9XjgHZ6yZfSjpMtz/\nTIech4bTpkZv4RBR1KmgzF931GqGuvHaMem9AKJCkptmru8fwcTLy3LHj2Ud\nGa2JVxgaSeDnQGsuzRbeZzNsamOJcZHklJAhpV3qpXuBUQK8Za2hDbjzDMJP\nY8CaPuVN0eLB6PTTdiHPOma/j8pebE5sVpjbJhsBCm110UWsmyCwkwYwizWP\nz31E\r\n=VUqb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.9-renovate-non-major-a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5_1600065199229_0.8467518049128429","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.9":{"name":"@balena/jellyfish-sync","version":"1.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.9","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2aaac30005977698939db21b8facdefd6baed42a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.9.tgz","fileCount":27,"integrity":"sha512-H7mGHXK2JwYDFtX8oD++22ZL9sAjZa83yJdUQOS38g8usthW/DOfvH8dzYEH0o9nKMoZUgXPYwXBs5aLJyzuPQ==","signatures":[{"sig":"MEUCIQC6uVCV14OCLSWhZmNMNeke/oKAeb5X8IeHZRrld5aLFgIgGCdiPKTwtYXAnixoWYme1wCzgJXV2zLz9XacvJiWNVM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXw+RCRA9TVsSAnZWagAAdVwP/2fQTK2us5BFBZbYTmGG\nr5F+EkV2ukpQW/3jmhoXIymcgn9UGtXriaqZERhtGvKWREWnDVIFyIT3YzJB\nO6GmFIdZZRfarpF5JCPgqgp6I6WhjLj54H3EYKqwsHtGAK2NJv8KbyLBc8xa\n4pw5Nb1L8sTlzegmzEZNpEH8mscvk9L73WcSXt2V+irlqB5iG1gYS/FWVDKJ\nEhrQ7eI9r9LrOQ34zuUJyC/eA/lWWfNI8xtTaF/QWBWEo3wDLZE2pd1isDc3\nu0+0NaouB8gfdHWlaIinQ5KZKWH/2qoaCBa+cJGTLvDEL4+ZJq/J3l1gKhfx\npx3HOZZYc95w90IsFWuvJEy3wYctPjw24nYzmfnyR7aSlodUzdkeO0iAuAiF\nX2dHDv057dP0KlzxFvj1mEw5AAbUwzfdy10SDnEOKChiRtqNUV2/SVMwujP+\n7PxRcj1id2FgJAJFPCrWIOLDbLCOFmsR1p2pou5wXd3gFP5WCeS4/7izKM5D\nkiPGk6BVbOhCwnAHNyBAZ9p+2I1b50vEofGnbvaBPko8fJYHxAQ36o2suUqL\nOV05wO0ITHxkxhvcP6CknCQvuoAOGCSR5ebEsJEkwWO2JgY5U0GUTeXWV/q7\nds9jmmGrXjHVtwrvaBj2RZzCM64QS+urRIpP+c4p9XNVkEJCSZrea8zVIo8a\nPNMd\r\n=xFFl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9db24d211e0702984dbba4d4717b5bfd7f13f30c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.9_1600065425290_0.7891659736112162","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.10-github-orgs-2fbebdb19d12c6dc7de581dd7289c5003ed90d08":{"name":"@balena/jellyfish-sync","version":"1.0.10-github-orgs-2fbebdb19d12c6dc7de581dd7289c5003ed90d08","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.10-github-orgs-2fbebdb19d12c6dc7de581dd7289c5003ed90d08","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b767783c71da67b8b6ad7957ac2c8cb839b043a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.10-github-orgs-2fbebdb19d12c6dc7de581dd7289c5003ed90d08.tgz","fileCount":27,"integrity":"sha512-c7naDFU2RxFYagXIKGS2By0ucAT+bCIiORDRrCI4Mnfzfwu64HensMu8srkNoc/apz3F63V5WIcRw+ud/MUAjw==","signatures":[{"sig":"MEQCIFa9yhnnOEgKUy3MwgyFqzvfiF1sUuUnVS5wZDCbzmYOAiAXLQVg2wBcPxzZIu2iDQnn4yBbsdiegTadQ9eejxOoMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXxDKCRA9TVsSAnZWagAAdJcP/10CyoPnXwhXWXLM2zNM\nOHB9JxGt5hDvnIzpQoeeLK2RLCRc/32ldDHeFGzCnq0RW0j5SpBwelkJ90SB\nON7MMtWp8KmwAmGlMtcSh2ZHSYjZM8oNcRA+vezmNe80PeLBMGJ6mR/FY77C\nDdUieCfZPuqGMY1iLAAk1izi//Y1U3FATthURMelhJ15qxTF/V7ytclYWUZ8\n5K88ZWDp0q27yZX+cI1DbSw+zI6hQVyp6Vv7zqO3Qy7APhhl3V8JBINTQYi+\n7/cQ4cz+50UII2nsmVAf2NE/t7muSzc08YKrVWWwN87eBWa1rnbd5iMBxP9T\n2j13vr+O7YC5VkoHm5R9frTeaIoPMYfm4t1JGMZeBO7EYKHb5OC8GyHpGQbj\nmPWnU4mu2EBuAcaYi8vpegx5wWxCTd5xrtYF/vvoZE7oKikeGDPhQ1ZcECkS\n71HPYS+jNCGl+LAeKEVrpjVoIQ6LgHykF6E50GlqQtFmwHCCfr2Bs9+u+Ih+\nWnLiWKZJ9Xq5Y2eutALmr91E6sFpRKa9EmTtq4DtES0nKwHnDP3QmMzFBye4\nOPa2mHgqzVb1wHLx1FonwmtKYAXZZUIQnlQ5iv1JEf9ns4mlPyo1oVk/MNuV\ngb+Tf2DY0oR1c2vPuo0mQxjbmmX9mqqfX6r9jgt6XDuQF44YMyuSHdAL9xxu\nz5tm\r\n=LoHa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2fbebdb19d12c6dc7de581dd7289c5003ed90d08","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.10-github-orgs-2fbebdb19d12c6dc7de581dd7289c5003ed90d08_1600065737920_0.574670408456313","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.10-sync-mentions-2cbe13e0625d0c46b1a678cc771165782f13f66d":{"name":"@balena/jellyfish-sync","version":"1.0.10-sync-mentions-2cbe13e0625d0c46b1a678cc771165782f13f66d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.10-sync-mentions-2cbe13e0625d0c46b1a678cc771165782f13f66d","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cdabe4e44f42ea82c9f165bc41cc8d33544de4a9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.10-sync-mentions-2cbe13e0625d0c46b1a678cc771165782f13f66d.tgz","fileCount":27,"integrity":"sha512-csxmrvRCp/PwbwUUS60/o4MdEO0HdkqfaFu6SiD2V48+u5ereh3pJm4OLpr2SmwNcTjNJ/2e4+6jiPUp7otYIw==","signatures":[{"sig":"MEUCIQDQzjs8jNMOM+ZZtVcAAduWotf8RMOSXKk/iXd1P3NUCgIgPEle7VFpa5UFqoZDgbfrcqzCSDmeEqmL2pX5eLVMsgM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":255165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXxNKCRA9TVsSAnZWagAAccwP/2SrFNxV+SeDmPFQn5oe\nCNHJAkd7Tj1wp30ET6SavkzQfRvGdh85YD534Nact9kt+3DxGpDLLf7YWgTC\nDh6K2irdNiuLu1f08MGGWZFAK4kGtaDfwStY4zUbRInVfHPhO2L2FBMTfVY1\nINyAdSJTzeNJn/AAevSH0M5Lna41tOQwKD1SycgdpP0VSjI0uGRlmOIq4hNP\n9yvZ/cffCMekmogDsUh9ezB+S4aiPTKt7MNHTs326lzu778X0RwR2WtXDEhO\n4YMVVa/BfjAfUr7uOzhrDXAwJ20kbaDhiWP25JTt8p4//3ndRHi2boftLrO7\nBxQvy86X1ilqH15a+0VOIySIsVKgV9oAC4AEy9CoLsNsBSoeIVRgq8D1FhcT\nZwKfev6OE+oSTAsYrH7/0ZDXubr9/QcxLglULmlXVgP4QG/wS6gEFU4Y/vaY\n1FyeM7TkZcIqHq1yl4eBL9u7D4RK34DrpXNUgus23/YMlnMGSzgdmWymMsHK\nkl5kblCnq6d6elm4Xo2vl3JNmp/KPrJVLIkl3rHr2c7/B2jlgFhFXS4XKepc\nqE+Nd5I/a+hRUdjQJpOLlb02JE4POJPpgSulq0pTrx5OH1jcCxpBtDK3/Z0P\nn6vI487yEm+MK4+gj86C3kDqxgzIlUPNzAyNapVkrOPOI0X2cj+/bjHOjOxd\nxxKA\r\n=eAJC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2cbe13e0625d0c46b1a678cc771165782f13f66d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","node-emoji":"^1.10.0","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.4.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.10-sync-mentions-2cbe13e0625d0c46b1a678cc771165782f13f66d_1600066377635_0.21582791241262855","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.10-renovate-non-major-1a0ef29b3c0fa025e333572715be15e8b33b81fe":{"name":"@balena/jellyfish-sync","version":"1.0.10-renovate-non-major-1a0ef29b3c0fa025e333572715be15e8b33b81fe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.10-renovate-non-major-1a0ef29b3c0fa025e333572715be15e8b33b81fe","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2626d7e13835a446ed23799ff04167547ff1c28d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.10-renovate-non-major-1a0ef29b3c0fa025e333572715be15e8b33b81fe.tgz","fileCount":27,"integrity":"sha512-FC+hgfqicKm+Cv18WHPqZGkaroJp7n8PxWas5LGhuLtcs+faJ3tZisKZYmqsEBBypp9vxwmB0JTRCRXja8zjAw==","signatures":[{"sig":"MEUCIQDKIKxaf8k4bvxpSs6MV0ZekPShoYV3AHUUdFUxgFs7cgIgbJOrLQUuQKKsEZgt+lzUc6ErFG1+un/pEZdXcWmcmwM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXyXSCRA9TVsSAnZWagAAtm4P/iqpv+w+K+8MxtATMetk\ng3FDbHNknvdlsw/RBxu56Lu5d9N0eojf556l42HD1fXB1oVAzZJXlLwudChO\nsfnKMVPEk2MoSC6igmAQ8EZ+TEffBam8L8+0BPG6EPP1YGZLX94Obq+QcYnJ\nUWMYIe1hQOhiwCKytfgZbr52BO+zyEvmxVnUZzJVn53a7Xu0e08FQfYQIajY\nLpDx6YEGow9+rnVID9FalkUmES750kWib7aSxPCmSuYZ0yaklMTT8E+rfB0L\nHjTkZwRHlkvGI2wrTbvMJnAiPqMkFoll8fDDQ6Gvyw9pt9zApcirdrCK9hS2\nALc1XYaJUIAEepcLYMPVbsv6ZbIs6PQKz7ElRVx4QkESKvxMAhNMC5vPsw1D\n+FhAubp8gdMSLAeA6SGC+y8cT/4IYcoGj52y8rpwHbjXD9IPuNfVuSsW8Zmb\nqZjOtsHE08YM3JXl2VfWmfV+DKtGzTTsEix29ftU1jxDA8QDYqjdV0wKuTwq\nRhLw4QdKvV8pXQeM1QKh5tH0hK95P00zFlmDNVMLHZdykXb7F5WGpgZNS7k0\n/gEZHPaiCCchKAcZ4Z/a7YiUGjLTu+Kmp5PwW34dA7DB5Pi9ljXOjOTsQFPz\nlXf2LEPMgZmG3kzFErX+WPABnFOUNELFzgIPyI5Cnt2RQZ1DO+UZG0TKExN+\nOCFj\r\n=DKAc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1a0ef29b3c0fa025e333572715be15e8b33b81fe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.10-renovate-non-major-1a0ef29b3c0fa025e333572715be15e8b33b81fe_1600071121638_0.7512040479432103","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.10":{"name":"@balena/jellyfish-sync","version":"1.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.10","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"77ff01429ac05b95e35add1737e9bca4e48d4b68","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.10.tgz","fileCount":27,"integrity":"sha512-pajavBFjyJ7ggyKhrC+no0RWNFN1jbad3vqRCchgWf3i7ANzbQMlNxDCYrs21ZC+wdokQCzLfXLWEPvtwWcUkA==","signatures":[{"sig":"MEYCIQC+2FTVood+XosyZMEbeGT2wsno+GYCCjuT0KfprpglMAIhAIpruNl36iT07pf2k3/shywGv9sYsBXTi1LJUoJMLvEN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXyd1CRA9TVsSAnZWagAAEOoP/iRDTI3PjKSR4zS/J8XQ\n2Hgm0BUnSlOEwVO7J+4qomk5UbaNbQf01ALQaeMm+RlD6akcNPvXBwfFqe7s\nztstUTC5w2QWZXTgQrzL1t0W76z7EhJJMtSPUUaSSbJ+0UdRg0pyUy3H5+oa\ntJxdKGenN9tczU5XoFW+8X+BunhwVtuDZFsgHqqhPNL5CwW7U5wseAURd6iD\nGoIn/o2ArepFiLwZax56vBqjtJJKJY6Ho4fikxfuowT7GACABESGSTSM+jHz\niTS8qvFNe610ozyT1w9Wad45ay2pZMq6U4c5hQ25m2HORea8wZziFzgOo7LP\ne4fk4LkKtzZCvxeJfK5QbPwDz2EyzybmtHZ9GphqvKjUoyt7SsaS1RC0Q82/\nL0xnPpyNw5xgoPWE8NjfHLL6gSQaE/Ig0egpBhyIPQsnA4I78iZEBEKvxnx9\nGD+8Dpx4V4oJ/QoO+gDhlFFQWVjU4cdAnymb6qrVV9L3g+EPMSgnNReASLlt\nDw4OPdKSdYPB4Pt1/p0Mdguxvz56i9mFqtlPw/j0Be2jQbM9cqL5xuZhGKvk\n5SrT4hnkDGbG1sxzrUy3j9Ak86TA5q52WTfyCmd6F4RAwx4SPnInj1ndWt5V\nKnmkBM5DnSE/K+8ClPdgkTDhBJjvzea+GQQPhtUdQYl/7gmLV/LmlxNmt2HG\nsq1m\r\n=DCD0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a54d4e0d66b673f6c2382ccdd3aac3f33d28b4bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.90","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.24"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.10_1600071540909_0.159436181510473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.11-renovate-non-major-b7015044993f59432061f30bfeb0195d07a3d49b":{"name":"@balena/jellyfish-sync","version":"1.0.11-renovate-non-major-b7015044993f59432061f30bfeb0195d07a3d49b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.11-renovate-non-major-b7015044993f59432061f30bfeb0195d07a3d49b","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2befeec2d5a84665587cd8a7ae7ea526360f4b6f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.11-renovate-non-major-b7015044993f59432061f30bfeb0195d07a3d49b.tgz","fileCount":27,"integrity":"sha512-xCqtLYBrJ3RmuQS7/0tPN9VYfdN7i/krQOwsHK47IkU6K0nbpz0DiIeRGItO+poG+P7jPwc8FRjyF1hujGh8yg==","signatures":[{"sig":"MEQCICU0sWSmoBnmZc3iy78P2MXvY+Vo5hpaswEFIM4Izi4KAiB/CJVl2W0APRzwxiNzzzAcxFHbSk0WDn2RjwDqhOn0Og==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXynKCRA9TVsSAnZWagAARpoP/3BAw7exIlILCtPA5mDv\nni+fvMXud2BBMBUJ91XWJwMAoMjKc7WCtiGN+QBAGAXADqs3WjU7nwVXhOx5\nvc38iqi7lwzCRgKVT320Qyl8hNsH0a+GYovORJXmYAA6fQLLIZURmiNPEt1T\nFrvIL+EDyxpGIe8B2i0bOc+1GpxSpSaTFQd+vR3TJW7BVRlZReTNqgKHUO37\nBiaAgucuKOL2WvdrtLuDh2OmJUYTWSol6RPYXavb29dvc5ZGNoi1IyK0JuSk\nHQ0gdUo7iqCLN/KmlMQtd6yZErlvLq9n4r40wbJFPtCriDSQD5O/zgERoMUV\nqWepfzeG4vReZn/3WDt3H77I/IZg/trUGdKJNWZIZYQ0EdE4gEX62NbiWM4F\no97XNQIj0j0X2JLaHRnoBWs7DWI0NdfkT/Ro86nRva8eyWgancF0ezXzivn9\narRT2JjNtiOBo9jFAIxDrUnB+WJ2DFFnJDaeVC4d2I+PzxuWuCDtkKMw6hZS\nNA+8237X2b5xWmb9Ri/I6fcpf/8CcJ9R8c3W72UFR/duYUY2WO16KYfMmOMw\nEb7MpcYJeprR8mmY3yWUpGv1pHTdlH3IDu06sQgVvPNXNSw+/Z6Xu2vluFrv\nZ4lGDg0BrWwJeFx+1L9jM5dLeD/yrHKlOYhhFK1mBjlgm27QYG5vGpxBM2IP\nf2Rn\r\n=modp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b7015044993f59432061f30bfeb0195d07a3d49b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.91","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.11-renovate-non-major-b7015044993f59432061f30bfeb0195d07a3d49b_1600072137881_0.6151238134139569","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.11":{"name":"@balena/jellyfish-sync","version":"1.0.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.11","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a1765578d584585bbd7dddeb7eed2173c0bced0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.11.tgz","fileCount":27,"integrity":"sha512-Y4WZUQaIH9GJ4oxFOSEISqCE3tH7gv/di9QKEty8d9b78RNR17dVXUQ81k3aAQT0JknHH3iUVmdoAuYkEtQo/A==","signatures":[{"sig":"MEUCIQCKrpTe3/0PrtSJX2mql1rduUCJuqlL/+rKNhWLVRE3OQIgEpDocLGQRCFs7BKyrEAbp0S8DOGPQRvdBjLksrfsLF8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXyqZCRA9TVsSAnZWagAAMZ4P/inzaxVlYbT3rCrHxc/k\ne32kJ0QotUJ6aDngp9eRw8Af0T2Hp2Ffds5iv/DEl8zGHwH7UzE3sMJjMekJ\no1aWphzL3Sg58KJCcfKSW1PRlzhppdmvYyfhFnKj8/zdfamvYWJHgrLvYFB0\nGO0eQzpgZon87BP1QoUauHR/I5ANwqmeUgk7cO4ACexB0Z0pd+Q02gdo+Vq/\nOOi2d46V/No/Ac8rf9Z+kPvkfupLz/pJZxz/zhRPGzP4huVbARMcKmjB6wEt\ndvmHl4RgZGH0YU84lYK1jymd59za46zWyQCNQSLRiKdMS3x2h88OqCg342WZ\ntoknjbn2uUnojBospNawbEk1jijvA8bZDjUDxF9mTjPOmlRsbeiZSheDTI3C\nI/T9E3CR463BlPvE7JCYxF63azs+XitmhsqH1i1vX+nvkIELz7uzKXuRtzuL\nCCvDgz4l3SPjuNYwXUH7dnu4d7lA+hjzh4o5A2HEzZfsHXyUz6pDZcuR5SqS\nqqxRQ+h9bFIMBOSlo/SwEKNG1dPqqWjY7t+50J+H3HWjGOlp+QyaCex3v4Jd\nWxVh1USaOJB9Wkbo8vcEMrhCiAOTucYriP+if6TJBrzCG3wVH98gr/eqV33/\nulQzzMJEGX4zsoV91FTcUX0Zy4pAAjzgAHtEqClJrWi3RNsbOCQKkHGuAHs7\nY4gX\r\n=T9GV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"71f758843534fb7cb8a717b8721a02622b274656","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.91","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.11_1600072345319_0.42693370563486677","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.12-github-orgs-dd5419cf462889a630236c0b2e787c37d4bd1d23":{"name":"@balena/jellyfish-sync","version":"1.0.12-github-orgs-dd5419cf462889a630236c0b2e787c37d4bd1d23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.12-github-orgs-dd5419cf462889a630236c0b2e787c37d4bd1d23","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a194d45fd96d969fff812171d8d5c2f07240f34d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.12-github-orgs-dd5419cf462889a630236c0b2e787c37d4bd1d23.tgz","fileCount":27,"integrity":"sha512-noAQLW5IHQbDA3Gd8nrFmDx7QeP27q+0cwCWfsmDgHbFlDiBvmuuN4zex0uRovEobALkCx69T08C4guYXSp/IQ==","signatures":[{"sig":"MEUCIC69ytFeLmrC5l9l2Cxmm2xc2KQslbCXDVhrusVlXRmUAiEAnuhVIPwju3qfWOU8wY3Hq7/qlLoT3yGEHEcuWeASuRk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXyvFCRA9TVsSAnZWagAA3uIP/1XJPjXvyV69Do2uVAOv\nw0R8uoa6yaOhCsOAGTGxrkkOLMMbFGjjr9AnY0J9Z4Zn8TXforgmIqQtANeh\nPzpFX3R5MVweIG+ehy1q5HbRRCSo5riGhdj3hU+Wa/OEhmrYXLOSLyit2iSu\nHCcWdks8S4Z+vJP3Xw6jJh6ClxNQIo2cwqQLj0fq3E238zebfj/amzT2JH84\nd2B5fG9Z340AJZzajk/ZG019qIBX/BzpMkb98DzFvEtfAA7pyj/Schj84bhY\nt95FX+eR8huQb4GmA/OjXVtWaxH2yyBz3fB+QM63VFiFWZlQo1L0zmJT/+cr\nEJO5/FZU4BmzRU8HI+DKsvwmBorFrZFgwzxUP9jQoCRXvvI4O+xJG5JYaC7t\ny320c+4HQNr5pgIEUzu3uAy3b9vF5EAfps/GjIqwgLjk3HRIGFhNj1Rr2lZr\noS3dSflfpMVQXKeMnGt2Ajmfq2iaQqjeDso7UNYXJkfD83RRxFBejppHitOI\nX7OZJaDg51YJJ1LWPyWNlvDC0Ymh+7F3gPellaqwjnT5oo6eYvAaVk3eZqTz\n7FFhcRMi1lqaz3nhyvCbAazRlytWP2FhrnCAdBb6XI4cjIpSzi+3LAhUJKiw\nJNrXOqu8pvukq/euj5JAGThxdL60Ec2htafFaK6zmSXUtu6Mi9x5rb0bQ1Th\n12+K\r\n=PBPI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd5419cf462889a630236c0b2e787c37d4bd1d23","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.91","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.12-github-orgs-dd5419cf462889a630236c0b2e787c37d4bd1d23_1600072645327_0.9938085696590155","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.12-renovate-non-major-e6f07afe72bca1e0945f3f91af63b67e1a2549cb":{"name":"@balena/jellyfish-sync","version":"1.0.12-renovate-non-major-e6f07afe72bca1e0945f3f91af63b67e1a2549cb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.12-renovate-non-major-e6f07afe72bca1e0945f3f91af63b67e1a2549cb","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d142c4f15d8808fcd68babc1affe32998978ea51","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.12-renovate-non-major-e6f07afe72bca1e0945f3f91af63b67e1a2549cb.tgz","fileCount":27,"integrity":"sha512-U90RVJ2kfFW59Qedpb7Ckk27gSXPmp+6YOY4OUEFiRx9sEWGVs+4RS2iHX+eS/Zd1VFVgeyr0uI6UXlD8/9+CA==","signatures":[{"sig":"MEQCIGbHgLyHZFbT+HKKmntHGV1cxvMw/szW1SWmsJBp4J0cAiAMH5CDg1XGop1sDGp1q0so/T+TBsOrNdNLfZRME6QI8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254038,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXznlCRA9TVsSAnZWagAAmsYP/2PfpeVcqmmiw5PPp9c9\nVSkH2BT0wGdLKRUUu7wjVJVCsU3AxokM5+hlyjLENVIWXXSjICNgX8FihsVq\noD04IHZ1wpCEmwAlEEJ0rX7W4TZ3NC2jSJXN1udVpJSwTgdLCEjzsZcH5yZP\nX4DrZkQbymUqGs0uoijdHGevciqfQCqDawkVdf3OoOxwOsiuy9Tamp0S83Ia\nb8eN01QbKgWbvnYsY5iwcuy9UROTZM6T8eCO+ETv2vh1o/kfLsLNNoKVXLcq\n7NL3Ayi7J7YmxOKswWcrMJ84gqll5QlB3qXBoeA/Cn1wzzhMvhDkJmeKg0gX\nPz7KwAgqYBlDXwOptHERXZgZMj8LFS06PuhNIDLP2ju44zm/jXgnHRuWFEL+\nWa8QoFlRXd7Bt4Hwf8XaWDnU1PstPvArYtWtsK3FtgNmf4kD0dxdLD0s+9XR\niIhVnKocIPNjKR5fNoY2VwGDnrbGrHnVlS5NjGRIg0h2eXXslVxH+07QFOVE\nk0Ny6B5v8aZiZi5qQFr0k1uyWNITgeE6m27PdA9Vs8WhNY0TjYhwrClb5SGz\nnACUKcqVEEnckUJZECaP9wcB/o+RwzsI4Bw1ZVeygcGgIb3/oDXgxX2gUOur\nnXeNczWVJO3FicByhr2MXlgEo4aCG6H7GKrSO5ogV9nyDyBFV/NX+oWxBm/k\nYu13\r\n=8MRd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e6f07afe72bca1e0945f3f91af63b67e1a2549cb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.12-renovate-non-major-e6f07afe72bca1e0945f3f91af63b67e1a2549cb_1600076261469_0.39835069948794777","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.12":{"name":"@balena/jellyfish-sync","version":"1.0.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.12","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2c1a19537758da7874058e7c342ed389deecf838","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.12.tgz","fileCount":27,"integrity":"sha512-Z1+QV+5EM6Qu2sM4mDV7LVFshfPDeaHGPe3RcnDs1lceMAiLA100evzd+Ba/Et+p25WJOJri3n8o5bCAWrsrOA==","signatures":[{"sig":"MEUCIQD97S4siQzTeJnfb/IZvCSiqSZIZtb+kkslP6xMAbpX9wIgRLjrBDXdxP9cidLGzdJqNes9qEb1xOCuSO+Yyml+/fM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":253978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXzqZCRA9TVsSAnZWagAAsUEP/3DkqZamKMGnkD5xpwp6\nGz1u4HFNtt+AuhUJnA7KgskzSOmO2ZWU76Q6gSOO8jqD/256jHSJ1hQbFLrm\n3/n1xVOhS8qGgxdoGuKmM/rC/bXiImtHwFb0k+ipnJ6LN8q6e+E4kYmrjktw\nnG/59Mu64qvHgZUUEw+2afCQ9efP9X7fn3OPmwsy0kTVbOh3NeIYeJZcttC8\niAU0jNWKJoWKV7/Ov4BCvxwtMt7w6CjD87B2P96oGtz86p4dV0w+nfVxQUnw\nB0cb7TviYgIV8vAH3Ef9iwKNGyTHcg4FTS1PC8SmNgSjMDyHSgcVNvyvY+bA\n4nu5LNNjk/rcbu06iKjb527E2qy4r7Eh9951JoQXkzrOeFGblVQJCzamFnVw\nLALFkYuwc3ZZp+OBi5Ud7EHXaAMx8LRD2XdLtTA9CR05iCYzK/crCIIqkMxN\nok2Ih3CV6dpYwGhYOLI5XQL2PrNr529AYmzqD3nGW9OXQc6/15yHKa2PYsos\ndV2nqBjr9m81g8VLOjdNojDorMead0R8v8P4C3q3wjeDlQzL+EyNu5G67Loo\niAi6i/sE0BSnHFlA1OPxmtiIzcGAPMOzzRjaHroaFxRxlzaUDUDp8NJbYSwz\n5bOJeVh7KYuZxanLwc1CD/BXpcQGAbF6tviQ+d7mpDrBRoNf+OUHt3rE9hbv\nmDSi\r\n=+//G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"740e3f787a93e1eebc55e73dce9d1d0fa51fcdf4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.12_1600076441511_0.035412488153776955","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.13-github-orgs-9047046e499f7c3060f895831d3873db62bda427":{"name":"@balena/jellyfish-sync","version":"1.0.13-github-orgs-9047046e499f7c3060f895831d3873db62bda427","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.13-github-orgs-9047046e499f7c3060f895831d3873db62bda427","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eec7766d7eb2c0b7664c6bad691191fa4d499e62","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.13-github-orgs-9047046e499f7c3060f895831d3873db62bda427.tgz","fileCount":27,"integrity":"sha512-nnDGxHwQdARahKB8L7RhI0YCnpE56Fue5tLnnX/ywQpdg0+ZQqui315jQ2P7tXIVOKdi9bm+++uZRmNAE+BLHw==","signatures":[{"sig":"MEYCIQCTx2U6AUPogXRybnCcoB+3jO5fx1GdhXPqwCNOwz1Q/QIhAIdC4ZvJ3FCvZTN9FrO5nWjUJHlSMnMPSVS2NalGxVqv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfXzu8CRA9TVsSAnZWagAAKlYP+QBTf9YYebekON1h8/IL\na7gEBm4qAHqzEThb1Acx48pNuCHHx4UwJjORLgRgkUd+kk/m0+3soUhbg18O\npM7F67STlu9NU5fVFeKuH4HjQFm+GrR6PcueUtjQ17ssuwZmanGBzzSN3SwN\n4TQWqV8BgSls3qw1xBtJtk5xvIJKa+EhuVWeOl/97GTk0lfHd/N8EC9S0S1C\nCYx+C1oZdmuBNR7OpfWlsT9CGZeQM9ylDe6k4efol4PcgmYXH3HZFps+Ncu/\ncugiOc4O6pKSP396hWtToGOQcnk56UCkWJ5METDwSkcrkgLvJdzIGtDa+Pyv\nacM95KUZTBNMJ5uQUVGREUteBOcewm1TXMG6oGIZcePYMGx6Yabj7VVZc4Ls\n/j8AD7gf0l19E9oVBMh554jM6sQD5sCdWr4e7oh0JF7+81cjxR201wF2sShp\nukczn/LnIpHxIgVlfdNCshZDZkIu37U8uu9iVwNlyS4bbPdqBAdsOUCK+gu+\ngAwpV0cvQtecwQZnp4Ruf1oDzAwXpJ0YkfQItIyUKYFEvSyvrz2xsnqPXbjI\n+OGIgzE4GrCdfj7jRl6UtnQCxKcZg32GRxkoJT10P3O0J+ZsfgSwM8uLy+pc\nAKssYBlf2Y16p0j+SDRcXqZARhEjX3oyNPiZEiJ/15PsjzYYM71YbGXhmKd4\ndWDf\r\n=UEdT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9047046e499f7c3060f895831d3873db62bda427","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.13-github-orgs-9047046e499f7c3060f895831d3873db62bda427_1600076732257_0.13993310205532072","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.13-renovate-non-major-b0585c1b5ba72232712527a4c068d91f473378ee":{"name":"@balena/jellyfish-sync","version":"1.0.13-renovate-non-major-b0585c1b5ba72232712527a4c068d91f473378ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.13-renovate-non-major-b0585c1b5ba72232712527a4c068d91f473378ee","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"85e6bb935b9716287cf8c453b09a9512e83a4be0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.13-renovate-non-major-b0585c1b5ba72232712527a4c068d91f473378ee.tgz","fileCount":27,"integrity":"sha512-dCLP2I23x+KFXXrQKFtSBkBTQvuj/VOi2QIy9DdekujcQpGf2I0BYI2ksy0VCCLBgY23SaA9xIrg0P7ie6XIsw==","signatures":[{"sig":"MEUCIEtF1k4AofDhF+18vxdNRq8BYEDTFq3t98tt4FBCt2eyAiEA1Xj5Q9zr3nIQCEw+eOunwUSNNSrhNzr9PiYna8mmuSo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX7bUCRA9TVsSAnZWagAA4c0P+QCLlYLxmVxTON8RU9Zr\nP2Wlng91oS4uiv5JCEIpmscbrxBPF6c9jctuotFI4YpuTSLhYpYUVVqXTFAG\nOiQhI1YjlEI7MfIntPcwNIZNb9oOlfG1RyUPkNzkdpz8fya+cbFvOcCK+xbC\ndL0IVKJYSl/TQDiaPa9HR9MkiolxgcrMIGs/gtIMlbDCwTMhAocjs2WI7vxJ\n4bSDy755DEmzxfngDaU2DnjB3NxsLuY0+LX49OwdDKqxfqrsJyE4fGuzKc6w\njfMLpSSAHfZlW62iRpiL764oqevPYerSyIUICyaJ2yeeeOgC2ABPPPOpGUnA\nXvuVJrWO0DE7nIzdfHCmfmpyKqmX6Z9Y8vVip/9TMXAu1qutdWQ318ek99rs\nqknA5dbncrXcFOOMTqGIiHSi0VA1eiI6VVeeeJmt725wEBoSXwx1mPoDHEvs\nzL4lmviroFIs1n0NBI4KcPTwzqJQlDHnqgAfSVgzKKoV6W6AD7MSRit/yQd2\nkrjaPnkH+7BagTlClxLLERbnmfan490+l22pGNVqCYlWvh3SHWnej5964nB0\neBiiFFkPNICH4vavgSVPICu3Dtjz/LkL3DkM/WcOAO614ga02EVgCXvbeJyd\nuBLrg3zVjSBix5/EheAj6HjnCgXq48eNC1qNYKqMNa/69lQomzpl3g3NhgFG\nQe17\r\n=KEh0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b0585c1b5ba72232712527a4c068d91f473378ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.13-renovate-non-major-b0585c1b5ba72232712527a4c068d91f473378ee_1600108243975_0.11254815351836678","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.13":{"name":"@balena/jellyfish-sync","version":"1.0.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.13","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b3c3989763ad7134f199d18dd9424f17bc49f3e5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.13.tgz","fileCount":27,"integrity":"sha512-4FjpuK3dIFLeQjlrGygpZ8u2+ghVBbu9hPOIGjVww7hHO9Zic6+F+RB+MwHF57i5o6H2GnYaAgPSSEsBLrnAEg==","signatures":[{"sig":"MEUCIQCVxTP6xE7/uXAR/3tBU/yKsXMRBEBax0+ZweLJWOVSSQIgDfiy8VSN9bl1S+wj1e4YIUBii8UxJrVfJcV9a0uSu+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX7eLCRA9TVsSAnZWagAAAU0P/jaHS1Sm5W/GZf0eCv+0\nSYm9xiPfZH5YRlr7ZqryaDCDIVpQLF1KSA94g3T/Rh8M6BUnH2Xkv1c5Eh/Q\nix8bjFfxuLPm8uIChrCy935PqGtQhq7tMyD2vJS8lxFahdcTwfnghRW/LgJl\nI33My/u4nPKOj7ZdzKd6kNKZr5R5KEOuKZtBAj14MLN3QPC2pXeh3n/I4rGW\nK3Sh9XEUj9qNFhi7UYwDeoZU8G1j/PvUIzjqrz/+N/Xk3tHNKJTqg8MY+NbU\nBg1L+LwNCcnXvXOGm3nx8AsUl6xPVQnYfV5A33ptXRs++FI1mCyd8WLBSMrf\n/CgDhtrn9c11zIKBN3L4RUTzdrXxhSqHurMGkgNr30vydx8KNNMETQlCDuH5\nIZwSmOtlzR7JVOZqQu0W82RGZcTu6cEYVTd8tLUtZFUN4Z4PBsTM/EB8Ivm7\nvaU7dy22lkYONEAtBjDH/VxUF1KkOY++Oqktxz+dk3CsPm0xxJZHa7p/Xm38\nJaZRk4Eokq9fBqbmZS+WAd+Abac//lacxxm+jtbQ41JDJRenkRh094B0N0Ga\ntXhuReYtREOjl14bVhEcFOHjhdq4nd9PpjL6rFpX9SzEyjhajWrBNvppRnX6\n43jGlRzTNp8v67yTV7JHoElKJEoahimv2nJ7lHBdWsWYYx7rswzTx/hXe6nh\ni1oQ\r\n=qkPq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f251c171c8559bb33176c05136eb827c20166959","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.13_1600108427316_0.9028519143453009","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.13-fix-user-feedback-origin-5ea79f983bf31ab613acfbf4535459fa6564419e":{"name":"@balena/jellyfish-sync","version":"1.0.13-fix-user-feedback-origin-5ea79f983bf31ab613acfbf4535459fa6564419e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.13-fix-user-feedback-origin-5ea79f983bf31ab613acfbf4535459fa6564419e","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0296548a5fdf838d053f2c376ec853930c1ca5dd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.13-fix-user-feedback-origin-5ea79f983bf31ab613acfbf4535459fa6564419e.tgz","fileCount":27,"integrity":"sha512-JSdjKzPOIR9fCPRSdLS5Y3OyTEhtDBEnaxVvrYYG3xewFD4USUAzZjjwyCV9Ye8fIaQ1pXuFskp4+OJZQH5Tdg==","signatures":[{"sig":"MEQCICbWV+tH4seTXVHdYhy+L7m/7Fh8WOMobkaEDYn3Mi9WAiAes+2sSY/6IFfhEG88BCZMC8VWtR3sdIVvvYGNE0Y60w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX9X1CRA9TVsSAnZWagAARJkQAINiAls1OtZA4P5ZH1NB\nvv8QVP+QBju2BIM7RNxsT8uKyDHEeQfqHRhg8nuqUdu6ZEfJFkN9wBQ/H6mx\n8MsfKIn05w0qWorF28d6rTq7/qG3OkF1Xp4mTK0gBd07jxbYi9aedGQVToS0\nHMd/LAcpVakirkC4+u7akTqoO0lud8IMlHcKZp0zkpW3flFhCrMMZMFFCjbu\nX+Q2MoW25vQVErqkoJIkIcY72NeFlAuKdax7TNMHr8c8IW10bDluleUbbulw\nu1C6Hzldqf5uAkHMZcSQEvaWq3rgs1cbvznl5aOIqaL2VoZ5S2li4pArErET\nXspWCd2bgIwy5eVTIsiZRHRLYEVUh8IKIxmfqT1vVhrf9Zs/xEO1dK6/LxzE\nRZ7PU+vVprUUD6S34adb+SFURzUKIDo33IRD3SbjGS5TCicghNV3iDBBAYhp\nLjaLwZNV8fkwYRgYd0GjcFa1OtiNXkfL0XMweDilzYlFOvrQzeYmodr5pBDz\nOO1KgZBcr5/60VsZtgnjFvrI6v7D2eHkrpv9igTUuuwmSQmYq+VrBC+uY+I4\nt5wF4sh3nc1v8L07U8d4zwa29QVFcwrVRTsOlOhD5jzORBsIqLwdQBEtVK8Y\n5W8JM5f3UvBgpedjsoUtl8TiCCGrOqhSdAyiEznQsot0IGXEWKGBafDOgZ84\n+9RD\r\n=54PJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5ea79f983bf31ab613acfbf4535459fa6564419e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.4.15","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.13-fix-user-feedback-origin-5ea79f983bf31ab613acfbf4535459fa6564419e_1600116213398_0.09633686021933263","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.14-fix-user-feedback-origin-41f4972cdbac59ed32ed38a4c3bbc42975e57efa":{"name":"@balena/jellyfish-sync","version":"1.0.14-fix-user-feedback-origin-41f4972cdbac59ed32ed38a4c3bbc42975e57efa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.14-fix-user-feedback-origin-41f4972cdbac59ed32ed38a4c3bbc42975e57efa","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"451e5dcdde1413b1774ed8460603ed8db1580e39","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.14-fix-user-feedback-origin-41f4972cdbac59ed32ed38a4c3bbc42975e57efa.tgz","fileCount":27,"integrity":"sha512-fBsAFxeqQQxSoR0MJ+GZeHeaUsSdts6jblpGNyKgNxp5iOtthxOQ1O0WkkddhmHZ2JsBa1+TjARBjtf2xwFg1w==","signatures":[{"sig":"MEYCIQC7WYe4UWA+MzNeQsjtjLN9EJ8d1LJiGs6Ey8t8rD8pHQIhAMprabFLhLbUnkRmjbYcCDwYPJSia0N0f/kNijE5TWdi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX9r7CRA9TVsSAnZWagAAFi4P/19jm2BGz7RJAtGEAfXT\nfjo4FzTaJilCIuSmRoH/tcu4MJj1x8S6ZpQCaxF7sLvbt7kRn7rjO/OIQFs4\nw60M07hDlSg7oHb4U27J14idjBFDmbYy9d+Vj5BWK9QT/R9IpJjUS7mkdvQc\n1zXwEEIYHGZOP7UdZFyQNDJtSJZvL/ECYEVQ9mHJB0FQIskrQlrtsalVZQoS\nN5t5OotSnFCR9ejjt5zcTQx3ZIR2UllyMUHkpTNBNo/J9wpmbRwxcqyhsXDl\nVWCD45QLwFUQpUJljD7qXk8+G1SiM0o+Y9mDNjpkuDYnUdkk5A8CYdhaVKvn\nZDLPOTBMX2jrud5RK1jFHk7WeMSUbFDeCBkbn1AYTDgDjoCnCRfprTHtajIW\n6pVrfkT0yxNcta23jaW3dU+aur6PQplwjZy3KcZhGbmG17mMZSsNat3t+qyo\nJlaeXu+Q/JgwdGK84JHOWnRZkfn3TTz4yEk87P4sD8jHrNH/G77Tz+X0Vmsf\nWsRCwM3f1b7F93oUjlrGi2/7bOMeOVaz26VsRaZohhoTJGe4eXuGDYCOLGLf\ncdsh37HdypXTtLuUGV9lDl1G4DdNgkvqo9+qfVT4j2FnHjK500b6wyxMyMsu\n19RTbd+0n5IBMSTjsS0J2xTZhuxWvSXjdEZhx78wMHc3FJQ7Y/cuv682bFGr\nPBHl\r\n=ZLZn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"41f4972cdbac59ed32ed38a4c3bbc42975e57efa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.14-fix-user-feedback-origin-41f4972cdbac59ed32ed38a4c3bbc42975e57efa_1600117498707_0.6174131075770826","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.14":{"name":"@balena/jellyfish-sync","version":"1.0.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.14","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"efca0762f9d5003495c5c6861ec3bfb553a6768f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.14.tgz","fileCount":27,"integrity":"sha512-xIrrmUb2+RfP8cQlVfKKv7JlPHb9BWKkK8PSMaeWO41Wcx6vTLuE1/1FfENGXJcmfslJ8yLmApziUqdx4LcASg==","signatures":[{"sig":"MEUCIQDu6xlyffUe8lUveXcpZIu9ajnQ3Xh5LQY9IttRlEpKyQIgfIEp/qrea9sgKgkGBkX85s0q53nqZLsw1cW69IQNQUw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfX98fCRA9TVsSAnZWagAAjzsP/2lu5HhkydinIN5XawRC\nETgiq83FFZFw7iR+iqZ2qMb82CqX7Q1k9shHGVmMXyCLaEUAMImp2wHCZCTr\n7SW9zDzpODJzuaf2dz7bD9rSrcYO5eO1wVca0T9NK/dQXchsk3SPOGbmimQ2\nahCCcBmA+VXRWKs7A2y7m8dO++dLZ+9H2ukjuMvFhtE2oLNbfk1BHLtg+RSZ\nU+BiOBDkVLvg6gAb5NSfUQbiLgj0+iD73gEvsKPyhffCOY6Q5n5AP2jswoSQ\nVWnCcAEP9iHEVeUcCSl2NBO2THphkHgry0+9fgu67W/DK1CpK9P39vr8sq08\nnUmwPjFZrahpDSDhVKnX24nMuq2QwHL0KFp2x0vOGTQ+pkqLeF8eQH5kJC1w\nJ6PVdijlUGBuVHWdTg6pVOHwwxo+qnnIpY0FOAERTLjOnJQQKaICILDH1f2F\nJsObjKnjGDpbAUGb5xldMspSjg/7itmikubnNGMN5dxijwtSSUNEdToYxYFl\nUsdgQ/Qar50ijKJOCl3jLpf1yZwte8QOec5j0g2vhDAM0rSN3oFtxhHOVXN+\nrIPCGA6NBd/1yrXLGOinIKss4Q9ymm86fScSVw42NwKImRCUqn5Qc+Kl4n7d\nSyG/4NKYdX78ksClTxtAUQWa66GZPH/OH3ZmugEM9Xj+RldJcTCYB3085UL7\nkdbX\r\n=8kFk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9b8041259c797ca504a279fd44863968a7f6ccde","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.92","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.25"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.14_1600118558818_0.4833691261661137","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.15-renovate-non-major-d34691ef9e98224efe65a2946b58d0acd6f52b09":{"name":"@balena/jellyfish-sync","version":"1.0.15-renovate-non-major-d34691ef9e98224efe65a2946b58d0acd6f52b09","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.15-renovate-non-major-d34691ef9e98224efe65a2946b58d0acd6f52b09","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5bb5b41644d1de75f01abce225f92c31bd3d38c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.15-renovate-non-major-d34691ef9e98224efe65a2946b58d0acd6f52b09.tgz","fileCount":27,"integrity":"sha512-2B7nJ+PFNKgXgxtLqzxPyWxffJM03rTr2GdXyOK3Sd/sWKr3opC/zLbSwKOSxHyu41ZokxfodOvL/0RXHWdPbw==","signatures":[{"sig":"MEQCIBNtwFQKPeWRIhk3xd7Soh54EQSFkRBQqofQL0/VPNOqAiAYKKUJSTLZTPNJ6qV2jrv/lfA0sTZP85+fZT5t5K2cKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYDtXCRA9TVsSAnZWagAAodgP/3/ekvhe+P2gNIBXFJTF\nNvWUKhOk3IoVsc8ivVhQ2Mz1ywf4ewJTLO+2X/Dt7ql3pCCEd/bKd0qnNdMZ\n6OB91VW97INReaMIqchipnPhnjmrVq/QveK1Sc09lcVe/2M7Jx9OO1QFALI2\nFYQg/VrVAkKZMC5/sfqBpXQdZ7Te/wzhIzGQHxh0xC74IsM6T4IXDs6trvHh\nMHmZ+ITgA5wR0sSWexiRkiqg7lTuU3PuAGG7Fc5tCvwIktOQPpWs/MqdiQDQ\n4CdXbRIabHebCfoYpndl2R1+BQQZilb1PIdG4L+ls+YXzHkqmKlvx67A1aQm\nR8QLhfGPeODOEuj+lPKpwJoyIdoJM1Yj5b03eOvFDnwBcbIgft7DE4IibTyu\nkyhB6wzueRgu+7Xb7MMrVOnC3JXWn7DhUn+04H3uPm+4p+bWxEwZHYZFcIdq\nXskKFccZBjCB05zuCg6aD9ajSdDzXU2H+91sNu+hgK7J/zq3EaEsqQzdQFAe\nWArzh7c/qd90ZT28ZbXPGjxzMwwYdykwoNe1dSXVvEvJLAIsGNAwGnRBBvit\nt/f8TnPQZIKOa0RGpmMgL3eneaomrrnC1GDU6XXkQ61fdcR14mnl2IqCuQil\nGOdKudZbF25KZnbN0G2b8bzPddthVK8FHkfCsDnqcKNhW2jGy0WKc225iO4W\nKOpW\r\n=rW+2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d34691ef9e98224efe65a2946b58d0acd6f52b09","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.93","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.15-renovate-non-major-d34691ef9e98224efe65a2946b58d0acd6f52b09_1600142166783_0.623579243226942","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.15":{"name":"@balena/jellyfish-sync","version":"1.0.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.15","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"749ee2e6641d29fd72bcb2b402dd85656590bd2f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.15.tgz","fileCount":27,"integrity":"sha512-4vrQIIc2bgbpOvLmLLiDwpWcOBA8eqJJGEjK4Fw7rEjirp2KcJLc12At7IrRw3Fowqqc9/LN4JeHN7wkipmbcA==","signatures":[{"sig":"MEQCIAq0JlPwuRX1lo3enBqRC6IBz7Wdsa38urq0ZxXQ2lm8AiA1/b0jrECSj0ESwjsjIwmDv39sHQQQM5bGlDzs9edGlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254246,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYDwMCRA9TVsSAnZWagAAtFQP/jMVbIduwRVsAqvhcHLs\nupCEelYZ/tBGIs58yhl5Or/qysU0oyICIkjvvM6I0JUw4UpOUqOcVMlAcgWs\nNouyP+126h0BTt0Dh9I64tGbbDkTQr9hExM43qzA9Z0Iz2RbYWZ/5k8N4Mtl\ny7TiMjlpEVtougcbMZXJhVt816s0fcpnKNDu4w19Wp09zeTKmZT14COvWfrV\nERh+kp9XYsZXIu0C+iDeHVw1mIRsj6Fv1Kb/LGi4vJrbnziKMlUfz5GepJZZ\nlzODaWio1fsnwhAQ0aCNxM/DemxLggw5VRnKWrBAOkpxaKetZ03cdDpIFI+r\nISAHniTIX4lw8dMs+Ep2A2tApypxml+IBtwljX3RqRHpsse74oZMZQthaGdH\nUfmoRoZPBKi+8mXNnMPTIls6HBVaQ/5LzFbJAyq+rid1ErVNWpmvdPMPsUXw\nAKBTan5A9iXbMFsUHVHsPAorIfVDNRbqN7L245lidI0DiLUC5ORHmQASrd/h\n63+qNQJPpP/Lv4QrfgysiVK02FwJeew+tHAoKNvfE9y6znxbzlFQTaCKuIb4\nmd7bC27T+pSkStQok/GLn+Eekr4TPpX9XFl+LW06UGG9HckQS+ssUWVTyTOj\nND2Bkdhpn0fDuGDy0tth721fYdpIByXtwA7ASSF7ZQoCP5jDYT2uk0J2YeN4\nsIMV\r\n=+OR0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8b02aaa337911889044402ab43bded131c54a0b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.93","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.15_1600142348018_0.07125699504185157","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.16-renovate-non-major-0f9e0059948d05134c7233638392d680da9c8b8a":{"name":"@balena/jellyfish-sync","version":"1.0.16-renovate-non-major-0f9e0059948d05134c7233638392d680da9c8b8a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.16-renovate-non-major-0f9e0059948d05134c7233638392d680da9c8b8a","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b6cfe907aca00207335e312749651ef02b53fbde","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.16-renovate-non-major-0f9e0059948d05134c7233638392d680da9c8b8a.tgz","fileCount":27,"integrity":"sha512-AFYgczfVvmt2OBmTK/AHl+vCpcI1YjlKNVwfsFcJAsGt0+OVb9jFD2YfITXvVsPspTYPk6BiuX9NEO6LXNnl/w==","signatures":[{"sig":"MEUCIEhHSYWa5SPUIBn/BuOQYRZIKER+uHtxGmAuqGvRG8IyAiEA0rj69swFWnZb63/qljD9NzUBnwAAuEfSEwv8favlk8w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254413,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYErQCRA9TVsSAnZWagAAp+gQAKFD7UhWFV5S6fkQeUO8\nXB9sDoO7xAEbLMbr/+H9gQJZ5YlKlJF1AhujVQeL4ZC/n/ncjCu0nHF89+Td\n/BX49qAaR7QHOT0QQdWtr8d6r83XIwkkB70MddB64HBhPuB//esbi8XrPhjE\nFeTWkpfGtJv8gBKUngFfusN7YgAEw0W4zOtpiTqAeZudDAtlS5ifeY0ir2j+\nRhSQH30+WzDCEm9bsV9BzsR4AUtmvlTwMwV+vWEUPPbnVVOZVmXnPFEgJw7g\nJloldIWRYSUfcbgkeGl/3Qs5MfS9KDMiei1wCN7bSuzRROQQmtruIDumtE/3\nCC3zD0wUXZ1pUxXy3QcqvQ7qe+bDfnKGpmuEHg7f+sQLBIVoVqQW/6PHnnlf\nSnWRKTHv7w3xuAou5Zd52YdwKZoauBjZx4qjMzN9e9RWgxNxl7znw2/gZxxz\nJ9fn2KrPb2p/kgJ3jPyo/MPn2aQ/rLTOkvowfQpNtT0ULRn2To6uKjsU7QSS\nH9hyEGrNwQw/HpRiplhfhzvLiPgnO7VMxcDAZyLZlufe3OUH01wsehijdV1J\nEt18GUwg2WduoRJH3ODLkXKAmvOwx46qwi7bDq0+gvjr86CVrr5HZituKI6o\n8qb7iAjXl+5nukRCRPaaTg3T7vivitwzOWUSOLZgaaITMIWX7EihZ875BTSF\nwtdV\r\n=OxvD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0f9e0059948d05134c7233638392d680da9c8b8a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.16-renovate-non-major-0f9e0059948d05134c7233638392d680da9c8b8a_1600146128011_0.06705609227245235","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.16":{"name":"@balena/jellyfish-sync","version":"1.0.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.16","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2fa3daba8665bafc2408ed32060d2742d797f966","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.16.tgz","fileCount":27,"integrity":"sha512-FFvpy+4o94cGN00XQ5A8l9FI1WwWsZqUD2R9C+DfxllTBJaISG4xC/iKr71oM7isyELEJu4pQ1H8wUAT5zPjog==","signatures":[{"sig":"MEQCIDwtEPf/zODSxu/00qhOLjA4FBXUCi683NyZfYv/WXj+AiAlrEVlgehgoFPXkxTmaAdJwybdcAJRsQIAjcrXC2dAVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYEtvCRA9TVsSAnZWagAAaJgP/j76YgaFobDpH9IJExwz\n9fD4jH7fZNgBprI2uQNNgr4NmDv81S3h94MYqf1OoM54HdYjINGSM5pPVhkM\nWusU+5t1rRvLIDUEAFGtHZ7vBEQTfzVn/zfDBcTyk1XpCZuybUQ1CH/4zsUW\noyTRhpUVoNICtwBbg3wCRpFL0xC86Uw+R+wqN/lDSxsyt40nmQtX2O6Gj9Ph\nxawsrdwocPn0PSJ4iiVF/C7uIXH8wfjgVd/2lT4TiZXIZFCHXWXzc4kl1oQz\nt+bbLrRui9Xf0MGUHx7ECAcfqaRKfDT91UQeh1W/l2fn4r3m9gDUw5fcQEwK\nV81DDDv3nG6o+67aOl4eDuh096yAW1A72EADuCe9/GukAy95LF+/tTLoAgkD\nAMinoS23VOcCpB8E1Z1Kksck0Wft9pRCWLXKaxKKSIqXzdvrYqPbQO6B6suY\n7dfS67QsNScYCm6FeNuHt9d7Bh6qOogXuV+UvsonUjL46m1x5L7Q7JkeywZ7\nNs87nVxlGt6Dblqw4LjfSAlg4syPEOa1bRTaoT7pwzsU4l6UcwDtaZYCnpYh\nMTV/hRkttspqd2xuRDJyNhg0OfR1GdLbraCAWYcQzb0dNCAANc1hQcT7mCPR\nJSuBzwNXWJ/jgc01X1EHCByNGornIsyNW5OKd5Z+lb21iw5ibzV0bkBhTsTW\ngdRk\r\n=bl33\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"938a8bdc5b44e38793ea7cda04cb9a40583e226f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.16_1600146286461_0.5785457486443013","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.17-sync-mentions-74ed4546944f9d20f0a1b7a7e002aa3b684aec72":{"name":"@balena/jellyfish-sync","version":"1.0.17-sync-mentions-74ed4546944f9d20f0a1b7a7e002aa3b684aec72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.17-sync-mentions-74ed4546944f9d20f0a1b7a7e002aa3b684aec72","maintainers":[{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b4de28301b2ec299faf938f6c2b4ff97f99eaa82","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.17-sync-mentions-74ed4546944f9d20f0a1b7a7e002aa3b684aec72.tgz","fileCount":27,"integrity":"sha512-rYi8gphJvKorYGGPZSlUG5qCVoV9mj/tq6hR8l88j7RXLHAey+RFC+6RKKNb7q7AJTTUueEKUgJJzosBZgzDWg==","signatures":[{"sig":"MEQCIFutbqjPXHqGt4VVYnIU9mQD9Tu+ECcSiPQHz1UqV/g3AiB00ufn0im7uk5j5Ut8OsTn555E0AV7x25UDqIfnczzng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":255529,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYGzKCRA9TVsSAnZWagAAaYIP/iZfbOQFcnR6y4CgrwIQ\ne9fl0Ff9trVx4Sa64BhUU0leLbiNiMilcraxPc3t1kBfX8vVhb8Ce8sh2dOD\nq3q45Acia3+AdQmAVI6hpoQOywM+4fpB4JYGmAYTNv/w9z75W9cURieMkrtZ\nSttqIYH2ULvublWZJaznqBlo14NyxHPidC5H/B/WCGYu8CtaK51i+evcNtfR\nOyAHM0+wfPPGSQauxuaH+MBG+av/j9e715//wVu5reX0LR9213EegQCtj4xI\npEyC9gi2EdK1JBbmjs2YvD6AKmqKjDpumzl+URwRR149301AgZWiktgO81jw\nppQREOlEhPHTTIO5jyy9vMFgOS6bkbAby4mHjvd/dda4BqFcnwLBwPh1pBd6\nXFj2ytMMX0RnrQG6J23Y9fKz7iXpzj4Z0AM6DY1Sy2luUa7khIpFHn+HFG+x\nqpgO0pPXA4MlJjppKelXs/JSOSO8ysv7F6a+OgChhtN8avb9xyv1oKOIBlrD\nTyVbo/2Mbz1x4xW3+vhs3Zwig73KP1Ej4siD3ilhWBKfgzYQqYpkBVWlNhom\nQuPh8gllznUElhh42JkTUTubtC9iqEXUBjw/ratcFAjTqDzY0G9rdgJ0X0h+\n1hA4/axP6unNpFCzzoHRmeVTLBwYfUbO2ZwxPL55V1gwsH++pDJ3PHnuYt3+\n7zAY\r\n=+IWg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"74ed4546944f9d20f0a1b7a7e002aa3b684aec72","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.17-sync-mentions-74ed4546944f9d20f0a1b7a7e002aa3b684aec72_1600154826202_0.8712044549972171","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.17-renovate-non-major-4affba0e131718d78defd56d1759f46183bcc496":{"name":"@balena/jellyfish-sync","version":"1.0.17-renovate-non-major-4affba0e131718d78defd56d1759f46183bcc496","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.17-renovate-non-major-4affba0e131718d78defd56d1759f46183bcc496","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e41c3116215a5f641e6af570e864c7ebcfc98dd9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.17-renovate-non-major-4affba0e131718d78defd56d1759f46183bcc496.tgz","fileCount":27,"integrity":"sha512-p6SmVYBcu+C5M2q3Xm+mWX8LAhQ7J+b0wc7KCRuy9jRVAUL5xqDpF1M9xgAfzYKaXTSpjqkBRB5la382LdtZQg==","signatures":[{"sig":"MEUCIQDPzl6E5iAe9rnMjWhN4aUrMXPM0HHskGw3ddhihPwewAIgbVaNHWFWFXwVc7psVDIjElExkv3odqWhoaudH/8ceBE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYTG4CRA9TVsSAnZWagAAKxsP/jLshIAs43k+Ijs9I3ei\nK5qxOM0mFWmFPjpcFXN2T5tnDA2FEkmoFn+zSvXq4q/c0PFxU5Ynjowf5845\nGU8dl0QzJeHhIIFD1a9m/IS86PBOutyqqQcgv7G9swlTm3PFq/C/R6lq3ENB\ncOO1SFl67lS4SYhNElP6ClvWx/IKfks8I3DWuoHsnWuZIiulsj+gBJT8veGg\ndrlDaMGXyUlTXjXvcNDwBRa+mk5YfNQ7XQTGvDVLMc4zinU2nB3JCcLoOFCr\n+fml9DuvOS08m3JOzGn6J0p8usxFF+Ii2h20t9/uBhvW7nLxQA05kTztPzas\nW0xc6cH5UX8C+oaMwCn1F7nMnrFU8cNM1oo4Hm+akXxYNAW/fuPQWO3ixPAh\n+vkOkH3R404CNtTDvpiFjyvmgph4ci8qeCc0IlqzDpZYJ8JuxbmWtcQwFY0d\nYhtGebxEYHS5qu24cGypHOFXLf9tU0VGLKrMm/665Qe/wY4i/NMb5bnkg6X1\nQMVMMp++Wp0r/wU+PeRZ8P4/SCCpuemgfVIpkeipwYMRHzWN8Pa9F8HFrvYa\n7H8FYbCT8UNK4ArvUDRYtMbKLy5aw4rUsVhE6G+rkmbVmqL8iW0jAdO+HG9l\n7tFRiASl7p4SddX4pBxuNWzxmnXgCd9t/Wpb7So8oK4qItvTS1xiFSNdROrb\npj7M\r\n=e4xZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4affba0e131718d78defd56d1759f46183bcc496","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.17-renovate-non-major-4affba0e131718d78defd56d1759f46183bcc496_1600205239782_0.3450111668507798","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.17":{"name":"@balena/jellyfish-sync","version":"1.0.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.17","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8eb9a8652ed0d86a8a722f04c2e9e337f99e9119","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.17.tgz","fileCount":27,"integrity":"sha512-JlVfoWJPkCi/Z5GABxAcbBqzcK2d/or16CpTf4Ua4Z26pcxYEpsQbl84J1o5ZxY8M8lZXI5H9XeHZO4pxgnZSw==","signatures":[{"sig":"MEQCIDPRjQA6/T1VCOPqGE6xubmnEcu9Z1OZbOcDgSMzGBDaAiBc2il8bOiVYuvpYr/4mD9BUMRA3FV/W0pLTsc1poTpXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYTJoCRA9TVsSAnZWagAAkjEP/iz4wmAnWlFDMa3Ozk6J\nKewuoe4qee8mXKf9n2FUUqh/B4Ub0LDi5+Rd1tS1QRgyFvTmIZ/2wvs24a4X\n0GvC+2fbRf+kvZD4+eTib7G/Uly9T5x9O76nFjpz9bOzAoSL4fAH51Z7kEy5\nFrjUorbEBrxGQ7K8SdxYSHbKT5ouVIJTqECKhPs/4pLNMRaGA2vglter85Pp\n+7Wnh8L45SOHNe8XRttjvPN2mHXQQWSl0i4lTGAEAsoZgLOeoYI32PF7UjpI\n0wb8M+v3we6zDk6ASQDnbeGdC7jpQJoGXtI68JdxzQejU8QWKMZHs5ZmFK6z\nxPQ7GQ030s+Ge7FUQRshs1scFRo8MJ3jWefnr844zQ6TE0sGp3QlUn8X1Sjx\nkAZhn62FSG9Z4Rl1mKGjZ/FQDlLCdr/VOjwXn2iLfF9wgBTbgtY7lXiLhQdG\nXeZGkFsbZ/SCwUc+X5vWuYE9PBh9u2H6C/THtcjk/U156QqXcJsjDuEbmUvd\nRaIARf/9o2Hx9Hcwj7/j40fL00TlxbtLwsvNizRh7PfL0WbeSHcS1UkNaraK\nvhS81x4gdC7081pB1rYW4wx7nhXOCUo3s5AichhhMkQJr9AD9JC+HSyHBf5S\njKfoibTI8h7B0wtA+qbggcSDMGoT+cb/vSNjIO3luBtuk+K58nM8Ldu+52hA\nzTY9\r\n=LcPX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d0c6231f0646d3c1cb55febb931e74289d03840f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.12","@balena/jellyfish-assert":"^1.0.11","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.17_1600205415960_0.5584568019862755","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.18-renovate-non-major-242c6521d74d9ed5cca8509714c68bff5a2616ee":{"name":"@balena/jellyfish-sync","version":"1.0.18-renovate-non-major-242c6521d74d9ed5cca8509714c68bff5a2616ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.18-renovate-non-major-242c6521d74d9ed5cca8509714c68bff5a2616ee","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c1fa6c2a8d6407fa321299271152fa3db73f6641","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.18-renovate-non-major-242c6521d74d9ed5cca8509714c68bff5a2616ee.tgz","fileCount":27,"integrity":"sha512-5cyX2jr2ZiIpMeUrBMN/wjH0amiuTZioRy8egt9/Uq1/iGPi+a1/5Jbo7A4BRcre5oVWV2AFBsC1a34VW73Ybw==","signatures":[{"sig":"MEUCICNZApZWftteeWxHAFBL+FOqwbQKq8d4NhtI6xOmn7N1AiEAopYxM64by85PmCdszyPi1pFU+O4unEVTxdnkS9Dn750=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYhg4CRA9TVsSAnZWagAADHsP/31u1iVcvd8AwrmNKTkQ\nrpr5HazxG+C4hkyksPh5xQXfydPAa3u472bJ8vCHpvID/x3t11xrfugOgXjr\nkUHS4B+MDt8DnatzrBZizBrT9O0UWSxeVcOLPIgKs23HODV97LK9H2HKJOOU\ncSyf3akl/DQzX3+4rZiE2sm1TBU+SHckeZG4nsYxtiO117oslxYyPPSF1qWg\nFc6ouIqXJIPz/7yyLLcey+xniCe91mIQbixSJsefomRL08YqIHQsHLxLfhXj\n/dHsoMeE+7OgNkDUU7iMkutv4xkfBeSZpj5NDytoYc3EidD21cn+PFwsLFIL\nNvb4Ls08bjhFelK9bUowJK/tIuc7WR6IAW3nJIslUV93+A1dl+IHr5mCE0yV\nbhPiZP+NUx/5Xe+zw1nbhbX0YMp4xg3XSVDhX8o6/bKzwn9XKUREO6mZnv9/\nltcBMynXliEyJFfYB++GiO+YHTZ5GDsppc5uz7nQOUjbJsBQL64KJxnPbxCt\nXMAPt+strM9/bncxv/ibB8PTAyQmTR7Bzo3Cl/4sgsnuRxCiwEuESdNF2TXa\nQNgKzLpa99Jhri64vQ3X4EGTv0PG2x66+hoDg3DquBjRre9BVIV89Aw2fY/6\nehhGl36L6CAbD4FvToCZfPFkoxN0kDwWxXZtLr2OJ3bg5rk3CC8GG7gDZpOV\nSfpT\r\n=35IC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"242c6521d74d9ed5cca8509714c68bff5a2616ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.13","@balena/jellyfish-assert":"^1.0.12","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.18-renovate-non-major-242c6521d74d9ed5cca8509714c68bff5a2616ee_1600264247745_0.2388907162537397","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.18-renovate-non-major-eca08a34c74a3741dfdb61de6e30d09b41501ac3":{"name":"@balena/jellyfish-sync","version":"1.0.18-renovate-non-major-eca08a34c74a3741dfdb61de6e30d09b41501ac3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.18-renovate-non-major-eca08a34c74a3741dfdb61de6e30d09b41501ac3","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7483b98c4797654bbc0802ce61be6056a0c03ed0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.18-renovate-non-major-eca08a34c74a3741dfdb61de6e30d09b41501ac3.tgz","fileCount":27,"integrity":"sha512-CobU160C4TYEL7nQ78Xkl1sSJmSLUV75TbSSqhdUB9DhDW4kxMzo9lmCweSTmGoFnDswUpL2RYRuTR4kDBFReA==","signatures":[{"sig":"MEUCIBasGuPoTuoLXeEfHcNaSBu4JUcCXHqJIxcx9lILsug4AiEAn0XLRKCWfjGoWiIqMffU2wmFu34kwfpQppfWzjz6JcI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYhlXCRA9TVsSAnZWagAAroEP/2UMERwh5MQC6BruA4F6\nfLlT+uh+0DmTIZ/iocF+/3hCCmlCVWj9ReACYte4wHVHBLb9lP9pk7QO5yJk\nTdpxmyE52LeyoDSCrf7D1i0Zm1tHxGlCn9Hv5Yud7IJHhdBu5GpPM+W1+WrB\nEwabU5JMfMc3Fw98/HLBvOs5vCbINxzLS4Svew/Cht3KEg9cpxZiGI1hgNOJ\nVErSJbZjFmn3GhCx5a0WJ2rvVuNZJTp2KuQp+9c9/bHijO4a2E4bRtdMcM2K\nFNm0MZfdRbJjz/hrGPq4iph00GfcPUEQ+JvByurmCXhmED6C+U4xYUUBvXea\nmVALN2Ze9m8jn13fALFb64838NutH+/C93l6y6JlgPzy5ufxaNVAvjH60Dwv\nAORm0tLuXdQJj0/R1wEUGnHBcW/Y31R8dCOoFSxZz2UzbfXkfOiTYfPUHDFN\n18c/U8arn3pB8hXB/gZD0cOP78Fbw/xaD1MCcVi1cPOM7ij4LZcbX4lBb57D\n7IGrV7W0w/Ll6TTQDArd0th9WbpWp85YPnZyDoOo2uXh35hnDzy1cMxU+SrH\nWvgQ/wMyaA+ilP2y+7dZC3h3c/VTSKJ0hALsDIe5wGfGk3hHJqORnLN1z6xy\nwe2sc/D+3GwSKfn0WRD9BPVwZMDEEfpOalhXM1fU/NfGjtBwi6+Gn2X6+yEr\nqQEu\r\n=2Fe+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eca08a34c74a3741dfdb61de6e30d09b41501ac3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.13","@balena/jellyfish-assert":"^1.0.12","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.18-renovate-non-major-eca08a34c74a3741dfdb61de6e30d09b41501ac3_1600264535432_0.805449974372187","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.18":{"name":"@balena/jellyfish-sync","version":"1.0.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.18","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6991efd4f12ca4b24f47abf8b97e7ec144a78853","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.18.tgz","fileCount":27,"integrity":"sha512-7yhMOLP7/Xxuta/6UnpGDu9qjLhD9hELo5BkBt9vUT6FnBYhGaum23UOX3M7JGZ/2chfMaHiPEbXxetkbuR93w==","signatures":[{"sig":"MEYCIQDaKzHQxwv2V7x8E9mqDbz4LbOUXMq1XIzihrIlFBaBmwIhANllDX2qo6KCxhs9U6PSdWF2s0loApSRrlMo3eZq3pxF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYhoQCRA9TVsSAnZWagAAYN0P+QA6fFPEHPh1+yHgovr0\nDKIVl5UvTYITOZY6cvvR3gQXluGMhw3xGa1Wb4Mlt74B1Nmjn4+TGBvYHzqH\noL3yfbX/dybhVlnTlK1mQPVwdKwURxrC4ZBAwy4S2e3lzLBNddxr3LWsFu5S\nDQEfD3qq/qPv3XCYoGwkLUCp2trQo5DuexWG4bNZTf5q7goW6kf4CEcyM0o/\nIIRUDIxOTIa43gWY0tJgRQ4FrZIvF0XuYqMlMl8euiJGFhx7+/h3bth3BAwI\nl0niebtVqvMSbN+TGxobhMyvlQFF20C/n0XJcBqn010MOJA6dD/wjoq02tLP\nCO0cesVVaUn/XCPcZ7X/kHZT/TBxSWH57FF4Hp7TxubzqvWVKJanZ3+sOHUU\nxA6a/4bXNXQZ0+A55wgVvnPFZxD5pIp2182nJmYmMkbykukZWP6wmcVpjWm7\ntARD4JeAVo3gXNhMpNbV01U7I5VZoyU71uZMBrtz1ff6akhBJQh7VZiwKoAv\n1ukQJsxF2B2qrvOBj4DnjKYV7mmvb5BCK5hd7vIm5Qa1eP3GcxvI9GAZA/ye\nLNpErIT8/AekT94UIf3hvM7MEqpCq7G60WBOnfYqiB4Ou60rbGEmfuT+GgBl\ng4IZmgw24wmSam+YZX1u1gfPiRSQIS2FvXUBs+u4eixDGZWa4DSfiyLRO5eH\nFuL8\r\n=y+b0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a5d8cdf195ffb06e1abe42ab015f8e77e60dfe07","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.13","@balena/jellyfish-assert":"^1.0.12","@balena/jellyfish-metrics":"^0.0.94","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.18_1600264719760_0.7369309033395224","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.19-renovate-non-major-a171437e34c7ccd9d5da5a8a26423e6c15a03c84":{"name":"@balena/jellyfish-sync","version":"1.0.19-renovate-non-major-a171437e34c7ccd9d5da5a8a26423e6c15a03c84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.19-renovate-non-major-a171437e34c7ccd9d5da5a8a26423e6c15a03c84","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27ba1f8f1d48a1b359dcf6ef222662db65fb1072","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.19-renovate-non-major-a171437e34c7ccd9d5da5a8a26423e6c15a03c84.tgz","fileCount":27,"integrity":"sha512-PaCwGjHWaiM1LpfXp/WtkReP7wXAvqJAEZg+PaNOB+tTdaUIX+amK5YzK2M00CsALwS9fCo9oAAKBSw56oH/8w==","signatures":[{"sig":"MEYCIQC+YwDXpvMJRL9DC5z6yVe0a6Fqj5OPTtvlJINN3xxiWQIhAOtRbobN0n4zLZS8M7YR72GmfNyxttxKeYg8H0adV4OV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254687,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYiegCRA9TVsSAnZWagAAK1AP/R9Yuw27QPn3hYHf+m83\nCEGKFKcFASy6EoBhWuoQii8teBOp3Coa2s+v61aK0nBcPRx2KfmeHlydzREQ\nNLsyOe3Z4rhqfHIqUBNacmZdcsYWkVnmVhcC6bqhc5Cly/o9dueJUl6Ii5hX\nc15ekoD0aRNPM+KHMibGewhSYrdPG7rzPjJ9DMIVfWv7lC2M76QnW5ka2YbP\nOuIJdDs6m2/5afp4DUUY5Ub0QvSo9ITMYvgqf0I+elZlTaajFePVlVP52R3v\nS476vPvKNIhUM+2+fQN5rqeuc+aVz1VqqEkRkYJ6VNbsz0mxcplB0+P4K67u\nFvhDHkpyv/J/eFhfsd0CpDX1ihx+0gruF2KfQ3Pf84Rc6l4paplhkQgGOomA\nB+utIA0PF5uC1rZ0n4E520hU3YctCPazw72oRLxPq996EZ51454Uo+R6WUE7\njQH7Hqdg0QW5cKKk9KjOMy8sF3VEh7KcYfk7j+RhlMw7Zq0Awp270xUDWxkV\nUNlx/Y1OptIhI/kxWF0kboLqFMmaF71ffoQf9z+ENYN36dQ7jI8+zjyKwdS5\nY1xpM3xHMKtQYeQs3w6fMPsQH8UIVKM5dHDBxtAZrgDhHqbETtfyLNYvbaqk\nq28f2wbJZa1DKXKROsSa1+RVfOy0vocgzIZtFQ50Iboy4kCiOD9lnz0yFXzj\nz4C1\r\n=0wIx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a171437e34c7ccd9d5da5a8a26423e6c15a03c84","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.13","@balena/jellyfish-assert":"^1.0.12","@balena/jellyfish-metrics":"^0.0.95","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.19-renovate-non-major-a171437e34c7ccd9d5da5a8a26423e6c15a03c84_1600268192435_0.24968481153347266","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.19":{"name":"@balena/jellyfish-sync","version":"1.0.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.19","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"079b589aecd7bd8768998ab5d39489bc0b561bd7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.19.tgz","fileCount":27,"integrity":"sha512-xA+LAqh1bGldSlKpU7dW5PDx2fZvr7ycv7Bn+HaCrYrt36UTtoVE7o8mVqWXkF4xILFbD9lXiQLnN3zcL4Lqww==","signatures":[{"sig":"MEQCIHQ6jo+nRTJRpQiyJNRGHtgrfvR8O6ia6VvydEqno/K0AiA7cKhbFQSi5aIvPrvTCsqKrT+qbWpHuFZe6eTfyp6avQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYihNCRA9TVsSAnZWagAAGKAQAJovWydjtB96lsERHj4v\nT0yuvTnMMZ7vK44ZYTboGeb/Ypt+hwY1vEplEdk77BQQcfPQ1/ZWs29nyMLz\nV0BCq4W2IUI2ojMR8j6zfOBQ+eI6BsxcENhFm/iBoaKPFGsU99AljRYvK7Ps\nxoZrRE88dk11eZDvFm17Slm+ShQLv8ZbKCmbREMykyw0mvde/CRtr3DpWz5P\nseju3shzrA40NQXquCI5VdcpTxGqB4HnoLWQEqflc8ArkyrfZgsoudlSGb76\nwF9fV9jOKXa4IsqKVT3ERDkwuP+qIFDTqffOSgau9+ByPw2r3HCxfjhUc5ro\nvefiekniFXeQ1HbOJ1gQJkI/pu9J2LbbsVPX7GvAOE22zdBxr/do5TIJyhEY\nVL5XvF56ymfvk7qYdUptQh0Xv7xRBhSgtp7uFYTnqdeQmxEuKgu+dyyNhwY3\nIKRV/POHrFd6QH1X2qlVl1cenQxq5eU6i79W8MFNduMfcn9MXvYmeWxMIiYa\n5+ziB2qeCUI85lidrwMHTjylqQcZZ668IFbyXIXtwqTySep0OrxWVvZhlM9Q\nvI/GUTK3eLVQz9HOU0+nrHW6TfA5bIlW+2ROCNyZkBq1+iZXkLfQRT40ZBvW\nFvGQ0Y3s/f1ISGuTX0l6UD6jjz6iuPir89bd7DUbwjmO9QGIkHmgZgK65JQ4\ngkwa\r\n=4M4R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"49ed0d9abdb9ee2278ee63bd7747019e955e68c1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.13","@balena/jellyfish-assert":"^1.0.12","@balena/jellyfish-metrics":"^0.0.95","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.19_1600268364478_0.4630888122168402","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.20-renovate-non-major-3e25225b1f88ce6bb68a40bea93e432fd76be3a7":{"name":"@balena/jellyfish-sync","version":"1.0.20-renovate-non-major-3e25225b1f88ce6bb68a40bea93e432fd76be3a7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.20-renovate-non-major-3e25225b1f88ce6bb68a40bea93e432fd76be3a7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a907f4177b320435e7bb21dabb90f40ba11a92aa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.20-renovate-non-major-3e25225b1f88ce6bb68a40bea93e432fd76be3a7.tgz","fileCount":27,"integrity":"sha512-uJVp9GHPOKnjJQBBXegYVzdHCN8AGI4ATFjeVyWFuXrI2RJHFzLLMF0m3sKGFE+zJmwiD0vHQJy+hlrxqR1EFg==","signatures":[{"sig":"MEUCIQDUuxouJrQPbjTQ48kaCfpiReTN9tv4M9jctfAATx63zwIgE8BjeN67JFWvXZeZ/tCPDodKqTn3DadR+nOqkhRQd3o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYkcCCRA9TVsSAnZWagAAKPEP/17pj2EVY2ylpvC2Ucsy\nh2pEUXZiMvrRxTHpY+hK3dLiS+gA9MyJRBlOuCfrEL+kejtrigvgJTA1PSRk\nokoE+2ioRNdxyOfq72n9rS1ZDb6MqYM2MjDXOvjuZhb3R+T63fEiVyzwfs/y\nJgyiKBKmW0+VCUFXO0as0TRtbB0+nnQwqfpwX0pxIqjJZFJObHPNzzLnlt7O\ncPobR/3A8kdlhESeQq4PzENry6sCwVHdz2Zy7/kCB/z8Rq1SyV9pCJr31OM1\n2aCBvRE5V8ENQE/4rjqwuhK/1/VzjrSqzP5djLlfOQofU3OC93TeToWWFNGl\nf1zjNUDrUsWeKyT49fvEw3oyGCCTGmhE5B9BOv7bll3JjjsaBPZytFMNElbK\nMX48PiOQMQ6wQ8zjF3+5Ueis9FYPHjDLIslUFGyXIosrt8VzXhKxKXaNImZV\nroYjR6MiSHGLp//xgoVS/0RUTSgPc5pPhuhLadXvjlEV1DQrksqm06ukoo8W\nG8OEeMtC997DsK/30MPJu5+eBmL8+boKI78K9Q/vTX04juUPDTvU1KKmYePJ\nGPE2H36SVKrq2K8h/SAW40eOPYhYqwJs0F3/DtawZ43SaBoblC0OzM+OwEU0\nOiBlJDN+SXm5Yn1PqSSyNEZA2YJ7qI8uCc1fmRTiUYVRQLqiy+Tn2AdEmLm0\nbkpa\r\n=OlOj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3e25225b1f88ce6bb68a40bea93e432fd76be3a7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.95","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.20-renovate-non-major-3e25225b1f88ce6bb68a40bea93e432fd76be3a7_1600276226173_0.5711887465567922","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.20":{"name":"@balena/jellyfish-sync","version":"1.0.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.20","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b0addf0f716b7a14c48db3b46bc5feb802e4ad7b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.20.tgz","fileCount":27,"integrity":"sha512-KVS0iqigeRG3A/0CEcA/sysOQPbRBBOUE9ocQlhX26UGy5rxKO3kKHu/y84c3ruUS5AL1g9IvpZx+5Kh2iDepQ==","signatures":[{"sig":"MEQCIAMs3L38zYUyIH/1pvI+Jp23s6Vp+Gd0ZeKGid40n5PcAiBet8Z/E3Z/NYYzKLrw6/oyEnaTrNmtfaBHzzWJ210BbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYketCRA9TVsSAnZWagAAElMP/R0/LpH8jaTLYUNsT5fs\n4W3hn/A7Ww0ReWkoLsUFn4UQOPy6Eg/NuNvRv4oN2MVJ1Iz/DcY9iAgw2x6Z\n0verr97OrYFNQzyiWZlPwjQvoAbpQq0TvuT4dy3BFQPSD43u+CW40wvgJDXO\nsQuVb5k+r3mynqJICf7PMw6Iy+wcNsJDL7C+bdajos8B3NOd2Y3YJLmPfg4s\nuGXORUYtAoJM9CATH+3GwsMMIXNLLKPcbvbVO+/n5lgZcz5DLuWp9CH/LXrL\nQyrCYAZar8eOOU7xUtIPc0Cy7HEAWyUS4B0XwPRFWhuFLkAEcPwzIqDNFUVP\naVDxVh6pew6H6BbxLysZsogKzW5KzJ5/NDbe/yx2+Oc+rDhalmRBXMb9szBO\nOrOWmrtpAWHHQt1NTvD0f0wm/c25PJHbOf/7kONPx/VpUd+1BD9y06coOm8V\np73CbtxGuM3ldHFvTLocuV12aEszrsWpsZuANOEFkU+WmD5Ose0npn0Re5Nh\nhsrfigu41frOOpyAXpcpJx0AnQ71BDghaysaJJkyD4qR9xAuYlVh4PC83UAm\nRHOw+Pa5zbkmZkeMqWwk+hbrZ7/n6vOE58l+3tdWj8XwU4AlBXoqQRNCvak6\nqK/Cvb4iLY69hmzeytZxYSLY40kKW3gmkwI+aM0cgJBt4moMRBt48vKke+ja\nHpDr\r\n=Mkuo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ddacea6aadcfaf0cf8d9f8b3dbef278cb21165f5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.5.1","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.95","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.20_1600276396799_0.6366720673738577","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.21-renovate-non-major-c54693cb1cda2a29bd86bfa71a11e93519e75308":{"name":"@balena/jellyfish-sync","version":"1.0.21-renovate-non-major-c54693cb1cda2a29bd86bfa71a11e93519e75308","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.21-renovate-non-major-c54693cb1cda2a29bd86bfa71a11e93519e75308","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ebaf5ac6a5a251ef78c2884fec7861064f4cf031","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.21-renovate-non-major-c54693cb1cda2a29bd86bfa71a11e93519e75308.tgz","fileCount":27,"integrity":"sha512-1y/BDBR4tqmKTAOsy0+6CGPxw7bZS+I/XXwGG29yLHz2Iy4KtLT/dY9DVOndkM3i46PEkgCK8Y6Gm+ai0vJHOQ==","signatures":[{"sig":"MEUCIAIKQL9fqKRatWF8PTNoi5o7gSz16oeIyxLG91dx2yGqAiEAptZje9B4PtrZBnwcHa3CCF2dv7f5tk14fL88KTk5Fn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYlmPCRA9TVsSAnZWagAArF4QAIrlk1VhODv5K5iVmAAS\n77EhKg/78tpETgxzZ6JtzWBLk5AYFhhKy7weIzSCpQK/kPy3+T8vg90/OWuM\nZ/krCzEDXusKND9xX24LvsKRzyYCIcK46leM4K24I+DqCySXlmuVNWEPMlbr\nQh0UKBElMWRKmRtTmTWC6N1LnhZHIdNLYhmvd5/wV4UuLoI9gCFlR8vpSpiR\nQTrE6qecAUaYauCWmG8stgplqs498pzIgVFDDYTiRAmm7mqbz/wB12phHvNh\n9qvhhVOR8oWXwMg0SXBSOLRocph1QRt78fKwoh0RIhGTIJmXbutw2vDTarpB\nzDGYwLxUjyjjs7xFPERp/zYW0aGZHhID3DhGc1e+tKu4K5RPaetB6uJiwtzk\nyhsT0pEXAv7P3uCh79wUTVBK2pnX7CC82JSmsnPJ3i3la9KteHkGp134rgV9\nE6wOBzYlt1IJUd9h79OsONQ5NmKn4XKA3n9ejDq+ojJ50NAZUORzSyL9QbJh\n/QbCEKzlYUg7+0wF2FQ56b9sAJF/MQu/yiz3HMtfve28DYPkxipOJkMm3rBb\neP4U3FakbJHpM9IDN4SicAp0LpdvjcXdr0YRVweZFeRP2mM/xlkL57IUytCx\nrKEuyNeU9Qc8DNTUXdbdom5qT+LrVVM2Xh2Ds/0bE2Tl8ZH+edcs13BKj/KN\nMWiW\r\n=FfK6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c54693cb1cda2a29bd86bfa71a11e93519e75308","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.96","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.21-renovate-non-major-c54693cb1cda2a29bd86bfa71a11e93519e75308_1600280975068_0.36505757161301333","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.21-renovate-non-major-01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66":{"name":"@balena/jellyfish-sync","version":"1.0.21-renovate-non-major-01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.21-renovate-non-major-01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1e4041f6d485544065e49f177707e3d66c9a30ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.21-renovate-non-major-01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66.tgz","fileCount":27,"integrity":"sha512-btAbkPauLkH5Pa2p1855gKeFscG1taM1YtfBRdiDi05zYWPjtifpHFOUOPuRTduUj43OhJRnjJFfKCc3OnjjgA==","signatures":[{"sig":"MEUCIQC1fO0YyGIRBKeLQK9uiR7yt1pPOubQL1jCnh9RWVo0YAIgbUDePmh335FpHWR4X+St8EXLvZaYfd4Q+lWgFmX9+XA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYlp7CRA9TVsSAnZWagAAnPkP/0WsbrfaauK5ISmkRnky\nmdboDXM/W8F0z4MmyKtZD3lJOsEKOb56wt+nOZ+xolWzWgkS1v+Vp23MpTwE\nK0HflhYaKnCluvd7oGjHjJW4CGzyRwihtnQyEu9+it/08nCNTMLKgENntu6t\nxZBGe+E3ILOQwsRN+HLu8pWVPXUB1YMiI2210ortxs90yRK7YEsgOlE22Oo1\nSr1fDg7V+v/0TsyncksuB4SUbMEd9NFU0fOWJ7nQB9r3fIIwkHP1i/cKFmC1\nQacXdgdwDB9lBnE2AE34grfQAKvOFVE0bI/gexJUlGBHTywfA7vz7xzaIZpL\nePz2z7IOjPw+X+KrxzDjNCpayYJkZfjr8PZCIX04FnbgkEV8ccPer/W1tyI1\n8A97MtjZrxqdoMTFYcouVjjafcH7WeMiQsrUJGf0hSqlwfUX11AGhVIuMmAo\nUGaOen3YJSYvTBfYnJNT0S5LYEA7LUBjXSsXWf+m+fMi5WZGB+W34BH+gULZ\njjmjIEGL3rFE0eRxDth4VQL8UY5x1hA1tQ5ZYb6neSCCYQ8MuXkBy8UTNdFm\nYPN0Kwt8oYCQEy5IJBarhUjGdf1rIeOo29FwArYmJP6xsRksPPw7bpLt1Wn6\nNJA1gTD3w7zUTIHCS/+expe8rXzKs3TohitTXLmJsC/CaS4c5iMfszLiL1nE\nXeG0\r\n=B7Eo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.97","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.21-renovate-non-major-01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66_1600281211305_0.05682110465092882","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"1.0.21":{"name":"@balena/jellyfish-sync","version":"1.0.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@1.0.21","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae752b8a44593fe1440d3cbc803a1057ceaaf5fe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-1.0.21.tgz","fileCount":27,"integrity":"sha512-I1KKkQ7pQCePhKhn5XfCIL705X7tWv67lG1k1rOFpSwPqTdb4fKOckiK5so2FzD7xY39Z+XZ3qvHFZg49/9kmw==","signatures":[{"sig":"MEUCICCdivyKjGD380H4bRyl2NO4Yh2nanew1VO5FDUUIvFgAiEAvJmwQb0c8QXTFBhwJdO3zmk0EIMKPveGLen9UbFt5IM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":254765,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYlswCRA9TVsSAnZWagAACOcP+weW1mpSDr1r+XsKNS6L\nIN57HT8xBEtzK7Tt0CF/Y4Gdy2oV9md2NlbVY2ApQLK896q1FlWyrfL2XLcn\nM9aGBfPLn/XZTgLNYHQmnfGZS4xre9FL11guDyv3fm7dqasazG6MPaK6yLr9\nbOMpfXV1wHEIWWmyxzeiP8297tbBxrBj0nHQ9p8aEXIZqD8aw72OCcqK47Lg\n5ouQAXbNf3lyWHXuojgar95y0zo8agbmtbbVfhA+evU3A5KFTh8fSLwaRo3f\n7irMLn7HBLL9N71MTBcI9O5EMe+IsqTiPWmpMYeKe0I9pNVYvdUgbK8FTZZe\nj2qgXFYl+in4Nka1YaQd3m2yMUhBSDcL9DcTIWrAuZIZUOwWjWJb/QrMSAMc\nvCoI4hJqZrwLT4Gj+c5ddlaAAKXQObEigUGg3uf4aG7LCtmNo9tfqddFv+pP\nc2b3QuTzNaNHwj8MzdyHaBdpWJVE6rrwGY8ejHspmwYRIjCwTXXvIhROyTiI\n68hn63DgxnYnKaP4HbyEMyUSCaap+n/AGHisOoPzpb5iqNQapaJ/RxU9qgE+\niasX2hVGP4Sg5mNcDIRgUa9nVBG+AbRljnLsPtiCc4nv19iMOZP3Ie+SLjJa\nY4iRyN8vWuAakUDNZi+Wg6sAOQoulJMQX+RJmZzjiTiLkOjGsg7DMGjd/go7\n/5Ja\r\n=8cSX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6e958b27b2d0ee9c9f92fca6faec223b01e49eae","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.97","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_1.0.21_1600281391512_0.22407439514293337","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.0-sync-mentions-e9a18ad2459a04742bf8c921e66e67acd3fd70f8":{"name":"@balena/jellyfish-sync","version":"2.0.0-sync-mentions-e9a18ad2459a04742bf8c921e66e67acd3fd70f8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.0-sync-mentions-e9a18ad2459a04742bf8c921e66e67acd3fd70f8","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ccdfa05f0323435498ce471202697e64603870df","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.0-sync-mentions-e9a18ad2459a04742bf8c921e66e67acd3fd70f8.tgz","fileCount":27,"integrity":"sha512-hdbK7+fgT/n2JVfJjMrQ7YEWLsBEUGl4E2i39tZl8/MLlbwQUiwTLdPRJPTXKsPXzxRqThj4KzuG6bDAl4WXXA==","signatures":[{"sig":"MEQCIBzLKKepGwA+WbA4OUZ1iU+zRJpQgDTA98Lfa9PFLMB3AiBJyQ46G1Odndu+s2GQONmLQtevguElF70l4Tjy4s9ezw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":255939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYwlDCRA9TVsSAnZWagAAfEwP/2Kqna8oY/PAmXsPgOzW\npdmrWtHV4bsUWxSL0y0o++YgPHlUwbxfpfQllIAGvRGZGPpZ1bAXbXYIk6xR\nwyOdJyfzgW1mN+OyO/ZxKpOFu5VMLSPr0lhPIXNTUM9GDT03j5A6TTFgy+WL\ntWXfU27gpmbBgQHxJJqq8/hejVBmPvGCcdgVbP8c1whByR6WA3zgftOk5I4t\nxAkyUCe13DlWJyKQHhwF/h04mmUYifKSacC3D3VWOvmF/ikZrKO2fGHi7DHB\nRfgVl7/hwW0SKUYA0ulywGR/ZtxT/alGR6DW7HV8SadbBzwxcmnonzHC5jYX\nwuUPRe+6gG/Q9KewK+30m6drp1c6lMfovYEHv3PexjrWNNQLT/B0IPrg9HUq\noWcj6jnbCmsdvsSBFUJyBzaYUP+PZPVF6C1AnExB7AvVxUEMFRC8LFSgojYM\nkzgO8b1R1uk638SqtvdIl7NG2WBYrsBCR+KZsB1V1O0cN0ZfMUvhqio/ifxf\nGmoD+bS6Zzl+Ad4ggv4tSW5pKqnTFHhKlujaKtGyUcMOBoDHO/q4rNKdjj+a\n4E1W4CFsUcpc//A+m2J1JCfXkSVE8lUBQzsOAjwNT8k1TgVLhCG3oyC6VN2k\ntziHNYR951sEu0noZmOjhDMhrWDFhX6LaLpXIyUiKECuogPYK8lYl2imM/yv\nPrue\r\n=Zf4X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e9a18ad2459a04742bf8c921e66e67acd3fd70f8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.97","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.0-sync-mentions-e9a18ad2459a04742bf8c921e66e67acd3fd70f8_1600325955343_0.0029676604816779584","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.0":{"name":"@balena/jellyfish-sync","version":"2.0.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.0","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"375abe7cecb4087ea3c0d505016a260d7c8966b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.0.tgz","fileCount":27,"integrity":"sha512-97ojhNeZLtBGwTJ/VHkC4GSHPsApb6K8p6l3dmMBPQCcJW/n1N7l2GsFVUAOFPG/O8Kme9p/OnTSpFL3Q6PTGw==","signatures":[{"sig":"MEQCIGcIQ+/knT8a400d6cgyEMyERAUdvMQJO9ypnBhETWvjAiBFz7qEbrg9oj92PYiluJwmvSbqBz0aVGm95hvgw9gyUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":255884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYwrvCRA9TVsSAnZWagAAF9sP/Aio5widpGUacD+PRgOf\nvPB/Nq8wBJ7FoDuvBQCpepJFGH11Gtuhohc0ClrEckqDbq+kOcKSAVS/oaSH\nCkdVvo6JQzrh9sqRXE4bA60bNy2PXzj2IK6BgQSBH+o+FbZZKkL9xO6iPaL+\nUaJKrVEWG3c7DqxRl4tC3EDPXoZLmMOG+FwMd1H+LmmPpPjl90w8piXWwJRo\njHgyi9n1liED1iR/cUexcdGRy/qf/mK7zNFzVlBudEHi81Gjci5qy36P48cd\nrZ0emMq00RmGWoGTh8k+dkoVlG3Wi7fwSf4sZv0FB44TFHAbyF+EOUZsmjx9\ndNxRh3uTSWSuH6AwwWyqVu5YZ7hHgNS7bbffUZwKTiffr+PcczMYEZlywUyc\nthm6+TPTaGifQt/NRWDZdauHa/v2f68g+QPgmMiQneaj6knNfCgoa0VyQqVi\nXf96KcJCJR2jXXLJ08UJfxYERukZ/BqAGJVd8agATWogJGPQbFBSILz8kak8\nwu8rFSshWjJpYa2eEIsMbx0XWk/j+8Ob5y00Yl/7WGpsEAgX1/bgn8SOkFPL\nAVbLaxUXISWQD+HepUlzxOnIftKDHjw7sQ7pabDJtrpuLnwKS7DJnuLv/M6s\nVs0SHo7oOoFKYds3L+7z6OPp8VA/jRvX0yh0QNokP4C/odJJC8yOmgRpE0sM\n27t8\r\n=gxi2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"42c58fae42089a835272f8ddf9ad1a771ededff7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.97","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.0_1600326383097_0.5846653375178823","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.1-renovate-non-major-03259bcc1956773d2de56aa9307744b5b5ad3576":{"name":"@balena/jellyfish-sync","version":"2.0.1-renovate-non-major-03259bcc1956773d2de56aa9307744b5b5ad3576","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.1-renovate-non-major-03259bcc1956773d2de56aa9307744b5b5ad3576","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"11bb5d9706079d73758cacc8fc7582a6f2c718af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.1-renovate-non-major-03259bcc1956773d2de56aa9307744b5b5ad3576.tgz","fileCount":27,"integrity":"sha512-exMTIdL4dEoudfaOuIfvHMw14J98Dp6d0o0cBp/YqrCFMH3aXMDNoxHjJWEmAfwub+20zjHvk04hiuXi/DQl5g==","signatures":[{"sig":"MEQCIDuDLScQ66IgA9u8pIQmfT3NvwvTFRx6OSj4+r2cBMMgAiAQM2q9NtISPuMlieZ98o0yQ8ztoYTsIwqmTyaZh2LRwQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZIBRCRA9TVsSAnZWagAAVGIP+wV3qLC9h/AmETpqjSoS\nTgR8kM9xObI+ETtJGD1KQS77RTLfLef7VlNIXWatat5RcUuQNjjRomPW+CSD\niSdwx1BAuLJdskEIbdhYkC4ahoNe9wBA6rvbNdK3Yr3tDCqOl0Hhkz1bDtmu\nAD2Rq/NdhwsrqXAFn4ul1QOE7DCiiqAHfaQ2veoQ1RybCgbo+YtlKIW3DEVn\nrtldi46T79c7atRle0e/mrDJYLNj4mgFYM3L6GEIJX7n3wyuKy/AK+Aq9XZv\nk9ytCNi1/kaZlxL4zByNMpZxPawDLVy6dRAb69BsbtIcJoRgX9x8gs58rrBb\nNsP4THLhHnHoT60n8+mBcbfmkEZmGQeemn2mzbSt0LUjnWvsi8UHKv4QDXH6\nZQh1ejbLS/sdpdpvSGKH0dohkVdrLpx/aBcZ/mGYxAaZx36KiX+1esv0nIHA\nAZlgO+B9nROVuvmoebfleK+5RxlPh4eFDMHa4FT1/KkeJULg4lBZEe6Q/ThO\n/X8UfSvkvDWCsqPbmwEWXncclIQvPgGRCE2gQO9TfFUh1WDTdHvkQmchwMQo\nXefB5eO1okA3vQssNRW2MRdH9Rcv2hz0uJK4Wa8awmCvfLA0+R0EotIzxoZL\nBLKHeWpTbjyXZKb2xzsmELHuOcbzTxY/2d9y36mMj/dx7BqG1eKz/Jf/qvzs\nRvgy\r\n=a9Kj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"03259bcc1956773d2de56aa9307744b5b5ad3576","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.98","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.1-renovate-non-major-03259bcc1956773d2de56aa9307744b5b5ad3576_1600421968821_0.9461469167081438","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.1":{"name":"@balena/jellyfish-sync","version":"2.0.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.1","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0438bdbe25fbbbc53b47f56f020851ba3d0e3f58","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.1.tgz","fileCount":27,"integrity":"sha512-YUpmGx4sACLFni9GOHcrzuD9XCgue4B/zc1gl+08qRLhD+1dF9rCdY0Iw6lmsk4cNf5bvIMl0pe8XL8wKEV2SA==","signatures":[{"sig":"MEUCIDwrqOwYTRz8bSVdSJN1VXA0LEVHfCVqfmtPh7cJR/DJAiEA2ZaPkRqH03KuXCf7O0VvZVk+3dPGS5TZ3KVZ9eoZNow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":255990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZIEACRA9TVsSAnZWagAAWYsP/3NcW0RqcT/jLQbFkbVo\nfuqpsu+HQcNt+SXgJO5hguncaLmfCVMmMkJmu6pfYTlQKCIeQlaK52J6S3Kv\nw5xXdF4Oahf5xwklHzyGf83X1dHM0Sp/AfxoSUrfaBgwn2Dly6WrCJbdsMvC\n9uJrRMQvXlFsaHz0Avtb5FyGqtfoIz45nyy3u/p0Zf8Gvzv7+Ye8ssxDWp6L\nyLu1XJgRmjXwregwR3RV5H11eMHIHBkDB7l8lvF4Gp9UfhTajao7b5OoXpL5\nRyNu4yu+8fl8fuh2TVX3kurW2vgvn9fYQddobqNB1UgCfkqOurExcKBJDWK1\npjz5PGDhPi+yDMt1NHYW0dAIdoBjhmFkCX1BlduNrWNz5t+TENM17RxvZ1yq\npDun+6NJvrhbCsmnfIe31f54DET/+fN0h466PUuDCJMO9kViR+o2Cn9u0SCM\nzNmHMwigKpMQKdv8dyzrW6dVzvNM+C3U2GT8nS7Zs9vXSaH3a3rYv1p5m69+\n6wvHCCPZeiuE4dZBqI86frwZtEYwu3TOmORfi3BtqCmAlHSe4ArgZzudeWc8\nbzbE4J4ka+RuOAjl649z72wink52CKIhnO6Sy8mLlYWg98NKRoh0jli1AFcP\ntx7jBjRjs3Gj4lLd+3iTq3dSCxTg7mzWQlKK+fyvylYwGYaBLzemvJFEV7zs\nLHlJ\r\n=JJLT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1eb237a3a55568e5f1ef8aaa2da3d873b9cfc383","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.98","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.1_1600422143545_0.05504916046247699","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.2-renovate-non-major-9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a":{"name":"@balena/jellyfish-sync","version":"2.0.2-renovate-non-major-9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.2-renovate-non-major-9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4e9a33b3d909bb1dc585a8af11e58748344b689f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.2-renovate-non-major-9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a.tgz","fileCount":27,"integrity":"sha512-4EDsE8OK/AdRxy16UiPpLCbi8hx+sNS/tsRcfl/VXQXirsrLbeRPICgDNS+pOPUy9QAeI7hhhMyfLx6/ErZp6A==","signatures":[{"sig":"MEYCIQD7NWwv4vdeGL75CdaLAlTlQdsziipaz9gJ6oHb9b91lQIhAOzhVFrOrhMuNRiLnKKuXVKni8P+g+clSdR8ADncQEpQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZJofCRA9TVsSAnZWagAA48oQAKRs29IdN/vAxpdnMlmZ\nxuO8y/eYwHagRpoqIxWHJdwee/ATa7gm1XPIlBjV7LVM1fx8UAM9Ui0B1LIJ\nGgL5JMWYkaWM9B2bVYlxAHSWUGGu2IUtPhyHKQLxZbZhSdI8rKTn84hoJK/k\ndP/FFdQFt0CNVbeLYzcZaiOqyuiZsluJ7DlV7rNmNDyqA8/8cA08834nkYWp\nscjKn/wn1TTj4xwRrhqwSzVPrz/jUOXMFOwd0jx9ODx0OsIyNJFrr+0HnC7w\n7BosijZ5Z9lvtUarlVDSxn/zDPlMn/7qttcW6dWaXd3L2rTBzpENBVRp/RH+\n+l99Gr3gFM93+GSayNIhGH5CB7483R91KLkQuPWut5f8jmEEOR3xUOzRNLLL\nGG58x6TzVP3fl3IT41ARN47evm0++F3o8OFI8arecMvB0jZylUiBAbxBkEgR\nT515V5X1MydNlHXDFTY7J4SwDx8Q7JI2cuUx6S141WBtDqeE7989MCmSI0Nu\nTbLQQsFWrfH9j9oeaxqmdgkBwIYnrV2vQhQRWV8ju4B4Qbr3e5sP+SLKCH33\nqaTmfYJEeIFsMeimlDc96+5OVmND2F+trBkhkdxTv1RG11J1H68iiKYh8S0/\n729+aUVG3vMsOydCGlT2WrpFNceexrqtffOlwBWZyPFq4u1vRg6dCQqtyNIh\ni/FX\r\n=WO0e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.99","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.2-renovate-non-major-9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a_1600428574781_0.6357916278742448","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.2-renovate-non-major-37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7":{"name":"@balena/jellyfish-sync","version":"2.0.2-renovate-non-major-37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.2-renovate-non-major-37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2d001bbde2da4b6b8387e8f7eeb2555a04b5c5d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.2-renovate-non-major-37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7.tgz","fileCount":27,"integrity":"sha512-Kn1hHRl0L365A+aqLdFKH4sFQXy91stk4SPhgad6/IaOocH72yFYM3xRfQWHiCGjyXns4pH07RJ6tp223fq6hQ==","signatures":[{"sig":"MEUCIQCsL3NOpJ86WNxR0yhT/OXeVsTMPZsoQe8ur2QgDK1lHQIgMmm7FDg6PMKFBXjA3HxFquS1v8zhVvTzNex3q3zbB+o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZNUPCRA9TVsSAnZWagAAxxMP/3B0zrwE52FlNE8/XyjS\ncIEWWISclUwjDiNL+kWRnnsqAiBJdEHQQq+2IVMhrq5cvtqD20ZgCNI4OYLC\nrIOU/aedx+l5bJWT5JCdOcn2ev/XrDy52KSdubYjlm6ylOxfdKhesmwyIXr+\nIqVxWZICxUVEH/R8z//608Tv4hY966wue/19f7rVBo/BJB+h3DJgtGG+DFU1\nqeTewJcHy/dottM6OMhAjJgiKc7+654IX3FZzslkDbIgRf5o4YtqU1VE0QAT\n1skNZoBKXXCsomy3e0f+Or3TQVwtzvHcaKjdxgtBjIjj8loF0R90+wKm1tuU\n3EZcUIIbpG6g39/G0EoFgiQtK1Vqe5O5d1boSAjKPwXzjvUPZTfUEQVcS8AG\nqMoKbicisCXGCWAnCqfz6mjS8ueWBTxfv04Em3ucHYcihKCje5khcv/8XB7a\niyjb7t/avo19I6LW5LJ2S8O7Tb6MLVGzZuzDc+uAVW3N1xPooRroItN0+Niv\nmDEwrp50JIV6R7P4s447em8oj+Fh8ty2kjd/9TKFRFltAb+tZI0gyZaJSfqa\n7L8XTiKQxWa7DQP6ElluxeBzH52r9AuTcP4W+k+9nVhoOGNitM1Jx+qWMzg3\nOmJmWGuKb8Eev2k/FIuDjo51sKNglVHFtvPyfMbP+HAOz1V9J1+GtOpo8nTh\ncySv\r\n=yfuR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.100","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.2-renovate-non-major-37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7_1600443662777_0.8564254165519851","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.2":{"name":"@balena/jellyfish-sync","version":"2.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.2","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2bad030690da97b9300cb071fe98cb61be196320","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.2.tgz","fileCount":27,"integrity":"sha512-ZpV1MtT+kxvjsDukYJkBoyzprAwjMzKu1zr+wA5Ome3FNvZXToM7Ath0VReAWQFm1j2gLgY6chZi3cA5w2s27g==","signatures":[{"sig":"MEQCID3sxiw5I+eofYRL5lv2xYBgZhWhNGZxmf2LK7gXAzGsAiBHf+a8v6nfhN/c1OSgWT64oUdsV9N4GLuqiOnpvS2cag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256177,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZNXSCRA9TVsSAnZWagAA5SwP/17mMrpLCUUfxzvtlsYf\nVTMrxNvFeO4gTh2Wn5OJTSODCY4blSUlaM3HBk770Ay8dDEskoCxNxRTKuku\nSwrRqXn9qxAo5yzVCO6xcvs3jUhhASLQ4deqUiEN2oRKTiiGAkN7Vvc74rT6\nRZbPOAtfg6AwKFInC71RoJo9vsiHX+AoKT0pJYbPAY0QR5hVq9L5iv6nFDbz\nRlpLRVmbWBZFJt7ja8TCUEw6M8dkJwxpTbYlaMsEFkuJbbwArA/tbhd7ceU+\n3S3Tp5aJ3AfunrJ3ntGC9g12EAmUrS+kidS0VzjCiN0BkDuQP0hJ7qLcMcRE\njC5yF3NT3S/bfFa66f1SwIFw/oQvLyVAEO5imiQJ4taYsEi9ame431WcQxlC\nE0NWbHMS3i6kzCUu+/QH0vgw+JI/VMNfOJkQYhEzBPsqLyx9knMQ0fD6zues\nAWFTtIKYLQPHlA8NZPVgSErKPW76l2CBfx+Zcgz22WfzQ8c12cl2GbJ5JTO1\nTlMtoor8vxSFO4IMbL1rVxs5Uu9iMWp0k7oGIy9ilwsOot2GldUDk50qwHwN\nLq8Dw75fE0InKKFdSEFznb6MM4LdY6mfo8E2OvwSaypTfN0gPsNw1BLac/yV\naq2mS/Ub8Ruvkg1VxXYp5OzhwzVqH0BMs2MmdQgU8rzLVuNf2KhP0rbSYS04\nk25B\r\n=0LD1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e830796aba064d51fd05e54a897b050f3719950d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.13","@balena/jellyfish-metrics":"^0.0.100","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.2_1600443858416_0.6525614598574776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.3-renovate-non-major-d5e1b166cbf99cdbba9230183d8b21942a07b940":{"name":"@balena/jellyfish-sync","version":"2.0.3-renovate-non-major-d5e1b166cbf99cdbba9230183d8b21942a07b940","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.3-renovate-non-major-d5e1b166cbf99cdbba9230183d8b21942a07b940","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3042375c40ca24f9fdf5eadb794bd46f33deb7ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.3-renovate-non-major-d5e1b166cbf99cdbba9230183d8b21942a07b940.tgz","fileCount":27,"integrity":"sha512-4FhlgTTS1V4UXDS4WeLN2icGpQgBWH6qrv/tb/giOdXjAUjcjvpVAYiIeAxj/MUUz+qFFEKu4pQLw54GRwcbFA==","signatures":[{"sig":"MEUCIQDZRrkiAqu3i/g7Q2AvRuAoK3S5ug12Anc7gdXX/op/YwIgTaRwf+lCKayWLeu+oJSbSkaM2XzuUuGPESP5Ac9piao=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZSNmCRA9TVsSAnZWagAA/+AQAJyLvyvJBJ+7Phhf2oPF\n/gkp9+/TCByiExZNWBfHgT78td6f0fbFFmz/PSxMafgpJ0/muCltEDFrA9ik\nFM7IwK/Tz1escAe38xcuDdt/CfXEjq9Vl3qtJNDvo4L67c+G+i6w1DB1wYyH\n4K5J7ZDL7FfL/IpSExhlNV+7UMfGz7cH9t+4PKYeVUJufBZ0nzR+UYqxMVd+\nJUdfNQyvnxcU8pmwY5qhwAG+s3RBkHfcC7rgV+s3DqubQaV71jED0PlGVNkD\nkei0tnAcY8Qjf3Zip76olfaDAzinPtMSNqMJ6iWQDthz6rfdpUCALtdXQT3C\n62oFwT49H2uVQqFCTXjlp/OCeQV4px4d9FUjtnRJ0duZYZw+xO8rsyg0tTOM\nUWu1GMi/LR2HeN+kz14oFx9jsENaYNW6krQXKq5HzT2tn2wJzpuxnB0GL/G8\nQbC86xEcsuLqDZNl9YYJwcgQYXaeYceJSfduzb6ehqtmuNrq3YoFdg9cWOBh\nuEWL3tBGNa4iMVk17EAAzzD/9i8MQbFmz92CGpIpjnSkrH2FAVgMzHHJmr12\nlWSPNZqqxx8UjmdChNng2V/1l/eIkt708utdbEHElnDxi01wKiPAMLggqCNT\nJTBcISoFlK7HmiS/ihTMBJtBsYsN8JpBAZ+hnhrpFU6W3yOk/mRTsg5fD6KN\nbl3z\r\n=mvWF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d5e1b166cbf99cdbba9230183d8b21942a07b940","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.14","@balena/jellyfish-metrics":"^0.0.100","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.3-renovate-non-major-d5e1b166cbf99cdbba9230183d8b21942a07b940_1600463717545_0.2528498979188365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.3":{"name":"@balena/jellyfish-sync","version":"2.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.3","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dc22351a9056504493545c05eb9cf4cb6befb0cf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.3.tgz","fileCount":27,"integrity":"sha512-Th+Oc85yoJfUc8LRhKfMibmkT7PQ/vGHwCjJCRd/uaimqJjBtVBIUzkUozYRxbfPKS8ucLRGc/0Zc01MDWDICQ==","signatures":[{"sig":"MEYCIQDkxx2XySsfeXP+rvdEE7z8jeYo6xafhz1IlSzFA38/mwIhAKhYP2H9n3wxdd6BQBpAz3tOwQNKLNegBarV0NtUq86u","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256282,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZSQjCRA9TVsSAnZWagAArQUQAIJsiuM3alJKpbS4voAi\nOt+fVu1zg9D/SH2UECYYt04Q3MiutWpNUB6gY8hR7Fs4vbIQF/roYj7iy2xO\nWMdghQO9x426aqFqwid6jW9MzajrO7/RuOAVTGxXlc9o+m/2vLdPCkm+a75s\n6dV7cKm8C21d5OiSmdMiX0Sfo6eQ+qE0wT/eLOVtIQ9Z6xKvXJc7yCDvCRIR\nrpl09dnLcWzBCSdM58KuU67ueTKfvTwuGuKNOBaHD1EiumRWuRmfI+JL1oiG\nysThXcqncMqJYL0XBZmZHc0YSwyMRW8vEyMFyLMANxv2NPHpEHUU8DijmmIw\nqf9gWM67IfQOMpv+gLfAM/tt6Itqq4UB9uv7prBNHvpAfoztRNRzwX9FTc1A\n3BxPm21G6ZKDuQLhExcrgJrsgcMQpF40OB190knCW6eAfWGElgrwDyu99Y0h\nQipW+GtSurGVYoqIHMk7TAHsFvWKkV4PfL2HKmfT3faWKbaTwG8uMQYyOCm2\n1/Ebmev6/YyPUei5DGLQcMIhCnABQ07/msBHmN2t4Xo8/isbX2KO+cFkFerP\nM1zerOsljAx1OvHIHye2ttBg16SDLPujFSHejHjo82m22RBvXiZENWE9UhUe\nRHYN9IExvEwfI+KIk9wKOGX67SzrG6VqJ2cnswwSrCquLUeDVW1xF5HqXoSq\n4t9L\r\n=3NRe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4ad8594dbb4641d258b137363e8a1c98c070fd34","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.14","@balena/jellyfish-assert":"^1.0.14","@balena/jellyfish-metrics":"^0.0.100","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.3_1600463906907_0.2617192208714336","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.4-renovate-non-major-510fefa71acd7a702f9db51d6738f693edc269ed":{"name":"@balena/jellyfish-sync","version":"2.0.4-renovate-non-major-510fefa71acd7a702f9db51d6738f693edc269ed","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.4-renovate-non-major-510fefa71acd7a702f9db51d6738f693edc269ed","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0b48a59220cfae90ff2ff6810fcc623438916f02","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.4-renovate-non-major-510fefa71acd7a702f9db51d6738f693edc269ed.tgz","fileCount":27,"integrity":"sha512-OD5hKP5gtZfsZqrVbRnLeUgEfXxyrFA0+Y1shxrBU0GHMEGFR9I4FQfUZFyR9+FtoAWLZHmoqywKk1BNFIwD2w==","signatures":[{"sig":"MEYCIQC0fDHipG+MfGGX2rXaqXAsC8G6ULDHO697xm3mXObVNQIhAKdej3+RK9Ta6wH8vl+rI6p1/1qu9uqtdvr6LUgnyGcJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZTwmCRA9TVsSAnZWagAAQREP/jhuoHKG9No+tH2DLfSn\nWDtKF5fjn9zqO5KT24XfLvdxQhkR6HbbIJ1rN1YL/u4LoIcN2+vzlyef9IOc\nUs/EFo5T8kRLh/dBMaANN91l7P32Jun9QA+JGC2MjAH3/c1zzhBvOetB98Yc\nfw0ugpB+0y05FcLOv6w3uitf89Pj87ZRmx45ipcsjjgc6mVgbxSd8eoAeWnk\nNZmngDax2Kjieav+nXHICl15pJmRArefDW2HYLsBs6HpSm1FCudoCUB+HujE\nY6d4ojpd+Y4rSC/2vyQSJLrNiMhlvNqrSOL9FX3SFXHkEFSwOSSZe7knuNOH\nqm3NtPSvpvitoShkQ6m7Anqv73F6KGCbNXCazGX9Em5hUIz747/gLAP5njvV\nvrzrwrubB9J8oqzDheyksOR+tGKdVRdcIAr8XWDHvdZfSq3V/23I7ngi7kUW\nLRoZEUNu34EQvpKO3bo3z6l7836uf31A/fLxBYqYTvShZuWkewvo4XqB0iAu\nTFViRR0c9l+oWsPS9HLf+qbB0b7w3N4DYguq1ssLqVGQZ+N2udrnbtZT2n4F\nEU7gabJCpepyACB8K4lD48AZUG8ZQWKuo0b2mw5IoR/KUZMxbkNDGxw8jKkq\nmw50kLHjesX8Kw60W76ZfyAwqYHM4T6XQyhjPS0H+rKjpqjYmTHGyTdu8uGW\nz5vg\r\n=ciTl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"510fefa71acd7a702f9db51d6738f693edc269ed","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.15","@balena/jellyfish-assert":"^1.0.14","@balena/jellyfish-metrics":"^0.0.101","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.4-renovate-non-major-510fefa71acd7a702f9db51d6738f693edc269ed_1600470053669_0.23398941765220527","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.4":{"name":"@balena/jellyfish-sync","version":"2.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.4","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"43dbf5ae567aa6a96e18de26b86bd2a25f308a65","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.4.tgz","fileCount":27,"integrity":"sha512-vskvfdpnZD6xPjeJ/lA7rGrtayDwWFWVCbCXmA4700UQzezMdfyvFhNeD8P0UpaNwEBTnERUbJohe/Aht+GRbw==","signatures":[{"sig":"MEUCIQDfZBHtToNDR1Uos23Odoaa3SAhxE3mbJ8zJkPN82dbcQIgNre2MsctiCgo1YKYHXlhXXF4tCvCFzkTTo5OjdW+Ls8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZTzNCRA9TVsSAnZWagAAY5IP/jCNhvM7zan/ZKtFc4Ah\nUmmay2hzje9hf9FD6YsuOuxF6tQAJxwuin7wxgZ43RshjTcFBECHr2iX92S2\nnX09AfQOEKtwbu+RjUf+0iPMm1k+0b2N4ErZ5Jsytn8UIruPSg5RDVrKdKXH\n0QnyXUKV52MrygLcAxo7Ta+vOPaRtXlcm8kjAsIgI/ROQBZzdeZqlthIIw/Y\n+QMJKRL2neKjbLk5lHMWZRnUHXuxvDcnOabj79wDLBalDtE4j3Th1ASStvzj\nHGLqQGwwguezSPS4qzvIwJ2EvlHJqnCFn1j5weMoGkbh/+Qw4+qg3l8eRnsN\nVXd1cvuj4v/W1X1TJdyLbrQt3cMWKE6wIrr1pZMp4AUeeYyh4H+jec3k1sxS\n02L++eEHhgsiHQOPwXXIflcsgXpRY2h7+aNDZb9IoRUnbtsorP2h/ZFHF/3N\nBLlETg6o3466h2mERmBojoAmZ5b2d2RgQOBI8UTEYRu2k0Mxpr7W3KpXojXF\nUXWrfN/fcyg/yMtITwsU+1MQnx30xZu/fb9dTBfIOAC83HF+xCsD2agn2zdS\nMAxDk5qtxnBg52dlJxRSDjw+1Qev+xe0kFIs+ItTaIf17A1tCN5mF40pN7yd\nyhBrnLesE9b7WycA9NfcmdXYvXe/CTZ229UNB+SNA8971oxsqlzz0lfAV684\nifWl\r\n=yaaz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5305cd32c0960e6a4e7183aa6d0cf117f1577e5d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.15","@balena/jellyfish-assert":"^1.0.14","@balena/jellyfish-metrics":"^0.0.101","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.4_1600470220689_0.9973126176735343","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.5-renovate-non-major-fff77e84c6bc718b3b2679f646a836f076b032c7":{"name":"@balena/jellyfish-sync","version":"2.0.5-renovate-non-major-fff77e84c6bc718b3b2679f646a836f076b032c7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.5-renovate-non-major-fff77e84c6bc718b3b2679f646a836f076b032c7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4cc28b8e3718637e0985fd0e08d7c4f5aaae27c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.5-renovate-non-major-fff77e84c6bc718b3b2679f646a836f076b032c7.tgz","fileCount":27,"integrity":"sha512-qrUaoRrwdgmTGR3kNQExh9Vck66gFuF70VImbJBp2MUhSVaPV7FNbU9VhRsf8EwpH/nLCJFoNFCekytd/zSEYg==","signatures":[{"sig":"MEUCIQDDFR/L4CDhufpTr+ZO8Hhbzr5n7QCTynStNsjasrLJAwIgPOB18lU/YytPgPitrrSfOn05XwVPV9hZ9rA/9Z4tbCg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZ0LtCRA9TVsSAnZWagAAhFcP/AskfBIJe9mZEAu8q45V\n/FkJLSoETkkYVzhmQL4UNDPGL/0zjRT3RMFn+zZrN3TQc6I/0b+kGpRjDkbn\nh1xJJ+9wLAUnWydIH3rce4Bkm70+KYI5cH/4uZuveVcrYdT7fCu5Ft9GNP39\nPxmKb2YYky5Ty2H9XnZuNoVJvraFoIPEpzadh86gDEzoSLQ750g0pwYdQjMN\nrsh80lGz+pKLRxk9TJ7Uj9wKGn4WfJampcg7+IXu9+x6ylyN+i8mxuSxm/6d\n8OK0yzadTVASwX/RcneQYWDR0iGZ5vu40fpxdCK/gPHXz6RPl2+VW0XQABqp\nlmj60XIRFl/zHHPRxxiJqoq7kAa5YxF3TrOXRX7hJyZSO9eKWEZdqEkQbGGw\n0GtXGtzWlttdfpbzK1oPsR8Dxl1ViJD4n5mkBWOmO7g8xrY+RtJxCxW4GyE8\naKNycghTjnx9gZEeiMr310wrWUf7g82dlMXoVAxlrbDAHCFBMdCNhUzi1/xP\nPcepbD9Sgg0tqZwXWvfnqX5G++li31zx5FirxRE8lhqlpYKMD5zvf8KMmCWx\nWq3/gxERglYNe65hFmHTtV4iGT9oJwU+99IEwIBt8JpAH/uUlCAFB1fjPy8g\nKVswJ9VFPnu7eDi/fYyYNNb1uc2umsFgE72ZoIZhiiw7M4ADxck1x6HIikVk\nzTci\r\n=m0fS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fff77e84c6bc718b3b2679f646a836f076b032c7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.101","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.5-renovate-non-major-fff77e84c6bc718b3b2679f646a836f076b032c7_1600602860438_0.5562893057232585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.5":{"name":"@balena/jellyfish-sync","version":"2.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.5","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab5866503a7596c4ef8b726cdd16bca09ce827ac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.5.tgz","fileCount":27,"integrity":"sha512-Idn+jgTrFDP5ah4LUuNM7mot8Jv5OedkAASJNiD8Iew4zbXq/xJA2t2b89dC/0Q6M3IDwed3NNjeglCWa2QwJA==","signatures":[{"sig":"MEQCIFaxomdelQ0lbpflL8yZ7Z2z7y9HkrX2BZGObal3hjucAiB2RNTMvtOWQTPPSU1uU2Y/+SmHjzKwMGKrm8VToHrKZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZ0OUCRA9TVsSAnZWagAAytMQAJG2TDCEu2YU5HyTuBwJ\nT9OsBmPuj5BtEPQE4KC9h2+TvS+uSkkVWA3g6QdPD95+pRRdZMC9At6ypHke\nHrhFdMkcg7KqhUpr1EXr15Kpfo8MYi0W0RonD2oIzlvQLV0szyTJMcDHyzBI\nBixFJWlydg60jY8w8CluDWFLBWbApUHdFy4OP2CPm2gGJwBUpraviclsTCKo\nNMphBp/xQaMu4tVXzyV+6LRBumVxbxf+S014hPZbABHz0R6lSmiiLW8S3zKg\n2vHOeWb8HwyQn5V9q5diYZk3lv8lxWCKYCXpXuCZEskz7hHprJtMR0l0Ib2g\nAHRmzaRPZ9i6GyGMFzhOKgV+LEE8dn/jhcHSmp7L/+l4Db25WE2lr+bUsCM8\neB18InsVTRlkkSxV3AyX3ipiisnr0sZ5Zno8IfjVNgYW9W5+emxV7wEKhhOQ\nZwfF0k2u4NLx9EVwFQjIYyCh3glGObHJ3K/3rWCFxGTpb7OqTf7FAfoT/Fxo\npZe56jbjgBgEszV8ZtQigvp2LzEVLLb24/+J5q5SWxQb44zBSvEeJB6UUU2s\n0ZDoCUEIFotL8WkJVvfrc2xKIq7sWdoKv4z7AJqlpeHQcU5tzmyO8za3y+Bg\nnddH+/jtUv1ZF6RCeqC3Hlia6Dd7R47h+1ZRB36xgaxTVO5bcDpzwWCDP2x6\nhW4D\r\n=lVxP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"66e2e4bf4ce6a70e5c99a481b9aaedf215594a40","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.101","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.5_1600603027926_0.9024877592694451","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.6-renovate-non-major-0aa68274e540bbba011b70981cff3660cf488a78":{"name":"@balena/jellyfish-sync","version":"2.0.6-renovate-non-major-0aa68274e540bbba011b70981cff3660cf488a78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.6-renovate-non-major-0aa68274e540bbba011b70981cff3660cf488a78","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f19473689f6e5afc3ba3ded4d540bd9195938072","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.6-renovate-non-major-0aa68274e540bbba011b70981cff3660cf488a78.tgz","fileCount":27,"integrity":"sha512-Q/6YBrggVayorow1bRQRTyKzoXtkPL3f7e3isgW7zgRzHPlzGOuqp/dtB/+M/1NtcyKqon0cRKxCq2kDE9rTlw==","signatures":[{"sig":"MEUCID9VLY8WLzEIdTF4iZasP4dsVVJZsQzXKzYAXnFiKbY8AiEAkmErWX44sWoK4es7sBogXNUkqpvPtd//hhsKXf7pXv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZ0v1CRA9TVsSAnZWagAAXQsP/il+6GohzdBarKqDQTau\n+XkMHjapJIjW9OtUcAg6Qz90BeTWYWlUZ4Em+ejYq3QQZkA+OtpEZmkqbYeC\n5OlkNamVKQ5DtTNNchxZTiSiSopeTzkkGIiuA25mY/qPFT9YHfw/br0EWt/8\nx+j+CNXl6KrIp/7wIvPQJ4XqhapQ7KTB/JT0KACTxDB+Gx3DOhgG/cwkdlRg\nEwNFBv36SyJj/dGff21dHOIA7BeIugShqyCMyCCu4Asoc9vVNEXBPD4ZFELl\n0ZELqg+G7Z2RDwVq9E44mb22F52xV3a1KP4MSlE0kRixKTlhKsSGnZCHsAp6\nkLQxRZu3ioXYKPJXviEn8mrjqJ4uAdHKEvp54Lp7bYg/PRexI1TW5RmFRank\nNdPr2akZZXP6uNu0aV4/63ZqZTnOMoKTvfTpf0BgeW7+6XtOzk02hPwi4Dy4\nnTGYxYNzKYdV3iFP96g7+oMXn7sFmoluyuQpKOLLtd8Dh+Z6T8x+qZ7wK5I1\nZaKgZLaTHd/bD/sqTzrJosFGkSfF8zOVbLFI4E0wnjmULyWIOYqwLSCQb54S\nfFH2NYOxSgv51oMVCeliqUB7beGEFH80xahIyg04s6gJK2fALALqN2tfzaOs\nQa4cU9WWelQho1O1VxvbbEh+HBFCzV2OHfV2gLAslqYeBhzZZati07/SPV5U\nWKUf\r\n=OsB7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0aa68274e540bbba011b70981cff3660cf488a78","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.6-renovate-non-major-0aa68274e540bbba011b70981cff3660cf488a78_1600605173201_0.16979530875499593","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.6":{"name":"@balena/jellyfish-sync","version":"2.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.6","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eea148f63802c31488df1f0b6a850f89217d1054","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.6.tgz","fileCount":27,"integrity":"sha512-n30CzMK3u1n8CGwd5cTnPJuqQH6r48u7p9x/tuoR7EVld21u8Hk7ZmsRIHIbsTBOCKCxFYXknrrSMzRPJAg33Q==","signatures":[{"sig":"MEUCIQCa0bhG22DaMMBSQ5LYsettjF/Hj99/RU33lzNToiT4hwIgVloB/zzmWrTwy2HMIU1rsJCq4uLtzww1gLlk+ICDZ7M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZ0yOCRA9TVsSAnZWagAAt1UQAI8Llq3S4lnAfPfIUyX+\nFUKLjCFv7ON45xcM/BziYqAOagJO+bHdpNoDgiHC8HM1LLnZS2tkhFzPKwDL\n+WDgzpeAh5P2KQRBFoGqnzjOGwSm7pgFa9gg/vJB7TOsGQbTwCi9Tqf/rss4\ni2WMx8XU+94HXGu2saN3EX5lyioGxttjwX5Iq+PK/Hup+WwZ93L3z4Fqf70d\nRh02yFIx+K7ekC1mKWYq3/esIus20V20YNqIjRws+h9tq51W2L8bAbBW90PK\nz3HAg/nP11nUQrY6ArcORF3CuRqhyFB5/hTAbEXxu1/m/oX/Ow2bdQDreUrN\ngrJNZtXrVfidMPkmnTTRq8Q6lt1gT3plUO/CEEECyA5Vcf0cyzcfzAIeafUr\n0J0ETCZdfq1jAUl3+0/CVBZ5Kn6suIl+5JLVNBd7bPfQrP+4Npi1iiH0BWfK\nkJYkTGyWx1Gzhz0HTl39/0kNQ+yalcM0pvZChiRfAWZEcFuyL8OVWwdAfv5V\ncfsnJM/DR0FQjex/SEs9gQUIctJiR3dCoFwM/q/4U/rv3ZDa9v4faaWcYKC8\nHb4cjB/UrY1CqrnKK65pZhRogwZxPiMffTMZ6+rZia1uI8IjFRCVbpO9Mq9t\nvv3K7MYLuGe5P7lunKB+vlrYPR/wNjshBPVTQmoYeoUCIoA58vqhoRkocW6w\nIePN\r\n=uO7K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3540d974cca0d91bdbc7108e951169a6e4fceabd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.6_1600605326293_0.09522106757597171","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.7-renovate-node-jose-2-x-31da0229742171a3d6199291f29ff80b31fff2df":{"name":"@balena/jellyfish-sync","version":"2.0.7-renovate-node-jose-2-x-31da0229742171a3d6199291f29ff80b31fff2df","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.7-renovate-node-jose-2-x-31da0229742171a3d6199291f29ff80b31fff2df","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"56586158059f51dd7d779c55185754b52fd40e22","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.7-renovate-node-jose-2-x-31da0229742171a3d6199291f29ff80b31fff2df.tgz","fileCount":27,"integrity":"sha512-s6YaM1QADOa1WpB2rpMiFBjkRbimi1AS1lYBELW8xGXDVerQr1sk5jybPbGl01xr3weDPPWwGB3n24WZmTephA==","signatures":[{"sig":"MEUCIQDwOB1S3njajubteDNMo3Z4CcOGEhCKLrjXg1B+PlbyfAIgDGm4fqUYuZj3bPj6075d95qpcRz6OTqM3fK1NcfHO8g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZ4TMCRA9TVsSAnZWagAAlHkP/3LgC50FPo7Cn8S++kux\nmy9OAAbgE/cUp31GW2YZXEBW0798Jv52csIiFEFBuYfzqwaBPB7JDk2NrXrY\nMpJlijgTD+b0gzP6yVQmRP6qyIEYQx1R97fNbwrLX6stzY57+qNgVkUO0K7w\nyXwNFus1NQxUXwCQvxKsT+WjmWhiHp/i6VNRn2wrcO8QEk3hd2FVafR5qSvp\nCwucepDc4QOpGwmlWxAk4VzBFWon2WzmFmELQMMGM4rMC98vNmBqR6Zc4xhk\nmjSAR5rnWcP4FbPPXetv/xyILgxK6AIM9DSHnk0ps3Su+Dqmut7+HmmC2b4o\nfZPRdSrjmDoWETnT5gM9WbQ+l4rUfb6e6dTXW9WZTKk8zE58zUxAh3OQxYmE\nKEswEBGgMAi/JZsBohNFSDM4jKrG82tX2xKhAM7Opf6zi7OiAopYCg/Gh05J\n/E8hS4zzbrS0H5YRkPjxE0NA4GxI/XudDFOmjzELPH1mElqonRpOm/StioIA\nsnFFOe+Gl3nx+GOjXnoL7sCkypCK1hD29Xn2ibnelQnWJC+EPyIL3F2D3T7U\nnCYgIPRux2fbObZJNTZibGMYdWaP9ssM6yhSmfgV1F9ggyYk5th8Mn4YeIBZ\nhExvzXIOFpY96tzHptPit/eo7/zDPKqFDKP2GtPhs2jMgt1LmkOsLrFV7137\n9BfH\r\n=qdr8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"31da0229742171a3d6199291f29ff80b31fff2df","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.7-renovate-node-jose-2-x-31da0229742171a3d6199291f29ff80b31fff2df_1600619724113_0.6176341867614066","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.0-user-feedback-name-3b5364443ef708f2943aceca6d6283d541d0f485":{"name":"@balena/jellyfish-sync","version":"3.0.0-user-feedback-name-3b5364443ef708f2943aceca6d6283d541d0f485","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.0-user-feedback-name-3b5364443ef708f2943aceca6d6283d541d0f485","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"64d613e7a8143757f97b4a438fdeb5339ad658ed","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.0-user-feedback-name-3b5364443ef708f2943aceca6d6283d541d0f485.tgz","fileCount":27,"integrity":"sha512-lFOHOuwCZqAUTLp+rHxAj3fFrkPRDp5zdqo+2wMA8EpflTv4f4Y3o+SMSpaZTEi/Mt90Rs0OnRCe6OIud6o8nA==","signatures":[{"sig":"MEYCIQD96aqx3/de1XFtJMTYOKSWqr0SHg0+zVdErNaOCqPt9wIhAPZR8dzpWqYJnvh1D/gclt8AhvJjoy53XiodBP0Y5xpT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfarJeCRA9TVsSAnZWagAAoLIQAIZytLnMEtreF18F5gxl\nC9oKOORUNSAp4Q69h5nZsSEArLDZrIEFW5B4gmIs2FfTzy6A5/SSoJsLujIs\nyjUXaLNDnt+G8kBQCjFFRs9H7GvE9iIiaG5YkaVLYTuQ4e6Kk7C8hA3Cd0XM\npAFCJeNi2VCyPhEo9XacbOVTbFFymG3X9g5EBBIvVm2zuaPefJFmClCDl1YZ\nAvRAqdHs9dE5RP7nxY71l8nI2Mf6aGObMv+3xXqWtlb3YjFH0HNvEImcJ3Px\nOPtqTy2T2B7RlY0sAd61FMK6OuIEKjnOucNNEz2uhFh3DjW12PAyfSLRIOd/\nPCocquLP52yU1lp+05LGuDdcDbMwufk1ko5Sl3b7bvaXStzbZxG1q2clYHqB\n7JdqHfnoK4Ab1oJ+1FrAapnFi+oeTJQ4nPfj4zpSVge18SgBIE5SPtLkUkbd\n06rPC9LfHxOqjD6Njf5gJRk2BuHV6E+luKK9m9ACUCL2DcedGTAi0ynHnT4F\n69WNjMrGLWwrnmaNKkzNjRPPsXgnNrN8a8Sl8aknqnlpBCCmPPDeUXRC0OG+\n2zyTx9c3tab80gS2jlk7MRSndh/ilXVByGMH0EjQHmqLkXr4ubRugm6ZlGxy\nXvyChynu+tfdV/bcH8epeQPSfNR2J6PvKTpWdMUxP/SQvq7e+DrGfYK+xOl2\nGAMQ\r\n=yr3V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3b5364443ef708f2943aceca6d6283d541d0f485","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.0-user-feedback-name-3b5364443ef708f2943aceca6d6283d541d0f485_1600827997381_0.6589253090016027","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.0-user-feedback-name-00f56102981cf23256d364c163120b8876c40a3b":{"name":"@balena/jellyfish-sync","version":"3.0.0-user-feedback-name-00f56102981cf23256d364c163120b8876c40a3b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.0-user-feedback-name-00f56102981cf23256d364c163120b8876c40a3b","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb5ac81d96e455618df16976b6aa998b1b7e3f25","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.0-user-feedback-name-00f56102981cf23256d364c163120b8876c40a3b.tgz","fileCount":27,"integrity":"sha512-ta9XCKXQHDkEJ7c4uHIIMyNVqBTyknB4LNzTNa078dAF5tCjypkwzu/IbzM1VHhlyMLY2Ci6Cvh9mdXTpy+ACw==","signatures":[{"sig":"MEQCICzL5dNNbHCHCO95/Uc4ZoOobXzUcAxqQWjgRj2dRpwLAiAUvr/pStZFdi7QYDtASnWrrJeHaYDHn2dEkX1E/IFPxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfarPBCRA9TVsSAnZWagAAg/IP/0zBfAq/vX68wvP85kKr\nhVw/jljK31spaaSnT/Dm8S8Lb3ojn6FTzNoFJgZarHMxBneXqYnSr9jjfSu5\nymYw/G1iq1uMTKOUORBGKfQpPUCpTUuQ/4rv/gskgB44GE3kFiGtfsmpNFpQ\nj+VNsTMdMeRn5NWSplsGdXqcrLMoLO2gxpDbs63PQByoHrtY2zcPi+OICVPJ\n1iybhK9YrGcNFhPOiPMcNma7g7HC15QaPeOkDHpYHsG5Se18DrJsZBrF+KZz\niCAiHRUJMSufsOCIkd4OZGr0PK5XxinPVgeqpoRitlvNH3BOPBKJItjLWpgs\nrRFCu5yfUspmOmXAYFHYdQkKsBBtaADWVsIS6FrH0tpVyuHlzT/BdD+Nn4MD\n1EXqPnzSoAa900+iME5jHscd9Y79hrXWCo5CKYQyVHpk7qEDAWFv5J4HApmL\ndcUpAJzNXWssXxE/rcxGiPini8ahrawvIPf43FN5dKxmJ3fC9oQ/C0hrgqle\nJoX4QT+wTad+UrUTsPEb0PNdLh5YZVhmqC4631iKfa6iThv1bnzyL4efYgHd\nlPKLWq43AldQyhgrKzu9gB31GiZgSaozcH91Qsr2IG4h4mNu1Z6i4+HwlDVh\nphmhOd/w9L/fWheoqcrJgk2ueygRPjOFJbdqqnbviQ0YbKPmAzjBe0X8vwkh\nmrdD\r\n=XwTj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"00f56102981cf23256d364c163120b8876c40a3b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^1.1.4","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.0-user-feedback-name-00f56102981cf23256d364c163120b8876c40a3b_1600828353391_0.6480204810422356","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.7":{"name":"@balena/jellyfish-sync","version":"2.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6fa477125cfcdaa1a868dd32c02361117cae0c99","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.7.tgz","fileCount":27,"integrity":"sha512-8PBwa6zTmC256fQFRzILGZCC5Xe8X+zKaPjMCyqlIx26uf1Xj7ErPct7K9JvetUfdIaJuoYO4vQ0gUyPHeG/1g==","signatures":[{"sig":"MEUCIBdxV3qFE+TtLNyRVUAoLONBL3GKzqrgxa0EhSpFFDOYAiEA1y8gvkGn+jFhV/RMaF4fcjV4aeHwyQwBv39xyKr24iI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbA1zCRA9TVsSAnZWagAAF0gP+QCPd7hJtqJE50JbbQnj\nwS8cprHFQFF3aG99wSqEMIiVwVEBAiZ77lkt22TynpB3jcpsGiK7tcNstsZZ\nsQBcJWA8iSC5idoTr9FGYAfHiBDlOAGtAiyuF2uwxWbB153+tdI+8YGyL/Qs\nbvBdEdvjRwl1YSnshEWZJtF78U36J13UrCriKvdIKIK6xS71nJO+ifIWVv7U\nY6JC4u+/jcCKA55WTxzUn4ENRiRrhvrIYnNNknP7uKfJCbpA98tnwr4kleUp\nmvcr238ELKR/T9rdEiaquTOO6dfig0Raj+1P2uRyNm/ZM7w+oWlxqcWX3UhU\nuGxHAuDhJGeRcI67fq++hwIfMaOFoWr9dupoxOevIb0gcDnY5ZJaJAiJy3gf\nz9cDmKehmlVSgUUxHQ79tV85dPj+CzLWspqb63UnzUli0vHDjshMK9J9yMcO\nkD/topUDHXnoGX0AcHHX05EdKpi3OMZSQb4+EhVL7MYXRrIp11qiuo1BgukM\nGZPieMMoiRAK9AYPLc/P60pjajDEGL3mwhVtliTp745PlXk+DGq2VvwpQgV1\nse4BJnFXscw/zG92Wf8lsrITu13AQ3rnZSRd/ElCblSFC0RPXDNSGtWErgqS\nkjPXTvditDvCMz0ddUDqXQG1r65X+tQSA/sguz79kdRFrGRcIK//Op8CK539\ngjxl\r\n=Dqr+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c6f4e90a0a19793505ad4a1bebd6c2ba45e589e5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.7_1600916850623_0.34520787281606236","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.0-user-feedback-name-552510af78e82fd96cbf269d810320e6aad7082f":{"name":"@balena/jellyfish-sync","version":"3.0.0-user-feedback-name-552510af78e82fd96cbf269d810320e6aad7082f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.0-user-feedback-name-552510af78e82fd96cbf269d810320e6aad7082f","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eb64a8b91503750e682105d1f7467ab3004deba5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.0-user-feedback-name-552510af78e82fd96cbf269d810320e6aad7082f.tgz","fileCount":27,"integrity":"sha512-YJz/gZeUtzssSCjnUuNAakyZCoU7fcqovnIwJDVCgbkcAP1vAWCeJeBJVEorhVVACJMttYDsoWJ4Df43DSXckg==","signatures":[{"sig":"MEQCIBKbLTdpopmcg3XJ2POHzTwsH6Tw51DnHOcfzBqoarlUAiBPkwxTXpxgH/ieB+4JZ9Oqw/Is5LvlQi5h0D8KgKZkSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbacOCRA9TVsSAnZWagAAayMP/3FS0IX3AYc7CXVlIpWw\nnApZnVVjWr9xGdaja3PRtzaQzbkJNfiHCTkgUJbHUc7oGrYxHx+gASv5OkDq\nmHRHUClnJfrJChVhCUetVhPYKEweLk/nVxfBnwF2mnduU+pKWOJRE0Ol0BJX\nQnBlpQXBY2qlTFsQyarbkS7tFWd9SM9tyNzZbOdWkv2kkBOFJaH6pWf73+cF\nEOFGe9tKPqq0+v9WoWA85jUEvv4x2pDAzm4XNyyS0MW/2hWKA4/Dd4iNaVve\nN4x3ZajpV7q22BsQ/MC2dKyWDLEllshgCtOYofX+GzJeu/1tw/yWhDSrMkjo\nniZEcQaoXfSzuYOFxs/Q19TIWlAObcn4bIfUo+zpY5xygFL142WgKsuKyOtC\nJx1GRVVdJ/Nao8LryyOgirvzPjetZ5ajIwWxKZJjz6yVGlMl7wwTKMKzJvJ3\neVl4THMHpYmN+eetxLioEkFeO5in019tCF4N64wYx7+eK9X5LhkyySHhykyl\n3YnFkUXbn/f9EZidWbNvYxKn8JeObGev+l8bP+V1ZLtz5mWB+i3kiuRXj5io\n+ixFj8StvvjUEtgJDb/xS/rkdyOoBlQBx9ISy31T/5aHeLTRcvy+cPXCfowp\n2fi9YhOOriMR9Bx40KQKfyo+184iyLhQkHgR7GTOHatBa/fuqVloOdt804rf\nYQNL\r\n=C3gP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"552510af78e82fd96cbf269d810320e6aad7082f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.1","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.0-user-feedback-name-552510af78e82fd96cbf269d810320e6aad7082f_1601021709524_0.9353799484325909","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.8-renovate-non-major-ff92fbcccc8b1c5257f1759b8e204d5da895c658":{"name":"@balena/jellyfish-sync","version":"2.0.8-renovate-non-major-ff92fbcccc8b1c5257f1759b8e204d5da895c658","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.8-renovate-non-major-ff92fbcccc8b1c5257f1759b8e204d5da895c658","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4380956151ffbd5e03c4b7e71b609128f617239f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.8-renovate-non-major-ff92fbcccc8b1c5257f1759b8e204d5da895c658.tgz","fileCount":27,"integrity":"sha512-a2/QtQUocz/nALtBVXA4HnUOjvztB3eAph/nFwgkqUYd0PTYokRvkZlyiNbBUiEsmiw7eveFnbNQsAq2DwXijg==","signatures":[{"sig":"MEUCIQCMOm1wa8S2bJroO6M2civ86BJDjkb8QNddFvJaztuq0wIgPiRqBpfM2wbeRoad9QAU/Mc9pmwanxaPUqB7IOVxp1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdrNCRA9TVsSAnZWagAAo2EP/iK9DtzfiRd8wIQeYdXA\n3N/5AwYVqF9B23WO6ENPJS0CPMoKP+46zoX9DEWUg3gGzuOcevtGoEdlWY9E\n9tjU18B7oT1fexzjDeQukOUBzEJv9uu9Bu78beFjwP3BIqZ/QcdgoZP9cxog\nWzsyaM30nC64ixaYLcsxe5SklIIpNVUix4YauaZEkgkv/HShQn6ylcIuEbNv\n1s3nz1U+io0VThunZ+Qor2hKvwxWHhVpiMIO9goME8QFURKFK2Sekxe7TdgS\nKAwCVByhNdFm/GRC0U6GqhH9ZqvQEdeiHJ1gKZECv60FUnurSdQu1Afn+cXe\nPT/RjRfLSmIBcw9tJCezC+PVjDLM3EH6RAnnVx1sbxdB2FrxvANghOWcDtTF\nQr6dsolcBl9L5bF+/7nLXoQebK+J88mlHlJ5LjzV5/wWXa1n3ekYxnSVmpdg\nT5vGfCAIzZ8dunJGI7Zp4itSQdQgvsX82gxVScS8GUoOUBQgLzAARmP1wpys\nfyOS2IQGFcdORiFTpBXcWq2SuIuEWNbjDoMDdlHaYnKOKBHc60MycZbJIWBH\nw/tFpNhHkDJ0Ig4PaCTJBLYb8FeaiC/Y5dFEnu1bdbWElZVAQTPl4IzOwPS7\naQssfOW8hAn1MOIiPMGyIenmh5gdKSqRB8Glkm9ZI/1/ESvaEliwjKegWdqP\nNEF0\r\n=g+G2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff92fbcccc8b1c5257f1759b8e204d5da895c658","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.8-renovate-non-major-ff92fbcccc8b1c5257f1759b8e204d5da895c658_1601034957035_0.7086848584723007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.8":{"name":"@balena/jellyfish-sync","version":"2.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.8","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a61226366c4d1c0e625b827a00384fcfd5d41874","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.8.tgz","fileCount":27,"integrity":"sha512-en2goTqQy+BMM7fakOR3RjOP+awYjUpE669ldO4h3B/Vk40nm9I31Kuh9MKvR0Yb0fkj+n+hmOTEdSYV0Muhig==","signatures":[{"sig":"MEQCIC71JmbqfjvHCmEpj3Lk4I5MJXsWErXt2ix9FmwyyuKTAiAeqENm29hpda3kUJe4f7/GCu0uhQBLSUh4CEo687ltNw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdw1CRA9TVsSAnZWagAA58IP/AwFzpXHaGUH6R5pmVk8\nB3082errsUvceUVKUAQxv21VmhwidwJWYtl5bwhqBU+jVo+Xk/zCxlHkj+Sj\nzL2bb9ib40Nmlf4FLWVnykCbjFfTIuDeicI1ZxFjc74w5Ri6HTf1DnFF/l6p\nvivyGYQOP4hXJKVdQumv9uvZL+GeZbvTlXK84th6NYWaF/199+LUfe6NTv3y\nPudLDK0V2jhLP2Cn0einIEtcBpaCLHsi/cO4/u4+0bZgbLOXeUnxB4LP9mLt\nFIyLtdNuXniRtVbYqxcT7gJgoq6DvC5V/I1IzQ2LUjASCZkNkQX0kiAqxrFD\nXMHHP0zGxe7QUh4fLaVq1nBLL8eBOSwoz13Ql883ukbt0nLehMxRmx8bqumR\n+wJM4y0l8DEGis6EmXSWRWimXN8HdQIE6sXjEbmHqK8aSSvLxcISEJHPVTCC\nVfzA5NJuFUv7wfek9uacLdtd8OyH5Et9UCMpeeK+7c+oVkf8ZRceTGueqWRy\nO5CnxgDiJNqx/akaarI8KdJIGVscCYmpUV2AnW3YYdKuajw3bxq+R+SYbPhp\nbR9TP6n34G8hKAFS8jVFJbBtw3SWYYNL+/n+f40YqeWInZuxgvaMFsbGleXg\nAYp9+zV+2g1hbsGmc0+FbmLWL2TVH+3H8t4XiVx1FVVjSMcTa6XJEzwPwKX+\nxTpR\r\n=hgJ2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f4d5d1387bdaa9fc5c8736b4b91691fe6c32898d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.8_1601035317385_0.8543014915077733","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.8-renovate-non-major-a92cf5510a25b23efca665b0234bffc1b2ce4dd6":{"name":"@balena/jellyfish-sync","version":"2.0.8-renovate-non-major-a92cf5510a25b23efca665b0234bffc1b2ce4dd6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.8-renovate-non-major-a92cf5510a25b23efca665b0234bffc1b2ce4dd6","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2dd5665121829c47d3df01f45fb4a140f4f344f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.8-renovate-non-major-a92cf5510a25b23efca665b0234bffc1b2ce4dd6.tgz","fileCount":27,"integrity":"sha512-4NnkPJcSMeWqDpmQc6EtTmYCcnM2yb78VG1ItGqGZTy2IqkadYWYKKfokmFTdxXMg8IUgeS3tnZR/Dr+aL2hdQ==","signatures":[{"sig":"MEYCIQD29xrqa2D65cVaQ4/SbtHUae2oxt4aRUGe3brVc+93nwIhAIPfteZg8iiVOX3ok2UsLkPLY8Vx/DFC6i0AhdDrwkpG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbdyUCRA9TVsSAnZWagAA0EwQAISmE1KiDqY1sMqD/gki\n0VRUTtNLqt94MnMonp66vIyvHHWaNjHyS6o0M8nvgkss2BQp1PGT6wvM81Vp\ncRy6AWu83VErv3i8vC5rXkAa+7OiKzltVrsMxMpOlX5nL72JO2ZIvTGag7TW\nsUt0x9LWFTrai66v4PZyjGrag7bhpvLjm4sx/Py36IiY642ZD2pM7hwTfwBN\nRU7xfeQwF/QYvmXtW31a90XMaP9IAEhMVa5UcvdFrXh8ecR0bI7FNJhLJ+2X\nnUf9+SMmwwpfr3jj0lK9FNWfWM71ZHP/gpp7KfBNOj8jWJ515vkCrhlRf6Dc\nCqpR25r3a7cnOuNBX7jPQbBv9HJ4UaDnzR/g6AKv+XjQcTb4vzfNpjQsAWc9\noji/89JSDeZ2Udqumoy0dvExgNU/rAiL+nb/7ntmx+3YB3y2eDGYcsAaB5dZ\no1mJmEPQdQYv/lT3rDt0W2ZUOaXVX0Ik3Qd/DH1TKzegO5Fz9HAkebqxZax6\n648qs2frT20Sel1YyWE+dD5gCR12ftWNvpO8Yt9GJ2eV4DO98PWetpymbn7l\nUkKRi0axH96ytxG7NNqyFPSRU/LZz/FkbGOGJvFnE0Ui7d20O2skEBMkuXjE\nB2lPUtz/G/5OQhijONG+/6+1R/NiH44fbKC3ryAHrwzTG1P2dGZNeI02BI+V\nztt5\r\n=CGQ8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a92cf5510a25b23efca665b0234bffc1b2ce4dd6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.8-renovate-non-major-a92cf5510a25b23efca665b0234bffc1b2ce4dd6_1601035412136_0.18134761547114953","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.9-renovate-non-major-af4f90e8b10644c8fddd0a4a5871528ffa43fc65":{"name":"@balena/jellyfish-sync","version":"2.0.9-renovate-non-major-af4f90e8b10644c8fddd0a4a5871528ffa43fc65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.9-renovate-non-major-af4f90e8b10644c8fddd0a4a5871528ffa43fc65","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b476a3b585f333fbf9ff2e667e5927eab1162de","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.9-renovate-non-major-af4f90e8b10644c8fddd0a4a5871528ffa43fc65.tgz","fileCount":27,"integrity":"sha512-OJ8M3I+xFYTIJMQy4KYuI6MdNlDoh2FhofvmJfeyxo/fxO0NPYAZZMX3pTcO+4kK2n6lF9tAPS+9JGuq9h4CBA==","signatures":[{"sig":"MEQCICZQ5J1Ewphp5S7L6yRXQNXV+qkfkLL+D/sDsJuRWqQ8AiApZxRiIulxwq4sQKXjOKs5L1XaP+88Mv1EYJWOCVlIZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbd2MCRA9TVsSAnZWagAAwmgQAIelziCIfIcRiwugM4Ze\nkAoq3Xy3O3laqA4cpuhUUzMThhZrHntObyQgx+MijwA6tOdttV8rcGh4yfJr\njQhJX1/tjGu4opa2GFlf5IyMiB0ZdsaTZGsHS8Hc78oYEGycUsnJL4oRJEFt\nFK2Mt1MR1awtimTfg0HFZWRfU7ESaLFzmoeSDueLaUm3UiOiJFDDW5MOr8GY\nPYWRcDnMRBhIazbLFozQ+1MPVD3WR2k0llFuQKyM3h5teVdYYjip8aKd3HtA\ndePdE3yiuGbiHwWwDG8bREMjv6u+SfN+9uDjUkmHNl0Ekm8uSmEZwDFZqj+W\n6bKWmt4CTdrs7wY2KUcxSN7fjqpH29AWDrMW2hXAA3UX2xS+dX5GgZiruqqT\nyGz7suPEcvegwHIzQGIYjOCiI93wD90zb2+s0GfAK6x+DeNMSa2raCPZG7WR\nYaskhRX26+BHSdr9a+0nGKq+3PLN3OQBaWF8zO17PZ3SZ5IQIoThHaeYxHpN\nWUCh4tayjmrLsXsqfPEj0Gp7QRNKY4nlDZYlILZVBV9WNqThdNVur4N8Sa0j\n6UAtTbiUB82KC3PkZLgHh6OPZ7oI3V/G5HCC0Ip/k8OtNF+1H1VKQ+KHJsgS\nNq3WUnwxe/1x5ZdzRMh3Tmtw6TUKfwJQ/86bPt/PCdwcR5DWjssXnzgk5BFG\n3x7b\r\n=avb6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"af4f90e8b10644c8fddd0a4a5871528ffa43fc65","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.102","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.9-renovate-non-major-af4f90e8b10644c8fddd0a4a5871528ffa43fc65_1601035659452_0.21469273114320764","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.9-renovate-non-major-f4e3a1b8d90b4a2b7d48cc35da49884854c21a81":{"name":"@balena/jellyfish-sync","version":"2.0.9-renovate-non-major-f4e3a1b8d90b4a2b7d48cc35da49884854c21a81","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.9-renovate-non-major-f4e3a1b8d90b4a2b7d48cc35da49884854c21a81","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0a554d6a4a4beb5485fda3997959954736c12ca6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.9-renovate-non-major-f4e3a1b8d90b4a2b7d48cc35da49884854c21a81.tgz","fileCount":27,"integrity":"sha512-KpNKgcB5VthHuKN6zJubAKzaE80K5/SZ/FTmyrL7gkN17Koxhae4JlxV6KCMCuryuCf/ArQ5Dp4qg63gs6hRTQ==","signatures":[{"sig":"MEQCIAQhnN/RuakFcrtx4I7x5+eyxnooc0yJYhVcQnrDbsIUAiBArbXiV39NCQu5HE1LjbIsv71pnRjig9gTOiR24sbsLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbd6rCRA9TVsSAnZWagAA0SoP/iPiTV9xgE0sXBrmgZ0l\n9dxdGm8/YKgFm76n/28uN1GixyMbdEZ+eMWtBcpqhTevm0i1ZGhhnQhiv1aK\nYo+pTwCMM2RH9eBBWVal1kKnQMwEl3/qkANRTgJLZXizhoDE0rqQ+BHDaCzQ\nrVPc8Nc723ZxtdgosdhCQgzVMknc56W0Ng3DocD8NBdm7q2iryeP66r09PqP\nxL94Zyf6t5qSDSUIPJocHerr6C1CJGLbQsmcS6Tg9+YtO8rXBhMA3q3pHfRn\nHbT0ZEGXSLZWH2YsYcddYVSszGiBPjmF4MOng1AwEl+KK5Fo/mHc9Z7UocHA\ntDVwNSXB7g2WQ6K+/WsaPDkbPit6DsbjBx2XSycT155dldgOJemLPhaGpuWG\nMaO12C3jGXBtC45qKNMlBUTvy1j/Tuvgql7imLZKQovILQvMD21iGnrN+2KT\nSugTNhae6xxFSndJtDlaJ4Ls2vQ+vut+z8JIdqQohAXTGes4gfL3fE+LdD+6\ns9KzSlBxQdew5UXhTeXMNiduwZ+MJgAtHJP4yd5KoGEM99Q3Icen2llmxWc/\n/J/VuF5UwYIpKNkLJUL2HC7PrUerzyM4S6Hx+LfYbqLDFLxROqMYo/bfSl4H\nL+Y7H+Ursvz6bNIPW54sOXAU8U08kz4pW82T0n57YI4A8Tfd3knoGyXa08Yg\nLiAP\r\n=xeSz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f4e3a1b8d90b4a2b7d48cc35da49884854c21a81","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.103","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.9-renovate-non-major-f4e3a1b8d90b4a2b7d48cc35da49884854c21a81_1601035947163_0.7862188821683038","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.9":{"name":"@balena/jellyfish-sync","version":"2.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.9","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a3cf735cfe75775d732a156f228cbbf6473bd59","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.9.tgz","fileCount":27,"integrity":"sha512-muC2LAxM7FMAwqnMA8E9N7WKIpbpULPg3rfOpyAIYrUa7nyU6kYlrYB9mtl3JoEpK/wesDYQKWEtBZalM5cEmA==","signatures":[{"sig":"MEQCIAwkFGzDVcjOhUcnRk7WbKxyPWE5Ip5CjeP/YAkWQGB0AiBGZ1YvR6niVjK0txGACM+IKyGN9p/d/rv93tj5T9JPhw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbd9YCRA9TVsSAnZWagAAA4kQAIkwujtWLBLso77ucvZG\nbr/yN8bbl5lcoIJSRO+5hF3AEFL1IhdQm2Npb990RyP71XxKob5BiARoFUG7\njsqqIamG0TbMDEUnGy6rXc8D/X6Y72rxZTyYPAVcWO9VlvyhK2JPN2h0+vA7\nDsa5JuvmmZMyJLS5DtuTqLXhPGmxrF98B7lASoTF0JYKTKTZA2MuOdNkUS2I\nD8BmCHNyiSZuxhK8hCSg/qoloUYjhyq3YlC785I5/jeLvUa2OKbTLNNvBZnx\n9hHtfff3TC/phZRsZuu0UAgZggk2L6VYHJrUXV7yms7PHktIUUtv/jEB7J2y\n13EsRXufFd4F6saN/icH4pTnU+ho22Y12g8x+6TISq7TgXgPIiGVW5XQGyal\niWeFeViy7s0vr5OzR3tCaz+UyhwU/BQyY3ZzGr7X+Vb0tMyhtkpbAhenPHmC\nr/fnbtrUgp1zz6Yzduf7nF8cXvOXrreD6sz7qlSz0kgBY7SUJ99591GAewSq\nnVhLm8Fcd+VhjQDraXJSd0Q8jxbtZULqHvlToZKQevwsCFrjOeOKXuqcYODh\nTe1+6i7dRC0JK4KBIpn1nTSNBkyf0JvdP/MhCJ7YAOkodzJLHCwytg8YJefi\n7zHRDNHLAw20ionOtpaiTy7IWqjKKXfIwblPms2vfz+jWf4O3oW41BtsZOUf\nOB7Y\r\n=VlwN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bc9bc5fa80cb14519120dc41c064a509b90049d6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.103","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.9_1601036119987_0.4012444826066308","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.10-renovate-non-major-98e8f910cc09c933cc435384d73f1aa5f8b30eab":{"name":"@balena/jellyfish-sync","version":"2.0.10-renovate-non-major-98e8f910cc09c933cc435384d73f1aa5f8b30eab","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.10-renovate-non-major-98e8f910cc09c933cc435384d73f1aa5f8b30eab","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea8bf9a59cd704049a08d19a685db236199ca5ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.10-renovate-non-major-98e8f910cc09c933cc435384d73f1aa5f8b30eab.tgz","fileCount":27,"integrity":"sha512-E3k/1InNgrc6U7KM8H2aFtUAlP+kv8QnFFRJJ03Jxsf6c/xXBul8kjeTRdXzWqtWg05g9PwWHvkGWkz/GblkGw==","signatures":[{"sig":"MEUCIQCRwzss/HKSWxP4gVSvsKuN3yUWrMJI2iuY99L2aK6R+QIgdcdHrN35FzA4fNINFxUI4W7076zpC1eJvj79YDTUdVA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfHfCRA9TVsSAnZWagAAB98P/00d3hS4tXEfjBf33dfD\ntEGgU0GFx0Si0b6ZdgqIZPMEASHywmCHn/7qN04FwAOvF/0R/Ls4NMcCyeuu\n6jkvsu5hSJzjB6kLR04JPDDdyW6NlKroVdILqkzyarxXW5/FMthqIxQN7cfI\nMjCyonDIsZ+tpTCVmSXU+MccWXdRRyrxzHT/96UNVemXYc48YfRBvPPM5kdB\nt+TW+RxsG+aY9xeOuwVcfHVEiG2ZAOW/Q3+NJeonIjRP49v+Lq1C3qOiYE5i\nyZcV/D8VdRpWg3s8OGO6zJGpGbTbNaF3qMHVH0KqopVGVM+AiWQGj/HnwYID\nY56BLvzcl53rGVX4lQWt2xQ8rEvRyT1mPLLyPJvIWa/CgfY4R1XKmut++23Q\nyptgRI5k4csTpIL9mS6WwAQJykIVYC8UOizYKN3/dDw60sNtbTdOI8xgg1C3\n4rlSaCPxWwT7BnMUJtv0wQJMLqImq6OjYdoZL0n4s+69MFD+L758w058U9Sv\ng/lE6EbiLyfHbDZMSMhCQbRDrI+RycBltA/XoSL1ZI+yH6GQx/JG2eWR9v4E\nXOL4uld06BpqdHcMs/z34RDsD3Jbb4Pu6h+woZDgLVo/V6YHikw3QLz1t2qN\nc5D2AGfhmOW0QpyK9RTaSSQEw5c4Ydf/m+CpNGKWKeK8W7JPT9PncBgpt6ib\nPTo/\r\n=z6BX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"98e8f910cc09c933cc435384d73f1aa5f8b30eab","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.10-renovate-non-major-98e8f910cc09c933cc435384d73f1aa5f8b30eab_1601040862425_0.8989521541442245","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"2.0.10":{"name":"@balena/jellyfish-sync","version":"2.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@2.0.10","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"64a641f8ca6b9c65c492e1f66e850a3e4429e13c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-2.0.10.tgz","fileCount":27,"integrity":"sha512-0MrEAKDrOVQho3yfN0PdPQkyppcTcy99wmeeDTxoMZM8T3r+zC8jU278i7pnVrlMWJ6AfI3UYgo7vVf/llVCPw==","signatures":[{"sig":"MEQCICIj5mUgma78Xjj73aQzOqflXdCmX9/k0Gm09nBa7okaAiAc/1K2GvtOBIwbTIUtlBGLAD6ad+U6M6bCH6H1rR5rxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":256887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfKMCRA9TVsSAnZWagAAafsP/iKAEx9LgWzf3SqU7nyk\nH6JtzqEoI7gLjAYCDf4zWybkqMUhC5NAk2Kty3XsdeAhEu96VAa7VxQuGBiv\n15ydSAdcWNHHVB85T7IqfPe7PLfm6oB7mzCwUK5FdGMqNnnJSHZK20icSAyU\nrgLbxn9mAVqST5m6P6iVtK2vPW4YWRWbzuBKzgVMOrEudHyLMGmPn7P65hCk\nsxTTTFt7S/bt8t71tv5G//RccqyqUCppQjw3z0VWiEDzsoefB3GSSaWNeUL2\n9XvwjKYG/0YaNuyPdqnLSdyNEf13YKlVIRUlvvLg7JFeB8nFAYR9GH5hVkiT\nrhkZ88yfm97b2Ty2nA+8Cy4/F1rv1Z8te2tl23omVojggBypXIGiI2Vhvugy\nUeaLrA52nDTHUfK8dlX52nTb/bh064d3NIbjIZnFKQ+MXgisiYVtK/E8F32Z\n+EoTpPnlaJJiKmn7HpA1PzqnDAakbfcE90FPgyH56egvmN95bPPjVLHPjU/f\nR46ffiUuJLAW46bjsdgBUE2acEg0JIZVQVh3oaMCw4+0dC3BZkcKcaL2hAze\n2HtRJ1t8Adq2sQpb8QtcCwNtvlWpibzpdV9VMXfHJbmujlVlBC1b90T7XUwI\njAzwmhSAYzGV/4rsJZm5HY/2NoziH6BeVkmEg4BUoFmDFzZI9pjHiyMFNrSD\nHbx+\r\n=PI73\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"043b7fb36593672ad88772cbc08908a68b34fb15","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_2.0.10_1601041035742_0.23036208649623036","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.0-user-feedback-name-8425f510586e6a92fa86f88d0e0844be99887f12":{"name":"@balena/jellyfish-sync","version":"3.0.0-user-feedback-name-8425f510586e6a92fa86f88d0e0844be99887f12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.0-user-feedback-name-8425f510586e6a92fa86f88d0e0844be99887f12","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"365429b6409e0517f9a64553d083c3d854d844c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.0-user-feedback-name-8425f510586e6a92fa86f88d0e0844be99887f12.tgz","fileCount":27,"integrity":"sha512-rh0DcY8oWY9kt+KRaOs+X0wFWmSatBd+CcgKWDFhdmCv0bpI774i82VHi7VzHGGxDrpuYvjgVoWaFLXvc08EWg==","signatures":[{"sig":"MEYCIQDqkDG8mmAEcB383tpzAKwMfoXl9ZeUgjJRojHL2x0SFgIhAMdrRCzXYWVW4jVsWzoG6K/Vf7leKVSBjMUTUI3H+oHR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbfxdCRA9TVsSAnZWagAAZwAP/2shoxAv3OJ4hlwMlUUy\nxI7+CSB1FsKymk5yiMWDfAIIKQLyubLlAR5VKRFhpA/4lKkzmEkTrEJo6WKE\n0GJP2GLyqNH7ZLI0unn1qGxdYUmU0S2NjKCcOSr9QTY0m8bcIUDmoYjiSM0m\nGdyJjOpV9I30x65veAvoj1Zh/bJ3iU+iEjU7amPe2cuJ28taRfdo3ZGtDXsh\n+r2z4nLhSb5rkwm8a/sXuBJsFwjVnZqvSMG+qYbWDxKzoWfPj3pdFW6h/QcA\nyFnSrJ1L15HvjROPsHzSrt3HqKn5ATG35MMBPVzcblZw3pjjBqJLGHOJN/OI\nCehEu6Z5BN+5XrHXhfMhk311ox7Jy93TOfIOCFtA6vMpxh8rSwSYgShYRVQj\nWv9ngqntkxLpdXuNNWIBtiVrcbA1onIzlxOX8O7nl0Ky+QQGvg1kVXm9LKJ9\n0beHrmjaEcOjPJySzz8UoZWrLosA4OJJpbi0UlHSioHpt4L75E3nRZcoEnMB\nEgD8nXxfa8429SrRzbtUl1QOSSKvBbBBSEhZ7va/vBhHuYCKDcotQaWz7wHN\ne2ThA6fOr/7bpdXyGCjpNXb8G7OC/vzMW9Hn5t6G76RtukTrHhw73eifSZRq\nZrZjl5ztx2vHclGoWUxrySyNMIxzf7jz7TwRZC2viCTHOe7FdlafPTCpO54J\nCd+f\r\n=Bc/h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8425f510586e6a92fa86f88d0e0844be99887f12","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.0-user-feedback-name-8425f510586e6a92fa86f88d0e0844be99887f12_1601043549007_0.7124338445040086","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.0":{"name":"@balena/jellyfish-sync","version":"3.0.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.0","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"839fcdac08c026e201356a6c655b20e5b312690d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.0.tgz","fileCount":27,"integrity":"sha512-d+gXlXp1STb+ydWIPU8cAJOWSzKp80CXflz83W6zLgcfRMiZ33WlSA8J7PIUzRS5HjMPK0dFAVSpowJaV485AQ==","signatures":[{"sig":"MEYCIQC7w3xrfKeGJVP1/IqJFjDelKFxNXRSJxq4JqfAU+IVrQIhAIPkL1lbR+1409NTnV/iU34NMh6CObnMyMJXmYnKSU5X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257019,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbf+CCRA9TVsSAnZWagAA8z4P/Rn23D5D/lF1tqMJRdua\niThLpDGvGi7nnnOxAZ45o7U6yZbbbjyDZaZJ/gZPlaGcI24Fui2gDt9yoUgt\nt4Df4WnEo1NJoNEF6PyCVSeyAeO8tDDXGCwkHK3SUvH41pAtrVOhuWmy5NGC\nYnmcT9gHqAOzhi9sKrD7q982xh6xTleHjYQNLKo6ygRjBa8euhagH21g+2cR\nXRUDYshsCZxb11/sBZO6j25iLIr3esvntLsTssQl59J/AHSlxjmUMbVw9ejU\nH1wCFt2kCSFgmvw1WmPIN5c8uaiH631o6t+8cmF0Vw9s/LSJd/qimetVNRJa\nSR0QThKS3Mmkl+eEcqfcEXPsyPCL6Q/3m/cXSpj0i44Bx4F0SOaUoHiHM6Ad\nGr+FPAEe0kjTV2WVnUBF1ZYqS14LEVntaO6KiB4PQsrBjasXbaH1mdlvb4X7\nWtF6OEpCGXHApp1A6O4723MkG8EXV/E+LdNmBmDTb7ekI1FKjYjAlr4UqBqT\nni6phC+8qrgXsMhBTq2jD2O/H7dE4CVrNckljNUU3Wdt5ILmV8qnpNmpHZ6w\nNMAaVZs3iuB9YX3rgQna3ouYfp9Ok+qAJQ93e9LimPcMJ6NaperJ78iMDkDD\nDXWGdAlnKVRJa4e6BFSdPRN7I/pMjBZakNpicGkktayCPpbyLjhm9/m69Hac\nBEIo\r\n=zhdY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0c3798f094f2370eae60ffe0addc5171ba0e5592","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.28"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.9.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.0_1601044353912_0.4904217089630105","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.1-renovate-non-major-c120dd081091daa31ac9502b0184e45335c3e092":{"name":"@balena/jellyfish-sync","version":"3.0.1-renovate-non-major-c120dd081091daa31ac9502b0184e45335c3e092","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.1-renovate-non-major-c120dd081091daa31ac9502b0184e45335c3e092","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d5fd37e0dc400c7e9090d2b4b5608813cda9375","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.1-renovate-non-major-c120dd081091daa31ac9502b0184e45335c3e092.tgz","fileCount":27,"integrity":"sha512-7aiAFMzr1MvZgxg8NwczrS5XQE7OVYXzQprBDmgVX+SlMbdsaoo9qPu7FGb3oWSlgCKWGx6V7Cno2s4IbYHUCw==","signatures":[{"sig":"MEUCIGw/+jr06bqzTA/loTsjcgr+RX9rFHrEV6FaKHmMnwJ8AiEA9bcdLScPt6u6OD7Wcz56pp+Fh0z2jVoC6uf8LhzCk4A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfb71wCRA9TVsSAnZWagAA+yMP/R14i+beSJz3kwCb5wxe\nRFQlFvtmGcMlR0i71X2ZGJEZAlqJfRvVa7OO1VFOmIf2NO6HyFhkA9ytoAwn\nEePh5PgTN6n2OzG4T6SWGm5eI2nDFjIr9IgnykFeahqfmIuYv8KAaF7ZIz0G\nMbxuGa68vpLh7liPFmCbr4BglBl321+V25BgnNHNBvGAJwvKY9CDLU5Eay9z\nEwdRxKH/337bIwEWZiCT5YGtl6RZNYPFCk6cguAQ9lByqxqGi1DVbrNzEDdV\nGc+hEXATl2yAaYAX4OnIImQWf42UQcya3mqbY9GfcmD7c5rSq8wQXWUuTJaX\nln1MeKIMNV//Vh13N0svI8hQ8nj4H2F1jacwuNqSpm713zZJMJfwP5O289Ks\n+uLk05BBrQpy4Y0eOnvqT5LP+JKAN5XPMsnxuV20ZRfxSjJj/y6h/sBZpxru\nfbNtM26qzUN0F4hTJTTpX1SQRJRBp+niEW9LvUBvKKwJYSxv+0aPBq6+A6sv\nSUwUUPPdgqoynvqXeulQTgh7ciT1S9B2u/CZTtPE00wsHqX9/RamqYvzorfV\nhI7dgn3Dt+DDmXjHbZ5/7IdDCrTQ8bGCNh9x985c1HnTqLWzc/tVWJo+iWDn\nOA2w8kk0n5PWU22Gsf5cNhLKIpSSZE0CROLjDaYaOzjxj8fUVoysSZf/vhfw\nq8yG\r\n=GXJE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c120dd081091daa31ac9502b0184e45335c3e092","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.1-renovate-non-major-c120dd081091daa31ac9502b0184e45335c3e092_1601158511728_0.29871428052114823","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.1":{"name":"@balena/jellyfish-sync","version":"3.0.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.1","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"35dca16954d43ad732c2edb003ba002001473ed6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.1.tgz","fileCount":27,"integrity":"sha512-VcTEPboLi/7qUNi2NgoN+rZv40S//kxRYrpAlMH3Wfj107LOOq3Z/3aKk9058tiL5lRYodqzH8A8lCAphe5qdA==","signatures":[{"sig":"MEQCICCkK7r2VXgQ20eBzXJO7ao1RSfEVn2dh3yDe+oviOfgAiBhUgwORc1vK2SGLDAnq73OOXySu2XPLb/l4qaXrMYA3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfb74YCRA9TVsSAnZWagAARM8QAJ2FmXUlzjAJIEV44uS+\nHPhqTvxmyonyjDMi0fpMB9SPjLrtQlho998qsTmZAEBIC/rpvtkpQ35swF43\noEYnK7GwnFAU1YHpAIii0L0/MZJjvLfaVsfDEBLO2DFxsoOcYUiC+ZW9ZDEn\nGr5D3FwMjiQlau13ObO1B9fcLFk6PpuIxm+XI8oWdPOPQhpNOsGUoscoe34a\n/wv33zavAUywxzT4Q1oZXwWKvUJ5g3XVggrcdTS8W+wZFot5ORrcgKrGSPCb\n47miMXlxErRpblgcjW8J5Ivu9e68PSGy5FeOxE6J7X/RqsxzLQRFgPzCQrhp\nPglsqasQ8e+HPFJ/GHhVdFNZtKXn1aUz3lLfIER4nvydNfW2CNVbv96zV/tO\nKLKP5xjtwCvlTmNv4/M+Rbnx2e5T0P/Oqu1vHwIJCU4/ANqEeTz72tC5uFD1\nnDmoP7uhO8VVirZft6/1P4xCYbQM+QxzHVIYKwVSgHnUwOZx6JBtA9EpXVOz\nV6RF3aJaROp8Iqr58pSclSPSJ3OEXQhTDhpJUAqSlCPN558TU392sIp2YInk\nZr93NQjaWPgoD/cx5pQlsJeBc8zt6t41wRbpMv35mOHd9dSX0RxaIeeuP+QG\nvYjlpX8h/pUdzB5BtZfU4jtZhnNfusWPsrYZpJiz6mQ8j+80NrqkaKXemyIz\nTVJN\r\n=LmEo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d97f5b37ff61bd75f1e1f49dce9d437b76db392d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.29"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.2","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.1_1601158680264_0.6477996325114779","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.2-renovate-non-major-d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7":{"name":"@balena/jellyfish-sync","version":"3.0.2-renovate-non-major-d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.2-renovate-non-major-d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"403f969ecaf89a0f4c48a11bc913d423c7eacadc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.2-renovate-non-major-d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7.tgz","fileCount":27,"integrity":"sha512-gHywVvuJ0QIz0os5pXWv+RzrW3LR12fySaI0U/KuYmH2cY52lNJCg1hYsfhL2UgUCjnB8laDX3xlxONq57EMHw==","signatures":[{"sig":"MEYCIQDdZW7qLu1WzT0xKBcp2Tc4pgy3hDvmsysZtSwTes89XwIhAJ3Dkd3kB2nKYxw4atYx0JCwYuN6j5uufa4ER+IJEWHD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcAK+CRA9TVsSAnZWagAA4hAP/Rc9WKOhPFDWRBMCAG/D\nWRrRoM8ZT0P7hNo8KRlhWuHOlqN/g/IGJR2xI3eeJDPGvvctIP0L0v+JzSB9\nuzaobeYSOtmg219XIUiVv+Pi0h1TwRWi7yG6CC8MZdfGE1KWFgouRrmbokD+\nYX1oDnOrejX1DpnTQ/5mTjnziAUOP/uaKyr/JAaLfoas/pHmRrpp1ord70Z7\noqipqG+pk2NFZtMV3UivVT/MHyCb43CNMSxbSObOUiJINYcaml8Qd7iUCjU1\n/BsbN2lPLTBSb8fyS+lxyIoYAX+CpcX6fn18F4zYrVp8aDz0ttlwK6hBs8iN\noa3rsucRG5FY44JIbi+lbWQb91qJ50kKWUSsLulTffzWARKb3f0VW60SlG1n\nQoG+tD7DOt44thpC6stBZauXZypSfzFIQ9FS7fDEFXv5hxwAEH8UvrQqBJ5o\nKoBopYzrzX4BOqzjPLlqMMSvz18sARjFLkTarD+qbcJJDvpU5yLWGFeqR4Xr\nz0NNtwwlZAnT5iNt0f9N19SSGp7IAaTGXv043no5WDfbLv6/MKnxg0nBk1fD\nGB4ru+ZETE4or4AngHNMi+87dne40y6USx/LXm7yM7aabpU5kmp5sknf+4n+\nfegRzsagFfegGx7B35wEYUpdqH4GsYI5zP+eXqy2Mhv8jKv+imxVipBGSRJE\n5+2s\r\n=Pdzs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.2-renovate-non-major-d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7_1601176254107_0.5940611053310967","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.2":{"name":"@balena/jellyfish-sync","version":"3.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.2","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a7edacff134595b60e83d65d8c3c7a2d43cb6f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.2.tgz","fileCount":27,"integrity":"sha512-pjCtwJKN9vMkOzS+TtboPKweR6/XqDPnQFaeUcfYDgrU7/YMvPx5uX4bZqc+Ka33P6ryTS8SzBEu+SHhRK9jxg==","signatures":[{"sig":"MEUCIQCvKQg7jhJLmGsGigFX8TN+WjNNjfUd3gu/ZqE/Pj5eOgIgcQie4DUgo2/RJ9mwb+7dbWjXbAofX+/MI+ogz98apto=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcAPiCRA9TVsSAnZWagAAjUAP/3Eueny8TOiWL1tKRwfd\nWTjPu/e5zaEEdeExr9s3LhVcz89wI35B/SgZk6amn5VuH6Vaep59DZL/YZ2K\n/YwQ+r8ZyiuUWbNpfRAV8CiYBHZq9Y7FAUQO2Fj0Pyv9OnebfD07KX52NGF0\nw8Y1Mgdjr5vd1L4gVxtM7mHvLVjc38tV1UqwK4+9+3UHpFqu+IY8SuFfQbD5\nmG74dWjN7+qON5BamQNJ4xMHS8aeiez5IjoxJh2zIosZI5sP8xCM7lOz1OQn\nNHQOb05JvYnKKIUUuK40qG4wSCFtNt+/qqVH96LX49HAtKk1P8JtYNO8VqQ3\nLKv9MRSlSnfa5fMNXAJP50t+QMBCSG4aQlM8JEAGa/rJEG4wKCNEuMf5zWj8\n5V4HhrMWQvksvwaLAJt3C5e4waNaDrHiRUJt8Y6AZvN5twVu9QQS1R32rsko\no7r/54Dn0LoRNCwShuUZd1KKmbLMejCNzjQxsLEEahTr/Ldk4AcS5plNZw2H\ncc4273tZtGlsYb198y/6elpSPEPPWzkHhlSFXEpYmg0iARcaMS8o7CPDEoRi\njURkf+a9zFoBJLd4xhfo7Bv3I7apBpnlAIuLlKBuqJlNJWyNGl0QbupdBwzF\nhKqriNSmLmfxh7C1HHpWm7a8mMB/A5Hc3BEMVNAEa4BztkxnN/k2CO0hc/m4\nfxVn\r\n=h/Ov\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"043216487fe53afb29d3050946fa7d3aaa0bce8a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.104","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.29"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.2_1601176546023_0.03065427494618822","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.3-renovate-non-major-d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd":{"name":"@balena/jellyfish-sync","version":"3.0.3-renovate-non-major-d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.3-renovate-non-major-d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"03b855ca4921031020b5bf02ca7605d70f9a9b70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.3-renovate-non-major-d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd.tgz","fileCount":27,"integrity":"sha512-M4F9HwGQSY6LmlArU3y+cajJFfnC6dGoQ/qwIHo8Aa83CrIHJqiX5xzgVseVUFzRZ0/W1SKUc3oPvtZs27hrjw==","signatures":[{"sig":"MEYCIQCAf/zpyI7yH+sUUPku1RvCdtsgbxZFBaxZjCRpGKWmDgIhAPfwEILXnUYaqKQ2j7PhNNqMLe2AMMMriFuI9DqRplaC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257316,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcBn7CRA9TVsSAnZWagAA2Z8P/AwYraRTBDojIEClFsF3\n3mtjsDWwVzC8BJU7vUYA/nvIlLPxFBdNkkfPG1yc//Mh4luuvKFjbcohHHjR\njSqsOQdxNzMdnfxcdq3w58pIYTwFkguwNGN8LKaz6/I9B8rdymvKHWeUnVBo\nIrGOoPJho2NzkfqvKPap1+eJ6eHOrPZGjuYWVxhu4vcTju2ztPI3h9Y1zZUz\nOt6+87EAw5NV2UZo71oPWxc2E//OsLjMXKdKpOmKVfz764oD5R9Gkqb6sOve\nizEgmBmFO2/wk3e6NvVkKEnzUr1DyqN2ZdCpotpxxgiHABMemcakkN8Yz4sq\nV81jr6ZuqFO+ahpCB3fzXQNlPcLRagJliCqi08JcoN23xkJK8uDP4PlfPgYE\nFo1m+hv/cRtQvKr89VlKNOQbGVgCgT/2KCPhIyds0sxx5NRGfCt11Thii1b2\nb+o9NN2PsIV/goUW5Tl5ExTv5Up1bD2BAnwLZxKj3qAiKg20uYxtXMuwPMiJ\nWf7AlY9s5yzv2h3xvR8e5nOID0hKMOhVxA6Cl+UvFWuKJibg5DsypR+XsKd2\nGu9i3GJzej8PjciwcCGP3GM7csNLO7lfNRpJlfhqh467GmSZ5VXW6oxp7jY/\nrG1as8W91xjsdf1fWzQj3D57ecwcVPExPFHQPz7sVyIPQaBuoRlfMGnfUDE9\nkOax\r\n=hQux\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.106","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.30"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.3-renovate-non-major-d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd_1601182202306_0.8155296643345376","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.3":{"name":"@balena/jellyfish-sync","version":"3.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.3","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1ec802babde2150bf38b554b8419461aac037415","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.3.tgz","fileCount":27,"integrity":"sha512-mPwAN/xM2c7wPrfWrH0r3sPS/1S+0+y1v/eez4h/CrVoCt3yrlK2iQBROjjW/hlXyrEue7qfkvQwPmWJtUAyJw==","signatures":[{"sig":"MEUCIArgobZytkGZcHJ7UgXSewfhd0EciEwyb2VFFIbJpkhOAiEAgwLC7yZz/NX6e1lU4A0jpsoIjWhXzL5USa7kYcTf+FY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcBqrCRA9TVsSAnZWagAAwNAP/i3Ne7Jukax8zvyigZs2\nW79MkiLyDfXN3nLx4H4wX6RDEp14w7B3YWYI4t7ME02QJ0y52NvMBi3RFFZ3\n22Oy6qZROdC+TrBY7++Lm/sWS/cY3PvZlZtw04fMLRRvdz5myPnnI/rJQeQN\ngSMWEMRQIVuazrekoS1jEEN9sW7UmdgypB8zm525fk49KQb8jFyUe1tiZ7gf\nkgyHPaE0sS7O1qGztVyPRu9F6cit+MUBtsiL+yufMfyErgfFXtvNb79ASdiy\n+AUnLTi4Kc6xok1RW9SLsFsKlyAufwjOGe5CJavbxQszKA2/4dM5mYLh8ekP\nrEoNdAOgEk3Q2kscxPGW2wnP1at2WW7vRwgmBNqb9f3RtugjUWvJFQ6OkuWl\n7v6uYk4nVQ/DFDmuioBLHQsDNr6vfyhynU/3VVNCFIW7NKBPdn72+RQud7Ld\nbkH6cqPL9hPPS279t4Yj/UNADq/0mKnl5nj2Wxo/5SQb8UKMzFsFFROlUGPd\n7A4YLH34zfnDhXXi8+rtlT9u1ZFp5Ib1LyjrDM/gZFFctfaDgMmjilDc7k7N\niMqE79tt7INO+0ZEiYjweeo2qBA/cqeBMfIiCPGSZMRLndjZTJsk+q7VQWrl\nxc7vEEONIMtA2LiLTRGeNEPPqbibgqfkQibpq4ABpWem5Pazlmta9K6tDm2V\nuwzg\r\n=rkCk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"34e533d23b42841e2942d9ec47c3c3a8f299454b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.106","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.30"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.3_1601182378881_0.045361522275013444","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.4-renovate-non-major-972009660d6d5c53a6ad6cc10cb93a9bc80561b2":{"name":"@balena/jellyfish-sync","version":"3.0.4-renovate-non-major-972009660d6d5c53a6ad6cc10cb93a9bc80561b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.4-renovate-non-major-972009660d6d5c53a6ad6cc10cb93a9bc80561b2","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d66fffc5688a1eed182c54a928567fe440bb7ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.4-renovate-non-major-972009660d6d5c53a6ad6cc10cb93a9bc80561b2.tgz","fileCount":27,"integrity":"sha512-8NKWYHJW2L1SyBElvi7gnX63lNyByrgHpragzwP4mystW0tBDSx80nuMiJFVTTgWLet7XFrRckIzxjlXfA1KjQ==","signatures":[{"sig":"MEUCIE/CuR7hkJA2I89px7cVb82UOzw+ywXCXFdYdQJkWPe0AiEAmoJrH1CqRcjXFFDv/B1nDJYw3D3bQEPXX1EiPtQ2Qns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcCmuCRA9TVsSAnZWagAAWW0QAI9YQ+hWe+W2cgW1h/M2\n0IwQFbZF9yCdXrtzzBIgTwdydg3zIUzX0uAeil2J+esIwNEw127KgbvZCh1m\nadG5R24Md0kIy4YHs3X3zfpwjRwwcELW5G14t5JZt+HyZoI81cSZjcAwYkOU\nHpsGnwLFQQhv/oTP6BMrcUECF12AlojwTo5MAJjYJWSDGXzq48UPbnLH9rew\n11PnZ1cXyzVXbdyAQjZUpygNt1JfT//Ap8IvCDNIrSuBUikmKL4Z54dCiba3\nZlgKlbZCVWgdAXJ5JNMNRbS2aAgOVBP5L7MZLdl5oPiAHgFw4dNeZPap+YU5\npYo+hauEA0O4hbtrAieaPJ/NVid6BWGcYHvbdjylr8mUmswNRKiJ7fuDLU4J\ncH0pIValV7NByvONlVLq27trKwpdF1XSALekze+cHe6OPzqpQ+p8DG19Muls\nN4G/tvAXFsvAT2Eonww7iAjl1HvBrodSb4Fx3F5SEI5/FzOq38qiK6oJEWzi\nTr/liSz7lWN2jSUFdkSPI36YJo2MdLp04QRBZSTgV2yw0CMbdsQxTGjwfZx5\n1gS1gkSUAFxhrupPaV3vZ6q7XlPb1vIHXms6FkR/+Vx3sIt8U787jcQhOOgh\ntPdlDPfo/PMf+Ln/Ivk+kANyYe6fq9GkNyclrx2BYPMsMCJDHSMAAv6D2jgy\nRXPy\r\n=RHQD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"972009660d6d5c53a6ad6cc10cb93a9bc80561b2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.107","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.30"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.4-renovate-non-major-972009660d6d5c53a6ad6cc10cb93a9bc80561b2_1601186221522_0.7808345714915539","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.4":{"name":"@balena/jellyfish-sync","version":"3.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.4","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"50125b54dc0b2e0f0335fefbd800570708cb4507","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.4.tgz","fileCount":27,"integrity":"sha512-YwOZivF5r/pSVRPL89a8Y74O0vW0iYvYfVZ2Kpcw1bSBnKM8+65TYOuPZLXzu+LbJx3U92ATuy+DAOtBet99wg==","signatures":[{"sig":"MEUCIH/l70ucyURug2vue7sw7RCR+1ITCrudcECRVtXA4R4sAiEAttLFGXSflCiNLKAcBrHNVW4PiD2ZqMkexegvVXGItSo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcCpOCRA9TVsSAnZWagAAskAP/jzrH/YtRnVzTKu8H2am\nmfBwb2We0WljaIuSyKGwW/yd+45HNwS854G0NgyRJ0JhaSBOrvJNWxbak2Uh\ng7JfeenZq4nNLMcKp1uBE5NlC4R1qS6qztexE3hCdiT4nJXdyorvcWupbNx9\ndbqxnaJMRbkrsvTQd+E2iLGLAEQtvROadlZ0h/k8YiCEIti2Gkt+k21M/m/q\nHUY/AUDOiUWpzltdULFToW24yqqAa5P+UjmzeIfYRDWA0SrXM1Pm6R1FzSr3\nwOhCVZwUJu0nFjZ7IlFjIgVQ4uMS9hfYZB4aXMgYj9nEvntCROUXQEu3taef\n7KAkQ9f+ezo7MJNYA3BigpTmi2+gCBirwo/jT7Q+mCTzGZD5nK19vZO3xyY5\nA1dy2u/J0ux9jCyYX1fr9dfAxUl1LkxScINrTUPFgB7nsJukW03XWzPjEDGe\n0VR7t+WaC/KuIYTMX8URlmeOHN0rGYaxOlL/6d9WOQfJ3wOqZqMA3F3kC8eM\ntT/HZ/5IvDj5U8ovaRNbXLbx8V5AdGR2O1kiMS2PSgXIWDYryqrwErBQPDHs\nWI9jKZMcIGpelWwiOkumAv0N8M7z213ilvZtF6FtRoxvym94CQedeJjyrquf\nvWDFmfNKrqjUBLcTJStBVGtB8CbCEXTtcQiSrqFjkGoOm/5+uiGK9HRSZC+O\nWKMb\r\n=LwNY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b4aabc6c6bdd9a3ea0ddf5d1cdadc30f3a40b235","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.107","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.30"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.5.3","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.4_1601186382199_0.0653484309972232","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.5-renovate-non-major-53d890d69ee2a3be9c93cb922377c015410089bd":{"name":"@balena/jellyfish-sync","version":"3.0.5-renovate-non-major-53d890d69ee2a3be9c93cb922377c015410089bd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.5-renovate-non-major-53d890d69ee2a3be9c93cb922377c015410089bd","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d291a8068eeb6251d564431a28fac4b409295a82","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.5-renovate-non-major-53d890d69ee2a3be9c93cb922377c015410089bd.tgz","fileCount":27,"integrity":"sha512-cH8xZD8sqlKOW8F+kpUoLytrlQk55No48xi9RcPIVVJU9wmTW1YVMBK1X/b+5rgAuCcNvnNUU2bOVUESFw8p3g==","signatures":[{"sig":"MEUCIHQifYOuH7i+HYy9ki775LYZ7cR0VqfCsCCxX/KJcfaaAiEA+5GE5mK5Yfr354qZVaxbBplfoW8nZkSf4Pvl1cXFeAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcHwvCRA9TVsSAnZWagAAZFkP/j+mzAvCt6Fsrqy3aGQQ\npQqwb6RJ1KqQBlKCy8m8xJMoxIDADM+nUJdDySrbuSFC7S4SSngxKR95t0/y\nKvO2MP0n8lwYM/D3Bm9rOxoYrgUgfhCi4U9NTevD3Np5+KKCVyyzIwyoSGr8\nL+LveBjpxOSzsNoVg//Le8Ed6Vw2/9zYEosQdZxS51MaUeNtxLpKaIwhKmiQ\nTOiGOwjflKoeTpcweLy5t1QDI2kLnHI4jEUMiZGsL3b92dhfQifO7Q9RdmWa\nTABBpJToQ2Ol8EENVp9EVTbu844Q56dMoOOGC+WpXoQijcwq5mnzztcEOr0X\n8QrpENCjzgpX4bZlFYzc1ayYoeHPWMUWUi/v2zRe8zE+ursV5RUNB/MFpflj\nvKCGl4cAU7BRs2w88mTkjJRth89CmR5Ol6GDETa9/pQnGghwKPLF3PWKJNEb\nxF47N0d1nTy1t3PKV9iO1buPO68fcoqk8pUuqiJhEQXjluNeYoCv14Z9HRYe\nhyg6we4eYMFFMASpq4V2EbRtGsMVoR6Szvv6QH8ZJL+jCTXr7I9RWr+YvkXo\nzdDOJdlRaQHcATPKU0JWl0SDn6kUr5XB0TNjaXjYP745AxKg/jyx0Eg0S9/O\nNn2Lsa9ZHcykKrfEQTgcPzDTPrl+dOSo7Cfon9H2ZPHq64JCeqQnddAEEmQK\na5cu\r\n=5/GI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"53d890d69ee2a3be9c93cb922377c015410089bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.107","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.30"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.5-renovate-non-major-53d890d69ee2a3be9c93cb922377c015410089bd_1601207342963_0.9140155484255288","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.5":{"name":"@balena/jellyfish-sync","version":"3.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.5","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2041cae223fc4bafa5dbc88a2ab961bb73295d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.5.tgz","fileCount":27,"integrity":"sha512-kU/0e6KjaY1KZ6EhLpNwDnd9Tb0R0iAEq8PEJP6W3iRoTzQ4BodKQmLkN6HaNqNK/2C//rtr+3OJScrCvtauhw==","signatures":[{"sig":"MEYCIQC6pwT/B3teU8JlWZrUgAcVUgxq2ugAJFjdGjLJE92D6AIhAI3Zmuq3voLYNlybh1w+9ZFQCH/dptjbGQVvRqm8Tugq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcH4NCRA9TVsSAnZWagAAV9QQAJNHCRTjxL2mW8pRtsRl\nMZsnQRfFX9XqtS81DCRZ3mye7FUveumKTotH+ZA07fbVlGtO1J7pX4WZaIQA\nd38jitDbdHy5ODSB3yI/1ahWo+F9c246/BMCCxaSTO7x+kAU/XwbonHu/zx6\nyHWRSOtMSm1DqMvZBw9UQw3Sy/K/Jrk5/omYof3UAWnyn/63zhiDgkR6nRCc\nWB0e4Q3lu3ZtpQZXZ8A3bmkpRpOql+PQQROV/G0yiMRlV9BPqTg1zXDK8Jog\nb66VJA7efTnb8u9JLWmposhfnZrovLLqQaU1Hok6FFruj2MsEJCy4QEptMIW\nKN0J8SVlF2Ry4vayH/zeB4tS5JNwCE8CmkznqrWmfMosgrlqRPnsUlYQIGuP\nOxoX7q0MJGtK6of1czsr3fMCIZRiBnWPsKWLPA2ea0A8OuZyXRFbjQUSInXJ\n5hxshJ1UF7wYS2VVkID6NiMeJLZGY6XSCuo4MyJfQOqkxWNxcJvBvEPpFx+b\ncumgbkH5UXRP/WwpUJoV0KYb21RXbeytNijNikkJeiXZheQ++yLPp80CpdNe\nQ/YZitNvyo37YwahfEzQxi/JxAJt2uBV+CYJgDddYVVdPU2FWI4fupzN1IfW\ndZV1wu7DapJwBbtAdpFrMFqrkxzVXwPMeklNG0/fcdjN3HkSBJSJ6NJZO9zK\nOx8i\r\n=RMlN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d23671359055137d664e740596148884bc46d70","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.107","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.30"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.5_1601207821392_0.7079639564661984","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.6-renovate-non-major-e74c0fe1208eea0b4fc675ba80548329f0ab313a":{"name":"@balena/jellyfish-sync","version":"3.0.6-renovate-non-major-e74c0fe1208eea0b4fc675ba80548329f0ab313a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.6-renovate-non-major-e74c0fe1208eea0b4fc675ba80548329f0ab313a","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"666d8479b128899d57a5346c30f8ccfd5d5f09ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.6-renovate-non-major-e74c0fe1208eea0b4fc675ba80548329f0ab313a.tgz","fileCount":27,"integrity":"sha512-1VACV3uZxe3HEQf1RIZR5DGcs2gkkiJJv0G+xRP70eqmzNySMtuF2yJ7+lIn89WWOCxSkWNnKsf1OsU44ejmyQ==","signatures":[{"sig":"MEUCIQCZ0wq1CF4igo7EAsTkUZqSlYbxDnukoCohWgTY/8GrpAIgTJqhiCQJQvmoBIURL/lyLuasIvDryUbwiIUZzEygQ6w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257633,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcH9cCRA9TVsSAnZWagAAZkMP/iN3V8eVHoN7P+8QEIwL\n6Z2BcQTUs3E77FfLynFrZxB4EOCv5RLwRomOCDwW59RcQSTFBCAChqxeO8OG\nZCeV329fP6ZhDVZQYyAffJ50is5BpiRp7arOrvcEst+7kVewZD6QZjwh30w5\n9VqlVP+zAdu320p4E4HDMhIzCRSioztrvZ/j7K5sYpm1+yHs74loNLni5pfF\nYzWIEXvpqV4ZCQL5oy9L4O4y7crGXZPTD+jTF3p2ueMsgDUfuZog9PTTiGZr\nlUJERaQmlru4V4bdfwPLQu1ndto6yUBatmmSpcuwYaBYFutdYmvkn5cxiZJK\nd+83ippFlbX5mz1Tnn0OLrLxPGcEeCVncnOWMhkIp3uJz+gYdkADdml7sQ3q\n6hJF7tbgD4mmt1TYcPgrgup77b84SHu9ijdMUyPr9PpQ1+fcOUJnwRFwaXtJ\nSltFQYojr1eC1GhTWlZKjS08zsoYCkhTevY442hftEmtB9y/Hgs1ceawuyGj\nKmeGVM+MhBDjKNLTZ0sgS/sSKifVzMyMhrCfBEv1E8Jl4iG6xwWc2W5p1t5Q\nnkEXkmCpXCJuuoVUprSoQbG26UvE+Gsgl1zn7Fxbl30rh9f4mF/LfsAJALw8\ntYFb/Eur9LzC1kGdDpxddPgHiWA5AsGwagvykiuKcxk9sscUUUIJ4hHrGEh7\nKxqj\r\n=67pQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e74c0fe1208eea0b4fc675ba80548329f0ab313a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.107","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.31"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.6-renovate-non-major-e74c0fe1208eea0b4fc675ba80548329f0ab313a_1601208155734_0.8110563665311825","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.6":{"name":"@balena/jellyfish-sync","version":"3.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.6","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2803a0d505b562bd3e077c7e4faf44b925132aa3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.6.tgz","fileCount":27,"integrity":"sha512-ovEOMwnsokcORqSqD2M2J7dAfKivqTbiJQDmGYrQWKVAiAT6k3w0aigytKlqv0iosNOo6EfwB0HNOyLe5VShwg==","signatures":[{"sig":"MEUCIQC1vvZBJpiu2Zd/2ZxiYQcJeUXB3kIbQz+vZmALROZpFgIgMhr58WJlmjU5oe015mtSG4TCCU2UYnxwFG2BnYo+pNY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcH//CRA9TVsSAnZWagAA1L8P/R0M32mymZh4xunIkPki\nnN48fC7HLHbE0GbXhEUn3Z0v23WXii9R27E08/jnZhumZZWShgA2aYtO2hFO\n1YvXH3luhVp3zGTZYwi7C8jMznw0WgUWabi2fp0/NwiAl8IO5cGNit2Ls8wL\nILVFUzPHdH6Bxh5fw/yEQosZ3T+Z076gdD5gduiAnZuen+qp/Cgk4w+Z7ko+\n8nF7NvKfKHSNn2eKTMbO39RT6sHr2opw7Ey3WFwkxsAPeU2YzmP1rPPjol0P\nEPdIXboDCM/6dP70jEim+wDX1kR3r3Z6XhGmQ+/SAUuAiQplNT3Ok+UnI1TU\nrsNYDXvNYu5RLqtzOdhtguzEy0km811MhOXSYXTaqbIHCG7msCgl4XFR5nYc\nw5Ta5Npd656M+zkZyUVB2G2sBbBnTzzCUZG9oo04k7ViU1pZyKWqJ7ve7Bxg\n1IbeDO1YBX7Zb9YEwr3ZYTie4/wyIoXmoohYrRvqdXg6L4PA4mGNvmZagRn/\ndw0ntI5gJ6HCIAV7V+aGClISODgRmg7KvH1gaCiJzOvAUOIyGopGEar+0Y4C\nBO6M6gQs2PGh4C+/6XrfAzxK8McKvkKSv6bv+Dty8p7+sZ+S3disdqsRIx7i\n5/ZSCHYnNs5TP9PDVBYYgQCIQRH5wVYsBGY/a8zV+b8wkSYK66bkNtLyvUXw\nMh+R\r\n=OX+m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9424d0519af3e3d87b4e038ab6c4e60f77083e6c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.107","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.31"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.6_1601208319104_0.2856659304016831","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.7-renovate-non-major-b61c7d6a8759fc5db205733d803d99e2208232c2":{"name":"@balena/jellyfish-sync","version":"3.0.7-renovate-non-major-b61c7d6a8759fc5db205733d803d99e2208232c2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.7-renovate-non-major-b61c7d6a8759fc5db205733d803d99e2208232c2","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"52fe7b62a841c4e0ffd73eb3b36ec7e2f7898cfa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.7-renovate-non-major-b61c7d6a8759fc5db205733d803d99e2208232c2.tgz","fileCount":27,"integrity":"sha512-Xmd+zfRUhveTZvSn/qLJX8PnTmxUr5MAPt1bpPmGawUPeqArVvG0I6whMDT3oaR5fiyacGOJAIrX/s8a73Xy7w==","signatures":[{"sig":"MEQCIHi/nhm2njGL+nPL5xh4HLJeWd1UP89udjOU+t4rH6WdAiBCae+o1l2ldYpa9+jB9WToFsAIEgZ2fVgSzEHX5ZOjEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257740,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcKlICRA9TVsSAnZWagAAfbcP/jcXjcMeZNCGpGnZDJJq\nDEHox4W93rVl7ZFdMw+kWbV3WW4VQD6IwP3TpQhCthhJbaklwTJIoZcrmzin\nGX+n2t7JEcnMBHmvdUSnSI6UVfNR1gmkjiGh/JkwHlok3cWgGSHl+VoEOD7Z\n8XE9EBm6qEnj0eLFwWO2tWlpWlMXS9zqgDWj+jbwHoV5zYTcGznsFSztx7nr\nkbteKQNjmgrZ99Odg6FH/9fWdxdFUmobG08KdI5E4lpAyGu5bzX7uKwFZ8n0\noNWAxZyEmdFjDt+pKGybiUw2fALRHKdkR074hVQf0A+3z3hPWldQMkF1b04Y\nrAynrpva5JndnTn+Ig1ORKAXTb+mmNNSjHy/D0PEVbk8r83liyBojc4U/fcn\njdAHHSUyBhY7PQys3zfnZSeAo9FwxBFbeyc0GZmgu4k7OxwQJvPqcTZcv+n/\nuUqu0acPtmECGyo4ICjv/AfdxIjW9adN+8khMisgMrAxJ9KxJ14sj9ZOM7mM\nMpl1xZn9gyd9wvt+2J0Bow+zYObGn789TYIX53FMpcttbl7bKyjH8dh/0ZKr\nVM26bhjyn/CbKHtXLcySfrNX1CTpQiv1svL2YxG1mlVtduVU2f7/tXH3FPvT\niLlm+bNErNLmk7TQPnd99jn2pnI+sGMjrVO1VbrS8k3wvOqARW9jJ+j80hCq\nhyPd\r\n=/Qhp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b61c7d6a8759fc5db205733d803d99e2208232c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.109","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.31"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.7-renovate-non-major-b61c7d6a8759fc5db205733d803d99e2208232c2_1601218888223_0.4238824953542131","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.7":{"name":"@balena/jellyfish-sync","version":"3.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"918aa078ce898b5097f1c3b11c9fd4efef34e812","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.7.tgz","fileCount":27,"integrity":"sha512-dAxxn0EJBgZ6KD/eZSzJ0P8osNC0szfj0fn5Rj4h+gwcDsYfCxjTheWVV5hspheTOKHtbAXsbykTzobTmZw1rg==","signatures":[{"sig":"MEQCIHDIhpyQ2QpKWt5EIa3p2bqst2Yn3lMIn/EgAYCUByP2AiB7pKm/3Yn3/J7cv6j4rjo9OC3+ddjaTp9SqIDkPDcZJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcKn9CRA9TVsSAnZWagAAtlIP/1iCBwxacVEUy4XkiEQ2\n9YeI94kKKmABERTRN9WWRPikp42B7Yu4Ake21BSYUTY7LzD4t+4JquNA6MdP\n8VpQyVgRxWDavsbUxfYIT2juJp6+UguiZQkFs1ObgPSxDmhyWKHeyFZFeom5\nPIWWVEj1eT64AMgcNYG+UbiFMo9fMM7gTgbFnWtFph1aazgLkJPdxRc3cjzJ\nm52sU3MfduDL74VkwludVa3Cq8wR/H1370kt/lSCQmAXlLmmSeZ8NvwL0N86\njNZmEuNvW8+hgqxSpuyczI7QWBaPc5SoZCXK0gc9/sDUPZ/VlvPrPegHKlbm\nA2jfnCZsRdKtIZXndtQQGLu2HztXBmIc4pqXjOlt6FugSx5KI+/5xlWD2vhn\n9xII29t4yH4slmbSask6uEGWslEa/FElsqj3I5EZyeMHDdICwJy3erCbHQlO\n/S1/mfL2aGGxjr8xgR45HPVfafq4QFmF0NLouw2StXBgsgX7y82sD/oXn1gO\n62w7AuReh/eY6i1Azrqpl2flwWzS4K39SEhj/PAJucpxXjrtcnFjFeYHrKlr\nKRqkeZJDJwLDgPyj/xf50Ce4UwA/sf0Fg/iRjtUPc/r7s3VCqeaM4tHg5LZC\nb6oh9dhHK9Olrk5sChzaMa+FFHmpo8s61sRJkUbbhi/G4zK7JmJM6J+Ycb2u\nrLoE\r\n=6F/a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"667a02d8c7a2b2cae864603828fa06d79e553944","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.109","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.31"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.12.1","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.7_1601219069026_0.6751144201506376","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.8-renovate-non-major-79c715a94344a7994051659b47c4b90409ee89c7":{"name":"@balena/jellyfish-sync","version":"3.0.8-renovate-non-major-79c715a94344a7994051659b47c4b90409ee89c7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.8-renovate-non-major-79c715a94344a7994051659b47c4b90409ee89c7","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1391a2f9587cc622f667d733453e3b027394001","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.8-renovate-non-major-79c715a94344a7994051659b47c4b90409ee89c7.tgz","fileCount":27,"integrity":"sha512-iUJHUCoNoE2MuauSBap38g1RDJEDbxTalCJSu7IKovVWVXMivjp4XKEk+EFVFoBLx55mMRLbUSBl4OB43Yt2jw==","signatures":[{"sig":"MEUCIQCk2xdy9+IZoQqCc7UBbjBrNFsB2jZnrtdrQp1aBDwv4wIgXZM5xSEFznaaL/Qi/oMJRSxMqJ9rpW5COWwT8h8AOgI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcLPuCRA9TVsSAnZWagAANzQQAI4nC6nGSzT929dKjJAF\noYWQh9EqoHb+jUtjC0Z09yDAETRvGxii31RWEFNfjaaqq2Ntvkkmau9XBRRc\n4jzxAhs9eHZ54qfBax9FaB5shZkNOEUXncWzlZCpEfSROJRxAyX+H0H7T4zB\nSYpOLwYz/x8RQOX9doTiKFqRvNWenuGnstQgrlt5gQCaRghiwRGWaLTZq+gU\nNJIQE8V5gAjz7YBkIoNL4XOe85y8IEI0QqFDgG4F5u2o1Jk9ABrG5euTP9BH\n6wS2NIQGxIefxIdJ4kuQk3/Ux5s8gwqJYPRvkiPPRLxt/eh9koaSC3VL9LlR\nBbQaEY3UkQKpj0sF0CsBBtnsUxsoNGcpmYcQCYgON48NBRxCPyYYidzdvi1i\nP8kib9H7bEJ+ncxnzKUJrecxNb/c7DJhiuHkdG6djP0+q7ZjGTPGz80aq8v0\n2vopfecNHv17QRJU9NcWSasLWw+dYZpETaPuYfTAEbA7xLrpmeRHyAb+sPW6\nefMpHRq26+WdVEFI8krYcA4cWpjlySwH+nEz7vd7ga/VPOL4HmJMbnLhgeJ0\nNqQ9IEDqkqDw8djZD1qNNM9HnCMQ6IqS5Um4Mf0zVLfwikHBNV1ZWSPfBiZ9\nWPJMFcsds4PfIXsfRmgzJjaKucBWu5uFrr/FXk1qajc/C43jXqb/eSLLIw5Y\n0bAF\r\n=tzUF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"79c715a94344a7994051659b47c4b90409ee89c7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.109","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.31"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.8-renovate-non-major-79c715a94344a7994051659b47c4b90409ee89c7_1601221613549_0.8441668835090115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.8":{"name":"@balena/jellyfish-sync","version":"3.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.8","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"093de6d247a22e15c0dad5243f2c198ce42b7420","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.8.tgz","fileCount":27,"integrity":"sha512-oOqfWVYKXdn5uN45loGhTcOK8AyEgT8guR78TBz4Q2P8IK7rOr+7DYY3ep83dkXv+6R4QfbU4EOO2ToNMVxxdw==","signatures":[{"sig":"MEQCIEWsnM8ikWmCfEiapNfczZVarV+pkSDQuOQREhQk1nk+AiAx/0Sfji4NSdecViMXDy4GvdMtSrqrUcEuRPTj/J44rg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcLZACRA9TVsSAnZWagAApZsQAJguYOUyOMVD2NSPnQGI\ngGt3bJTa7A0wxoJgEJR7374pluUymZuB9zpy9AkP0nvoi0VLlg7P3mUsJ42z\nKBjF0HrZ56UDMlLrbM1PG9NPV60MsPQUG4LLZmM7dCwiN+jw4rUVoZOvKHeh\nNLn3Ar3mFIko7jl4S8dFUFZQ/MtQ/dosy3jOzL7Qz9doOkWUl8d2R5hpV2pw\nQcxy84VOZmMTgOvrzpVg3FtJjDuMmFuqwhvyz/OWugZ9pvguo4jdUPVKItHe\nmctKzi5bgV89tA83e0F8DyEMyko9hrLY8nOlrRNf1YK7NdT6Gf6T7gGBvAee\nZOnbCHgqiBGwy2q8KmWI3Qv5wxR2CiMBQCFcXnFt5sd6Yhvqw3LyI8m6JwhF\nAwLxX9YG4y3Bbculr9JjS/ixzCcuK+yK3QhzrsD/h92S7yEW/GWLLzSuvFVb\nUCcDLziM0RI1jQH9Hq45P0WuQhELLG1yL6D1hLt3ytceJ976boQMnbKRljG+\nzAtkG/OVp2f86xIcQjDMOEUq7G3N4Cy/pUUkOIWMwyhhVQ0PZX6GIvO7JlV2\nuWZRsEfTc/HSJprxBHazH0Bgtkw6YfL3Z7Q3y89UlHjo7b/dG8nDvBYZcjTx\nof7Dz3V6wGwLwZWFHr8TpJ3REes2vYtu11/C6c2oxUdiapz3SJciGxqqt1Gj\nYOk+\r\n=MnKf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d16dab4b65aeaa5d9014892978cc3de5e7af5e9f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.109","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.31"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.8_1601222207572_0.6846404184571808","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.9-renovate-non-major-d793cf8f879eb41b132b8aa6f6178f59ab11b984":{"name":"@balena/jellyfish-sync","version":"3.0.9-renovate-non-major-d793cf8f879eb41b132b8aa6f6178f59ab11b984","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.9-renovate-non-major-d793cf8f879eb41b132b8aa6f6178f59ab11b984","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b3055967bf9393d4b89078a4bcdabb086fd81c12","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.9-renovate-non-major-d793cf8f879eb41b132b8aa6f6178f59ab11b984.tgz","fileCount":27,"integrity":"sha512-ruTq+9fFpnsOsyuNCqVSWCDVuTe/QA8d/yVqOteHCoyB4ef8gRjZRkaHAA4ysD6JfULx/+/D+j4TAiJDcOtHsg==","signatures":[{"sig":"MEUCIA9ARDs7RN+Z7pRzf0xLBCmlLKotwrxeBvHIX7M4jqRVAiEAg96yYcDjXxdmmKnVbi1ExbB8qwzBd+DwkxeZDL12K20=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcLeCCRA9TVsSAnZWagAAtiEQAIpEscyqeFQiHxU+DFbG\n5sAXuZID/e2c54pLuNKU3KvCKfZc3HPMvLSbImF2C3rXSzxuolIgVaFGGfz2\nfzoyohmeza5SEsCO5Yzmffa37eDv+1RM6VEr5csk3dmWtfWogCBg8OS2a0Qw\nv3dsqj0GHaUyTYTSVUVCh5TdYmrzDhJNUbyJzsswx2TvkoUYHc4VYJFWcFdw\npGEOimteUQSyD1ifZCWzlWptqxSjs7/+i/FV67tXb9Q8T1foL7TK4BitZW0l\nb8GMTNWZftZMnQuOiaJOqGHg6vRrZ54zE0muELgM1v3+FADFtf+m9vsadS5z\n17N+yDE/SKWwIpVhdZNHLIlRzlHJRnDvBfoav8eL0ZOXQBKdDbg1W2O/g5cO\nycVoF2p14wbtoDnFK8acmQ03QkfNWdAZzBle3rCtopW2j8O7uuK2DkaXSaVf\n48fs8lfyF/aNzxkyxVvwiD6d2U/DzZ73BLd0r3quZf+p6x55FC2SbACMOltm\ni85Fv8nXOQR8sqPTh6U7NI+DNmq1KtpZu34QuSYGAFNrtL3wVCFPgWVPJ1uj\nEMtqs6YgZGOUrvGigusZM9hB/XEn7ecRr4Sy0hA5LiNgfVB9jWPt+XeJgWm+\nyVPky9Hk+eJIqFoFeDj+u07/PTGyxXmCdP4SJ67e9BUzE+kdKnPQaaXbezi0\nw1sT\r\n=Th+w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d793cf8f879eb41b132b8aa6f6178f59ab11b984","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.110","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.9-renovate-non-major-d793cf8f879eb41b132b8aa6f6178f59ab11b984_1601222530313_0.28112111105489723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.9":{"name":"@balena/jellyfish-sync","version":"3.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.9","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"15e4de5f90480f8e33edbdf1a5ba1e4bfafff4d7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.9.tgz","fileCount":27,"integrity":"sha512-InFiZYjvEoAmIO0tcOozimVZeHwLfpAbIAmRvifDLSnDn/2YkKABcSTz4oQZhWRi7A1gjuZ7QpSNvl4za/MDKg==","signatures":[{"sig":"MEYCIQD7dLHxcnJar/GSK0iM8lyQN0kt/urvnxPVVcsAy27LQgIhAKcqEevOhPjXtN1o5TjDujQ3QJhCmtV5yxAbsrE6LeV7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcLgjCRA9TVsSAnZWagAACTMP/Riue+6oLDZfJ2LnbC0s\nrZghKg+/EOMTbdheNvt2Y7Sx7udVCqjJTGXVVPcftzJiyyFl/dv30MGUY4DR\ncwRa2d0Bu0yW+j4oCKEbSc5Q6CKnZMy8vzJ/1Z0gzO+RbZNaQebJSRTKl5xT\nYNkF2faRXBcYca2Qv7//L2iSnuUyYWCGJF+k3tW/LAsoeKNyq0MLxZlN/YtK\nlL6cq+cnZQlMg0KOAPFqWe4CokmLth95A9pPJUusC+uoaUcPruOSMg3Kuz0V\naCodSIGCOBzzAQ8y3SUgAvXJih+7ncpxzWyPpx7JXOlBqGlZSLeWmsFBwqPB\nbRKRPmcxGN6Lp3AzTTrFzCBIGp18TR36zesqUVg1PNJdIKrfSvols2MJEf1o\nxq4nAXLFVKhdCg5SvZo9BbxOywatguZnj4eg+We1fxitmBvxcobW+8Fbc6+k\n3UwN678DZmTE7ulB+pY2AUV07TIg2R2EssjO25h9OiOxXm5Z8hrYno0wp+6c\ne/LY1F2lpmL/OeGsRM80m8N91jdswhRgSVYBcGMfSf38nvBh4hnt0Hxj3AZN\nYxq49dSNI6mxFuKZxkbF8MW+KaT1BP+ZoVEr3OB0UQQ6j3xzjXcb45k8YCGy\nziD2vwXNlNOkcTyZQZ+2pUwROTrUHm1gsiSRJF1kLw02PpvPapD65EVg8axF\nnNAk\r\n=KDNB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"99ff9e0612deb341602dcc6a7358ed66dfc8b781","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.110","@octokit/plugin-throttling":"^3.3.0","@balena/jellyfish-environment":"^2.2.32"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.9_1601222690772_0.7967900927603477","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.10-renovate-non-major-b67c1bb5cd401214da94513ec5cb2f9a11dbffc8":{"name":"@balena/jellyfish-sync","version":"3.0.10-renovate-non-major-b67c1bb5cd401214da94513ec5cb2f9a11dbffc8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.10-renovate-non-major-b67c1bb5cd401214da94513ec5cb2f9a11dbffc8","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bfc948addac15b25bc0262f322b5f8ed4a077af0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.10-renovate-non-major-b67c1bb5cd401214da94513ec5cb2f9a11dbffc8.tgz","fileCount":27,"integrity":"sha512-qBSuxeQ2+vVdFY1tlFJc1h7J9U7hQ0gA5F/N6f4FqkMtrT8WRgw8BRBhiBIgZn7OuTYxnR+JJ9Ww4qiFdz6ijQ==","signatures":[{"sig":"MEQCIG8uJ++U+Sv6799aQBfiBRv8hsGIMsD4/YP73W4LRw9WAiAeRN7FI9cWiChDsn3W/Dv8iIviYUaXAeRzCIOh/agKXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcMpQCRA9TVsSAnZWagAAowoP/0QkhTj5wRpAK2uxwSLz\nM1ci/E/oYGxQ3oom1UKgs9RIeUbOwGe2ebHhKiPDxVGYEZTCAuEhu9E1W08X\nTgt/xKFw3ckN7/8oPWTenjaZ6iB0V7D8Ze84Dv4xjtqumgVmEiMQS9ZI0+Y0\nFXkSxptU9uWspjMgej8mX1gYILdhl43et06sbukJV4zeShknfe9Q5rpn0iFE\ndEUrm0dCmS72p/cfLasIzIeh5o87pTT6bAgLbrDie7vbMYxd2P5JXTi/4W28\noL+uZ4Ft6gIsguYqnu/7/Ju9oZPvVx7tDZqJFenXy4ZOZ2JVyaSQwf/ikUem\nOm1p5aJIjtuaWFkPv2VpYNGcnLy4p+6FzO+uZ+DJ5W+IoXNigvrW9jrPVgr4\niQcR+Gx1q9Sc5k3/ufIfe+yqUiEFqzeGvo1O1YT+fTGljzH7aQzCq8ewWQxu\nVYxMpaq/XVqDrhix7hpVNcauyBYClom8BcejT7L0Hr7FmgvrAj3Yh2uVmaya\n5b7vewcuF9g0DLZAfPYMP7KPgapIfTcnMXuUIxmG/F+ktqvp9yHVTaIV20UK\nsGTa3PcX+/F6zEYwCAoQc1PXJ2YUmGi0RNXO8uDZ02vYlXuGk2v6wKKmVqq5\n2wVEHe9Rn58/hFlvnJJ6fc66GFxgRL+bv+NlBv8V9O+EuRN5EqNNfNZSIOMC\nMx02\r\n=ZJTc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b67c1bb5cd401214da94513ec5cb2f9a11dbffc8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.111","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.10-renovate-non-major-b67c1bb5cd401214da94513ec5cb2f9a11dbffc8_1601227343758_0.37195430305417543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.10":{"name":"@balena/jellyfish-sync","version":"3.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.10","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"12a74c3b04b0d85b332075be1a9e65366e7e2cb6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.10.tgz","fileCount":27,"integrity":"sha512-gctqZA0bSVhOA12E04SzbPFBsWvPCwSNeZTI19yaWpLryzBcX1nSJdj+tuTjH3io91jDvnQ8ltUeso0gHH45eg==","signatures":[{"sig":"MEQCIGBvMKO1rlG8cXDu53PE176yoq8j4/MDgnDLoOyladhSAiA/Uvmp5d9Zj3eyxs86/b2zrm8bTRr0xWpxDTaSACYzew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":257902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcMsSCRA9TVsSAnZWagAAu3MQAJnaRawvMVhS15smKFVo\nydnNjKl3e8hD6vUcapKULb751UW3TkU1LQklsnbbXzEIFgahlZin9Kgv0dI+\n9tUEv2bcOGj+jZTXF7Y649NeGaOx8kIKnrT8GYsFGt/wdf0cYPxCVfo6Q6Iv\n4OakGxC4CZBShUhUhFuSLyuTbb7CMs6Dlfrr/VE6Omz4DDAxpcSCCzy8Vvmm\njGGggH5V1oUqjXr22+HA6pngxSIuCp3Ww/hSkay/lxh986nx4e0U67Iq9nUW\nSndLR+yGqtKmTrUl+jP9NEI+HVvvEF2dyeRJxm8NA72MGN+TxMeLncM9k2ew\nvyxBm2+I15qbQStaW84Tru+zFtzyVElj7jTgO0eBXVtHbi2kzWFPwEnZM+Hc\nmXATbTr0c+Hnmug0qyBPq60OJGbCh7atkqnp8JtGFER5Ax/ZhgDHWrMvAKEH\nfkZIpRBe+XhAgrd+3g2hF6XK82HuW/xkhnP660gr0lrsu7nFfuLTMrTIA3gY\n1IblyipMCBmU32oY31sQdvMiezgfsJ2jAQaKjEuPZ+Kh+cMG9XQX8WLfzkiZ\nP8681kuOXWsDUZbW6UF2MlKAw+OIutrxO1LiIxx9sK4I6Wl4SKeFhHt/XxRD\nzEPDWJ1wuaUNfHt8KR0BroeN32K/XiZXEOImZ7y3B/eQseyPwCOC3b51bm9Y\nNFjD\r\n=SrvB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5e065da3a70c50ee02fb1eaa6771556d9e9468e0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.111","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.32"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.0","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.10_1601227537900_0.5488975892744281","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.11-renovate-non-major-5890210d6df25db12c20f63fd937dd1da849be5e":{"name":"@balena/jellyfish-sync","version":"3.0.11-renovate-non-major-5890210d6df25db12c20f63fd937dd1da849be5e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.11-renovate-non-major-5890210d6df25db12c20f63fd937dd1da849be5e","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"416a40c5d83771c4754b270c1ac6d665d7529a01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.11-renovate-non-major-5890210d6df25db12c20f63fd937dd1da849be5e.tgz","fileCount":27,"integrity":"sha512-+oIkzVvxhk9BP48ac8XbGw+zkV0DynjLByfQ2dZ19SMDv3YpuG44Wbgs5b1bGnvCxl0fEpo5SyXZNXo4Dcmeog==","signatures":[{"sig":"MEUCIQDDTtzSF6uVwPztJyghEryH859OwxxRQIu5DdOJNlYywQIgcxfqmcohLnJ7p18gzhngHy68vsXXpyO/1ozQdWUyuzc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258064,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcTrECRA9TVsSAnZWagAAzkAP/jrTsjAdZ+Xc33UyTYZ6\n22idbK5geLK6UTkPT/R8T7uCGWd2fCYAVvFuxb3rj2dAHy5D81oQ2gCvqJSu\nfCxEyxNg+C5gGXI04DCUf8Nf9NMm+ndwmXjBH65q2COexGda0pYrox2vycca\nPWfVVIYB139BYXNJUsFoHjY2H2ONhApPuZtTXpMy7zn//LKpLzRbpwWV+8+j\nuYDjdsdODPpFrEsBiqz+GuFGAVwC+vTh85ck0QDtM3b9BMP3NeqkTojRG9Sd\nSPr36/bMNJBKb2DL0qmP3gqWHRiDmQzRjnQ+/LkaCg3/C9d4oh4UKz7qOK76\nRm8pnmKMdKlr/Wi9cRM4Dh8pxs+qKzN5svT7bzcuRE8jHNj7umyuXmZ8A0lI\nGvaf2dzHlrRpyN5AzKcLzRa3klkbakD+Gl3y0v1oQEwXoX0t+eAY5l+5iKl3\nF9Daety4Ut5v9XqmN/qmex83MUdD1+mJO5/jRuz3sQICHP8aMV+J99saL3HY\nz/eFGnxPz4ep4guM0EKIB45AbQe4SfmwxLcFJ1VGFZSXDZYLJHUuPoCEPjSX\n4fO+3enoi9KD1fzJcQ4icrSvPsUkCjM4nkZ7YLt7J2R/6Xz6pBSiJ3mWynO9\nyfTvepV9ihp8dG/43DBL3ZP+4YkVuxp6Qf0ZMzTgs8C3a7ojKUUDoMm3uVD3\nc1CA\r\n=DFDm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5890210d6df25db12c20f63fd937dd1da849be5e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.111","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.11-renovate-non-major-5890210d6df25db12c20f63fd937dd1da849be5e_1601256131472_0.4467242402081484","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.11":{"name":"@balena/jellyfish-sync","version":"3.0.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.11","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"179985cbd1280f34df7d8fd491f7d7442968f13d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.11.tgz","fileCount":27,"integrity":"sha512-fgVkOA+oTe3x1zigq1hSHqQvuwCGJ8ka50TAwc6AOXVkaxICpIPvgxuaf59aSQZtfg4FtioMqd3towCookGtyw==","signatures":[{"sig":"MEQCIBgiDt0SWmONmrQCkWQuSdYGDTUKVkrVqrX7BTp/vb6TAiAMgUQa2sb8mitkDjpN8ozZ3dW/fparJqAZMQ8Q/wIzRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcTtuCRA9TVsSAnZWagAAl3oP/0XWA0TUauzKwv+KQZOL\nxQVD4sXkrQfAzx89J4I9jTjoJ4kMT8A4TrSXKOoecXmKKKusltum0VcHi7Hq\nMY2YfEqgN+iR1Sr0sPzg1gHIIcx7AoQ4qH3/Qx58NN70x8iOapLqBEJJ7kyc\n5hxNafI+WWw8j26NWR8XA+UCdRWUZ9WQ7y7kMkBSClYjo9lgpuCSZpYeURaa\nAJzUNM6wtQyd37iUh219FCqOWer//1L3vnore5XBXDBPEO/AyVJF0j4n2dLD\nRVs1QfNXSYy1g5pmgXAh0nT9AXec2QWdzJVnJXHDUeiDTgEif057j+s7rjSl\nrMkGkjs7girZsXXP9Co5lB7m25/a4l/E40JMN92rGD4BinOH6J5NFZvS9mrO\nSdEVtQhvG4FeFh4LY7Vyoy+kEEfB7H+v8lvC11X9q9h+Lst9GNmasR4VBqPl\nY9Eh5wKicPDoBe516qg4W6vmF9e1NfLcOVoXGlJB/NalCOOVhvoy995TtISg\n0kftG8VgKFhsFbB4B8Lul297PKOlcWeqFPdt2xwyvAJTnq7p+jdFUDNPKt8q\nxyo1A6A2zeGeliqh5LLF2mSEu6b3Ps/kq9neibFVZdbDOdgs22BdbWgty039\nzp28aS3CjZEv2EaULTtxNGj6dtjcsQkji9ottsBD6dc8n3oYOF/VQ0ixL06Y\noDv7\r\n=lhCV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"65695de168641c77e2e7563f818bd58d25a608f1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.111","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.32"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.11_1601256301672_0.8800126861523971","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.12-renovate-non-major-801db0c41a5d94cce150243ba7a34ca4f430c88b":{"name":"@balena/jellyfish-sync","version":"3.0.12-renovate-non-major-801db0c41a5d94cce150243ba7a34ca4f430c88b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.12-renovate-non-major-801db0c41a5d94cce150243ba7a34ca4f430c88b","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4f764bb23c42b6c3adeb5f5877a90f153cb07865","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.12-renovate-non-major-801db0c41a5d94cce150243ba7a34ca4f430c88b.tgz","fileCount":27,"integrity":"sha512-gi5aq0uI31q2/Ic9XRvQ5bACRJIYsyjktFosqM/XUaWr7Xa/gWlzk37YojdkRwXk0XRQHsxeFdL+DzUlJ3L5/Q==","signatures":[{"sig":"MEUCIQD2N+epPJs3USWTHQt2l3OSqp9yZGm7IK6R5vXzTe8+7gIgPRQTHyGB4zvW6R0xex4Uf8uwBBtNUPPhS4omSvjVWDg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcVepCRA9TVsSAnZWagAAYUUP/1nvyIyuj5mpJ6Ez9Pob\nmMdrIOHpNrIxUqLLBU+h3hON9jnr5lqJbot3QBwuu7CvQdOzVJ2fh2kiI7GT\nTibj4cmUS3fQrqOZhjRtSQ0UyHP3IJY4E1a57A3E+sotpHyosG3K8LioJXuU\nDZ7GbUT3iR3g12zBBQuchmbs3oZusxPVSS0C2tFDNjlkthwyMrINQug225LZ\nU3Xd/akRT/dGy3/vA/YIIe+LyNJnasgVqVir9R31y+v3TvausAnXTYCQYC64\nnSWBQVpLJ1eCxdBVnGk2RsaE5w16GzopCq6cwCgQ/BfsyE9iavvRmDqF1fye\nR/CjMLvftAmkxbL8rYASrZjGWN1pUYzT2uDur4ixdcePVt9AjXzX0yWu0zAs\nN+sz2Z96hytcLWX7oKOqvfeJ/6N/PKMVgKER/udxCjze4iWNuV/4SakU1Yck\nD0plwlLfAz9J+Xlao/h+PTrHGt7UMdroK+t/5qm4xXyawEGFKXcyFBxmfUjK\nD0Cf/ueN8aI8Cs+nItPvAqgSpaKjbUMJQ2IQMj3twg2ZjrxnJTEPVm54t8sG\nrJvzcN9/A94y0x2ekRu8t2Dwg3daKV2Wv8StRsXu+/Ex5oRPiHTnx9qfYCV+\ngoNCD2ZvU4OMDuO0RiQYF8oe77i60S5AXqi7MbVyNjlVatxLCfzMLNw3g9DI\nZX4a\r\n=7KWj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"801db0c41a5d94cce150243ba7a34ca4f430c88b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.113","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.12-renovate-non-major-801db0c41a5d94cce150243ba7a34ca4f430c88b_1601263528970_0.538685190944683","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.12":{"name":"@balena/jellyfish-sync","version":"3.0.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.12","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d3255566e466189148682cb2d832d7586f6797ed","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.12.tgz","fileCount":27,"integrity":"sha512-M1t01+BE9NmsxFuTLj2pzzefGM4X3du2FYFHFtPivJgbkRJrSkiXF7sVOkXcDDTo9X4uXcc7mp1nNb7yj+SgkA==","signatures":[{"sig":"MEUCIQChAIz3dP5jCjZJz1QQD092Oq7S/zkXl/rDXHUpsx9+6wIgakc4NLxKeLBJAf1Ya6Wf+DfAMW/L1IYfIKnSWQ+kCzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcVhgCRA9TVsSAnZWagAA0U0P/1wi0+4U/DuINEa0rpSv\n9lfThcNGy8rvIRkp7taCMu3rxEjhp0CSHnG4CezmFcOzN9j5BqWkz/29S6IU\nmFlstiNPxypsiNb2mnyDUHRIJVulbtwQbhpb8OR9g8ns981eutl42SP388ag\nafdcAfJcH0bhGxUMEB7EBILhq9YlCvdobsec69fGHzebx76GBB7apIPo6YV+\nLmMBiRIjKU0aBsxE2J1ty7rUX8Po+2kZttuRukKqO/8Y3SJqMSSssZwuo7GR\nk7H6osutUYfj1K1C5dzw/s9r+7wXFz76A9ksfPKMqvACgR4AC/YW3GkH0XsP\nm9C/m/ONNCrmp85Bxd5kS5RguxRtuTHV+z5XvaCmtmjdyjv32wHyXgsFbOAF\njx2tZrRC+hwPlUBPPoyUhOrLTWW1kT7xnJzaunAUQw8fZ9H7lssSIbk8b7rt\n91gXbakFgLaFHF0Jo0K70COV6OeHfLf3foTnaoc+l+mG+7cHLZ5NTwt9PEfv\nnBUnHMfX5yIaqRoRnDbycxoSf8h/wSgTnbYyGyBaFyyKWFWr/CTgST4uDiar\nuljb0dltA0h7Wb/Q821e40KrO9mCy8TvHXnhqiQfajiBU4UsI6TMgIyE+uVB\nTVNyLBgTHmnnJd4f4MdEEyi3BCEdIx0z8gighFzfoLVm2ohv7NJBBFbmotRc\n5QU3\r\n=dZik\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"deaa4614564f41cf6e5041fee3a13841c5eeab4d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.113","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.12_1601263711675_0.31026719447927875","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.13-renovate-non-major-bf52e8ef79e237cf39d3b3b25a6163abc3fe4795":{"name":"@balena/jellyfish-sync","version":"3.0.13-renovate-non-major-bf52e8ef79e237cf39d3b3b25a6163abc3fe4795","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.13-renovate-non-major-bf52e8ef79e237cf39d3b3b25a6163abc3fe4795","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f5159672ff55d5d47da64f0acaeb8ef96d0a0b21","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.13-renovate-non-major-bf52e8ef79e237cf39d3b3b25a6163abc3fe4795.tgz","fileCount":27,"integrity":"sha512-mk4n7SPPTgqdnY3j8G641JluWj0Yq7rKNwRPJONDIH5g1e3PnQIZ2dSOxNKfujTIwXiblFrhgWVbUVqx1wviIw==","signatures":[{"sig":"MEUCIQCvd+EbLnS/3MzbTW85U49BkKrNuPc39Te1YhPlmBTu2wIgE/TeBMqRW53xSbhKsvjrODQfS3nRBiEJJWBDbnJqdnk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcWaXCRA9TVsSAnZWagAAbdIP/1R1s3sSC39Ro0OHF2Ds\nubSMgjV++G2MlozJpfAp5jfQ9pdDepGmweRVyOAiqWzN7+64cEYHqLaStuT8\n0+8GjglIZqEZkc8UTJCs/7dIMBBkuz0bHyhCnG3xz780FeBqcyeHey0lyIH3\nkjCVi/Mn+EyyhFBxTkqZ/wdxdPWkcxpsnvVNJzLXpmBDmgaYyFrJ4hGyRxCk\nIZjFedtebPDEDWcaAkZf8bQ0ylsC3LErhzxp/4i/bm3lN5TblK8xKq1Ym4vG\nak/zbFFbr95ZJWSAKV5W81I2BPkRn4Ex9lR8zimu6/YkRgoJwvaABPzl1+B4\nemfl3lWXZUJ8tIbQXghAUGrVGjQ3ZifvdQxsd7kVjtoBtZzYra3tcY5sfoG9\nn/sLUD4AJcBFQYVxGT8nlGyN5K3XWmw4oNoZd08p7FHLGmj0VR3uArQSJJ19\nS8VrCvcHWimMLVdmtj1Cfail5ggnux3AiLMpQjcjRooKYsFGhpNWixg1x8bc\nKfLYqMcnfsUYg+v0VcM6IQKvTvQ5PIC/BXfPr5et5++6ub+8Q17p2SRb95mR\nRwh5tIMfph8Bo+ELLuoeWfwGz6/AX2LnILyhSap9vnFFXcyFZkKJQfSmolfr\nN2PhZAfMRMfsXNMYpT5EdO5OgsCuCd4yjPWU48Oqf83ehf19W8gBND42ewpn\nBSy4\r\n=QKrK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf52e8ef79e237cf39d3b3b25a6163abc3fe4795","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.114","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.13-renovate-non-major-bf52e8ef79e237cf39d3b3b25a6163abc3fe4795_1601267351113_0.34196557939729977","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.13":{"name":"@balena/jellyfish-sync","version":"3.0.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.13","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d2e73cb8e1f48160c4ff1913dfd082d929b919f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.13.tgz","fileCount":27,"integrity":"sha512-ybUQRiAC6WPeKe7IPdXWjek3zxaI9ThByiB5HyWMF2OcvZYoFNlu7sjht8UtKu/suCJJcItlZwK20OUieP7Z5g==","signatures":[{"sig":"MEUCIQCIoYRxpdXohYkFpC/oYhtlZb+OSkIZPf9xQWKjGBMAPAIgf1O+K8NML6dODQWY7WGaAe0jUxcCF57Cx12uXBuAbcE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcWdOCRA9TVsSAnZWagAA6NgP+gP8izf4h2+8cnZWwbX6\nZBBZ85sr4C+msprhaxPFz5c2K01zuqFVKmVWseMSRiT6njpxP8/oylKI3gsN\nuSQcWzAjBiNB7wMRF1ZsxHK57/yyMPklHwMGfj13p9fN3Up1hEmWJZ3EGQ1X\n/EVAWQXdYx+2Zg8f+dg8eO6zTTEoRkLpc8K0mecun2Fo/pHzrr4AAUnO5Ch3\nVSxVi6S9EjZfZ3SPOOBscAma6+SpbJRuEdTatE5MZIIMWiIlt+W6xWWVarpn\ngnzur6VeEl/iThsnNxFHQCBUH93mk6myz0VZtzHTo9OVdtylCBvoScntVti6\nj+p6HIk0U7Y5MHnW2cQI58FTiZeV1BgmbvMYUmC4eY7Q7VfXvotsZSlL/Ixz\n57/3qhPhT63gJgjv2i0O9caurMarRxLTganSIy1WqyiM4s4wnpFCPmf3g3DP\nenrsOEIJJfFVsarG923zOM+4eSSgMXy2/xlwV/6UGZ3GVZ8pd3y6BvY0C3gW\n4z4wPaTXMkwh52u6rvHMuUf7nP1io3emiLTmJ3dxNIV36PJcBr91ImXi1f4o\nca2Sn9SrBNoMfDa+jcFoOS2F0O1Oywqh3ISzNdWFXJL4rTvY3hpy9viFFkBM\nloeoOZchFkvi96NubKcmHhRpKU/eO9ZdWdGB1cucnfNA0N7Xw8yDgeyZdK0S\nNjro\r\n=mH7i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3da932a883496a78763437d6dcf56a58231b70a9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.1.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.114","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.13_1601267533977_0.873185920225928","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.14-renovate-non-major-37d81368c3eec86b03a010347d55ac46b837c1b8":{"name":"@balena/jellyfish-sync","version":"3.0.14-renovate-non-major-37d81368c3eec86b03a010347d55ac46b837c1b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.14-renovate-non-major-37d81368c3eec86b03a010347d55ac46b837c1b8","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"33c942f64130a1077e30b03bd35d36f6d432bfc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.14-renovate-non-major-37d81368c3eec86b03a010347d55ac46b837c1b8.tgz","fileCount":27,"integrity":"sha512-ROISw+vAXuZ3bfZTwpEfpJcLzYzpkQY+634XPViz2SQVE7SXrZ584sTsZCRdEDcDG6gL2D/Q6V8vwFYVkrg9KQ==","signatures":[{"sig":"MEUCIBOHVycs83lXnPgV/ASqOJiZo2DVIUHaJnCtxc3ZNgs8AiEA/7J3vGcbS7TsmQcNcHk3zZd62C1Ppmft6MUVP3AS1+w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258328,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcYjICRA9TVsSAnZWagAAh18P/13RamcYJY0qUz5BiBdD\nmFUBxyPXg7ZxLwKTLIYkOXMUcM26DEMv1kVSTG1CxYT3W/tzX2mfxpHTPDYL\nlMP1opzzwUeyN95aOEm5/s0R1byW3oG0XS18BgyOcyZJFb6JG9KvlRkR5FC0\nshf0O31LxoIQsKy6JsoYLD9zE3XwUJnYnMnp8oKHST3/iC6Gkqjq1Sko6qDb\nSzWcG3IfdPApRmYtjb4M6K0YDwhPMM6t4t5QveLgRmZgKv9VdxtYckaP1zBH\n4thw0LfMzv7k6cWEK+FJpCFNdnzn/+VRSfxVeAGbMTZagXielPS4zzE/1d7S\nI6jd9Bt1RToCoDQ3p9q4H3G6rcnoHyqQSuMksWvFXboOhyj+LBusngviVE3M\n8s/jel0XZGBJPtowiX3C3n6OpCYIwktFuAARGD5WXQuu3+rc7ms1CFaaW6WB\nnqvenbNsYYUQrrzK6YyMlcKdaThk9IXEx7H/uoEI3MzzpBQPnbP46PkB5l+3\n8rtj4TpIUQhpf7V6DJ7t1kTTiwiLHDctsCdCehJYoB7pcJr/8RDxduNdN2QH\ngk0+y1TmOk0mDYX5mhjjESVPWdTdrR791fOEw0p961F8S4V2kIXlDOhviXom\nPQyCzWHaTpQzyB5KmEpopHyj1t9XryP+n1xGgpwlWFl0iKPPl4I+QaxuZABt\n21Yh\r\n=psez\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"37d81368c3eec86b03a010347d55ac46b837c1b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.114","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.14-renovate-non-major-37d81368c3eec86b03a010347d55ac46b837c1b8_1601276103934_0.4354099790282546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.14":{"name":"@balena/jellyfish-sync","version":"3.0.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.14","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4896bf2bd2cf96ba168e7fbdf980ff692f9e9587","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.14.tgz","fileCount":27,"integrity":"sha512-z7EhhQ2uTbGsgXkAZrpVvEGSG9oi6N/bfbBxNmmQGp6yk+I+3BEKljWh+7/8MknRRmgwjnjDKaQI0cTJSs++ng==","signatures":[{"sig":"MEYCIQCu7F62K0OshdwPRZKdBYRfyTKrgz74HQclkenvlPxmBQIhAILZXx/0lzvkxbSetWHFYrqtVv4hwuUPyuK8I7qklrKs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcYlxCRA9TVsSAnZWagAAfuUP/1Xq2GD/LHGA1BnHEr76\ngQstPgef7lIDP2dIcmxkNjiw87zJwK04KQfwxKJHsWEekQQrXsSS2frQ2oNS\nPETiLBwkdaZHNo0zPRCZWm93Sx2F/7LUfuqBuiMEqrzAdWnmwzyj5AsaCE0O\nmLj96RyzyX8cF3czIj2xTpJXa/CDrkc4D9xa9zzk0+GM6RpjI7bc9hyqTI2p\nCk1hupO39HTr7jBE+AH8BBid/Y9jKaq+JAQHB8+luAIEKCUpr6ilwvSh0id1\n3y/EJboudBQdN7cDrB/gCxcaTqVqVZ0WNMqUYPyFIZeqr3+JQnjw+mlnlCUe\noB2jMIY9dW7KqhPnex7kxlGj9qr9IuQmVsmbN/sZfTMektorsFfsd/YUMeKd\nQeG+CcK6gV8KG1e+t4yKwTlzs8+PSiF6MicXH5QmnTYiL2PE+rErqONiFigg\n0RPLjbvAAs4xaMmcgn7lQwg1F6jsxnNN7jxg7TuPPWnt2RBoAxYzpWlum0dV\nuRT4gwvOxJhoeHjwqYGtToeuoA9URLhH+BvGz52f4EqA5r99mG4XbbfKm+3N\n8HRJ0TlNRK/xyZy5FifAjV7id9TwnkYdKQKrEt8vyTxItPxRLKDFtwG4Qrrv\nZ8kjoP2ojZQPe71hDd6s7zn29wWxRn26JuIlajTQjg7LKjr99h1mkjsXFURl\nHEEI\r\n=nGCf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d16bc4249f401e5b32508a8664ddf1937222f744","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.114","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.14_1601276273529_0.6911172232831606","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.15-renovate-non-major-0a21869593bb140ddc0521df260fc8be0cee23f1":{"name":"@balena/jellyfish-sync","version":"3.0.15-renovate-non-major-0a21869593bb140ddc0521df260fc8be0cee23f1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.15-renovate-non-major-0a21869593bb140ddc0521df260fc8be0cee23f1","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"471ea598b18581d3df44ecc1e2388f84064547a6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.15-renovate-non-major-0a21869593bb140ddc0521df260fc8be0cee23f1.tgz","fileCount":27,"integrity":"sha512-UpDMfUNNKLQmneIw7YDwhxvdF/zXg+QXJl/rpNG+kYkwSoyl8xEj0cA49X3N+Wk6f2k1rf51/aI/AgnXvY27Wg==","signatures":[{"sig":"MEYCIQDy5blu772snhAlBJ4m7WliUNCkv+xSMaHl4bCFYtAMPgIhAMXfXYLaRFD9WqgKv2H3dfZKrcwVw/ACvFGT4yIvTyN2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfceCrCRA9TVsSAnZWagAAGDUP/25ibx1NZjElxC4dBwha\nQrTQkx2YjXFiKosiaicPpbyqlBA0+oub00TD8rUx6llHpkGP9dp2K+nQCCQW\nB9xxfCUvkLYTe/7TwUGHlYEwkzqq1nyi5wDKS5JM4f29R1fA5TKWFFkvqJ4/\njPhl3G1g2zrQamkux/H7k5Evn2vtd2zLZrd5bXwFgNjHhdglfcnHXfDIs/Zt\nGXQtUBKTWDuOyjKwEHc0DmtHYWQrTY/qg/z15tDEZyTt0kqvf6BCH+U1tNj/\ner3pVagbjkBZ4cjl6mxNmwXGt7+Hidfdh305FqjbLbWQRg4v0xjrUM00zTeG\nYMV276o/GVrV49aG888S+asCNLAUpiXFLu1+Xod+V8SFFDfAazEeFXNVTWMJ\nvO7wYlYxzPR/9rCWQL+83yF4/mztWa1GFnq/9LfCNb2a3b5YsMRmskoNIoos\nFinCUWE7lNThytx8fYpFnD8elPyL9vxlgKVDl6uenpAjBksxAGufPW6uTt4s\nMI8VOCxIqKxFQPQn2mj3vOubJbmDYQbL31PibniLFfRSbNM5fHEra+F3SfLs\nlFnMPaCYhd7/EcGzDZBqZ63gOp1cngFQz4+AyNScs8ERMrMPLgEyLcaDUgIh\nrtOZAVIDjiExOXOiCojLcq444Kicno2UdhQUvUjbd+KSHCFsAaf8/Ohk55mH\n12LA\r\n=SWHq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a21869593bb140ddc0521df260fc8be0cee23f1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.114","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.15-renovate-non-major-0a21869593bb140ddc0521df260fc8be0cee23f1_1601298602389_0.22720629342316379","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.15":{"name":"@balena/jellyfish-sync","version":"3.0.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.15","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22a89c8857b97b4cc9695b6591a98b74511302cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.15.tgz","fileCount":27,"integrity":"sha512-fhcEaj5Jat6YtBetgGebSgGevx00b6sdCd4YcBCABZzRQ+Ur5lL+Gty2Wgl46tjSUtubxeuCiC6vkjwPj8rO3A==","signatures":[{"sig":"MEUCIGcvUAPH4Zj2vpcBi+KwO4G/flCGwyTk+w+7WKeUvPyyAiEAyAI4IEItMWrOuOEFrZjqzdUEnU4BvkKQEKOew/5olX0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfceHECRA9TVsSAnZWagAA2qkP/RuRYlQFQBA46TuaBwxp\nULUp7YwOywZrUPkplJG37gG3wKUxQo+VrBPXOhzXIdxphUi73+ZkPDfsebZ3\n1oTpl3oAZGX7iQwxancNpXT6gjx8d3VOIvSYJWTtN6qz+Tzr0IWkaruwA0Y+\nex5g01ex50IRhiaRINN2cTvccD3rk/3QHnnCWUPsm3ujHTRcHSlmiF5DADDI\n19km35RTIqjEc4Y1cUtfKc+mXB1praXnhQ0IUbEOCURF71q3uN3ctgvGGIys\nIyvuJ54Lt01htJYpvfOKrde/EHfNxZ4bS260KiWeyQp+U6wl4rtRTFWpePTx\nHx1khilGz38XBuh+sHGggqtK/XbD3VO+7iosR6rZ/zNbQxbNkp8e+t1dZjPs\ns224JElk/JICWBnzTfgv6uc0ErVsZsRzC4JHTF1IEAqlRyDHbAepkKrZ6xAQ\n0h3fKU3HcOJkjQhNuRhTV0L74yF0cmW6V5fu1TaM00NG3KUQEoniylET9mme\nk70/SunYgqvoxD+DNn2YkSlc4GLLJw11P4FDowY1jsbm2Rzb53xuX+d5BKTg\nlXDtttC0IfRjTJnbiyvVX7plXdKxvwfO951UbTFtJRodWXtmL7UvVw7daGfs\ntnhjz4H9Ynd6b/GD9Y/nGOC3XKJQSnzDJsiFnwPAmpW9E/iRAHTZWowzh0b0\nhDkv\r\n=ibpO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8b5ee443fdc33c0c7f0046f1b7bb1556ca1155a0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.114","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.33"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.15_1601298883807_0.25082812815554756","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.16-renovate-non-major-225313a319e87e6646ac546133b6e613a8fa08f8":{"name":"@balena/jellyfish-sync","version":"3.0.16-renovate-non-major-225313a319e87e6646ac546133b6e613a8fa08f8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.16-renovate-non-major-225313a319e87e6646ac546133b6e613a8fa08f8","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fc909cf6cad49d06c7cc2c75e93ac28ea0677052","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.16-renovate-non-major-225313a319e87e6646ac546133b6e613a8fa08f8.tgz","fileCount":27,"integrity":"sha512-I8luH+Xnd1J4eBC5Ndu0JcSk1m/OJAj/3ax4u75PbDKq29zEvNyr4nCggNRSVXJyiQd8p5kFKcSNeyF1mA362g==","signatures":[{"sig":"MEUCIEbh66JAPj5WihpumiCWSFs/pbTIJkiXzUXPTpg4tgs2AiEA/SFj9eA9Cj04Vjc+VgCkF14aowO7hEU5lV24Cm+bZLs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcfsvCRA9TVsSAnZWagAAvMMP/1vBgpI0cDGpP/TUoCtH\nmPxVEWnCsq/wOz6HVH2pNPxxduiiGVZ98iM+eAqZ6jCTS3ycPHju3TKOFI9W\nY5+Hp6FfPoVym9s2jw69C5xTks05EHOBr+g5ttxc5nVpUNQzyyPuUkBHp/5Q\n9zQ1xkL7i7BokIv5ALkKQgVueLPaQRl0vOmWWwMSuEZ0nmc7CPzqZqwgNAiX\nxa9xRBM6lxauUxzE9fNQnP887Bb2duFniLRczSpywRUX/WrT4tPJoXvnEKeo\ns4Xe1v1djFRBuJ4EyKxL53nrm2ojVGvljzybksMlnZnXD+w4HxIeyoYAe1yc\n0uefnNdFV8ZlEclpS71tRYpFmg4eN+QBDxpDeORkS1jTq0sGbLI6kTY11Qgt\nDJC/f7ASnWE3PNcL1B9in0hbVVTlOA9zE9F2pZ5Dp2QSQU0HbZ6gLzp8BFut\n7XN88hZz+pWFnxhbDEhGmhd1DGkg9Pox1aPWBEXdyKaOOwPTAFjrpdnLdguW\nnVUyRpUHIuK5joVBM9q9RrLc5rJ/2qkI++oYo/dKEkDvNKoY3vyezAGhGjh1\nXH6ckRuZ9Ka1HtWsp5bvPzOBDxfDdekw4MAinbGLRc/R4UoRftLnzeNfr+/6\np/Kk3mPW2swkrtn512hwPkOZPxHPxOfeNk4F2yUUR/a4iqkwSehREwAaCaZt\nsBza\r\n=4i1J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"225313a319e87e6646ac546133b6e613a8fa08f8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.115","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.34"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.16-renovate-non-major-225313a319e87e6646ac546133b6e613a8fa08f8_1601305390705_0.9443865990250182","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.16":{"name":"@balena/jellyfish-sync","version":"3.0.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.16","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e249c15139b6dc85bbbf8fb281c78b4b5746ecd2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.16.tgz","fileCount":27,"integrity":"sha512-Z+Qq1ET6xdY1qBBao6/omZjD2tw+nOxifstTD/Rr8pumA1RN4v7Hswcw6rzQB1NLaOS43F0w8Nu1a1lmsmIgzw==","signatures":[{"sig":"MEQCIAc5qSQvj5h1P11M24nw8A7Txf0Zg7Evu6oNVe6lXEmSAiBNugO5eztEPsts05OMPcy5MlmPHCYIqX1SuBlZRqko2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfcfvPCRA9TVsSAnZWagAA9ocQAI6xHwIQD/UhHj8CDoNa\naew4ryNijUgFhCanT6eYgPjVLbibDHJRf1n7smBBxLn6sx4oTu/XXJZJtICG\nUQPtK1uwWR89uM6tmaNFwOtyuAS6UukQ7DhpqfpTw9QTw93R8bG59dAQQ5Rm\ngPjN905H/42z4RlxbfcUj6P+U+OGly3kZlor4IOjMbGOTzH6Z+eLeP9uC/n9\ncFP6Q4/FlF/VnXBf32oD3nfuDPPMXX3SZ8BLSVFZPjmrGzXcV5bXcP2rbo9K\nwUYKhDoABKkbZRA3dQMp32FZz8FYBZlJ7ZbdGRu8rlglgXZO/kblxLB+WJJJ\niH+rAPI65fVBmO907i4AydKbzAlnb42PGgtwMBKfF71pO/Sh7qaO3ZaLS37g\nFXXKZNq5pZgLMv/moZ9Pfo0/6e+dJutHzWtfKkY4lR5VMQla+A++no5d/1K6\nflFIwxrnxlQOw5K8k3HSgS6Co3yX9r3cB6+AqVKcF0aWCqGzV+scEJpxkv2f\nQf/4zbmEeSFkzg1jUst6z8x3JCWT1gSFH8t5/qD05wT2aRwZoY7TdwWvgqCx\nnP7901sy3WJG8aA3zdns7nheuXaa+ahNg9b35Z4uwhP/bDnt0iwI11nR9BpI\nEIFwv4zWKdWodcHEUh+x4eVqQiQ7kzyhSvC+jSUzOvgBqAszCgYrWp2hVFjk\nvcnc\r\n=S3wQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"17f75fbb70ff9c79082a245a899fc72d4393e07a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.115","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.34"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.16_1601305550420_0.32179492581310454","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.17-renovate-non-major-52e28aad832cd7c0de539f9db7ce09639be9edb3":{"name":"@balena/jellyfish-sync","version":"3.0.17-renovate-non-major-52e28aad832cd7c0de539f9db7ce09639be9edb3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.17-renovate-non-major-52e28aad832cd7c0de539f9db7ce09639be9edb3","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4520a8feec79ffb69312c71e80c65a356163a1d8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.17-renovate-non-major-52e28aad832cd7c0de539f9db7ce09639be9edb3.tgz","fileCount":27,"integrity":"sha512-bu8IOzU1vTkFD+EeqfG5WYB9Cm9p62KEEOKvRp+m6f/EMVOv9Q3vmr+CCPBOrGT1073jNG9iWtOqQFLUr7d6Vw==","signatures":[{"sig":"MEUCIEkPNS3PRAY/H90gpfqM8ung8BNB+lYcoN1GQ+W5f51uAiEAqrPzEVcemVgYVu54kkNxh9yMF0vvyQdOmC7ibAi0+k0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc1loCRA9TVsSAnZWagAAx6cP/jMPRQkmiDeWRw3sWxqF\n71Io4hBPE/ic7sruVsN0A4bTxPawkcwSPf/Oi3Jb9oGdPDlgSkXxgGuj9D+7\nRcsTMzYM1bRqSaTm1awtzp6/0deVk9jA2GyZXtrdlEu6GKyw08LM7sqsFbKn\n5eLQXWK1vqXX/uTGFvEgeV/fNlZPL/cZp0Rta5DRHORZ+UpbCiTsOM5cwyEO\njbpN+ymmuXz2aPqqmTkTurWKkfCd70MRtA4cZtY2M5k56uCFknDzvnraLy80\nOrfMFa7my2ve7Alnw6Y2Euslr5Qm3rho5WivJSEOSmY5RT+89J8ZmT2iwrkX\ncj69AUnQruc02lG+sQeSKevv0i3iG28caoL4yORSeyIyclS7sW8p62LBN60J\nwAgNQDwQb9iXzIIDYvEjN9ppLzWYNiuJa0c4dJjBdwcFkkWvkm3WZGm5fOpZ\neYL9Ngm7HDdmWHh5Geq0TXI0a8nTE7Nc98Zp5lCrW2GxMGeqXLncKPVo6kAz\n/bBD/TRaDR52C4hUIdKrxOh6IKdpSF9fC8hhI+vLpD6GehtLUag2rDSLeEpL\n++xi/UcOjLa+VjLFImv2pl2HfhWlleK7dM8p44laVMPxsBgRSeW+nJv/RQAS\njT7P9i8lLpxRHlPhlZc1BlfqXusmXili6hzWbhI/TSHk0r9o6T58TL4wDDWU\n51HX\r\n=8dgX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"52e28aad832cd7c0de539f9db7ce09639be9edb3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.116","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.34"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.17-renovate-non-major-52e28aad832cd7c0de539f9db7ce09639be9edb3_1601395048192_0.6891476395893132","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.17":{"name":"@balena/jellyfish-sync","version":"3.0.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.17","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"317139f648b5f1da0ef4db35cc359cab7dc33115","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.17.tgz","fileCount":27,"integrity":"sha512-WHiVpY5srlvQgrEX9wGMPRQOGM9SImxjLQzHNQao3yhkVlOolCVeNHxUe8aJovdStQB0EVQS+mvu/vqyotp4VQ==","signatures":[{"sig":"MEQCIH7cwKrvyyDGzcvkDjjvHJx0Mli2yOJgnax7272137rIAiB0cUyi3dJdrpD46dR8i2wan8T8EBaKEwJWX2TzzwMsTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc1ogCRA9TVsSAnZWagAAeV8P/Awbht52pJbl1yVkHDM+\nVByhC+1w4t/UxZD038GjUZBrLV/B7L2F4GktYhvREM99wcilHMx2paxYuE3m\nnWhDRRhutwYtjhiYgAolDJOfXfyRkWfNrkxCX7NIzrJ+qdU6uxEsdvlA3yPv\n8rCpkqyTpx4k6vRkwELoFCLmEezP31pz+rGprNXKcLeEngpoNH9Bsjl2L/R8\nfQSjRrP/UNPNhRZz+n0t95rRjYSAMb8Q9Rtb4zBQT8N8mXY7Fp1cMCRGQqir\nlX5qSc4vLM20n/L5pBnbVEP8e8Ur5/sxgXsC5mFeIgJnrmIAL7117/Xqx+G7\njaHH8jiHDeZmcEXIWurL7P76LaDpDqJzSRr/QH3lxHyBQVeY48DMDr47KLWp\nYTc/+oTrK1myB7fnekiX0kLFjLGE44dtef9c33OZX07O6WNvxNcTeUittflC\nqsKaBsHgQr6XlOmQW8lv8yPYsFrJVeJ8w5IFUBWNy2T4tUPyiML1dchyAby8\n8+Bo/Hlei/vgh5Cw3eamkU5kqLXuwBTYLFmdYdfE1J7iYB/+je/C1FHGCiaD\nEYtPeLZijgiE2bJCdqBMfdYpApoLBscoRqvu8v1v+7Y6RkQJHbAmp6PJiiqK\nZvnkPteuCyib76vlIdoxpQDuNGWfCF/c6UKPHPOISQFabqAlFzJEHtbunNAt\nQagn\r\n=Cg82\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"67beef9369e8f5118f9ee3b6ade3458b2797abc1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.116","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.34"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.17_1601395231972_0.4253021708389424","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.18-renovate-non-major-4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18":{"name":"@balena/jellyfish-sync","version":"3.0.18-renovate-non-major-4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.18-renovate-non-major-4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2f17cd2eb35bf518e4b2f7b5e2800e565ccfc914","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.18-renovate-non-major-4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18.tgz","fileCount":27,"integrity":"sha512-b3V7Hq22xwy7Gxyt3gPKr/Tn9puLN0+ElfvLUHS/akxjR9qgGUUT5VaG/me6/h38KgOGULjH4wOVdBxee8qPWg==","signatures":[{"sig":"MEUCIC53sv62dMZ4EqdbiPCIxruZ+QDuFllEp472XNplW6y3AiEAkteAHcNu93uUIGgyZw2/SNSJQAZXKzuokg0mFYhzxQA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258675,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc3mVCRA9TVsSAnZWagAAQfoP/AnXjBm8gm0fKUo3N7jJ\nmvY9dleTtgBFm7aPEeXOeIucQ0SRTX+YUDHxs0nyKq/EPqLInAriEjyCALhi\nqxkkDxHFBWr+Cn0sSWFLnVBcSA65nIybhpKhpe6H60rIcxmQdGdL3K95DHCT\nLS9xmrZUqP5YbSXMiuXW7nhD6l2fJPf1IURVmlYK3llT1Qbjug+EauLexEdW\nqSOmtsJdb0YwSWEAsXymHSr4s8uGfJuyITFsgU5/V+1hYRYlhBMMmnMDjK6P\n5G19W0Eesu6sCzett/BRNTL6h+7BZO1dxSsulf9V3pBKQOdDcIJmJ14wWrEW\nWdWGVKE+5h/Pt+muU0cIOuzamfZ8L4jSmUm1pvEC+zXAqAmpPkY+YDvtS7xa\nu69CvuOyXNGaJaFCzm5/fB539HHA34R/kwjOGNKzmThRZR44k8q9xj6RdFB5\nBHFKfYH87+Yr/LtSLukQG865prv3HCvR/gJ2xld1sNlfJbjFCVwLgQ06EeZy\nT1y0h55R6z3rGjmFvAdSTLU6zI9oCLNtYHiCilyVsKt+NPzhlTvsuXYz1SKj\nSlzjgZ87regRCgpkFTydQi3JeHcfkUsfQQ5oynQacp1U10IVdoD2a7B6oG01\n8sQOuXnUCetHg48rtEXQ7FM+ttnkr+pxvfKiNJC/lcpj+kQ2riFUnQubXAvY\nfzkW\r\n=hTXp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.117","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.34"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.18-renovate-non-major-4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18_1601403285193_0.4461929391627082","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.18":{"name":"@balena/jellyfish-sync","version":"3.0.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.18","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"870d9049003ded4bfc7b893a52e31625fbba2b61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.18.tgz","fileCount":27,"integrity":"sha512-KUviHkhIrynJZhpqhpm30/1L2KhSfd2eCebkOzKN/D8mburIEAP8565L0LV99ubIAOBa08jUSe0zm+3Eg4Iwsg==","signatures":[{"sig":"MEUCIQD0gMQA4o1gkaRze3j5LS1+KXP4+BGy0PrBXuBh6G3e8wIgIkrr2lkgKESZDblbBhU/UHoTcD0vVCWB9vG9yFgEzG8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfc3pWCRA9TVsSAnZWagAArx4P/2TSoap44dfm8E9jbzjj\nrXui7TX/NFL8oOOtd0GB5SyB+4EbIG/cx3mTC4egIZixTgcV8oYB1VS+Hitm\nEnnf/5mk+jCxBfgGuRs8aZxxLteFJ/ccrCqGYJQLCWfrfqkKkxUuVR2J+RSn\ncVWa6OTaVM+WNRhDn/i58RVQQqf2xMxmABig36xfvVMlGeHJ6BQr3btt64jj\n18vmwpccE1FGWBC9F/b1aIE2CxBR6SHsHT7rtqbo+PUr8CMEZpzS+obcwJOu\ndBKq99zalYs5JviffCY33klfcoqKTwP/pkEkcDesgfnbs71mOcsohHHzF+7H\nlpJEBSUKiFPwyke8HLryh2jpSE8snG/fIMompwOG/IMgjAOqSx7w9wOLAiDo\nwnzhXohLZPg85Zc9wIRGMJFN7N+VUbx7uhTJ7ZpT65Cr/KSR+gxk6AtwK+l5\nMAPBtTf0w39iFeCPOKmaT2rHIsxtpeLF1w7PbpZ7gZogSsYHYH1WLweUQJF4\nlFukmuchNPTWuKiUKQEOq3TCbzoklgBSy3NzJ6IZHPMBYLG1w6tEC7IfMc24\nm/knZHOEi//QUbnZ7P2zjCXtEUORchOvCyFL7ntwGXpBTuiClbsOpzQ8wxSM\nRZE3oM50mLBEjevg1SRDk5QtZbld8s6+MvwvgG1cKxfkkUFWqVSxxFVDHKZM\nOEBv\r\n=GBXK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d2f21f3f7da3ce45c16d971c8e0ac51650e33954","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.117","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.34"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.18_1601403477972_0.3094750359730214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.19-renovate-non-major-9328309ff94bf2aa1b66054f2b646abba703f60d":{"name":"@balena/jellyfish-sync","version":"3.0.19-renovate-non-major-9328309ff94bf2aa1b66054f2b646abba703f60d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.19-renovate-non-major-9328309ff94bf2aa1b66054f2b646abba703f60d","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"506405140e392e5cd18b0533a255404bc795e7a9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.19-renovate-non-major-9328309ff94bf2aa1b66054f2b646abba703f60d.tgz","fileCount":27,"integrity":"sha512-HsGJnbOrXKiwn3fSzyiN1+2TgSlukUbsKS2kbghP6Y62qk5M/RcrE7xuuyNA7buY3LltwMnHAamKkzpxQYzusQ==","signatures":[{"sig":"MEYCIQD56eOeFMaPIBqA3bIhf7q1wtCXEouikku/BwmXZ30ULwIhAIKv49NeIkw5n2z1bGXtWnz7HtObPAi35Gts6TThzd03","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdKUbCRA9TVsSAnZWagAApEgP/RU/d6JDiK/VmpIRoFJp\nh7O6F3dgsdGonP2DIsMjLDAcO6SNdR+0HWQd4cKSibKP4+dmITkpTk0wxhAU\nHT4AsH9KCMAOqP3Ih4K0j8b5lXyH3VT0ezRQQ7/wsNMvu3p6PENgCE1jAEMX\nRBQ3TGMxz2ZtcDC1ICVJjsFto6kl5wu7mlLUq5UMrgFe0JUrfs0eIbSaB+Bv\n0Q8tP0y15+D9VGfXV5lE8yUDfqm26nO6YqveJhiFoPbV2pRjdth93BYAjyNU\noASm43aa2KT1SyFgrwXfyL1MxUpoxVNSOpy5TVerZYr4ZAMO/Rf6Uwg4/7Xl\nlmSvgCW93BjPmQzsR/PRYxJWKPBTK/Q46jVDioNyORFzIHGL4EBqk1RiIHap\nRdDGJh7HV37BomFLgU7P3O9D5IAEwMfbDxNoXoGPVpJKjATZ7WuhXG4wZVo1\nJXL6gqucm2xl4AGwwUo2a3j064fkt/y9203JaXsWrUCl6hzjdq8XFB12amZc\ncry3s27f31Ezs7ui4rEm+TSgdWD8cGlRYQU25E/ZJZPNYIP5TUHERP9tk2La\n7J7tpF0VNCaLj9OOOmpSwNiceGuQWi/DpieXvPhaRpuiohvObqSEAgj3JKwr\nMeviZ3IWgOKfz6qVjOk+TfL5GSn5wGDck2yq4GZ4XxIVNXuSb4BWtmmeixrS\n/0GT\r\n=vi1X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9328309ff94bf2aa1b66054f2b646abba703f60d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.118","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.35"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.19-renovate-non-major-9328309ff94bf2aa1b66054f2b646abba703f60d_1601479963201_0.27158987757724207","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.19":{"name":"@balena/jellyfish-sync","version":"3.0.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.19","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"da197cb237007ad9eea91716055f50f155ba4da3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.19.tgz","fileCount":27,"integrity":"sha512-smCXoqiTauB5z4aT2TpvR+hYmA87GYGT9hxvKQHlTcmrgc77MzxrIKQBHmJE0zRC5VX3NpHWdtPUm8SQi5/1+Q==","signatures":[{"sig":"MEUCIHWFptYO8Q9d71IYVO0I0hh+m3i/fQnDDM8yd6HsP8rVAiEAuZfHKzzN7/EjKfEorDccyWnyB0ZaFR8LUOPO/LkZvIQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdKYICRA9TVsSAnZWagAAG7YP/0GyJy3R7ghrSFn3YpIM\nlTqg+shxHO/sqAv3kqaoYvbmVGzPSSkd6KPt5b8iH7cIp4cG5uiY2P52TWX0\nqkSp85muNvTZAEQ4iy0w92gwQbJ5ocHZGgwM6mmMSHoaFVGMWHfuP2Kge+iT\nhy2iR4lXBBv3AQwmxom8IJQy+A7WF4CpMff51+DQ5h9fswPiMWHY8ohoUC+b\n7xIlmDS7ciOVTMf4Soe8d/RNbiuG84ArAh5LfMO9HD6v6xnoyBVLu703eq36\nj0RguFBNLDntAa+94CACJ+MV8KojnV70Dzj79wgYcfMFQZk2KR7vqZARsEIs\n5X1gfYdGXw8Yp4Cckl4ALChFR3DtJsF5ynUCOl96xJfQWSBGl7b6VbT0DCNU\nWirME5Oy7SaNYAOQjOFlDReMFSGxPDT3lY2c/HYsnAtlrj/kFfjDbIvL3efE\nCINxAcDbdlh3lCaF8UcuLpHVPLDmlu7bJA237lgOODDyB+HvOHRfL+wv/IrI\naHwTgK/tL5Y3rflu0z4gCr3lWC1/yVnn5TNJ1v/2DHRz6rSXhU288dpGi8h7\nIRBveeLWW5hDqB8c3mQxvfCJ+Exz+WWO6cVO+CTK+AXWtQIwWLogIsh/53ST\nZtFt6MLyDq8BzQnkud94dcBbIcJ38E6BbQYQAtc4gfdXePkM8x1T9PFbSOav\nqLZX\r\n=Ce5w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"285bf598fbe8bad7d3e6085e48a496345bbba267","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.118","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.35"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.19_1601480200270_0.4914061385137172","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.20-renovate-non-major-c6cc7d40fc6491aaf361e59447f402c96e663b58":{"name":"@balena/jellyfish-sync","version":"3.0.20-renovate-non-major-c6cc7d40fc6491aaf361e59447f402c96e663b58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.20-renovate-non-major-c6cc7d40fc6491aaf361e59447f402c96e663b58","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f854e8e4505ded604ca272eb1776a8c6de5f9799","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.20-renovate-non-major-c6cc7d40fc6491aaf361e59447f402c96e663b58.tgz","fileCount":27,"integrity":"sha512-PuCWyE8kbGEw8tEfPOkDA2fGW+k2reL97dSuFzSoBXiZ1IoBqpaRS1Vh2MiHUBsrB2DaHYVWJKLKaZQDRw5F2A==","signatures":[{"sig":"MEQCIG1Ey54yWmsafgUsZ+7lCzRnRGsQ+uyItvyTmDlgVyvyAiBfNlYzYuHTqMdLKVDDggTCB/OmGkZFm4+TLDqcruLTKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd2A5CRA9TVsSAnZWagAAtikP/0Qy7zrj/DhXEr8z8e4d\n0ktekTCd+yBc8SlyKP+6wRYL3Ir9OxFAIXBjczY5iehqKFndAwjmBcvHs/Vb\nfA4IXjE3DtE9yQ+7aex+II9NiPudMUOdGEqmrbDwCSY3M5wKSKXtuExMtzjV\nr6VAfZUe9xX7esuoyDINXvgiDObGae6fF9aaFNXN9G9VtijZW5ZAivd8fxlE\nIRvIYoprvLZMmqdn0kfvrLVIjfIpOgYYtWwXkJiHk2s04/s2fUbSfcb+qPcs\nelYeh2is87a49ZnKyRtuswDqoR8WsSDZdZtzchbcyYW48u4Bm0IlOigjUrdJ\nNgRylsC5o7xw0r3jE917UD3HzXNVcmsuduFgNsDvnHQ0OPAz7Rz5vOzQ1mtS\npTcsQMxjG9VON9JJm5LfiaLBdVEH0WY++vujqUXpxM+YDjw0Aaf8jpawsUa3\nqcayG8jgHzCbAacHYmiLv0eKg4ZO10h/5KdjCoojcjc0eUgj6DIwe9bm/SPl\nuyW7S2P/DEX2zGOUOIjv0eGEBqJH5aStA+E2pPFQ+NYeqPse3fu6wYhQsb9i\nuHOr/IbGvLwFmPLcfGXMGoOSlmDWXoL4fDY7j2+c9hNipLUGIOdFB8rSZNdM\nCbyeKP17jlNkC6ncKhKysCfLY1zGLZV1WnIOXtyFszniEJWx6wOhl69kmdve\nfvtp\r\n=fZxG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c6cc7d40fc6491aaf361e59447f402c96e663b58","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.118","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.35"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.20-renovate-non-major-c6cc7d40fc6491aaf361e59447f402c96e663b58_1601658936951_0.20296952170322968","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.20":{"name":"@balena/jellyfish-sync","version":"3.0.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.20","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2e4ea6249b54dedde42ff833eb5d4df90da05074","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.20.tgz","fileCount":27,"integrity":"sha512-vBQbDp6xNXckSyRTE53gqGLeXsKfYWRU642cYxcadP4MJcpq9l4jU8fWXfhS7rhgmgAP3un7pjUYHGCMjxcfLg==","signatures":[{"sig":"MEUCIFVuG3wuwQp+RYmhXE17/GfxwSd2Q9k8Nq8QUQRbedXaAiEAn6OlHwlKi+Lq/Nk4WpA1K8o6VXcah1Vz+hqfkDxuf1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd2K7CRA9TVsSAnZWagAAbzYP/ivzm1IU8Uwp3ClJ1DIk\nRntJwJxfJ1rdUdxfH2lZFpPJop1ZASWjsppFQNXdyLfSt2IlneSciIOlKNn8\nfSC1i49zZ+xKTiMe4MqtNI/RBd6edk5NRZv6E2P02iX2KeOneaq3L0XgMXjr\nsPLwBd+HTlbxp838g72ddxZKIwj0WoTsx2wSFB48s0xktUrojNcmwtLfMQpD\nfnzMoe/AcdzCg2wpBtidyXVHDFEii49DWnIKBh3nT85jhEAIvnq7koXF4Jju\ntbjXVr8pgcOvmWCjSz3CsiwtJA9zSfzl/RQOCoDKmAbHBi8BmW9m8OCBSUpQ\n+3q2/RuUDBSRDBmdoZ4tRnI9E9hT8Kol+wb4zCz3/2DznDjhSWlzCOUfkdN2\ncCjp4AzGEQAX6WKvx7TMi9vjuIDvE7FYuxQPSpkEl5gGWv1p3fq4GJcTsElR\nTnLSapwcrCO3M1Ftx+mqgZic/CFVVA8VNDxxc2C1kJcgYDgOVYFH7ESNVfK8\niyAW+UA4kcdbjgqHUbjteChww/wkcmpK4riJ32tdnUD8cLSjBsOPNl72hUS/\nDm5y5bA31HqGuFu/Tg9sB5WiingmXoskLBBawu4Fm3xY6XkOBzvwv9ze2r+P\n0QocCGepPgPQbumDpDGARtnb0/b1wyxFSeQeQqx1DV4YTtEOPc3ylaOlKh2Y\nZ8z+\r\n=uO33\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2849d32ad09f99fe62a5b4519533f8d1233a1aa0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.118","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.35"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.20_1601659578753_0.08676988761865578","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.21-renovate-non-major-9d1402ef67229fb8d3681947bed2b24155a84a0c":{"name":"@balena/jellyfish-sync","version":"3.0.21-renovate-non-major-9d1402ef67229fb8d3681947bed2b24155a84a0c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.21-renovate-non-major-9d1402ef67229fb8d3681947bed2b24155a84a0c","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"25a2e33e90ec2e982e739dce24965e4dd9e67f63","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.21-renovate-non-major-9d1402ef67229fb8d3681947bed2b24155a84a0c.tgz","fileCount":27,"integrity":"sha512-pOpdZVAwxpRB6yppkz2F0fOF655WVGqr4OkPAaugCHS319sJhDV2dKopk/STAsCOjnpyNOZEmlzw1enLZhxxgw==","signatures":[{"sig":"MEQCIHdyVSQNAI8MHuukMElBXGMz82s79LyWjn34n9QTmNRZAiBxxaCZl/rWzzINZz4qCTvqG+eCmpZjvJhLcPgTruTafw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258953,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd2QbCRA9TVsSAnZWagAA6JIP/2t6N8R6mHtyB04412B6\nOQR3lqPoG7WCpIe/GMUiUzylAlH+8CCT6P6Tx699iTvov0mxElBbtA3to13+\nKGIFM3Gw+os63PtMO1qkotJxXpoQMMDdFUBWHzLAvXydbaPYOwpFZgn2atCc\nJTy37UUCLbPNJRjgq+Z+AyXBtQGSPvzn+vYDFWu7RdMEKqtF1KW6nzgplUDw\nf1UZOVGWIsYkyuA4ZzOlM0d1loawhgVGuaN/RfgQpLlLYgt2xXj+4rR74/lQ\niaTj+UYyUiIYaXk6fnOrYNGNIcCQ4N65LFTjNM1rPHlGYtpJOjWEvGyFw8wZ\nE0wbSo9KbCoc4xBmeUAalxCjr3seKd2gUVrGtznrTtswTPhiXg85QIi6KXwB\nvjQYoLQcU1BPVlRBcM4OwyIVkG+lMZN2Xp3WeoPPgKQ/9a1Tppk5vvaC4c6H\naEVTZLWkDXa6VgYInEllTHtYUzTNixh9Im5fch8muB+6a2vJtW+mKJ6+AUdT\nYwpQ68rMfCp/IoS9oxrf3qKPEVBtPDNRu6v5C+9gw5v07hvUj7IRdSIWXg5I\nd2bbndV/mo5yO15jFtkRkcsjDPnSp34NRo4Mt4qfrblvuyOdxxyPgsZVuvUH\nISqOlId3Zefp3+T17QzmVez90j6kcW5Hj8dxsF8e997JWlHWL8OCXXX7S3Xl\nLv0T\r\n=88NM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9d1402ef67229fb8d3681947bed2b24155a84a0c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.119","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.35"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.21-renovate-non-major-9d1402ef67229fb8d3681947bed2b24155a84a0c_1601659931041_0.29646939773555014","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.21-renovate-non-major-1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03":{"name":"@balena/jellyfish-sync","version":"3.0.21-renovate-non-major-1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.21-renovate-non-major-1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0117f5b30a81b0b54da16bbda92355dac39709d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.21-renovate-non-major-1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03.tgz","fileCount":27,"integrity":"sha512-KEgxaZKrfphqT+cRuawZ+IvPOaBR0anHbia+cxe4fy89sg3eooUVthrmI/irOTD02/ofXzHRfizSCFSr1Z1l5A==","signatures":[{"sig":"MEQCIGADprlVYiblflz8Laidn8eQiPPNXKxlG5hktiaXClLvAiBN2BYc863UQPzkPYQ5mmJDO85GChss4/d+khV1f/5x5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd2VoCRA9TVsSAnZWagAAx3IQAIGP06K0d7jBB/UZ79t9\n/OfEhPDYu9BfSkzOcw+pALITcgRTxu6IMzCkoXUVJK+ECt0MVWKMu6+NM7Kg\nANjoB4grgdPY1gQiIxBwbAW92WDilUnfTvqCuNEyDXZiCr6Rud7oExNQgKED\naukhzWXSqaCKcnXOPqMG9d/YyG81qFA8mRqTkxXsQzMxgDBJWDVhyZgrBKCo\nXWhQVtzD12TAAj+0roj0AUzgEfqfPUplxW6f3Zv4npIUoHwclPBxX7VhUkkq\nGE7URBRivlkc2Uud6darDwSxeQDk9yXp78NN7Ar6RMYgzlGJEx+EDKVb2ziX\nwxzhWg9/zYF8zJeBWcLtBeqIGKTYSkQE4ovOFsHNfhEDqYGfhdzsFPd7X7rA\n6EeaKeAHbbjBdeJhwimhSZkoP7m9jsr4Hko/FcwalCIDTNtYZ1kEhKjZ4UhH\nQZgHsYuLN2zDpneRx7H/PrboapAWTcVM2jRewUvNpPmubbuy24QWmF/lyjBY\nMtv1xjxoHd+9mtb05F4+ZGLp5PBB6jtE7238X9pj+1d1PBMyLnVuotzvyoan\nI8alAf5/TFwy6RCGsyZbHffJPYq+Tov7y1S+hVByVRxdWTEet9SrKSOMy5Oq\nVINYHwmkjIj7UfQ40+ddyel/P1XIGAezwa6GDyMj9fZP+djvnehMP1RiK2F5\n8y76\r\n=Sxek\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.119","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.21-renovate-non-major-1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03_1601660264257_0.08582987686044885","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.21-renovate-non-major-0089a5325f3377dfa0100b86239827d3522c2c45":{"name":"@balena/jellyfish-sync","version":"3.0.21-renovate-non-major-0089a5325f3377dfa0100b86239827d3522c2c45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.21-renovate-non-major-0089a5325f3377dfa0100b86239827d3522c2c45","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a3cce54a33bf63d0aa42f4d1fdb23f48ed4ce5cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.21-renovate-non-major-0089a5325f3377dfa0100b86239827d3522c2c45.tgz","fileCount":27,"integrity":"sha512-8JRA5HlRjcN5zE/zfTAM8kVaZ4C6j2a0Pu+UgoPyXSxv6C5WzLFFOqvaTTBEvj0AEfBgItDseCHV02g+/Kps4A==","signatures":[{"sig":"MEQCIFdvT0xAA1bf46QKB5DcXzTrKh8IaRsWnFVzjcjMdOI7AiBLMXOmY9atNIBAs3I+1MkndD8gmlXbtxz5uuou2wt4Gg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd38ZCRA9TVsSAnZWagAArSkP/10x0AZcd9C2vV9tkE+i\nNgMRE1o4vpRSSKtxit8rbuMIcL2NlwH7lT3neIeZj16ulYpfpe47E8Is7EzH\n/y+lWYw0zQVtUfLpd+ETwF/wmZOr3dmRKBEW9akBn06Nr/ouAxdzxO41SCSO\nNkVjv9U5wdoUKywzAYO+ylOtY+z84UgmqR4VX2zaCLNE1RqcJ6hbT54VIFYR\nh9MVXw9En/eyBdmwd8p6pHy1jgrSpa46Fl7nnfqpeSQFXTGB9iH79iwtJrlg\nfdUAFmLyCsKXWhIQ0ovPF4hOvv9tMNz0NlkYczyl4vp0zr2OMXjRPcul9vFs\npW8gc5qR99bbekEDMNrhuhNQ8KwwJAfvbj8S9t6NpUKy+gVcEBFna+3ICaaa\nxwhbgmPl/Gsx6+BtTV1LLUJnLI9eEdvOwqB+LggKv1AzSHLYI5xFlCser/hN\ncJ41BiRONuTFJqPYq6/4pj0lQhOTL1U5r7otIscCegBGWF+AMKZQTE/Y8xNT\n7HTsBpOd47JWLF8j2gkSBGnrMGO+pCerL1mZB7h47rEMFJcLbQSFb/4WTsoC\naoMOIVb61x8ojmHjPiHEOm0tWhpVffWZ6MXafZwVl+6UiYweB4OCvXXLOHza\nhdiDqLeucKf+aKimct7b7NYiqWFuCAncH/4rY/0xCedIx2wLawjRWAEu1foB\n9b0S\r\n=OSq+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0089a5325f3377dfa0100b86239827d3522c2c45","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.121","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.21-renovate-non-major-0089a5325f3377dfa0100b86239827d3522c2c45_1601666841243_0.343038529394206","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.21":{"name":"@balena/jellyfish-sync","version":"3.0.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.21","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7ea9c7d7e56995fa03add53d42d7766b3b8112f9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.21.tgz","fileCount":27,"integrity":"sha512-I+mU4EFIDQUrrmyoD+DXMTOGP3a9bgOHhDuAFpJxx39tuZ9auTw1/xC58DeR6yulk0slvISI1iSOcXheySHRPA==","signatures":[{"sig":"MEUCIHvWwyAJZWCujDQPjQ0XhEsxee2ExmQneUPuizA0m4faAiEAxkJFRi0zlLBSUjah5Cclub9bfOPhAY0RgV/HKs8Rqlw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd3/UCRA9TVsSAnZWagAAYp4P/A48hwyGm8PfrBsjpZI5\niBpGdGpE4ZBOWjtT8lcxYeQ1uxNhq+CzS7kfzduS6b+goLbstY4S+0BoE+FE\nT76HkCoS3m6fZa3EXtWV7YVX75b3Tkl4X0a0C3/13eiITpy2pw7jEb/i79x2\nrb2KmrGCGRvnjWCWKjwYz31BmMUemaXD+RzPCFQfuKUZUrdBSpxD3at56jqB\nRchz0ph6TOQOpkDeaR95YEMFOy1skq4t+EPbdovFK8gVGK53UoymKJ2aAReW\nkpB6t2r8ppmgJk1o+YXBJC6BUaFZIJY8PCA2vnyzoFa/CfMBM9UAUtTi48BG\new8QP9znjaPL6whigYdoLHKIu97rRanzasBUpH6uBULdVr+d9UCw7ZYL+prf\nS1GWO1dYDDUoy3XORNYtvCym5S6RxCJbGd/1EEGwX7JHNQUE2+NlGVgvKZ6y\ndDZKN1S4wRsuN8a1A4ljHEpJEzfgRGsoTS3fdNDHugTeMTAOFWFuCGtpol6m\nPKeQkp4qVVNcAvOBL9KnDpkY1MwumAhtyXJUHfu1sHfekcrtV0fR/NyIBAhd\nY34f6rGoPNnI0vNc0ByN0jvymHQ9BDEJOnxAAWGhWRHzsNYHPGfwEVCSrijW\nhrKMwadTh1MmR+wVErm/TXTh1d+gvfCy146crsPlKANZyOqmPHWwj/Clu+QS\nIjxj\r\n=9IBZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"87828c11b64bd887007797e82d248c7748948fb4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.121","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.21_1601667028030_0.052973532681551916","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.22-renovate-non-major-1651ed39da206843c27527c0fee23e1045e553ad":{"name":"@balena/jellyfish-sync","version":"3.0.22-renovate-non-major-1651ed39da206843c27527c0fee23e1045e553ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.22-renovate-non-major-1651ed39da206843c27527c0fee23e1045e553ad","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fe60c7879bdddbd9090e48a15317b031a2f9451c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.22-renovate-non-major-1651ed39da206843c27527c0fee23e1045e553ad.tgz","fileCount":27,"integrity":"sha512-jUPAyrHdDX0nExkQk4GvWWS1PgZ8YAHF5u7pjnQF2rm78dLUbiZGi/8KHHz2oVd5E9NXg/gp/cDRf6pWKhXtng==","signatures":[{"sig":"MEUCIAKraFtOKY1bCUMTWQQW0QRjx5vB90NLKTw1UZNCn5FeAiEA7qdC1CUKOLnbeqPR4BWYsS5JJndIbRfUprriNfjK3+c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfebyPCRA9TVsSAnZWagAAB+cQAJLaBBr4yaUlOOT6B4wb\nJ165BOhgWuLSkTK0bjGY8OIVg9uCrMdD+8eUgqBRy+eK8mA8qexpjNBmkmbZ\nXk/9WclNsiFOgJ7+OyzpxOd5a6wFi4nItBheHUtKdi0HDhN+R9Ldewg1yyn2\niDD8dNgUZ7hA5BwQEwdACN06K1u2NVFLNCRkTHSdbzASIb6/S4h5UjMySRkW\nlxPBwAarYRAR0a/RfmFrpFIBlXZ97gMpM53PD5fRp1HDyyp51Gx8zHELE21t\nDeD+MGD2Zry+NnkJemTIlMdDv4N9n41OpziKSZeQYXgDAW5HvSQxT+iH5kHq\nTUB4w/MPo+pTMSmGMCFmdhOhaOXhm4oY2fMJfY95UAFO6WqfnePlBzUjjURU\nE9ZCaBqddfbyCP6trdbCZzN0BoTsoed9cPQ/ZS0erh7Ic5NrpnuR0z2rZQKB\nAkKMX2qL6RKJ2F08L5jUV9BokGHtJTerkmQx6MuGmaphMCqC9jevqcBd7c1k\n7C4KaovsD4vsGfXQfESkauZsnu35fBi7sCsH/CTLwLj8GfADrYCkeZ/wE3iF\ngk3JJ+UY1t1OxudYEaRK2v4EweKz1aNXpzgPfYSAMTtpYLWhMELWhQEC1Mal\ntSIsoMbdaM5arBhLjL7m4mBU90CdSIlba5OlteUGJ6Ajv2EQ2VvFdBEaicHl\n3x6+\r\n=S/Bc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1651ed39da206843c27527c0fee23e1045e553ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.122","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.22-renovate-non-major-1651ed39da206843c27527c0fee23e1045e553ad_1601813647144_0.1971170714420476","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.22":{"name":"@balena/jellyfish-sync","version":"3.0.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.22","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d40e21475a21a7bd3cd891d0af880856ca3a032f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.22.tgz","fileCount":27,"integrity":"sha512-UedWe6Axcjv5Vsdx+s3gu66arAyj4sLv6QBX2cJfNT2wK8qhojaeEe6nFiWy6qIpDccPOqfCLXN6atI/STMOrg==","signatures":[{"sig":"MEYCIQDv61Az5KUq7X83Ss2J1RMvMkZOLpUGKbuG8ZJldsZK8QIhAMDy+e4QuFT1rRojmMQmWf49eRe4fo5VjxMQW7mD4ITK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":258962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeb0wCRA9TVsSAnZWagAAgMQQAJrWce66Wyxu8dX71riR\nbekzykFLj8/eY9xujXhtsg0kiwtPZVPNN0lJ00XXTs9PXCIHypynbCJbTIi+\nbB8dEi/+IByHasjDONciLMOwbjBUETp5UE+W3kBMBkdxKk4+lMW01ii1vH+L\nfcZRsT7CCwV86KNSyrtR5IpD0niVYCq0VPHx/y5BNOT9z9txP7pAnH1Q+wkz\nPOCE6kzIHiiEWpWhQPLzpuP9GBOYg04KJ1ehLD0ZdZZ/MpOe1uFheJytpMU3\nJwMH4nvNtUm+EoO/PHSgBvW/4HteEjlfpEsv5K+ko/r80UGYYLVOBgEwKtb7\nUs+k3m+ML+VVHGlTQguLspsCaUmKjS8HbXR+LBqMgJJpvDcqO/avd51tHt20\nKXWvfQ2DEGsEzPqv4d9lZza3QL1DZcPenXatvuGt48GAqpe5uavqEDjAOsii\nZtcw99FnDg/LRt8fnNqXvUJBXAG2Jxv2u1fW2Nw8fS/the0V+ubtBu+QwA8d\nK/E2jwCTlbJvPFyT4kAXwMET+Pft17TduivkLoXs3b1EmXKL7XsU6LRYUhgg\n7/OkIktnJgVINGDqtF/Wd2TywGtaYhI2s7eOHb49y8oLSGYvn163xkplnf5j\ngaVORHUQg5LM2u4GZUMmUuGM9F3zmJrWA0U9TVIZpwN0XNKvGnezpE6qlTwa\nTO5q\r\n=dIpi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e503b5f7f72d13ec3d939bfcc512a5169039ca36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.122","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.22_1601813808165_0.5289745107670605","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.23-renovate-non-major-4680a4501c8b6217e55c7686cc00ec8dee344a92":{"name":"@balena/jellyfish-sync","version":"3.0.23-renovate-non-major-4680a4501c8b6217e55c7686cc00ec8dee344a92","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.23-renovate-non-major-4680a4501c8b6217e55c7686cc00ec8dee344a92","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7329e826e91e84e2148d1710177936bad1281226","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.23-renovate-non-major-4680a4501c8b6217e55c7686cc00ec8dee344a92.tgz","fileCount":27,"integrity":"sha512-CXoqSyFhigthww9OFLcG7KpyymvrLFS3XZmlpozIXi1f5GzLopSsiowtCGZ8CkW/ClUK6wJ+vFBspF7izG/nNg==","signatures":[{"sig":"MEUCIQC07Y+Z4mawK1scEZn9Ur8TJF4KBGbUpOBHR1JwWEb0WwIgUoA15QlnUsMUydG6ulRkdICSyevdo2qLBZIyQ4h3HAw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezpxCRA9TVsSAnZWagAAL1wP/1D6HcI3ucx7C+EpEpD3\nA7yHt10+G3S78fZgcie90Ydp91awMjHGWx547vdivhMiui28qt62ndAlBYH9\nazoz4IiU6/OWwlACnXLb4p6Hg9Cl8cR/mhTUHWBhcxKeN5BPbW5Ndxel5v2+\nz/dVjiJExdNcKNaTduIfBF5Sfgsvds0nBOBa3oLJVhf1Cg330xosZcQBNA6X\nYUtn492vo7yUM9p6nnYY0SCpS9MMazuzqf7ydt1694l9VCz0vJ/jG+qOHzzv\nw8ACvW8azc/jv1Vj9qOoKufkGaFN3PSKgIuwFuk0/cHzBSVW8TDa+eLdIrE2\nrpCgWFf2ANPxYXvQWosBGNTNRNw9DJ3qd7VrWnrg8tMQnKHuFlEubuRJiYX+\n0gIN+CPGMkiitBUiAm9jZ9bBKAGJxqH2ErQCtrkA0WlBHenYOu0b7//+WPh0\nQVV99UxDxpnFIgYh3qmaYO3e/g4A25uNud51qPIAWMCXJa+TQAH8EWEa4jmb\nwB8iSCaRKC7Ex1/1tuDRByxW9MRqubNIeMiOhY4bbHguRViCB7c7REW6ytQf\nxjcGop35ySLjSGRKEa1RfvDtIvGHBre2+NlFKMbuK/RRKS6IcBdUEBx1/O8X\nKKQAN8ch/2IywUUDMD3ml1nrn4xlP9Kfr/8vS4RPnlCN2xYhBXua8BYA3MSK\npjha\r\n=YADN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4680a4501c8b6217e55c7686cc00ec8dee344a92","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.123","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.23-renovate-non-major-4680a4501c8b6217e55c7686cc00ec8dee344a92_1601911408863_0.164995457181367","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.23":{"name":"@balena/jellyfish-sync","version":"3.0.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.23","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8101fe144b726e1baa35de788856ee72aaed1d79","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.23.tgz","fileCount":27,"integrity":"sha512-V/OLWwncrIicTg0CK1J17Y8KaVDX7H8ViiZFm1oPg27O2BzA2+8+xE68KT7OPSG+a5ZDQllxChxkLdxkIYcK2A==","signatures":[{"sig":"MEQCIEetTQ0PTHypapgniqWK9Bg34eNTfWdlTBtCUrFr8UYKAiA5F9P1JfaKBQQY5qMnouT+ICuNZS9EJ2JSK5J/Nt4Qew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfezsnCRA9TVsSAnZWagAAFDUQAImbDppZatyDpCUVSJXG\n2YnrUJMHDGsRg/aowalJY5vU3RahPikPe38XKdQ5ucG4Bp3ZeEmwTAOxcaKH\ni/g1cf6UovFsXl4tXaQyBD0sAQ8bzlzfmcZuN6uax+ZofnVZierIRuho6e98\nnqAWr/+N0sJyg7VisNm1gRPE/Lbuzjfp5BUGoQkfwVl7IF0JIaoJtXDxtPrp\n44o2e/nwe/L8k52IHun3XTHtnK7ZNBYOZEDL5AbIDPILLnc4d1DB7+43b3bI\nKmyJVa2Lv2xfXoc+vDCFHlNrmDGPSMcRddDjaLb7rx7C5Avg1IMHy93f6Pou\nNgBAWagDsFO/p5pUGTvjWXQnKdm5SiMn40EZUhlPg5MM1YYhhWEjEXdDhA4b\ndWm7+xU+XFAY+3viK+0NNhKPAw/YF5FC7btGbmuclrusXZCneYPckZIxSS61\ne352P8UZswf/Kh3t+bVVsW5fMUxLnSj0LpHYMXK5Uu7BOPp5ZzgS9O5FJIdn\nhRBrKfcyt3KBM8MyS+1hFa5PQ08uwQ7bceMzEGdoyyHm/1AbFFae5PQFC7s2\nRMK57mKd9H7Ch7+JQgO4VP8sG7b1UMSv7UVDKXQuO/szGfKgpm9DGt/jvWb6\n/RXWxok+VF5bWPhELNfz8yE37/zo5WulJXwXJUefeH9OiTvvECT6ynpk4Ike\nNIlr\r\n=zNq+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e7d24fea519c82a0acc40c34808bea6ae5ca0e11","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.123","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.23_1601911591368_0.6441892414557371","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.24-renovate-non-major-f42a5674bbeae85a00154ff18aa9461a3c0e9ec4":{"name":"@balena/jellyfish-sync","version":"3.0.24-renovate-non-major-f42a5674bbeae85a00154ff18aa9461a3c0e9ec4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.24-renovate-non-major-f42a5674bbeae85a00154ff18aa9461a3c0e9ec4","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c1c38ca85aea8d53ae42ee61d8929fd90ce3d9f9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.24-renovate-non-major-f42a5674bbeae85a00154ff18aa9461a3c0e9ec4.tgz","fileCount":27,"integrity":"sha512-uEEvw1vjfzQhG+DSyzUBJ69ZYVSTLMcX7/l2jJ5iG3y90x7x/PUIJ5r8Kv25sxm36joKFOdG6kALelYp5GsFcA==","signatures":[{"sig":"MEQCIEbx4J4JbFIMwRTPRmaHrVHu9eiqjYTJBRrkNOpZKeJqAiAksZLFoIUgtFgWK+ttPbs+IWupPtsqPWebv5ECCmMP4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff84HCRA9TVsSAnZWagAAWVwP/RYLi9xSC91tiAGKaeAX\nh/JBvO7Vef73LJ7KA+nghWIKq4OglZTPFLJ+HgW2Bxv568/F/KmLdd31fLaV\nIJSPijMx+CHWNKv9lY/QEJo2szO8NNdBjkohXlX8J9OyoATS1LhUtm6bmC3q\nNL8GGjk+0qX+rNnZDpsGO0oY45dJ4PDK9iA71rWgMI8Vw8NzJUBBlqdZu7ne\nRgXZ847S2cpE/j2PQYNT+ksAWk7nTCZbU2oeB1UxJE0VkvLmB9ZU2alhAkHg\n3CG8VanoO0T03/e/vtZOHeaP4MTUcTyQf9lb4ZPTpa0iF5fTsmXC3JgX6DeK\n5N6pMzTuUc9P1CU2sdUQ8eHnEH1dIBhmcINu+onTeOAS1KWTHqah+gFm4pvQ\nBC/rb6VhGEwLS1IEiEUFh11FUhcYqDiBahqfwBMNa5AY6subfPbuj3RV5YT/\nFO2qp9ayx9sSaNZ6EsmSLPHXAwvDR5q5emG77+vbWW389456IG91X/+lfpf/\nfXSgwBMGfyq3lbCoi69BiXTnyQfaaupgaVdTWS8pvZETZKuHTNA9GnVVMB3N\ngPolZFUthuBZfeRuO/osDDgWDtJHRUY9Y6uboA5dN3WBOsJdUH49s1b7IDmF\nejE8bBgw3P9v/QkxjOrY5SVZ4hhiaoBCpM5j275uuISH2V63TBIFnRHhjU1F\nP0D1\r\n=ALek\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f42a5674bbeae85a00154ff18aa9461a3c0e9ec4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.123","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.24-renovate-non-major-f42a5674bbeae85a00154ff18aa9461a3c0e9ec4_1602211335209_0.28296832649164827","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.24":{"name":"@balena/jellyfish-sync","version":"3.0.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.24","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b429c5a52609f56ec590b73d7872b73e4f8e890e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.24.tgz","fileCount":27,"integrity":"sha512-co4n1gwDkGVCn9Xxl1720BYpmsQmdfeLblh3iPMmMDRA5el9p1YPZqAHYmhOJasNMrqdOt0iS0lI02CBk64ozw==","signatures":[{"sig":"MEUCIQDzUK90X+vOL6h8dg2G/MpzciQXNPTLS6pw4pdPrOqDNAIgeZfICIgX/VKatJPtACQ4xBCPxI+3YMi9zqkPfSscREQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259171,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff87OCRA9TVsSAnZWagAAiY4P/30jbq0yayEKKh/fhKmV\nizuZVK0m6DFG/VSWhvjp3/HCLwYvLN5qRdRKtVjiWdTkZS4NIff0UbTiaKuw\nyMFLJTVOZUNUaqGlkRaMQqvy6iimaX8to8/lNShCvz8a4xaAEI8QhzZpCIFs\nXy/U89jT6fEiPkOvz8YXDqFHt0yFfMYrk4LR7sm9vghuL11RqnFSBWcCG4bw\nRfOXA5AD62oyQPUe1jQiqHwZtBG0mkmS3ELAHvr380cX/W1FDonrRM9ZfmPY\nRnMMk4i1GTST6czwpWKwXuRyICFi+VfoKga/iTOSrjcC8xhiaFa+KZw5MLV3\nt3LLsBtUujA+JghTvfAtK0b0gLFqXpP+chCVIWN9uZnXJnxxP2t7qrrLwQOM\n+fa+TAGai4f/D9Kr3M6MQwaFJWVNnel4mUw+3aHvzHjbfuOcAlANvRMeG/wX\nwRxkLy3g+tUX1SL1elEvkJLDZJyjLr+m669b4TIaOI1t9FEIGH1xNOS0heTw\nWdM7I6oxKLpa9Qu8P98MsJyTX10doK89vsJF98SSF1DtVXY+ODXBySwk7ff2\nal6tek36VkvNLgGje8lP7C4AUGrQ5OIlrEsNaPYK3wurd84Y/eoN1XFx7SmA\nwoiE0YsmuKtELyVQ8hRQR/1EgsfbexyKzcSHBxwKuRofgOtWnwVjr/xwv2Mb\nTqqd\r\n=d6yW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2e4c9460af0bd954ddd63b3d80c0223e032a80d6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.123","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.24_1602211534191_0.6658251626365377","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.25-renovate-non-major-7ae222dbe2e8a93342e890e123b0b29f029f0537":{"name":"@balena/jellyfish-sync","version":"3.0.25-renovate-non-major-7ae222dbe2e8a93342e890e123b0b29f029f0537","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.25-renovate-non-major-7ae222dbe2e8a93342e890e123b0b29f029f0537","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4650abd048c75da95b9d4346d2914f2a70d50f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.25-renovate-non-major-7ae222dbe2e8a93342e890e123b0b29f029f0537.tgz","fileCount":27,"integrity":"sha512-nYlm4YyGfxIvjCyIthhEDS+yyIsam0PUc+E+TJHdurOIyx/A5SfF0bD7Fqi0YXd0ddxPtCL8oe+cmTVecJQoig==","signatures":[{"sig":"MEQCIBRxdIROyJ989hlAujvpMoMHoWqrtaHQuIKY1oKM/t5EAiACLAQ8lXb25ZbCCJaKfgNdXwAqEcaxxamBy/AN0RbsgA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259300,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff9gACRA9TVsSAnZWagAAY1UP/irWFipRagmR6aywUjU+\nERMZbtYyMAsPYhms82u1xmv4m0Np8LtUwsDBZ76jGVhrZLBHQmufN+P9wEKK\nCt2k8u4CbBimqH35WbxNZ8CnDASAMPWpl941ZLazxRqaIr4o5KE23aLgq5im\nvGXxKIVLub1DMi0R0l/10nLSmUyRGethSlBtGOm5jqY311kNDvo2up7k66An\nODkQIqiEHFl/tfZJ7QVW1+SjT5Jfv+NpwtNmVoMplkbmsTK4Xa8ma5p7ufD0\nJhlLanQcINVdEvhuFrH7PChKM1R2/XQKvjnWgH5l8oj7A9wXTFZoqyoZJxPv\nPV6pQ0ZvPdvvVIWKK71R10Wid72HVW3suWMtrjCkaye1fr02zpxkGtNc+URC\nyiys8Cy6spDDvwbg0e7L91vtYMyIHNpbes37LKRv7hAdEXXa/T/UA2HzvfR3\nZ8y+i+olMjBlgBM97deNN7nIedOWNqb7/vn17B5ZE795vFy3HzCS89ZDAt7V\nA/MJU2TyZzXUQer7XqMzKICRyt04fp9R6KI4idmqegwVyFZGBgM6pVwS76vU\nmSZ8kmz6E0P/wPe5sNf4ZACJVf+Gt7CkCwVZFtTVDzI/sVXDUX/03DqN+iqx\nDRB3+3R3ySdw1y69c9wwsf9Z1VKTQDJ3Acfw7mfREsBHhQbG4qCaVi6E7qKH\nwQ8P\r\n=pFy4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7ae222dbe2e8a93342e890e123b0b29f029f0537","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.124","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.25-renovate-non-major-7ae222dbe2e8a93342e890e123b0b29f029f0537_1602213887679_0.359540827872427","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.25":{"name":"@balena/jellyfish-sync","version":"3.0.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.25","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8d1a40a788803ae6ca37cb8dd74fb6fdcdbf9025","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.25.tgz","fileCount":27,"integrity":"sha512-tAv2YqGQsDDZQS96jC2hyUBM/PY6lCHX6IZAZli43bbpWEggMHJGfp9EG/vEEy3cLY1etXzrZ8dL20M3Zh9ppA==","signatures":[{"sig":"MEUCIQCdL4M7Mi7kPwT8uKLA2WVU2vZ95Cw3T7K2D1dqduTLFAIgWUVT3HL0r3s2ZLjriRyn+WxMwhOB754VK1GXTbIWw+I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff9jfCRA9TVsSAnZWagAAi98P/iZ3JWPe1jPUM+OGb68J\nLmTPYsEjS6Id/NzDrT5RUwdxIzRoWwHlxTpxXCbXPVBZT9JMBGOeM9aPJLIQ\n0dKcS810kJkobYqiwQ5846B6vBe3XLvOQn1eh0UCnzJhHWVFSq+pDr3RBtiv\n+nSK/v0JQCgF7m2GwhnspfJvpJ8wgyFqymZTjNN2oUA17+2l8FDueN7f3tat\ndy8bU8rxKbeO9xC2DBMIg+/TItAjf6bawysRAZJgHWlBiu4iRxMMT0x3B2yS\nQvE5awf/o5XzPUrhKHC+p+6m2fiuTVlGBsu5uMOH1jOjH5zz2Cr2DVQZFdmB\nAH68my8Qq4UOSM2Lsb8jzejfkNZCZXPw19iw6YGYxzgNEyCloxitWXEaghdh\n9StaqiUAXAkIPFawWvvzx3AVRDmRbc+1AWXUKYUvQ0pUnnd1zfwkKraUosPY\nrsnilnHV8+U04t0XmgEet5cQO44hIWQZdG3+pb+HJd9RM0DQg1ygUElfccUy\ntuqtIvewR50ptWqktr/cUX3qNM7UxflwIZSmpo0U8ZtRuP1XyxgI6Isio/96\nu/D+Bq7fzXJFqbE66H7HSVb/2nR2qX6F4VN7tIQw2Ah/wOYqsypVlrmzagWe\nCN42IEhsLcVpOwXqm/kxHO7lv6WAO0Xfjb0TDAyNIhBO/MExQBdnwSiJJr3f\nXbT+\r\n=HuAA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"986dc63a792fef217ff667c9fdfb392b18f15024","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.124","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.25_1602214110831_0.00680548708500317","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.26-renovate-non-major-1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6":{"name":"@balena/jellyfish-sync","version":"3.0.26-renovate-non-major-1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.26-renovate-non-major-1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dffae4a5aa8ec04d141b5e6d031f9c58827259e2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.26-renovate-non-major-1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6.tgz","fileCount":27,"integrity":"sha512-r1iArQ6KJ38mDDKhouymLQu38WgCfIF8hgfJMf1j7SlFS/Ecl82bn+iXgkXzRU8Dk4k6ZC3AagJ5pPEPWe3/LQ==","signatures":[{"sig":"MEYCIQCFdT36sF9BBNfq368U6cvk691RyHvkyioldPDN2is4bwIhAP+PcurZttZEtEnKv27QjXAGAgfg9QZwAT8JKoK/xHAk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff+zyCRA9TVsSAnZWagAAA70QAJGM8btW3iMwmrTIHtGm\nvWra6i8qBN1FhC87iDT53BAnxX12g69CkQ8xg2nD9j6XUZ1QaLRjegUmc89B\nqueXaUmZBlQZS/8QEeRsOOOeIcd9onGUeJArA4jQUe1FSXzsoe3LUpXtnGtZ\n/BOXiBeOBTdDrPnejwsfw3PzyzsifbFwYPOH4y+yoVnw5bulGyygX8TGhbHF\n95Uf9jWWLVyML1YDGeI/AyywaMDP/gm6pLvB7BUV2yyMnP0AbUyRjkptwBxE\ndIa2OTIUzRa3bpoHYKFuEmB+sgCslYBbO3OE0egksndOqb/pbpDPuO8COOdF\n9OtZvgjt2ilsKM05Jl4AV4PTtjIvF4qjWBUoR69So1FFlMa3BVN8hLkjrpS8\n73KrTFWcbg/MzqO12jv9izhvhM3F6XHGO3H9sEgtDxO1OjB9jSkgn/l1Y8K2\n71XgS0bhPCFa2QG4yVra3q//hqF4+eq8saSH6qTuxFLMEyAG6bdDdCXB5geT\nEVHMDnQZ0DMR84+kOdTc9BOeqiHmvHHUJFFPcpHo9gwch7uEFYz9iKj6Qz+l\nMsFMkf/KttWzIfmIC50CLMbu8W+6JJp0oPtSm9NcxCR+Ip9zed697l2suQIr\n4MR9yGUVWd/zJxkfZpBgmV9Vvo9dB0IJ6IYMs0w4MNucuyxvzZ10PG3LP4F0\nN1Dt\r\n=1guL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.125","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.26-renovate-non-major-1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6_1602219250268_0.07817579120678464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.26":{"name":"@balena/jellyfish-sync","version":"3.0.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.26","maintainers":[{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"003b9434743aafea3a0d52be6589cda9eef85cf9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.26.tgz","fileCount":27,"integrity":"sha512-yQOMqjGRKPyVYiod/TKyx1iBT5489f2AtpjY8XjkRvfyDrPHEyT+Xmxa2ad+2my5Tf4X5XnDRz4L50O6IVdC1g==","signatures":[{"sig":"MEYCIQDYjyKG3/tMyMIvsIrVMWH3mFVwtsInK7hztE3I71DkbgIhAPV9ypXhlxEwaqa8MU1ChrIWJYxpII9E6hkMasCBbqJh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259348,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJff+2gCRA9TVsSAnZWagAAMNUP/2nhZdEbDCZZj4o+55wc\nlMU2j2AUiIWlQouXpc0ZdUv8b0r49O1qhvA927rztZd/CGgLMykwN7dJDdno\nHu027vOQJd1VLzNU7JAFuNxICNIlk1FZ6eHIDPi4OBH61rVkhfUAPdUN4QIR\niz3FW9f9KWnLcHP8/QxErrdtk6irT1/ikIcV6nGi7sMGXZlABSECug34MN1F\nqm9UPn/kVXH73UlrE+bXMOzMLyEaOoXV0So0FNV84q/XtZYpLAhbbNpDEYUd\nmlP9sp6Y+WvksSOzcJt0yJSZjO6/q59285tzkP2O+qawdn5Qe/p4TN1LaNrL\nVp32GW5v0xe35c2/i1A+xdo7tLPRO4O1xcXUlA7bch6N4To4vLwiqnQBq3x9\nAkK4Y+LCgjM/Mek8asEFgFXqQzOUwrAgFWndsoWkrngbSfu/g/iisT0c2awm\ny+WRguRCf7R7p/TVS0/YhBsWtH9muPD42AkKOPkAt2PZsGeq0LbdCHfGYsnx\nJc/u/4Ez560hod1b2ZuHr3WtkO4SalmATn+kOf6d0Pkiql3qSqAkV4mbhi4u\n7YcCIWZJ5dWmgdJ4ILnHi1Ah8jm1LeJ6yOVKF9SfvGQ559s7fuWTOmGpXUWE\nh6xeKNItTYAGJ7BVxl91RE+AwMqXBTh7Yn/YKDdMGlRDbjXtlrcsnBBpd9oh\nXz01\r\n=TQHq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"41f548d30519633c5830d6a683e9fc6d3bfbe0d5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.125","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.10.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.26_1602219424145_0.5270718473164815","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.27-renovate-non-major-2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68":{"name":"@balena/jellyfish-sync","version":"3.0.27-renovate-non-major-2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.27-renovate-non-major-2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9f7fb6842672de74b41405defc867b24aee80f02","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.27-renovate-non-major-2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68.tgz","fileCount":27,"integrity":"sha512-GIIs5qZA/dE02HDY/JL5bqp+YuQN21gm4O/8tlhGFnes3EzL5+Y5pvGGgYRh+XG38bzGX5ixUlIdRpkoR1DdWQ==","signatures":[{"sig":"MEUCIG6Jw+E0YPY3de1vmobzQZiPTekQw4kFrM0WeqqmgriMAiEAg6MWjOI3Blaxx5Cs0gz4BZA4PqZ3j67v56a7lLDQ7tw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgNC0CRA9TVsSAnZWagAAxfIP/2aV35NxetKm+MA7J1ee\nc5u0V+Qf6XQwwfQ/pIXwrJShAgnRJqGZIerqZ1pnlYHWr4PdhdnXAC5FjMDA\nQvJc9vv0zk5HbPWa5BEHDO7U5SdC3XyMwAiJRGwq3b+sqWQLORBDzPwWiSRo\n2qea77BXuiMPBWqFBghkL1nY6j6813Dc6G2HilMhOf10i8bz0i3SwImHC02z\nBlGqmTM8FUSdQj2MIWb6yQWPh7ilwsWPukp4RNtrTiOlaO3eLoiiVV3BWJIi\nB1yiB7FVG9A/rUYN8q5adBwS94uJ6V1ggHzW+ca4LHvGb27uGP8/gUgy+X4e\nDKZi+U2cpSFGef+pZ4ZdyojE15OU64styelO9Pq1jcoX4i74G/QZVTYmZItH\nUGVfNpfLzUBeFCCKDHTYAeooX5qb4oolxBvYKsejVXCC+vwC7lofPf5oSEyU\nZnrFZTXGoGOpyNlTSKvdZ6GzYKgaqrRE0niHsDh5e+tPx6MScQ83Ein+F2WH\nZPjs5bo/qy+Xh86c3WWLT+PfZdABiItFAL+iaWdtRCtWF67DnTIhyIoljzNp\nXgxoJHfCMMf9mWBL6Eyzqdgkw+CQAUzgiEPPNd1emkjYXYCgDy9h+cc8kFqk\n3KnOrjK3WwKMjxhBDcei5QRD2qqYslx9Sf3g6Dbqb2tg1TSRPGUHSL7U44AQ\n6nPU\r\n=hiV3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.125","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.27-renovate-non-major-2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68_1602277556277_0.004743351854063382","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.27":{"name":"@balena/jellyfish-sync","version":"3.0.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.27","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0f7cd8cfd109417607cca99cad380133bbb4e60","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.27.tgz","fileCount":27,"integrity":"sha512-qkb+OPYDEPZ5mwutzP8Tzlq3V58cvnkoMoC+1plrGlGDviR1p5umpxBj8V2VAESpKrBNQltVj8xcy9uq0vog2A==","signatures":[{"sig":"MEUCIQCgDMDeg3rkUS42fooGwnrrvpwV13/HHr83eWT4hGvjEgIgC1HfIEGtZ3fABRJWtmkIQkXqGNLTLGDtLjawYLyOrKg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgNFhCRA9TVsSAnZWagAAmVcQAIY3YoVbLz81707A8Zmd\nvSkfd2iNlKCVxKNxNArZpErmH6X0DCdHZTBxPLR5NmVWIyXuiqNuKbsgksXT\nBhfh1R2szbUY9pj8UerAYQc9347wVHjglXc46cql5b5d5ScucdE84Sip44Pp\nYPcBCF7NU1sM7Q3JwBVR+Iu2+WiKnrxGV/0LFqYX69/v2JeeaVKCnft2jJBB\nfvc73mOi1f5+urqqrKLa2fzmZ3ESLAqmnV8JZhsjDM5JC+QazOMgpJxeQcAL\nJ0Gpfymr1KOE2mJpYdmAf43g1GSl2Os+PmkZHGjroRXUwRc7UO6mmej1nkGB\nosZaehBUf1P49U1oiYoXft8VKJ9KWiFqZpyund6Ja1pHntq4aij1dZY9zxBw\nS49LFSQjqBESGC0ssNuGVzuWihPTPI8iQiovhn4bp9xFbdpDG22WGxc/QVvm\n6f8zgBB1yrYLP0M4Jm34smJ/W2TbU8Nw33tc97ZVTHXsuuqD2W3NmBrO3UlO\nHVE2BTtVyBEXkLCaAhGRrxnhXCvfLZJrDKKeUk8S4nGhKfRVF4y38S8hfw4x\n5RTMhSpRZlCNgyOI4j/Cs4aPmZX8+otS8kVbWy1eDQdc+dqEnzsfG/nM5fFk\nhqEXyr8K1fXp99tHYaghkS1m/Qhk52VcJ7z3Wio/toLFu974dIErSqMH7p8A\nMIcl\r\n=v1Di\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c2674663c9db4f7593ce480377cabe02c30a7b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.125","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.27_1602277728717_0.8042138093984188","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.28-renovate-non-major-08781a111a56c717e22f73a08470fad28a243f66":{"name":"@balena/jellyfish-sync","version":"3.0.28-renovate-non-major-08781a111a56c717e22f73a08470fad28a243f66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.28-renovate-non-major-08781a111a56c717e22f73a08470fad28a243f66","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e544fe0978a2264229e9ea1d2eb06fe7cdb35266","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.28-renovate-non-major-08781a111a56c717e22f73a08470fad28a243f66.tgz","fileCount":27,"integrity":"sha512-n8gyph/DRt5nAFLmd2/sG79HV8Wl8JstHuxMSfWrkEgpHWI4v19e1rem4lvN2JPxC0y4A7wQ1iFVPIIbDhpO5A==","signatures":[{"sig":"MEUCIQD2SWGaACTLho5UsNG46bUuxIHFZRrFRlfMmReITxG8yQIgI6pkiRVIbCZm3jg8gAsAP2LMTtyb8NFzThTcbHH7RR8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgNKICRA9TVsSAnZWagAAPtMP/jsg1OtxfG8qdCGl13Cr\nHhp5W3OaKZBgFYbzgJQrKPpXqBDd1vpu+tUytg0VsOB8XcC13jvZZDwxB5Te\nmKx/ozaOAJjch+L2UpZeJSb7JJp1resjn0I2VRCnzm8ipTbP1nx26ge0hUcM\njITNdBcTrc3Y6sXr9+2L8WFZwQIZ/Ogrhnt8xbXLE9eaPojlU3unNIfS02bP\nxJvxKHeeLkW/ukayx9+YsheKF6cRLp3U0Brd2Oc1kmEGswVeBrBBZg9zlK8N\nM6v23tz3s5hwDakInUnLNW2LdK/GSSJ6Vx2Sws8MUXxR+paCMIWfzz8qPloI\nSPr5dfxTaIRcn15L0hjMi41Ey29YEkp5F4Kmm9PyW/dRIVuqzjm0Bll4O1dd\nZm9FqKlLgDd4M+CmZF9Tty9CT2iFmS/pJtFPouJvDgehdi504MW/Ycw+mGIJ\nwkKdbkR7cfe6P/pVx27BsPKvblDfJs7sY5dNA+vXeRoJ5LHZMhTxW1j8M403\nVumMO++T2FYIcUIYTWBoZzkG7NVUD7JjByriBAL/qcDitVbajrcBqrEiS5cz\nAfiMf6F+nmX4S+BABeLgynKGDzzcKljsC4skp9M99gu/MaGvYJhSp1+HLiRk\niEFufUgLyo5OxWCqtHO0lvEOhUVV6hHEvX5NZLOX9f1g494TVXglGuxXSJt5\ndjZq\r\n=b0mw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"08781a111a56c717e22f73a08470fad28a243f66","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.126","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.28-renovate-non-major-08781a111a56c717e22f73a08470fad28a243f66_1602278024239_0.4077195193065768","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.28":{"name":"@balena/jellyfish-sync","version":"3.0.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.28","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d0916689c8474cda545e1cc5e4d0367343f418c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.28.tgz","fileCount":27,"integrity":"sha512-lFfZu6n+sei6SvRIpA5qAWqOEC+OnL7NgxSxsC2k4yZcG4BiOQZ58QbqF7CWd8qW6vrAV8EXyfA8d+EZpBDpsw==","signatures":[{"sig":"MEUCIQCL3bwSI3JcsZeZ5JF6TOj+d00AZXSdmBmAlgg0Vp9aKQIgGph99g5dr1v8AnF7Q+3FqrevJJRNVlC9pHPk2vCIwlg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgNM/CRA9TVsSAnZWagAAn1cQAJuPNSTDrNQMK8ROzi/G\n4XT980zR6wbscpeqMInOhPxVTgOAteYBeZI/rATLMvPRoFAZQZKcHEwUQvgI\nonD0risDT9EGTcYEfSxlgsVNLBUe6eP7SfP+F0+DIFGUTw+wCvaB1FjUPUb/\nYlbF73MsdWCbXqilN4QgV04SZ9bdZXeXNms+lXpOtn2eochsrsPamxvR7/D0\n4vB1fsE6bVR7KMw20jaUPA6xX7neM/QpxuTcU2Cz0QsbV0kD0lq4WIic7zhO\nA8oY9snGTF5JQjO9JwcHLzaJur9CXCXWpXTQjHIOfJRb0/LOI/IAP30cNOAw\nRjZVLoR4Tmq1H5WZtNUAuYfHWv3CDWeYuIqZjbCUHL5/zOqP8fJU7SFRRR4F\nzRyyOOysRafwtkWAQScXgRiQ2GByznZsyzb/9sWG8nA4su1mKtD3t+xqxD7G\nmGdIghPrKejiXiJE3H15UW1Lmge1NHMLteMd7bBDt5YYTJgefYtiLm2ZkHxg\npHqD9sCzlAR6xr5FJVoyZeZkaN0V3D+/0yb6Gt6x9ncVsYwVAa4xR29iK8z0\n7loxmVGqHvKd05F6o8a29tYHWSazD8RM5FIeDrDF5exviLLMTIJEfj/xw5bU\nQ5uU4XfRyKzKxW8MMKIXQCyta6ikyTwb/K6BRdlgOV2itwXdVD74ddwxqv0q\nMUMd\r\n=eIjm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"56cacb25f0ce1a2688dd152470dc7b6826b5614f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.126","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.37"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.28_1602278206579_0.21263018825913615","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.29-renovate-non-major-0df6f156edfcb2da37b9e1f4cab80224015ce59f":{"name":"@balena/jellyfish-sync","version":"3.0.29-renovate-non-major-0df6f156edfcb2da37b9e1f4cab80224015ce59f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.29-renovate-non-major-0df6f156edfcb2da37b9e1f4cab80224015ce59f","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7128267f5ff477b3532dcb2b6dd88c87ac685717","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.29-renovate-non-major-0df6f156edfcb2da37b9e1f4cab80224015ce59f.tgz","fileCount":27,"integrity":"sha512-kASuLf8SBroHGqkAWaAlSsMtWRC547YV0z9ds+hgLlPlM2QUb0IddGrowFT0eNABzVjp1MQVPYedU713ovvk+Q==","signatures":[{"sig":"MEQCIFnG0OHznOi3LJeEetTWorBrFua+l5+iZOFfU8fVMpqhAiAVoyVtKf9q19SUE+0ELNi6xic9qECak+rXeCslg6EVyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgOZOCRA9TVsSAnZWagAAGKkP/A2vmdttYJeNu9gIoO1e\ntMUGG0cV9EhdcBgrJKUILSqJLsv2awxNnBQbN33QuMiDoNwix0DyM52IotEA\nsqDWr1fcHdHpKVZBBeVGjiNt6mYbMqyzKQUV17hu8zCbI7pLxHqmHy9LCxhJ\nSWIqB6iIq2O/FHo+Umq1Q5sjBC9Olutsv+BiJxkfi46Y6dm6tuIc4KkhNXM7\n+JValw0n5cCvuNrXohGjJnye2Sr3QOb4fYW2PjfvmHUsw0bhUzB6t4IzW9Je\nJogzglRodBonKRF9qf/MIku+bJ9rhe4nys1Mhqzv3VtGB/HRX8172LSqBTqP\nO7JzmohHUEapJvUOvMBhn8pB/vD5Qa/BVAoCfiSdCyIcVU+49/GYBj8NzmYW\nE+0lUr+UfSS6eVMAt5tm6jIPjTr4oD58umfLKzgqUpmpxPTo+r67OotKkG9l\n6zUO7J+P8k3TXQ9i6ePOG0hDMSIrBuEkdctFHG3mONuP7xjt7POEWYSYa6zf\n3AkEDm+t5oJCwUGCPLqoRsutaui3g7V1AsyxXJU/PPqL5WTbOBRc1UHgl4P3\nL6xEfC4pmEkVOt3KLF0dkQckVuX6JxkUy5jHrTge3Df63xAK9JJyAXatrKzo\n6FF3AZzN1FwFTdOzCfMlh2v1u5oa87yBiuRwLZ6WSpnamO0nGJo6lQqzRYRQ\nWBYj\r\n=yXk7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0df6f156edfcb2da37b9e1f4cab80224015ce59f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.126","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.29-renovate-non-major-0df6f156edfcb2da37b9e1f4cab80224015ce59f_1602283086030_0.6970959307994693","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.29":{"name":"@balena/jellyfish-sync","version":"3.0.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.29","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1de1379d814ef99cec301434a7c615eddf1cec13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.29.tgz","fileCount":27,"integrity":"sha512-joQJYxhoqaK3wVB7GrzEVulsmhVhna43u3MVJ2irAIQcxWrGPgQ4OXU2VTM3Y3/q6gQ7FCeizNjT4hFYk/7/Sw==","signatures":[{"sig":"MEYCIQD0Z/lCqERtHgRPTdkLKtaRRXhdp9oXZNwbZ26cCEXpuwIhAJIy9iqRIKaRs49zlJGk3HoedhJiqH5ztf10x4VB3Oos","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgOdICRA9TVsSAnZWagAA4FcQAJDkMvoC74usuMCpd2MD\n/WVzh/dMi4+WkNwe/qEFD1aYIJPyXh8vUvjVSkwLYDG+1gaMf0B9O1ojfrVT\n7zP13ZMDDAi+tHVekYuicrQ7/t0Kkd/HqqOJXIVSoV3VcTnJdci1nL48lkw1\n0ZJGsCHxOf63LbjghcnIHOXjPvPN52+utruimZaYZyRQD/0DhrK4W6P19C/h\n3YYjodSXgkHVC8v0dmjT3DzKzLQbNZMX4s1F1oQKm/44y/xzcrz3I48/Ufw0\nevnLo2OnJ//Xn7+D5JhPFr+Um5cwtUZxgjuA+wW0rpT9HLS95RP4bDHky+jZ\niThtaWxqNtG0i7PcYAq5xvl026UuaHkfX2N3v5eXDrZa+sM/2nxEbrV2C0VT\n36erY/DOfmAJvlYmj5OcTXd6x7PdMRFBPOGHHX47aw63KgpNa3HvvaDwGct1\nyIUKi8JJlllioIb3srA+6JDZkai4lCaesIeDLSaeeewm0fljpRBLWPYY9uTW\nTH9n6yDbi/uuwzlLO12BGPl1448l+p/QVkYuiVF5+D/zBEBWzBaBNEGT2dQj\nB2AvcMi4yCoqJ++PHArQMAeMyyWvOlmMyoEewPsv9b6Dy/Zcu/tyn+s5Wtjw\n/7uQ1pMKXuS3WGkBl7WxsyFb4ijStFifWT1s9kUDprLmAYcvHZshiMrNtpLL\nLr4Q\r\n=UTjc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d18e612c05606d3bb54165ee9d5b7d30813c708","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.126","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.29_1602283335584_0.20845886206288022","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.30-renovate-non-major-736c2cd6e0cb861bb4d54671873cd8fc50d5ad58":{"name":"@balena/jellyfish-sync","version":"3.0.30-renovate-non-major-736c2cd6e0cb861bb4d54671873cd8fc50d5ad58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.30-renovate-non-major-736c2cd6e0cb861bb4d54671873cd8fc50d5ad58","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ede6fdb83d829a76ad3126dc168bce05b5ecbda","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.30-renovate-non-major-736c2cd6e0cb861bb4d54671873cd8fc50d5ad58.tgz","fileCount":27,"integrity":"sha512-ajgafVEFNEBJ4Xev4Sg7rL3mNzPs4Yr/kmIEQKwMb5nRmIF0ecaxXFgXamF3gwZEu9lLFRSSqJLO3dLIHK8PGQ==","signatures":[{"sig":"MEYCIQCoLr7+cMB8dgHo42m5djxXFwEEsYpyOgk6lQiglo/GGQIhAPW/V29jh1XEzPGojzS/xn9Nd6TJzZN4O9jMnEQ/KEj3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgPBVCRA9TVsSAnZWagAAiP4QAJbjaprAyz3KwZN/7oow\nLlH9eU7daot9lRtwJt9VeoQ8xaVAHM11wcOsuAkWQKHVFcSBxkm4Ayiq1EtD\n/5cpgcI0QiBX181pWcJgJPXcbETUOOBah5Phw/ERSwHC23SplC1xVqeuN7WR\nyJPygVL20S6eF8eoy6rXrKn0DT6MAyRVzYJa6wbCQF2Omy/RjF8ZV89620KE\nINhEbglh6Q9lzb+M7smBNd5YTiRgZMvee46p6UahEpC06aJ5dNgOOiLqZEUf\ndciuAAzMZTts66CtR68T0owjEwf7DT525kV9jYinbbnTzVdyJGHA1cr6v83c\nrAaJCq5ZGK/+E0Heo6RfqaKQnH1YjIj6fy7pDsWqPdnLNEgvmFckrgZ7hjw9\nsIwsHLO8l+u0kjJHjutYvzHmUD3yeKqKX1KneJrazyoudgbZDpdjNFDzL1/6\nkv0gSd2jkG8so/6fLCqgv2XjPvCTRQoEY6xtmJhXXq7YRyxfz29LLqFfzFQ4\nN3l3t+FGM3s/dIzhUjDtoPuZ6ge32dG8uvD2yKZ9vcMebGXCbPjEN+46/jSo\nsRPWFIULCvFZcsRP3IbekeX+pdOxIQIc3+QWzZJTngvxXlUTmuFxvwmyCSpt\n2mYpJOPWIMVQSQ6s//fbW3bwFr9dyvd6LpTEsd6nQitvRKMVdYcKFd7KXZKC\n4M6u\r\n=mWTw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"736c2cd6e0cb861bb4d54671873cd8fc50d5ad58","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.127","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.30-renovate-non-major-736c2cd6e0cb861bb4d54671873cd8fc50d5ad58_1602285652818_0.6106264198380085","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.30":{"name":"@balena/jellyfish-sync","version":"3.0.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.30","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c87f22d7dfdf314b64d331af1ed13e8ec7554fa3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.30.tgz","fileCount":27,"integrity":"sha512-NpmTMHwbFCqLCH3LvCiUaaZ/XPIeaNukB49dPpgOnrLSKdcbCzB9s7fBfDZuw16hN9YV+G+ZLu07bRnZTpI39w==","signatures":[{"sig":"MEQCICnkWGvdWu4htHA6rye8iyi4EvrzCgyvQYettR+QKb0DAiAA872kKFmDv9nDQIssRCw0Kp/lQo2Buwr+uDea1RKy+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfgPD3CRA9TVsSAnZWagAABMAP/25tZnjOGIR50LERZBPw\ntyqNI9q0zBgp4rTklD/XCH0flKPThoEQDmKeP1sSOJmugx76ktRIHytWGn7i\nZJbPmAfc3EvKohRG4UEkzaNc9zMweOKDwQKGb6KPq+qNjvWeOfq0uEIQYpOC\ni5xu5KjHVL62VmBwjIgLjbDsB4NistJroasux99hL9iqzej/zrJU9uF2Rs8u\niBI+0ctm82gZTxy5w3+Lj64MHFNiPpmZxQrBsa/m44t07qsiAl8PdeNht7/H\nCYyt2vmi9hkfGx8KyBbk/E6L/fXEhsiedkhRlvvaymf8Y1m2R9qGZXx0nru6\nQuYshF6Pmn0gj3JKnBofvcz/VrJR1stVHwVRAP4x5x1aGZj5DIVX6NX/mAx8\nUMNOJysN6ywLOGNEA/7XrsaGjyY9XuZyFS0QrdnmKUBWtRLMMwRBoYnWKf64\nx5TwFRaWCYmiGO0tWskaAZAeWFF3b06BtcTl8cQeFApWaiDoDsCDBUUXeaIc\nT0xRCXSXnyEn4RlzbAGmw5VrJ3xObKF+cTu06eqFlUC4MN5F5EyVT/KeXvFn\nKSqGxlEmbr/l0cFmrKwl90xevCSDdMMqyS2400IrA43kUPLpBZExMZ593pg1\npADgY9DeltrWkzf2ZDPAEHCLe8+TZbNHorOnfsFwn+PY5fr8CyjzexXtobOP\n1t99\r\n=p0kT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"23c576adb7d3353a5931068787eb61342da5b06c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.127","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.30_1602285814853_0.6577637453480585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.31-renovate-non-major-eb7abceaf696b4beff2ed0a63ee257e44583a7aa":{"name":"@balena/jellyfish-sync","version":"3.0.31-renovate-non-major-eb7abceaf696b4beff2ed0a63ee257e44583a7aa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.31-renovate-non-major-eb7abceaf696b4beff2ed0a63ee257e44583a7aa","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3ebb632bf6f39181d2edab700c7888202dfd1cc9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.31-renovate-non-major-eb7abceaf696b4beff2ed0a63ee257e44583a7aa.tgz","fileCount":27,"integrity":"sha512-V2YYDo9cDUbufXk/U6/Ru7KmYfjO5/m7Ta0iVZedzk7+c04vWfoGRANwZUmqz9x3g3fEQ4lj4oLe//uXZXvySA==","signatures":[{"sig":"MEUCIEEt8tPpjVCSuc2Pf4aCmT+bDkeughbQsj0YX0ZhRAbsAiEAvvFODROlQL4U55NkKZooWylJH2YyZVBp2kq2WV88Hjg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhJ2lCRA9TVsSAnZWagAAXikP/1jX8L8YEn4xWm4/akwy\nkRebNGqqNQND6zokht1LWjTk0LPyHeqzt0eRYukmjia0jgPRerKEODdmMuwA\n5rFQYkkmyRH3txzzblrUQXV2LUOJNpfZ4OpBmY9oIfhC0mbenumD9W9TXAiD\nSZ1JEObARxrOVoOGV8tqBQElVWeG6udG2sitBIJI9o8O8HzHGlY4ksRUYIGh\nU3z+7f91hwMquaLCsGgb3w8TG+awMdlH6bMtxSxBFKqErMYEmdd7TBQrzOf2\nxODN1UEDq0DkkMrY1aJl3AdC3cKYrp8x3VOGPVkujyRohtlHdWB7hAB18wui\n0JPboQHH1kq7QyJY+q3DTwTyZkPnZaS+Ne83taEPiMhA3BIEkliZjfIc1E20\nx5BVJcPqIiG471l82NDtjfM7FflaH5Mcwm++8CEi1HbyLTAB7sE5MfDG0KtH\nQUYwSNG47vwZNwdfP3lTq8J8eBjWvnLHGmWInRHBFflYXt0a4WeTZUQ0R5F5\naXyTaXoZMwAKcFLeLWREF6w+9A9R9LuCzQVOw+Wy9tHUA0vQ2r58vz5eFmDr\nLbEe3jidd61M1vBwlICAfsvgl6qYzxITHMP+ZOhPaxLxzZQFEJjYAw/Nxt+N\nMiX4pgycqhYBW5yZkm+b7S8hfA+2joX6NW2LBPDeJ+dbM67ZYP434p9SfO1Z\nd8vA\r\n=PJ6O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eb7abceaf696b4beff2ed0a63ee257e44583a7aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.128","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.31-renovate-non-major-eb7abceaf696b4beff2ed0a63ee257e44583a7aa_1602526629105_0.22988979604710846","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.31":{"name":"@balena/jellyfish-sync","version":"3.0.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.31","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bdcb9687628590625ee64239834316d60cbc5493","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.31.tgz","fileCount":27,"integrity":"sha512-/WsC9iJv8lhZ5UYIj86mY6eCTiFHujZR3DV6hsvaVQ+um0GyjAQNOmaZLLEIQDF8b/KsgbsCc61P+cwjB6K/7A==","signatures":[{"sig":"MEQCICLOFNw04mRrPmNd2nwEEcb4dAtCDSWhGqSewXT75sV8AiBhmA14dUYnjl9s2eABJV/MoEifF7Rw5NoriLImIAap2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhJ4+CRA9TVsSAnZWagAAGsgQAIHvvcCs5va2WRHbxGww\nk28bjbbdiL7GM2fYND9NhV9xdWKJv2f57MNnL/aybxIhsHTJFYU1EQovwwgZ\n39/BYZ+hu2QR3ICWC6rJS+49dk6l01osLtzFYc5TKuhgIouRer+TnqWSu4nI\nfvBlUJawPjsnALs6M4vhWlmrduVlarLtmE8Q9qSPYgMdLwcJF9GhXU7F7Ne4\nOVp2NOOK6fYC4BCj7sK+NeEELZ8VXOtrxSV1N5pq8ZrAJoZYtJWvlNClkDOG\nqmzXgxa5lrthHsC7GfG9ZZTDgg7uefWTyMA3oe+5ZyzCaqCZrUFF6t6kfVST\nSDJp5DPG0KBNEn1WWmzCO1XZ0W89QBgqZb5xUTdc/X+uKfpR0IDYmSQKer9c\ngMYutHxNRBAPEQ2sTfDjN0iLQs9u3VbMMEZ1nF09KEUU4kwvPE2Rv4myxERv\nZUzj1wymilMAK11s4cS7Y2DAgSANBdDmy8AKW4sDliYYimfOcNRe69P7UK5T\n6CTC15gMVBAlCBfgt+tDvWY8Jf/Wyt1E1thxiFhMiBfbbhOqCuSqINxQm0a5\nwdJlVinHxYIdcuj2X+r0E3YwvBMvdOdPrGNC8bwv/uOo3otc0Kf5rB5I+z8/\nIG+V+czHk6jAiJZHNXF6TzdMJ8J+4QTkA1XQLQZ4zyuGU1MrJlrvgaTI9ZMy\nNl+8\r\n=Sh3u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d4905540d8d7037a5debd18c45e1f48e8a52702","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.128","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.31_1602526782168_0.7663262473120023","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.32-flowchat-balena-api-7f2cff708fc30fd2782114189d285b39d023fc19":{"name":"@balena/jellyfish-sync","version":"3.0.32-flowchat-balena-api-7f2cff708fc30fd2782114189d285b39d023fc19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.32-flowchat-balena-api-7f2cff708fc30fd2782114189d285b39d023fc19","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d049498c95fa7c704523472ad26f951105210058","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.32-flowchat-balena-api-7f2cff708fc30fd2782114189d285b39d023fc19.tgz","fileCount":27,"integrity":"sha512-46Jd/zby/ZehjrJOhfd6A0dDZYog1DrXqwM6caI0xN5c+V3GA2etRrHOcQCdZpwgR9i5Ree6yDXVl//PSLr/BQ==","signatures":[{"sig":"MEQCIDT5TIZUwiRjYtGsduL6vTtOTv5Ed+Wg0K4/3OViNn9FAiB2iJSe4O8zIg9Xs9x0f9LcDI9kULFyhZvIBMUjg5uPgQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhcRSCRA9TVsSAnZWagAAVhAP/2V0F/AlDKu/6n7WDImA\n2CwPXyoG77vrXu8tdJVKl66m7pzmQnlZ1PUlR/gS1HXO1RSVPZNSAcE4z/AU\nYv0I4TAhJ0yAxMtTzleKyvaibNhsa99ExbQDejf1738+niwUBceObVeXzojM\ngDHJjfQGE62RiTzoWlXkhd7AtfqKQEkTINss5nue848l2G02KeeLVoufeyti\n7ProMo33AZ/3phw7iJ+PH0qn/s1WjVW4wKKuNvkdxrRlrz0aTYBOF9PyMFu2\ntOW8qfjeMVy00H/3UZaTBJoWrW9bXsf8Z9+wgViQTQkmcKmtHKY4jHUmQGA6\n5djSzErOsuakvTgerfv7Me40ttZj8ysclh1QO9+4nM5Pu6CDjXFbu1Bv6Os8\nwXvsUb9DZLiozxrZvHqPK3Hf/GyBDnykKM85LjVuKE4jlMCEF/55RbQ1nZIn\n3T0ag1ZqBmCSkQFkZKDUun+sOtSRa3FvcsYpjVfkBzA5or3Z51tBQxwQs7Yl\nlArd/tC4b5nQnymGLL7UrX5xv8NQM6BAll6vcAWWeALrnYrw2p/C9NdW5Xga\nP+0AVYmL3NgQEhyYh1Uzc4iniM6pZJ6kipfxL1VyF1Xa0JnOgB/cTBpEEq27\nmNriEEFQuld1BRDMIwDoAiLno0pim6O13dS99K2GygdCGPXQFzXx/4wYvOpT\nfaum\r\n=f4WD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7f2cff708fc30fd2782114189d285b39d023fc19","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.128","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.38"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.32-flowchat-balena-api-7f2cff708fc30fd2782114189d285b39d023fc19_1602602066243_0.7713532395816705","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.32-renovate-non-major-dff4930968eee5e58c1396a09d6d0ab8ff88ef63":{"name":"@balena/jellyfish-sync","version":"3.0.32-renovate-non-major-dff4930968eee5e58c1396a09d6d0ab8ff88ef63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.32-renovate-non-major-dff4930968eee5e58c1396a09d6d0ab8ff88ef63","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"581d5f97924bf58d8c7912c9bb6e2bd5011d5c89","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.32-renovate-non-major-dff4930968eee5e58c1396a09d6d0ab8ff88ef63.tgz","fileCount":27,"integrity":"sha512-gmGZNtFG2F9g3BcYxTaoo9hy0uMLtNWJcJV8bR6SwKNtKVWU65p8WYrXGFjuBdSUOCOi9zWilgxPWwXTD06Fsw==","signatures":[{"sig":"MEUCIGyWk9ZFMQTaK0T7c5ETl4xm3L2Z6kGWkhyAgIR0ftTtAiEAniDmkOOLSvui3Mxy5i34QjFkQmkpuK9m8Trd4ZThJsI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhlEoCRA9TVsSAnZWagAAja0P/RTXUXKukiQktVaiHc6j\nDX0lFhvFdH9R6lSG9HgjaB2DTHmkJw2yPxxYYpGAX3WnAnXQv90NQ6gIegOS\n1LZKBQ5Lu2jbm9TgziJewon65TnaZPETTpoFscKpYGAisUDT0p+fayVTx3TT\nO43LnLUNIxCmFKDXOxyepzhq5tiUqWt6DtopXdDkTBkbr6iFXzwUF35Ivr6u\nQ2d8f69Dk/HoyWp6jakT5ZtUGmK6YI3bWUTB1ruM5fFxzgYGiM7uSo2/fM9r\nm5kzr9JP3tQjRJ37GWTYH+ZhFo2xP5USNq+xpyI5ApOAP4t3/xa7yTR/X1//\nA3JUC12dK+GzzekVx6OARS2t/Md32OBUN1pWHCIJUQHo6uelG1pZbrL5UTJI\n6pnC4mWqRies3xOdRXjRl8/sMUArTUOVFPzC/9a7AipZvMfcTFkyTp4eWJua\nBNdEHwGLWF4DxB6Suw+jltTVDS8UGZMgQiPyUpFi5lGavK+wb8ZzjzlkwH33\ngGrJ6rIUmyQAbSprPZsmEkHbRZZC6DKby0ud5jVwPiansBWvDt9PryaP8RE0\nBqvUwC6C2NUuY2cPqJSMt5dhmYOxtzQv4n3EFksoYrsKFbg43Ow8AD8bBkIc\nMhKWpm6TQVQl0lnpjUMx3qmX6WhE4ReKXdRXvIdN2GisMAg+iLHRE0Nxx9vU\n/kEr\r\n=HKbb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dff4930968eee5e58c1396a09d6d0ab8ff88ef63","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.129","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.32-renovate-non-major-dff4930968eee5e58c1396a09d6d0ab8ff88ef63_1602638120345_0.5967471855057278","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.32":{"name":"@balena/jellyfish-sync","version":"3.0.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.32","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5534eebab229fb0577c99f52be7d3f66da8b7a12","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.32.tgz","fileCount":27,"integrity":"sha512-SNgbkZJw46GXWBiw5oRSQPvQCuyBzzYQCYmk04qE4Jl6MAzabWeGp7tXTFa42eNiay4fH6SYkprVcYIvxoHEtQ==","signatures":[{"sig":"MEYCIQDn4opgCGoCenc9rlztBeGfRCc9QODHDtPpwdmBOQlZSAIhAP1ZbZAU6sMiecI5cYIbtAu4t+kNDVYHiYMf+zcTXtAe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":259940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhlHDCRA9TVsSAnZWagAABgAQAJh+mCRNS4a/mZxTjzFa\nX/IhHAfda605ixCHneZPiV0DxJzJGrq9Bl0QsIjMhE3tjO/64Z2YfXgYrJBT\nPL1Q2A15Tl6PbOxlEu5OqMN5djX6b7XtIILC9MmukEPGDfyynJufZTgDQV1Y\nS21ZEOYjgE2Zxu0Ig5ihO0ojtCEXlLE6SMTE8T3OdC1KEdAtZxC0MNNR2cF9\n1C41j0PlFyQEUSdwDWsF/1KjzGY1U1Fih/Xt0+l5h0LmJeQbI6jvDMHtnh8v\nZmtPIpTQ7KU1fTnXe2eV6jjKRkmdJf7FmrKoDhThL7q3N3ye4HsohHddxQAl\nrpghy/cYG1dUOL3JGKfg6p+OuS4e+wFeNGm0FspwoaxPwp3BdE8lbcs8kryZ\nxfeHwyPhYthe/ZhC3zQLJ6NXtFtPno4zY3D2P/0Iyd8yPBTWfUABjl8LVzDI\ngfSNVsw50vuH1uGmEl67whc/YptJ9nGV8uEOlXfkwDB5DPwbn387Vcxt3aWU\napbP/KTf1l+7L4ENARdG0theSehUtF6fjsDO0AVUVu5t8C4h/w5WmxZc5/Rn\nuvnzub+ENf4gdhllme3xh4oFuBFvFnT2vYDW0EVxpD6ZI5r6LFi4L8GVlGhN\n94soExr1g2D101bD5DYtegHnNMFDNZ6wfC4kRsus7/fMsBRch9Ba2U7dB8EZ\n5aBb\r\n=gQ8a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5d5990137a6148e81ffaef533330a82d9da2acce","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.129","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.32_1602638275237_0.7513424372571604","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.33-renovate-non-major-3dc5909c88642a96c5994062cfb2b584bb121c8c":{"name":"@balena/jellyfish-sync","version":"3.0.33-renovate-non-major-3dc5909c88642a96c5994062cfb2b584bb121c8c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.33-renovate-non-major-3dc5909c88642a96c5994062cfb2b584bb121c8c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb42c472a659dde762794cb7004036d6e3b45e5c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.33-renovate-non-major-3dc5909c88642a96c5994062cfb2b584bb121c8c.tgz","fileCount":27,"integrity":"sha512-izgdlXmAaUKfHlJaxHNo/rwwhVcnq9E8i0J52YF1mSxM1qiw9CB+Bss7Zkc63E5WrIjaGSbXIQ8Fqw53oq4Ybg==","signatures":[{"sig":"MEQCIGIAKZ/j1wjOQ0tBtjlvnMeCXhhsEtCXFxKSCq8PbZSzAiB9P6OIjBub1c9SYIVXJ3x9aMCUqLKy6/V5r5TSfbatLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhmYRCRA9TVsSAnZWagAArJcP/2GP1Jg/+5k5U27NExdc\nR7HN2BRCFkLQiWOaCsp0XzlnZhd1CZwEoU3ydpTcxSXKnK+SSSjhorW+JuTv\n1y104x14x3TGHNnkb/fr8TMfWGlwwap5vNqq43sq86rbR4OFUga6YuwjTmpy\nhQPE7DwpOTuhrwwqm4ZDAQpXaMpGy95gvodxLD6SgRjxw1f7niFCKcfjzNcK\nGZCZYlqFJaP9/xUwrCsqA0ZmaV3LTYsXuLMJUOh3p+EFDKJiMUlOu0c9UGuW\nf8DhC++v3a8F2pvP/dukqo61JMwTKwnZfn2aJ+dNkZbyIX398IX7p0kZTBt7\nYTu50PQthfRy3kdlclFISaYlnElCE6bhL8nwsvY2mPL5eDRITA50NQ+EOzbL\nnvAtnVX+Iu6sobL1q1Ch2H8E3uTk3ACbZsi8UAc0VACLkilpdo6d6F/JT8zf\nsb1iC8LehDBeLpjL9f+EWSa/JBgv5VATf/owaLrFcz8Z8dduHoZcp9tgOGsi\ndx83jLIxbEMbGclJsVWR/N830k4eTwloQ8U7j792IeWWRvP3EGdw25rLMLbc\nGVEjf+R0qHYvAuWIDAllY6qQnp86+K3zjxwf8koiAA2UJQaJXwbpywW3+hQ3\nuH1KzCVWZ26XfrLF0J8XttlQJoicm3WS6oWVgGtFUCa3vGNE+txU9q2CtHEX\nhpbU\r\n=KDVr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3dc5909c88642a96c5994062cfb2b584bb121c8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.33-renovate-non-major-3dc5909c88642a96c5994062cfb2b584bb121c8c_1602643472726_0.9730136195540422","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.33":{"name":"@balena/jellyfish-sync","version":"3.0.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.33","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"277f36cba92955be2688e86bb9d468286e5e8305","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.33.tgz","fileCount":27,"integrity":"sha512-4zdbglqbceQ2UeEEG0BYzAY2DvqJ5z3bsrFVYz9R6M4Ah1az9AOXMiXBwsOuV3u35ir5Hd30F0nJ1vJrRrDUdw==","signatures":[{"sig":"MEYCIQCiCHmNCq/spOt3qaESdrTY0Bu2E8KaHIVXfg/V8HV20AIhAM3dtQQA1lLInyztgh37B9KUAEIdNfvmscLL2H4k+Sb2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhmasCRA9TVsSAnZWagAA+DoQAJ2yAIdTxMEX34B1ffcB\nkq5D9SZxvwNxxicwUt8XHjtMGkU5senP3/idkOKkjAdQ45/LWesion1cS/OX\niVM09ysjrSrysveg3sxlv0x7agy9NL51hGahkQNnMApxj4d1vQpRtONN5vY5\nF4MvdvMcxlCroyCzvBiLG+FvM+7FMMtZDfx4Y7OgDFQ4slq8pe4hZRbKIqnR\niSN9X1QCW1nHCxm+12JarPype+sI127Sb7wiPlqGc12LK0BMmBHdvePHxx1i\nM7fRGhCboeBYsc3RaI13bLvCbqQ4BLNuOt27MNKiO2ZhsWEbGWS0eWMD+HIi\nf3F+goVwFXdjILDV6nFHUYIzCrIEOH1OxGBNlRsVMVUR2BCUtRMlFrOjyqt3\n/lN5iEoDq+rUrg6G10bNRmKVyXqwd0j2Bq7AGf43PfwzyjF5CvwqDWJJYcD+\nuBJ/RQl334RSo5RTSWd+D52hMZyB8cYNX91bbEru4eS5A8YkiGAfXnebyY8d\n1nd1OIEN5L5ogNvQqZID1YYvYvhJVXg68679g5q7VlN2SKbkeXtFlb8gOUGT\nu+KRI3EoervpbOev/MyKzSmy5RsuM5iDx2KgE9NqNijLqFZi0ozEq8AQh7cx\nYkxR6gA5vltyq+UaPRV5Y8IU4TUEqY8lyxR7czz/8E2hUFIhQKjMtxokjlZw\neY7T\r\n=v9iJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"35d53f4941cdb0269bc6db6e7d86796ae5e0875e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.33_1602643627948_0.5085190246877325","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.34-flowchat-balena-api-cb19c2eb83db1b30f1b355b600b35711276a6579":{"name":"@balena/jellyfish-sync","version":"3.0.34-flowchat-balena-api-cb19c2eb83db1b30f1b355b600b35711276a6579","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.34-flowchat-balena-api-cb19c2eb83db1b30f1b355b600b35711276a6579","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"445d326ee50886c570ea8a1cb68e9703aa01b270","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.34-flowchat-balena-api-cb19c2eb83db1b30f1b355b600b35711276a6579.tgz","fileCount":27,"integrity":"sha512-EWlyKBUt3UIZl4TXIJTjRvG0U2j2Tb86NEf4aSIFTEbhrmhjFs6kdvfIe4JCgfjgWQdZVqlNMjJbTbIuG4dNtw==","signatures":[{"sig":"MEYCIQCph2ZmLmGG3hnCyvpxYDi0m5L9rj/GoHgJ3MPXppz92AIhAJF8+cwD6zE8iaT3J1t7xfxUqNWVNp3z+QS+Z1Zflm3z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhsBWCRA9TVsSAnZWagAAUjwP/jexuycbljBYlAnRWe9O\n/7yFBODU9hlKpHMc542aer2s9z4xczA+He6YpASU3XBOrrZQPbmQOAP+kB3d\nrdR81XJbrgNCQi/OtypHuYWoKFENEED2A+U+5zMpOWCd8PYc7d585RE+t+pj\n4jRD7HE6D3ZuKPcLUQdujcwZW2CuZTQr/uTrXd7ayuyKxp1OUDOqPuqQimnV\n0DLkGUmj9MSG4fqgwEiZMJAJqEjcqZQZTvv2w1qrWtms2m5ms3hK1L/3Kj/p\npSYt1B9PY7ZRUJ47IOTFyJRBwrhB0u3FIfNrSlhjuZumjA1Qi5gvT/uZRlr8\nsQvJnDEzH7w3VmDG5HuXSR+2lRAjLdGpQ2wlFbqIoWsdKsvh5gQ4UvVvdsse\nyIehDh21vDe0wqW1ubQ2l2s0KUN4t3eKJvmvzuZovCGW6DhqM87Srzgi+MFl\nCF1MUKcfA4G1laDxgZ/DE8cUG7w9wMTjSPRhUHy0iZ0w7vw6yg5/+6lProPz\nnnZqS4NXuDqH8xMxQCWf7U4ZYc1PsxETo50fJuBfaaofQ34MeS0VJFd+/47L\nLzWeGzoi0LtJjtQMXFNMX5YFi+2tga/76M9LrJUQ6dHPlPjyK1FymJTk2TKa\nFNQd9vBKLIaG6uTH7DMkFQf0iaU5BqVUnBYHkog2EyRuMseOoLbqfWmnJ7LW\nU/yh\r\n=0KGC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cb19c2eb83db1b30f1b355b600b35711276a6579","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.34-flowchat-balena-api-cb19c2eb83db1b30f1b355b600b35711276a6579_1602666581915_0.016622563155591408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.34-flowchat-balena-api-938264b5d27a22bfffe6188084aa15f6a24aeea1":{"name":"@balena/jellyfish-sync","version":"3.0.34-flowchat-balena-api-938264b5d27a22bfffe6188084aa15f6a24aeea1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.34-flowchat-balena-api-938264b5d27a22bfffe6188084aa15f6a24aeea1","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61211d943d53b1738ac5f8c3ae17099acdfbd6e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.34-flowchat-balena-api-938264b5d27a22bfffe6188084aa15f6a24aeea1.tgz","fileCount":27,"integrity":"sha512-uCmeTxTDN376PCNWt4a8HK7sgSm0mm4SecbvXW0iISXM+nS4gLGG9PMY0xPmWGAVm6lJS0z0HWFwi7KsghQEjQ==","signatures":[{"sig":"MEUCIF/DDnWPGdq2lhaTvYheuc/wRfWXdgUxjq9a2hq2v8RAAiEAgvi0HDyNX8ExAQXHigc7El4Adcf80QbADAlinmUYvCg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260429,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvIYCRA9TVsSAnZWagAAWyAP/17jJrWHgxWJJiozGIdz\n6hZQ+nl9cuxE/PvmpY9M40kJK0SA3GagYD0VnovthBJhE032ggNjwVrMXBzY\nmuCZr/WxideQgLZrgT67azr4e0CwSs/mSAohIu75z6HszJG/2PNPbe+qf+E8\noHlI/G28WppxkmQyUivdb3yaUqvKuJyNyfwv6fRtI7ketEXbRFAd+QRJ4hjL\n1rnRkKVW8+npTYD7JEAH/IKBn5WlWlxICMlp5W9StdJnZvWkrWLn3EpuIcxG\nxj3G0bJ2u3A9OhtqTbHBmLxT+JbTGC5qX8xYuVoSeUIcAsPPAwsvWG7cftLn\nXY8F1ne4Rv42ISTYqOzfcRZibv/xpBylG/kIGlECei9cBVH273G6HSk5YB57\naaQqjVMqm2ouAi+RTUaLOJ1juFm8A+6usQ8yPx1NTQhbpJXImSWZPHgqiQbW\nmHuynwFGGviLSMZ/DVsud15xgj1McU7ax323GuEQtaIfgeLQgF8iEGI8FRce\n5fl959kiltiRlj8KZ/AvnhlO25I2+71WJxY7TAB6d4Xa6/TbFyKkR3Me2hs0\nnLLOtqDXHE+9LFiP/iGlBXLnAZOcoik6tKL/rxInIE6k2OYAd4FDhzgVl5hZ\nl4yAiVTtUmJ3P6p4t3QsKs1YB9242SEGIQ0g59mzOk0LPWl2dMGTeP3q9C9K\nGcW1\r\n=v7jF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"938264b5d27a22bfffe6188084aa15f6a24aeea1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.34-flowchat-balena-api-938264b5d27a22bfffe6188084aa15f6a24aeea1_1602679319679_0.4502329485965868","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.34-flowchat-balena-api-50b137f64cdbf8a8c65abaa9c8fcef7e01683c95":{"name":"@balena/jellyfish-sync","version":"3.0.34-flowchat-balena-api-50b137f64cdbf8a8c65abaa9c8fcef7e01683c95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.34-flowchat-balena-api-50b137f64cdbf8a8c65abaa9c8fcef7e01683c95","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bc81d0f24e73f0f4c6c0ebf5015296d8147a58d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.34-flowchat-balena-api-50b137f64cdbf8a8c65abaa9c8fcef7e01683c95.tgz","fileCount":27,"integrity":"sha512-W5yr5Yn63I2tE73NWyXtfuZaQLA78g2rrykJoB8d8XxBYsrlfwJnbp/495gRFF1FSkp9RIbmzZtd1XxsjutoPQ==","signatures":[{"sig":"MEUCIC728jW81o5t3bHjli+FPfFu3L6bCpTG37BpCJir863sAiEA5XpLsFg+EasBbNQ2j0Um7rKWwPPhOLaw2BuXbciCKpc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvTdCRA9TVsSAnZWagAAvDsP/1N1EliIAI3P5XsfvbeW\nswKATfA8GPE0E62gFB+F9RgL95DC72kvJVD6PTHDW35kPhczzuYFrr2k8OsT\nJdokWforWNYwOZ+goeYHoVhmurcFafhyUc/Ebcvxd5MLHBhSYyMICQKABO1m\nl8QqHymc9KSE0JOL460BUQrWkEZKfZXPgJ7olTQTcjzKDr6VFzkuizc/PobF\nGF+Gv3e4dTwvAbiBRzd1/BXynR47OV1aitarcCNyA09AFInwAc+01akvXXty\nlAVlkiNHN3hOS/LfJf+uPX2Ic5mBGPiPGhWP/yusVD/yn0r47MKmKNYPc0WB\ncSB94EEFmjWhRa1n2HxgBA1gqQsdG8UQxr+FImU3e6/LgNmzrLZl/lwGcjq/\n1RPPCZbmdj/diCQd9p8IuM+RI9xqjHEfvq9Fb/aC4dTJ1q4S/SqCiDi5aZ36\nJd5q//tHLaeFQHD/wYo/qCbQBM2j74QYw4pyYN3V1Glmf7nzYCegSpkTn0Ct\nVqooJGcGXrYWBen3UBgji9JoNvQ4ezuVY2vB3wpOUu39+eb73CqJpQNqiInH\nWIqIblEKQLn+kZtp8pzDe+yqlDfmB37dlJVErK4XoW1x2Z1kizQnJDMgYpfA\nJPdqMy3hVgRtGYJXxzRpZc0ok+CfZa56fZ/FjsXcJF4H4krudDVc34rSY1v8\nd6c3\r\n=7ukG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"50b137f64cdbf8a8c65abaa9c8fcef7e01683c95","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.34-flowchat-balena-api-50b137f64cdbf8a8c65abaa9c8fcef7e01683c95_1602680028669_0.9597927398128256","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.34":{"name":"@balena/jellyfish-sync","version":"3.0.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.34","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa2d2179bdf1a4728ac17d909252a1e410bf9858","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.34.tgz","fileCount":27,"integrity":"sha512-5ViZ8wRXuh7I4m4QBl2dAM8MRpdOXbrkGJqVUx+aYEQn7/kk1VtiU/DmTGqFhEpbR60/PhXhnclDwpTpL9JbMQ==","signatures":[{"sig":"MEQCIDnEh9FxXFnv7QTxCCPu/79yERAsBUDA6m75i/wAr3vgAiA/DYHt34Y7FU4XAlUv97UEc0U5HtPNSUaYgNVFVvELKA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfhvWPCRA9TVsSAnZWagAAsVQP/2eWNjVPOpES0PK6IdDt\nKATW3W3HEoGwzd7SB56i1mc5F1dRm5DOGDaQDoFtBRl4iMYDHuvJoqoTVioO\neDuZK+Q9g1YO0A1/Oa12pGnzwKYWAlMB7+GcKm4GwlD3vLlHV4KWrZTUza6v\nWbpeaigIrNMVjT+54KeBySt/8e5UH4PtEnB1Ed+UW9YjP3sWlLGkvnEYScmt\ny5it5Luslhcnze6ZcFxmjOQqKV7TkqgUJrDLj59wfeWQ5CNhZeq+EWPqfQdg\nCK/vIFS1VYdPzo4K2VHX6FwoQy/Y5VHPE+b5r/6CPztoJ3KuusATiFEbQcXy\nIeYnSBBytarC2TB17saUnCo3eXrPOBTYlVBLdFLimT5vTjjsV7lyc4TCwp/T\n4+cDRCgN8WuQB7RpnixYDlrEdZWYdu5vBpyxfX7GKc9Dfv8eUjhMnefE9S/f\nwh33bNM0bGgVDr3Lq/FkCJh1apPW4K/4v+8ztGkWtTs11fc3nyhmdPtQVFE7\nXOZHCJtajz2/lZ8LyR5uSQagX84GkKbcZV0wanMmtJiQIniWDTpqz53j5VpT\nxfVbCbqpPsx/QzDbHgvYUQNsymwIpsvKqiV/hWpxf4S2kC2SFFDxa5qbXwbj\nkVtWuso+ob/lqDVLHur1TC+QfmRRmx6avQePOCk7lNzMAimvf0a4GaMYIXGN\n4AfK\r\n=SDOs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"88685cf611e60b9eca820b9999cc0bbea45aea20","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.6.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.34_1602680207066_0.666206551103449","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-8b7c70a086802c109e789f3da8e7d27e230ea63e":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-8b7c70a086802c109e789f3da8e7d27e230ea63e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-8b7c70a086802c109e789f3da8e7d27e230ea63e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8503eb97d5f0d5988b18081816d91921de8fd021","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-8b7c70a086802c109e789f3da8e7d27e230ea63e.tgz","fileCount":27,"integrity":"sha512-gBF0gGRb0sDaDXBHrinDxJaRWoDHnEq2ZP/ENDzJrz6Pmh7EnNoM0ZZFhYSDImoqdkSejBwbWCMKOJR6mF7NMA==","signatures":[{"sig":"MEUCICSr9GWELfFqXw8OvMHZnkkxlaGNEOmkFIQ2x5Bz6i3+AiEAuTE2Uhzya/Ps7j9Xnw5peRmId4JHBzsV+HuS0UNRnN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiL3CCRA9TVsSAnZWagAAm+UP/jHR+0Dk8P4jH8d2GcyD\nPUilV6VKrp4hm32XRDVng04uUqGcdrJo0VqUk6/drXJEoKQqgEG+DRXymR97\nvl++o/nSkvdRGgeaomJcMQph8w22jAfdpFs+HPYTja45jHqteybIeE/Fz6iS\nO3OTLC868p80qiTCSHqvRU8GLPi//9jmAlPe+UzNp4srVNGNR++xeGF+t+SI\nxHaYsXejNR6F7Z565hbUcb0gBl89N2Ds7KQJ6gyM/OSuAVZNMRMkopVnZKMp\nkNcRHEl9iy9s7uiThuB6WUYBrV0FMRPCfUsSs47Sp2rlJwwImgYk3QfGa3gc\n66RrgN3H3uPglPzSg2tgPgVLCZhtzGVQ4zOhO1yUFWXcFAtDr62MBfV3N503\nbNZbtHvll2Pun5+N7WCXLChyIzYhLVBYxZX84rHbYx1ujBl5TEy9V4OmSRe3\nj1ckEScLeFuibqGuNXh4lI4vOzkJlsYYUPcY7Rm0XzG0rFXbezMdva6WMplM\n1orbOf+ylkfI+Cq/0xdKreBpwEPO/0tU3ree7uJICJRb+L8i4yIUnpES0fOS\ngpCjNjPSocvzCWjJWrL5nOrtngUqmv+Z8voJG6krdgtYtw2ZqYpH7kC7GQ01\nPiR/6+UZrhfBolm7lcnPWKXq6yql9oelT3KX/cBo+TjzDlP03sYViVasZUy2\nz2qS\r\n=CHKk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8b7c70a086802c109e789f3da8e7d27e230ea63e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-8b7c70a086802c109e789f3da8e7d27e230ea63e_1602796993830_0.6890923217126552","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-ac916b7d4e9a6396424b7c365480a37c29bc7567":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-ac916b7d4e9a6396424b7c365480a37c29bc7567","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-ac916b7d4e9a6396424b7c365480a37c29bc7567","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"233050de3643b1991603cecd519727a8ad1013ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-ac916b7d4e9a6396424b7c365480a37c29bc7567.tgz","fileCount":27,"integrity":"sha512-+Wlx8wMORxZGWFoGociAXHxASr0Jo78fBtMImr0aZIxP+fpByJMxtdSuf72cIynd/WA1UuXP1P4SnF54+XsACQ==","signatures":[{"sig":"MEYCIQCXWd7Sgnvxw8s1+Koej88RNEUk16pABmMZ1avBErlAggIhAI06OH/u74hxpugGHLmnWvdOleRjeTjxnBedrvHzkKkz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfiZ+sCRA9TVsSAnZWagAAgCYP/ivtto88K3XNkU5Ja6Dh\nTJJ7VeDlRdISBNpyK1JT4oV8rSkQopX0IapN/hYMPk615tawEHe6buzw7e1B\nxtaH0LyK0jBRrjh+kabg5ns2PYD2MwPeT7m/7aj0YOio4iLwtStfh/DaLAPk\nxEuDw/QgSU8Cla1uJNENw/HNQnIXQ8i/sqSJr2aXP0W7bw7pFFJkGkGmVzo0\nE+S0fqHRFzKLBHec8lLfC/qqpdSgsShImJK5Bka/zsnaTvp6TeaFsAkGTMkW\n8iQXdPL7JPK6ZGzokpjcOHltyuXJHtgcMFYP9wC/UAXz2tBGJz0HM1R819AZ\nSUlE9kCRQc90a4dDKjzze5SVWwVLPmJPmNf1rcadMTd6Ij677hnB0G0QXU2j\ntpbeV1NpGfrB6+yK2sFBgBjcU/PWeOK7tN8OB3hg5KUe/Y7GGcCHbSJv8S6+\nXzhD6T1FcZhoPnY2kjklFfPhh0PySiFmUaYhoMxnlPAjzbtxbPt1vbKVJVHc\ni4C79GZ2mg/dMh9KH327Wtke0fonb0LgTgZB2wF5nXd6g2KArVZP3FfSuQzT\nNncqBFWfyX7+9BY+Uk5Q2dJreLSnOLJArCX6jhiDVsMVti1JV+8bLXAEPp6T\nKZV0Ng82XiUc26tXv9XvcFzhRrGGU/oRTYy3aAU7gUsbA0zyHiCfSii65Bp5\nzbmz\r\n=/Tcc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ac916b7d4e9a6396424b7c365480a37c29bc7567","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-ac916b7d4e9a6396424b7c365480a37c29bc7567_1602854828271_0.15487618470204922","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-b204bc7d19336e2396457bbd7e45a7b8cd508fe3":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-b204bc7d19336e2396457bbd7e45a7b8cd508fe3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-b204bc7d19336e2396457bbd7e45a7b8cd508fe3","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29ff48ba6116208915e14a5ee7dda16fc0455561","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-b204bc7d19336e2396457bbd7e45a7b8cd508fe3.tgz","fileCount":27,"integrity":"sha512-2AwNnHH79geY/4+C86tdyaimiMYABhUWEXLBhth5wxXo4rHDF/Uor5VBpDP4BfEq1w0y/gBPf9LmVDIuh/yu5Q==","signatures":[{"sig":"MEYCIQDB1exFKFu0wS5t5LGJLkkVQPV9aZexHJOsilSSs5GVJgIhAK0CeZCh0apUESFYEcXtniKcCeWS7N9FUiKHjLZI3p9p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfip1cCRA9TVsSAnZWagAAy58P/3/GY1odt5CrVUhCl1Zf\nYJ/uL1KfuCPhY0Hcam/XBK+elo/2+T271xLZdjGWlKhNuYQjT4eNJXrpc8pA\nktMaXNxN7gm+u3Co9DElMqgTM7OxLYuwMK/5GOwKF/LsV+TMJQFr2fGiTKLK\no0Cljy3HD2nCUJEuHXeR8Roc+++xuCeaR3wE0UT5C7nK0fLrIRhAQJnLDr7w\nxL5ypQPJgueC8uFJ5PKpcQ/2sIk0Fi+xEv+J7ARtQTfrsmBSjf66/xfXJX4G\nz8fjMYbxBJO8VwVqLDlufknhMWz3VmuzToICXdbuj5Ja8Jgxz8albUHx778h\noVcLXPPY7qOTI7h9I/q3UEjZQacwSGOariOFLeftwx8eK3w3RMlXfJPQzMov\n6uHGJzZ7Ncv/8GkIEInEPKA/qY3n0S2TkLRUM/s2Ye9YFJXB41/9oSC6FLtV\nuFb7TtCOrZVn6Gi7qp2rnZ+L1Syq/w68evAd27OKmK69Hrl0Wy9pBKXl4dG2\n8BKh3ocBM0XD/bR0GEGehPT0rgz6/R3RQ89PUnshD5QcCIv+NAsjhbQP669E\n1Y0O/SqGEZQHol4ktH4Yunk4e8NBLEHAtF26jLoLaMLq+pC5Lwnlkn56tdyA\nKzBRDZKvEMQKM4mWr1RDG8JEWhZTO5+bqdyIzlvXM8AG4kkCHHI41m6nvroh\nU/eI\r\n=Evml\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b204bc7d19336e2396457bbd7e45a7b8cd508fe3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-b204bc7d19336e2396457bbd7e45a7b8cd508fe3_1602919771885_0.6034688538281681","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-03feaa0128f86afc5ee0639132fe74936fc44a6f":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-03feaa0128f86afc5ee0639132fe74936fc44a6f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-03feaa0128f86afc5ee0639132fe74936fc44a6f","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1211bcd7d084f9d9cf74e838481a2f5d25ed6f82","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-03feaa0128f86afc5ee0639132fe74936fc44a6f.tgz","fileCount":27,"integrity":"sha512-kmP+ILoULq23KEjBrskOxYFJemtkea0qUx8SdTt7MTz3lEXp4JVqi6uSBVfvaZzbOc79LqWLcdyr/CbXEN2ung==","signatures":[{"sig":"MEQCIDGcbjbHK/EeQzGIMCpN8ZPsNmsKecMuaTmAl5tu07yDAiAoPYhEYG78/fB+nD6SarGV10NwKkyF0hwXAE02FgIB9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjadHCRA9TVsSAnZWagAAd5cP/jplLKUy891mpiEwyxC5\nLo6yxgF3WNEwW8zqp4qqept1I00Hipeq3CoFSTNy27HWLiQ2dAud/32d6loi\nvxXmrFTofD1dtCzSmMOqrasdqWkU+V1VPqjHr7om3QdsCQooDp+feQGrvOaO\nQDMMdpyKMIl7YNFEhHDOJgVjRi/k7XfaPrk4JueMoW0pPsRuBl3vwroDMNFm\nUuIUwOEdCdSPupKydg3lQl8xMpPpEAVdx39Zbc/wJMvUde5Hy5qAuDUIsDUy\njxwdBnb5XxOnA4GAVdlNoxcPZ6Zj2mMbEPpYCgPHTt+IZoZBEh4dyDlmEvjp\nhy4bx3hKBGVhiv57+Mu6UbKvcPa6DcmwDGO1LvBZUKYhAh3OIcCoao/Pqs6F\nkDVl0D5qFajL7JGRjZ5rjuDpnNGh1ZQZQuMrHz+GYM52OxTQf6sBtSdEQcrl\nKFnAOwlAPfkvhByO7eibPTgU8XufL0AW6QFRI3P9Kjkl/ZNRo8jwS6Tuk5hs\n4yTl5JWWxCUQKK3fOszPUdLemYGfFJer+3J70F3RERllW1ttcrVhQz5wXLd5\nD+LY9iwV5MspLJwYLtWsTbBEn3wf+xlH2vQHqX98xvF5PcKFrrbNe5Oh40tK\n/0QOqan9EAidV2CnFFBN5+ncEAEJV1rw43Ff+SIA3Qb/1QhSP/fYGMZvx9Vm\n+xCR\r\n=DQKQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"03feaa0128f86afc5ee0639132fe74936fc44a6f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-03feaa0128f86afc5ee0639132fe74936fc44a6f_1603118918642_0.45141916660796566","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-a956d039f78cbb1f6d3aa21191b198d9325d5bdc":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-a956d039f78cbb1f6d3aa21191b198d9325d5bdc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-a956d039f78cbb1f6d3aa21191b198d9325d5bdc","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f6887513c8cddea3993ba0f23368d7ae93052e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-a956d039f78cbb1f6d3aa21191b198d9325d5bdc.tgz","fileCount":27,"integrity":"sha512-ztAaXPobwvNoTEVqeFqQlhOpb3DziFsvw12VEzcsi+GkPmOEArwaRBjB7vbs4wRCsx0kZc3icEySxlGI9Uwp5A==","signatures":[{"sig":"MEQCIH9nmikmf5iOdPomrDwLCTGyCrAeEXJdyBBXlTNZSiZeAiAaXR+BO8DdZ+1Wa/DF258vnEEegiNMPk6mvlPzc2vrKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjay2CRA9TVsSAnZWagAA/msP/06npNoZttTrx8Sl4YvT\n/R3LCUvUizCV83dfbjKbeiKuOncszka/Yvxbd5H4ULx3ytGzPvnGqGyRkN06\nae1qFoYw/B4WQV2cZ5VKzvMfQnNF/iG7o7Yqk3TsBxZuyT9o+1NWfEYwo0hS\nPBu8VqWnr4ajGQAiYtc+WU14iVTHpWYvTNn1v+kYjmOV++tiI7FOGBN8DNLV\nHXCm5X8S4twg3HiAC0yILFUj0Ukx9eUosNScvdcCsYpk/YXa7rNTRbZN9FMQ\njIdsv1p1THHN47lnK+sbxZsUdkOwQ2ugadNhM/zdJKNfx7JDU2lPW2xwxicp\nFA0xHdNjfk5363QZV7JEUeA1vBH7LCd30XxoVL0Fsch8/59aDhnQDSdUx872\nXfFdti4trb701cjAKijuIvpcjxWC3Z7vLLXPlYCKMD/FdNG4G6A2WwOzDcsR\n7ru4j4c2zf0d6rAAL8Ytc9TnnOdLYGK913JrktkFTC39y63apZujegSLkQjT\nbKSsXYDZf71sJGJbekaZ5e9nSBLXqdWmPOCX9eix+L8uOa2PftKOSE9pFpVR\nLv89asRctj6ScKVvs6kbBrQd/xoDwzP/tMeAQvwGi4m8MbNmVPnh37nEU9SQ\neITs/cOx3BBXMBtsOsQUHCJvbRgyaibG+GQsnLLjEHR38EmvKadLJ6LrQ0uf\nr/Vs\r\n=XPsh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a956d039f78cbb1f6d3aa21191b198d9325d5bdc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-a956d039f78cbb1f6d3aa21191b198d9325d5bdc_1603120310125_0.17649633007230547","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-1ef8d8c275b70a5b7bfa4165615d5b0b552842f1":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-1ef8d8c275b70a5b7bfa4165615d5b0b552842f1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-1ef8d8c275b70a5b7bfa4165615d5b0b552842f1","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aef0df8b8a70694c243f9d01b21616e02f6b7c02","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-1ef8d8c275b70a5b7bfa4165615d5b0b552842f1.tgz","fileCount":27,"integrity":"sha512-U0spzHmjPIfGrKuO3RP95RfW2wW55E925jmWkR64ZfikeYelpfRIdAedhRNIOTEMou7qLi0HfRQxtaYWjAuJJw==","signatures":[{"sig":"MEUCIQDNgamn3hA/w7ytpgBet37jp86RkPd/4XD+aJ01BU6X3AIgeXXuqFgOUlYX39EJJMU9ndqI4kRs+rH7UsHahuxGchY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":260965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjbrkCRA9TVsSAnZWagAAu74P/1v+Rd/lW7dVPhmMMrOY\nCp/+FT05OcUGNkpJyJQS2rqkSGsMR6XC5U5Nf5Yc3NCI563+L+ikgA6guRSV\nVqNMJYVNVbs2hWTYkhgXf8ObxkVRzBgrUYSb+rwANjCDynCAlE38z2kD8b35\nowlBlDY5hpB5TyzIWkfpt9Jb0mWJZM+hd2uVRCq1WlYAWdxnxy+352BE7u2+\n8EdVNRm+ehgK/4Xtu+VB0l9XA3dU2u55gKC7FaeaeG7srLGlbqlmK4csZThW\n8hXxzqci0i0NSbuM8pQqjaLCn5sy4evrguZwSvNgIUNEI2cGa9EWJuINWlgH\njpWzFQWwtdd6kGi1lAsthAiPPCgNDadxCTyvCbNfah25sCtQC8g4vcLcvGvT\nz0LS/6s4KZGP7iA48+RC8yFwW5FwYJfVvbHqxkX90/H5X/rym33Rk4mhwDyJ\n6C3WAdX2Eu1RkKn5PJm7Q9XvTQspJn/gKYxQJPT6X+mYA0VN1WYskXqWbwPI\nU1EOFeZA2r87Ysm2Uf/Fbm0ZH6pD8BYqDYZ+7+GsOiQw3/lDM3m8fIYlVz0q\nYYoUrzm5kxjz0X9AkhNeKcb0OI4S5uBzdBHH5hmdxHdArdLuxbw+U74ng3oW\ndz1EkTDlU9iBHcAB5xOFhzYJ9LCU/NytXXMeqbsUD6AwQ+9KOtBfksOrvacX\n217Y\r\n=kB1v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1ef8d8c275b70a5b7bfa4165615d5b0b552842f1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-1ef8d8c275b70a5b7bfa4165615d5b0b552842f1_1603123940254_0.8375491322897983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-update-balena-api-sync-objects-96856d5da22c2e239fc20d37dc0eebb073ce7aad":{"name":"@balena/jellyfish-sync","version":"3.0.35-update-balena-api-sync-objects-96856d5da22c2e239fc20d37dc0eebb073ce7aad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-update-balena-api-sync-objects-96856d5da22c2e239fc20d37dc0eebb073ce7aad","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"25746439f9da44c69c50a4c4547051856c377dc4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-update-balena-api-sync-objects-96856d5da22c2e239fc20d37dc0eebb073ce7aad.tgz","fileCount":28,"integrity":"sha512-4+lJu0ISXkl4pZhiNf+rD+thmE8q05MWJQu/7rwqEMyaf6qJSEJ4i6JMJTNVeO8UePPdfpePD6HwBTClE15GnQ==","signatures":[{"sig":"MEQCIEofrt9D3xizViWA28Wmiztt17dwuIWboCi2JA2wIhlQAiBiIEiEL4DxNoZ4/0oqsQrWA9p61AzoyM8+bARFiy7FDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjwR0CRA9TVsSAnZWagAABjMQAIeYfsvvOQOnj44KSOJd\nzIobJdVnE6vc7JAoebQdu8DLfCX2p5zDN096y+12VRKKvicmKeFu0UWeVR/e\nxnWQsGcCt0OEy9S4aMkLafYtu4o8GckQR0yWdFzQaF2Iq0ia85aejNNk7uv9\n/vg4/DPnGU+berq5RN3fbjzwByvfzpjKyvYCBngsbvuOyrabWPE+GrNGg2qz\nDllOKyAid9s73Ou7vgKD2cgfSOK8IF9LlLFX2pntcv4aLgC3q7XZG6fL5GR9\nhybZB4+4+AGqgsVFH7tfzIZlWWmoH+R3fQRmSzZZmwF06TQZ98o2N4Jif0/a\nbQPCQA15EFkEg3VbV6fASegX0hqxGBXZVUk6KgmXhBHFuZD4Md/7tTGL7HMw\nuaQe3AMN6xeGzq8ZSvbTX2AuEHu82YfvYU0oS3jcslgMct+OecC16fsdIqxT\nKP+8xZxkFaASjhWj2XsWi12AOWE9UAT2mp+/xuBYEp8QoKzNXQiw1BbfnaVH\nrJ0kQqJ6+QWOOcT04F8JMmnUugslz3qgol+cvuvheF6tSINO4faHCS0ld8Fi\nRYFmIt1Lw/Y7doZHwn1CdJsKpnsCaPgn3pKk0BMbyS0XP4jr4x0h8YsCVK58\nS0ieJJ+OBthZyn8cvnuM0gpfJjgnClUOU4dNskaa6fveETpC4GbvoLnBOw4J\nXket\r\n=lgHa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"96856d5da22c2e239fc20d37dc0eebb073ce7aad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.0","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.1","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.6.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-update-balena-api-sync-objects-96856d5da22c2e239fc20d37dc0eebb073ce7aad_1603208308060_0.7483664018518361","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-a38fb6bac435bcc6b69060127d46628d85cc5214":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-a38fb6bac435bcc6b69060127d46628d85cc5214","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-a38fb6bac435bcc6b69060127d46628d85cc5214","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8361e6b79ab5a4d87b79c51c62189138d6cc747e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-a38fb6bac435bcc6b69060127d46628d85cc5214.tgz","fileCount":27,"integrity":"sha512-gNhdkrO/eKcZZpTZ76+gxAody26ayfgHsWv8CgR3VCWEXYAQss2IoN4uRVLxuWQDXzFIhzWdipmNxyqN1s6FGw==","signatures":[{"sig":"MEUCIQCA3+KfYzCidfVWTkrI2XLr//UigFl7fX0bzL8jXhH8KwIgE+mn1HrSzpj7KP/4xLhxR6GpdEyAN3iiWKxvjdZ62l4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkEzKCRA9TVsSAnZWagAAV0oQAJEgeXznYBaGXpvAqRf8\nAngWp5CRbHOPW7W6HuAcW9ILYFc1nU7sX8FY0AzzqBYpC43RmZisQuPfkxkV\nBsFM21mkozEs4q3xSsoIPVf50GC85Pl/Hk5+zaYnNhmmr81Vz2Huke818uiP\nwSEO6arjpROBOSOuAiBnmVlxm+JF6HZkZNQFW/Y5gE0GWL6zDqU7uiMcGiVt\ndloSALYh9YhOjhjHJn4eL1HlinNvefSYyNyrRzaN2RFEB+xtw6gaWlfK141x\njEDP1dnAh0XTtwA0+0ZvogoVe+3ZLHE1jcL9APCPHJjikZiipTEtiai5/KOy\nGtq03q1bbC8rIDq/Abpg8y055aUILCFYyW3j45JZ/r8pp0BtlW7oLl2ztf/f\n4J/ok7w+UeCgaO2+Cy91vtO4PJ3ZQMt0/80sJz4jj4gengtrq/N3B7UJZxwH\nZHgG4L3F63QXwrsj6ZltgAGUJH80uPMyX64+Q8L26Z5kE4Ww/2yxieyJIIOq\nsj9qfyp6kbpMF7GUTWYRuH9YJyRjprrCt8BP2Dm0ho4WmGyG5tmTQ/9aYHxd\nzWmEj+Dp2Ex9T+iTVm/oWKJzla/QBWjj8AzQern2pbPMr9tzjJh2rnqFE/lW\n4MvyIDtYTNrtCBWGcuhPOOLtcyalV96waCxGnOBC7R7G0V7OmbwyiFvX+yy8\n9v7y\r\n=zRU1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a38fb6bac435bcc6b69060127d46628d85cc5214","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.1","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-a38fb6bac435bcc6b69060127d46628d85cc5214_1603292362139_0.9811437476416391","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-d5eb187f86586871a06ffee97b67e6212391477e":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-d5eb187f86586871a06ffee97b67e6212391477e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-d5eb187f86586871a06ffee97b67e6212391477e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"04a612f75a55dd9ec793e96a5e3188f4e02917e1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-d5eb187f86586871a06ffee97b67e6212391477e.tgz","fileCount":27,"integrity":"sha512-mj3L7uhL6hI0iZT7O1hoEaRbhMVr4KDNdrR2ZZHQFB7eFOdPHB/X998/AZT4j8wnObQ8ifwIni/Lt9eQ+KgORg==","signatures":[{"sig":"MEYCIQCfjonzR353EzJzorL7F2YBxe5BMZH96PETqdtbmp4z0AIhALXHwvL3pEh5r5AQBHwO1q3PF/ePioGVJjlL90ctHGoe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkE4wCRA9TVsSAnZWagAAoOYQAJXRe0IFaEzSLihHISnJ\notGEmlxj/sJMEx4DQNTak0jTNAlYfLHGDk6CaKuFbD3GBV4UjYluM/3VavDd\nmZJGoDvT8yKwzxz1m23ElBxAgrHqx7SmE8JUwVocDKBzpMyZBasn/nFy7s1z\n+NXb1YIc/uqx9fwR/8LdbSEuSVet38nej9lCMB/CaAXJ8c1fFoDseGMyCUOm\nBzVWcu17xMnojfPmQj82JFPFDERtXxOJMG9wJVtYZVd+IkoTZns3URLm96iP\n/s+N/iHQapIMzajDtDxDm4kUZnLYj29FG1XaGq5wAVw/+tktXPgWzunzbVnF\nTy4UyUEdXYDdHXSSTaByavHOCFl4XX7r/7wsDmO/2cjJ/TqROmwFpKu6qXnP\nCjRWYWfsV9rV6eorxtlpeFLwdxnIuWOiWphJEazIjbCmQrCCZLuJFQaR32TL\nhYGWBCzSuBREUJn19/ncRWw0MADlXeWj/HuZ3hMRqm+T013Tyj4dtyjgXqgv\nhO5c4TJtUg8uhB1IrKoli17V6c+fYip+h6rABhL6rPPno0YGfSaXXdkcH6c8\nYQaZr3odfQPAZO/4V/0Z2DtcSb/DYfhMBlBanjr9nvdRxrwN1x1tLzkp2CPP\nuQwk4YSKqzbM+e4tPAZYohF7yzmOFcW/bK7SCBeFLA3mvpwvwO9NkJeUAtbH\nLXSZ\r\n=++ee\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d5eb187f86586871a06ffee97b67e6212391477e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-d5eb187f86586871a06ffee97b67e6212391477e_1603292720082_0.8409143638304988","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-eslint-config-standard-15-x-447eb39bba0cfe4c8b8d1634bad0437a1d6d175e":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-eslint-config-standard-15-x-447eb39bba0cfe4c8b8d1634bad0437a1d6d175e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-eslint-config-standard-15-x-447eb39bba0cfe4c8b8d1634bad0437a1d6d175e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1bb010e595d17de4ce15216b0c5f0f2b01f64b21","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-eslint-config-standard-15-x-447eb39bba0cfe4c8b8d1634bad0437a1d6d175e.tgz","fileCount":27,"integrity":"sha512-TksJsC5h2u50f2ayUcLo2dHIpgym077HpQ0RdEDEpYoTox8XwGMzY/3qfeMEAkdK15okRMtQos98wUSPK8OjZQ==","signatures":[{"sig":"MEUCIC6rrbnU94KroKpoW7SbeJnIcvdA/hYonzJLREe5bGMKAiEAsZJgWr4Flh0wS2szJHNrdEEaX/mFpiZ96jOJ3yFw0QY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkOs1CRA9TVsSAnZWagAAQOsP+wVzvdye0dr47c9J0mCW\nrmOJwKBwNMMei/vm9gERKCN1FJlwmvg0mfkiYktXJk7HRCRtczmvejbgkyaX\nNyI23ASb+ZkgxKzGbBoEAUJw/KYNkMJWrPsSKS8QdN0gitSIE+YEZXkKTtIm\nsNEBp/XRQh/pMK0rTIPdIIWUbPj3jKRFZRoHB4u646IvBWnKAVPGWsXGDsyX\nHlMTDqapZayYwEEBVmSBHvVYFCNgh4ijhzEEJztDcGycofrYpauEw7GnI6oN\nBOJ7DQDKMcxCRiKAARQsdEx24Nj1/oD9S0kckeYtECHW1T6nakjfZUAqBvnO\nfv43h5/4Po/GSCkG6VskyR5FuVAz25Wjc29fUv7BxyObeRJBYAPsbJD4e3fQ\nvklVOS8lI8Bz0GCzavWua8YgokoTaZS6OIcMcsxLQUTSeUQ/CfMuXM4QVOEN\nBErwqw1WQXUfZRvh4EAe/g/DPglf7VKZmlWOoICkKJzYck1VKyG2nnXr/N8a\nO/eR3YT25g6BApgldclqKGJuHX6MEDyRF1cg4YCKHOYs2yy/uqAE1eMYNMir\nf0ghjl18C9khJJSkTDI5hXT+Y/Pmz63ks4EFT6P9STgDyGYXAlerIlIJYlfj\nVAmH7TdrX8FRc3jPSEQw84Ue504kmc/rm9NEXkZc7G3dX8pZ7BR/ydjQ1y7s\nWp2w\r\n=1ReJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"447eb39bba0cfe4c8b8d1634bad0437a1d6d175e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-eslint-config-standard-15-x-447eb39bba0cfe4c8b8d1634bad0437a1d6d175e_1603332917102_0.6777403900765513","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-update-balena-api-sync-objects-549b1339f413b26a4ea19718016074e65448f887":{"name":"@balena/jellyfish-sync","version":"3.0.35-update-balena-api-sync-objects-549b1339f413b26a4ea19718016074e65448f887","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-update-balena-api-sync-objects-549b1339f413b26a4ea19718016074e65448f887","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5e30ef1efce4bf4466a9da3f54a153a7262eb7ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-update-balena-api-sync-objects-549b1339f413b26a4ea19718016074e65448f887.tgz","fileCount":28,"integrity":"sha512-XYJU8GVlM/p6H9jI2uaeFoOTG/NGb/Sz4G+FpSkuCkRVnHB0yd5Q0f7JbMgXLxNS8UYXss4TmxWFxA2aIWOS9A==","signatures":[{"sig":"MEUCIEUHvnxUVkXC2/EgqefmXKJOPE72T6BRCMXVkXm3HHGUAiEA0W1gFUEitMo+H1/fg8z18ap0rpDCiNKBMYujpFYFcIk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkZJrCRA9TVsSAnZWagAAGcUP/2DXXqaDPpC+IbjWoAX/\nmqxUQEPbdVGXYEqjI3EfnfaCg6QcUgkkGGukGaZDDA3GOEMgWMFA7d8e8+RT\nnx973ADB+ZJvxHAJ9JQfDob0XS2F+rjgxHQa4t0Z+ml6ksE+E/rUcn0Wm5Dk\nhlOLDj89EwfPOq1SDnjhWLH5wJBtkCdNlgk8GQ3mY70+34r2Aa4OhXrxF3IZ\n5QSF4BxjyTiwz56mY15G2y4Q/dMOB4ojI7dk0CcITOGUadkmBKwlSfRvlmE1\nzZTevGcN7lRfgx6TYA/ixyTSnGdmAhDEGJJcDXRc0tzNDNR+rt9Lb8OtPVzp\nexRMbV7qwi1MyfRnnI7WHG0dph1NEobnV569Vhx5obe8TtJ8WXHZ6VUHkmIl\nn9Ph1g1QkZd8p3S9CUGN68t5bh6cDksFpxJ7kMyTkkewao3JSscdD5pLYmUH\n8uoePrnHabpNm6gJBAayFz7alo7JwY7TxMy59+1SuCiyWlKJJYzC0qjcyxIY\n0esYrOm1Unq0ltx4k3/jzFeoG0HPCRW0Q26UI9H+9lJ8bnoGi1jCIFAJpBEP\nV5hKrnba+u252vbysX63BXheZFibaLFwSrUuE6Wt6vQukdNMwQ8dhVgGYvI4\niDr2L4tDKNmcag46o4n+76i33C8tDtDTTQTfWydEq1bxBrm8j3X9Gchifu24\nuq3U\r\n=yCGH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"549b1339f413b26a4ea19718016074e65448f887","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-update-balena-api-sync-objects-549b1339f413b26a4ea19718016074e65448f887_1603375723031_0.20401302143366795","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-update-balena-api-sync-objects-86fb4a85ff4686190b64bc90af58a73622cad3bd":{"name":"@balena/jellyfish-sync","version":"3.0.35-update-balena-api-sync-objects-86fb4a85ff4686190b64bc90af58a73622cad3bd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-update-balena-api-sync-objects-86fb4a85ff4686190b64bc90af58a73622cad3bd","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3611d48b2b6239c9d9589ef3008ae088587b6017","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-update-balena-api-sync-objects-86fb4a85ff4686190b64bc90af58a73622cad3bd.tgz","fileCount":27,"integrity":"sha512-IK23+08zvnJEN4fDprGmhiePxeQ1CEBaNba+nPRNBwn5gTskOhIaCNqvv4MzS45N3CbwxWJABiCJBWdLIoPIXQ==","signatures":[{"sig":"MEYCIQCbFBJinAu1Frd9RIpXCKo5NcbnqMkADDuwtboa9GFG3gIhAPWtjLmQDmKI4G4Jxvff5ys9iE5SGYIVk8w+FidlSSg+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfkZUXCRA9TVsSAnZWagAAdRcP/RewQ5UKXq8XdL6aHbeP\npOsap694RrBjM6MlMAGkTeihVkll9WCUp1E5qHh/mFga6kZQSN/o2GnC3LUn\njLH+8ULZtmEoTTkDPvkr3qic+Iyf0gJCEZaxC2xaqLIU+qdUMltOxglswP+e\naoQLoBlBnnuoy69aF+HuNmhaxqIW4QoXjXfLxEVEKszWzem3ygL/fXJpqqxq\n24ZBVQwx3Vpk8C2YnykhNso7MIgR/ymNAgN2p2EmNo9ETu5fBEIBDDKlRgCp\nDNlmsE+utnGpTs0ITfKPxUx478WlrbescMqsQjHensEzW/SgXsAz8ytCxJUS\n3i4ioNboa/SH93w3OmtDNSRnOJz8WygtfWQwegA04gZDhuxZK/nVrHzXHwSe\nPtTs8tM1qO+So6tuPTNnyIEKwDaJf/Vja5JUrN+BWSZYZkpI6IidvyIH9FkE\nUq1ctaELDTS6iW62BmOsoTWN6Fw5l4ihQ1+igTJ7TsSukzThhGwtr9RTcXW+\ndAu5dYWh13E+lyD0CsVZsjleIAXfK3gTkkgoF2TdWDhfPffo4BxUJfuhHXmS\nrYze5ZD+qUQ8ecg30jbuE45rPDwbQFV1sqWJFMLK4AYnZDfN0+3em7FXS9ho\nheFDEj0CzJxDlZT7+M8N8SVTULvd6qHzwMa8cimA2G/AFC/ivHO3zta1rEr3\nMbuY\r\n=uUgc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"86fb4a85ff4686190b64bc90af58a73622cad3bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^14.1.1","eslint-plugin-standard":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-update-balena-api-sync-objects-86fb4a85ff4686190b64bc90af58a73622cad3bd_1603376407090_0.15932070697933054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-1fa8cfa516ba64db9c80c9516c576ae08c49770b":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-1fa8cfa516ba64db9c80c9516c576ae08c49770b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-1fa8cfa516ba64db9c80c9516c576ae08c49770b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ec29950b88246205efea54f23c2f67e45231d758","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-1fa8cfa516ba64db9c80c9516c576ae08c49770b.tgz","fileCount":27,"integrity":"sha512-P8n2CK45v0Smy1bXqgDAywPKlgjIlj7x0Xv1kGIbvEri80HKS+9jeA9hB6dyFGmBuYiGONKSsmeTBwDYMLXWYg==","signatures":[{"sig":"MEYCIQCNbzrO0plTk7HUT7EqZ43tgQJY2UmxbvJNeEKbH5nvQQIhAK4UShycbxwn9NoJ2rZgMAtclefXmt2MldfWroK/qKJp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfki8xCRA9TVsSAnZWagAAicEQAJdByu9+intevHPye7oz\n+pytiMyqwSJ3MPND6cFaL+h9Yi1h+S7Si0MeyXtg52nY8EK2KP6ZJT/CsL6Q\noIsMfTdfIdDpT1GnthEKgsS5ZluDdUsFbFPt+4pMBREdoP2motiRuuQW6jHf\no7yZGHhf6FhaU5kJIEdxPWa0VJX0vShduz79YCM3nxn/WqLpLvy+6w/G1dgt\nOMHfTHgiNGojOCY5uRQzYxTWC87knvu/+pu3Dl2M+RIpAiAYaMd5gub/V6JK\nWPhrVD3swhPdcgd6eg9bCGfM/luPFZVFBKNF1l2ic1yUAuGTpFdX03lIbniW\nu0qQF5lYD8FhT8Xy+pjWOsGDfmjnRHz+7nBWLy6nZgoraYBTH2a4v0OIliuy\npgIE9OWU8mMbWQYNzi+EQc0xb1etN0panZT0p3+24FohrRuPwQKbiIOpANZ8\nNofmsYeZxPVcnbMxfgDVV0voEIbB6gMLiN1Pf9ZBLONRXsVqixNjowsk2RWa\nEPIP4M6sM2F7FbmQitBVYN4X2wcGJ8csRAgXzGuuVlGRzI5GG+0a0z1Q75LG\nI05uJNQnE2UHwM2kjxqVF34tHuaKpS9OIKr8+Xz2h5+erQgMw3pgXLfgxNg0\nDJswrMoYP3fZoIzR0g8GdcDnFvDzweY0JlRoJjcSQ5H+mqIb8A7GPUpgq6nj\n6kjG\r\n=CCFi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1fa8cfa516ba64db9c80c9516c576ae08c49770b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.11.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-1fa8cfa516ba64db9c80c9516c576ae08c49770b_1603415856672_0.6943747789194548","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-a5e1fb779954e1fb85e39d7897606872b9fd8563":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-a5e1fb779954e1fb85e39d7897606872b9fd8563","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-a5e1fb779954e1fb85e39d7897606872b9fd8563","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c56597210be8ecdc9649ac4e09cf39cd5cd46098","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-a5e1fb779954e1fb85e39d7897606872b9fd8563.tgz","fileCount":27,"integrity":"sha512-iG75aTglqEeYFGJE5hKeXSyBE5X0Pohc4O0NhSOpc1Dho1Xd5A4G6oFkNbu7LBsIZhv1vj/qak3nmDJuHOIiNA==","signatures":[{"sig":"MEUCIDq5dz9rV9gIokmTWrOXrYf+Tn24P5ZkI1rX3r6XqeEAAiEAueBmS/Jh9JZnn2ZsxTPcxmNBXtfSeEKhWQB8BltcyFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfk5naCRA9TVsSAnZWagAAIZQP/0F6JC9jIevSnn3d4YCo\npZIqU37cd5kaZGoV1sQVEHzh0sH1UXN5+mDgcGhjqB+qBr9LA9RSo5wSs+w3\nrJa3ptNLAnFL3urgpM9JMcz8sXjnFW4VbWxA/TcU2RAf1bF3mbmJ20Rmxe92\nheT946XAnZlaStypMUfkdoSruBgmH0u11ncHs9l40Lfc/yn9aMBfvIs/vb25\npDATLTdH2c/Zefxa/cVeB7EJBOtLvC1/xBl3AxoOuJ4kvnOWBjzMU17cK0+V\nA8grOvDeqbUVaqD5aySGC6I+7mbfNg+ocMXO2mtbUqpH27h5C39jV6cfvkwW\nTERtCTHLZCTYqEJSKBq/baqfDaS0IOnzGjw6eguevfRmxJStaWz1RUrzCXxR\n2JuMBqflMUYCiTvOWDogLcT8NCNwjQUWqiC2JDKB5PvmPvJfbT06pg0/04qt\nGS0gp/+fZSi2q5LrFjmgBeNMk5pZ8jLcmpJeo/imoO22AbWZw0JINJMw33TT\n1pQ0wM80RyAmQ26XYGh4kn79GJ7A4Jb6ON/9fETZTM0R3crP1XrfpfEzZyMu\n1tfdPq/qAyl5AE27OMXoM8icMtwX/DMbJ3U5UcgdClRgGav2sR+AipmRwA4s\n9qzTDW393syvKoJEajBTsvkEYpN0K2gN2ZLgcchYGfoPAGxE5wJdhp7XbR0f\n0M+2\r\n=5kAf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a5e1fb779954e1fb85e39d7897606872b9fd8563","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.4.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-a5e1fb779954e1fb85e39d7897606872b9fd8563_1603508697872_0.006696719999238265","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-5a5d51fc32cac775d25e29e2943c6d0f55ff41cf":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-5a5d51fc32cac775d25e29e2943c6d0f55ff41cf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-5a5d51fc32cac775d25e29e2943c6d0f55ff41cf","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a8e1096c5ae20d15660fbf0e0b3136b8f3c7f9bb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-5a5d51fc32cac775d25e29e2943c6d0f55ff41cf.tgz","fileCount":27,"integrity":"sha512-sPdeDoGJDiyVNB9Zfhd92dSPZ1p7rDd3yV47Nhr8kCi2x0JduZYdfZ7eGNJGjPqQS5IbjrClFOrPhj9WHa1MFg==","signatures":[{"sig":"MEUCIQDWYCWL/qFU4Qu2ojbXJFYzlVLXhCMYQdzhMNY0rnjSnwIgVwKIQ+yRmpJEsmnYF/Wx564JUy4iH/p3Yh/+fSYF+YU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflw+5CRA9TVsSAnZWagAA7bcP/25QUcgW1bhxDdM8vUn2\nPRiYOAFjr3HIRV3FowIboebco0CNZnPIJq+iBg6Xl0vw7IOQa29KdW5KaoN+\nRKtZNe8Mk17rw1m25+FM1reThZx1jlsioGPcBZHqvLNYonukjm73blhiblXC\noyfMGOHyyB1pdJxt3Wa2q+0jfaMlW2fHyjw9YETNVO3kyfOF1PkMXZqw8jDz\nDKlz1b03RAbyTe2zRxR1GW2C5H+tjUiRphlqWYCWldYrvoeVFsw+YfejnpM+\ncwZKNBLtoVAm2sUxfDW0ZkKkJ7Ct8y6BOTL7xt6V+CJlHF2+cYdALrdCGypF\nqXS7ikkjIkMGcMTtmlar3tp5M2oj6R0qYyLJEjT4u+Vfs82YfXZ6o5bV7NS0\nUH+w/qIJOeBXHmjueqBWY43PyifljZXOzk0bfr4sXps7R0W7iAjqjaDkU2VQ\nr3RCzqOtUZSKz9EWHLyUFIzoqk4q41faaTY/vSqzn3TNjT3JS5EPC3aXgRuI\ntOBUpP8+q0nki1oDTgbeZeM9BQ6hGryfknPiWTGLgyqndlNlb9LLpc2XillJ\nIT6ZPwnN/dKQ1qbZHqXYqagq/QPRk2wL2CQLJVErkLSwAtw4qNNFnRNjNhMa\nqiCehziRDFx9+ClvgEhKt/Fvdo3438ZDIhhOdzEpLW3cf4DPfWDgwzxwMyOw\nHwnC\r\n=XkhG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a5d51fc32cac775d25e29e2943c6d0f55ff41cf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.7.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-5a5d51fc32cac775d25e29e2943c6d0f55ff41cf_1603735481176_0.9558783025676465","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-fd32ab319510aa08e4beb1b84f18d84e01a0dfef":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-fd32ab319510aa08e4beb1b84f18d84e01a0dfef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-fd32ab319510aa08e4beb1b84f18d84e01a0dfef","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"74df812fe5a7e5c54cc5b540ca7bc13ef19f28d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-fd32ab319510aa08e4beb1b84f18d84e01a0dfef.tgz","fileCount":27,"integrity":"sha512-ssf5Z+9F14fr+rtutmRYxE44yZXDgrE7j6dpCgSoxrF8cwroywjAWcwdlesKqSInDFbBoQy75V7tRMH1U7Ynbg==","signatures":[{"sig":"MEUCIQCCdgWR+7AixxbyBmANi0uLvIvbR7olQ4lTAs5jdawD/QIgcJJyxjt237zjmH7d9nsXZvlRdPMcyUa34W2ld2xvUeE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl0tmCRA9TVsSAnZWagAAxfoP/1glfl33zpiUIbj9HXcb\n3b9C6m9/immqDzjiDlhHWrTLl0A8Q7mPvePxkO3MBc48QcizzwjUCezuCoQC\nno3EWHFNm9EqX9oR6qT8MSRvw+/28hOMd++56s73dDXTphLkVrNiWy5WrFWa\na1FefyhCIZ2a6bPbsKNO0gno6kux0ikl8bZTiml7OEBh3lBIn5MJ41nNKd/0\nYC1bh/NG+5ffR55/5fs/u1TwyhBZAWMI/le21GTOQ5TETItDDtGr+fy9mhWJ\n+I34m8UoTZ8l5MfShMDBIlWFE+iFGxeJa+pYPellq7Fn7rYNIpmxj1ZZPxMY\nMJu9N92xpcvYfwkiL9LOAH1IajaViziyhu9ujHcOHc5yyNi0jm+uQSEpFIws\ndcWSkr5Lek1F37j/gt3d6tfpA7CTy9odJwifRFPj2qxmDoD7oq51TXzxw30v\nQDFHSrsf8Dpda8t3BbkcX2DoP3n8Mtw8sVNPFuICp68rXO08HpXJ4232nCUm\nQ9G6XSHxt3tup+l1SNvqUmi+w3l/8yXLbnLLz/LpIzPjA5k+zOgWOE0pOui2\nmUjGY4+benpJaLNnJST949BjE0odqHB9SjDVI3i077nUYjf2oWFXaQNzFm67\neDQ/6EjfBJOjDHcYj7G+nq0SUbiwlAQBLXuFIAzOEBJS+ERDVaN9AsM6vTWu\nwZWX\r\n=p90K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fd32ab319510aa08e4beb1b84f18d84e01a0dfef","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.8.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-fd32ab319510aa08e4beb1b84f18d84e01a0dfef_1603750758337_0.24787545105342956","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-d990f3cc77770a8dc625ed68df65e9a9ca2686f6":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-d990f3cc77770a8dc625ed68df65e9a9ca2686f6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-d990f3cc77770a8dc625ed68df65e9a9ca2686f6","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21a77994fdf5c22372b5b411c6dc607684a8a165","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-d990f3cc77770a8dc625ed68df65e9a9ca2686f6.tgz","fileCount":27,"integrity":"sha512-xgsmB1ytjjyl1yvIp/zhugkWEB68I30JjqP4CjXA7bTVFLp6cMmhc+1wOSQ4/1JjExPmHTgqc5FvF3Inu+vNVQ==","signatures":[{"sig":"MEUCIG9NKwuQoDmLYdSUZe8YBuyzVF5+r78Gs49OsQ+pfZSdAiEAh1cFFZra7cf8zDXoQ8joL4dCyxEG2KxiXR/JPZyBvJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261485,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfl68dCRA9TVsSAnZWagAAeFYP/A6c3Izjyo8Ee++iFWed\nK5RbSLpgNnTg8q+7Bsadyem5ZIRxOj0HE/v8WYBDHymTxCRET1ahT71ZxHH5\n+FgQorXkrcwLCs7H2KaZ9y9c9Xw0+0XYec3wXu2aCqUrU/2ohRFE6MufDc/j\nW99zi1fP6oQ8uGFUVm6Rx9I21wenilIMUOd981+Xph5EBcDdEw1+PygTa6LD\nkIrGrxlhOOu9piJBrdgC1bpDZmYjJr62WC7ho8UO2EM+Qi7HMdMIzImFDrBC\nZkpcELknwD7WD7+0LpHl3PqAE5kEATPOl6AoavK8Gv4GjSomoCOvtuQUmzas\nbhzejySfhkfjrn8Ay4foxjHAAhJ7JMkbQKlevc4VysKjtX7vEOWduoBj+xRa\n/ZkqdeXUb00TJO3hje9gSEkYKQQqfcOIP4nvPjbvHdX23+Wf/ohBK2mkEnTw\n5D/cXLKlloJAsGrLeV3UWKp5EJvOFIX0eMkB3aI4T1y95tlXTDHyJOf1OcXH\nOjiAgoKDb90e2bwmv0ZigY2tjx+0VEbrVFNHqKsFPZolvM4395HERvGIwApz\n1erRatCjlsetBd+ndqxtirmi2wE9DFkl3220ynTP4CH9X/2rgl2GFKsZQeoD\nFzDAwXZ7up18/4cGJQaiFc49zU8Q65jvcu6O6MmEN/F9BrfErUYNix3b03yj\nohFl\r\n=rVF6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d990f3cc77770a8dc625ed68df65e9a9ca2686f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.8.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-d990f3cc77770a8dc625ed68df65e9a9ca2686f6_1603776284924_0.9027431014251455","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-update-balena-api-sync-objects-cdee718cb33bcb83e57a616a2d33f6e9dbb7db62":{"name":"@balena/jellyfish-sync","version":"3.0.35-update-balena-api-sync-objects-cdee718cb33bcb83e57a616a2d33f6e9dbb7db62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-update-balena-api-sync-objects-cdee718cb33bcb83e57a616a2d33f6e9dbb7db62","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f7f466f693e154aff28df33cf25f849d06870f8c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-update-balena-api-sync-objects-cdee718cb33bcb83e57a616a2d33f6e9dbb7db62.tgz","fileCount":27,"integrity":"sha512-GzIcxdFLkLt8lNLfH8tTd/QOUjHUguhRaL04G9RQ1oH973bSq5mNmtZiXaMhcj4KtkaT9jX/lv6Xv4zIgdSNJA==","signatures":[{"sig":"MEQCIFJ1JKsXHO3fJx2xRdLLFDIgM7M/Y7sEsbawWIzf0+ABAiBaSjPk2lvqJxk42V0U5Efhnseb26orS+KKjUNxhxQ7Xg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmBKVCRA9TVsSAnZWagAASzoP/0ovBAa8NqtaTb2C5U3Y\nBM3pDjH1IsuB0kx+pexRQbqqT9xZPl5Jq9d/Zs2l58UFXFcZVPffj0EieEif\nD4cvgrzo304dNZl+Lq/cGRD2Uix2dAEPcnzll0rbr8c2/yEG10okX4zqelx/\nGDwskKo74hBzU8MTnlFZGkSnNR1LfkBZQEaNmf00pJ/rphw+D9ruHibVSBix\njCzWQtYuyYMx+hOHupiugmWf9iwz+ScXFMguyOsAKmyFK+IJn6b+VeKHnhDa\nH5asKtqHdS/OuLP/8pXhrzFAeC9A4nrRiWY2U5njRXdzIY6gZpXz5vut6qxV\nyS4sRw5/c5omw4F5+S4ckoPMLLO5Ql2iiidYU30e9yBM680eINeyqL72XgLk\nj7JDG853IVRG8/7O5t/tE/9VftvAgm/dW/yDsqTVOLlhhBCAl+BZR+iDhHUm\nmct/tahaQRsIbGMisKXs+s6ANjUx83WmoAn1BHkPreJGk8fB4sPOWbTRZcIE\nLDYU1Rldt53yD3SrtUUgfntpNBqcbANOe+KKjn9+eDZubO4rCytH58jK5axC\nfVrpWo2vLvpU1JKJhBv6owrD3lMuDOcUDDadM4X28NZeEBEqT08+KLaoP53x\nuLUBT47uHduZAo2xbU4xHUTEDmQDKCBl9/PeuYaWNUKtOZc7LE1UdQrosXbo\nJQTf\r\n=REWz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cdee718cb33bcb83e57a616a2d33f6e9dbb7db62","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.8.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-update-balena-api-sync-objects-cdee718cb33bcb83e57a616a2d33f6e9dbb7db62_1603801748547_0.3534971631757631","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-554887364d1528d44c5c211c2d0ed6fb5fc9a7ad":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-554887364d1528d44c5c211c2d0ed6fb5fc9a7ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-554887364d1528d44c5c211c2d0ed6fb5fc9a7ad","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"24f9e05b2c97a8a3580151809644345b47f548df","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-554887364d1528d44c5c211c2d0ed6fb5fc9a7ad.tgz","fileCount":27,"integrity":"sha512-UaCQUPut3iWH1+GV+oiGox+qKFEy4EM/HigDufzom9Ls99b2M8q1Nj7oEwT9LmmoZKCvDxLY433uLF040wZ16A==","signatures":[{"sig":"MEYCIQCFg6crstKh4OOjZlh9Rhb2XvPOVOV1WfTLw20p0/hN0wIhAI1me3vq4BuI2ZB6M6xhL9a1qm1lNXYBa6P0gw9G7phK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmKgNCRA9TVsSAnZWagAAd4YP/3HMIgKoaiHJAglpYlKn\nlxKpJ+lFNVA+EBIbG7gHhkD74uJC47zwPG5/jHemh/O2vQ97pJF8p9zPvcPp\nuEEU87zf6mCORANZrKOMgONLICDik16pU4feyJCXRGEFMJFI39maWXZe2E9d\nYUESxBHRksE9bkdVI/zTfFocuEguTnnTihcldnjydkjAytaMhE/7J0FzxFaa\nxYpmb+S/o1k2tPHSmEdL7/o2Eu7wkj2XQv/uYrVT3gJeH35tUPv/S4ZIXSiZ\nURtDD3ag9tPTufU+ClMQrNM6gPk8WwVobxsrYPZdVTPzptriEd9rOI0YSXLW\n5flZV1SjLQBqHneNlhdYrL1V8xXCmSpEqA1Uyo0WPrEFFT4bmekqyqct1KBY\nPMTi2KirD6LmRjkXHan56xqEz3YExzfMQNIhWDLmtInA3Q6N2agCxku30xBt\nAtwXyoqbjP5cPbm7VD3VUjiB2tNzFzgLKnDImAP0qSLnY6JSiA5uddbZpQi0\noLV/xowP6Gok/Tc5bk3V+2F3qVt/DdFl3fKXf78PTps2IWSdvbDioFbPndeI\nhQMj3n15rBDCtibU8EhQEOri+SXsIqg/M4Eaa//2NNgJL1qH/XzfXdX14SoB\nkUFe5f6XWE18J97k2ZOYzauv1Ryopf7hM4HBUlNGT4+T5BBXxIE8Buv/JBzx\nYzWZ\r\n=efEm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"554887364d1528d44c5c211c2d0ed6fb5fc9a7ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.9.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-554887364d1528d44c5c211c2d0ed6fb5fc9a7ad_1603840012275_0.5396488949583711","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-a2c3036cc95b6ca3518a8ef0297f99a9a085abda":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-a2c3036cc95b6ca3518a8ef0297f99a9a085abda","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-a2c3036cc95b6ca3518a8ef0297f99a9a085abda","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f437d81c477486dfcff44741b99c51b498b09ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-a2c3036cc95b6ca3518a8ef0297f99a9a085abda.tgz","fileCount":27,"integrity":"sha512-cwUmGk4SAV2F+xhe0bsTww8giWh6m8njEMDsUDpHaj0jx8l8h4c3Rxcp8cnZVty+sQh5V6+enUFzc9hV6EZB1w==","signatures":[{"sig":"MEUCIAvo8OgDvWtBa6UmkbMPtG6kKkOss9DgTcSt338Bi5v/AiEAt5vim7vfWqpcDdE2iwFZ7+mifj9J2x6ZfxWPx/mHp44=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmPVCCRA9TVsSAnZWagAArAoP/1HJ2NFTFiIA7iaj8WyL\nngaJH0RwmkoNDEfD2sJG0KZwgGWENxIRkNSkubvjCODDgMfRaW8IudCHTMJ0\nZehh7HV8u6SS5SF9bytBp6HN2HCJM7H7k7JP2WcCB0m6amxDt83Ut/O3o9TS\nCryYnKvJJhehNE6QWqF3BwhD0FOQeXXS09SYFwIHKnqVqD/6QD2zY+PtcHKp\nSCJBP05sgT3fUaqHhv8MLTxNgZysJJdu3oFI3BLwVNKIt4HWenR6pfH1ZeKF\nDZ9kFxe3gZwvC2Bem/nXXe8mbUj5Dwanz4Xwy7Cl68slJsM68owud1mcHWwv\nGDNs1MGbVIgv+ZRinW9z0Wd7W+nuAzAInavIS/3yi2TOVxPZl9wDNoNvxHIm\nvWBkzT45VoQmEqUFfly63AY3WD2mHTeLeKdLrHPidddYi0jiE1E6KrsFBVCp\n+yHSwh7Yy5VmmnNdCoQytna91q7L0NeIyjdywM8Xao6AnTuaoVlQHWGjRg/p\nzjacbTh2Tp0nUMfVuUBUuWliE77kcs0SmXNsWh4KNzFpvT7JOuhcL3K7Ggd4\nf9zbd/8YOxhjIxG10qCdvDyORNRDjmLPBEO4/KC1FuJ9h2FSyJjORpn2SUjp\nD87WJMtxSPbucsfMmBzXXr1GDekBO0UWsPrQEEdlWlLWEtdbfitQiEtFOWng\nlBPy\r\n=EyaH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a2c3036cc95b6ca3518a8ef0297f99a9a085abda","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.9.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-a2c3036cc95b6ca3518a8ef0297f99a9a085abda_1603859777471_0.9476943694996127","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-d3c35981e3d6c492ab7c68a54f140aa2648d493e":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-d3c35981e3d6c492ab7c68a54f140aa2648d493e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-d3c35981e3d6c492ab7c68a54f140aa2648d493e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ec74328268c8ef17ebc8a279feee49d396c17f50","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-d3c35981e3d6c492ab7c68a54f140aa2648d493e.tgz","fileCount":27,"integrity":"sha512-p+5k6sxSAUf7FDFlDd+2BRVHV8CGG6TNS42MUwgLCGNVPA466TxaUBio9kAQbwMKYJgqvErdsUi2WwdjrzyuIg==","signatures":[{"sig":"MEUCIQClPEPcDt8pL/ede0owOQy+gl1oOnagS1fhtALZ/CwJOwIgY4IXwpikmwSk0PsN5WuNccY8Dat2giBxrYQiBjQ7LMA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmQRRCRA9TVsSAnZWagAAYj0P/3sODywl9GtBDv4UyxpY\n5ZZh/3RyUJ93qmDZRijPUdFenKvgElsLA+wbtBZU6aXdT3JmQKayS8kwRYeA\nUSNMHV8N2Qse373ulDv99yBZy81a8ERgwHIKgWerFrLlf53HoJaTWEpmUMO+\nR9yJ/2YlparGLhQ0bTaipyBkAhjppZbXn/ajJkqEWGj+4bBgGh4CqbBLKySt\naFcDeZy0Is9AzIGUo+j5CIxBlrVWu6s8qRnS0wuPO03JWUl0i9+2c/2FP0Tb\n1LZQEGPQt7tuAFTrUIqiBD6o6ZaKKMCLJ4CESvwLQQnYMN6yh+jTrQalizfv\nn5TnjW+6cXJzh3vBXHkjBiMXWPhCeuBhesEFuq8YDo954rFAz2V6qgbkxC+E\npnpRcOajzbxCRYxNylF1wfHThzlnX0kjzAZtHhSuUxxmUAZR/CxankWgVMT/\n9JkRau10H0WjERfuqyyg6VRLra0bzslh37ubhWFW0eaDErllrTDx+Od8aPci\nwWQxzB+u3KQ4R54JXLw4uw6GhFliqK3Ag2NQycJMT0OUPCJi/0rokt/22gVg\nPOcZDpfKb9yAK5qCFUarkJRwnnF6hG/c2mTH7VJB6MJbNehLzwazmXQFeuAt\nWc/cuoPhNOtCL/lvvf8qD/8pKmQayKlq79OV+U0InuPKg1h498tlDnplFW8R\nXjf7\r\n=9yKt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d3c35981e3d6c492ab7c68a54f140aa2648d493e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.16","@balena/jellyfish-assert":"^1.0.15","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-d3c35981e3d6c492ab7c68a54f140aa2648d493e_1603863633053_0.1834912459206255","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-74f267352e93bcfd1d7032a8b9e586e8f610b7e2":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-74f267352e93bcfd1d7032a8b9e586e8f610b7e2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-74f267352e93bcfd1d7032a8b9e586e8f610b7e2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2f728342ba7bd4426345ec9f3c86cf335110dba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-74f267352e93bcfd1d7032a8b9e586e8f610b7e2.tgz","fileCount":27,"integrity":"sha512-Sby3m1zYBvtJ3s4ILgVdiPYZ8QpD9VYmqK5ZW8dHCRGPap3h2fVG7W77rtF74bqeZCjHdlcNLO44dEAADoK5IQ==","signatures":[{"sig":"MEQCIEciIqJ/Y6NBRmfmvXPVOdsv528HWWmE4ie497eNQqZXAiBuBpF3ZKPDb738Z64mi74rGX4CSwDlL7QJFLxWsKwTVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmT8oCRA9TVsSAnZWagAAB5wP/ig/wFmd88iyL9Vo4eAK\n/8kg6fL6K+z8ucfrNMzxb6bRRYjtkGKf9X4hVFRVCiKjurfzyafidW3UCRB+\nX2Gh6By9UhtCTD6MW2WMsRYYa2YYI6pa3Q/kAzXl/F6RZXh+JZhbs3m6uGnn\n6bKotju6HZewUdqWe0aDOjdaGKI30afpNIKVyJV8F2KdxQNoqa/nJEgSb4kF\naBPx4aljY57aLo/G9x6tIExPY42XuX8ukuVBG7V+w46lirBGMa55dTSm8Aey\nkkXjxWWl66093kbLoOKmbaWLgmL+8l8WHL93v7EJtyrAPoErU/hzjdfQZyuK\nPzF4pXfdaRHdJaCMsYA8hdsUI3nLNo77D9uiHHSQxg3X+o+uk5ye6hjJyR6R\n2D/UCosIwMdQby02eMw528a2NSjowQG+O/CwwiYyaM6Pig/0aMaYKnKHAoXv\nQw+yWQaO+8Y5wHeW6JevvUFuljVGxzsYpsjx2GYv0+PzynBsdLU9pcl0ai4D\nQbKCjCMX2mcTITLcgpS/r6JS54NpvWuq8XPO8q5sp2yl4rVv3cy5Kg1PZFd+\nnsriyAjSXxj8OWv7aflDX5BlcEfcIW56Q2OJ5xZ77iC3umF/RlwjIZDdEjqi\nqIbactMP3y3e7zOJV9f6qIwAe5spqb8NMUn/Jr3JBSLcaaub2oUsAJlJOUdn\nKo5A\r\n=jdyr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"74f267352e93bcfd1d7032a8b9e586e8f610b7e2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.17","@balena/jellyfish-assert":"^1.0.16","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.40"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-74f267352e93bcfd1d7032a8b9e586e8f610b7e2_1603878695577_0.6692350352088579","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-pruneStaleBranches-026796eaed78913cad5eed14d6e1e7d5fc093e95":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-pruneStaleBranches-026796eaed78913cad5eed14d6e1e7d5fc093e95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-pruneStaleBranches-026796eaed78913cad5eed14d6e1e7d5fc093e95","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87ef65ee65f815f1fc8ca6b6b85d271ed47fd71c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-pruneStaleBranches-026796eaed78913cad5eed14d6e1e7d5fc093e95.tgz","fileCount":27,"integrity":"sha512-4/WsniHz83v2IO6bHReMDtzz1U2vq18sWyf6mJ34B2G48yEhcM5mmVN2cc0v/ZVfuS990wKEU7Gt6dwGT3qGBg==","signatures":[{"sig":"MEUCIDkhbQ5tyiGDUlLIZV8XuM3TsI5wwUVdt2CbAB2l0wxnAiEAjY/aYS+KZyDwoJgIvVuCfs0FqA2SnyyEqq1353DRYEI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmV1zCRA9TVsSAnZWagAAcKAP/0yCtSN7bCP70gWhXoM8\naYhuqoIHwUQemluXGyIHN7O/61HAE4tzoKqLELl4F45UtmOmsF6xUUDs8qlX\ngppaAhzKzUQzccROz4Lugy6+WTckZKHaitR3dIad81llP0zwc3JoF+TnftAf\nzy4RGHo0gu/TO6yaG95pin2Fh8gYSMbJHl9GfOk/rlR/u3jmjJW/VmxIygqV\ncz6VqPPyXldBnJPmawN3/e+B7a3b3EaqEJTq3AEO0GhF6ji8FrApz7nXkoMI\nFsZlPkr4nMJVS66cU+oPkSovYTb9ieDNQ4dB1UOgNCBVWJAEfT+rjtwgzkRC\nw87aVNxSamVY7qk0r9WXyNU9zRCuSaAzNU2d54aOoFU4D/A7NJSwbV5cUsch\nLsS3L7hebBuT4CZ/l9h+yBjxSpcpWV1yVDlAGrR7vk360BkwpzHG8nyrK00A\nSpif85KBp705WdqKImd8GiKr8ky3ILoa+7ZZ+je5VU17ygpVtJRwKUgtjktr\nJLZhPimbMRXO+iJhucG0vn8X3hSQynwT8Um0aa1kCNCimF9ZsX0F3PR70I39\nOIWOHB3L78xMLe17KQCABzIBwNLBJclqNn5DEwZC7NXIsgMDch+NI8ZAI3N3\nlnCdgX0pQaJnrml2JaJ96nuW+kjv6QLj8VIjea8JSA16jhPP3ma2XFrfbHQl\n6bW3\r\n=wx5n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"026796eaed78913cad5eed14d6e1e7d5fc093e95","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.17","@balena/jellyfish-assert":"^1.0.16","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.40"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-pruneStaleBranches-026796eaed78913cad5eed14d6e1e7d5fc093e95_1603886450419_0.04860395298974596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35-renovate-non-major-c183967ab985853b7c23c2df415e499efd3df740":{"name":"@balena/jellyfish-sync","version":"3.0.35-renovate-non-major-c183967ab985853b7c23c2df415e499efd3df740","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35-renovate-non-major-c183967ab985853b7c23c2df415e499efd3df740","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b8c5aceeeb03b2ac0a2f5292897159bdfee25cc3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35-renovate-non-major-c183967ab985853b7c23c2df415e499efd3df740.tgz","fileCount":27,"integrity":"sha512-xCStXNBuQcc6E09esqgEooxA1YovT666B3ddE6zbIjIT3Csd0mzARR5GAimsYnsZRqNmeVMa68PAdeSWdjZyiw==","signatures":[{"sig":"MEQCIF+UOKxE0PkdnDz8rtKA3HJH8mJdpcgl6wfrUliVGOoKAiAN2yqw7CpaUSh08o/LeFnBoGefveI6BhfqSGVd5r/O8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmV+/CRA9TVsSAnZWagAAxVAQAIxRBcRKBidm2ysc40dn\nN/EZb7/j0SGlekKm2eAkmy0qCzimjs0veOu3Va7UXy03bI8mKHzPMRFXBTWx\njh7nAvvRSeZghsbv5zdbdLA7HuaycUZH3hxKUs2LbbUKluC4UrH1Ks04ChbM\nlH/vcPVO2HRVuMkPCP5jXk8b1ulm47taEWd3apffptJP+7tvVoCyzW9YTWc9\nL+sss9c1Fe2YPtKeIe9W7zUXjb66sFEwIgLQGtibXm3DtxCycrMWOkTyGNRD\n0h3t8kSYZqJcW/ipt8gS+6VzFA99sUFZIdtPdYzMYWr540iQkCpCODx9J0iT\nccmJjqJH5HuW60JOGos0H/X9fJkRQHpqGEpkuTR16nS4jbgE+/TcKAtmQQFN\nDZZovcKiwwKti8WPGsaEf8ZXhnEVv4WtwJf6qkpeOxzAxJCmsrIG7Dw2lgZy\nmHbVtLE8I6ijwXi659Hb5G3M7cqr78tge1t0QZd2dW7KdW8vcD98VW0YZ+qp\nLBbbuUMBAPEWFJeAdH1hryONjd8sMF/0PdpCWOmFWPL1y7Laok+8w5RSnNnK\nBc2bRXlH/eZxW4oAIMqFuBCtfCmf8wYCYqonxocM4KbcuWZwljljDO7y+TrB\nFrfCl8YgOzfUIqu+eldh8cOqijYMAp3G/zx8kgk+LNpC/g3VPxoAb5wk0B6H\nP4ap\r\n=Rarf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c183967ab985853b7c23c2df415e499efd3df740","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.17","@balena/jellyfish-assert":"^1.0.16","@balena/jellyfish-metrics":"^0.0.131","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.40"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35-renovate-non-major-c183967ab985853b7c23c2df415e499efd3df740_1603887038621_0.06966502541457564","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.35":{"name":"@balena/jellyfish-sync","version":"3.0.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.35","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b1ebafba54610be9f3623a859baf44ac48bccac3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.35.tgz","fileCount":27,"integrity":"sha512-PXb+k6JEkR45oqTZN1CR0/58bNBMAYlnfVRCXIve3M/cjl1KwS2vsnPIHe4/JLFwZk8bzV73ARNlznsR3kxUtw==","signatures":[{"sig":"MEUCIDS/0K+SGVVAYqJHwjmcthhHQ66FRCIrAZ68W+Pp+qZpAiEAlBYEE7FUoBN6tquiLHbiYKap6z5kB7bPPZNGiqJuvP4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmV/2CRA9TVsSAnZWagAAUUoP/3fT3+4IGVaMUu64TNRT\n90FtrZDqkfvabIjxI2XNSGveI1RBRg5Jce0wWFO6lJGCUG0Iksr5g2hHV4xT\nDcPL93pkcttaNnLPMpLdY7ynVm1OWwZH2XiAwYmyA/yreyBcfZqgllknRJg5\n1Up2gB/XG9j70pwOX3V0TKT3sDwJrWQmVZwNclsaL9gzj7nqZWOUbf1q1YRq\nQvfkG5cBfa3UYkmoXv/qT3aVCqpo9/HYJBhq2ypw+q2od78yvOgGGlcgVDhZ\n63sJFgjfZOQBHmNtD6NxAU0xRFDJSbR1urTEfgfttlnVz3CyLuOX5I7Ndumz\n+EtdxjtdbqCHWI3x7+aGU33U2J8JPl/W7KOnj9uSIQoQQ/fyeQIc9HhApsL5\nc6dJZJ1wY+LteH/Z9uJ2lRLkm4Nr0zbmrzEknxqfDYQou6Ok8kT99HktagZR\n20BT6NzVtvem97OQ5iSENeSzmS0tEd0Yr12K1/PF3n5ZSlO9Z/QD+ypOvbvm\nCXjSJ/J6bp9vHa98j+PVs7IpvBeFiFFEnVwX53FsyuKn8p4iu6bqO1ZKUsK4\ntCSHJDFFe1D5yMtWA8r8kyOXKXKUbqkjkcLPjeVI4oDJ/kL6vfHtRJwHfYLZ\nTGX1ZHRqmFqU02rY/Sb0RqubU5Wdsz1XYX/4AJpiwb03iO14DLGX6OayoqOi\nftMq\r\n=fBXv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a00534d85a5a3c78218eb428222b5711ff1b3f7a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.17","@balena/jellyfish-assert":"^1.0.16","@balena/jellyfish-metrics":"^0.0.130","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.40"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.35_1603887093601_0.03383630591232545","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.36-renovate-non-major-8e546dae604410a765eab8728aac57e73613e8b9":{"name":"@balena/jellyfish-sync","version":"3.0.36-renovate-non-major-8e546dae604410a765eab8728aac57e73613e8b9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.36-renovate-non-major-8e546dae604410a765eab8728aac57e73613e8b9","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d61a609817653529671c569c8b6e4eb480103019","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.36-renovate-non-major-8e546dae604410a765eab8728aac57e73613e8b9.tgz","fileCount":27,"integrity":"sha512-1Hms0k2appbv2pn4hpAislwqYrebdf/RvWsP5CMgQga5vZzBQkeNQdEU/YwL0T1sDzqKA2Ys32asDGQm40EFoA==","signatures":[{"sig":"MEUCIQDkJKYGRZ8GMFnIuXQ9ym+TPuwkIwNUWogAXdvBGQFeVQIgWhVEThUi44LE/kBopw+ZdJIvXPft1X3W+Kq2oohpBss=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmWEHCRA9TVsSAnZWagAASsMP/3lqq6SpR8gHgawLV/SG\nAIi7eWXfcm4/MyCgwGWxW+yhQInri7aQejy11epFSBZPQ1keM22ip4LU4F4K\nbJDZDln9qGEGGE7JXhaMIf6rvrNJw1BbIHbAd6LCNYuwkXMsLzklY9FJjJVM\nVwwx8TACQmicrTE7aoylAbq6m+e8wx6sbiHwEYrrRju6ayzDVH8b73OkJLIs\nbAjQq+/7HqnV49MmfJeGfCCBAoFzQi1qggLbmeNFlhE9+uRVEQRV+bfYRu8g\nbrn1voRsBgK2vyrnPgquvMGalE9I42sOzDaBpzlvAmhtU+fELjjwpP1SFCXy\n/vg+cvBVlGONKpySTrwF836SVe28rOqRy08+J0i3tnoClGsZ2nUDGTyHNCJ5\nHUYfcORVWQVDf9r800Y3tR45IMMhI6Eb29uYjT6Kn7d6SMbiC72zaTMxHHSy\nvFsJTVwp5vDn0HmTulhq4f6/ADUReVIM4bz/MyTlTXN9SXfxYz+W0Kj+Ngy+\nFyK5/fwTK32rdFXvxgABatETezFiBkO7FokrQTrg7fJ870d5RuwDuhVr33FM\nANYNMv8WcW3E1ra6ysPmSHW/PPtYHrmU7ES+/M2nvovLkGnbWfMoPcFgd2R+\nFNpI3SB2qmtaDXkcyBfB3Uv6DPFw7nQhiduqA/W+WyyFilczNpIg7+JGu3ji\nDerJ\r\n=kEKR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8e546dae604410a765eab8728aac57e73613e8b9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.17","@balena/jellyfish-assert":"^1.0.16","@balena/jellyfish-metrics":"^0.0.131","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.36-renovate-non-major-8e546dae604410a765eab8728aac57e73613e8b9_1603887367276_0.7967055205657727","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.36":{"name":"@balena/jellyfish-sync","version":"3.0.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.36","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cca77f4978db4df893ee073e749d92ffb1e0f3e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.36.tgz","fileCount":27,"integrity":"sha512-ADcxjNKx9EQyF6KktlxO5SyJ7xLuiBbwSuGB6a7PpexoqEn/LstKq1bQbbJtsiZkYpIjU4GFlKgtBPBxuj1Glw==","signatures":[{"sig":"MEYCIQDrhhzanCP+bZ+wwELhm0VaUJnnq/Tz7D4rvP/jgrK6TQIhAPrg0LrMVyuW7vJmC0WDvbRpoPM355DpTlyKV3OFEyrU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmWHNCRA9TVsSAnZWagAAdLAP/jzLlawTRh/QugombbOX\nnEI0Vlb6B1Lm71rUZ6djBcREQ4Zu7AkAp06DHJDiR0GCseXSjB+F6YgxvIq2\nCGxJB+dVYAHdnG2tBxXUxK4aqoOXpzUWGqryKhjJMfucZSWGSaTd05SCgHjc\nH+aBuJjjZFmZFLiLInfr1ruGf1YYKdasyPVkyxSpNp9Mpv8xqEHQsjt5IgfY\nwdDfsjhEIJJSh0i1MklTwYCT3dWqfnE5sGvpYL7D3CSGEAIdQP68O7Cj+RrJ\nhho5I9Yun5NYh+Xr4Ywo7Gffx0as++FrbJnVWnHSNrej3vyMC9KLJvMTut7c\nDY/V7CNj1Z5MV6rOqtP0teFBx6oroqoioALZ2WjaTDZAXHePbgpbAeKuOFUy\n8OZ/dR3cbFjzEs4AAO91TLLGqU3i7kUGVuRc0gTdqPncpVNE6RXYKST/Mz3r\nBrU/mgAV9RQzkDy66G5bErR68RF9XgfKKAn0vUknDzgCKCS+WwHJ+Go3I2ng\nUIHWA65DMwnBpje3HG/ViVVYxvAe5JWk8dL7+mcBZ4Sv9BaoYSLxvWZGDZ/b\nb/KWIOARqv188ZyUnrN539+MXJNUFREh5BQ1wdXr6r6cK2JSohHOMICtlwuu\ni9Q+w5LQidrkwfUCHnGZpxSnzzmDdYT9mAI1qYJwPuo2RNpgGMCOimQ4zjnT\nYqUZ\r\n=pdvj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c90e33bfdb16164d35dba7939c15d3f6506d75fd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.17","@balena/jellyfish-assert":"^1.0.16","@balena/jellyfish-metrics":"^0.0.131","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.36_1603887564987_0.970658523726208","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.37-renovate-non-major-c6318a0f361109c531701ddec07ddf5aeb04a4a5":{"name":"@balena/jellyfish-sync","version":"3.0.37-renovate-non-major-c6318a0f361109c531701ddec07ddf5aeb04a4a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.37-renovate-non-major-c6318a0f361109c531701ddec07ddf5aeb04a4a5","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f21b7932f9604232c74b5c9bac5dc9945c156d60","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.37-renovate-non-major-c6318a0f361109c531701ddec07ddf5aeb04a4a5.tgz","fileCount":27,"integrity":"sha512-wbA/sZ/YhvoYh/olQyCp+RKfX6FFAkjms+ojUDEe8AqPnbjdAbgCoXxFg3+A+SmoJ7qR2oxMhy/B6OtoYbLElA==","signatures":[{"sig":"MEUCIEfWKQ0A47gB0nTweyvAl3UOXlaWbEWGN7MEj8U8GzZFAiEAmzbdS218dniXqIqS5SfZQvwZ8DRpq+jtMPwEBgySmQ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261984,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmYLeCRA9TVsSAnZWagAAgnUQAKMDsAYBqDq9CDNB3xRe\nXZSSWItCE0HWYfAHzVyohESuMLICywRwUMeKgd7+YlmcX1pjokNEcNcOdLxa\nkxNiXVmAL4NOTQRhJFZ51qgf5Py7va1XdOL1SFUc/+QrVfhTcT5XGN+bomGC\nVTD1P1D2VuChtabfEJ2S7NwpdbgVLcrl+xoTDJ+JdxXaRw6PhZqPggO7SV3B\nrGZ2M+D26vr75W7iqrt2ADqGyoExr6Ka844U7hEb7VfuepYz9Lp4V93iMHTi\nPvA6fFWITZNODFhtSFGkleVp05N2eRbUIngB/32G4FheELuX3G3/vieHgC62\nM9OegNm8EBJhUKAd5SgaOQ3x3Ebukr6wGzzogH7pUaVhG0MWkr25Nl9Dslgu\nUX/WpLR0mFKT5oXbzI/KMIYn3ljioGZTOGiJiHsdJs2zHCi6TNgnZE0umi4n\nPNVXVhXSuoT7t1dfpGDCAhFKlbpqVPg43Q20tDBsRAFIQTS8j8V2SkXYBLAc\nl9Qy9neuFBUqzxs4Yvy/Ilfd+f6V8IUOzTAzIN1m6GrQ1NQ59Kgr+K9sgHGh\nwtB0Dxh4TqlrXvXX7hwz8OJqMM18wyUU+UCYyN8X5AhzXpzwZEJTsc1TXm0I\nTMLAgC2FDsZtuMG+ZpzmylKlGSue7T8k93oZ2JmgWil2umVP5ywoudIHHK9D\nWugX\r\n=6TNu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c6318a0f361109c531701ddec07ddf5aeb04a4a5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.18","@balena/jellyfish-assert":"^1.0.17","@balena/jellyfish-metrics":"^0.0.132","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.37-renovate-non-major-c6318a0f361109c531701ddec07ddf5aeb04a4a5_1603896030208_0.32698162548898635","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.37":{"name":"@balena/jellyfish-sync","version":"3.0.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.37","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c811ce081815011b6f072ed02f0d28b00ac475a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.37.tgz","fileCount":27,"integrity":"sha512-WiPluiT4HPRpNFjmKsNGdKxOiH4Xfu/fyklOuk24SrZhR36rG+78xYKt8xKZkb2cjaSmBwfAV6YulbmsFIBx3w==","signatures":[{"sig":"MEYCIQD1JPVOemMvl3/47TJZZl7Yf393ldEeEcCgwJDMt0tWWQIhAOB584JnvqOqUlRd2N1x2/X+sRcQCv61XuUCBhtwdwLH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmYOgCRA9TVsSAnZWagAAR3cP/2g5ON3qNdvjN/s+cUPF\nlEUYwJR1kqvkHFvQobqYNT9/oAfJBc2t3L4r5eknbJsTLoHjxRUvL/l+un7u\nJU4JdXou2ydakEg1ZJauTvzjWH4VyDJoT8k7vZJHZXHRosc/CbadI0kEmDzA\nHuq0jth/M4hZ4XAvVCVBYcg0myBgoX0ZHJp3LsaUI4pfZiU8G2DBQBpmwcWp\nqhRuJ1/HWhMtI9UBpxDVZcsa3WrejVSsY/K6yhDx7cn3FU5lvPQ84MsfEk9s\nJnT4WmBMTIi/WMTQnn+xsp1fPjWU6JkoEvzl16R8jkDR2xGuj0IAaUHShmmV\nu9yjScNdQkHwJPo+qrvkx2b7CqgCef6PB3l7dk3XVrdDrbtJg/qdrbGAMXfO\nA57enDW3unnhZrW300yH+MX53fjggFXJBOGuDEqcLE0Z8rw5uWo518ul6D2E\nyh3hEt/yJDWJH7yUymPnAtTNaIF7eMNlN1+Jm8cDrCTFKcGBSFhp/BSdqMV8\n+0tuKQhibQs2HuzR9k4gT3pPeMkGDId4BEASnzlznlaASy3TWcFa+QW+Q5EF\nwrlva0IvkJ0kkMc0ESBlOtZIcUMVac/LRQ/K+DHmXjD8sqAMerGA3sf9XSoo\niaJsKddOF3RLeV2CLW1k9ZdCLsANjyy8hoAHLfgyrchfCt3SPF+rUcxoM4Er\nB+L+\r\n=tvY7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b828fedbacd355fdd055e3751251b42d697c0ce3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.18","@balena/jellyfish-assert":"^1.0.17","@balena/jellyfish-metrics":"^0.0.132","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.37_1603896222662_0.1374269892603035","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.38-renovate-non-major-188536cd70224034b36fc7b8763d76ef12029e1b":{"name":"@balena/jellyfish-sync","version":"3.0.38-renovate-non-major-188536cd70224034b36fc7b8763d76ef12029e1b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.38-renovate-non-major-188536cd70224034b36fc7b8763d76ef12029e1b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"58ee5c07214c3b5656f4434cc2008c8ec1c9b147","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.38-renovate-non-major-188536cd70224034b36fc7b8763d76ef12029e1b.tgz","fileCount":27,"integrity":"sha512-qbzt+yF+fNrDGVkVQfCaXTM9u1J3B2e92DDtAEXgPuqamhsZOvB/ZtSttrjTUgIep+JQVJQ2CbNxjF08uBmIrg==","signatures":[{"sig":"MEUCIDSebDW0aC/CXzQcVkaPxwIMPq7v4hz8wJJVg3O07NUFAiEAiUI8FJuCapjUFlOwnu/C9xNEoverXUIEx5Hq+5nND+I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262053,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmdTHCRA9TVsSAnZWagAA7P0QAJH4d59ScsD9+y8m36NU\nQC47a7v7UOkup/EgHDnAXhVGKVe1uYDwRJogXUuSco/rFGOj1E4jHsOeuguy\nICRyD9Ugoz4YdvY4Z9zYiAdUI0imuRoVlTYY7xZufwHf/mMQte9sXatmFpH2\nTwA3MldxfEMovMvp0bYnya5e750YUZL5uwexjsrs9RrfQerbTM8plhIWe8/r\n3GJAOpsfdrHWlar/zRPeM5lcFut9+furKxzUjjKqd/vrX3Z8LtlGPjYcz1FW\nn4c7uduG8ZQOrEgx1/ltQeenid6o6amAr6wcaqJAr4/EKx27D1FSluipN7Ef\nSasTBjpf3xrzN+GJXpncFDIGvWzPptnAfprVfn3PWADvStrhl8Yky+t29T0u\n5TFAfTtOmn9XkQrtBrVkrv4vZOUgAgsxxN1KeXZWGYONpFAGbE6mrUXDx9jB\nk0q6qHzry+WqJyThtpy0lVk8HJHi1W2p/STBIK8NTkxROIz5tI2mNAo/rqbC\nfBTs/G+wNk2iSBFqVwcmta8hBs8RYAMhXA95TuapAOJ8mGDwEQEd7+hnip5t\nfubSTiloiEiHwrzqZgT/k3T5vXjCgKrohggmu/mvl8YDrAXeVCuW6ZjDno8e\nx5Rj/iFKCFvWhDev9Tl+2WEXP80WKaWvIUf8ZY+4X1yTT6eHws8pw2dLA0nV\nlSdx\r\n=XImq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"188536cd70224034b36fc7b8763d76ef12029e1b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.132","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.38-renovate-non-major-188536cd70224034b36fc7b8763d76ef12029e1b_1603916999216_0.7194436372359168","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.38":{"name":"@balena/jellyfish-sync","version":"3.0.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.38","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c6443fc20780417290a61694835afeab9b5b1d22","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.38.tgz","fileCount":27,"integrity":"sha512-pW6sXfAH5JuKzs7crjpMym2noBXNzHHRzg67jj4wx8mIMQR9s8b6dTTdcB8ehKN4VmvCCyt/aZ2nV0rgfgpI0g==","signatures":[{"sig":"MEQCIGCwRVkApDH1W2RlHn2iDcD1f5x6HSZAzDJ+jh8zFvhLAiAxKPyQhLEpTGAwHxFJpBVV8JBkqxGzWlF7FQp89cAIhQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":261993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmdV0CRA9TVsSAnZWagAAx5kP/2Gkt4gM5qJhV1YrMcor\noix0AGMbaCprXl8EELbOPaaOvyn2rTpbu/LIGrPwLxtWlfcVE8LHUtLpaTRt\nj4J2YvVpTqWgDtiv/NoS5Go6Np/acZ2SfT6sI72RfuSR9vQDJsARtHNf2NS+\nXDntdkIlE1FON6vhrfPIIizc724yk5q5diEWOkDXs0xgYGTlHmCMmC1m4mDB\njTRBOSx4AavtwquGObNXHWpLGkgMKDK3sNG09/XvJgVjkho4G5CJ9VpB4ksO\njCegoUi8MyP+DxvK0Ew0thBAQ1FY+dKtnRMajKDGbdVSoKtuS/3+zOpVvTdh\nEUvXEOhjBkZJ8SqCNTokbWrGmQy8DdN6iS4dcXTsV8kpxvWZP2dh1JSGY2GO\nk329RXGUOT9oNpiV6SAX2F3ooZeoUTzMBP3zaNdT4LE/c6kdC9BkSfHjQlxP\n6SUIu1uWZU5AsmSQScKjog5/DflwUwz08bdhbaKTVXbjXZ6Sp/+7sKTYXYwD\nrosfoi8hUDSD2uGvMr5T7+lOh5kOIIK9MSM6jFQ7R8oxL5bEAwumCKYlTj/c\niIsg7wBiYXBYuaowxp5Q3vmChiZodzT3C0V8T6o0S9e9OXxsiqc+UHAuFJmp\n38Nq2r2L8C7BYtPtuPHKmeYOZTxM2MkikTVqBJSuyWrUolVeym5Ja9WpZ14H\nlT6y\r\n=rnjS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9b3d96083b3e1c81a9a98ac85df1c6117d983989","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.132","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.38_1603917171810_0.43111824151477807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.39-renovate-non-major-8cac25a6f9a64ce723be00fbd94cff445bade4ba":{"name":"@balena/jellyfish-sync","version":"3.0.39-renovate-non-major-8cac25a6f9a64ce723be00fbd94cff445bade4ba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.39-renovate-non-major-8cac25a6f9a64ce723be00fbd94cff445bade4ba","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7ae3255da018380037d19d8b1018018f6920a4a1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.39-renovate-non-major-8cac25a6f9a64ce723be00fbd94cff445bade4ba.tgz","fileCount":27,"integrity":"sha512-RMCqp7sCjnNAu+zzAYZKbA4BNlYTJ84SWFo3Rl4Q+REXdvnUekOkwfRvX6O4aV+mgJCbH1M1iEy97E7VjY8A4w==","signatures":[{"sig":"MEYCIQCwuvlffTH9ScHsLV8E4102yrLN2hrgaUqTG1UDdnvutAIhAPukWWONnBWsZaUEvddM8X2ucYgUCV5Ju6+qHTjT21oj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmepgCRA9TVsSAnZWagAAAgoP/iWZmV7Q2UBaKHADQXfS\ni0Y2yQuyIJogwF+rzCjBOpdrtw/ise9XlTQFelg2fs/fz0d37Mw5RbXieRQX\nQpNyMbrkE2tqMaVyf7xMGSY0m3h/nk1OdlQ/mrf6yZLcWKW9BhF8m7Y+MW7z\ng21ULh0DCSEhEzCjBiUIPTkcut5HMFVAuvIALBOlPpHBpuUuOYsmxpDoK9o9\n0fLEB1ROfbP5pC9imEqD9NRsbJJq/LSJPoSYgy0sZgElp6MdpU2Od5Dld4TM\nR0vWg+hsBFlFys9xFWrVrVz/uBVQ+nEjPNWqKuZ/gmDcZ0KX0l2SPDZewKWG\nC7L/WdvReimznBArVA/+VJ3zxfZCturButk7WqV/eITrtxP38fZeqY9yiZkF\nWykR0ZhdB0uFFjpFlpCeyFfZd8p3ku4/tZ1hHJjLTMwOdUNp2UEbf2Q+qWT1\n6V3u3HZlCA0vUr+tz74MxTMtWJyB6Ukw1ykubxP30MD+55hhbQqXlUXI96pE\na/lROIOPyebumE77hRCqAIjBlKfi34gee+uRifSuQJuoleoPtFMuaqIfXBho\n75RJUpjUQGszzofXSrYe7M7GHiLt27n5GRhFZrMV+gPFJkvfHuLUaiHPlelP\n5yosMhqX3MU7b9Mvl3aCahjtwkbEIL+aK7ahdP3q8LABi0IaN4Rma2Bkg3fN\nQMrc\r\n=8aTW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8cac25a6f9a64ce723be00fbd94cff445bade4ba","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.133","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.39-renovate-non-major-8cac25a6f9a64ce723be00fbd94cff445bade4ba_1603922527500_0.3645848659349409","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.39":{"name":"@balena/jellyfish-sync","version":"3.0.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.39","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"264dddfddc25c06079be82b67266f4ebf4ec31c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.39.tgz","fileCount":27,"integrity":"sha512-4Y/ncgSeAzhYbhPMaZBnFTAy+ZgXz0MeRf4MkIOOBFwsjpGB1TtEauwv6cnGGf42fFD2rWbLkFOzV5TGJR9joA==","signatures":[{"sig":"MEUCIQDFTU3h/G8b5VP40Xn6hwf+RLHi5wjCh3VYbaEraSKJhwIgXWnTPvOTE7Mq2ef7tNeERTUU3udJoKMcVK1HcL0Ad5w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmesHCRA9TVsSAnZWagAA4/0P/3IYm13DAgWcM/7gOOwP\nR0P/PZtLX6cmaVAyIogjd0jce6qJ89FeNz1vNz9ITy2/FurDimT9/gh4rZ/N\nkUxOwbr4QjDcuV+hIvWIECUqLY64gWMOuG7kfbWYvBAJLzk8BIAVdmmUw/bI\n0cspaBQKxQKnfQ9d114ugT6G0KjVXoSvXkFv2cxw4O1HjjyAXQFL5qiWDtFc\nSSjcAtErV/DmQAw8YBHIeZX6Kt6WDF8PHd/v4EBlT3nFIx1l1cy1/oOn1h9C\nJJ4puFqiikVGMEfY60SAi9E3HmsrVdwHAAzTD4gYb3raVreuAa/r1U0/FTkD\nWfEjW2DI/T31Ve0HM8+KpGSuzsiO73KR6w6ZolCHAk2oEGPxIeI08mtP5RH6\n5VgmDYMLYEPzk6paRnQUpaLXxpiA0LQ62HklVBpQkR1LrvXIigpueUdfDN4S\n5kC3ZJ/jB0l+mM4Z+D5rNT3lXD5VL3BCjzG5VuoUtMTJNN4YHwJfkIDk3ZQx\nrlLoHCrc67w0oa9RSGiwP7excpM+tC+H7URfPoRJVv6AJhmL7LyCyc8vnVpz\nKyCR2IGJ/oHqw5j/XPT6eSuKfvEVCmFs+Et1XWOuOMNAqDSB3CInv5T6TVbh\nEwxs5mjuxUmDIFNCDMSpiXxK2p3THzJfSjhnP5Sj/1quGFuQ6ozbIDAQn3I/\nvqLf\r\n=sjxr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0283dcb7d8274127e2b2b049440952d9c7163ae7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.133","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.39_1603922693882_0.6853379072011783","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.40-renovate-eslint-config-standard-16-x-6e24d29bdb7df725614708d806045e32f4848916":{"name":"@balena/jellyfish-sync","version":"3.0.40-renovate-eslint-config-standard-16-x-6e24d29bdb7df725614708d806045e32f4848916","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.40-renovate-eslint-config-standard-16-x-6e24d29bdb7df725614708d806045e32f4848916","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d0523c01d782949ef545ed137576c254530c67af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.40-renovate-eslint-config-standard-16-x-6e24d29bdb7df725614708d806045e32f4848916.tgz","fileCount":27,"integrity":"sha512-KVeF3xezodEyF+LxPRcnOA4xe18yUTy4JTpCYvAc2MjdHTzRm1bYyTXuW7KX1/cCnx3TPrOHVXuwC/snx+9L7A==","signatures":[{"sig":"MEUCIQCGnK9hS9yBrj7IkzcA1CPcXEOaw+I3keBR/2CaCNxIjAIgQjvB3L83e4GbGWsLCDRn6tKbx6ZstuEy13CxSy1XI14=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmmcbCRA9TVsSAnZWagAAUJ4P/2ZxdwW9pdaSLiujnfnn\nsyFws4YV9ceWK2Tq4ALSSstfAcBT6160lbea/SobWIKwOV2ohSOnIpHziX+U\nBftPBARaYo/OnEja6GwKEJnXqmRkoNcRvFJLe82F3q1XomvMtEaDryT8mQgi\nFEA1Gfg8eAmcM0oN7M1qrzoQeLCEBHS9KPTtSvIusCfC7Ab9bcqQEA9+W76M\n8qhHEWkPzXD9LTUP1L3SoauXX/tZrKOTBZRFpRPV+s9xhtr8Ty4SU1n8fzDJ\n5MCaezaHFmxxTgLZGVI0kM/JldUfu6sOCP+wGJh9CtelYgSAwEkQYSPj4lZ0\nSzxb5Ik59Rq+BqOIa7r9dwPWxdmis+FCg02hj3NjCC5cXZKX60fT+7U9AHBE\ncB2MAwZn6Wh+3fC4t8hA/Oysblcd8B+mpjON15V4bxKh+g9+Kmd3U39qVceI\n9soAWfQUNDjKw/hsrSQ+FFniiTN4sicLhSS609EQZFL31O6sFUuL8lwW5OfG\n24/hp1cODs6m3BfgRo/LR5YmRzk9LbEDkPyJEw7/7fujBoPVFnk//svjzAop\nHzdWVCDQ5/thv/UiYsdmRxrbMqd1BjSfe1FCdyIHTztJOJgszO32TpRyYWwp\nsB1uOzAsMdf/UGskLoaF2gmHUpKv3d+7KoX6s2+BmBNxp0LruC67J7nV4j8C\nkUyM\r\n=Kssd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6e24d29bdb7df725614708d806045e32f4848916","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.133","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.40-renovate-eslint-config-standard-16-x-6e24d29bdb7df725614708d806045e32f4848916_1603954458367_0.609158499682114","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.40-renovate-non-major-971749f3a4ae2c539386226466cbf37992a4af58":{"name":"@balena/jellyfish-sync","version":"3.0.40-renovate-non-major-971749f3a4ae2c539386226466cbf37992a4af58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.40-renovate-non-major-971749f3a4ae2c539386226466cbf37992a4af58","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd993c6d6990794a2e6cae19d9da70593dc5f0c5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.40-renovate-non-major-971749f3a4ae2c539386226466cbf37992a4af58.tgz","fileCount":27,"integrity":"sha512-qcoPyQUQ5v5eJMNGkC3/KBzPpVpBArs44OCbGyYNMKn+/NMMD5jpW7Vfhl4qc04A9l6qVIC70nSipW3/Kkke3g==","signatures":[{"sig":"MEYCIQCyGOaxEM6Kul2CDMBtO7yVV/UHtkg0krFWIToupgPrTQIhAIj04nsPVJDyWTQB64hc/qzY14G4TSRnKOEEtbTCtVTm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmsplCRA9TVsSAnZWagAAOH8P/icMh/+KHRLCiYu3mvrv\n2QHVxB7eZc4zdw28jvBn9XjVNFFyny8etRRzSOcBZMA0tKLadewdQO9lyF7V\nG1SybEVvVOYO/GEDWYd3WhS6VAEoVdpU1oUyrrylDBFi6mztE+dAagnREJSe\nMvzl2URuGkp8FE65yGq5WeYcrNf4xog/bCkBTTN840GsSmsYHLccUCGAymhE\nS8T26WsNnxowuCtwk/3acyqlevPRR9xolVbuYGwy/Xgkve/Y+jBaWpIA2c9e\n23aHZMpjGQa2a/4fUwOjCyN4K37HM7rs1hwPNOkGknl/Tlj2t2IlAJjeIpgw\n5QbD5+tDVleAJ/FpqiEZSf8rtolpnV7TB/dlnkHg5HIqpFiNWN4yeLHi9XpY\neE/L5F8toiY8KssEjOkBxFkfQ3Av15TjIv1s7EF7vFxpndqCpHNClsi5SKGl\nBl7yCfYA+iUJVfy1ssXxkrB4afSqdqQTeqTrhST4oPO0dj5ptPyhn25rDgxG\nBTA2Woo+j60n0+/972LtDr2Ez7Gv/A4AC8qa3piZdvEiPnFWFCpnjVxxnWm8\niGJk2L00e/1h6MyBFhczKXgswjI4RzTsLJdy+P5eLMkESeqOOGMJE5I2eHtV\nNd4rBjHG9KcsBiq/W2kVOz9aCliyLxM9cGx4LPlOG/C6pRFW2m0UCehnvZBC\nQCW2\r\n=wzPF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"971749f3a4ae2c539386226466cbf37992a4af58","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.40-renovate-non-major-971749f3a4ae2c539386226466cbf37992a4af58_1603979877061_0.43824474690194104","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.40":{"name":"@balena/jellyfish-sync","version":"3.0.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.40","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a1d9817b2839ec3fd5214e3949b29ff7a244a19","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.40.tgz","fileCount":27,"integrity":"sha512-GNiV58WscxMulHhbzWY7uqYwp2+WnRXmkWqAljwvawkFFWv3vxHczjWH8SOYxYgHE34DzlR/fA/rc27cO7n+BA==","signatures":[{"sig":"MEQCIBnXE4NQqIVb9uVf0JkX8tjfm1ZvwZ9p2L4ziUv4RzXyAiBzHmaRgTYLqkeZi3t9tZirfTWfhBG9CJVtYPVl4hvLeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmssgCRA9TVsSAnZWagAARukP/jC+PKS/I2pMgK412lkx\neGh95IX8tK/iiCqFvWp51+3D/aJcEvsPRiRbSf82NbyHpvBFJIO1bjcwHLQr\nwkU1kAjuK6/52vvAm1EikRqcCBH7EfRRxTQY8kRXYpCv+4iJF6iEGv+dnZHy\n/LsD7lKEJhnuG0dHym9amX9zrYwtGRmcXW0kSbkpxVYWvFTt6lNjj9LDjAhl\nNB56EH2l3mCLs6WCqcfNiUsJBTnWKLi9zEnUS9FptfLjTqrAz9IcWCzdzNBi\ngJPpv3jN4YWzeDnDc4yQsD7NGypLPmQGuDjs04Ga26FzMnrpxawc4wBVv9K6\nuBeB/L9X11VBT424HJuJ2SxmF9h/7LLmuv7XLPioB5aNwEJlB0D8+0DJ5TWz\n1TKyHq7xc/7x6SAjQhusxy4PPcp2pYg0fVprru33U8inoy8/IwW8qdL+bokF\nWbBQwhGiaxDndF58DySLLbToLOYsDsi0Q+TSiAG7ExpsCKBiC99scS/NnqJI\n9bDqv85CXobfzy/X0yh/bNYbT5pZsfkuyMoTmOKlGSDTd0yMvyXLTziKzPCS\nQSd3kK7w7MUolQZNb62Obi2guVJhH6iM/a4HtqMXyCMmmADnnVeysEApTykb\nTFSLV8lCkOMcCymWX+Wn3eiD9hy9Ut2CZQQ+bUJmTSKEK5QhqaRn2D/sCFRh\n6L+A\r\n=FD2T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f1b18a0d190afddcca068573d3a180a52e38b8fd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.40_1603980064251_0.12570489411751185","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.41-renovate-eslint-config-standard-16-x-7b7ac76bdc1fd4f0494ebbe74110779318103ee1":{"name":"@balena/jellyfish-sync","version":"3.0.41-renovate-eslint-config-standard-16-x-7b7ac76bdc1fd4f0494ebbe74110779318103ee1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.41-renovate-eslint-config-standard-16-x-7b7ac76bdc1fd4f0494ebbe74110779318103ee1","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8d1f1d0ab150e1eb3f5efa5e5301d8046c870f06","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.41-renovate-eslint-config-standard-16-x-7b7ac76bdc1fd4f0494ebbe74110779318103ee1.tgz","fileCount":27,"integrity":"sha512-Srj8Bluoj6pZb9UVSC83FSsjr/zFi8fdVTNPZKK5mCblMpVEZJREoUxyk5uIyvQvcSnCHHin8DTDbmPsw/ePvA==","signatures":[{"sig":"MEUCIGuK28/ohvehU/vtZDmTRydQEhiTstRGxk6LaOLWFJBvAiEAouS55TCLbte0l+k+k3KF37QDaMP/nxDA0VDKPKzdGxk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfmsvECRA9TVsSAnZWagAAPMwP/3EB+OFb4nLpbeAnhrYQ\nPRVfgOiZOAzhuKZqRH6b8SRVwXtq8isnCOs9+Yj3LbOFNt4hOK11ues3OgKj\nSX++53x8R8Y51qkcyLe0DyqMz/VsVBw+Z00lFingTmxuICIHqFuJbtQ70t2B\nHjSRrA527/sSAj1NBGHv9uxdf/SzJasHYzfM18VJiB8rWhEgEmbLgVQ13Um3\nqEkrzFQjgyHXBjhVBvRD3uCbjwMCwJczoWDyB7IgeQkTHbX13yKoqIbKavus\nJhNioKJegQwMdgPnsusSXxsaVx4i2lzc3PvSOBzQJE5bNhjKwcILQr56Mlyv\neOHSkvJm72lPgBC5MFJnIv8+4AsrxqAupEH1vMUCy+2y05cRB0/nD3/yM7xh\nHo57HT/8WrVvgRdkWrp/rr0EOwOg5zbsPvsd8gx5xqkjjXaH9ziXzNvVjTSN\nMdilixYzKjuAJ7A6X1aoHv5opumtJ/rXyyAe72LakG2N93lmvIKamnUpwhej\nVPCwelLml4sK6yZEd3n3a/oBJFb8ymyxgb/stym5ygbb9+FjjTDXT77+h9se\nq/8Jqr3l6YtyL2Skm9EEUzNHfAUG8gdOTP+M0vfZEMNbJmOExztNJ6lXd47W\n+QA8nKfQRkoTbjN+9dvJVYWWKumeLYc3V79juAxtBrjnOkX7OEwPN+mrh/iF\nDJAM\r\n=UG+d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7b7ac76bdc1fd4f0494ebbe74110779318103ee1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.6","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.41-renovate-eslint-config-standard-16-x-7b7ac76bdc1fd4f0494ebbe74110779318103ee1_1603980228367_0.037756616625557404","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.41-renovate-non-major-59eebab33e01d49122d146da3eec860f52303c19":{"name":"@balena/jellyfish-sync","version":"3.0.41-renovate-non-major-59eebab33e01d49122d146da3eec860f52303c19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.41-renovate-non-major-59eebab33e01d49122d146da3eec860f52303c19","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"642908c3ca54f20c647ea7ffb5631f423d0c885d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.41-renovate-non-major-59eebab33e01d49122d146da3eec860f52303c19.tgz","fileCount":27,"integrity":"sha512-ssetByf5JnY7MD3K7esn9IQMfqV496/cIgGn+nnYS3AGU2jWiBEBm9nPtOMWK6c2sHEXlo4Gb2tOkoVjr2NJbg==","signatures":[{"sig":"MEYCIQDa1UnCJai1O6o5e8owdFClXsiGLm6s3WxT6IJjXLBdAgIhAJKXOPC5D8gL4zZlLyx11LEWV3u3sSSoGbiA7sNG1Hsq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm6KqCRA9TVsSAnZWagAAmpkP/Rt4sU70mahk8g1LcSRr\nlCtCc3l6nKICJhOEHTZSkMN75x7Y8eY2+sXqgqT1DO2PjCHpbbiXedWcEXBl\ngNMRrDQvff/I3dyuNj+2bv7iV91IaUdyFwMmwoElYSMfjQ42lUce7PZyuy+2\nZeCthtTkpQqYBIEFQpKQMVwXECyzl8cUeaXfMY8OSpoXysp7roo2SdaT4eTG\nI+HJTL7MUfQnFLFp5jkL8EmdWJKGa8LLhtSJS5ztQTT0s8BSYrvDbWaVSwJT\n/SnVj8KBEtTCQEhchzw9fcwfthA7UZhGDZl+K1Q3M/6F5qV2eIeIHBAiNCum\nQU6hQ3vaBzp7Dp6wMjWuYeTwk7Oa4CAjm4lx4V7bw65X9U1V0/dCpSwD7Qz5\ny9GMmd8DBU0Nc2k2PJQpOCjLkqMaTav+PsDUEkGyH0RJgmjrC8MqLzFiKjg/\nPgH9qlmfC7/GxlAUpxnom1JOmj77Nu350+eIT1v5xZWbYjCDb8xHM8XHHVvm\nmxqDzdSZzUPybIYazp9ueem2fR1cw/z2IQtMJZBo6MPbHOCILsILBpFSOM31\nWc0lbIfxCvpmvCzALOpcGBrIL3JVI85xTYIimnIb07D//+PeinyQUqvQebgN\nWevzwuy+QA7kBIFbktPZJbfbEDj0JAQCwgVp081DdmjBr4pjL3dlhUb+jzfS\nqiag\r\n=usqG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"59eebab33e01d49122d146da3eec860f52303c19","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.41-renovate-non-major-59eebab33e01d49122d146da3eec860f52303c19_1604035242465_0.7445319570366515","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.41":{"name":"@balena/jellyfish-sync","version":"3.0.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.41","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d02df94db6764a5c21841bb29ec12d2094bf1b2d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.41.tgz","fileCount":27,"integrity":"sha512-nuEdCfEkqe7u0jDPYbNGRIza0IxJcsTo/kH3CU5e0ksjXOpbbf6QcxUqTTgyv5UK+UFrtq8lHrMdmeJulY/Mdg==","signatures":[{"sig":"MEYCIQDi1eYczSoX7mM6JlL8pMepNicXXcGifWYMWLjzwhk/MAIhAPc9FxWKvWsvMCJqcXoKXrWmceSjGGDYAQfoXk0sgo/Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm6NWCRA9TVsSAnZWagAAsOwP/As+0nZYiD+bdMxAszEc\n4vFhmJbJ4E9b7BPcF6CwL4PWYIzMRGwGApTU78kKHLJ4uPndPSCHFba6Uk5e\nUKro0WDu5LKYQtyoaq0rgRhKraab7T2pnQzCbJtc27C2V5Juh8Yb2aN7H46L\n1Fos+HkEIYX5vbaOCJo0+RDFDcTXFd0z/A3I9BwPEwCFSEzndSN8S7+VzNtV\nyDbcQ87JMhmrYTymMpmDVPnSeSnqXjcGxmxxaA+7pfKpeXaav/0w/Ex8foRn\n1KrydUxjoGijdH3uPyG0J4YQjN92DEDZ86dpa2XUxX2jm+vsTBiv9oTJQRMb\nWpzTFEV7v9tU3NddQ/iEZlVNSRNUaNqXbwsGp46ZBsjiujckJ2n0UyIU0OSu\nD9qcCkfjVAHzw2fNo05DgFAhIUv/wZqHXnxT7X2990wUJhFNpBZRMLNLHpxY\nHrQaCZf76uJoMnamQTkrCkm1M1auV2lkMzdqQSv6e1XEOe1UF9ucStte6WO/\norYFfMLWYzx7fxi0DaYpy61O7Am65uL2DEDC4MRDH+TJ2ZnR6xpnwAOSotj4\nhujBCnv+4Xyp/VLsujKu/yue7OnZ9PwegnUIiLM897XX4Cfxi1m3wftQf1kr\nJUS70p7E8w58wxyX4fsLN3C8XB9fdQWAciQ2CJzY9kspS2Nf6LsjN0IdKJgC\nk8OP\r\n=ASts\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6eaff8def7fb9eefb73137e49b154784397f48b3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.41_1604035413839_0.8113616317534513","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.42-renovate-eslint-config-standard-16-x-0b05391d72bb4aef79c49a03cf537ab6a3511624":{"name":"@balena/jellyfish-sync","version":"3.0.42-renovate-eslint-config-standard-16-x-0b05391d72bb4aef79c49a03cf537ab6a3511624","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.42-renovate-eslint-config-standard-16-x-0b05391d72bb4aef79c49a03cf537ab6a3511624","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f4c0b755750877817c03efe65ddbb8818e8f7834","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.42-renovate-eslint-config-standard-16-x-0b05391d72bb4aef79c49a03cf537ab6a3511624.tgz","fileCount":27,"integrity":"sha512-8w2If1kXY9FayL0j88pqLdyby8TADjrKteanUwJrI1354bRUHJazM5qRcxkkKDoCUdyx1J42ykOtknfsP5vYFA==","signatures":[{"sig":"MEYCIQCPh0yf+flYM7Gq02RrwFoDb3zPAjOQs0X0gru0t8py8QIhAI5U/stXc7Jq0JdJda67W7JzE/9I/33DOGXm086giEx5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm6RXCRA9TVsSAnZWagAAl/AP/1XeBkJFRCvpwH5P73CH\ndyetU2Q4a+oLoONzLfRbi+on47DPn0RTICutRaB69YSo6ryrEccGsIQ80bYV\nVszlynFhfcrd8P6fUNUlMgBbgoRSFHaU/2TUiwq5d/FRufoENGuUqrWio5ap\n+BWi7lkfgpW0d3DZ7igyvbOvg4xDTNaVtmxuuAKyVNVJVDy08jKsOFneUtOX\nKwOf48I7CIFET5q/hHOMr1s0n3rMVeIpYJ8bMt1YcjWCqNVDsih5oAnITA3P\ntqbNVQV4qjolIvOR0DqeiC3fXb9f6OcLmpaObZMyfcEU4vH5ylW1HjD+i9X6\nProRKAyj67T2uaMZlkDJJ8AEfIKGX1MFxQFQ7U72z0zKfBGb0JI6YBPfE2KH\n56i7ip+qWVBaoxD+E5g4RVMYPc8k4MwoRXiGIV6s3lZeEMULD/6nojh+YTY5\n57AK2RrkM3j0+Eqg3ShhIP7DYzSnTd5LuAF+YiMKy7fGLkvQx+bsVLGeUtLE\nD+tPpd6bftTxZ1LyYtS4VjvM/ORsfv96h8VVMiUWg3GXF8r2OK1aYstaiBIB\n39lhVQwSz8CIppdgQ1lica2ChbZR8sa5FTBkxJmyn/ppzTlKXDV7LS9qY/Wu\nuXI4BG4ER9U5uHo0t8CS+kCEug4IM8DzUvSN0tWfoS0D0HuQKos6kyGBEnut\nVHN/\r\n=l47S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0b05391d72bb4aef79c49a03cf537ab6a3511624","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.19","@balena/jellyfish-assert":"^1.0.18","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.42-renovate-eslint-config-standard-16-x-0b05391d72bb4aef79c49a03cf537ab6a3511624_1604035670426_0.059125726763081365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.42-renovate-non-major-808404a2dc19f684e52ac96c9a647671d86bff29":{"name":"@balena/jellyfish-sync","version":"3.0.42-renovate-non-major-808404a2dc19f684e52ac96c9a647671d86bff29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.42-renovate-non-major-808404a2dc19f684e52ac96c9a647671d86bff29","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"290e8dbac53737074c5b02a30845d3c2943fd6ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.42-renovate-non-major-808404a2dc19f684e52ac96c9a647671d86bff29.tgz","fileCount":27,"integrity":"sha512-0AAuWXNIhZgxsV/9n7AXyqlwXxmYP5Zuua9KUvZTfLKBSwjrPXDOk97eF/7c0dbRVmaLwvOMUWSmvCDJPIq75g==","signatures":[{"sig":"MEQCIH0Cag9jg+ej/jsOTMAjY5UFRGYqvzBUOWFkHjAhdCkOAiBOJIekOAVwVmZU5IWtNfUXyxCLBOYuOTIMs0KrHjrutg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm+yQCRA9TVsSAnZWagAAOK0P/R9a32vQlEZwdI2FxmQX\nWyl3KzFjuok2XBrd/kjb0vqFe5BwCqZdQpi58QAcSgJwzlJp03V0Bhh861EW\nlCAh60ZqaW2Y9RF1k03hZgyRp63MDos5MnMJ0PJtnfGDb/7tTCULNd0iaQ/v\n5GvyZcqL2XYNcnE8NC2RGiSVWhF2Ko3QoXhDGpeBJqaHcCTn9Fh/7EtksH/M\n0B/uSWWD44iQJiOn/+659UGz84X+kGCBm+RARJLSB1/4qrw+6L0uumcyuVSv\nInkmNN49UbiXInvuHmU6uIhA11Ypq1zVhURvRDP7fU+gOHOnvnDbXL4v6Ra4\nhNEa1kmm+O6bOjvAvutkS+XWnfx/+WsXbg8ujj7zpGkIriQwDJ1lWha1mBB2\nDePx83FC5RDWgCRPrBFSfgRb+RILW53HtkPHkmnWV0CzFC8x6yRhql6ZPUtR\n1+dgZfjA+jHjojnO3uM5lzUtYnzuW1gFwvrd8lqAyLtn6TepyVeV1KQSVRKF\nWl7kM5B4y+uFMPJ4hQ7h/DZMYDsQFKMM/uwzToliT68jy0mHqbJbOG8TIgUG\nottwAeYbkf1u++W8iuBikmU9Jm9T1GFtb5QRjxhLQvdN8Yun40RlOpZUVYbM\n+c2V51Sv6Jdss2rz1IgFlMNr/nUqnIr92oGN8CCjeweYsplSpp0+DCzSFxO+\npuhG\r\n=yjth\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"808404a2dc19f684e52ac96c9a647671d86bff29","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.42-renovate-non-major-808404a2dc19f684e52ac96c9a647671d86bff29_1604054159900_0.3916899841661603","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.42":{"name":"@balena/jellyfish-sync","version":"3.0.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.42","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"32172450b8fa068a11d71b6df4afe6e7ab2ab56e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.42.tgz","fileCount":27,"integrity":"sha512-N6HWP9Cr0lCcku0RYGlzeyi4Bk7RdoiRJ9HYtoamG1sva8HDAd4kUbigtGO0eHRlg0rj2IG04ImkEZ83/HfqQA==","signatures":[{"sig":"MEQCIFMq8rixm5YERFU1TRaDqY/hxK5LZjgDwcATYXN9hSUyAiAaFAhJ+Awh6HKFpxSu/BXwkMRTQbLqH+mtYa990YXuEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm+07CRA9TVsSAnZWagAAbeMP+gMlDIYyfKZwh5am4Hfc\ngrq6IHliX9lWOYRSXCP3jnUSJ/PURodmjBr0O3w9ButNniXsUc51wifZLVna\nu6dAx+ycfruZLscLdUx4Ub+TZSg2G7DYAHzW4bKGMa+JvEZPb0EFbATivdyq\nL+3q2VYPfyuSZRxk+hrXES6lOjfS1nzE1+I+unJ1adgA0fesiWSV0D2zBmkG\nus/fCNjqCiSHKOzJDhM7iuLEFCKBPSOM23kyCn0LW+oxxfc2g5FPp1oRFXDq\nqEj1aPJ68dfXlMVuMRp7vC/7NUf4Z36oL07uiYvm++Z73kWR2m/PDIIhl6lo\nzXLRTfRMP8o/7aPXRcKrcCu7UcA4OjJP11U+DkO03bo+9HoL4T9l1xZ/wL2c\nvavQS2d6QErjG74iHzNbHQN+/paDTx7SL+8lZLkLQfSUD3/Un2inSbI+wqxA\nyjJ8LFWuzf+mq6UTJEgf/won2BUEjhaiOOjvjVCijCUdRjv4rkhVmXZzhDIG\nLElHjcCtfTdNTFsiw+u3U/tIaXczvkkVsa3On0I89p8PkzlhZ06aAkLiigmH\n5NA8aCgNsOAHxM/DayFJZf7YhuXQEbIvJunOm7sBl7GnPbA9nBScHkhIUy3S\nEHyKgjbkKfV2QB8hxsxNykg1i7Cwezp7lDpqVoJ/9CQ9RHyNkrUcTfzM+pBv\nmeg9\r\n=t3vB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dc773a74700a496ff41e61c5f3111ae706bac87d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.42_1604054331446_0.42970136016072535","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.43-renovate-eslint-config-standard-16-x-fcb8774086d8978c865c4a3af3dc432bc4ad497f":{"name":"@balena/jellyfish-sync","version":"3.0.43-renovate-eslint-config-standard-16-x-fcb8774086d8978c865c4a3af3dc432bc4ad497f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.43-renovate-eslint-config-standard-16-x-fcb8774086d8978c865c4a3af3dc432bc4ad497f","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dec6a04b2eef3f1cb22badb473b308123160dd57","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.43-renovate-eslint-config-standard-16-x-fcb8774086d8978c865c4a3af3dc432bc4ad497f.tgz","fileCount":27,"integrity":"sha512-DZYQzG0NYMbnFr1kH0CSTxu4G+ltJykzSxRh0hCnGc/k+rghFGSKOyueWx/lerF6tACC2vPIBWZA2tDH7y9w8g==","signatures":[{"sig":"MEQCIHts1r4iOoTVY1n9/Q1K6P0qejtlwfmCUVJ4M9cHEpytAiBFFJT8c0v7mtd/4/FClbiZYHB0Y3v3pVlM9U3bEGfnuw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfm+3SCRA9TVsSAnZWagAAq18P/3EMB7uTwrL9tzNmFUoK\nPpFkXcKW5R5F1k2yc27dyWaT+yp0xaFfOG4Xra+stvmYcGFrNvlptFxwcsBc\nd2EIXfV1yrwjNvV6waTR4DBm/dU8rGhknjymHvHz7W+HcZZ/t35TUWs7bfoV\nMqQs245P8DdO4hiikEIhjJT6koYS25Ow6FhjR7LW6VoTA1VIVpAyY7ZuEi3A\nQscsm10SKFRrFMhrYLnTto5rIu1Mnl/R+/sWFKXHDDrOGdwCVBPZBozdQxWb\n32B8JgSkTaiIgDASFpF3hR/T/2clABS6F5eCOkCPg6m1zI+xGaRtI5KlkQdj\n21kqN5JZnlRzRFzoEz8Anbf+GZZpn1S2Y1ZdXKS+7Ct8cIy8giFuCF8LnmlA\n8XJdbADhgcMU3yx3Aqiihaim/GbLlbG4xIGiNvBXk/vHMq+LLWpJNLxI3sSd\ngeXiD2gizT6jR+QCHq/Q0raDHzKu9BdNzo8ab84ORKSC79H+cdNRK+P/uu/A\nmoiw8ZTVIWpIu1L6nlZziyuKXmZ3emTqslI1lR8Np0ex7lEyIec4bSSRa6nV\nRDeo3Xkync8nGDabACDLePxC+XsWgFyqt7XPf9YOUje8uUB1ZizM2YuVupgI\nzgoQ+JtGN6T25IIMMEQUubBZAZIGZGSsANohwiUWh51TRUD3BtL0Wxv8PYda\nFjIP\r\n=qqw4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fcb8774086d8978c865c4a3af3dc432bc4ad497f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.134","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.43-renovate-eslint-config-standard-16-x-fcb8774086d8978c865c4a3af3dc432bc4ad497f_1604054482409_0.7673980124128925","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.43-renovate-non-major-8de79aa73b6bbc30bf002e4d0114154f4a04f4ee":{"name":"@balena/jellyfish-sync","version":"3.0.43-renovate-non-major-8de79aa73b6bbc30bf002e4d0114154f4a04f4ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.43-renovate-non-major-8de79aa73b6bbc30bf002e4d0114154f4a04f4ee","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87034543eaf3a3482b4e464d65fbf8a674006a98","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.43-renovate-non-major-8de79aa73b6bbc30bf002e4d0114154f4a04f4ee.tgz","fileCount":27,"integrity":"sha512-97X0bKmBVp5dEhQ1NY5f4ukt8FAcg8Hhgr7anX+2Y2f/x2SfIIBpQd6CNLqtKvdh14U8Tbpnf86S4ukzLrszlg==","signatures":[{"sig":"MEUCIESJUDWACYrGHMWuDwEXag0FIk/MQRi4Rm2VtEjzk++/AiEA03NZvuABM6+xSk3M0riYAt0yX7TxexyNdohfgeDItFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnA+vCRA9TVsSAnZWagAAPZ4P/1ATtrtreGteIulu1m71\naH+VzPS/y+VLWridcmfN6JDZK5JBdeaiTP1oLgn7TbrGzx0BWNOkQVutODzs\nHRaNtESKUHaWE/pI3+yxR/g3BOh5ygtTLgQ1Qe1gvavHr2xdZLv5QjdFI+xP\no3v7sAA8Yp37F1VtAN7Mpmep445uBqGPqxDENzqnuX6WYVRhDFVNPFEzL70v\nW3yqHDAUIf7weVO2Kby62Ev2KDBQto3ci8GWeDr4SyePEN7BJogKtu9kKvnE\ntqCwZjh0bHqRqXcMihk18GtTBVWP9GVJnBmzapUglZBjOaBb/hUcmOiKQkpq\nHimja77jA+xah86SxRAuYyqBQ2M5Xwa69bSWfgW2O95+iPg0D5O+SgcdyxtD\nT8hjwcHX8yuVTkq4/LYxBobS3HZtjgwY6Zy3cgz9u+SGO7O9HEpaKeqcaZIR\nvn0DGTPi82U5U/EF4GPY7XFQMH0CC6l8ETAUIkgGYUyed1c6suPPiFoy636G\n610BJlUKpXtbRmsOVDNJUE5WgATOaLQBR9gSHoFFzmLLVSYIKxShp7uzBCI0\nJK55TzeGNGyZG3XGwQS3b5VQC9Y0C0sa85/4VLPYPnZDeJAUkB1oCvV1Xlko\ngK32gXlxsnmIg2TAoVudMn2o7DcXeya7/c5Oky/QrsFBIPiMvovQafkoY/+c\nE3YA\r\n=s5F+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8de79aa73b6bbc30bf002e4d0114154f4a04f4ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.135","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.43-renovate-non-major-8de79aa73b6bbc30bf002e4d0114154f4a04f4ee_1604063150505_0.8316244803147876","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.43":{"name":"@balena/jellyfish-sync","version":"3.0.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.43","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0df4417d5244fee86817f5aeba5ba1d420e9d7d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.43.tgz","fileCount":27,"integrity":"sha512-mFiGdUwhF0BV5NdWiIKG+ff1rWrVbho/6ixpBHNSzMuL+8Jc4zqskPzWqtZ8MavkGrv8eqdDZTfx3Q4i98mr6w==","signatures":[{"sig":"MEYCIQCDIpLPofZaa45LdfPHFdF0RqWfhLuLF2qTUVHZmMiPugIhAPKOKatpzVBw4nP/IzLZbeONln1gZ2ncqw48h7B5nXiI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnBBxCRA9TVsSAnZWagAA91IP/2Zz40I9Wd4yS9ryBVtf\najXz+BIJiVV9lBjG4g6PkTuG3T2spUWwLw24GSoDZOj/tKFXFVizXhOI5CMk\nJXqe2SlahOSJ4ozjNSz/BYH7Y2LcYBZWEGbVb4sU+71aJYMgnpiCJXYGnYPV\n8IRf3/rSy0AI6ZcaMkHGkB9c8lZ1vBingFLnALlzixWCAdWKLJFyfMWjsM9c\nYeUeI9Wqfq6XZY8YtxmHFFdMm1CpQYFwfGatpNY78/QflxIoJa3z/HjiMdcA\nduYruUe2uOksyZ3GtwPw6TKHVq+9YBrUT62kKWqnBWmEXheVCm39f39l1ueO\nTCelE2d5pmHj/7/nMdJvmXVrt3xOtbtPVBXsuwx1vp1U5nmq9O+WlNNEOPeO\nL9RymkQ6QP7qThhA1W167urK6PYLn/B/qcnyRJIJPJHOh62bO9+X2/PL7ZKO\n4HCIpedMlgEAogZnXwcnHKzWOG9RFiw0M2qlEMNUOriyEpGfOyw8CX/3TLJU\nimUsXy53oPc2nl+CD3xSeRwRaRt6dJwBCtT6hbhFDzcxzEdmpmPwpKl6q3Fx\ndjpcLTkUUd2qWXQXym4qJPjTR7DemmK1k9occw7a7OnchJF4eDhJx1xvvT+/\n48GIe97YVBK0AJ1unqymH1Xw1AiqIHhs2fQurNvS76ZC6PXBnTb1jccg9bjT\nLlc6\r\n=LM9Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fe657ccb4eb56c6e966b2be50f9ce69342fb964d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.135","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.43_1604063345211_0.47392678293728596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.44-renovate-eslint-config-standard-16-x-c93d9b516854f89c7e1bc6bb2414a86c8ebf3267":{"name":"@balena/jellyfish-sync","version":"3.0.44-renovate-eslint-config-standard-16-x-c93d9b516854f89c7e1bc6bb2414a86c8ebf3267","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.44-renovate-eslint-config-standard-16-x-c93d9b516854f89c7e1bc6bb2414a86c8ebf3267","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ecc4cfb08f10f75ecbe0d100444d85531619d5e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.44-renovate-eslint-config-standard-16-x-c93d9b516854f89c7e1bc6bb2414a86c8ebf3267.tgz","fileCount":27,"integrity":"sha512-MSZULIzmj24jvnpgPnxXyAbdbAcYu9yvvzwDmaCe1ZxcyXKfkdWYKZpSQi75IJcCFQQJXThAQOHhVBXMiDcJCQ==","signatures":[{"sig":"MEUCIHfYjcieayquKLRnrEWVFizKvciVtOkvenffZ7i0EsRKAiEA50UIWa3jyCv7sS/VxuEiu17nOkNV8dhjSwFxGcXk/b8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnBEACRA9TVsSAnZWagAAI/UP/2A9OGxdbdytBTPI1/30\nIfNl1AOmlg3Qz62wQw8iaBJ4dQ0SyIJ1fSfnsoPVt8MeJO2GHm64+nIjLkrK\ncEjnJKEYxYo/gfFsjs7uAizKb+OGY3vnrbjY1iVO7SyokSZauOlKBGoNoT7s\nxZI0GCiozgJD7KSneFm+XOzA7jO2JVRngPPy4xezcz4qv1a36wU6GProMj4O\nExKytXsplz/YN8yWoDgI4aXZo52/zWkNuGoVdW/N9gb/z9ZIAszBD/sRTW3Y\n4oONSde9Qs60YEv4Fd0uswebSWLQwPV3RViW41w9nXfXBt7LefLYhehXvlnq\nkfSYfwMZ0Ay31RuZ+a6tMVU9BlIMn5h0tMFWvRBI2UdvvHI1pxF6xXO02BE/\nLdMQpQeYjpyY5yU4Et7sBsnbrUrsVyBSa8/RgGsJ9wS5HZ+ycENExSTSldnI\nbs7qZ8I3xDi+mFqApKlqh+tzmYYo2W3xJ1Z+11BgQ+30q3nCYPEQyIqAO0Uc\npz44Yg6VAJOUK3ReVIBYxfpcxvQktn2n6GU98mZXb8fJDXFnJnnwWk72WOEb\nQpg6s+hCqTvf1KlKgFyrgb8iJjCWvVwZD+uYk/lsfcE6errSL+Ds1Wfg8f6M\n2p5Lb6UMiDK8h/pP0ZamVKsDRphCLhc8oJqlS/3AhhxteX8waR4XS1PlldpP\nbJAl\r\n=6Zvk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c93d9b516854f89c7e1bc6bb2414a86c8ebf3267","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.135","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.0","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.44-renovate-eslint-config-standard-16-x-c93d9b516854f89c7e1bc6bb2414a86c8ebf3267_1604063487934_0.9605388661183469","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.44-renovate-non-major-5255ac89cbc5c5002fa2bfb43c2cd01238fc0225":{"name":"@balena/jellyfish-sync","version":"3.0.44-renovate-non-major-5255ac89cbc5c5002fa2bfb43c2cd01238fc0225","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.44-renovate-non-major-5255ac89cbc5c5002fa2bfb43c2cd01238fc0225","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c3724c85fd72b4148020285bea4ec7605e55a1cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.44-renovate-non-major-5255ac89cbc5c5002fa2bfb43c2cd01238fc0225.tgz","fileCount":27,"integrity":"sha512-lmb0/5K1r4MWb1XEguIOr9ubBL2k6rwiFRrKDujbtAfj5vGAnsvMuTGgIgCSfs4MCX8rUhLDZOQ85wFjCfuitg==","signatures":[{"sig":"MEUCIQCPql22pN18iNhnmILYCNltDREqVH1uZHrlcVTPZd1b9wIgY0cICs39PMlVTh48v2RpT4D4Oc7IZCBoehZo1cN95cs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnRdyCRA9TVsSAnZWagAAUvkQAIaGde7xpzMz/38hBaaV\nzex7qsWo0791JIuCzFr6lUjNGV1/cjUHRxrnYT4weUR2KS9K2nEwh0Wx1L/d\n0ARWQGWi/R2a4UaTfelqYIjs7TAvvweD4399mVU/omBhzPGqSI5bG2FMP13f\nQ0lvChuoQyA+zoBLWyyBevEQgaZcbKcUB/DgxdJT2fCm+rBZu1AIfkTFij6i\nclkxO45BLEqW/WQKf/1sy4p3czxX0hbkWljWVmMID3jJCS5ROIdXxWOY4Fe4\noQwHPJygDU6ODAMS+uaCmIh1slU8bf7wGp/9r0Q9IjOhrHnqEU9hTfZj3N6g\n25O3UzmLrEfIvIKkGbh4c0pAinipkffe+5R3nrWEgmi5kUloFSQ0KwWRpCJJ\nHpCKJ3xEOrMEWTu+fmVxGg+51ppjc0Z6yHH6JxUS6AoHLD6752Gp8LXFu7gJ\n29ILZ+f65NKw5vfPU7g+i+dW+EqyDlT0pLlbknXtNpdzS9BmUic2uZRLStKe\nWcvFn7KN50IxhyIR2HRWcBqduu4cFHTzxt59sQYGGodtIyWXSwRtJdE34cKL\npokhT585lMqUUSJC6xOf/ZVlRZ7aZlMP5TNb2qTEwPaPWgrXz5/SHIsou1vY\nzoKTizYhRzquIJsAKvU9agXwID+I+JXikMKL3bBAR08XZTT8lmqCnTKZTDGV\nAsSI\r\n=sl2s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5255ac89cbc5c5002fa2bfb43c2cd01238fc0225","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.135","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.44-renovate-non-major-5255ac89cbc5c5002fa2bfb43c2cd01238fc0225_1604130674099_0.5484463287955958","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.44":{"name":"@balena/jellyfish-sync","version":"3.0.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.44","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"db5fd49d650924d7966a9bebc31b63edc72ead33","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.44.tgz","fileCount":27,"integrity":"sha512-sSlDB5Hwmciq1aZ5crdumEtdtWjj6xf1/VAvszXzdthtvPXJP6EakLoHce+KTFrPQL354HPXuzPivIVQrPTqXQ==","signatures":[{"sig":"MEYCIQCf6Sr7hFWaF6qsKcVzX3QnDa2VFBVkRC2Dz5fNNoObyQIhALxmZ87bhb3hyPy4EXCw4qI+9dgTUDq39VW6kjdYBNZ/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnRg1CRA9TVsSAnZWagAAd1MP/3zzNn8IMtwsG84vOwtr\nGTM/gAyz1qzGvDVLvmTJW3SgcJyagBGHMrgmbhEAcF0xssH1D4L1TsSYBz7b\n/PVMIDZluyn3TlZzaqDvX4dRUHWl0viMyPhJVIdqXyf9axiK3fmItwYH/Z/R\n7FqgHABj/7SZnY1hNWoxngJtLRCVO6egzi+yH9KDESai/t7cnGNLub+xzofm\nli41Cs5HEFUL+A/koiRNYCqFMdG1yKt/xNz0XunBCkoEXrL0adPsNi2sozLo\nxbijYZFJvMjvrTugJ3NZG/bSa6SUBxy5Gc3gIdaFg2xqgdzlChONX008qgFb\namWPatb+1nqaYJPzggC5ABSYMUIjLldwksxs+Z9VBPTZJIS5M2IVrfExNZIX\nGkkdLS8cZuUsiEhyNYSvu3qpoBBLRyFy2qpCtWUOG4rcTnKCoi0rWr76Xdy/\nX7yYmbkMmnFfxm27y6Ir3xpPtK7OqFGc+sSL34a6tEPmPOB68khk1Z0h1VWk\n+uHps4w+JxKxNQpcRCbFSWDTLW4TGdrRukczGtff1/O88ZjbGCZop+bJ22P3\nqWzCH2Ami0UzUnBefCHvchhfv9bMlTQF8mFKp6IEHkMPzoDoS0EmAaFD2BYU\nzLSS4wYvGO/EufsbO5yEc229+a5yWg/pgV45T+E0NBzapDk1lz2KEyCMI/OA\nQbzo\r\n=oG5D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"17ce0bc0c742f5aae99e3de0cac70687334b6f5a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.135","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.44_1604130868686_0.1011719215889908","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.45-renovate-non-major-18f13b884c2cd576385269f8ee98e9fc8b99b360":{"name":"@balena/jellyfish-sync","version":"3.0.45-renovate-non-major-18f13b884c2cd576385269f8ee98e9fc8b99b360","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.45-renovate-non-major-18f13b884c2cd576385269f8ee98e9fc8b99b360","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1bd02eaa61f68dee85997396588439b6efc7a6c7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.45-renovate-non-major-18f13b884c2cd576385269f8ee98e9fc8b99b360.tgz","fileCount":27,"integrity":"sha512-V8liL7M9pxom9ZeYh3RwnR7TiF5M/7rzQVCtbSyVObqqabpu9YbdsUSIgbUD35RK06JervPlX4QYg2ebCdg5Sg==","signatures":[{"sig":"MEUCIQCwWHDfxXNrU+t1C6Ed0cAhjV7cbLwabhIqzeU9M5kXvAIgKe2gsu193K6LOC1dBeliADgdUnVyVNLNJ/p3ZFHceZU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSFNCRA9TVsSAnZWagAAd+0QAIfkk1+TijMtuSnVlsg7\nAr+nZfgIHm8u3x4UV0w+YEdAN4nfp+KPvnbBepKNVnBkM/0VeBQ1fjkf1FMO\nUOF7E1at+XIUFJGRetE9gB+rHGlWtHbOegbaNzHDma/0lwghuB1owEo12cjp\n/Fov4zy8D9CGO7fY8JuSO0qYqzABJVW+62zWkIPXpotjhvUST4g41cMd7fke\nIWni9xPXj6KjlfUegwsmtdEVgnjXiFwxrR/4U0DBLuT4xjRHcNV2ZQxgKTU+\nWHwGwPqKl3oPYmhn2f1EblSwAuJo4T2f4EgVaouis7apdr9VvdPVVRy8EpTX\npjib43M4HJYSvX2CVHf1RO0lwqZ0QPjhqHEfX8YMGCuBYjX/5WOX0WXxbdXt\nodwlU6XOzcZKLElhM1Ph5gVAsFw81piTIbuvK2FEBEHz5VM91IRbOrMzwRQV\nqQXzeu6HCweLvnWsSTPSSh4gB/qSvDheIPpASVyVsmQPRZoUQ6UcDTux65Fr\nLsUpRMixL5MN2kOZqxkb0jw/M9V1f+tbeFutgY1GJNRgmwka+vxOTrBU/emV\n3mLt/DjPvtuSS8/xCkCOSjWONWyFrIw9TXxjAT3afm4GsAOvJ7pSN7xiwftt\nxVe8f0pcjEv8OJTIE3YE0oBzSuA+Q5TAcPYuvKvPo+8CXiJdcuGNRKR15CIm\n3Lik\r\n=fbIk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"18f13b884c2cd576385269f8ee98e9fc8b99b360","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.136","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.45-renovate-non-major-18f13b884c2cd576385269f8ee98e9fc8b99b360_1604133197143_0.9326204187664253","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.45-renovate-eslint-config-standard-16-x-59e5f93be0227836a3d053dfe1ea02290257f7c0":{"name":"@balena/jellyfish-sync","version":"3.0.45-renovate-eslint-config-standard-16-x-59e5f93be0227836a3d053dfe1ea02290257f7c0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.45-renovate-eslint-config-standard-16-x-59e5f93be0227836a3d053dfe1ea02290257f7c0","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"295e55b9180b97fc1ab11718387badb61b8766b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.45-renovate-eslint-config-standard-16-x-59e5f93be0227836a3d053dfe1ea02290257f7c0.tgz","fileCount":27,"integrity":"sha512-Bb/3W/h9VR/n/5W3PoR6v0OFBMOMwOipaBRh5TU8/w5NqSSBe6YdM4nYUYyl/du2dHZ1tOkPFyEa2Su+gtS08g==","signatures":[{"sig":"MEUCIQDTSjKRjh1+Pp0QkhnKDCQQTibSuQNAV6DDtaORgWt7mgIgVoOAgVPaKnOTLlhHJ1XoLrGK8edmmxyhh3YdMBktig4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSF/CRA9TVsSAnZWagAA+toP/3a6sdxIj+poSXeNuI7z\nBn0KMeYX69kD+ItMt3EjMm7dC5yApoRfPLJ3eQLFBFVdjgVpHMfe3C0WEF9a\nd8/Qx+DrvokKOa8EucurMWlpN3ehR5Ow9Gbv/6WgT6x5fDSMJDIPk7J++P/7\n0WxAWu+51oVqawoptfC6ZNAZ2acJZGOp2B4EM4gXQG5Nf+3CwQ+gkcGS/ydL\nJ1OtjzlWKF86JJUDe7KJ9uQbc/0YY2pPa/6NjuTZanerOv1q8bDLQ+BAtDUh\nxGqMHHUdK0WB0Dgv3VLOka/itmyssv1Yo5QqNY4gfmogyk366RtjO6quNyVF\nmPiQClcMQpyP17eQFIC0FxcUtaAJuyE7KsuB1qb8kRU9L3guTaZvqB1KEh1D\nuOmTFZx7ppoph5MwPT1tEe4NT0xcdJTiHc6P1JFSdNk8hmTBZjJjHCxmvL8U\nAsdGJ/ArhR4db2xK+mXxBt8hsMWYSFMzsvoZBIGNJVl5xDstJGge99cgT2sR\nryFJURJdhurzNXDsiWCQIaqggzALXIjPApHtaEt13nQOjmccTOyoOCrre9TR\naDe7IIpRE2c7LkAt41/5IvuSzcRX+9eMu/FMw5qFounmaPS9FF5i54r5o/Kx\n8C0+ZNn8ZLdV8b/LQPJHOfQzXfNXhfp6Jx2goCc/8zhL6EP02+kpRgCXy5/o\nLjOv\r\n=HQd1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"59e5f93be0227836a3d053dfe1ea02290257f7c0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.135","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.45-renovate-eslint-config-standard-16-x-59e5f93be0227836a3d053dfe1ea02290257f7c0_1604133246575_0.13242787744338913","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.45":{"name":"@balena/jellyfish-sync","version":"3.0.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.45","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2aaea9eabd5959fad6c03cc43c0beb78b8b974f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.45.tgz","fileCount":27,"integrity":"sha512-KC5r1s0MqWEZhLGMHfyg44vaJfmiUW/Is/qrBWjHe/IaTINnnadgWZkczDXjTqMAUNTH1U1pb/G3g+Q+KefQqw==","signatures":[{"sig":"MEYCIQDwMAIK7BLjcoknnTkQIJURgv1E8f3UvNtc7g5wJPy1yAIhAO7832nWppdYP//F+vDOGrOpKwURTFUv+O8BU25E+70R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSIVCRA9TVsSAnZWagAAY+oP/itpHlRgL8chpkU+Y3VR\nERKVjfJhr2B4AzEcEE13GbfUNsRtjwdw3suW+cscR8ycQRgGMFtbtnEQLi6L\n8PgoGmcGpPaazOasHDyIvaSdvZ1juKaKxthbwHHTFS3yNJcU26rh4AYGSb1d\n4DS/B06ibW22BMqn8lKKwoVPbCBqS+Zxp1QIwXDbslj7X5/EzaDpA+oYjhxj\nP9O4ocWI5C33EkD+BSrdz+7Oznd4vvG749qzaQhvU6V19Ts7Qjb45A+SvjNV\ne+OzEwMivdRkXonfQ68Psterj6NTVzEzYu/EjnyTNII6qV4K6FMR6pkTScXR\nyaIoYEp+uNi0or2C+GP7+J4cQxun9ZtqDMAavOtM5MT9go5WkGPzbqQ6uLV4\nF3+Z8aIUd1I1LwYTthKJkJ/+y6JWZeO4wkwwB3rGYEY31D6PiF674v1GWLZO\nRYI6tl6I5jN87cSZA60jumS8uVvjydxcv6ucVDDKCJtHUPxRWrpeZCm9dU1E\nsXIwl+AV2au1vo+HGJ3UOq6ToIjnBc7JHTlBF4aELV3ZWqs+1+EGEE7rWxrS\no9uDLDzPffmtzyQmK3lTEHS469DXGu1MBpjlhOx9RFunn8VcFzCAQV3yV1O2\nfMkC9U8MxuNKexiNNFs4pfwlv+l6nRe7BQw2uLbXID6BpZwuLooOpDiNovi3\nd+TJ\r\n=jPf0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84a769014cd788152bc2b96a939925815988667a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.136","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.45_1604133397039_0.17026681649175868","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.46-renovate-eslint-config-standard-16-x-282762dbc11b5dfd5ea05f33855618a7e4a92e44":{"name":"@balena/jellyfish-sync","version":"3.0.46-renovate-eslint-config-standard-16-x-282762dbc11b5dfd5ea05f33855618a7e4a92e44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.46-renovate-eslint-config-standard-16-x-282762dbc11b5dfd5ea05f33855618a7e4a92e44","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fdb5ba413f94f282c456b53ad2ebbfb130703aca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.46-renovate-eslint-config-standard-16-x-282762dbc11b5dfd5ea05f33855618a7e4a92e44.tgz","fileCount":27,"integrity":"sha512-YhzFi5Thou98ilyNmJAZcD5AQfM1hImDWELd6ElOSgKOTqFecRkezkuxWmbgXPba2g/tL0Bhbv9dP7SzIeuSpw==","signatures":[{"sig":"MEYCIQDpLd8v9qP/5RFZxRKV7NFZ9dIUx/IUawtTD1O8pLuyOwIhANbPSFqblkNu5x9WZfFzQ9i2cyzcS9xAtUjTdIP36UFj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnSMuCRA9TVsSAnZWagAAvxwP/2JuFTMb+5/oOWEguthb\nFEZw1IZQEo1qOVWZ/1aEejZ91jbYkcTdhfvjb1xAIkQ4pb7IdKHtbTQTsSo2\nXBxvuzbgo8hJPgw2PjUczCiVUtQhPAukMAcBchF6/vib2HAdC+F3fJCPg0VU\n+OifHccGU3APFtxv3n1pv3oHmCK1ZDb7tNMFNiifDquy/xKN/CXq3XHlOD7c\n6ZJ+AYY8Xx5DKeybzD7LGjG2j75vCzqTlAx43He81AjoLGLTFLLPzyqIdmre\nXClLq9KBg6C17iyXwlDwpWAB3/cQwzUtRoMb7G8ryUhaM87A/6Q3kslbj7hv\nfB7bHO0fzV7j3+ZvPrnyxDFhpQq1OhZMSH7SovwfpLg84AXHf0DB/YFdE0Ca\nx3RqIaStV9bOOeI5HXz05ypfFPe2RSAkgTQp42EcyWUQOkMhU29kej/I0OsC\nCEOZdm05jO3nQYAHnipTV+nvnTCPg9sxK8jYYuDRgyByW1KIev3oDMIX0p7A\nld2c40Sk2mkaLlDBHp1xZb7tFcYGdxssXuBWFznHeTkRiJ/v5j3MvTNWP6Yk\nc9p+kHmzG+q1iU144x16pgH3HZ0Xa1QrextEYIivXThf56RPSRJ6tcL1Tsj8\nYeDmSm1dCsrVrZZpn0rtKJvyBbEXceLnMLHgisIxvdmdv45sgVTkRBeT/O9e\niFvp\r\n=+9Gs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"282762dbc11b5dfd5ea05f33855618a7e4a92e44","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.136","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.46-renovate-eslint-config-standard-16-x-282762dbc11b5dfd5ea05f33855618a7e4a92e44_1604133677837_0.3314520224014261","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.46-renovate-non-major-6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea":{"name":"@balena/jellyfish-sync","version":"3.0.46-renovate-non-major-6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.46-renovate-non-major-6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"95906afbf6d83fa7e86301d444bbadfd4fd4cd96","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.46-renovate-non-major-6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea.tgz","fileCount":27,"integrity":"sha512-NAr1kRuiCXG7U0quY1fBtsfgiTyKLCrjqpQlKKzsKEtNN6N6MsNiUo1haNQr2dCTIp3dbOCTH0QGPPKNL84dvg==","signatures":[{"sig":"MEUCID22BUF6JgOCD/N7P1kNy/grjSt1+lqfhXz9FXXaQOQSAiEAlnvFltb+lzrPm0epwWFbKNZp1kyj1iG1yjvlLk2VeL0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnT8VCRA9TVsSAnZWagAAU+UP/jMH7py25mKnsE39hxVz\nDG9FS4qogPee7vsg6JA2M+331cgf0L0r2XO0lbBpzBA1aznQdYiowCS2DGxH\nfmuH/76rFjC9xop0DeCciTiAWM1eQlr6TL7zrUkEwbV2bNC4dOjC4hYS6cp/\n701OUL9cAsLYMUU4haQV12X7YspiTxKBdLQDc5T3ugHgFsIzYofjW+6iL4Kc\n7Xu6Wci/am6eu/kKrieMkbMxLLcFfsJpUO3FbFKhA5/VcIuNmpwL2v78kDAQ\nUg7nnYuVRH1OGb8DhzRXn4SWZbQHgcBJCjFsoCoCH3vRD5hT5OT3wxzYlIIG\nKY5qf0JER/vwJ5XlUggGgPyxFWNtOzzrwcAFIMBArbITgZaTyB0eLvWTxwNh\nJZ9CYGKSDPonqljKJ5tAppGVgZCYLZZPtm7lucvBEp0K6BJeNGB1SOyFkknY\nYMiLkhlXgbd1zGmY7P/VBrNSpdsz48yVYBmJeCJsUIilSlsxJmt4FB1uiBnD\n7Of6oVa1Uxj0+0ACXKlNfT0E+s2GKWRThPMHnEd3uhmTocTcB7SaexbQ1Mp2\n6V55MPpZhSd5NfyykCMkdu3QUhYxDOOoaKDmJMIiKNtOtPxzXatc9JecwFYd\nNn6v34hQCdNzl4JvTuueL3XFRAWDK9V4RAnvYAFZC+fCJFkY5mhIgZ5naFDO\nabhn\r\n=U8pu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.46-renovate-non-major-6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea_1604140820859_0.3463177371092392","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.46":{"name":"@balena/jellyfish-sync","version":"3.0.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.46","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53cd8bceae447ea8d49cbfcdcc93582f0ce3db13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.46.tgz","fileCount":27,"integrity":"sha512-iLXQ1PFsy/2NDPQGjHJ9a8OYNqgY9/DAh02BlhTaZRuEZ5dTH2PSHtCTomS0qFf4fH/InMLdzkKgkba0nwQs9w==","signatures":[{"sig":"MEQCIFDj6zQ/pGrUybL1AR3gbn+eQQhPoBlSBytn+Fplq/MVAiBJ7pBKHOa7KHPx9m+aKgRwPYXztRWqK0WzVwTIq4MwfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnT+0CRA9TVsSAnZWagAAoqEP/jRDaHTtRMXsz5H3rdH8\nZ5G/6jw1XLQkvjRgFwVRuhXTnd51sP39exG8uF2NMIf/61Jzr1iMwALEl30F\nLsI7X0pXkJN2M2yHjM0c+NRzPmt6g5Z4eN4FdxBpeTjAU3QYW54vsNeGsKnG\nsiwl2kVwkyNnywYaprI8RdddsjoBWxoiVAfsS2WPzVVaF397vH1ADacLjAlB\nGA4RZzsgI4SkLTKykHgjifSL6l2iNiOfwO4qro1dMRaYy72YiyRFgxewTOWh\nP6WoTXp6CF+jraUIWfDZ1bK8QnuRdHCd1Rk+i6/FHuqnKvS2+PMyAmWToAOX\nMxsje+awnNjTUClWWCMf53/+nF11OYZr505dDKNWSjF7q95RQnWRQ31jxGAk\nVBbrP/cVc/TnNnF8tGO+PuWOntUKXrCmvrEv+AsVpB/LnZPFDea1+SrmAOmR\nXqdCc9CfWhrzrBdi6s/+RrkylU8zzOw+tWMzSJRkwpxxtTGduaUxot/r5YvK\nMPU0SsEv2MkDqTuVFgW2OnyHvT+J6s6Kjpa2sPAuO/z1GuohTWEv5dUsl1nG\nPQwtQmFvkJEYqqlTxNstfh2O5FfgAZAnmQSSfyVyhThCEcxedX/6eD5cxKaP\nvWWqS09nTdneVAqha+Ihw8WWihaDyaMbxqHQtYz6zp4E/Nmbxqn68wGdmSvr\n+TQ6\r\n=1uys\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3e5b92404349cbab2834b708c4f8dd11ab8f9b70","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.46_1604140979701_0.9802833778962148","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.47-renovate-eslint-config-standard-16-x-22ad744f329062468fdd5f0fdf2257a5fc833369":{"name":"@balena/jellyfish-sync","version":"3.0.47-renovate-eslint-config-standard-16-x-22ad744f329062468fdd5f0fdf2257a5fc833369","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.47-renovate-eslint-config-standard-16-x-22ad744f329062468fdd5f0fdf2257a5fc833369","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1baead03a55888955091eced9ef722420cec230f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.47-renovate-eslint-config-standard-16-x-22ad744f329062468fdd5f0fdf2257a5fc833369.tgz","fileCount":27,"integrity":"sha512-KcuuBv4xfYKHmqTp0Ma5Sc/KKCik1pYGhr4lv3RWL5MGUQslkiJFtd41YqxGznUtb/F6QkCio90R7/8KUCBCcg==","signatures":[{"sig":"MEYCIQC15UK9WM7mN3dJJ/khgz4/CexDdrGe2wl1iHS4BuHVMgIhAM1/cEXb1hLqqaLIuQUXe28uVt7csuJ8ieNIkeOeRoMU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnUB5CRA9TVsSAnZWagAAdm4QAJ9G/yDZ+x9Sd4Ymn/N2\nh7JxV/pjDhEhP0v7WwNGJjUiCxoDzM8lJQIC97vA2DO7dL9BH3n3U/HVv1GM\nBE3lxK3TSQrbNYxLZybZZdxGWOF0JV80HuhtnooSVN8LxvCywo1oTG7HQGoT\neqpJQxykUj8dgMNgzQgtc2Xsv2l0SmeiJ177xKj4wdASaFmKcVtPWpCn7lFv\nQUIl4XACGPSn0JzFmP9aeBZrODE11QJZ+QL+DdsXu2LlsH/T70432esVFdwk\nXgqy/8hqiMq4q8tS4QQ90DFmilfchykSLgwIvSGPEqnvpELE1m8bzZgXFz3I\ncN8aJSYUhvpUoBp0V3jFawygjGNw8xBkrXcHyfXXAGjYekC+mqXZT3l2BMB7\nt2P0cG2aiMlvDq9vT93d8zfQ+AxaI0jd6BWjdJhuEQeP8oWTftQrtujkQDzu\nKBl1S+tKa5diioWklGY4Rj5LvqiXcv+ZbRhQaYEWZ0nLxnVXIHzTF/oqxdOp\nlx3nMSRr+zmnyjCchSDPFfcO8R2eajwEK8o1pkNnZVb8zushA9zjK2RRSOkA\nBGZohM+qrZ7zN2j1MUdDzyy9SUKx5qpEZBRDX5+diFE3WSv3cLwRRyf+FH3A\nl2bn1GCMZxzaZ3RMiXLYlDVOHTzBtFF4zqkatHT0JEEToNJxlsxOdw6camIt\nCTgR\r\n=d24l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"22ad744f329062468fdd5f0fdf2257a5fc833369","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.47-renovate-eslint-config-standard-16-x-22ad744f329062468fdd5f0fdf2257a5fc833369_1604141176920_0.8440856404812505","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.47-renovate-non-major-180be503be5869abec2eed644a3c2d99317005cb":{"name":"@balena/jellyfish-sync","version":"3.0.47-renovate-non-major-180be503be5869abec2eed644a3c2d99317005cb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.47-renovate-non-major-180be503be5869abec2eed644a3c2d99317005cb","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4a3d4e6100ff801b71ea1b2bf1f2c1f688f2f99a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.47-renovate-non-major-180be503be5869abec2eed644a3c2d99317005cb.tgz","fileCount":27,"integrity":"sha512-gJfe9avQQtoTWvJvEI/RnnH5Ypmny51gteQp8oP0ISm9l05RguhArx/ouZonOKJYEmJAgIyKiOS7/Q2MLgCUaQ==","signatures":[{"sig":"MEUCIALUOfp63YAgwlKmtPR9FlVITlz4cdqytUxtE/AHxs+OAiEAqK+VdilguQrah2E7IsTPwwGsLKua0Lbbok/BMOp35Nc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWaXCRA9TVsSAnZWagAAErYP+gK+k+3QV28nN8a1gA/F\nPBq3psrZnMjFOoM/HK0lugJ7MfRUZ76YZQTpQudGR5enGxgdwMMLQL6Hvaf/\nt9GnaFVGDuKPaomB44xSwtOiYPeN5txhbAsa+xQcUEvOIUgd+RNCz1Dsk1M6\nLXdRs5rEDIuEvls5CJUbCL/K6pZUVF2a+AeOmAoj/s7HCFh9NpryR3HNoo8/\nlyzWxoJCH140c4961ws8UcaSZk6n2ACo3JB1Xg6hdVWQJGYLTquwAA9jc6f7\neV2GbD4QMiUzzQQqxWXS6QqQb/A0Bz1XxdytPrsVnv2VS+gLzDHm5jVHXOLH\nLwc6kidqisoIdHk8MdSnVSKkXz2HdEsPwMKwFniuU5Gem6r118fxnMiYZItB\nDqaJkZ8Qc+vCQZEwgFKea0in0JrfP4gSaA221OIszrkbSO5b/QTNURp88Equ\njgB1dN0Ls8OZXzMoh2ey00pYEebAMXT7GyMX4lX738ztmXbR2kyD0OkPAhkp\nulfespbXX7hiUOyvn7RIjql1ft9pz+dy4qWbAPbrEyhfOGiyDDRzyd+m4iRz\nIkj/HPIs/0osPmRM4+b4t5p7ldfXpubIl+Ws7YlX4ixk0TO+ANCdZF8g9SM2\nRzh3HXFUTqwBnWzbzVdHnkL6g5FYxrYnJOsB1Te3+vxutc8nPhcoNi8CaoGY\ntchV\r\n=N7cI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"180be503be5869abec2eed644a3c2d99317005cb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.47-renovate-non-major-180be503be5869abec2eed644a3c2d99317005cb_1604150935075_0.770570369842354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.47":{"name":"@balena/jellyfish-sync","version":"3.0.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.47","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"acefed95ea02aefd87444fa7389a3284d0074453","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.47.tgz","fileCount":27,"integrity":"sha512-rlbKYrX+gVtTL6qKVtAyBgdpM5Xq2x1u/p+EpJ+YeF/gds2+a4lc4jTqOjdeP/AzF8PNQsZmUz1bh7PPf5ijug==","signatures":[{"sig":"MEQCIHjjo4Jsb1zsZh0nRtaw4kcfo0PhYh63hXIXGv6LhMctAiBYfTtmlSnK89X3rSXwTvj1u7gKY98JuwMKAVQ+EIfggQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWeUCRA9TVsSAnZWagAA6qEP/A2FTCWEXisdknd5yvzl\nX8LwyfI9F/AI0FSuQo6dphTPH6YaGrzGhb4z2AuW5qQB7QJ/7YhSHtptfdBV\nLgeCi/WILQDzA0WUz5PDupXSLoNHDKpI3uLNZpkSjaNs1fchFEs6TMw1o1LJ\n83gp2uWOcZqlJhEy+nE+REfCsoRgV3IpPgIaW0flL4knV6cyDIf4+oFuhPeP\nhZDTfp5J05HwXSaIwD4j2IIy4X8KQsvbpy59Cf/T89hYwDr+qkD8s7VD9tT6\nnvCdmcXYz/Vz3/9ML8cijPUDxblW/8WNqAkTL2k3NLpwrmkXW6T63qpKz7xR\nibirvZw/T4jdezFH4OIhOXGbCa39MnUagMMpub0pS1yVgWEgCRQz2yipGWO7\ngJhMVcRpoo2NBNLH9hntjJjXbOaQ6Cepy8Z9dxCOVK5GZOSgftSV8wy2Gy57\n84hGEQLiILc74gdL7CUaZP0Ve+NbF8jFjfhpgOAOmyRTSLHbTIDKBsYulEzo\nD1Ern4n4LqgUw8Y2sMQ4qAFz5jJfzt4CySrdXjqi1Wf1Y8b/vAdwbpzL4Al+\nc2S2VNWBOrOLs6DdU4TqMgUL2FXuj115fapHdhLYYhJKsRnelqJjrplqf28O\njNfN/1tjZuxi788QK3cwDY2jdWY7hWngxUj42VqmTS/8rK06czagk6+yj4FZ\nimw+\r\n=MKqs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3938f026355e1c720b9cb90432a28d41f55c79f3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.47_1604151187950_0.40509513158694554","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.47-renovate-eslint-config-standard-16-x-affeb56bc953a1d0954918d328557a33b04ba026":{"name":"@balena/jellyfish-sync","version":"3.0.47-renovate-eslint-config-standard-16-x-affeb56bc953a1d0954918d328557a33b04ba026","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.47-renovate-eslint-config-standard-16-x-affeb56bc953a1d0954918d328557a33b04ba026","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"085f8dbd3f2d9f9dcf9e380fe569f447e25e0772","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.47-renovate-eslint-config-standard-16-x-affeb56bc953a1d0954918d328557a33b04ba026.tgz","fileCount":27,"integrity":"sha512-Ftg1EJxzCgvqBDPbkEFdVraWw3YGejCFOJOM3UpyMf/ne6o6c8QsHu62cmvXcfpQzzvGiTbcZVLL54vhZDRv7g==","signatures":[{"sig":"MEUCIBPIaF72DkqaQwkIByoNrLEJ8ITvF8c1gjG+tUVvfwqtAiEAhlebKcqtyLEi98uce8ZWZE9nksfWFYVEmxSH/7Ce9gs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWg5CRA9TVsSAnZWagAAqkoP/ig3/zwgE3dg+9gXK6aX\nVUiYEwzn6vrqOmXhAmMkeT/bISwOcJdEeo+mpJU6rgPEPK516O2ZdAAY+nT0\nactetL7YwTwj7sAt8HHLqO6T3clSo/O0BD6eyYH8NW4nm6c7nd8GnzSMAao+\n5iQc5MN6e/QxdX6jOaXQ+fsZI+IgnEPu8yuwpMsnk1fJ8TcNoUUnbclG96vU\ny00iQKyesZju5ouF3QWGOqhCmlcQxWfPVhsAzg4Kc4GIP8gxqaeEi7PzacwQ\nMZHVtGt4LxgNp84mJtgxWMztj31U0easut5Duj7LzetGGO7l2fdCpjE0PHFQ\nApMmVKd8pcx0pJ++km2meV6UlIww7io5YAN7Na65AAxfNdKuzn+w+nLPo7hn\nqwfJeJupWcz42THL7RVMKo36Tbo2mjKHQ80jZM44AaDZm+KTc8h/zfD991hP\nSzH14wwiSKm20FDgrMFuXgK8Q1xK7O/aSeB4QfHiF4FlCXTzZvo5JOzXWeLF\nXlj2b81TJcyg0BU2+6ASsgzm0+gDttJ0HxO7rsmqLS9S60POkhc9JhBgA3to\n41Y4Sd5EHPDCR2yfiRCE3eE09IKC5lyRf8V5Nsf4jbqTwmahKiCB5b3Vyzdh\nyMYNlVecNClKVZpLXBXnjFkF/9Si7u07fx7G+AX7XHarlGD4O1NEHGDuHZph\nupfb\r\n=hQ0C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"affeb56bc953a1d0954918d328557a33b04ba026","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.47-renovate-eslint-config-standard-16-x-affeb56bc953a1d0954918d328557a33b04ba026_1604151353062_0.9277624217462528","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.48-renovate-eslint-config-standard-16-x-cb61410739aedb99fb9369ab8ae521668f83e968":{"name":"@balena/jellyfish-sync","version":"3.0.48-renovate-eslint-config-standard-16-x-cb61410739aedb99fb9369ab8ae521668f83e968","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.48-renovate-eslint-config-standard-16-x-cb61410739aedb99fb9369ab8ae521668f83e968","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1596bcbbd0c6d3d4f6db07f5da7f6b64f300f403","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.48-renovate-eslint-config-standard-16-x-cb61410739aedb99fb9369ab8ae521668f83e968.tgz","fileCount":27,"integrity":"sha512-a980K07GuHlDUGx7hKaxWUL3gzY86mWFGhhWDMAqptvK1KDDOlQLspHCrBPCbsWwCPRZ0xFaoBmUXjJYrei9jg==","signatures":[{"sig":"MEUCIAa445kX5eIkcectXVv3KuJLqfwswxi4gWHasfcPRhGnAiEA5QMXOL51ZtF0MsLD7FSlHKkOcIGIsrpxzsM+2pRaBEA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWk0CRA9TVsSAnZWagAAR3UP/ijv2YDbdrrRMMHHL9Pd\nxKTOP/gPrEakTfsNMBp0XIPMmNZiHkJziKNZkBn58ocRqzYfHnm8uAAkqRmZ\nxkEZ+rCcZqlsaw7uqOaHFSgNtQkcIUTVkXbnMmgKR/s6/CIcCTDZjk/7ieX5\nqBld/orarq7kNuUFQX5JN1AP7IIVjDgEnLkXcFkLgizj8H1CVc8U3Wt9FFn2\nuqnNeOIOalMV5JyXBiLG/iLePwjPNflYVrO1Lh4/uSldWT/ciLx6xHL5BSIJ\na8h/HS2jWnKWiC8kjnS2Vx4o6CZKxb6yUTURVaf7vBBfWUXl0pF4zT0to1Nm\n5MzdwGLyhIg35mjj0qj/3SNDcLzMVH49BPiCpNFZHOtBO+Vu1eFYLTZhVBUx\nFyMhjIPAJYds9gERv1YDQZyzSyIREPW/nKJnbjbnNJK0YeTH8MCXR1lYnzET\n1/TS2pRQD6m4lvLvjmbiEYMaza+/l9VHPO+xLAvvhozYzX6R7gjbakMIoDYR\nDiyvfIvLJzXx7DlaC//T/0aV+FZsVwtSxrK9FYJfHrGP3a7pm8n74HzdsXnl\n9CsMTESxX7QqnP/9fNGAvDNqIm64ynOEVjwJcW1TAzGPNLCpruVk1XP0xP9U\n+wnqlME0FFufJngrj/feO5H1ooMez3LHc/2wv5ZeubOJvsow1/5nX/ptwUO4\nmVny\r\n=tA9D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cb61410739aedb99fb9369ab8ae521668f83e968","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.20","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.48-renovate-eslint-config-standard-16-x-cb61410739aedb99fb9369ab8ae521668f83e968_1604151603834_0.6596726081338173","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.48-renovate-non-major-41aba4c721aaa13cb9a2d4efbb81c8d251385699":{"name":"@balena/jellyfish-sync","version":"3.0.48-renovate-non-major-41aba4c721aaa13cb9a2d4efbb81c8d251385699","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.48-renovate-non-major-41aba4c721aaa13cb9a2d4efbb81c8d251385699","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a713b2b644c7c532796644459026520239764903","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.48-renovate-non-major-41aba4c721aaa13cb9a2d4efbb81c8d251385699.tgz","fileCount":27,"integrity":"sha512-9tWcI1hfhfDgij8XkfkvywBH0SiVIL/IrOiKlXAAwVzeVl0HgT64R5GUqfsynz+uU79Jco4TQgJpdr5FepCvNQ==","signatures":[{"sig":"MEUCIQCwu6EdtI7uh+tCauWfDrB+ot5CdH93/g+Iz7hyMciG8AIgYelxDxruutSQnKxAwGbJi3XTuEWzmCYwXpoXLBXTzqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWpeCRA9TVsSAnZWagAAXg8P/irUZPDG36c5fVApibWO\noayrYYgKZCMBwOQLnC7Jft8Nw4j6dmB9bp89D6A8nMZZyiy87VhkWkRWEmk6\nPbNtCqZtRtq7MQIgo7qryCKD2OU/MmlI321SsVAyrdtSZjyFUFXNUkyNsaNJ\nz0d/fbL2L6OLBdHoP6lPmay1sRUSJ13BKvFMJQ0QxE6vSLhWJ72Lx6ALQ7H6\nyoJi7WCPbZu5en5zxHtsTXyJ1XT4AYxzWjzwACdUtiShnpcVM9YDg1MH407k\nmXeah4xc02vlfNy/foZEUkTQguet0Z8EAQcm454PjIfzucxglQDlMwMx4ISO\naE3hkZlcZAN+e/PK4Ww0DeZ5SEIZRwTZBzJLNdTauiKrAxzeSCZpBV+jaoMi\nn+7xSYrb2oqdX279cptMn21k+4uzxQrfkzi0tvU8ZTmp71lUsEaWTzYrRWkF\nYrDjnu0zymLGW8MDp8kzpup7aEDNX+yRs0GZjXrqHtWIg7QS5orLIjNBABLA\nnhwmgQjNYGM+q5rlo4e1rPDcnggbW4yInPtirHVfm/A5GCwvtos3TuIyeL/H\nqVv1HIisDUFlNMMFSKZGKKr2rQ8VVeBmJn8/sRwnv5uWCeeeV6U3f/+ngtxY\nBNJLwFW1hBOh6CIPxnKQ22am6XK2R5y+OivZtQXbURNu/wu/l3E+aMhI0l8p\nGLsJ\r\n=FZU6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"41aba4c721aaa13cb9a2d4efbb81c8d251385699","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.19","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.48-renovate-non-major-41aba4c721aaa13cb9a2d4efbb81c8d251385699_1604151902427_0.3204146826774261","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.48-renovate-non-major-67d69a9f0414935e2f1675a30654e1c7436f011c":{"name":"@balena/jellyfish-sync","version":"3.0.48-renovate-non-major-67d69a9f0414935e2f1675a30654e1c7436f011c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.48-renovate-non-major-67d69a9f0414935e2f1675a30654e1c7436f011c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f058feec0b5f2682c72330d7fc4bed6861ab8ce3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.48-renovate-non-major-67d69a9f0414935e2f1675a30654e1c7436f011c.tgz","fileCount":27,"integrity":"sha512-SmKtYyA0YOlLG6QEtS8eFsX46sM4DA2N0rCx95Bu1EyK8MptVG6+tjfkbxk3N1odE+epGFxKPuu/TsCpCWRYBg==","signatures":[{"sig":"MEQCIHx3YsrHlD4U4rbYIWnaxQEHuJoPqnoIX2P0KQoGRDJJAiBVHMENCe+whcI0lXikD3vpAIjuLVh36PltsLvPZmCBwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWtnCRA9TVsSAnZWagAAktIP/3OB3pSK9wUGcV9JufSo\niKVnH4TKGF9UCwpFTUbvlTmuJZTSB9vZpfl+3NspghDrbMurBHEkvIaAWhER\nqBlo+kjSbisf8yeVLFeob/A8/sFKgP8v7MXFcggj7bbtquFjtSiRi/E7Tm9n\nqP7ZnxQCgSRsMaxNsfWaItYlUZBRAVFodSvUSMF8ycugx1osBXkfWz7WyieB\nXxBHs0/aJzkcqvIw0tBjkpCMvSOixHG7VYr7WRU3akIEdsu9XHNNAFMes5Qn\nqjSKVhYeIK+hJPUnp2KzmQvlqK9lkWTmmJox0/3tspTlg1ZRypeaRXzgB7vX\ndYkNxCzeu9TJ+QfhTtNzF1u3MmpRkD0knjn61ZcHdiPEZrJ+CbGpSY4a9Rid\nmIub3U9VlvbyTVDYo4k8GJqWU3pHIooiG1mvgGIS+x3i/NhavTmc6+yA83G5\ndR6fUEKpa8DOFnALy9h6skYd/hrS0unfBEo15OF1u+PbHOqt7VX8h+k9uUpl\nOvkOJxXIHnb6Hj67Bm6ey//LBnk/lLK7syMqq5+YICQwo5i+8uxCEICi+d9i\nMUsXcpd1sZrXe7KJrdL+TPFzGyQUiRYpzKLtylq6xYNdVCmUUD8x/Il8TNY8\nxu+b4E+c/M5hQh2WpspLQktWd4pVOf/N9fRGuPz8h8U7EXwzMPQyx76jWOUn\neaVF\r\n=/t7z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"67d69a9f0414935e2f1675a30654e1c7436f011c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.48-renovate-non-major-67d69a9f0414935e2f1675a30654e1c7436f011c_1604152166804_0.7012977649560379","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.48":{"name":"@balena/jellyfish-sync","version":"3.0.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.48","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"679d0add834381b106fc33100df08cc4980e7188","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.48.tgz","fileCount":27,"integrity":"sha512-sygeZ+v63sdEvoSWJ4sVYgoTWRgrZxGn4zCgmbdsRE+Xu1SaGaDWqD2Iwf19XDghGEbBmd1uOHzSM823JgZZCw==","signatures":[{"sig":"MEUCIDv46eETUNS4QTQEwt0wi/JuztCKj2k20B2FCuIUxV7WAiEA0bltyVeRXlw14z42VtH5dEsPrlxO3tHiYJskGfRMp/Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":262928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnWzBCRA9TVsSAnZWagAAuSUP/iAGQv7PEICglBMvEE+O\nkODvCs+xBb5yTWUl/1WAl7kN0Js0l/dxWAimTeCK4F9yMUDFvtCLurbeKvwG\nIWgB46W33RJFuHYx/vpnYedsPnMzq/UcuiaB10D4TczrpAaK6HDYhCZknyTX\nbCXCvpsfkxzlkrWunuooUEDud98PNlrwB87MToW9TX4q/O8p1awro7Kl47/S\nqM6rISZzS5wVGBMNvrU9FHVOLWuSN9y2WUbrN0+HOkTM/grkamVAJJuusVbE\nd+8Gs3OTGRWe3pjRcDgCUxV0JO1fH+fvb/I56eSKy1qdyeNkaBbCW6R6iXaV\nYBStNoJfo52+inkEfyrhULo4dZlVExhfTTrMB59GCv2QxI5PeYxKB0jYHGyw\nKLcv2IXpY214By8gJm8TdgJWuz5GhtNT2QrLJqgVocjGtNzprAH1Swz8Uvxd\nUbV3HGyplT4ThErKtzoJ9kHm5sB2ryjIarM7ZqHh9iM56eoZOiiFOszUAPes\n3nGJs0iBVUzDd3yzKnTxxO28ToLUchtYWyzdw0X3eMmSb6keQL/XoRjRanx5\nizIL/KjC32Jcb6jQOXDVS/63mPAtijSmrVwx4xAclePVa98tS8BKvHVA3CYp\nDFFoWxmMVdQbHn8NOMOjShHGg6aykpEvvndi/KPEWqmClCD1W9O+z+jIkDU1\nbyYb\r\n=LMnK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d2d1dbc05cfb8299964e10d55625c59fc49962a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.137","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.48_1604152513488_0.5613790336100137","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.49-renovate-non-major-3fd075551fe37db99b5366174f669ccc5f339414":{"name":"@balena/jellyfish-sync","version":"3.0.49-renovate-non-major-3fd075551fe37db99b5366174f669ccc5f339414","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.49-renovate-non-major-3fd075551fe37db99b5366174f669ccc5f339414","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"744d0ffcde8fa35e38c833ce0494fac2cb4e7c8e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.49-renovate-non-major-3fd075551fe37db99b5366174f669ccc5f339414.tgz","fileCount":27,"integrity":"sha512-3AEwM8Je/8OexNjbBk16pn2KR7HFJbkRbYX0D8f8SwdaNfSanJwdKiPGUXFzH/OiNokT7N+Wmf1gZkD1dxXnZg==","signatures":[{"sig":"MEYCIQCJqu5I6PsPMCX343YUuKXYNhgCsI2SGUi/LmDxEM7NugIhAOyYRjJMTBjTH4m4S8bg38xwNQ7EhdSox2s5MubaL7ys","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnXjYCRA9TVsSAnZWagAAMf0P/jpO0OAlmc6fpNlg/IOg\nm735Q5uoU7vSQXzMOIB268wuLXh7mCXK1jMCo3fw/MGxVMMwvwmK2PZoytHj\nUZRi1dmrzRtLf6QpBZOVgGV4yi0F8XZurDR9zvHv+9/t8Izol4KKlGOkneH+\ns1zYqnxmqU4JUlQQUg0Uj9LflYxs68tC2DIzuiQ1a3THRFGyBNwyzVcEw23c\nGKWiLTblW4D2NjD/PAiyPLPmjsNH2ZO4YRXIxX1jatUV3YrEFG9NBwDqH/S7\nr/O1MpS/KpFPDltYWljfH5wuzFueopKA4LSSYHNl3Cb0l96qBRUz8qQwvLQs\njNuzmjoJrYHuNZmWdlFR7Gbmd9zB76rTSVkRC5oVVJ8UN5M2B6CKo3/kpDfc\ny5hiMVtzGLpa/qiScS6s6pKeRUY8VdkLjjyDgbxIGWEN1O9D0fpSGS2/NxYN\nfZT1gn2k5ga7pMr/fCVS9oyVhqGD6ZSpcePvJiGZekbtJQWvr5FqZuNCRvXd\nxp3Vo/ECrWEMowmXqW8IL80a61htJU/uJorncN/BrRpzwpt5s4+ECFeo5Pow\ns5lBZ1IMz0vBo/8mV5DWaWbTz27d8cUHVo/THfPRrzFtdMFkyr26jqh3uJJh\n+B8Y3h+tTyg18tBADYjD56JlP/Y8evAys7aUDgL1eHyPnGa0hV3auH6V0J7L\nJJcO\r\n=QEOx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3fd075551fe37db99b5366174f669ccc5f339414","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.139","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.49-renovate-non-major-3fd075551fe37db99b5366174f669ccc5f339414_1604155608454_0.12451254663724276","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.49":{"name":"@balena/jellyfish-sync","version":"3.0.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.49","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9231c3864a2279bee85ab52c5af11d489648f582","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.49.tgz","fileCount":27,"integrity":"sha512-2A+adac/VgERTvGS1czdWOFh7KZcXC/75ls5Ws5jWkmFTSxp/qsamsEBQARtd3yUeD7ZutcujBbOal5HSv2/cQ==","signatures":[{"sig":"MEYCIQCpRGdJq5yP5e2lDCu9GOndDuYaN6JuFxD4mNLAOz3UmAIhAPhJphwFoMTy8WVDjTKzOq6vOM6o2byNWAY5dp/v7CzN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnXmOCRA9TVsSAnZWagAAC5IQAJr0Q+4biS9PrLtG6O/+\nQU/y0zF+3/7TvYbEPJwvW90DQU63ZojECAelVjDbNyQBdKmM74RRQ+guDbEM\ne1nw7dxKgEvTmtT1Hb5xFtgOabHS1YDljRPeCW8FU1ewoLj4FP+aUhO2EgB7\nqpXP8m0e/rn5UJeRQtrToSo2mkq1vVJedwsoHVWhgvbaC1+p72Z3KKaBSRu8\nHOwrGAJ+78b0dgPSyKnb2sdqi8+HkVvObY6wC6IUuki7/laxmhYb7SkxyFtG\ngeq9PWtTHCctWXx2FGmAYPnqLUdWxUdblhh10MZJgBIZHQVzlzuhRlErcuBG\nxHSZjdYcU7PSoynOsWyk7FlbGrc4+vRsqGjuzt+PkQs1IugYtsEsBv/Iz7//\nVDapHd+iLFMw5h53WQJ//rB5+eaqX3ThW3OkQDfmMfN+Zes/L4iJG1cTroPh\nG3NvyuN/JsxQ4gOBfzk8a3vrh/fU3OA+PcG1kBYzTU9STvJuZ1b0HmLnY2Xh\nj7ZZySBF1sw5rPBDlf6LlY7+QeXj/3xiIM/HJx9Y8BcubuA8XDTHJ+mXC8qV\nr7Rl/Qs06wEAEOghLNTfidoGIoNVVtcf6EFjd2V4Gow1FW+GhIgX5ug50iIm\nwdiEsxP9vbYUhn5SDmyxagti7j/VCTwrAC0LkaLgKsFxKBThlOtfTlvs+/U9\n3kqn\r\n=RBgq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"16c0bd009a30f09b28fd46190ce6d38b65437638","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.139","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.49_1604155790451_0.38238126055216193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.50-renovate-eslint-config-standard-16-x-8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e":{"name":"@balena/jellyfish-sync","version":"3.0.50-renovate-eslint-config-standard-16-x-8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.50-renovate-eslint-config-standard-16-x-8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d45171e87be4245ac0e445237f2725d055f6fa4c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.50-renovate-eslint-config-standard-16-x-8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e.tgz","fileCount":27,"integrity":"sha512-dYzIyVXRgnwx42WPTM+9kK8tbfTFKDoUdXmZM6E5u2+5o+dUNTuYImD8FsTxWn7pWVzMaNhSG840qOY09JHhOQ==","signatures":[{"sig":"MEYCIQCMB8pJiIjTqKkXjnBjqfSxKkXW5O6hP4OfubPVOCQkFgIhAKe9qtZpQ/zu1kAhi6zLdTuxfQKFH02xOZT1MefFNMgd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnXpBCRA9TVsSAnZWagAAP40QAJoGYTC/9g9kgk7xO536\nL3LTFPqXinX1eSE0HugEvI7rFHqSSJWK6pfkTwiQkeIWvcfPx/L2G7Mjn4I4\n8wRT71zfX1QWOQ7qUJXGmCMlp4ZCboRUsFpMFzaC4oOtle0+Lxm15PzTQCiw\n/CAHsdRWZAZrg03VyBuFbWwgF8DIEpoLM3q+x7eHrn0Yfi7uwqnRNzdxuNk3\nCWe1zogxe6Gdhs0uSf5BKZE3JvpBD3OjwjADv/mCFEg5HYRMZreb8jWjIo3i\nudazMkZwTfqNRHiDlzqPDr9hF8YXxKuK2LPANDczllQ3y2nTwFwwydWxX8M2\nzxNoh8f8wUHC9Soasd/doDM4BIf9sgesscksP7p7RZtApbBirkQSKI9jP+uL\nSL9DH7pXScZhJC+qHG1z0p59Um1oXUSCjsgpSEgtcHImImEtqP9dUwBzZJ+j\nsqrJZlGoC/PYeoOjbLlIYBLwG9z3b/PzGFJCLjqnJ03wnMaQZx6qPHQ4qswC\n1nWrGivxalRzDToc67gYxswmh9T90BbAgZ81WdbJyRyJcCkwKhh7/gErSl/8\nbDNuQm0s0kwZ7+BybACWPu27DWf468RQrBA7ksnLcvEgRyq7iDNumaRe9VXb\nZLlrw/X4f74VR2rU/Va7wu36SH03qAwWkdXDyAx4P4FWwQvkQgfGPyml5eEm\nOzX4\r\n=b0Gn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.139","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.50-renovate-eslint-config-standard-16-x-8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e_1604155969167_0.012141245307161874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.50-renovate-non-major-dd9ae30393b1491c10e484a187cbf586d64ca75d":{"name":"@balena/jellyfish-sync","version":"3.0.50-renovate-non-major-dd9ae30393b1491c10e484a187cbf586d64ca75d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.50-renovate-non-major-dd9ae30393b1491c10e484a187cbf586d64ca75d","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ff17087749cc9e97d5bed904c81a63fbb2059dd2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.50-renovate-non-major-dd9ae30393b1491c10e484a187cbf586d64ca75d.tgz","fileCount":27,"integrity":"sha512-AyMCSVtiJSQczZkhd8wMKavSG1fByq5gJJbNUUTXa00sh/Z6ngzZYgICwvghaLY/AW+YBnP9Bss4JvrzEZd34g==","signatures":[{"sig":"MEUCIHyetf1AyYCuhN5v4225RIoOd22DcihjkifJPYFFltmNAiEA7ujqxd8tGzri9HpxyBnAD9ScDb8r1oBW39WlzFEcZYc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnkgeCRA9TVsSAnZWagAAEaIP/jFEuagVvlDbqYecIJfH\n3CqRfSxNgVgWBD13c3Ec3jeNXrhH4uNIng+wIWbk9utw9OrCYu/mkOamp4aB\nZefgRQtIX7dNnWgU6TNhL4789jj5qs/oi9HySkxiymXXyWRm1/pIzI5qE09O\n2tg6f+AkA/Gw7FABtKtB4LP3vslVcf/keewY9fIBNU7r8nQqf0P2HbWIA0Bn\nO2WfRL7SNFlhr2jhsmCVzx2l92PEt16G0Wi5P+oJdtZaLXsLfwezuJaLGrtz\nvcUorC2U1dKgz/t0ObejS/DgdHrMbNX3xjvFPl1+whx6/RABxPfTrtFsMm+2\nD2gaSnjmWBebEFrJnT5kdF8qCfrXbKnlNrQ4ndoEoxMhDsxcmjEbJhQcQOph\nJWFGAqCj0Y5jjg3NRnUUtR2C2foYAiYq5TUfjtl5d9KIt0W7OfZR+VURgOUT\n4Z3/7pIwbv7s1IFm/UUkk6UDT39Z6bOLLXVGU+tB+/5+wJbTcHR50ezLmWnV\nfU1oqXBvOaYPa2ViukWcqVYQI/hVdTQVlHIAD1RaQYmbB0gMDEqw4obs5/Q2\nuphMSFss9ovmMoLCRWy4uZJwmOlzG6tQq8PS+7zDeKXMcBOnJQBqXL1eiAP/\nwQ5dW/VCgEJwjpX7huOD/cZ7QjhJ5KbbOmM+vIIMGpEYjcky8ckvvnHxI0ot\n4AAx\r\n=DNq0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd9ae30393b1491c10e484a187cbf586d64ca75d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.139","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.50-renovate-non-major-dd9ae30393b1491c10e484a187cbf586d64ca75d_1604208669814_0.2343061349817488","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.50":{"name":"@balena/jellyfish-sync","version":"3.0.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.50","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"186f24f1836074f3ce25fda6c142292052a3caaa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.50.tgz","fileCount":27,"integrity":"sha512-oc0TRiFvwlcSOxUAkpSwGYXtnbyPilE6213yG3GL700J15e7oZ5u3zpK5Xfw4FLk0WMspEiQPx2krgwX6vDiWw==","signatures":[{"sig":"MEUCIQCwIIQXC+3PJmyrog+kLmOqKVDki3m9U9c/JQP/ygUVjwIgJ88aLjnE8bMPx8N790X5WGVk1CmYgZs0hCvHjCUOYe4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnkk7CRA9TVsSAnZWagAAZkUP/32OdBZRWmt5YYNx3Qvl\nt0TDFZX4Twc1gjifLWikwu1x4FJR1TQnwP4VxL5CV7VCpt9ARTKHxA9fhXrh\ncmUcmsRPh4X20qbpCB7g5/GBN8oy14wMI3J7QciRwANb8dbt7ZdLSUx22LqM\n3/EnOBo7oscxvaS30vNyUNaSTHnsy6syjXrjM8bLCAv/6K8Hz88OYJmTLbd2\n9qZB+KbV0lVxFYErGeIQdPElv/5941mOySmEdo4wHnJUhdaD8LzJmJYSi2y/\n4qd36ZujjN8GIl9K1tj/YvqBJb6b0MZ3na17+CggvcgfFyj6utsJYkiQvoG0\nPJ+mr6dyFTO8wncjXJCV0yj3M3FwtyHKSkd2NEQ6ofax+ZQxgZRvEMmu2sZ5\nUXVLwRjcId8MDIChC+YQIbS1WJKelrzxfxQ/IhCmwzN3Qw55nOKfOhYsGol+\nyftDWbULhkA+yBlokGEn9HkDt/gnHdbnKKn0iDzsxnyoOQZNUTL/AaOWcILF\nGYgGY1gNNEAq9MCMpOc0/kezg37oyZJw279kizC9oGQdWxgPt8+pqsvuVIHF\nJAFKYjQApicHaxkPASvJTtJKxzNHalWddK7Ke/MdKrF47hNhfReZUk8rvMHV\ncNT4NUcqmjY9xxliRh0+az0/VaLhkVd7uowFsbT8yxqzalLBy56kKU+X05hM\nFLtG\r\n=/4BI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c3b917c4528801e82ea8b1a56d4894894edaf000","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.139","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.50_1604208954692_0.5020862308269829","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.50-renovate-eslint-config-standard-16-x-8037315c29d3e6f188fcee6a139756dc0462336b":{"name":"@balena/jellyfish-sync","version":"3.0.50-renovate-eslint-config-standard-16-x-8037315c29d3e6f188fcee6a139756dc0462336b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.50-renovate-eslint-config-standard-16-x-8037315c29d3e6f188fcee6a139756dc0462336b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4b462a1ab595e6624ebd75b1e44e873c87012b59","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.50-renovate-eslint-config-standard-16-x-8037315c29d3e6f188fcee6a139756dc0462336b.tgz","fileCount":27,"integrity":"sha512-UVobb3fxqqwaRokGvqqRXU0lDa5mlxyVFMhzMvnyj+wb0zV1FlJs8KVF3v2nTlnKHokAd17N21mkKXb/q9SgYQ==","signatures":[{"sig":"MEUCIQCMAwO9+jfjOPzEyc/cvGlbn+L/4tr6lVOORW6KfJoFWgIgbgE4+2mntx/ho2OYem/p1BDEtLG0kOPWL8hhZj1JN4s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnknmCRA9TVsSAnZWagAADXoP/0R/Y2+uz6WvtjYi1DbA\nGv0FG/xlDKLMkrPM2+J3aCmTY4lR6Wd/xYiiRinhVwZlsA+meNbe37YX6b06\nCqfPnsgLVdGXNnGanEWrEiibMB15QMk5h6bpOmQG2Om7qchTrT6HM+HHBukj\nJjSxGpZIwgeFd4qyuPTu9r+oboTYFq0M1xv2ou9dwiI4V25iqqAXBY/5wYo/\ng+BpTEEtnq6R8VL4kwU6pNGmLcHyjH9Wa6Am3FfaUxpEF7O+olE5CYGKe76s\nAlfVkvWaW7xcUSGgx5oYLXnGH0e81h+7f1YrWjZsC9FQZjsjEuxUtPYjc3E/\ngY846a0RflXqUoBFjqd0xTBFsiL4ejru9VRGvB0QnJtS5uBjNShzeL61jQVn\nfGXIN18c0iTrTxAPTWBKwF2JqvezHDXt5Pj/bvhl8QgF1uam8nqSJpBUXwr6\nirWBlfewEyH98gd+LqLB6ayk4xSI4CBMhGUvf/+WSqDI3+jfjtmoxhHGdqWO\nOUx4FuaMZG/ZZ3AIUaCS6ucxFvUMa8NgqWPj7snfq5hjufVeVGydRGikCW1j\nsZkgvgEMGyc1yJUecnNSiPILh4rJ/wIXG6PzvvwlTRFf+3va9AhVWpbI/jfa\nYi74XK31I254V/a8XYsKe4EPkxhnLIHFAq8BtqTorZLtzD7HMj02LH7hJrrB\nmfoS\r\n=TrYO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8037315c29d3e6f188fcee6a139756dc0462336b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.139","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.50-renovate-eslint-config-standard-16-x-8037315c29d3e6f188fcee6a139756dc0462336b_1604209126345_0.9353601225609594","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.51-renovate-non-major-c55a7089c5935fc3d3c920de5d3064472928122e":{"name":"@balena/jellyfish-sync","version":"3.0.51-renovate-non-major-c55a7089c5935fc3d3c920de5d3064472928122e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.51-renovate-non-major-c55a7089c5935fc3d3c920de5d3064472928122e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"08902cd16c9c7fb4119a238af87c02dd539615fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.51-renovate-non-major-c55a7089c5935fc3d3c920de5d3064472928122e.tgz","fileCount":27,"integrity":"sha512-FjCjWQ+Z0sV33NZdQ0gaUZ593aS60e6gf/2Ir0yrKXxu8tossGC8EuBNtZ8L9Qm1D8xp/lpbCiHRDBPmjJG82Q==","signatures":[{"sig":"MEYCIQD6DWLIkXX0NasDDPDsTTd5JsRNiW9gvVCAKgdvW45QPwIhALePkHVgXDU24aRzNaj2Sn2QptkNs9p7GeiGZsAWIREB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnkr6CRA9TVsSAnZWagAA+g0P/3SH21tAEfei47CquFaY\nQDtv9MjbQ9PHMl3z7ms/WNQIY6ibwJKuZP+7v+A6DjWkaJVpVXap7KYIqotp\nilo8rMWG76EXdfycBY+/4sGnEkLEyKM6XSKK60zCIEV9Z3Ic3nB1Av7sSZ3G\nGpf9D3GJxshjON2uDUmnok6hTF1CADsq2en2kwxzn9ysYtLXyHtO2d8daSYa\nIScWM5pSYUKtaBkTwvEyW+6BEE7Gi10hoggeIK/nWAZj6YD1htWhXioNn0TV\nXAk+rbsLRih8E76p1/q9y/ekY4QdINDZauyqaRN83cHURWUXS2VwCezHCd5C\n6JERSbIf+Sz7AbQAkvrgwA5LnAXrs+O921r+/ZMDzoaad7rxa/S5T+Jmgars\n5vZ434LZA5ba/A6dirA1PQNiOSpTHhZpvMtEd/rHuPvEZgTD3s9tdHBkFzop\nZ9NLzPHVC6HQJ4Q6YQu6W7CMsEvWtnUtQ9ohgOA8Z6ljERmgdyNPWQ6X6BgT\nOiGBc097636ldwZM/YtL/27Ilk9CbPxcFujTDNaVvMcwfWjKLMkTIpyDk1t+\nT7WoSjTH7nkQgOmaoQfTPGWjVHqrrz0BV83pKehXet2JggrFMsg01P8UiBXO\n2jMW3eU7RkvHUR2GStkYHRu0+RIk0DnONyMaxSBj+d5gTJx1sjA8LrZYNQo5\ni+lT\r\n=KsM4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c55a7089c5935fc3d3c920de5d3064472928122e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.140","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.51-renovate-non-major-c55a7089c5935fc3d3c920de5d3064472928122e_1604209402086_0.6685238948129311","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.51":{"name":"@balena/jellyfish-sync","version":"3.0.51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.51","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f6259bd58856550eb577317e28563f52b403d13e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.51.tgz","fileCount":27,"integrity":"sha512-+tTnHNM5U99aok1uujJc0yR6u1yfzoohmb/8Vc+JXpATavIK6/pTb6LGb7QsyawMwvIvsOF+rYqWY5buXGNvbg==","signatures":[{"sig":"MEUCIQDtrRTA96n5lkKd35W/tzL3ItVCXit50WsCdA8ElaIEjwIgSEF+MheU9SLyzi6rHR7kHxlDQUUCxx/U592/bu0P0IQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnkvTCRA9TVsSAnZWagAAj/YP/18NPoDN8Bb5dV+XzK+n\n+0gTKTYBGlYOP2iSbsKFxOZziFJYBBxVzvFhtvbpav73yG3aoQ/i4ivl+64f\nP8gMktP3dw7ktY40K5PAZDEXhuVAjRrr4/eyqtIZMXCygT3rVBXGWeDRagN2\n3eiC0RcbuIQ1CwdSArpIx4qHTFJBWqzAmqY0g2kWlQKikhM4U1At3eriQpCx\nugFhT6qTKj1hU4lL0iEFE5+1rD/1azFKqWndbZUEfoixBY9/mO1ej0ceMob0\ndnRQksBGadqsiGC73xx37DCpLI7CZRZWyVGCktxnIlYH4gTQm+eIkrKKpUQJ\nRjSSXMJHlz7VFJHjQp2Z9mzLamWGmRPyM6F7Nj7gJ31uIk/hNhm5Xdku0o39\nZM7Cai19/mrKCimCSo4sdQ07ADoM0DN7RltspR65ZLgRz+KyXZklBfuZrD9g\nvJtgd9Hkt93f7LML6+6DjBbYCArbgnle7O+zQaCoNGc0gHE177FNDpDPlWDh\nwLiu5rHShCzwQOzHmq43Ru+W0q0G5PSWfBO7CSFDNTQaP19Ir3yPXtULO5xu\nLdHEp5FGbN6ivlRLnlTkT0eP23oK5aHmphyABgZPckk3XYqIUAbT/tip9iXP\nsHIQXQ/bRFHsfp3/XD95LDek9XFv41bZ1tiVfvD8T2fmicn12EE2VkH6RTMw\n6NgJ\r\n=JEVj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6de0da96c710be70cb626116adf2cc5dfaacbcb7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.140","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.51_1604209619203_0.9662171458455788","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.52-renovate-eslint-config-standard-16-x-7dc2e70d1108a352e035bc529ada410ca2604a2c":{"name":"@balena/jellyfish-sync","version":"3.0.52-renovate-eslint-config-standard-16-x-7dc2e70d1108a352e035bc529ada410ca2604a2c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.52-renovate-eslint-config-standard-16-x-7dc2e70d1108a352e035bc529ada410ca2604a2c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"edf1d59646edec36ac71517292270af304a46ba5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.52-renovate-eslint-config-standard-16-x-7dc2e70d1108a352e035bc529ada410ca2604a2c.tgz","fileCount":27,"integrity":"sha512-oQpKJKVD2H5czewoN88JSH12qXfQPxMQxkH3KF40BZl4CvcQyj/YxFAboHv3l143TJRKBntbPYmjaQ5yRv5hVw==","signatures":[{"sig":"MEQCIAf5TY7yeQUyWP9uchpxg6aQgdxS58WKtbp5fqbXPHbsAiBx24OzaF8Lr+02mA//kqEyPAek6SlNjRXkVSWdC6uFuA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263384,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnkxNCRA9TVsSAnZWagAAnIQQAKDRRqG5/xcek6TCEMPC\nDts7iqD12eJMHp/7h+XZuOhfkkyDAzK3VdxCyb9GpkyQf7Wn2o0fPMThByUt\nbdF1YkiVfeDIFxPXTVO30IdRsF/Tu3D9x8NwCBYMQv+gcXqyb1VrhgsARN5G\n5VceUX+YOJbtVgD1kbIl0kbXFnWTwMTShm9ZBAXQlc/Wytu77QVV8LyXEjD1\nRQgBRiKzxemIlwGmrBJnOIB+9t7U23LBDrOie4tkHOUSeXg4AjRPwrHHMoLm\nY1Z/e0uavNhaMlymCNjJTp4ts2K9mbNEiNkyAIlQKjGg+ZTC3JaoHsLWOtEE\n8I99SV1Mg7uF/TMJSp3O6Ab6tO2mFzoxAdzoZR0tDLFS4DEjEg2RC+TlCA7g\nKPXsulWrdq+ZqXRuw5I4J4RNYn/52L5LYW2JT5mv4akBj5ZsWovB1v3FnZic\nsZ38y1d+HRkEdBWoO+2HKfZ0v8yPr21kaxDS0TWG+mrT8L8FLKMbbv/bBLM7\nQ4k+SpcUgjDFmPE6byMSKycoiwXv0huZh8xizJVJYQ4DDgnVfyuaF1KZ/DYI\nmXEhGFEp98lSmADyz7TRehCoQvyf3Wm8vso8kc87g1X54IzNU5wiq5/2dXaG\nw90rkC/n+kRspy9CNpYcdNN/GUobCjxa48vbh6VYsIPpkNePuqlhfAT5QJiz\n16n8\r\n=azEw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7dc2e70d1108a352e035bc529ada410ca2604a2c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.140","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.52-renovate-eslint-config-standard-16-x-7dc2e70d1108a352e035bc529ada410ca2604a2c_1604209740621_0.07731170301018975","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.52-renovate-non-major-929fc59cf24402e87071623642a367fc1b304173":{"name":"@balena/jellyfish-sync","version":"3.0.52-renovate-non-major-929fc59cf24402e87071623642a367fc1b304173","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.52-renovate-non-major-929fc59cf24402e87071623642a367fc1b304173","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"861d910ccad6a03598cd5e10fe145981d81ecb29","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.52-renovate-non-major-929fc59cf24402e87071623642a367fc1b304173.tgz","fileCount":27,"integrity":"sha512-SrShgNhceK28vhkNTz5xBeOvUB4g6IhyZD8vNUoswWR6qm6cyNsHS8b8T3NVEdWIihPoqBL85EVZUzy0OyGhrA==","signatures":[{"sig":"MEUCIC6WWv6vumXlgURafvWUiQUrkVfZ7Hl4QtALsOzdb5o5AiEAiIiWzVCIJoSwzUTBBBsLmBSrrZvLaPYjVZXybvwqa9k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnqzMCRA9TVsSAnZWagAAJ8wP/037SLrW0nTdCdS5IJ8C\n4fdz0jdjL/JRq+IQVt/jHPjwFbNwmrxIYxWhoDKTyLNPPmldElaMy286MCil\nk8+8V810dJck6jbvvCbMR229uZPRrFTXK/M/DG/tbBGSHB227ao4lfXUzyc4\nahvp1oM+fVaNcEZA/Gz5QjdNjerqMdPCNfwE+UcrgOLg+jlguPfP+Sw405m8\nXZuWeZ3wh5DEeazcRc5OFFhz8ljGgWYipsm2jS0mRppXHNWK8MfmjpjUb6i6\ncf+k9cmAerHSXnjP0DzlN2m/3B/+PZKIn1BE2nv+Smw7UMviZ8W20Uqbc6J/\nHseRBmEz29H4ORJ4h8JElI0035vcYSHbmY2u4+D1WRNlmrzzWQThRCyikS9o\nUvwECNo+RjHoMsCSo8p5yY3vYaOjgvreSus1+zCV+TnKQfcSc8MWVyDTg6D0\nnmWeBJDRiJxHYqTzlVF+uyvSlDrzCRwLdoWFHQleX2R/j66ml0iX2bmFqaM9\n0hSTc0F18374a+4w1Nqo6Okc1v/BqROv8s+/H5yc9C1w//ymIQZKnxGgyrpb\nBJauukLWnya7xearNbC96p1dQGB+RbJf7darbhLSom8Q4yr1yfAGlI5qF7It\nkQ9UgB6fk9P+i9GafTxvDdOGMwVlyuVxc+R+AaCb+CIh8p0nCbDM5jHUl6jb\n6Eg7\r\n=NMM2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"929fc59cf24402e87071623642a367fc1b304173","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.52-renovate-non-major-929fc59cf24402e87071623642a367fc1b304173_1604234444295_0.8945428895838388","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.52":{"name":"@balena/jellyfish-sync","version":"3.0.52","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.52","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1efd7ef9566d2f0cbba43132da3dab116eca1f21","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.52.tgz","fileCount":27,"integrity":"sha512-FZqAaFvKQuaQS2Y1OkuA+53yjFTnwWZ8tszz9BqzLAAdPKuX2m5mLCSFECyM+CJZiXVoepAnJOxSYZKPDstsWQ==","signatures":[{"sig":"MEYCIQD0vV1i/SgtYz26EFRKPlf3UB8R2WneDe71cjB0idC+oAIhANQcJNcnU7zgO1a8HKhv4slCWKmiOcfclWNBAXYPe9y9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnq2MCRA9TVsSAnZWagAAW3gP/RKXR2M+mItUj3DTd2iU\n0Ks4rprkx6xm6z6TmGekIa4/yq0VmtLtYthX00mXcdxyF806tXKDMLALjdqw\n2nLRU3J4vsHHw0xC3vKKYwKmwj/fkuJzahnFM2jaJQ+vECCw0Y1ltF6w4b0m\nZMfj2dO6OZQDZKosW6Hu26AkeT446AOVjOG40yto9OGCC7gT9TRqhOff3I7V\n9qCZEZNHl7AItovseIheGm0RnkFAElmHS1+n99PylnUbmuyVhGXnEMyTBa1S\nnqrwgRHzUzQo0JLjCPG8AY93o6WUvwIGjAX7aTpROC791Yo7ASTd3zoHflMQ\nwv0/KWiOrjcMGGOHwKMnPwjF+ke5dsVU163dpU9B23NvTaelRojklK3nOpkI\ni/2eiDfaKiKiY35lV6s669g1wbDXU5OL3dXZLxBUNkfOL2bI4J7YWXhNEMHG\nv261ws6cI+GKpIxfwVZBPHNG/8oPH7S9qcG9uP0v9+dzqW2lQS3TykW+auuS\nFjzhqbR9DQyRsjVvXZ2StOfGdER+6C8NVZfAy4PA90wUZTIocjWjxwzOZ6S5\nuOoljEoDWO43R8+nvIZ0Iie+b/BILPUjtPqPyhnnmEpMD6LiCGTVGVzKcw4/\nXJhu8ve/yafsQXPUHtftJ3BjDU5sB+vKg3RwviiebSMHzML7pbc4KYbEccGG\n5ys2\r\n=pmxC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf87ab860f33a0944f4fa8845eb8f04847d6461f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.52_1604234635823_0.06669751190185447","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.53-renovate-eslint-config-standard-16-x-dc233e7c619d8f14589a0290a0392bd8e6d475f8":{"name":"@balena/jellyfish-sync","version":"3.0.53-renovate-eslint-config-standard-16-x-dc233e7c619d8f14589a0290a0392bd8e6d475f8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.53-renovate-eslint-config-standard-16-x-dc233e7c619d8f14589a0290a0392bd8e6d475f8","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0aed950ba1abfa60da96b7c31299068ce0c0038f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.53-renovate-eslint-config-standard-16-x-dc233e7c619d8f14589a0290a0392bd8e6d475f8.tgz","fileCount":27,"integrity":"sha512-s+OlV+UV1Cuz0kxz79QbC8vAt/QRi+eoIj2lxO1T+u/Uwwq74vWiXcx/FuUTusB+0RJbkgiGL2uxZrvRued4iA==","signatures":[{"sig":"MEUCIFbY+JF/Oz/o9agw2oczBpca334HXrsVl4qCpmYrOY2GAiEAyks8Reb7ZTPUjYnzkUJ4gIyZsqd8tOUbZi4v1UW8M5M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnq4mCRA9TVsSAnZWagAAaEQP/RENN549GVs0XJPJXqQa\nWO0kZPRHjvmgtcYtpiHlXgOi4tzr9fLf7VMYU65TT00DtCFiXwf4/Y6mA28l\nQyP3UjG3l4sMHbKP7Wu6h11oJ4yKJbsPwSHMEWLEZXhxuW4UT3WR+Huzxy9y\nQqfOS/5P3seheRGvKuj+qqSBX1/NTsptmo4gdSA/qhmRaW0KbTsCvVkijJ9/\n0TnrCNoK2lrbzFVVXEUVUFgQSlkYReNEXeV4AvyjXvLv8fsY5CTxaPJ5MnWn\nFrYWogjiG5sKkaEI0uqe2AkglCwQ+6tEAdAbt8pttvkJ+OzykNTJfBPrgpBr\nc4/i+KIwNJAN6bxX4Odt/5heq4PVKQZEkGrIHBAjwOJwduk2c7fTWIQB1UcS\nTwYD0OUXSy8Eqbjil4y+6EWnXPuFeD2LppPKVB2n9qmflLBeN/jcmkn7Vexz\nHmYH+895JnsDb0oWZ3zsGVFtE6TzbQ96Hf/OLXQpiBVegs5cxt6jXD5+W5On\nfTMboxVP+jvcMUzXvB/finrAYBCHQGNQJorX/IHhET9YvudZbDA9pSPWHMJf\nBLrMW95hsiUmZOPRxwmNGwQEjKMLYM0APZ/65GLdjSSrLrop7jYJTgF8sUGm\nwPuAD7wpQMhRSZ5GUPvl++UQRODuvHhcW1lGP8BH6/w36sPnzwYL3ptyIeuG\nygHT\r\n=gpwl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dc233e7c619d8f14589a0290a0392bd8e6d475f8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.7","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.0","@octokit/plugin-retry":"^3.0.3","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.2","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.53-renovate-eslint-config-standard-16-x-dc233e7c619d8f14589a0290a0392bd8e6d475f8_1604234790137_0.7118204721379064","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.53-renovate-non-major-4cdab4a811eb775c4d6d124c30bf3937406afc2c":{"name":"@balena/jellyfish-sync","version":"3.0.53-renovate-non-major-4cdab4a811eb775c4d6d124c30bf3937406afc2c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.53-renovate-non-major-4cdab4a811eb775c4d6d124c30bf3937406afc2c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22a7f016ab3fda2673fb797303ccf21bdc2e0888","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.53-renovate-non-major-4cdab4a811eb775c4d6d124c30bf3937406afc2c.tgz","fileCount":27,"integrity":"sha512-lOxNOGepddK5fMH6qusypStyr4ZeeGcfA/K0uSKfPc3VGd0ZuVRgG4Yu8YzW9AfTUHTcCYVO2acZ1IwjzkxO6Q==","signatures":[{"sig":"MEYCIQDYjLkbewY+9RnlBEyi73z825/gAAQGms9WF9YvJgXGvgIhALrqdpUOE77iS4ieMiEPrzXd7/JcVJxFYpJSc7rK3JdG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnvmhCRA9TVsSAnZWagAAf3UP/2DU6vE5nq7R9RUu7fFk\nMQ/MCKhIMju6QxyjjBRcqdToKdSd1+1S0BRbd+44kd4rSF1TJgiF7NLXyKd5\n3GiZEzxMgBxl/SqHG0ZwKYWncTyBKkBOvYLo6AV/JUxoR5kBbZzca70yJz51\nPhn0AzcAr7dgnRvvLrXtW1XsHmw+REXgTxKnGgtfW28AMiPKlGt+LM47DYMW\nsoNFIGOOmM66yOoQ5oKCAKoxGpc96LPJAgAmm1coRWd3dInrKhiJ8NKs5mqV\nU6gHlpxxb9Z1CWENmtCtOUVRBecELkAaTm8iff1xgCjphqu0gHdyAWaVJe7k\nokhM2i8RF8mNPHLwaV9pPpAh4ecWcY9RP/j/pvWC+0vYSFMHmvuX9NlhRKMI\n3Jw0eAxw/J4YR126kCrXZthACJXq2evAtB9g6xyTM31chLauLN/kR+yMMget\nCJ5xdf1ebsMVttGExOa/4NBXi3NwPYLQIf+SzSNodEul8Z8sIUXcI+f/TXPr\nW1hIQ9b4uLUni4hga4n+YddlmvPHJOVqkHv1kzpx28tZiqaKGmTZTMRqcbyR\nfTm1YynnD+B2rsJBzymOghqc4XGydCrJXnP+RUk4+kjMWpAjkTCFdpffLWd2\ncDGcqgSdANfFkTa5iktQ+7A/YHlQjjzn51gYmcpKIAYyuznLG7F69l/tCQ/0\nN/uU\r\n=T/q3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4cdab4a811eb775c4d6d124c30bf3937406afc2c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.53-renovate-non-major-4cdab4a811eb775c4d6d124c30bf3937406afc2c_1604254112645_0.01242396616171959","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.53":{"name":"@balena/jellyfish-sync","version":"3.0.53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.53","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba4748fd058a40db15f456beee9f70688a15560f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.53.tgz","fileCount":27,"integrity":"sha512-BX6f/qFBcJ/HkiAbUaODdhfEpgLI9cHAfS2zAMyyKxk+lBnMZHpHqrhF7giIOXbjhaEz8KItVTsPmP7mq+IM4w==","signatures":[{"sig":"MEUCIBELmNk3i1da4vGn5pf8vs5V6HhcbRMP+zk1wjBXhrD1AiEA9RSNY5wjMEGiXXLtpX6qLIKM1w48t+EgjCh97DU+FCs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnvqJCRA9TVsSAnZWagAA5tkQAJDB/dxJNQy6Pt309bcS\nNU8YeK7kM6lp/5I3Nx/plNFCAJfiEKX2peklLezBHsuH5Yl/QjFhfOd6XYtk\ncvL2R7mpyRR1hAFkiGt6JisLk53Xtu/acTBpzBr9b/gJmRvgqct1vUV+of/r\nY8fP1pw7dXAGBe6qi/HuhZLwaW2Plvb34pN4DW4kgqrPbgIk8quJ/ltvfn92\nexYNNknIvr+d0TMmgpL+3cJxW74vykCeti2Xlc1vmROYdV/oKegGJZM/ksl8\n2MpIHQr6TifTp2Oc63Usx3aWIqINxiE+5MzwR6Fd3ss0Ll5BdeYvfsgRXgLl\nJi9Pz/8+KFtCXipwiHrVKbbG0LjcrSGFBy3IlHRuZjn0+1wW5kb/RP0O+iED\nHVPWwgR5KBc49JE+q6X3GNxVtNNiDYU5qW6k7gtBypQvSarQOAiyqf9VpNh2\nmDeDZu6OK2xtiaNVkwzh+Lpm2/7HvTiaorROPiGRe6yzPzaVilrG8v2r7105\n4+2GL0UXy8hnDcD0FfgRJiaufIa9RA8RX5BpqvSxRbPlZPauIIHQKvBUjitF\nB61haLy2rvYAeK6PGu83pLD/Uw2c2eupM3sjBhYmGhR7ihMf73SpMOsiK2h9\n3j3x3qxbJbVwkkUOFm2dEFU5pbUnOkYFjGJi9iVvMiuCGAZpQrSd0t+b6F5p\npOEp\r\n=dxft\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1efdc726f896e155790a1318b851fac81794157c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.53_1604254344909_0.058293633099901765","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.54-renovate-eslint-config-standard-16-x-798bd3d68fef82d3b037c642e49597da64c722b4":{"name":"@balena/jellyfish-sync","version":"3.0.54-renovate-eslint-config-standard-16-x-798bd3d68fef82d3b037c642e49597da64c722b4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.54-renovate-eslint-config-standard-16-x-798bd3d68fef82d3b037c642e49597da64c722b4","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c153a8001f7e925f9cb9c875553cf6d90418e7fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.54-renovate-eslint-config-standard-16-x-798bd3d68fef82d3b037c642e49597da64c722b4.tgz","fileCount":27,"integrity":"sha512-yqbsP3J1uEa49WNOU0rEIn85DENcyLOFJ4uIJaTUqFmb0hCbNad0gfopxX6N+yDqHxcWvHBE4BajBCgQo1D+Yw==","signatures":[{"sig":"MEUCIDqrpHBUHhb6Cf/nXZIGi7kptT0ud7FB+VkiHqmR9Jx9AiEAqgR6fgL9OxcFyW4l5uXA5+GyQ6L23OlJRThRL9eGvkk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfnvs1CRA9TVsSAnZWagAAJRcP/iDb5VjylCj8PI3heMsM\nw8Z0QxzyfQVR9JDRutowlyzPTQXv8SMKerC1Y7KMGecwlHF1DFjceKc7s1IT\nkZ9koML8QaaJ/rRaFoCkB0QBwB33bJXocIfae1ZfUHh3Ws2/R+D17VTdjSIb\nQORs0VA4HI1G0dix+Dwt5U2QKeO6VcjiLBMa3H7V/xiqYcHjpsG7XVxr3QmE\nEosv8PK+8HddFdylewSrzjFYzSKAa6+4LJ0ET0YHu6vzeGXEyWOaWr2rfZQK\naqDl4Nm/oqpfulitG1KbCrGrdJvfK0LJITW2+ifCwJwW8eNwq/eRtdz0hMKU\nGPNrhEMKxXpiI7NNF/pxGOnHAHV4HKhDXgMiOplbFGoHJTR9bkx7Di+Qu04U\nr1E96rKMGQQwWKfvql03nITsjnkHv2AzjCDA7fGAcg70m5oFm9gO5dJO6782\nMjQ4yeaniMiCEB5t8+qOUnSMNtmhJKvnnqaFwoYdDnk1Dx9n0ciyQcjVkSVq\n7CRJWvU12RkhV8ZE+0+FRuh9tF+uC0/RMJTtawiriY/FbeXozzUwo5fa4TpB\n7MAEgfa6qe4HiUpxSKvHf4Ev2H3EqV9bzkxfnYqOOpmA8kSPUoWknDzH0rdr\ni3ETF0XT5Nj3WTPWLUtVjnXw1V5jimoi9Tp1riiPmqjXh71JlcAqtJH2Qhrn\nq0Yg\r\n=k2nj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"798bd3d68fef82d3b037c642e49597da64c722b4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.54-renovate-eslint-config-standard-16-x-798bd3d68fef82d3b037c642e49597da64c722b4_1604254517433_0.30753252840699297","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.54-renovate-eslint-config-standard-16-x-db625e0ab1c805b627d591c0898efb5eab0f79ba":{"name":"@balena/jellyfish-sync","version":"3.0.54-renovate-eslint-config-standard-16-x-db625e0ab1c805b627d591c0898efb5eab0f79ba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.54-renovate-eslint-config-standard-16-x-db625e0ab1c805b627d591c0898efb5eab0f79ba","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd373f158f82181538ceb5fc76eed5c870eb76da","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.54-renovate-eslint-config-standard-16-x-db625e0ab1c805b627d591c0898efb5eab0f79ba.tgz","fileCount":27,"integrity":"sha512-WaeEMHVRuOmy/KrCt3NK/y2bIrb3QoL6eqSPBo2tBLiHpPJLfLsQQX0/u7qUbDZRGwp6nqDQg7eLj7xB6VmECQ==","signatures":[{"sig":"MEYCIQCHcXJ3B/MQTtoHnUX6pmqgF8hU4XneZ4vYAI48UmuWPwIhAOpvcFgYzW1rQ4HB39VyJRcjruMT8YMAgtTnQhsP3Odp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn5nKCRA9TVsSAnZWagAA7sQP/3PYw/fzf4KSGy4NSPW8\nJ/ULcTa3znW6AyCiMlXXmyv0OPFKzFlUkPGJHONQ9rFgJwRh+mSH4ozrk6/d\ndON08YOvXU4nO0BP2lxdTaxjwQysqxhugWyDr8PSeJDjPp+O99EJH++rcugs\n/tds9IInJXT3AtK8MYZ+pXD9JDjN8PSRlO3+irWVshTijJ0HnEPac502wfQI\nTQ4GzEGkCw2nuiQLXPafER4CvCyNk6QsSWzb9hebN86a9qzaaYBZ/z2DAydh\n8rKrnymXTMin7c/Teug7S/OKwexN9EXwLvISe/OgXD8Nd9WrG3l9ozjWHfVB\nX1j/oiL/PI5F4OJMxYPq7bNwG+L4dVJc6kHCPgySXwJ0mh9Nwp/RqmLhjS4W\n8wJbyDfivm6Iz5QZkcpaW5RNblIPXyIBw0qkayfXHuFwOQbWH+YU4rdEIOwg\nicI2PcqXAcN1re7xaVmTPHjYMLKOnP81o+Rlla4BFEjJKc2lSAuc/LG7ne59\nqe+rFgy96FEh8t61w3MbqRDW0E/qZo2aMII97n/saejRoViiaNlBK7y0NIQL\nGyBJPKe2P9/2A5NM8kEx+5y6Gi4NO2FVEExV7fkTHUcjU6GT2F+Gd0yQqrGL\n9+yP1TEfqDz9xmvv6La0qsaf3CzwKKiK3ViVZBVmUdLUM+t2MrDXmGA/PfKw\nMAPY\r\n=RSs+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"db625e0ab1c805b627d591c0898efb5eab0f79ba","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.54-renovate-eslint-config-standard-16-x-db625e0ab1c805b627d591c0898efb5eab0f79ba_1604295113574_0.4952810327445776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.54-renovate-non-major-eb4711602fa4bec53fc09034ad4fc092902cb001":{"name":"@balena/jellyfish-sync","version":"3.0.54-renovate-non-major-eb4711602fa4bec53fc09034ad4fc092902cb001","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.54-renovate-non-major-eb4711602fa4bec53fc09034ad4fc092902cb001","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01f06f14934b244b80b1e55f9f7e295f58cd0d7d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.54-renovate-non-major-eb4711602fa4bec53fc09034ad4fc092902cb001.tgz","fileCount":27,"integrity":"sha512-IP42BO9IMtjeKN3gkpCQnKTjlYoQTZcNApy+5XBprtKgulb//TGjcYuNkwXFhTxT6MYeLf29UNI6/Z4pTIdurg==","signatures":[{"sig":"MEUCID4FQQHOEDnyJfZpm/dgYeliAOF7u/S0VgL50N8PaVgTAiEA+NkViFhu1eQwHS5nom0RIh+ksLQyHhp7y+vp6ZAdSJM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn5n1CRA9TVsSAnZWagAAAE8P/2ayfKYZfujW5J/imqcE\n2zGNGGLcwXktU9qj5uOpjy34vvM1L+ciM8vbIBTgFsZnefIrLw+boTxrzPZ6\nHXd9MfWiiuRpKtWKcbfOEAuy1fILmsnGzt9/Fmcbu3/Gm3DavZdPjfxt5k1G\nAXZDhbTYYe7GewJb0m/KJ3KCMzcpNTevoQR8sTtnB/Nd39o4g/Hi4o16fDmp\ntFDFYLFDRuTpWKpHZkPCkAxL1EvF74jHU9Gm0sVnSPxChCQd/2+cGHkQlyaQ\nkEI18YuFiUK0U9w3jlk+Jp71USg0Bqhtitn0rp9JZcgZ7+Gf0ThHvKAPoXZP\nbI6QT6J1yjuxb5Y7MswEbnkRlFnu+vunWh/S7Hw1n1XeA6YM75XP/C7D20zF\npJPi7tXrQTnRok4n2r4MOC91jhNFDiMxahQoWkftg6xYMe126lDlQr19NGUQ\n+x5fU2Kr9utriP1ATKtLCabvBHFjPSu2SCcq2g63IliNthAP1OL1FmKOr5Hn\n+UsiU9dPIpmD8M4d7NsvOilhc9+vwOYAH5xQ/U/hCVBYTZ2LIsWd9xfW6FOd\nJSTv0v6xRoEZvXYKeOM821Zi3jTdn172Ob858Yhp5ynIkzAD7/26Cw4ZLVzn\nQxPVEYQigfsTX/vPzooGAx7DTKWhUQ3GjhLEGEd0xRoxNmcYwppzuZg0RwW4\nc60d\r\n=gs26\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eb4711602fa4bec53fc09034ad4fc092902cb001","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.143","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.54-renovate-non-major-eb4711602fa4bec53fc09034ad4fc092902cb001_1604295156831_0.8757229002561948","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.54":{"name":"@balena/jellyfish-sync","version":"3.0.54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.54","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa0a5fdad9ef626d3787be9f25539bb9a2c9dd1d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.54.tgz","fileCount":27,"integrity":"sha512-kCDYVkXyK9CWEpxffR6HnM1oWT8qmhL9WWRaRupEkt2iSzUVgDtCovQE/dTqFBAXE1f3UlB/erQxPfoe+H/Q5Q==","signatures":[{"sig":"MEUCIHseMAfzHgBmqXQjumWbVq6cF+wwXVHXmFlksKlGmS7OAiEA/0g9KJrbuA+4aDG7eKtCiuWrrY2K3HIPOq0fXGbfsFc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn5qmCRA9TVsSAnZWagAA1M8P/R3ZT2tpcS6F2NicR86c\nwctM5QvV1c8y4YaJGh/GXdfiqWrpOwytDGfL9Pvmz7+aI76wCBkVUbH2EHhV\nLbfP5YUVdzcg6oPlZVq7en3qG2hDuLxTNjCfHz6isdPXBTv+nOANqxyWXbiK\nY9uxc3f/UZPz8TXQiuLj3RPTm8vHLXLD+ZNuw4sM9ilHFY0f8eTGzBkYeqJ0\n7I0U1qyX88MQj0j8TcAdAvYqO6ghsL07uZMGkNaVQjSx2ffl7Lg67d77RMlO\nIQnE6SK17Z+m+SjRsu331EpEKhEp7yzprmwAFUAYA2QjqBgfqvD8ioOT0bXn\nS0CROrl89INsETONLq/BxmerCSU+ZxG+U5SVTQ+7+RGayz+PO3RqC1qy/tO1\n+p8xwKf54m1NrAOCH6fzDM5lHbkvLBOhsU9ghg5SlOUJD4YCEm9r5KXcDtfX\n0m0YdFZTsKhBzvyzsMKtZ61p5ZC0mhgXRuemes/NrZ8VNStJy44f7x/wePzR\ne+P5LTzToUgBEhcA8aRNxXpvjhCm7Y4CurNQguYR9gkm3ws++TB/k1Ahknnv\nHsXGQJBMsvmB82QmK+AJuJWowFUML9YaRAEYSiX1f8s0qWNZFiAtPMLF+ixh\nwThuczI6lZXrPbVUiBAcwjWsyZXRpmbJ2KHGETGSbElX5z9KosKpM+j69Vfl\n1No/\r\n=q01o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0718b00b429869dba36e9f978cb7dc1848bcabb5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.143","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.54_1604295333662_0.26427614137533695","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.55-renovate-non-major-c90e98643f7461a64561bf4aa68c2cffbfe60e36":{"name":"@balena/jellyfish-sync","version":"3.0.55-renovate-non-major-c90e98643f7461a64561bf4aa68c2cffbfe60e36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.55-renovate-non-major-c90e98643f7461a64561bf4aa68c2cffbfe60e36","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dc084b4f90df06b8797ad06156f686af33fc78f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.55-renovate-non-major-c90e98643f7461a64561bf4aa68c2cffbfe60e36.tgz","fileCount":27,"integrity":"sha512-30LqU6vblIPMjozrKBav0VP1Y4I3jFnlZCu7K6F8tLtEhLnb6ZpXPr/VUS/474GiT6vULUzF7I+HRO3AbaIYng==","signatures":[{"sig":"MEQCIC9yK7fEVhHxvNuAvH8NKoEYiQsPE2tvaCRccstAe5QGAiBhWoNcJ3AP+vFeNRJVgOQe+DLruY6k/HYoTPVVRUvsqA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263620,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn5vzCRA9TVsSAnZWagAASfQP/3RfL/Jj/ism+99wnj/O\nnVqkb0VcWp63hfGdBH9MpwXxEmb/qcp6+IDHb4P6iYsA+v/GGQfqwjycepLg\nyyT+qEwumoaQte2miNYTNvojTrC9FCdD2Bfza+Effqb2CftCB6OW9zIyVK3O\n/GTw4dZZtLN2g/DRw9iFhyMnRdLFzWfvuMxKK8B1sQ5WtKUF0GjEaDGyHR+6\nlVVLfuXm+XAVXOfa0xML9jAD6PAJpMpJK9I0NqsP1BVSaHYk01ZZS47Aot+4\nfdd1t08uFW/nQIWbjCmZNfxU1gmWpqxgT0hQqsl8X/IoBJMUAyeZh53Qe3Lb\ngcT/tSyHKjflE+5MaefU27ha2gF1ICng/DHWYJbivtt616oOsiWlJRKEP4mF\nuthRIoINvm/qkR6fqmlIcxxYFiKLs2eVoqXoDReiP26mW+SrsiviY1yFT4lM\nd3BgOQz94XpkZcfzNiYimAvq56b3ok5mRoUU0mVAbB6zauEADj+XOmWgE6r5\naffOgrD2MBto3Hrj6vKWt25h7anE/zZrH16iWPCA2DtnFu1u0aEeMTeMin6L\n6ygSpzjfHrfHPZMtgzeP/bfDoSTsUrdf+MEz9Zv//RXTMdrmV4+M/izcRs+Q\n+QlGbns+us0SvgqclCGywMVT7NcRzDwAH1yyeOIWxfIwiO8if6LHS+Xmq7dU\nZ8pE\r\n=rV6H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c90e98643f7461a64561bf4aa68c2cffbfe60e36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.144","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.55-renovate-non-major-c90e98643f7461a64561bf4aa68c2cffbfe60e36_1604295666868_0.9012925022621245","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.55":{"name":"@balena/jellyfish-sync","version":"3.0.55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.55","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"56daec9bb8afc6dcbb974a5aa0d71b66f2b2cd13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.55.tgz","fileCount":27,"integrity":"sha512-i9IBvR8PVkJZO9F5nJEb2w6h10+/6S99kkg3ul83HQH4AGUdZOs1z9xas60y3hWdiqJUYhynN5OpSTx+9qQjlA==","signatures":[{"sig":"MEQCIA77jzSduf2CDk9Z7aWhxvVYDXZAjnSuhdrhPRfBk5oQAiA3aM6AC94UduczG+sgSP9Jz3k4++jbs85YO7SmFr3MDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263560,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn5yuCRA9TVsSAnZWagAATT0P/AlVaFEPfjcdzmUTLSO6\niqc2tCIKlebnv2P43z6a+2KklVyZycDVzhYbhDdViFI83xCDTS5FvA6y5uNt\nmfN1rK7lyNUzalQGTki44VcZqHM30ehSYKFN+QoVCv1gesvp9hGQDqZiaQg7\nILioc47u8nKeYxj2+EwIEIMw8SfU7hohtNwVj//CkBHkAzFFYQUb9rfdzVLe\nYNQjOJ0XCEfrFs++VssT78ep/m6BAAtyCPac32P+6exUbGV1u9Vf4cG1RAI8\nKssSR/KrZ50dekOC3AmTtqDVMbrvBeimTeidhYaNf1fQZN1UXeDo2qOB8+ji\nhR6SYZZxvYrVR6gdh5pBYpaVnwvUWZYKcn2qNylwlrlBh6iqFMeMFN4fwl61\nGLO3YdqBzc6Z1Tb0MgaqKU4Ya5+FWNAjQUSMiXwep1pB38BviXK4+mtDmvUe\nqXXLf++qd9KwQauSyl2/jOGtiYahOqtEeVf5oTcagmOxjdvxXJpyov3dN3OF\nwNyPMFUqAKmnsCD0XcWjWuVYCmFQcx+l0o0ygox3JZNXpuxEioZOTZV31Trc\n7W/BJFq8jO5amNHQ8WbJyqOMfgdSI2J4B8ABfCLI9140u+qjNNf56sifqveV\nmikPc3TmC1D8kabOjOfqC2K6trNAyjRQVtTU56+EJF+cLODTc7TjBwXc7715\nNAOI\r\n=Fek1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"65b9eff256f499538097fffe2d135e21b795c0e8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.144","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^15.0.1","eslint-plugin-standard":"^4.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.55_1604295853951_0.15414256860110798","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.54-renovate-eslint-config-standard-16-x-22401c105e7eed31c6858aba08fe264c41c69817":{"name":"@balena/jellyfish-sync","version":"3.0.54-renovate-eslint-config-standard-16-x-22401c105e7eed31c6858aba08fe264c41c69817","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.54-renovate-eslint-config-standard-16-x-22401c105e7eed31c6858aba08fe264c41c69817","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"86f29dee804fb3f53b97d51897e1233de8f9511c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.54-renovate-eslint-config-standard-16-x-22401c105e7eed31c6858aba08fe264c41c69817.tgz","fileCount":27,"integrity":"sha512-YAYTt9hAfJauAWsaSsxOLelI+uMzAP4w0XrBgyCzkplqy34PAIdhF6SappM+kqwyYBcscN9MH2WzQfGeQjlqiw==","signatures":[{"sig":"MEUCIQCBZheKGdw5eJtLE/JRZDhhUSW9TCX51CLtP+tn8DoJ0AIgJw+FJM28z8v6Q3hp1whSmgGzjWzq6r4QKA1pLJPtrkE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn51tCRA9TVsSAnZWagAAyBsP/2aQGrciPdJJ0YTgvr0x\nKhjR8HfopjiSyMz65uF6UXjuEmovkagLy6eHr+NseF3x91X5pedCc6lt8U9o\nPKqYYLIaNXAgAjBYH7noxfc4SyGTDr3TtKownkYvcv3oRKC8MEr/Rs3pS7Qz\neuC/CEg6hjTyzp/UjxKPKClUcK7wGPMSguFjajEzSPqt29ym4qTvpoCbrnh4\nZ1ZEEtSzMRO18GCdINR3FelW9Cvybrdxl9A87gSytot8KZkQY2hN856bf9Ll\n12FqeaoceCWMbmWYIwl4LsDQRP/PCApqQPSZKIxvNUoo6Lt7jJv8Kd7OXxLH\nxIF6JYFwxw5dweVj+du0HGSib9jOcqXMCFM8sOPLSwiXWRW8H22rMWoHCQs1\nMMB5kz32AFNIz0bI9pqQuu5VabdGvdZ0EKKhebyIXxFN86ni1kUjvGLMjDJ7\n3s35F3amCp9BTGCVhB6P7WznEwvYJBqeDx1eugLK2vyk6dyNIx80DLs/gNnC\nm1mI3jPW4kc9LUlV4syRahgb7tWuJEfiRRHmcLEaFPjcFiWiNOWbNzq5DaSk\nMBl28d/K1ql9fisnnWFPnLOWhYRT6unGiDweIb+lLl7U8079yTsr6VifWZVP\n86Lstc3T73BLmStICmhuqKReDxDNXRa0SdLvxD1jpO6YgATZYcf+ESh2hb80\ngOLD\r\n=CKtv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"22401c105e7eed31c6858aba08fe264c41c69817","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.142","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.54-renovate-eslint-config-standard-16-x-22401c105e7eed31c6858aba08fe264c41c69817_1604296045445_0.06875645643542194","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.56-renovate-eslint-config-standard-16-x-ab19ea387db415812d96045b776dac41f8666bd1":{"name":"@balena/jellyfish-sync","version":"3.0.56-renovate-eslint-config-standard-16-x-ab19ea387db415812d96045b776dac41f8666bd1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.56-renovate-eslint-config-standard-16-x-ab19ea387db415812d96045b776dac41f8666bd1","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0895db5b2da7dcd5edc20c7fcb876626e173cfeb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.56-renovate-eslint-config-standard-16-x-ab19ea387db415812d96045b776dac41f8666bd1.tgz","fileCount":27,"integrity":"sha512-+bzpf/41SSVY37ZnTx5MRPtsRchqEjkbLoTthCD/EmCBkqxC9QZv31LGWX2G57FVfloJbSWj6CHL3X2dmqk7lw==","signatures":[{"sig":"MEYCIQDwxIBUM0hstl3Y8iCjeUivjg4I8n2+OpcT05ElwSWEkAIhAIB05ux7/dicoJvEWvE+IlydZJQbO5Gz9YEGWETnDCTj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn55jCRA9TVsSAnZWagAA5/gQAJaKiTJfhHd0iUY6fcZs\nNJ3Oc6Dcf+veRcB0CJPuxIa2Z4ENhDVq1/NRG4NLx+zFvo74oTOenAhcz8E0\nnMsfUR5Eh8Qg+t87V2rLfvtas/wsb4Ljq5z4TcAOJdvH4aK9b53fWAaktZ3Y\nOuFSLdhmC6TMeki0ZFj1jTd7WxYTqeRA9fK0QKs+dFAuSU4cQmaxcuIn0G9D\nVAoZ208kNkWvaKXW6h6yJWH6LU+cTVnMXxRn709rhXxtWW5A+T5jpXbwm/oz\nBJM/68AmUp08nlpQ7z+4cdzqODsBt0PDzxDrM6/nV3mSm64nkvr0NCRS6IY3\nBnlbcJP/0I8DWvieX4gHfkyt7wP8O98KXP0kt+7AmxrnsbvrMEXXEOEz+LO5\n4aJkD4tgttau2eeUN2GuNhGTqlK1YaqKtd9lqD2PHUOcW0ZsOKxXQAdmBKBc\nvWaJmhi8t9lc7A3wTpnBHn5PgJGBL7oZhK7TZ67oqWO5IT/Tf6rrj3tCcwO2\ntpEQKmb/+72gYKMemT0UuW0ya1C9UVM/RM4ulgCQVNXcEMwZSHK7KcmbGe/w\nWlILDkGwxaF8E7jOVqhVCu43QxMpZsIXtY3vhICV5I5wRzoMHyUcAf8D6oUu\ndA4Crd/1qhZozuXnwJjx82XbwEdsxuCSzHebWToBf9ZGa4h99VAem047bzVM\nifj4\r\n=uaqx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ab19ea387db415812d96045b776dac41f8666bd1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.144","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.56-renovate-eslint-config-standard-16-x-ab19ea387db415812d96045b776dac41f8666bd1_1604296291489_0.3227876766410911","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.56-renovate-eslint-config-standard-16-x-39f320b6d08724d268fcc4bccff914bbbb8234c0":{"name":"@balena/jellyfish-sync","version":"3.0.56-renovate-eslint-config-standard-16-x-39f320b6d08724d268fcc4bccff914bbbb8234c0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.56-renovate-eslint-config-standard-16-x-39f320b6d08724d268fcc4bccff914bbbb8234c0","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e22d283cf575eca09166ce37d2cb75d6c9584eb8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.56-renovate-eslint-config-standard-16-x-39f320b6d08724d268fcc4bccff914bbbb8234c0.tgz","fileCount":27,"integrity":"sha512-Ez4S2DwLlXbGudR7te5VplFzsApHolF/nzwWtRz9cDl+h9RmueRYzL/09nidhLvyUVLX73YDADo+sMs1MKNWuw==","signatures":[{"sig":"MEQCIQCfS65kAzm+cR0IiHLca6NZhbufYLZF/wm4NMr6XM5P0wIfM98hWMmB9z+e8psAQQ/GZIcg3Az9+MIo20abIHkNEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn6ErCRA9TVsSAnZWagAAciAP/0dCz0+7l/DmXv/hcKdL\nIK7jcDVFV49fwXKdtpjtje+SPRZ/TtavlXf4NlIaoDWVYVvvdW6tvbCOMQqN\ngpdV6rRwFRFCHB+TVVyiSZRO+4Vcfbf3BbIaovTIQZ76PGxGQMbmM5atypy8\ne1a26SuAPAY6DwmnNZK8PuW7C2UBzpivtHTkzjR1CqqXLZ43C15Xs2mYT+HX\nxcMMKoiV0lSM47BFKkACUAnxI+27jzVrzYOtnM2jSNkFxi/dG/XaFKcsoP2h\nu2EOoHxxN6+wdjVOrE1Oxj80dt/o8z95OUulBM/4ne0c7v8Yd67hOM+Try4W\nac0wzWUv7yfM9yVoVR9gKXDExMi2FYHyX7AbJa2jHPywhdgTVrjDTAJQ4Dej\ndbgtRIDIt8a15hXqMDxIj5XFezY8EQW1XRnSxY9ybESQL71ITFKEZHHLSv0M\n327e6MsDydtIGGOhWme/oRxgj1NyVNFDDLCWXDwO235Fhu0zFL9uEpZHL4mG\n/tdMWGwoSnumT2sCGVxMsjNDrcWSydCQ/dgOxbV9L0TNp4LFm7VD1K8GrCyt\neSH3uDoxUBYxQpNMsWg837DnjPJF2++dQwzNd802+nkHsgTzvcKOpKvDtpem\nry5oqgq9u7vZe78U8R5nPiCybG10wGyWHthIpW3V34thdJK3fVqCuvXMp4S3\ntkk4\r\n=vQZd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"39f320b6d08724d268fcc4bccff914bbbb8234c0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.144","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.56-renovate-eslint-config-standard-16-x-39f320b6d08724d268fcc4bccff914bbbb8234c0_1604297002664_0.15362504144563305","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.56-bump-eslint-config-standard-9cb58212b4f219c46e839c4bb671c5a22982341a":{"name":"@balena/jellyfish-sync","version":"3.0.56-bump-eslint-config-standard-9cb58212b4f219c46e839c4bb671c5a22982341a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.56-bump-eslint-config-standard-9cb58212b4f219c46e839c4bb671c5a22982341a","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d70a00bdbf93640e52d24a52cd6fe9a1bdb8bff9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.56-bump-eslint-config-standard-9cb58212b4f219c46e839c4bb671c5a22982341a.tgz","fileCount":27,"integrity":"sha512-+SwNzEOVIL766NErf9jydoU/QAbIVL6XMW3JlKrKdxUl9SgvSSVuJflAw8Shwa7oDunuWgzDzygrGcOa86UExw==","signatures":[{"sig":"MEUCIQD3og8SneXZ4MwazNgOqQtUJGbg1lkBoTFBHsSeotWoKAIgZrtnGli7qezNvT0i3g2ywcUCwGPcLikaRwSVQQsNVn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn6ccCRA9TVsSAnZWagAAIbcP/1KVX5mktqo6iQv44SjU\n8q0gvbMMJnwGhAxoZPqOH4J6xfPd2QgCti+4YslDiEDq0y+SRQM6IQpvnNw/\nh6KH9NemHzyY594lFcAKPtENPxR/gc6gVz7WFp4uHvBpi1BvN1LnCrTeHcy5\n9TLeVQ9YD5g813wdQs3MxA3WLKNqpyls+UyfP73Mn9DRXs4uw9yhwKvuRLZS\nYk5tiixZKYSaHrbINq5XAwe9JsseDAx0hgTB7h8sNLNU/M0Cz/On4fVMiJ65\nFkuW2ULckcAzqoz5isnnImpKcgDLLr+iybDwo9h+3wA0KMZjSE4wkeoOxZsA\npnBZkTqyME+Eltu77LvygXEgSskxiJXPjQ8T2yZhuV6dWTHBW5eVtUT7D5PR\nvoVBvC1k4+ghWjF82GwA/LibIKmN4PyiV/1CdNwlbl9CDnr3TDY8uD4owH4H\nm8MC8mMafFhl0kLrdbxdSJPebLyH6aHK5p3u3Yk8i/XUQFL3gXAjZS+y+1Ol\n0DKvxS/UDqvpH295s1Ssh8XUjoZ0A+3L7zNP6lFC/rEHkUkmR1NpNEjs9cBW\nIEXaEigT5TMqs1feY6Oy7HHEtl6X3kd1/KgGEtFxH//gUD2zm/J+kLyEOJzG\n5w/VX1+HiUVDmA3gkbeltHG/GajKbK60n6eHtqO1OAsJX3eVLuXlmVa0wOJu\ndPOW\r\n=Nhut\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9cb58212b4f219c46e839c4bb671c5a22982341a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.144","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.56-bump-eslint-config-standard-9cb58212b4f219c46e839c4bb671c5a22982341a_1604298523703_0.09413712800301277","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.56":{"name":"@balena/jellyfish-sync","version":"3.0.56","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.56","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2dc5dd75f6ec71be5becf35c9fa94f93d76d8877","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.56.tgz","fileCount":27,"integrity":"sha512-yzB4HsOkK8/Coa9EMwnyru1yNJvCs9Ejysrw3dJnNuD1gMD7bBZ/SYPpxf7hd5t99nFrdQAkIhv86XULfgcpvA==","signatures":[{"sig":"MEYCIQCabk5QEnfhK4BIJdXQDERW3pylCKsMjf6mwdhCeB9E4QIhAIAooIXfLxSdhoQ50cUxrPdPMa9r8YomgUFcNVk8juQD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn6fRCRA9TVsSAnZWagAAVPkP/1pBDhkIYzRKqM+ersR9\nZUYitzNL4jJzpavvBt84Hu+NFLMf8RwZzahoXGSYLScJhl1bp+T6DCKwrRMj\nOWIPm6O/cqmQLhmCsMBD3XLJEciyRvdm1TCCqtbrd8DnpKlfnSwKdPx8rubj\nT31Wkv1Hg4wr4YfZzN2BRQbyUqSNtKXJrQryzIBMrrntWzHow/fMvEhz4Jxo\nT7qCEfWkoEHLazagAXJAeQV98jUnDvyZ+prf11qNJuyeeYngH1XzpKebdMXg\nKyCVcxBDbdpD81NgZFWnoVrvkkVOIBkXWbtKG1Qs5yiPr3J0Eco3nho6D+xL\nEXbb6kMRCEcwnDf3RIFA5FyKtQeGV4jk/0ETKVep+M5GoMB5cLJoNDu/ro26\ni8GXuOZTN1nOwUFi3wc/GsQOJPlllkdVdwFO+LLgu3qXQEX+XC4kOUgdxaq5\njVnK3YfpJPz9hcqP+65N3imdjXGDiX2/+km2xbIa57SillVpsRsfB4ZYfrfm\nRB70l+WO87VuhBz7G3BR8DEYkGhOyPj6EpDcWtzvlbxb5ydWW01ZOYhAXZJm\n8ZonanvY38g6uw3MC3V+IBXTzb71eXTIKl8vCoN5tJMDv3kHzst8C0M9Xnlj\nomxuPubsA7hwwMF2O9SS7TZiPpZtMNqJbq5ElT+HAD6cpQfdmhwKikrzACzR\nbjtT\r\n=9pBU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3efed93eaf1f4e84ff1eb782211eb7b4db534a85","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.144","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.56_1604298704483_0.47536012759560076","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.57-renovate-non-major-3324d8415018574bcb31f3c15822e80a7326aafa":{"name":"@balena/jellyfish-sync","version":"3.0.57-renovate-non-major-3324d8415018574bcb31f3c15822e80a7326aafa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.57-renovate-non-major-3324d8415018574bcb31f3c15822e80a7326aafa","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"400c85dc54e3a6ecc7ea96ac9aac7da7c9fe601d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.57-renovate-non-major-3324d8415018574bcb31f3c15822e80a7326aafa.tgz","fileCount":27,"integrity":"sha512-DUXOABqchCDpZ8KCU6gWA5x/czqJjE/SPauWS7CJmjf5J5TapaddayWdhjBTbp/ZPtJqosS1uqN+mxiko26l8Q==","signatures":[{"sig":"MEQCIHk9Hvi7Op2TllUNqxzeVwBG6+hF0Ptsf7sZoAQ/lCcSAiBubtMSnUPcDvfBqGSaZD3HEz4mI1SYx+A9j6IMzVBoQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn8evCRA9TVsSAnZWagAAOmoP/1q8c3YXpH/n6RN/5g/5\nzNMFrE1KdoVCbcyOvr+P4siSj/AtJ18lZ6DGR94ywBlKtA1ieu6Ibs48UNT1\n8SoY8lo7eRv76HuXAbrdNeVJDmv73krwXhEzJHH/Ok2VEXeTlXtXbggVgqZT\nHRuNcYwdGEYoIGu5GAhkCAc6piO5nDpDlNnxfvFuoW4Sh710PcqY7t1dGiw2\n4h6SRYDHLyZHr/ByCBzl+Q+07br/BxgGGi/ghiEYZ5rZvkRPL3tQSzGXGQkM\nQDgUu9iLB1fxNgfGi20Wgips3+3cgAm81oFtsTRhWYZDR246CxZnoTIbgCPc\nOMwkhDO7ZU6AA4GZec6W7XSo07ltiu2FJVhuTbAkT5cwJep/p9B6aByfCvyT\nLoaewTfqMax6oKIL6HZmojpMGDgQEO9mqpffoEpDRiyJ1r3hto3QhRLmq5JB\nzDeSH3wBC3SXbMLxUkYsbEZOu3BXIgzVMzwF9OwPqWFPRokHdXzi9ecrTuzb\nWIqyA0ywEokSSsHGT2ytT9Y3pXko6qNj9l3+ETH78RWKJ53i1fLFWD4ltsLj\nSvxt2u+uvwFSOKF5RU7qFFAevI0heXzWYaY+5TNInVb268zpGfwkN5d//8F5\nSYYXyrot/ka3AQF0UniPxPku9jyO3HiVdI4jBVkAX2uymUgJYXEVOx+vzcYE\nejfM\r\n=CCVj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3324d8415018574bcb31f3c15822e80a7326aafa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.145","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.57-renovate-non-major-3324d8415018574bcb31f3c15822e80a7326aafa_1604306862783_0.7287618553352451","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.57":{"name":"@balena/jellyfish-sync","version":"3.0.57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.57","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c334ef578b30362f23f0465d38118bc169752248","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.57.tgz","fileCount":27,"integrity":"sha512-Zu6sOEWvxlGJCYNB00prwJFleEcAtGQmqXfyQz17ItiJKmdYETIouZDiQOFjTlwEDl22uOCzARrlGZGkdQ0r6g==","signatures":[{"sig":"MEQCIDZJZGsdvMVSeiuhu2hSuaH1rNsK3Y4xup8tchCLFxgRAiAkVOPijqKoooPIrzYtMhtM4O69t/kZnLP9EPhKP6oRGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfn8h2CRA9TVsSAnZWagAABGwP/0bpFPV96OKE59VyKzTw\nMq++8PuBr8fnnGwbwQYlnq6YPiEt3Pkj4TqKPinmbmD7MmJXh7b8q+EKOMV/\nnd14NcGwq3+n8Ch163P0+PDhjrhnawSNrMsdOQ68naAFs8AsAIuADq+6ZSE+\nHnebr3uruGk3z5nJg3OPrlwrDmNSjY6LR9LCxoM2kE0LQ7jH738N2ll8C1PF\nftqut/lPiNirgJFDh/qqKyPXNoIx/BwYSnHR9DPG23ClDl9c8xETj+frjyFJ\ncNVrG22UNe9LqHU2cDugIkEjmiR9TfpnEj2N89qZd01MIbJEtQFkg82Zm1Co\nXy58fuV60eF08fgxgL5oCEPTT6P7KA/Amu1oJB5ut1/8FHzPqaMVUBiloZfA\n4ZvR0LJ1yQLTFX+lx8YQdsgi7Z3pqJAuU2Q7O7TZp33CDPABhGsHM1WSRArp\nxnAXf6We0uQOO6etlP8jpJktH5gNutLS2s0traSR9quV6E70Y9K5apNWziRs\nZE37Rb6UHDNetDjes68U4LjXSD7FDzqsk/ZAN7e4Wwp61gdZkCn0UPUMEQZf\nUAsNlGH3imC0+zNjTQ9iJgxcKdOhKuiGT3Uf1fU+pVuDb37xcROQB81tXHxf\n5s0XemBcXxz+PjVWQZsvoGwh7l53/nGR51vH66EH+07OrIrKbTruY3riysVl\nFX4U\r\n=LMTk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"26b3a593da8dbb55048477329035bafdd5ac6c56","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.20","@balena/jellyfish-metrics":"^0.0.145","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.57_1604307062153_0.6897548602470458","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.58-renovate-non-major-2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c":{"name":"@balena/jellyfish-sync","version":"3.0.58-renovate-non-major-2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.58-renovate-non-major-2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8aa29da9afe33400570560b444d4de690f2036f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.58-renovate-non-major-2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c.tgz","fileCount":27,"integrity":"sha512-xMWToqNkxm/74rgHhC+RQJ1/w/V2rTvp7RamjS/9sUq/BcKvMns+I8pmbhmAMz3ifsQwIc46UI1EwmlD5d70KQ==","signatures":[{"sig":"MEYCIQDFbgkt+1maokoPJVEnL5B8foIpMYokMm8uM27owTFfiQIhAIG88ym4Gljf1VaKBqKhIoupVWjNlvnuYUs+KQqf6hQK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoBytCRA9TVsSAnZWagAAsYkP/3wid6FJMclk1vCzF6ow\nBJ++S5YrvDuO1xBlqf2SDj3WKRZDItl7xyryAkMV+phvkJ7FlWAMRm+Ut2j7\njJ2HPsS6VBNME+ug0pxQTCgRDJN4UD//76lwRh+siqTM4hMZB0Rtb1bZLxg9\nbD3GqPCyyy1sRuT73EP1UVf4VJUyw1i0MPVGAX4PfW2b2dRaoSbN9QfRYYkX\nI/Cg/0yeIoTOZBm25Q1J+jMmJQbFIri8wKUsWAnGQUkmXqpGCRiLxZQYEu6f\nhizKwnSoZ0vU3aCbnEm5zE2iSA0mVZdH18Kry+ElVhqQZp/02WKP/3jmwK+t\n6biGJrgKsdcWibOT2shXqA3LXZ1biF8LR0shIxIvTlJC2p6+xRYsbLK5T2EL\nF5KXuqYOl0oAa+2aJB636fihbBaCk9M0bPm3DPJ041CZoIcvQu8V2HisrIpE\nL3Kk0rJebDwy2jupYDWmB+1f7/idgZ8DrS5BqAEEYjw4N3TEHzbS/prjegvy\nrpTYK/MZudoCs5gsq5K4IUMW07vPalaJZRHZO6V9nmfx9ysVUeqqyRCiJmlQ\nNuI8Z+Rv+PW1JBzrxpsDCAjsEFugh8RUS933QRaOlDGqpdaL2nby7sQbqg5j\nJ4/Gy9G+yAmnkD+ukGPO3pQYGEJ9dj7pTxEE9dzvs/3CrpOzI4/LkghXPsKO\nRjri\r\n=hEe6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.145","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.58-renovate-non-major-2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c_1604328620848_0.4247252714098546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.58":{"name":"@balena/jellyfish-sync","version":"3.0.58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.58","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72f926e257d108625c9499c7675b91859eacc85f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.58.tgz","fileCount":27,"integrity":"sha512-RRHNidQiv9aEGyh/Aqj8JGbHFJoCI9kDXHKPvxuz+V9bbT9qnQAr0IvPKS/JEKME5NKJwIL+eB6hVb9vKbp0GQ==","signatures":[{"sig":"MEUCIQCRYP1yUFzpNFvsshz4/KF+kgbki5QkWd/A8Umx9QZp0gIgPjoWZp0LBp1FAU6UVwHAQqMtNXcPsuQs2N46XGkvOOU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoB2TCRA9TVsSAnZWagAAyUYP/RASl2uO8OX47Leed6pw\nDn4ImpXUnPI1Bq75BF2ER6ZSVL2dKM2p7lDqmBXd83mmOw5AFKoE7OCdKbfx\n/VvNdkPzoPvNmk/f9fEBDM/X8s1cpQ2ZOc6VdLkxeHd85V5xrYCeFbvPyvzY\nr1qEzCPWJsx3pgpeZFt21b+xxamwhEQjN4ms8yZ868we966E74f8Y7ZLLvTp\nxfkmTWxGfirxNF0sW+vkEfMnQAYHhKTsxg/Huc5LhaE5xE6JN6n7tozgOJOL\nHiGdBL/oNVBdtR9286OICOauwcnzddVyWMBUbLvOEPH4uUUhSFlifiHMDVaS\n0QeMB+0nYZSxrWhQ52NqA45hrFa7AY08cWJ9Hz+D02CyGPrB9IMM1JhhIoNX\nYsDfhGs0i641YekpaTnbN0fqKqpBYteNk8LFzW0wbVnx3tQFVLlnYQEwRwyK\nLQmJ7L3rCBzaAuJa4W+bb5pysXUIa384y4M6RGPXfTNDcvxnkd0vwt7GrNNy\na7g0Biu3GVyn3A/3W+Uou0tEHkC5uKbgVMeSb2BoesPwSlucmrtIvtM3yJmE\nsVB4+38ADcueRoD6IeJX6UI5BR0a2TV1P9DRsv8Eyae9r6LI1JPEEQOam5YA\nonyq2xErHVYZ9WoBFHoakvxER5ahAGLY47kkO2DSEKpXK8yWhwkWOexcwWVG\nanYQ\r\n=mKs4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fdf26b40b2278148027e5e030c1f73b5ed6c6de8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.21","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.145","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.58_1604328850846_0.6436926275113919","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.59-renovate-non-major-f821592b048f1a58a40f62fa93daadaa6c6a0453":{"name":"@balena/jellyfish-sync","version":"3.0.59-renovate-non-major-f821592b048f1a58a40f62fa93daadaa6c6a0453","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.59-renovate-non-major-f821592b048f1a58a40f62fa93daadaa6c6a0453","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0d88f6db1d0f025202bf64e220210eb3af639162","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.59-renovate-non-major-f821592b048f1a58a40f62fa93daadaa6c6a0453.tgz","fileCount":27,"integrity":"sha512-M9QV/qxVScVFvorBTrRDv+X5vcChEvG34/+7+55+rwbWkdhJGcHuInDJZ96rT7MTTTIld/1M1W/xTzd8m0T+5w==","signatures":[{"sig":"MEUCIQDGi4wpcqvL30Yzlc7Ku28FfcNHO0eSmmYRuc0s7XqkjgIgRaRqNZoRdLB1XGZ3sUFKFT48smBxPJSdj5XeRnxVo8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoDEmCRA9TVsSAnZWagAAuycP/26twnEG4eraLMeP05A/\nSkY57SGhqRggD2kZhz8S3oja7JVxQX/RUSUa782JF8T+fX05m93A9ZH4aP8t\nKzZcJELutFscAaj2N4OnucOO0CYW4HaWvUkC0TISSotf0F0s0xEKLUNwUi+9\nCMiANlE40dsydgev+eYpQqffq+G2COB54YAUnl5LYJmOs4DxW3U6GpBR+Lyd\nY7IgxzNwJGyj3wIGc1+1oZ9zaxTnGaWC3bsUgIoRCp5Llxzbt6MR6rsEMWzh\n8HMe1DPMH28o1it1VdtiF7XoSYNv3cde9JTQ/NUXltghVsocfg8TLxOwnE8+\nGPGHZbdp3orIBL+GWNX7l6psfwvyFqDDH4xf6UW72kzNBKAK5+KqdDkeWx8m\nxjqH0QUDV6Xh0EdTpGKGRiklRmAdkK4ARYMYwzJbONTd8LQh5lieIxa970o1\ni4amQni3+3mfZ/pZqXjAcDFn0g8Zj6T4rs8w+nM4w4iUiJ6jX0DqaUESQM3t\n9swPYgGrXIZNsv8B/UStAl/eywi6QuXS9pm3LMZUGXawIjBQRggNBnvXFlRA\ny2lUQu8KQ9VEkUspEBumIZyK3CE7/Mh81jo1ARbJlJFYQghvY4+qT5C3L4z4\n9+iIOPbKV9FA1PPfvmNuffBiQXJaFaAWjaJ4UQOJMbGPOh25NmCiMCX6jB+y\nvbey\r\n=si81\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f821592b048f1a58a40f62fa93daadaa6c6a0453","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.22","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.145","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.59-renovate-non-major-f821592b048f1a58a40f62fa93daadaa6c6a0453_1604333862105_0.16704278692932495","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.59":{"name":"@balena/jellyfish-sync","version":"3.0.59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.59","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e2ae1732480f11d9cc5bf1d1068e5a0bd0310651","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.59.tgz","fileCount":27,"integrity":"sha512-qNQC7PvLhYXiFVW3ZxNHDbRLFFW0i/K80vN7pwgjVnqiKlUo+VOethgqFYoH3CuUBwrW8/gyR0Q/sQN+2POYqQ==","signatures":[{"sig":"MEQCICn/AjkUvJJe6MiZe5RnPC/2N4M8NHdTGIh0tMiSjJhTAiA/CvkHp1OQe82YmhWrdKNNIiENXEgt8yE84k5SUN783w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":263906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoDHfCRA9TVsSAnZWagAAQxMP/0G+XZjraP2sbGfZ4M0y\nNtj/gp02k4bgtHbKt98oisZguUjBrs9hhM72fN9HzllyaifmjlY+poGQOTF9\nQZ1Sw/BbHWbrPTtDaCy6Pet8/MXRcq3bEw3yflsTeqDTE9n/m8uGhzzWN7am\ncw4CofyjjbZed7Y94M/bpAav+zxEYn0BPHd68uSYSpeDl/fvP5OPvX3ov/+N\nlSz3giF8rIn20rDD8N62tLPyIb6Trr4tixQPeuBonBEtfDykcWIKGFhJ4V7R\n65xwDy74ajCU9zi+l3P8Hl5HsDtZZ6A0nuAdx+kG7yrSkZmEJlVd/RVwTjdQ\nRzbP2sEzEx9a2UBrbvGyDOYx7Iqd5kJDZOvFo+T8Kny8kbp2dquNopG+bxWY\nHq9CXyg9aumL91ap+sBD8idQWd/WyoQj7sfNRpppPYomAhzO6sAmiZJcS+Tl\nvzRdGAZHel41ukziiV+cHwyf6hwoyyofAyoGs2cjb17T+LchMxGKHDuSguNA\nFzLKagtqagNZ46LLilXfXMXLiwfAkuXSKkdDEwNuIs4mSJZq7Ub3gGNKm2Go\n/Jp259JbcQRWkSjHirsVUaeeYVmBUu5Ltq/ta/1nL6ZmZyOdRpEnfv8J/NOH\nVh46tX2neSV0tZbU1tqiJrReVeuFPWB1gOVkHlxmr+809GSud7xp6d3xXBhz\nPS0E\r\n=9r6K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c85ad5f53c231f9a14dbf216ce0d934859f10d1c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.22","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.145","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.59_1604334046633_0.038726598787682365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.60-renovate-non-major-e8c9e762200966d462618bf77a897bc07dd1cb4a":{"name":"@balena/jellyfish-sync","version":"3.0.60-renovate-non-major-e8c9e762200966d462618bf77a897bc07dd1cb4a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.60-renovate-non-major-e8c9e762200966d462618bf77a897bc07dd1cb4a","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"07d5cee692383f7114b37d4e86855b7636d566b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.60-renovate-non-major-e8c9e762200966d462618bf77a897bc07dd1cb4a.tgz","fileCount":27,"integrity":"sha512-mHzRm6/0TosinwJNYITIwPyO5/mRPhA5o0vExAFImIvGx9czeU7q1fqvyb0pXnyETEy4han7/sWVa/30o37ggQ==","signatures":[{"sig":"MEQCIECVqg4D8t7R+g3QsCRsusBnvtmaOOZBJ4QWZrIERhm3AiBqiHIrG5TymlGDv2oC5HyR+ue/h3ibduoCgm5aDWIU8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoDKjCRA9TVsSAnZWagAASaMP/3gsz0DdQrbI9iE7Rccb\nxX9cTJAkCi9AGeXQAxbf3Y8lD1Tap2J+3Cn26AoP4tp2Dp1K8Q6pmCZq8Cru\nXFNwDVjE+5GCXj6qHHcAlFHCG3USh0HEH3zkTejmoU+4Mp0fKmyIq/wF3HSV\n9E62L9ZA5GuBMvRZMpK0kY+p5+E/yEvxy07XV++yfpL+F/EUWEzvVvQRw3PW\nbhJkKuxuNKv0skLjGJUW+oLJPYDFYdnVqHLtod7Jgts6V7RItwOW2PGEk7Tj\nxxGmzfYfE3Y8RRNs425iGSOQE7p9XOvrRGcahE181PZevLa5dg7pKjywF0h+\nmzyMiMOWrNV5ROQ1cZq7xx8wAW5lsrjXElLN2tEsNAIhS5bhxoCf/hErbJGq\nss5uEGSqTw/zoHUKBkk9HvjjxPtwCFwX3nLwrNtrW2cD7esZZGEyt6y+dwEk\nSLK6Wdk3EhPJUCTqxdfASaYgbzeBP2zqyqriEcEMxgTJBgZp5pQ/CJcxsTaB\n8gwPJyS6hXp8mrkStIFjen7LeT7Ge92BnoKt9s+62ZdhT0Qf4vWLdBTby6jl\nNHzkJhLa3pDfEnSJbIDoIBuEgGzYLWTBPPz7MVkSBTJgWryVcZ+KcRZeFHjW\nWD9U8zueqXz0WYvBQJgJJuSkHr6EeWg8AwyRAGqowWgRlNUpwxBqL3Ki/b+W\nxZCN\r\n=MnHq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e8c9e762200966d462618bf77a897bc07dd1cb4a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.22","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.146","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.60-renovate-non-major-e8c9e762200966d462618bf77a897bc07dd1cb4a_1604334243084_0.3110749194980529","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.60":{"name":"@balena/jellyfish-sync","version":"3.0.60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.60","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e52a456f3f05b3193649b0cc1a748af42f6167d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.60.tgz","fileCount":27,"integrity":"sha512-iNrhCCIeLDEJlhl/sV098p3o7Ti9XeKFYy9VTh8rqCYqkwYECAYYgxOjkALaci7F3Xs6owq1bZG9CUqdy1gXHg==","signatures":[{"sig":"MEQCICZx1PmYzWk19nx3P3OlhDesna28DNWwFeBDS3BelejZAiAVeM/BxlnP6piDywjz/r7u+Gf7YyDbqKtSqSDf2iVqRw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoDO5CRA9TVsSAnZWagAAAIIP/iQroGn1TmVTD+Gzg5vb\nlYuDvnu51Fk1xd5oNWKyoalTIXkrtCRsTcmDEc8hODv6ZBgCHJ61yklG+2nZ\nj/9MW7czeq+PfFGnLSLgjz+9HKTJtWai6TED60AfJhIqKHEZcKXJRCgGJWk+\nJiVB6wR3IPFSxr0Y1ECSddQtqfMbWBPRS/AK0qYhWOYaHeMGk0v9MAYCBywE\n6l7fyw43EjcoujgalvCC0kQY56JuD6aY9E7kdTpapKDRTx8VFbIoXpt89VyC\n8KpCJ5rhmLSyDKql/DLa8oBujIU3eb2r/OqZR34MEfyjn4INro2ZOVEBiTtF\nNHOqb9a+FRCx2OXQm5GNcShi0q/U4Xhwkfizhc1dxRiWUebJTRldoWCC3ihC\nHxzcOU2XEgHkoeYeU5XlPCUnpDVSpeMEZ/LhriLrFyjKvLHPrhK3JwQ4CeaO\n02hl3TjghRpchNoR6tipHYY1RVRSsv6bSo6WRXSad3URnoR8Ittz+dqKTYvi\nv42N8BLU90Zzp7e8C04nWiSHslkXPT63KmPR52ufuFdVMy48Azo6ud4cx0By\nojvWURfpugfa5sLSxyciNfADHmWyU1YxZrD7yyN2sdWftAgL+eXc/hCcWDSA\nlAzoDQMUDotkXziY4K3sd2VWLFb6pu6o8rTILNvPU+iITbdoZzgRKgPdHvNi\nA5iS\r\n=csTh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dbdc1a17385f369ec73ac4daca7966d427e476df","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.8","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.22","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.146","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.60_1604334521212_0.7168115224138198","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.61-renovate-non-major-3c3dd1d73a09a835c3d63a31e41f628007b414f4":{"name":"@balena/jellyfish-sync","version":"3.0.61-renovate-non-major-3c3dd1d73a09a835c3d63a31e41f628007b414f4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.61-renovate-non-major-3c3dd1d73a09a835c3d63a31e41f628007b414f4","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e7340e474d95e2686b8180f98abd36ffb9f6228e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.61-renovate-non-major-3c3dd1d73a09a835c3d63a31e41f628007b414f4.tgz","fileCount":27,"integrity":"sha512-NBIh94CQwebUqCzpsU29CY6VDF0sSHXrYlaZIZbhLhRtsucTPq5+SpbcoiIJcPk7Ho68Cwh1zzXSlulV58kvCA==","signatures":[{"sig":"MEUCIQDqitBZTHEbxnDxRpeqQ8mPKyYFL+RBowDxS+fjxaLmJQIgBwrcbpQ+lCS47gTn2AARcw8xmMMsNFZeb5D5i7+q/O4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoDheCRA9TVsSAnZWagAApiAQAIXrmwoQgb5TiHK6qqOI\niwcB0p9UwMKKMj5+QAy3LPPCJ0il0YLCVw4xj0brcCicZoH/1RcbNFWIeXm9\n8SZXxEm8KQPtrpgLJuN0VC/Yki9M6BUli5OyJv1AhUpqKmb0I5tpyrELljuY\nP/h9DXFPd1g5tFrdROeJdbGCCnI9Y7PCJwYy8BO3hS/d+Oh7+85PGH/JgS36\nkZNmjAn+qMzY+gtFkRgb0Pu9pmQ+BAUdT3vJyBEoMdXjlJEo8ciQc0RKiY47\n3ZIPw+pzlFl250pWg7CZS0dlqudYn6oQSg4QsmmzKKasZPPMhFVOWwfY4wOF\nd+QpepRXS7Va/0LRqocXEZZNk1xrQYtpo4FkYG4fWC9gqQMxAxi0HB+Jv5jQ\nhbCs1fSqP4eMg1idmnh7rRUMnbaBP+qs3qT0PMAzaxQ+lvvnslTOZP30CCm7\nFsStLV0nNlFjXLn9WvC29SndJAa0EAVgRro513XwK9YkSOU/S+7l1oaqjo6W\nc1jharhmphr/Rd91z2Yp60KLPUjXYpw1JPwba/1MsqFjdFpKPMF1Y3S+WAtO\ngC8bb2CGxizvL3ehtESeOuPcA3LTjJZLLW3kkTWXCTuul5umHwnWtrZ37UTY\nLzCDPWQDlTxmxBtQBHDXajT3sJd++BGTwNbyZmDPJSNpcHheHZWNpDjkwpvy\nh5pU\r\n=B3h+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3c3dd1d73a09a835c3d63a31e41f628007b414f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.22","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.146","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.61-renovate-non-major-3c3dd1d73a09a835c3d63a31e41f628007b414f4_1604335709777_0.6496062563600102","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.61":{"name":"@balena/jellyfish-sync","version":"3.0.61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.61","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"add513d7bf24aed55c9eecca7b9b8b8ccd20c811","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.61.tgz","fileCount":27,"integrity":"sha512-rKsxb8Sqe5jIb7aBKvPNZTz4u1+Zy0yjtPujTh6cFJTljLbSE9Fvv6nSWkZF0esu3JmuvH4JPiyJksMHVHYc6Q==","signatures":[{"sig":"MEQCIBDojQmGBYR9Fy8OGbOtStVmjXGv2yLschuRn7GFI4GaAiAoTBJaOZVC474n2fIKZ7V933f19NWfL5YNJj4C68wJDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfoDlSCRA9TVsSAnZWagAArfkP+wcO6uPJiGk6TElSHdVG\nDSIxSFIv5VOsjFhEQMrZ1EDy4D8PAt1lJrmdr80DFtGlIEWiin5ZVo4m5RUU\nMlxl5M2vY+yBWIGoxF7FebAxLKFSVtZx6LcCsou9mD2PR6GXkj0F8F/HbgyQ\nJVJfbDPv7qY+B5jbHnHbDlNVSvWp2UIhUqfOqhAnOOU0I3sF+cM5YgOp9Sgq\nbRCvBI42UuEboLbg2uwWcQrPJzAJ02//hsYj2AhHuIPJ4TspxfTKrDq3rJGp\nS09S4QGoP731Dq1t9TC0tYr1deSWb8rwLnL8rYHrELvpySl4jQ5BLMUkHnNx\ntRnvcYvXp7+YsFdlOpSroUTUX6IpvSUErP4wHoT63fMuPGLNUkUsYSqN1zeB\ncuNxDZwSZv2raGJgqaR8dsbuYbJVMoXDC8fN2sh7czwJu92WkqkYA4PtaMaU\n8wjA/uz/ro9kzzQNzTxLOZ6NV3FUrSZGEqFPDb6+D7RBpMBHZnvoaUXs+25W\nDtXV33YEgWr9o04ikjt+N+t2KaLU3Bl5uRkbJv0WJdaYzyzLyHRsGmdTXVjp\nuQrH8zwgRaj0WDi5toALU7ruyAw77AvncnS9JIYAX4V4FhD5FOzgmXfcNFId\nNoI39UaijqCnqf925/6x8aUYEFS08PYQdILX2en2ZetmYsRLcqKYYRRVKusz\nlzS2\r\n=E+kz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3cdcb91816c02ee8558966ffe3ee8c65cd70cbcb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.22","@balena/jellyfish-assert":"^1.0.21","@balena/jellyfish-metrics":"^0.0.146","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.61_1604335954320_0.13359758315592019","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.62-renovate-non-major-925866cefe395c457bff4d32a7fc666b383bdb37":{"name":"@balena/jellyfish-sync","version":"3.0.62-renovate-non-major-925866cefe395c457bff4d32a7fc666b383bdb37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.62-renovate-non-major-925866cefe395c457bff4d32a7fc666b383bdb37","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"401632b71165180aa96358e71348b3ea3d3a4514","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.62-renovate-non-major-925866cefe395c457bff4d32a7fc666b383bdb37.tgz","fileCount":27,"integrity":"sha512-cE459glSJXkyMqou2XV6/pP+z1RKDbMHCIFsesYno96rXMo7qmp0e9GJDizLbGLy1J7PPBoJ/YEVa93bDLNqfA==","signatures":[{"sig":"MEYCIQDoADvtWgPJNqGOR8M5m/1OMesb3Q2dJylj+KtdBNsKxQIhAPkXI9r4O+wVcY/i4JQIdf73osW685qCOo/sg9aMF8qv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfomMKCRA9TVsSAnZWagAAqg0P/1JltseshKDptsp35WQQ\neOswYoJs53vuYqtsVTTGGoYh6HNO9M4hrjUd3uUKHIUZuoFbP2kFj8hxOiVe\n7Lz0NsOxYLyERkqZ6uGh07xSF66+7ZYc7iQDLv+jJFNjiSWWOX31YYwyJZSb\ne2PWpZNT2RSVf3zO56OcSTFX4/OMrqYHCBV67YDR83b3xTNvD/kRJZ/Bpb5n\nIR0dd9v7Yseb8UMeDNoOI4VM7VtZrLVOnm3AZmpcRDuvGlS+P347qjDHMvE2\n1KGZPfEcfEZuKeFTeU4A+NpDfT65+lKCkUT2TpNnX6M4hYwrSY8YtslXD5EI\n7DUPWhSKsnSAvAXMhQ79SdEmnwP9pnH+07GPo2X1eXNb4vsm8SF6R7saDSyO\nKhJDk8fmJNkLfqACT4oU/tIFRnf7TnE/kdBZvGz6lI6Zw54OL/1nVoMQxxRg\nfOzZdQr0WZgoGDivisu5ucxrbfIQ9C3d+1G205GrOeSNqi0g5zJ5sqBEj3GT\nEL1ylWfziuJbkO0Fks+N9Rzv5ZfWQ6x/JCtuY9YkliRpoG/pHK324y3zUTED\npBRB0vE2nEHeeAQYc7Zb3X1eDDaHcvP6XKXh+NG5AY3gx96LrHosVus3vJMw\nPZZBtsFhb4IkSph1zDd/kIw+ZgtSEuyfCoZUL5cdUlRVEu4mKl7acHhsO48F\nWHPJ\r\n=rVLx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"925866cefe395c457bff4d32a7fc666b383bdb37","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.146","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.62-renovate-non-major-925866cefe395c457bff4d32a7fc666b383bdb37_1604477705537_0.9682124115717798","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.62":{"name":"@balena/jellyfish-sync","version":"3.0.62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.62","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5449c9005b0613d17b08e45c22c57be49c63b80","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.62.tgz","fileCount":27,"integrity":"sha512-38jgsBE6V3z1XqPCXiXI+ZKW1yRnvr6szBYgshN5stb3c560fkmIWZJ9X9FHHinQKcqD5WXVYdTMAxhQLQhkTQ==","signatures":[{"sig":"MEQCIBXATxpEG7kQ/AnM7fU1Vj85sTyTHBowtpvC6JMvNFFtAiB3SZBMBLX1HXdEHsMRpliEZ3qBtjLlFLA3j18fTi3pwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfomPxCRA9TVsSAnZWagAAeu0P/A574ggg6NYAbyL5amQf\nE4lZH8Qr/9EPpP+7qRsIE2YeCMTTWSUhyII8bhqc322MQr8nfhfMM9eW1Hlq\ndCFB5aKkC4zMEiuboA/Lx7ZFW0f+pgNoBPy9OvelaiQTdXhiZtudA6yuVOly\nQ/DNrvLK59H4LrFVZkbY1OiplH6FKzCoB327n/rTmeueVVyNTas7kCn8ERqI\nfZpozwIVUzaNNVoND1ARhFmkaWapQ0jGlvoawunCwEawIBRuCtAzUdmqaRx3\nIRwoLX8pnIMYQCsASPzeKZmJg6QYp0ChUHW0LLbFReEK6KRyl+9OW4F+RQAY\nePG9luL9zdUoMGoSW48PwLVON2VYLL+FsnST13gNlWRiPtJOWeabvNCPU3kn\nI6bEeNrDxaHECXZV34st8muhvMD8AWxzgjjlXrDeYKKF7P7t6heo58LvW8MC\ncKc/dI8/QebR9nV6Om8rhzOw7ZLxT925jM+qr6PR6e/sDU0yFZDsAAgxrmlD\nNFy+olpeXlTmeqlwvXGq7E5l+8JYrW4kXBVwELqjtHKz3OUinxij8cKxv32p\n9D7voWA2tKV+4o6pfVWyhJjjtGxIKQL6mRZhqix6RdiQW8VZ834p+qKsrGvk\nuvvx+Jp5Xx9k7E9yA2oqe272N+dHKIRGYkCPyTALMFB7OnK9Z6gLdQ7XbUkF\nHXuh\r\n=1H/B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a7a3c3adfb52eab4f74b48c615c02707475056c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.146","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.62_1604477936900_0.9606395139794268","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.63-renovate-non-major-a90d249788f975827594a22af389243f098d3eb2":{"name":"@balena/jellyfish-sync","version":"3.0.63-renovate-non-major-a90d249788f975827594a22af389243f098d3eb2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.63-renovate-non-major-a90d249788f975827594a22af389243f098d3eb2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87b994dba6712a90a1a6c2ccac0ddc11413f5665","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.63-renovate-non-major-a90d249788f975827594a22af389243f098d3eb2.tgz","fileCount":27,"integrity":"sha512-+H968XjCI5Vt8zydgMd5GQzRme7tcBUgoorvlaLyU395zScdZDMhoxOE4rAKceMnq0FvsJuhuJRko0I/d+13mg==","signatures":[{"sig":"MEUCIQD7Bi3IFNbyttNYASCwT72uBdITnJJT670UCqe20mq6EgIgU25/Z4FrvOteGRakoaC8p5Dg7GVGY+A6BNP09Lpjwk0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfonoVCRA9TVsSAnZWagAAtuoP/AsgF+IbqcWmCLk4JQZn\nE5+T7/nf50qcJT2NMQrnYStkOL0WpbfLh1p7ScYB8k9r+5xPzcOJU3RfR/HY\nQLNXr3KdmsP+BFYVM2n1UvoDhfRbWM+bjHxGDWCSirSM66M1Ny9wTXiHLklu\nMX2xRdVhbaBd3gx7r1p200UdIFD8XrrXjgmnfZgKWljbq5mi+LsuKNdWhFN3\nzinP8jpuW/4o38oI/JXYk09kSrB45qF90p1oLmYolkjaJaH1TNk5tdyKMWZe\nMQtOBYh9TILW3ElAXurebVLi0zpx8X32R9eIj9VYsRuKoK+XrjyFRPagziXm\nRD1FlCc9/2tA8akOddkkCFvNER8H8JHFBdln7MXhuNjjNUitey2tRl0FMzke\n1Baf8wKd5+FVNS0MCBitLhLBiEAWMOcUqGmEKv5yDEe2w29AxnNtELqs/pqI\n94kNl1ss0OfnKttYbBTKqMmrjqVgNs23xqdIZ6uzKQC5bU5a9XtCmvuu0rsc\n2cCbKcMUMSmMGJLEYU5EJ0FIF+ApygZtzUSzxIIdqn5ISDN8JAP3m/2HvEEt\n13ZuzoR0FKUINXiwn96Pxin1+5FSIdUeypsADtRJtWjxZW7m516aE70C5cBL\ntrYQ9lKcbIoJaiVuI+3D3Z4xvDtaJSPaXWkq4Az9AQCG2vpgmq+IlIwe4a7O\nQ0lf\r\n=vUG9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a90d249788f975827594a22af389243f098d3eb2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.147","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.63-renovate-non-major-a90d249788f975827594a22af389243f098d3eb2_1604483604943_0.3833838725061465","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.63":{"name":"@balena/jellyfish-sync","version":"3.0.63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.63","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b172a7bdc48863059f8edd0e7ed85c7d163564d6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.63.tgz","fileCount":27,"integrity":"sha512-9DamsmChhCbtb2FkPyqkRHKuo6sZZCfxCZ3j7LF0WKEu86URZXkXxb+LOC+U1YkkNWk/B4Vvhdqr6QZbxvDMcg==","signatures":[{"sig":"MEQCICE+6Dai//9GQDJEq7O3esSIwdW+OhaC04JuXm7xbdWeAiA/LsnC3QhK02SPtFORCKbpxNXAuzR8yp52hGGT5h843g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264286,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfonq9CRA9TVsSAnZWagAAKgUP/A6k98pCGv0WDteYx8Lj\nWNJNfHqgJMpYfqiAmscf6sRK1mIYjjzXyYdN8W76PC2h15UgmpCE+5pprYln\ng1Dus66g8reEDO1BSmsHT6XQ0W9QHsUxvtZgEdMF824RuPaWm7Q6KrQxisDL\nnk7wP4uk0Q1H0N8oBQHFh46rNTaPqeUBD5McXZ5s/UFB/HHNQnyv7dVENXMk\nwsjVfOtS0eh7NhvDn42bRSDrObXwMOfEFwsG+D5ywegVh9nkzRzD4pCsbGBa\nlg6fTnbATzfqLStVP1wqg+QpaZqsBt6TZ1OBJ5BpmnE24OuWIABhLkzAtRAX\nwG/Puur5AblsOmkclT97s3+ncTNhO89kvbQhIVuGZ8ehVNygtXwGThE8+IF+\nTAlf79akU0XhfIy7BMjk/GGD119EmX8uQcfhuw7NNuzX3Nvc83LbDM2NRgJr\n6LyN4vZSh4QloAIRcF4QHmlbbVsLlhg+5KqhzAe+DYqRwCcAxtPuIMtVRaeq\nWuD4/mmCQfpwxJpfXIF16FXTTFePvs+Y9FcmfmdO7qzhfmXoAzQF9f9WyAFM\nDTQUMOTDHYNpzCBuSt5zOVrjj0POFNgtWwsMrg08E2rSLtRhumuGawwmSe/D\n8XP+htuq/+8VmfsoyBcV9bLoBErx5RdSnMN0mC2kt4+75qsuXKZWVKKzV3LH\nob9w\r\n=wQm/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b4ab90b94ea4c76aca8f7dbc579539d8b7109044","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.2","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.147","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.63_1604483772723_0.5344743358688999","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.64-renovate-non-major-9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36":{"name":"@balena/jellyfish-sync","version":"3.0.64-renovate-non-major-9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.64-renovate-non-major-9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c6fbd5292258402f716194f5c967f09be42ec9fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.64-renovate-non-major-9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36.tgz","fileCount":27,"integrity":"sha512-uldby/HkomWk69EZFxxYZX2iyUPKPWRqM0gjBDumFRWvf8Fz88xevPWWIRFnPuYVorJ17XgYdCeZD2Zd2iVqfw==","signatures":[{"sig":"MEUCIQCi9FBbeDeooESgMoxuAhDZGdgkY/AMUWiWS6UuYPW5gwIgUcGT0gv0g/sc9JC0lkIgeWb6/0mED9kuPxxf4gYIX6A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfox3UCRA9TVsSAnZWagAAm+AP/RJRYHTLBcp3NTSiMRbW\nErrPKiWh6Y0evS2pHglXQ1nXpMVSmxrDwzPPu/00VY/E/F/iaq9KfFz/i0yY\nSXkvOMNbYkzQ0i/sfM65hHnKtJsydizXXmkb4CxKBywgz+kjhcxRAvuyTkf6\nGKgWoC17z7QbO6qNA2e3GCc8y6qmXtHAmWaF5noVBmlMlVrzLKD6OKZ7aff1\nC/sjOUMYOAH87FXaGMrxPSA2igyHu5q05l99DLwRKj5uJsknfxzQOfp+f1Ei\nzfq6YsA8H2Wx5hVJxRn/1h9OBYc4nuA+//Pihv4U0STy4vCQJ2HWlBwhcj+J\noyrtSO4Ml5NB26sddCJEvITwwxraaPJfECj9zSUbhXsRoJeLedjAvogpsd72\nmdMsdS31DGQBhaK/2bdLGQKs/akUyKtPxqgKKoDQdilDVSbWxtOqatOBGeZg\naA0i7bNeaZHfWK4/rlO2T8Mj6M9WG1Mg1sLNm0odjzurQ56K7/Zgumjtr6t8\nyVCNBlLuYyWFyrKP2z9l5KzGXw+QLqYeLkB/USKHJ3vVSmnO3wWmbUP2tmGC\ntmxHD+hQ/gPm7cJa/maQUlLz8ifC9y6IcAGKIq32duxgHu2MbH/UR/2DmEFM\nWoUssEthKn/+CC/eF+gUl56y9Wp4AH/80ThqvdxYTl2g34QJqePfzic+kTIO\n0Abi\r\n=Rmqf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.147","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.64-renovate-non-major-9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36_1604525523384_0.15433631397009995","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.64":{"name":"@balena/jellyfish-sync","version":"3.0.64","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.64","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3ff82601be3d414abc1d138c2a4576ba8270cf44","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.64.tgz","fileCount":27,"integrity":"sha512-biVj6kfbGkSIKK/qRk/12Ne4FurO5M/m7rGJIlOFjAhJ3DhpRQwQmvVnYTmoKFQM+dekHmvXyDFj26ymYQxI6A==","signatures":[{"sig":"MEUCIDUFso+qxkKHoG3hlNSUv5DfbgUC/j1FKNewD3vUBAr+AiEA7Uor2PDjMILHHp1TSkuoqAnM/mhoBinvtZVhOFRf5/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfox6FCRA9TVsSAnZWagAAocUQAIXTiPL6f1iv4e0AZwV/\noo28iwovx3jYH2g4yTl3xmVlBFDqjcIoaZhmWnurWnj/iN3V5ISZIdm6C86j\nSodoQ+RrU+sXxbc/1Hjv3Dqg3/MkjtPhtmGK7Q2L2mgtzZ87CwlhgVNFkUHm\nj6cVvHs1Axc3Ddmi6fVk8XIXGs0/LVxx+WAgElnMZpb7Z6d7vjo19XzYzinM\nlNDh4yKO070lPbUGv+NOf3BFrX966l86nYNWW3lLFlpBgp0i6zGerJZogJs7\ne0x1jWRW/esgD+VRV34uUY2smRDN6JdeHeXZKg0VNHz97iNS+0P3qP/9XIZR\nUYZlTJozxCwvoz4l/7UJScH/I6oui63VmkByOePYbZrliH1UeGyeTdai3r7A\nfK8RibTkc72NvHpzI34jeJ8KJuTRkzW34qHJtO8MDKtjNhdwHlJCkGNOw2he\nT4Zw7QClB36+Mt57LxFB83lUNiVqLuUDA3pa9vxrkwdAjJSDAkaL/WpPnZdh\nYWTvunbNvW6zUBr+tTOGUpJ89KcqIk+n7UB4wiJsepreCRG42/N/PpppeAnk\n6jXI64pkJCWKl7w1eMZzw77MP8ubeCw9kIxF6eTSgH4fZefR9JzXPXotBGSk\nif+K8JatJ+c3E8YuotVPD3z4MJysIQr+KHHBkrsaVBxbR/j9PjWA5A2ONgi7\nuDK5\r\n=POo6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c5e72f19af8f3ae1315b2f2255eba8cd0f93b76","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.147","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.64_1604525701268_0.38654220381644344","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.65-renovate-non-major-2e59a54da473c6e630d6842ebd6c1a8a913454c0":{"name":"@balena/jellyfish-sync","version":"3.0.65-renovate-non-major-2e59a54da473c6e630d6842ebd6c1a8a913454c0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.65-renovate-non-major-2e59a54da473c6e630d6842ebd6c1a8a913454c0","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0435ab840e62096bd0c71933c7348ffa90bf9296","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.65-renovate-non-major-2e59a54da473c6e630d6842ebd6c1a8a913454c0.tgz","fileCount":27,"integrity":"sha512-5aQPQYsI46cvoh1yy5OKrllF3m0Fw5lBXfjc+ib2ucpD7iL+BoDTJpbrO6ENQ/lc/v4mhmlSW07zZ09q2DcSJQ==","signatures":[{"sig":"MEUCIQDcYRcMpvDT4krg2Rcviparyr9yTS+TORl4d6yfzzE9XQIgEfGTE7P5krfan6gTickYFouHlYdqCL/VVMyDB2HRO+U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo3wYCRA9TVsSAnZWagAAHZsP/3JetEufkRCABq3EGvoY\nlLOqG/WNUHZq2JC0/4L3yLeGsdhvRfKezxZmxHtT1kFcFIx6pKot/4Eup6Tc\nPAYK6zKyqArXiBcVckgD1h9Mhb2sK53cxMvdp/Paz9Sd6FB3LP1XxHD0BH+t\nAfU2IwUjB5NlbJ2mLGctm53N9YLwFQ9SyJcnsJjedGztBwGAVfAvLCgwvE0i\nIGFoKH8xm2Yx69UOXF+uZbvwuU+htVD98fne+GtBDDzgN+/Kerqkwl6QvXGs\nsakdbvw+Nq0MmtY1raJOxfHKvN+xOOlzPYAG0dDlQjLmjY4TgFeNhdgqoGAn\nGcfGM3U3ZgJqa/Kp0qjm8d5s8f1UIzMIP4/f/zzqEQb7/Ce4o2XSi8VON+Lk\nqb/E7Ni125M+ujR576dCO2MXysiZmLZTlAqCLbO8ImgiCxnve0ALyEzNmKa4\nPr3ow6/VVDfMJbTVqcan88hrudmsxmvLsjtYgvy2sFJIvwHNhEqqsuQ9DhUB\nHO64f/7DDR36Yq8/ilQTNFHLJj4XAhOl/fXIHUixqNrFMilWvUt+e02mwSE8\nQosLz0I43mrdpwxLfSResTt2DAAfEHPg2w9xxDgxkqzWeo2rSAqTFUgB3Jzk\nQe5eHK6Dl90kGFovkxU4Q0ciikoZzTR/pOtJTJUe7hh3qe5cvhymtqEKpO3q\n1OQa\r\n=PA45\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2e59a54da473c6e630d6842ebd6c1a8a913454c0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.147","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.65-renovate-non-major-2e59a54da473c6e630d6842ebd6c1a8a913454c0_1604549656205_0.12696457084501334","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.65":{"name":"@balena/jellyfish-sync","version":"3.0.65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.65","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf26516147d098765d13059786495951988d8710","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.65.tgz","fileCount":27,"integrity":"sha512-z/fstdxlmoTmLD+QpNMcpVyVnJ5HJekeCKrlIbTlq3kBY6aWcPR+rB/+oS5rNMJ8xF86AAXrYGOWZABbjpOfgA==","signatures":[{"sig":"MEYCIQCES+1Zvur/q9TKv9Gsv53v9MW1SeNnj65zBzUnT+z1lgIhAPbbOUSyyXeCh6JmF8B72rE7TgOUwiwUVfAOWe084JEj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo33sCRA9TVsSAnZWagAAGXwQAJkwIyMGUI6vrnuTDMAA\n+KfT8XNFUPe8c0mD8AoNlLNj1fRzCUPQriyGjHH80ctq8+zspfqkjx94beZK\nMINNWURQ+JCdrs3j2OJuyWMb6nZMvZBx2xYvfCTtWkos/TF83/9otEGKS8eN\ntgwkyLjuBbELMHQECTRjddXxxL+wMSeYcnvUfl9W+//gAOEC7A8C4I2te+yH\n1DjF87EoYZx6OLtlv3Wy62kTajT1/AfcrXlSaOEsSmsi/US5QmA9J566FI4D\ncaYHWcittWJm0RLXM6/Z2L6ETv+tZcC36QO1Lg2AY5gnXurmUnbDTAEhy83Y\n6j1+9kfcYwJch2ldcEwzQ1cDntsBe1TXu/vJV+0+ptYruwoaStBCZMmTxSFn\ny1vfSNsCAr5Tw9BVXpEKW5xGQknB7yHdyW7kOHg5Ske8k7IwCfKlYPE3Mw/7\nEXfzNkmLw1mtElAmyqzY3wPaq9HnTWnZak92q7WWhj7c3jCIUx1MXaxqwo8D\ndxOwdb/xrreOllzjXyIsFF4LPf7aV6dxU5ZSJYBxVXnN4yUmkk2tRZrs3z2l\njohnCChDkfIU8cqpqkaVsFBWjmsR9dsQ4ayd2frzTleXwp0FYAM61+2bXL2o\noJG/o4M6XdgYxC8cR2bHvKzQFTN1zw2fp9YdSPJymQsbvZJgk4ZGd/ICKM/0\nvt42\r\n=Bq/K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5bf9c0be0834ea94336c3a0179fc2b7ba8a3e32c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.147","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.65_1604550124208_0.9450740947826828","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.66-renovate-non-major-369663b3c66b06b072d4d1feaae83d6eb9f8f23e":{"name":"@balena/jellyfish-sync","version":"3.0.66-renovate-non-major-369663b3c66b06b072d4d1feaae83d6eb9f8f23e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.66-renovate-non-major-369663b3c66b06b072d4d1feaae83d6eb9f8f23e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"347dc530cbc579ed7ab87de17d6792674a61f896","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.66-renovate-non-major-369663b3c66b06b072d4d1feaae83d6eb9f8f23e.tgz","fileCount":27,"integrity":"sha512-i/RLxX7hEwffEFnqFC6FkSsCphBYg14Vxv7SdFxOnnk1uf7B1IfgzLtuRS/yWv1DMLK8IVWBl196Mmdba8wRsw==","signatures":[{"sig":"MEUCICi6xsW1ibF7erEXBWNQVJDEviBRrAHpbyEFc4wIrQU1AiEA9XZqFsF7wUsDtm4H9fvH545gSf6+XxSScEDKEW01oaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo5f6CRA9TVsSAnZWagAARmIP/3tjxM6pQsxf0MWPUyH4\n1SWw8k6SnWNlbSMtErMAjPA2UbqwgfzX616ynTCJtZoBJvaegi+C/DLkceNh\nHbK8t2rAKZeO6UCIOft8Z5SbMnV+l49qEn0qgiAsb7Di9v6bHEue+Lef3GVp\nD4obZ1+gECCCPJ2R9ko55OLLRvk/odCxLrxOSR9d7W5IJ6HpHFJB33nxbBmW\n0Lb5o3e8pKqEuBfflqbOHdhC2HnnPLSWXOTHFwP/B1QE26xLFtx9r9WVXlkk\nQU3rpiwIZorvQ2551ATBC6fyBVFfPh0GIm7HNt0m7lAeH7yodM/vbG2q7biC\nD/WJYrgSHb6ZaQRZKy0lud5NmPeDNpxjggpTGsyuPGlyH0NBsgbWZwc2DWQ4\nmvcLu7+ypv3ot8zzvNEXYmb601M+Zeb36DYGxNAFeIYE+hNIRRdL9KxmfFfG\nIsMVWxCwKzaiQywEN1atX3N2APxK5WQi0MePw+Y1E8hcN2g8NmgL2coiprBc\niCzHFadcVIZV+K/WSxZsgkV27xG490dxdgLXzyLd/ohMgHD642V6Z87quSpw\nHB4v5YQq3bHT0LFoSG7wSGtg2a0wppCi4asGnh8Kd1kZrbQa7eRfp3QtUmFR\nE5/5yywHr2tyds//9A5wmrxMYWXIXSfgcomwBIZ6QK8k+l+PffnUiKLRUhEg\nbG05\r\n=pMBs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"369663b3c66b06b072d4d1feaae83d6eb9f8f23e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.148","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.66-renovate-non-major-369663b3c66b06b072d4d1feaae83d6eb9f8f23e_1604556794216_0.8930962941448441","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.66":{"name":"@balena/jellyfish-sync","version":"3.0.66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.66","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ed83000a618149dc46a7f055f5e441d0552b5e13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.66.tgz","fileCount":27,"integrity":"sha512-7drqHrb0I2Wnh2WvKJ6c1jBsHQtkrUaYZQ/LxeuzKMIVDZEOqx/iWNIGCdGVjKQtNjRtg5uwxmVR6SFaw+iICw==","signatures":[{"sig":"MEQCIF8otOhVFSPjikNwEQiCIha8q7r5ukN7RV8i3TZ0ChinAiAIn7Xk5g2DalS4/0ja7L05AgskL9gwoeonPhEOrRlR3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfo5jLCRA9TVsSAnZWagAA950P/RiwLWQXHSek+Jkra+UL\nOz2D/gaH3S236earFzG/72soVSov4pqadFQoeFScuzoNu0QyzGYXB8VGc0YP\nS4GIUKXCCs4k6gwGBeDZm+IheJd+n0WeYeArzIqN/OK2lLJbQVDctyS2Qry2\njF3CLFBer5JofdWQ+IIuiWdWlvo3ZALlyyWtcowPa9iZDwuVpFd0FE1bCtqQ\n2uLAa4GO+wOMH+65+d+vKESETpxVgASrpZErWAtyFma7UNplYBko8akXN+2R\nPspyHmBGyET6PLo1fTZ9Vh/PORg7JSP84AqaE+WX1I/biEpLZT+nfKz9znH7\nbZ/GfKTrUs64cby33fbgQARNMdvOBDE8G2BpHRdzEQXY7mV7LYqW9SO42gKG\ni39ug4FGs3WziKwj1konhTkyscS0YhUKQfqRUZRbRjKQ8QBU8piB2BAZ9SlH\n91A28SCHz739K9KKFCYCpSgUBDbtLvS2oCFm5qFkWAKGModl3LBdLE0eVhlO\nM7XZxtqR11J+o+QiGYI6IDJTST3kNZp9ns5XQ4ep8NPkiADG0bSthVxvXxGr\niN88XLC5u6wP7I4MRnQ0sUMeChqI+7x9P9j8fWa8WIYTo/yhAJlz5FBuHiBp\nN8YLg4fZScOCDoRpVf7Wyq0PU1EF24jY2do4CshatizXzlEVR7FLZLPk8dZf\nb9/n\r\n=K5Ga\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9e2b9ff5e7c1618faa19b03c47f4963d3e02bd4e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.23","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.148","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.66_1604557002940_0.42969101065081605","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.67-renovate-non-major-d39983017d1cd602c27151b4a1aaf752fd97e3c2":{"name":"@balena/jellyfish-sync","version":"3.0.67-renovate-non-major-d39983017d1cd602c27151b4a1aaf752fd97e3c2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.67-renovate-non-major-d39983017d1cd602c27151b4a1aaf752fd97e3c2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6aa83ef76a54121d9e1737a5d1f3c76c34650049","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.67-renovate-non-major-d39983017d1cd602c27151b4a1aaf752fd97e3c2.tgz","fileCount":27,"integrity":"sha512-Qr8sXBElQNz8KBr2EVLJnhqxUaVBGodlU8Ugv+/Nx9Kmu43Hd03LNc2RB02mDMmzbVwTE/mxR/4VDF1aL60lrw==","signatures":[{"sig":"MEYCIQD7yNDnSxYWmuLR1YHnX5p4SBdKaNNhczvcssUYw4UxcgIhALUDZSAowWOb3F/WLsyK8f5v2yiPYEOXqA3hIyZ5zthR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264746,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpFE7CRA9TVsSAnZWagAAAa0P/2elpobo72UPXrqPVarF\n/GZYXVkglmk21dKG7Z1LFn4fNuli5T1F5pXG4e8MR3pJvxABjb+qFDQEESm8\nnt5nok4Ui2gl66aU+CYxkwXhn0+wQMP3tf4D8oYqLxbavOhazpU7r2k4fl0t\nLjTvy0c/Y6SEGT8kRSnM8QuBlu6nnzW/TulGbqnzHq99IsPVVxrpJHjns53g\nIL5u8sdnc9qKFNQk79SmdH623bU/D/OP0aKzhmceYb3zr6hNjsH63GCwSqgY\nytU+ZsQj6r71yIlqklsleZ+jEgDXl/AMSKmz/UDCFcaEVLwy+C6C+D10xcow\nWFlPEn3xh8/+6mF863S4FqtOsdux1JyQXWZfWqs8MjIxRP5dmVtfZbkV0p0S\nrVkqVIiUmtQOe6sywF9dzPNAtzmMMzGKqlbJ0IB+C70vJgt/OtJOCMAK0GIR\n/gWxORXGiUl/PdJnWBpcnUjsHjtrgsBjRYmNH3U8APMNPc9eSqHgOh9lUSCQ\neF20umXKkNgfUHmsrgB6BK6aSKkh3jV6cQiwQSs8s6bL9s4GyJGEj2gcmc3N\n5JpHRucGCqbVnDZt0dnmbD9y/mmRpOeqKU1Pr51wMacrv8AYm4h62Xz9Cl2g\n+x57HG/0R3NZcdZoAiEYzWa9nqWx53C+xQ9i2pntZnXRJ+k775cQL7V1XjlW\nHqd9\r\n=QVVR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d39983017d1cd602c27151b4a1aaf752fd97e3c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.148","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.67-renovate-non-major-d39983017d1cd602c27151b4a1aaf752fd97e3c2_1604604218744_0.11654328609245046","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.67":{"name":"@balena/jellyfish-sync","version":"3.0.67","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.67","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"710c8a9b6ca75c01eabb61fb87730b31ba533bf8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.67.tgz","fileCount":27,"integrity":"sha512-qpqQMHzIy2uqrwYoYVansmzE3HatvYB3uLoKn3caUGJYXgFLQFhdiW7yDdHNQLaouCPhTdB7h0ZpT9bSfwv/HA==","signatures":[{"sig":"MEUCIHsGMVgvoGs9bEeHGzicRf4hDInKhckkyui/C+JqKpoRAiEA9wwi4LulDxnglFE1/e8NOylZrmEZt4Opp1KxAv3+iDk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264686,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpFHyCRA9TVsSAnZWagAApmwQAImDrQjOdcJYiT/zp+v8\nYFBAcxwi987cIcDxBdl7Nb4mc2gKpp/BlvxGyS9OpH4mcDuWKts7q4fQup2p\n6FfHLhRinNJ6JTPJ7sI3NvznJ/+3TVrbVzBnUV41VOqKWmVuWiWQgrI+s2ss\n66FUbTmp2FcCu6lFQQ9rZEOcc0jbPt/NBN6+tQkYe83w21EP5ILYCR7Yzsqa\nz5OYi5cTg/adre/gAQQPt+PmLPCMvRUdk5DN9SgyMWGkXIjmRR5wly2qWQmD\nipu08+x87UYmrM5YBquxOEQp4jXGJt3AWA3cSmGHDulb+X8vRfLSjdhg9V/E\nu5HqOn5lWCqHRDYUGQ4zGysjL7FAbY7cLpU0jcN94XNirOgi/zxfB6qPx+Bk\niTBDHtGJ7aiadWsUVqrdx+l1MI7HKzjaehMccBq6WHuvXCRTKWuFUneJOV//\n96eqq0snws9bWdS3ejLXlqgDzAzHa3NZC9EFS6F+q+0qD0rM6lAVjFJI+ZRa\nELm+rdYM0qi0WRz86c6eMA/7y2A5Th3q2m2EbyoWA/2nOD3x+uYdddfHa+BC\n115e0dBR0Zq4Y4++GVvxA+mWNQA52p1nrbomTIahIdsmNM5NopfSEwnZ1GB8\nnlC+KNqfa82YEvG6CCh9y6aGF4D0JGW6IZ+cPmVKnnNZDirSEeya1eiYWZcW\nFAgB\r\n=Hw58\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"43122cf98c1f1e7586043539ec17965e6ac3fa7f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.148","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.67_1604604401887_0.10086620694109483","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.68-force-renovate-node-version-b7a37f867d1ee015cc799476c828dbbc4c24d3da":{"name":"@balena/jellyfish-sync","version":"3.0.68-force-renovate-node-version-b7a37f867d1ee015cc799476c828dbbc4c24d3da","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.68-force-renovate-node-version-b7a37f867d1ee015cc799476c828dbbc4c24d3da","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f7c173fb7421b5a92fd037c0ce2d07973739edce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.68-force-renovate-node-version-b7a37f867d1ee015cc799476c828dbbc4c24d3da.tgz","fileCount":27,"integrity":"sha512-ZDY76rnUDbeXwmzELo6oyBCfgGHmMIMIadpeab7EdDqXR8DkoP7kpNN+adtus3hlnwltXsgw999qcZAA/MDP8Q==","signatures":[{"sig":"MEUCIQCRE/ThtSxkewE8L6L7jfkVsQg8e5B719tdbl5PDvPcAQIgHKz0Sq6xrRy0CDbTOSyQ088urON5EZg0sbAuYuym8CE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpLnICRA9TVsSAnZWagAAQzkP/00u9oQw/obxMPrUZcG0\ngyAfPNj1H9mEgi21He9XEqaSGhN5gdvijK2k2iKZL5lHiqkPlZIVnPaiFSlW\nL8JJVzmf2Oms6efweK77tzNTrlsDBBO7sCb3vqmLroMrGPT/TyS7pxZ1wWpi\nh/m9qRFhJvWLqU1K4FK2WFLlb3rxG4h9+6YUgRwyVkJ3y0fdQuYGCFuyWxOK\npjNwhoDoGvHdFI6ajR7Xozeu8lQUsB/V50OcSuVXfHqIB88mHaYVOI7U245S\nXQjVN0fkJThAj28PEnXh2UFn+8vIbvyON9WaziAbvMB28SUpP7ul+Oy+lbh1\nzL35NaoH9l348m8Rxj6Fm4VRnpVDfmKHh7/RoScH5RiNu9SUW8uh3gmz+nSm\n0HHKp5C6pngqteIkYlob1ix0UfZKIjb+oSdITbb39IAFr/7R9N8qLIA+fr4a\nHGHf+UUVxWKKzjzqSt3FfXqVJqgea/w+6phfkc1fRUWNxr91r00O195phupT\nyw02vK/gZ6lj7IKUxhlJ5UoI5k/+SAVgQ1+flPHdiUIAs5Wf0I08kQn7djED\n3f15penGF8YSxdpILwPZSgWtgmADZXHNCaRvazJhk1/3DE51q7CRDrmdGSFF\nMJSUIjSsQfjnBOUfPhjLb9WjIhhF0/s4AOYKQ861EVZO0dB+UoF5742KErbG\n0ya+\r\n=w0Ti\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b7a37f867d1ee015cc799476c828dbbc4c24d3da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.148","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.68-force-renovate-node-version-b7a37f867d1ee015cc799476c828dbbc4c24d3da_1604630984218_0.9378042761755008","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.68":{"name":"@balena/jellyfish-sync","version":"3.0.68","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.68","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"60782d26863f11d2efdcaafbe62a4430e4b8b325","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.68.tgz","fileCount":27,"integrity":"sha512-o/88LsmEa1DfNX39Wh7/vTIzpgBGEYIHP5j3l8uNGJcfQbCUIJ5NioxleIUztoEOH1bk3PoFy8ZX+NEvFcwt9A==","signatures":[{"sig":"MEYCIQDPFqKXHQmqsnxoRf1MB6gcbDDlYfyZENMRB0CHFnRSBQIhAJvrPvcO96DUuYFdSnOX5TXtRofjECsjboLiYDtXVYLm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpLpzCRA9TVsSAnZWagAAFjkP/ikHtYWLFDdiWEFovdzu\ntnaejPJ7t1ii1kshu5OlRZfoXBeNj1w8speJbt3ZsJDyWG1Cr8BIaDZG36oS\n6KxqmDZYlGy4Qzv0/DVZSe8QyxgZ+KMhs6OWp8Uo41jzGHtUzTs5mTBEXbQO\nJxYE8h1/xY5RWc5bPVHYr7Nt570UThP1DuKKP/kxpOAppe68imehkoHVw37f\nrg5Z+MP9J61hJfsE0pMID/xlR1XeuebkpaKs1XiHLKzwJZRG6LzDWXJaTxgS\nu9o2N+wNShXLZTnM8zRjpSxuAUerwy7d/0v7UtBRhr/iMj6zv19//pXVTJ53\nn5KGkcQQX8cMwaajiZ2Uv9tnpWBmhdWTcin6kZGk5JkrqXmIJ65Ifoq0Lmrm\nj+m/eMR2vIrEQx/7WwWYYBZ+LLPt/AnIXqIgo5adFk+6R98+wz4exhGqp5F1\nOtPYeM9uCZ6Yk6PRbadi7lJxdBKUqvmSaWSar9btMJQRRvtW1nTguxAbl6cn\nDIi6ZIq5ImT/aOb55mc87xZ7xBFy87aPsl10ZbI/1lxSQSH4a+c85qAyLgHf\nRJLCsRQJTtgDwWM/7Ih+rV8FwAVQPO14dqbFDxNDBgmKOVJ+y5RhSWPQ+11y\n45iYkzKM9V8u127UtZ+5tznjTy/WRfCmRpumc2HWvT27ElSAdfuu3oenJ9GO\nWYvK\r\n=ESp3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9121f64f93487c11b0fa64343f33c4b4582b0a94","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.148","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.7","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.68_1604631154483_0.32779298538765245","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.69-renovate-non-major-996730606470593be6b76918d2ce4fc7b46b38aa":{"name":"@balena/jellyfish-sync","version":"3.0.69-renovate-non-major-996730606470593be6b76918d2ce4fc7b46b38aa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.69-renovate-non-major-996730606470593be6b76918d2ce4fc7b46b38aa","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"14bbe23904374dea34c269d99170e4e1ed4bde38","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.69-renovate-non-major-996730606470593be6b76918d2ce4fc7b46b38aa.tgz","fileCount":27,"integrity":"sha512-WnfPvyNK5qVbvrEm4q0pK6sgHSY9SokwH2ctookjOmasiSsmXdIWHzRc/FJGupALLYGMBVZzGCgI35kTWKLe/g==","signatures":[{"sig":"MEUCIQCnJ62wMugqeYNNNJtUkzzUwpJWFC5kNVQQxO23MZj3UAIgAvXuVu6t+50oHc9L1yfwc1FcqbSMqWunEHKsnOWVngY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpMYJCRA9TVsSAnZWagAAAjkQAJK58PltfinF4gGkbizY\nsko5ydneGdYCQh1uFFGBIhc2eOsEUpq/FkhG/hpG5k3UoJu8JTtTPgEkl1zO\ngEonWJqYvuF+/JLO58QWQFAv8GHkkJUttiRvCsrDbHQ0JLq6Zd+LAFVQlYOS\nL+fRrsFiuyasXQD7T0LIDzYSSkkBFBgtaHdTVPfohoODt+DoOj2MBgTjC+RV\nQAQa+wY84zWT1YNcUvjpR2DD1afFv3G86Nh/NopChQz2CjZtFFLTPoOVUwuJ\nHVyOvgh3tvOSC2DyvX6aMaKliNQKf5NcsQA9ZhOam19FtAt5dkPTkjgwPB6w\nInmPAGurXjzrTmJynRyH+HiyesrIbkPoHsgT7tGBXP/5AULYq0K2Znq1218d\nWTFJal6YA1Fc5M6DMXIkqJzn0lcgE61i9JAVgj7brA1F5prZCr9MzFfgi2A/\nOW1UA0dPg51QpTnygbzjjb7T5YeK/e4TlQ12h+tZX8RDa4U23HbeVF4nvPTa\nyZdL80F6kaBsjuNpVK3N65W4KD4Dkg6d+hX3QBICLlobtg8Tc57ZpXzJOgZa\nPnSdKUdilhNqeqyKJJdckbcYIM2uQ9jM9D66TwdIEmUJSqRrNFqBx5Zs/haN\n9x9FEINXpFyMHpxklPK3PBmrg2gDbiLK/sIZY3bb3myCiQdoBabmcgSpbsaz\nWPru\r\n=NSGw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"996730606470593be6b76918d2ce4fc7b46b38aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.151","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.46"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.69-renovate-non-major-996730606470593be6b76918d2ce4fc7b46b38aa_1604634121337_0.2724660289556027","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.69-renovate-non-major-4751cbbd65492b4a8cd2aae7b1547ed5b85b9911":{"name":"@balena/jellyfish-sync","version":"3.0.69-renovate-non-major-4751cbbd65492b4a8cd2aae7b1547ed5b85b9911","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.69-renovate-non-major-4751cbbd65492b4a8cd2aae7b1547ed5b85b9911","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"409c94089684eb4ab927553e3b72e9ba5b6fd256","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.69-renovate-non-major-4751cbbd65492b4a8cd2aae7b1547ed5b85b9911.tgz","fileCount":27,"integrity":"sha512-m2zjvrVmm9j6JWrmqfNyXX+nwthnS5o6tNI+dBCmIVUrEgF1UEnK5aZAgyBp4q3ZDtB0JnrMTo/Ge2/YRFpmDQ==","signatures":[{"sig":"MEQCIHeNTKJJFIVX4dJD/AE17SsGODW+3sL9Bq4uiJN39YxLAiBxNVUiR3amN5Mkx8Pw6R4Y/QhMZ3DC73x7u6AvSZeJGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpMe/CRA9TVsSAnZWagAAdeMP/iFxAllSxTF6ucU1oHwh\n2UCy40iEEOIf9xrYy+JQHqd6EZ2h/4+O4wvLnMtKASXNtQLOyXu4OEtiNJVq\nkhbhr8Etap060htFF+wu09mgdqY02+NksmRu0q9f5L/n/yjzAJxs6/U/yHVA\nAjedy1hbni8ESdCorimGMr43YMSV6blImNIUZP+jHd1JrpfHAFGACqSDEAkV\n3mLFGY7HAmgqv24m0l2sVD+I/gqfe43whs74kx42a6D7wVzg7mx0P3TlcMFQ\noVgL+W6s3oMTNaTd1AngCcV6/MViwHEpwpKTvBvR4S5T/yGUzK5klitK3POO\nZKWYdWd6lcPvFIjfMRJXCxcahpf7fM/qUgRC/uY9Sbp/vZImdBKgmml5ICr3\nA+1L1seCgFv5h5u1omTCSj3x1QzaWICTISPAafbjgfoc3kKD1MPJP8H2ABQh\nyN9n0cKHSQHVwRKjrhM6q0mTzhNPNCudPd0A77z6ZP+DAqFFVEuSlIEZkmJq\nfjJr1lqNC4UKlF2qq8fXVeLWL8w2x5IvSIyzyBkm6hF08003a72odOYMJGZL\niHRg0EQcX4YYxu++x4vIDv6j+8ePrH+GkviHOY/NMO7knPbv2jAIG8wkyA6l\nwhFYO9CN6owZfEx8EHVubgkKYXh8IpK0+LUQRB6V/vDQrtgsahqSrrBdveOT\nVw9e\r\n=p3Fx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4751cbbd65492b4a8cd2aae7b1547ed5b85b9911","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.152","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.46"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.69-renovate-non-major-4751cbbd65492b4a8cd2aae7b1547ed5b85b9911_1604634559240_0.4749622963342828","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.69":{"name":"@balena/jellyfish-sync","version":"3.0.69","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.69","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"73e4e8a3db6dd37a7abb71e69c97c685c0df7264","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.69.tgz","fileCount":27,"integrity":"sha512-CkIU6ODzC0+PMXDsFkl5HVeTwUGCKEx90DPOpZEZGxAe079LGf0Lm3NuSe2uMo/YOCVuQvNaOxUpxD4/fsjO0A==","signatures":[{"sig":"MEUCIH127f7HNPa++ND2Za0lfYusUdtqZAKqqczpQgGw+ZUsAiEAh1GMRVBVicRjADoup+dYgoGwYdgC6VptMBgc1ivNC+8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":264910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpMiMCRA9TVsSAnZWagAASDgP/jt7CFcID6SF2hLJzqh2\nTXZAUaXtdi1+vsSryjqgkEnJDhYXvgPAqIVfQY73ligyqT+sJTmstP3iG+HR\nqrqNcU08qN2Wu+4KxGuayQArQZY7o4IkaZIA2+vcNNSRi7kEf70kRt1R7JqF\nc3ADqUODuMaEOnNBm6eLo2WeqO6O5Bzfdx6RuNG4CFU72qDU0AzB0c1wChYX\ninD38ouSPeVSBIWzJm43OJ1iOp21Hnd6Tcrouj1mzg7Izr3jR1DLoZl9c4d9\nxWBTaQBzxUR+I5es+iuWoIQ502wWLrhx19QVoJB1IJUh2pgYlb5TRJBUdjjY\nHY+T8Q6y4FhSSoMkUqs3eqR6iyZx9j7ir3u1eBK9IY+lapI2F5h8aKtbGy6N\nlJmm4Af0yWsDZqRc7mtSX1w8+4X+I+oCd83qxBPsM9BLoni0kXVUlImj8HfW\nx8DeANawy5J/mdP1nNAKpERggjL37R6/L6itQge66pAYUy3960KOed0z9DJt\nyTOupdh4mPbV4CrgMgnjEjcWjPKGr2D/xAeJKHfYVm5rqApn63SVSJAvdJnL\nX2KHb5WW0fphflMERwpQk8nEHnTuj7DnpUbjwgvf5PsUrQHJtLPkNYd4NIZa\nTFtD7FKcPbXS+h+cOzSq0e5uYgYaCIcgv5p1k6/hDnS93LWQEujEmeN3nf35\nFxEu\r\n=rc2Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2a7e3da3ba5b60752d1f89dc6a18b80e8987097e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.152","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.46"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.69_1604634764190_0.7339040170390543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.70-renovate-non-major-460774ecdb2d4ba22f53607f0b494799b4c17ae6":{"name":"@balena/jellyfish-sync","version":"3.0.70-renovate-non-major-460774ecdb2d4ba22f53607f0b494799b4c17ae6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.70-renovate-non-major-460774ecdb2d4ba22f53607f0b494799b4c17ae6","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"18d6d0c608be973b88e8f0d31fd40d604f2949bf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.70-renovate-non-major-460774ecdb2d4ba22f53607f0b494799b4c17ae6.tgz","fileCount":27,"integrity":"sha512-bswp0VupMKHtoEfL3RXqyuoduy/oOrtQR68oOUEKVtsCvSOZqaqskF/n3Z175SZHwxPi3/am9CPCBwoJbOBB6w==","signatures":[{"sig":"MEUCIQCDt9+k04yO1Tf/r81bp1AJaH5ZJVV7YaSSLxm679Is4gIgdsohE/LcG32cWGXT+jsaddcV2qszL9DiQvTAFr00MfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpNZgCRA9TVsSAnZWagAAsqAP/1yoV8v0QpFQr0SrIt4q\nCElRDxlH/3Ac7+pbaU/pjwOueffQx3jO1/sLcBFtzs1rfQwzDxQDjqkihorG\nwZLCKG1OBAp4Sj0fInYyVk8XycPXqV7UK3Dr/5Lh6UJ+GCcdJvn27damlVeP\nXxF/v7nP9FILhf64lcDB1fFvKJ+dcGkVeyq7cBR6h/O40V1eMjjJjNBHUHaB\nZV5llYlRClAChULhNn663qy6sdbdiOCcILz2pxbz0/NFVqmYZ7gLf3Ve/DOV\nUM4YAqLbCgGfGzQSGr/21jLD1EJx5Z4n/EhW454HDLLKNW7ebGGpu1Vob818\nJ7M6qiOVzdYYnMYzzSbg/Bvz0U+uWhnXhxRfjEwKFlgqGkmI300g2iHpisye\nvVuzaoGWVilcU3pE9JLmaGOnOYGq2RvuapNbX+iz97wrIi71uiCesvAVCGeo\nSalhlxpX5MtU8LI/wFWgflDB78gzvAzGxgXktg41J5gOsEVJMcOsWJteAZ9u\nf0AHlhLUcEPeiwr4YDE1B5ZYttTuUxZ+amtNqWwIfsac+iPk6w9JYLw6KjJi\nntvdoK1J7rWtCP9VI1aY2wbzR8fe3CCbxEFAaVhBjH5HOigTRNG2XICTXV6A\nLHIvIp8vtxZIbDl3sixWcZdQcvDqrh3nwTB1zs+JaZX40ZvGGG614cFmvHrE\n3YF2\r\n=YOI5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"460774ecdb2d4ba22f53607f0b494799b4c17ae6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.152","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.70-renovate-non-major-460774ecdb2d4ba22f53607f0b494799b4c17ae6_1604638303635_0.6843517277189759","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.70":{"name":"@balena/jellyfish-sync","version":"3.0.70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.70","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"79df1141e707915fc4f5896fed48436e5a6af52c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.70.tgz","fileCount":27,"integrity":"sha512-iXwKCgPBiyRv/AkDeDDVseQjgAG5CwMTM2RnrWsMfiweP0+pkgrw3Qq65CuM269YJtRzAGFA6GYHZLien2srpQ==","signatures":[{"sig":"MEUCIGH/Wlmpoxlh0wZB/GOaf9alP38dT/08mXJTFmfbWbzYAiEA4d/x6ldPkYzyI8GxgfJCTR2/HvOyvyzOCt68174vw4I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpNcoCRA9TVsSAnZWagAA2CgP/3yko/d+Y5awVEwIxEGd\n7I1n5T1eHChGYOEL8+R7K9jNkWW/LsTo3jTMPacsFX8M2ccOFCOEnR1o1dgA\npUskfelliy6onF2142hQiucH3DBook3BkB6JML2noXQcwSz+x2TPckNDeWi+\ntlrY7VCstht+wB2hPvUq92YhCfEYnalQDDUMVF1yONqpfsj1DTajn6A7V0qK\nwcT95zqesrJQXR5r/g4/kRtXQATREr+GIU831lTNEacE/mZ4YvcCWxi/lwIZ\nFFQ84BJsqaSPyLyOoDGSnuqOVAuqdtf3GReTAdqJlfNB6QDIoyxnnrZDToUR\nXzSEjqbPS/SsRo0fZAOtoJZEr7yy9TMrAwiv91gM2H6CY477y94wI+1fVUx8\nNXZz8OjM2jefRZs2dHyMr2312tSIytENRvPb8LotueS1wtG4g59OjAdPTxAW\n8kLINIYGIv5IQQzlDXGBtyVO4zagbhEVLwBP+cE86tofUq/sRv8cr4wowVfE\n9/Z/aR2nSaJZ3IbeW8vcect7KcRaS9rdU4BCB0IQseIiXNrxl0RNrxYc+zjd\nukT6A/zm4ctpo2TzPmRYmkP+YFR9JrS+VA5jbANpPxlaiSVCbgYQxcV21BwN\nCJ9ZtFZIsGNJh8ecLgrjeY5heL9TLDUeo8y01ECfNZ1lZoIA8o9j4MCA0kU0\nCNTO\r\n=vAtw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e87480f08af06b67a0c7ebd23d598cd95b4dfade","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.152","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.70_1604638504074_0.17735155172054284","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.71-renovate-non-major-a3764a852420597eca12ee3291d90350bfd48aa8":{"name":"@balena/jellyfish-sync","version":"3.0.71-renovate-non-major-a3764a852420597eca12ee3291d90350bfd48aa8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.71-renovate-non-major-a3764a852420597eca12ee3291d90350bfd48aa8","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"623cd41a9bf3db1e2b6f0d86a88d836297498030","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.71-renovate-non-major-a3764a852420597eca12ee3291d90350bfd48aa8.tgz","fileCount":27,"integrity":"sha512-ZRJ8VCx80OCBtqfV2IjLLWWkKuSBwTZqu3m7+ixM8p/jgv5cLO4CSNxDdcktHsxSCt3c2gqyVHY15LSpyac+Wg==","signatures":[{"sig":"MEYCIQDrP82JbQlKHZGqFG7EXQZ+3wC0VYTAxKpSwLYT1RwowwIhAJOJScZBQY/oI4sVS4EbT57zUJKYBx4Vls0ppQUTgRfl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpN45CRA9TVsSAnZWagAAG0cQAIEXD3esW+PJEWVIVfMX\nx4iLWQ/+yD82pnJU6htPWeWHdeGYaDtUOSSQSQHMpa7aNJwbqqzDsSAgfquG\nH7ZNVnk7We9TFplpPyktEMoHr5fRDLUbVWATlGGA+7lkqr3SS1YMF7tuZOVa\nG84o+R70MDkK4xTmMTX8sWq+JYzo2zcWo50P2eisrYM9kljd+Kl0aKHpYAy+\n4S75h0GO4SFvJGths3/RL0VVgvG92kRXlFOfy/tioxlPGJk2McGC1Kw8OTn5\njfUoBbWZvuXvk+6by4pdoF3aF9QA6w2rCIWGjHHBOIq9DMKcRPU+ws8FY9IA\nnrZTuEgPCoU9dVFzECT2txuZaxcBwh9p0wHrayBgK/V4EQqs0vanCXFXK8QZ\nwanmj2RZFVW/QJy0TTUIME1YyiJ7SZ+jtCGhmXVg8EgkotqxWBZHLe29dOQG\nFZWhp3+Y1zCIWONcS8wCQopG8h1oofs6Vm6l0Zdq1yu/pWo/p/tUCn7wCd9j\nOKBxvyP7s8R0Sa2GBl8UAxcTrnXuVQVYlrxAruWv0Aw8Wqfj9xdd/lVw0tyy\n+17qLqx/HIB29XZ7PqgMYNLCODMAc/QypwFrLEbJG2gUey6PGU7J7Azp9PnM\nR0cwurmb8gcOKXc7h+heIsC+wMoOKebIGUlkG0+BaI2l9YjcDLM7Jz4iMT2T\n4Cy2\r\n=aebV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a3764a852420597eca12ee3291d90350bfd48aa8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.153","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.71-renovate-non-major-a3764a852420597eca12ee3291d90350bfd48aa8_1604640312905_0.9860065498309614","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.71":{"name":"@balena/jellyfish-sync","version":"3.0.71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.71","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a94ecbe5366c334012a6e7d233d48e2e5a9373e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.71.tgz","fileCount":27,"integrity":"sha512-xRx7EM/gCP5gh9/nAUzY5WGvRiZOG3/+KKfe+f2iYgzzHstYEwYcK/1Uo225Dup7iPbUhJBFKFQD2wZxHkZrRw==","signatures":[{"sig":"MEQCIHMf4fEQFNjtE9gmo3qQ2pT2wlTOBFOzdeWqWQ4FUpK0AiBlSyGSVVMwKLnjq7o1WWaprCHnTK2II4u4pAOQwcCk/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpN7cCRA9TVsSAnZWagAAPYEP/1mBY6BbBK+zwYEYXs0V\ngc3RNX/IByaDbK5v7j5aox072e2L9RoSZYMm3JRHBkSlZE3vzWeO2VjBGkzq\nJRCXylSCgNXWw7q4Zdjp8mYPw5U5fL27PDm6txybiOm9a24i75YdRfTYoDI3\nh+E/0YG4C3Daz+zF7FS+ivbiXOqURqe/mFXXmL/Iv+jK4qk50us4efSoyYuY\nqXmy2b8YTkdOLtrq9obl/vBmT5ziCWwjMw26GXmuG4dbyTcKEvUdcvZaXL9a\ne3JMYMx9sF+ydVkwzyLoT0EPOqW9R2bgL7a0Sw4Mxq6tJHb9C3micVeb61dM\nBxXUTQG+O6U6rmzcGIaVBiJu+wHOW19MeU88iAzOdc/r75Sp2sWGp42Erkuv\nLbuoRPIAeqPC62poIHiZyOyowI7WqcM5+MiciBgE/2r26yS8Tmx0VOubWd0E\nIJrvFDcBIMuWPzaTUsifSblSZlSd831zMsnpNqNQtWhMCjNIr+DoLBxDIT7g\nWmRUsziTpjE1qI9UbgNH65+Bv+0HeF2vxrrmuCM9k1NngYQX2Whn1OkCL7JN\nxFDjZeLSUFYA0JCadUNfv361+Bk4lu5npT/yzTmFH3OLcMr/RQhs3VXlIQ65\na9A00wH2cWzWsRL1lnIIbNFRnb+dUR5a06IgBAd612n+nFVe862l5vTTM2Rd\n9Z8K\r\n=6Xcd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b696eddc3a870e5c260db038acbe574efd9f14aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.22","@balena/jellyfish-metrics":"^0.0.153","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.71_1604640475769_0.21940248211486413","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.72-renovate-non-major-2f3627f8379a6c852b3ad34932797faa7ac91dd1":{"name":"@balena/jellyfish-sync","version":"3.0.72-renovate-non-major-2f3627f8379a6c852b3ad34932797faa7ac91dd1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.72-renovate-non-major-2f3627f8379a6c852b3ad34932797faa7ac91dd1","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5cbd00e5f18572e1a46107f609680c9f50e585c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.72-renovate-non-major-2f3627f8379a6c852b3ad34932797faa7ac91dd1.tgz","fileCount":27,"integrity":"sha512-C8LJCUvAL3jx/pGN17DR441wuhzuk3QpjOqtFQfQCzk/SMZgK1oFZNJqQb94UdcOKJBqzezeqgvGwpQKwsexfA==","signatures":[{"sig":"MEYCIQCZ+3lUdetFs2JA1VLiLusZE5EoOyqpWlhspe953QojnwIhAIHpEOIajqgjmw7Gb8zoqm4+2yVXowz3RNJOQoqO3YXg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpQH3CRA9TVsSAnZWagAAtXoQAJsTGRQRsupOYRQFe0on\nq14yUbtnH4YhO6gL5u78jiY8F8TjKeQPbxfU4EIWyrlKBwT8FaPKTrgDH2+R\n/uFnyJCA9twUpIMmb9lexRaYo3xjvSwTnKcvXCMKcKKpIGTsbcoQdedasgSy\nJ2lCoD9DEJ2TkHUd6XdnJ8DUrMJDrkO71pWXRXpaJq8yPrOtOvvEeFUhG/i/\nvmKllY1GMfS5I5UumCxH1jlMOo8J2ZxoBz0ukrbBFiLnxzPZcSYv5ySg1W/A\nS+6lpL/9DhAVA+NNzvqtRop9mV4XqTxoV8EPI2N3Qkahx3eahn6PZnzX2TjO\nkwiFUZTgxA8wxEiAxwL2wGbyX1WrMCbm/9+3118yM1OqUyAU9U/GrtwIo6Pn\nmIrE9jsPNUeUZIjfNLQjVQwXwJMyPSvCX6SPGpep09ya5SQPjdCg8HDJOi8E\nklvedfRSqjBU8d/swpv7BCsLwoKd3qKw8yCg/qJoQN51Drz4TOot+8KItDm4\nsTcAomnFNx+otqtHJuXhpabbyyXvEopDrOaISXnG5UwPMRGTJpF77QxK3oND\nEAokt4GNhSCaB9lPA0/aUX6BA3V67sIIHD2Iyzjc9fkeA8szk38XRFl+qzbM\nSbr8whrJtM8FHMP2UTglQ4z9ct/B3M0XB7NxjqoTmzuTfR3798gl6qQ6wXiA\nl2wl\r\n=cLob\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2f3627f8379a6c852b3ad34932797faa7ac91dd1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.154","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.72-renovate-non-major-2f3627f8379a6c852b3ad34932797faa7ac91dd1_1604649463043_0.11580430614668913","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.72":{"name":"@balena/jellyfish-sync","version":"3.0.72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.72","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7217a1ce348cfce12549a96afb1bb3f064571367","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.72.tgz","fileCount":27,"integrity":"sha512-/2orAWElD1po0yGqNgy9zwq0rBMkOQi+NE9QKTFyJ0UtYb5ZSEuFjaxlKg1Mkh9QnrdLmj8/cfcG7ylw7/bzEg==","signatures":[{"sig":"MEQCIEwv8HWeCUVu4vRjmsrOIZXekUTSCM8VqvQbcKUf3OIPAiBXH63bKNsd+GVoFaI/UlJO0a44JEPRDn9GaRqEgzzvtA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpRAeCRA9TVsSAnZWagAAJukP/AwSgkOphNo62Y8FMikK\nxNjSsj3MExYCOFiq5e6nctk7vBqfBjakFIuiFpey+Jnxure9SVIFb1GdAnHH\ny6umvZta3FK5hMmw6O1f6k4IpdQH3U7uJnZzN2tuQ43yvoUFrH6OYwr5cZ78\njZ6D6YmSJqmtDto1Yx323rTZvmD3nO4HvLUj6SFqvex9PqieBkcqcNUauT5j\nXl9Hbw+vINUZeDTQ5CkFv+p3Po8u3cbIbVK5MJLraLampfwhhNmI6lxLU7+R\ngvRHDdf35PFlg3900xQqdBTTI2LPjQi0T/P2J8PFZMDrlTNDbrTQ/gIH8hib\noCxtUE/ooDmMom5JYmJpcAdmbn4K8r4D8BifAI6wYmfrv4M8ZIH209Owmhn6\nMeUkPD/dTVXadeYQKdaz93cgBd3VOH9HRgFivNkvUwKO52ABGSxYRu5mPHns\nvcI3Q33TRWPJGApjxwZGosMAB4deJSGrxm0EZvqVA6E1Sncs+6WQ0mefCu6H\nSAwPx7c/osnlFWDFwzpZcbBeWuksJDrtAvJDXoIFUx6Ns24J0xZrY6DQKWnD\nyCB9EPoE/eymQhFK0Jwmnd6VNB4QbBEwmP2hAh3iq3uf35FYYPaX9BE7eaS7\nYVGqeTLsrckIpRUGBomxeOIsWPE6WfART4kqH1h84Qjvc6OMKM4AjrgLtFHX\n28vF\r\n=/OLo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9ef897afef228980587d144ce04ce8bf8ef2af72","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.154","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.72_1604653085657_0.15208980216444168","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.73-renovate-non-major-6cbd25e1d58edfc5ae5bb6d01c60786077e42121":{"name":"@balena/jellyfish-sync","version":"3.0.73-renovate-non-major-6cbd25e1d58edfc5ae5bb6d01c60786077e42121","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.73-renovate-non-major-6cbd25e1d58edfc5ae5bb6d01c60786077e42121","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"757d00bc0759ece1a012e84ad485135c17c7acdd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.73-renovate-non-major-6cbd25e1d58edfc5ae5bb6d01c60786077e42121.tgz","fileCount":27,"integrity":"sha512-8+TG2r/fCXdS5OdLLFNGU68Dn4NwXKvlJdFfkw0pFCh9LhAni/zvAa4ZnSN1YUAjzPtV9aHeZt7622l2lZEGCQ==","signatures":[{"sig":"MEUCIQCphf297BCGYGsETlJSKf6JjgoOmp0dRhcqMLbEx6QEVgIgAptzUZO0auHmWLwPwRSmVMOsNdfRqFNfcgNMTFDZy9s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265366,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpR1WCRA9TVsSAnZWagAAtj0QAI+J+Mee6N1dMB7l4jml\njYOYxB663Pn2IQW8Qo+gf44LGx4Y1NUk5XnGJeMcw8RkRZWrLQDZK7rGl1jp\nJnEOoZd9X25Dz5X5jsk+KuM4bP6RgMmT6K/5h/BiKjL8J0Dq6TvMi0EQSmth\nYPCVyZlzYWRVyFJAzUdpftsbe9kkh9yLczUNd2s0Skwi3mVJdyUBCUPHIUcy\nBj5jXLUdEUGAF0ecL5fw7rW54c+Z0fAtPKy8OE4YY/0bNP9urRkKFoljSbZ7\n0CYxgJpvKCSUtZorfW8DJUvPiFLej+ppsUmZoiaF6zLTX0pH2b9c28RZyMY9\nGJLquzBm8o8Thy4sWLFHM3EKloyeYhW5QWSISmFKCFvJ33erRHpfqKAgvhoL\nOmCbARjhTMdC/bTMVu0vIoyS/V3kYGvytbsSMtFdVHfZMaZUGF12zJCdAx3H\nnmo/QKP/QcHSS32U3QnEhid/Gsm4lLlsw8J7S/AuD8pfcWNn9g6QSgfM/+9A\nZewUXLyzC9rnKTzw4IxhK4W6f4Cqx2iFRiNeq6kagrmbPCVj0ubBE85cxp4t\nbLkVrB/TlXbg3bZrhubIsEoKEXAOnmyLDlc+fB/BP0OiG4be8Fp3KFvGdQYF\nyvPWbcyYhaHy8l/IBNP3XIwG/iyqguVzFog+KKVBk4uSk/QUjl1Z/XiO2oBw\nLL4H\r\n=XpxA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6cbd25e1d58edfc5ae5bb6d01c60786077e42121","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.155","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.73-renovate-non-major-6cbd25e1d58edfc5ae5bb6d01c60786077e42121_1604656470164_0.8733445568579725","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.73":{"name":"@balena/jellyfish-sync","version":"3.0.73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.73","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"024dc4b40e5386c91478ea2aa3bdae7ce697bcff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.73.tgz","fileCount":27,"integrity":"sha512-1NgBrvMb1CdmqRFzEp3Ax8S9ejJTMG77j5hERslcEcU7AtclEJ7h5SCxztnChHwtfktzbhIudgFLC3Tik1Td+w==","signatures":[{"sig":"MEQCIAKipIwG8159vLSiYdfohsLxI/1f+UQTjAQA4xjFJ7/oAiAysyT7mf/IZPjWak3bvViR+KFQAUkFm2V6hQLyRIvi7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpR4rCRA9TVsSAnZWagAAnjgQAIppJwLmV34kZWFjbUPu\nQDOY2Gd//L+vAWx0PcBhEt06jRCY2EKsqOW3jrLvQ50YITwaK40osfDU3q9D\n6+MSKIBG6Fm6ZlAzNdo1g258v0omktBzetT1Q3kAi4aH9CtmsdGDdRqyxeJf\nsB1qpnJXWxlQ1qjB5FBAHcZJUirucRkiAMJH3HW5cYoRNWlIy621inhcRmG0\noGPZ5c4zk/c6yuOUP0FK9+2uIUOsl6Ldchux6VXcktL29EVrxE0P1vG2bTNM\nOepQatDzXcjYW/VUPJKMilB0vWaikARtOCtgFEB+TDMmo+AeWyFWpRzf8KjR\nNO7bX+oBKg0OQgDeU072G8l+Gx73ChpEH+AGdTEIgqTOSCByiC0NnfYEscup\nSHSOgx/6hM+P3/FcSv2+9SK6pBbrMlF/Vw1P9UaKpSqAuHhEz9g1pwDqDI92\nyJkxUtOILYrAgo3m9Q27o7WCf8g/yLCFfer1XBJzXzTzwD8D48zam7lik+NW\n5CJO+CUBnCqteRIHNUrcdtwkq72MqPwMQx0hZ0oAHDitch7Dwx2O/2dDRVXq\nlhfZb0rfUQwx8UeolhQFhlg6V3rVisoGmTpvWrNu1/Fje1xfYSRCIcmKc0cx\nPgfd5st9Xom5YM27WfnuhAxAid7f5zfgmNf0nr1QUfWhZyNPHyA0ODYXBpAR\nKqVT\r\n=Ndfi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f3079d1cfd67825e141db3302197184a74ff8b7e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.155","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.12.1","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.73_1604656682980_0.3212091156697987","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.74-renovate-non-major-105125c174d3157dfc27fe77a47f1f98ae8be86d":{"name":"@balena/jellyfish-sync","version":"3.0.74-renovate-non-major-105125c174d3157dfc27fe77a47f1f98ae8be86d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.74-renovate-non-major-105125c174d3157dfc27fe77a47f1f98ae8be86d","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cbfe93966eb742af2928e8a18f842468f9596212","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.74-renovate-non-major-105125c174d3157dfc27fe77a47f1f98ae8be86d.tgz","fileCount":27,"integrity":"sha512-9K5ThApfp68E5rL9Y8KpkQbn/nh84ElFckc4C1Rh+Hcz6Qq8djZE7MlWG/nHNxeP/YU4EOvooWh9G5e1P5U5gg==","signatures":[{"sig":"MEUCIAzD1VWer9TZwUpX74U7ULENuXhLTKUiBBGQNXNSAynxAiEA+UayOSnBJIVYluiWbYdqYafIT5nVEKOf5qt4S8XrVEg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpgL9CRA9TVsSAnZWagAAd9cP/Rm//V6x/cqwJs/eO9qO\n5hSUx7Cr3WXwoWyIUFsMQ1Mg9XsSKw/LQVUydDosaaIcIZVvKDV5uJuz6jWi\n8bgaf7ZnTLtrH4pvprqH35BVPhWBsnQ37G6TT8nOyq6gd7iAg5skQyvQxWVr\nS5XzRVgH142FAxb2dqdoKjHFXiNMOF0HoqsfX5+zaKBvFo4EJeCZtTs+SAsF\nJ9zcxP7xclvx0gpbLXJ50G4HXWEAvuzeDYod20oLYzSDds7hQoXUU6iXaaGG\nqGepCfG29Z0sc26VlcQKoErfEvn568X1dAdLYDr7QXJNmqNt1n41mG+7aQqM\nDln62GETfHQgQXl0FoL4AJWCuko6Ct9ZrSD7cyXgAbwqNTZZdr0Z6YnyiTin\npk2z/oeszfricDY7jzMrRB+27TWPh3aoXuKxAAa5+2cN70mYCMKCs24FZd0a\nwCtJXsYlTOBq9krUsk+XjfUkZJDm5qslsRdraKuKCdASUOXVW56ZRt7hapdX\nH0jZfamrEdj0oDN9Es8XrdU+XkqWbzeKBB6M7epjlKneKeMmeqXsK54RYbS8\nA9yaduii3SR/vFEhc3hs55eBuLGtBp8jiJhBlPpsqi6UY3Iq6YR+GK/wYpUM\nUM3eR4jGvaVdLZSwLX73j3r+9sZCe6ic1TgncxP6filrrOss85433OmDZOb6\nr6EC\r\n=c25T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"105125c174d3157dfc27fe77a47f1f98ae8be86d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.155","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.74-renovate-non-major-105125c174d3157dfc27fe77a47f1f98ae8be86d_1604715260569_0.8156265392760482","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.74":{"name":"@balena/jellyfish-sync","version":"3.0.74","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.74","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fe7f842b0ee376cb4d3d6ffdb21f524ee6b68da0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.74.tgz","fileCount":27,"integrity":"sha512-LSpdO2veIdF2lTxzs1rqp88NMPfUG+rkNEVt6XbNbbG/3XrNBnE5Ui7V9vk//evTtiriAGD16eDNUUy/WW1vyQ==","signatures":[{"sig":"MEYCIQCgg/9v9DKSUz+Slu8Kux3xrUS+m0Xc7lpQn3YVs1qfSgIhALPxODZAgVfLgb1jT6uMggpHbdhqOGhzRizh7sASYlkg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpgOnCRA9TVsSAnZWagAAGPAP/2wwbooNhOPyfpqNV0fl\nBpXs01n/NS8Bs3tYlQQgLJoYA43fzApNVgZgCXzC5d5OsfOKuXJ3ccH8rBCE\nGHJN4C7PBp6JUVaatZTblHIQ++no4boRSL9eGs6Ob8WEtr1o94zwzltuIKMg\nPkuwpOhWeDNMYCG7ksPSqSvnUmumdD/I/Qqf2uNuil3lMB7Hw9iwjnJn4L2l\nqQ5z3CSDKGQetyaz0GwFOuyNRUEa7sNRYhGEoYhSSSFyKx0fTdOg7koyITQV\ne+GyuAhKRnXnhlWwgGpmfZsJnj52eY0iQjciSDUpKYLHSQNuvmcBRmjs4L49\nxbM8GWAOhb8QA0Lht/wlVEqPD7st1EXZnp7KSO96EevgbmVj45ffLkP0Cl9h\n6lHQ3t1wm6bsZw63s5nfUUj4SEfd/VIg18hDxj8EAdRIJCt7UegNnxDzovxJ\n7RsA7+t6BgAg5YgLTnAajKuRGm07mXrcXzipH5Y3sr+Jm0eUOGpm+hrHe56q\nsxxTzbV0KeEmhE6hRk+C6Ce23PCAEsVZ/4jkUKovfZGT0jOvnkfwl0/yfDGc\n/N4YNbL2fQG1IO2xEEYV+oKen1V7cd7LSz9BXBqvUzbBAbzbKc8tzq3KpPKV\nckILlwaLmwylA1s/gILCZwfiCvIEYla3QPlUVZ55Qt5Gvc5Of+mUB2Bwl5uF\nlHwb\r\n=jZBL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19f5629d518ec7933204c2de4ba0391114d89437","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.155","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.74_1604715431510_0.1930142079919941","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.75-renovate-non-major-6933a081a49eec8c585039093d545db06f615898":{"name":"@balena/jellyfish-sync","version":"3.0.75-renovate-non-major-6933a081a49eec8c585039093d545db06f615898","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.75-renovate-non-major-6933a081a49eec8c585039093d545db06f615898","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"863218f6a5422cfe05ede5690399e453a01b36f8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.75-renovate-non-major-6933a081a49eec8c585039093d545db06f615898.tgz","fileCount":27,"integrity":"sha512-KZcWDYKTfB3W2+zyPkwTCKYS60RC9e7xfDQX4O4/uARhLqgL9e4lZYwa6FvHUY+PXjpPIYKgbxpvnzrlE6g6DQ==","signatures":[{"sig":"MEQCIFemVavgzEOlEhZgN1bLi3M0T/XRHC1d91OiKFKq2ORBAiAEfDPkn9sW207QAiSasY0kNGoj52be64eJZW9tmXymuQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfphxaCRA9TVsSAnZWagAAp/8P/RoCXSSWNapdXpddMuT6\njiP6p9u2TQZEe+yTSeYx3LBlqW3LDbx1qunNAGDmKyqYAzm1zxcvFfQ4eASL\nD//ulkW2Rfd8dwYkP3iYe7DiGpfdMR/Y2q2UgGNse7n/UZKJdyuBjDtepRwM\nRlBNZIDuyFN6874B1MG7kNfJeVFhuz/WhF2PPTqifeVo2dt/AfZjhui9pXDJ\n7Ec4a8FDHWtrNqATH5mNrF53QqDTtCnIJLOFbyeJl1X1uYAlt/PyVDfRUiBS\n/f/qMRbriudt/DN+WZQYwoWYn37XO/3BAkHy/CRliF6+/QA9Wki5JcDefa/e\nnI21xopPi98CGxqu00anfNJemkpwpE5miBk6F8jVQl7jsbyw025MH72nDFgm\nCSjbO+sYi67cu1ggvdmLWwmvtWGdTh+2dRRvZsX0XTOxRAd1KKtKX0LFxdD8\nHPDrDBjcGgYAJ3y2kgtbGMTeIWhCG4GBngprYc26P/uXxebOK9Kbyx17bY4l\n0jcLZj/7u5spKIwGVj1uGkzsTq1R6V1UWA+cxjT6GXIdM9Yu+nxaMONg8Lsv\nHz60dACgUXsLNt5upYmo/xCY1PxZ9qXJ8fNMSFhWqlsESNTzTscXyz8fS1N8\nAjNa/O+PDkagbvLbjP4ev/B9Fjc80ZikmK6LTQJhJUOyFkHEk4Jzvg3btUgy\nBs7b\r\n=i8FY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6933a081a49eec8c585039093d545db06f615898","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.155","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.75-renovate-non-major-6933a081a49eec8c585039093d545db06f615898_1604721754257_0.40284555657089105","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.75":{"name":"@balena/jellyfish-sync","version":"3.0.75","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.75","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"559d24745fc54948c710a5cd16ad06445d3e9dfe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.75.tgz","fileCount":27,"integrity":"sha512-4TdHLvGgz8r0w8VySAtKsjcKaCmJAz+Go4YKVnJn7FVrjnXIz74SpJEFPPAPMGTUHrF1V3BAD+82uarkzmJkgg==","signatures":[{"sig":"MEQCIBU/Tyy8gzJ1bW6XocpyUWY1/NMKZG9H0IS+uD5vqZbMAiBBIs6/BwNZbINSvmTrKrglr9bpZuoBXT8tFbxl7Xb2bg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfphz7CRA9TVsSAnZWagAAAaIP/3+iV6lisB0xCoy89r7W\nNNhMIWtc6YeCk49H82+Nvs6QYgBtFdUtoA4Rb5hKHGL9tUOeFaTyQErAICIE\nYouHkh2PAwYcSZPPU1mc4y2c52fTrH6agx3T7Atph4nou4t6qx8KA8bDfmH7\n+sL5oRuse1VzDTKp7cf7Yb9l2k0YDwTDqD+JcUDk9nwzm+sl4/UBnGlAmwcY\noWfGTlLFT3+RamYl8S4iOxcDq4K2k+iGyBR5rpQ7t1+9in23ISwbNfNSmjWC\naYyyt+CUI7dV69GImK1PiVqyzv3lgAx8aLhyUyRQcv3vV3MN8mPRVyu9SdBl\nnAwdSSKEmFG+K5ESAp4NW+S22UA3BUEL1GDGFjIDoSymuAElCaOeHsbI5OzJ\nuKHoGn9xVVXBHQRqfKGmfFf/8gpDFSSBzfck5FSy3kK1vAK8awRQS23nFuyK\n+E2ZsKnYttX21Tbu6dHTnphg2X7XRu6MKwkY2KVsGEelkByPx1N5N95J26we\nBxzBJEw0vM06F5TfZY3lC80JJuLOrQAuUnAIw5KSJLyb1yMTwE8CYDKE4gFc\nX7bZy5x+IKVeFYjTSceLdzM6WjkJ8O1cmk0E5nKBsvfmOlVRVXw/y8Pwl9T4\nV7EiD8iMHhJbk/onienc5t7pMWVT36rAo+e6KeoIamM55FxarX4BMCFFtQF+\n43h/\r\n=4h0b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"18af638c2eb356b9804df2ae6617e9be63181e6c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.155","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.75_1604721914574_0.30002715409069647","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.76-renovate-non-major-e87b037c8087b7891298c2264683cb654873fa4a":{"name":"@balena/jellyfish-sync","version":"3.0.76-renovate-non-major-e87b037c8087b7891298c2264683cb654873fa4a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.76-renovate-non-major-e87b037c8087b7891298c2264683cb654873fa4a","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0c104935cd7ee71d148f8af0df926fd4b6400357","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.76-renovate-non-major-e87b037c8087b7891298c2264683cb654873fa4a.tgz","fileCount":27,"integrity":"sha512-c4okyNXyJeUkanwbHXNySaxed5TAIpF4lERaozMMCgymWJGeJ2XCrZjqBaGecEu4T10S6NuiFxsui4s8q58Oxg==","signatures":[{"sig":"MEUCIQCuKWhMFgMzi9Rmnc8gcqbjIH2YgzyKDwCKZZoj4LUPLgIgSwm4NfpL3ofA3l+xGYS5NQaKl+dyb89MEYbClUDc8xI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpjJuCRA9TVsSAnZWagAAA+UP/2ccBPC86y3LzaHItQU9\nQgLnOqCHiKDjx/v0BnUrahK3Lbq2J9l1B6WjjA74sxqKSLg/XTpHz4x1XELS\nMuD8C+i4M7jnC+DEUri+naWlRn5KIpoHCSJrc/+M1ARR78vFv1M0BnavJugE\nzZo6J7rUswtxSvI6226G7pY49xsJr0V8PqlW8g8ndZ4qjoZFDvDXE4FCRLf0\nSoLUeb2W4Dzusb0UfZVtJJW1K+/ECFDanLA9C9EkN7Lm+e5Yfu9icXFPWdIm\n7XEI/o/BD9j6KzQtrKGw3SEbD8dHdwSf4PWn0VTj19sZiFZCoWqOFr8D1sse\n7mPM0dFn1G8XzJxSf6a9z/FS6q96AzJYsGnqORBFR2uxXiJ67MHhOwnKC29v\nJGaw5ad7LiY7H5yxw7i0vmC6OJKPy9s0rpxfpB7JH2bsFSoSuEmU5kxrShTT\n6k1AgYelaCvkolwY4E1IzAEnFoiwbrxYe2mjaW6vFmIPn+ssihGK35zN5ewF\nkP5cf+A5yrxA8Pv7UkdxMRJkkQxYeSkZggPQSHiide88fVnPxQbi2Y/Ua7Qs\nMaOvu3NJGnCI4kePcJTEQwhwHuXBTkK/u65HnncEbrSGbimpiKxOV0JGNydd\njcqI4uLq/hTncOfF6UPyAuof51vuQ+xt37FlvrIh7XWCdiVFhvD8ucjWqLHX\nAGv+\r\n=Iua3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e87b037c8087b7891298c2264683cb654873fa4a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.156","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.76-renovate-non-major-e87b037c8087b7891298c2264683cb654873fa4a_1604727405602_0.9773954354607697","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.76":{"name":"@balena/jellyfish-sync","version":"3.0.76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.76","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89b297fa8d695776b7bca13e5201c8e36172f1a9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.76.tgz","fileCount":27,"integrity":"sha512-3sKhl7zkzYCWykr+WIcz7v6GQuC9TJzbuOWdmq3AZKb73xr4mXSg4dXqD2P6s3d1TO/T6qLymOTvg9aVuqnPPQ==","signatures":[{"sig":"MEUCIEmb22u19rYjd7jlZfFS/L/otqMts5ZIulcdg/TxeVTWAiEAgAthF9Sk5QIu8m5F0Jt11Ggvd64bUUBi0Qz9/STZcpg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfpjMSCRA9TVsSAnZWagAAu9kQAKK3orGHCK7OE9aHC2ud\ng8uf2g6mlwkIrO1uul+Z94X0W3OYRQ7PXA10FO3e8Zefse7wsr5tHGWboFvG\nrv06USLFV5j2R1OjjDtW8uFqxMZUX0yLCXRpE7ehr3vvyottt50BMxAni9Mc\nGvpobrS65qA8SKUM/UIuRiNUE3OybQDZk6PxAjF79BT+eJWrBdGg2FTMX6jV\nLzxN5RtLGa/Pj14mhNQAnKDRch4DXwy+Ilzf5ZChbfwkXpr6zZY7X1K+2P5R\nVfd5F+ILaumGYxX+Ba554bzWEjaMRLggRIsCqj0hxus80E48J+s6UypKD/Vt\nuDUtiBVTG+F+UffgxCBfMQMpR13LuypRlsb/TvfK2u3e3Q/MF9ZkcwgRw2MI\neLCZWbUQ7BiGnLRH319IkZL1yvFjkGocmsptwFC+tib2KU5pHh21HYYBe/4P\nnERsneiwoOopDlax4JHrYFlFWQrCDe/mLyIxFkInyg1PiaYByRjcPsjN5dWB\nzMSfHPWHPxNt8zY2VeF12GIcUniMKkbtf5RZjwx/U5LnFxCjsJNHw7rcNlRj\nsR9pz3L4IUU6U/GJGnUinphmtBlmxy+oF+LIm1qOw4LwRJWLRbA9NBxRT+yx\n4hDcHBDmyX3WoF1dZRWrGzPfVreFoCHqNI3YFHVuxjRT3Epp7/optnyCG2U/\n47zL\r\n=vflt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"76200260b45437d50da0e9bb6346dbeeb824b975","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.156","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.76_1604727569891_0.6874923819992753","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.77-update-balena-api-sync-objects-3fc652ebb2941d42cccc61295ad9f2592086382d":{"name":"@balena/jellyfish-sync","version":"3.0.77-update-balena-api-sync-objects-3fc652ebb2941d42cccc61295ad9f2592086382d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.77-update-balena-api-sync-objects-3fc652ebb2941d42cccc61295ad9f2592086382d","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"petrosagg","email":"petrosagg@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9042e28736051abb0ed2cf143f4ae8c1a92d57c7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.77-update-balena-api-sync-objects-3fc652ebb2941d42cccc61295ad9f2592086382d.tgz","fileCount":27,"integrity":"sha512-OfxUqjyXV8tM6b25xMrrJnyPycw+IhIKOmqVTOZivYtJgVlWqP1ZXu3d7TGP42KRyzvpf0dvHGegH/hWls+vTA==","signatures":[{"sig":"MEUCIQCC21pFIUIp7NTyH6FAr25+5U2UPADSc6EKG3U82fnlRgIgU9xUHSvtSD44kp1Nrc2Rmnq06AcmwmJR1dRGNgytpn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":274252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfp+YWCRA9TVsSAnZWagAA1/gP/3AFQ7AV0holV412ISzP\nYyoh5Nd214KBBplZJwAVUH7mLGK67w2q6+evBKAa8MsOtDGtL7xgNJVg46Ah\nFIMrNl+Ap9d7DrAr19ZrYs2f5b3N2BFZ978cAXrgmOTomSB8out73G1xZ90h\nAond9JTDavwmyV8D0rr0HMuhFv/MZANb3nOJAeesHeUL5s30yBXbr6/i5PKf\nghTRY878FDeVUqE5F1fTzuRSdjNSHHj6e0nu8I5C2iPAcBWlimgvSQnyx9/G\nVYLzgWe48EQwTAmbBFFrdtgNtx3UGUnWVruaog9mocNvBeA4OJ92FpQtiglJ\nEju9i8socbWdCrMothSSGkiNpdfxHmwBLF1Dlt+DvIDhvNgzCdkk6SKY2Tt9\n5q3YTSVHShEl2v+ndzSk+XNXiw3oHyoCW/gcAbreAHUM+ZeC9f5ma+uMDFgn\nk+rJd1i4zpbWlmsox8ncRNqy9MI6f08emBF+OKvYr9wpAti0yMzhqJfLp17N\nybRr6YoN6XikitrnQ6yuZu/2/0tLWdfRIS09sdlicRe4YQ17qdaGJe/0rmYh\nP/QBSVUWBn2lMhCcx/gaIKi32gQ7BeXaf31meP1CFoEkxpKRH+zCUM5ynDdZ\njExTKKQGllDOUP2MyCqgEJ+3pNhx/ftoP7T9IpUsPr27bezWgwjJ6alwLa2/\nHckM\r\n=lDCM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3fc652ebb2941d42cccc61295ad9f2592086382d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.156","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.77-update-balena-api-sync-objects-3fc652ebb2941d42cccc61295ad9f2592086382d_1604838934276_0.24072947165424208","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.77-renovate-non-major-67ed54fd4518f123beeeeb3b60c30ad97d748573":{"name":"@balena/jellyfish-sync","version":"3.0.77-renovate-non-major-67ed54fd4518f123beeeeb3b60c30ad97d748573","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.77-renovate-non-major-67ed54fd4518f123beeeeb3b60c30ad97d748573","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e00c304fe1082226bbc588f19c231a4469e00131","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.77-renovate-non-major-67ed54fd4518f123beeeeb3b60c30ad97d748573.tgz","fileCount":27,"integrity":"sha512-jV5oUMtGHWRSjGZjOvDUhrO22UafLQcfWesYJR7ygud5v/0WYP1FoB+oR6qQwa8nlBzyoopB3hUHxANBRN9wrQ==","signatures":[{"sig":"MEUCIQDSUULMd8s8XAufFUOTuvVSZxP8CBXtxRZR50SKwX7pDgIgYbsIiysyPllphIrdJup+TxQiuEjoXiEHaq5HfwxVzLo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqXovCRA9TVsSAnZWagAA0RcP/2rvAvyAtSlQvWp+U1Xl\nNyJbw4XRsVspfRtgy0ZzdYxW2//OlsvBBN1Vn2/IgJtPAuuHwBxEi/SfgWHS\nxkMT9y+wWVMhyE4O4Kl9uRfJSSdm788860WODcld7SJT+osgSsEHe835d+TW\nKnlMHVD3mwiU/lkKwgXoyNlf440DXKg2sDX+E6783P9c2VkRqagPwJOb7ZX8\ndExB0ChVFv2ckS4yLM7YjyJ0DBfbahxQNXHFKuYPR842fWv7Da5NomyE9HEj\nGNgihyN9wLP1uU1+Aag3qaPr1zblXoibRxDC5U+HfswaXbGMak0AB1JA41ih\nExEPksujarKzcQYscLUJKs/w/eopvmcB3Lgg5HG0f5lJ3CLA37i8htRSoeKF\nRokRtS/MpsbXPESwUXg+bMbckKC0S7/o2wKBftAOVrfI3+gg0CcTa9iqIpCg\nN2O344lT0gypkq/80cmUeEWu+GoTcG9W5uveTo6iYwXrOZMYlMkhFViF4WG6\nYDUvxRkVTYyrrmHQ2EWcm6xxvxeZDWQec8/ExuZqLb6k9p0rPdmDQnEHhV2j\naXFBajJPvg0Qx7XkUMSdmMUp9QPW7Y+b0LIF0E7CiHdSBIPVkjwWgGZ6uz8I\n7jEgv5sZNQQUzFpfgw/4nYeS6UGAsa7vK9Ew0MPHU2ouJsl+71Tk9eS1kimZ\nkbLt\r\n=6v1I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"67ed54fd4518f123beeeeb3b60c30ad97d748573","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.157","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.77-renovate-non-major-67ed54fd4518f123beeeeb3b60c30ad97d748573_1604942382716_0.3702550815583301","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.77":{"name":"@balena/jellyfish-sync","version":"3.0.77","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.77","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"385ebd40396265bcab9dba7dd834af857b2b2bc0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.77.tgz","fileCount":27,"integrity":"sha512-3eMtTsrGsDvPA3dUWlxuJIXFIWW8boZMqbich1qAvN7Fjgt44b1TgIKpKpl3TzvqoOcyD1yUIxDZyMJqYJ5Ovg==","signatures":[{"sig":"MEQCIAy0ma6sPoHG5Mtdi7xijs2oC1EhzzibfbgSLde91jh1AiBp9MyiP6auie+tE+QGp2iQdCIHGlQ/QYS8lEp23DY6/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqXryCRA9TVsSAnZWagAAI7EP/R0wivwXXy0kSWB9vvma\nWBtKPoy94pvBJFQDHQ35pgAGVXu44CG5Ot+mo40NiiUFYne3F0VeB9+GotlG\nunf0E6ptmNuMtCWHW9EtfK39m4gfU5epsYnYvXhEXnrgPsqSLEDdzk7LIKHm\nbHHrHJiMOJSEU8VX13Zdhv6jHa64TANW7NOmTJzCthCyo+9Ocw6Q+GVCiYye\nOhiFf3d8IJudMj3CcCPDTOWWhuG5OTe2bTYEKDUtlm9fRAcs6/gIgIj6tZtR\nMj3x1xu8MQdT5T5LhvOlm9qASXJVsNMyeic3Mq0uTajN78wyqweHRboaz1QX\nuKYKk4UQ398uL0DXd6jjB50lTY/7LDWVRyjKAo8Pttf0GRRDYy1ekFMiuyq9\na0DZV3smiizbILVnrUTMHU7/6fF9xvKhDRadmwKdd7dUVWOeLxf+6eg4i3k/\nHa4g7Vu0PebJRMU8+nPSXziu7wgRPhRxU5ZPausAs83xI2Ll4yDRPvh7rXJ7\n3C1nk20X0k3+Lbay3rFVPwoFj/81wnjt0G8DwYVI5Hk+8U8SzJuPyymhlFAw\nbcREcSoHWHfT5Eh9Ez/N326Tig2J230oo8f8Q/3NwHqBhLV35UKWaCUNk2Nh\ne486EVccgYq6VK7zbxgLHRfkAwARkfe4b4lpofkiFNQ56qbnGCJjQW6yYf16\nVXJK\r\n=IL9O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bbbef00931694460348d7f45cf771a7e9ab9dfe4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.157","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.77_1604942577573_0.594251892002537","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.78-renovate-non-major-14f35ca29ecc3358eaf2c6419b02caead7a8ecbf":{"name":"@balena/jellyfish-sync","version":"3.0.78-renovate-non-major-14f35ca29ecc3358eaf2c6419b02caead7a8ecbf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.78-renovate-non-major-14f35ca29ecc3358eaf2c6419b02caead7a8ecbf","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93a71ecd07e380b9989f38e18ffe0b993cad8c8d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.78-renovate-non-major-14f35ca29ecc3358eaf2c6419b02caead7a8ecbf.tgz","fileCount":27,"integrity":"sha512-Wwhz38PdkWyuciKpvws8cKysHo1GhOM/4UdjrsVsLXr28YDL7AddKHmjKiYIxhMGs7UQ7GLDniNf2LR001D5kw==","signatures":[{"sig":"MEUCIQCD0NOAhyyIfhm4cCQJn55Kzz9F1FtU79UDim7VbVx8GgIgUjY7rDsBfOSwe05iQ/TXe+LppU+HfcUwFSwATZIWuvg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265811,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqeHpCRA9TVsSAnZWagAASEgP/imXj0FNb9P5C8N6MxN8\n1c81hYJowMP5eNl5hr8vIqljKnTIZRqFwZ+p/EaHvwqpByNJda+J88PCmZIZ\nwJm9TAFpTxz8m9yDPf81ltn0asV96mUIiPUezp2/NIPqU5clkQpKNRXmAJbS\nMHxjLgCP9y98aNMYtIT95znlk5z97VtZkF93WSNYVGx7G6IsJtkpGkgc4hn5\nZg6XkwW2rc5RcnLQx1gLu1Ydk+RvJGhMIg+O8rbyD1iLoZnFOygkXDcpRuIP\nt+BwbVeKj7Z6o45C98m6xzyk9fpzc7mv2P+nM3vJwsWGuTI/Gg3GtsQ58BFL\nB+9V47fowGmCvq3Kvmujsn9vKS78YJmCs4lnl1DS4pIeSoDO8MQ0LXdIm/78\npuqL4NuW5j7/YiGff2/XiYfVIlEXAQcYFUjQyWfrW3hy+958lOAog72gw4VG\nTwe8Y3Wn1XH6kTPshHcTQIVZd0TcK0LKs7BPE7xhFiJ2FWrO3AQrIKdbhIbp\n3+En+uTBtxMAzuluITLI5Zfg+xVK1Gw8zI8W5XJBEFqfMjtXFTfHy/2yof2N\nwIydWSINjzu31oTH4U6AqDflKxVFpdlEX2SNITv/JcvYcFwUrBMPk91vo9fK\ngLLlz7i+Wh1ReKh/jiC39eWhhM5/WweCGeGsFzNfIEXGELbp1ZOOTBdxmFBp\nVgD3\r\n=YBQf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14f35ca29ecc3358eaf2c6419b02caead7a8ecbf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.157","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.49"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.78-renovate-non-major-14f35ca29ecc3358eaf2c6419b02caead7a8ecbf_1604968936925_0.3937654333983409","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.78":{"name":"@balena/jellyfish-sync","version":"3.0.78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.78","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"62843b2d76c90f72e3a61d6d6a89209da94560a8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.78.tgz","fileCount":27,"integrity":"sha512-2x5Qw7vh9qV3otaqgaMt424OQh4c2zZF0oZEHjn72nj+7sic7zDRQl7VYp+isMvCuxF//EAcKyuz9lRyv++7Bg==","signatures":[{"sig":"MEYCIQDPjKpPEGqD/0x9O1dhJBp/3CqqA+3ijC0B128MKoPP9wIhAOBcZmONz66lxj0lYHgmEidAhJMq8U9dT0TKG0VAv9Oz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqeKvCRA9TVsSAnZWagAA1G8QAJUbTsMDkojw26P1fMLM\nJTnFDJpMJ3KT6LzKQ9HrOUk//uDO2vBBqizoOdXoef2BZW0aWUXAMC7b27ng\nbqAX0A15KwBXL4gXCqyd2e0xU1GhmSB/KU/hzGiJqTiQcYj2WjFwFFvxYlCU\njQJlBBLOLK++0cGCHukTpqm5cxqtCtb7hcf46jaPC4ChGFtUGAbrIp12ZOfK\nx90FEdeFHZ2l4ZZi7GGzKVQ6LkBVtG2ipk8LvISwo5S8F0dxKQXv4zZS7VgN\nrQ/fea7OajdCXgftwfcLT4XM/Nvbs9Cj8ZOu53TIicxxV1Ea2DeInwzJIZbK\nsZlUpQ0Ta7ionvtbYPOdH/vhNdxhNdVdbpLMGHewtvC74USY8cMnleWY5MjA\nh4LZMDn1BNbsnA2Fx8VjXPBgw6y86yg/mujBau4jbrrRPMo1mXCIDokkF2gL\na3wL6PnC6baJyZsfA9dxwIBolfmNCfC0aBwq8y7LjYfsC1OBLQVYU8j9jMe1\nVapHuB8e8Z2WxhTVP6JJaBAphMmO/8WbJRqgIyxGshkOm8f0VFy2Qqz3+Hub\ncfYscdRuuBtW1yfkukjfLzp4H3OQESUXVkrwYA3eZU32FF0PDEpvdFkW+6BB\nX2UYzPNw51oJXknX5tGyufB2lHQ34IAHEYsy+Yu5aXykOYIJusQYssgQ4zXK\nwhji\r\n=n1m4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2270c299bea8bfae4b28670ccae2583e0b3fd7eb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.157","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.49"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.78_1604969134542_0.7508078382624133","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.79-renovate-non-major-ebda4f1ce2268e6c0634e1932cf4712bcfff3e78":{"name":"@balena/jellyfish-sync","version":"3.0.79-renovate-non-major-ebda4f1ce2268e6c0634e1932cf4712bcfff3e78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.79-renovate-non-major-ebda4f1ce2268e6c0634e1932cf4712bcfff3e78","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d296862fd27541251dd95de9fa0629e41cb0ee0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.79-renovate-non-major-ebda4f1ce2268e6c0634e1932cf4712bcfff3e78.tgz","fileCount":27,"integrity":"sha512-zL9mmTJKIwbTb600mhW6sjl/PoPZLyB/S/W8Ak1DT1o69wZ4kM6C613oDrFEFaY6Fi0NKfBP6tLp8y0CEPPzKA==","signatures":[{"sig":"MEQCIF6Ehqi8mUkDX67w1kTRur3e702kO9FcVF4OSRQWSp8zAiAGZGXCuhq8SbS1rf1UmbAW8tJf/QOglXYxuzpQoQoaeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqeP+CRA9TVsSAnZWagAAjUIP/Rjh2CKLwmMtHYSq70i3\ne41vrRpcpJ3G48lzpMbgjma1B+yxQHr4IRE5Aqa/+n+DlmbuaVlLIDUoAnW6\n4rzs4jdrLKjhh2+6NQlGGpXSXjfdVE5mZVyfuonREEC+U+5+IRc6wywxUIyk\nHV2TSpStdYFcX+lA9Z5izM1qCPqwVS0zeFfDnDoh3DRPOUG3C4yf1sIfJTX8\n9Hf31GeRarAN7iKbeh5ERYgYpU43AxCRVowhTU0C9MYwfZhQTLX5pD8Ggogk\nn2nrk9iniFQ8SUm6P+DA0N9Tsgc1R+Zxt/19UcqWNWp6X7JA8igaNb2F1dBF\npJ2dUd+bjaVntZM9IMwEh/cXlfVyU4nng3WE2x5DqzUPk3x2evrJ4UAb/iH9\n4LboVT7/gVCrsBeW5XWIw62wgXuUH+uY7epcxzqZCdgZ3czFaUvg4tVso2SO\nVU9SYsofU36hKGQZ/eet4X2pClnH+q323pUYmxkWehpUTFtFhd4+XC5d/0dn\nQwRzY9D7d9L5QzUZ1hRVs9RrcpY8URmqjwDhg6GzTAbZetGgVliexf7CQUEa\nrg3HAFUrijw4oztambSEK4aNQT3hPZ/ZGSlt2FLRuR3Tq3dPhtAWF3/DMgkU\nuYrCmr30olwZDyGtPm8TQ+YQavGUgUqFhfmZesSMAmN3oicmhHijhV9HfZe6\nr17S\r\n=S/JF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ebda4f1ce2268e6c0634e1932cf4712bcfff3e78","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.158","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.49"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.79-renovate-non-major-ebda4f1ce2268e6c0634e1932cf4712bcfff3e78_1604969469729_0.18036757156442418","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.79-renovate-non-major-d7e9051a4f3b00f97e7904db25ec46b52030d241":{"name":"@balena/jellyfish-sync","version":"3.0.79-renovate-non-major-d7e9051a4f3b00f97e7904db25ec46b52030d241","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.79-renovate-non-major-d7e9051a4f3b00f97e7904db25ec46b52030d241","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72fef0647d90e10747d9b4b83b2ee69d4816c38a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.79-renovate-non-major-d7e9051a4f3b00f97e7904db25ec46b52030d241.tgz","fileCount":27,"integrity":"sha512-q/G0Uxz5mNb/xc7qyMCeHS/T1aPWi231Lc5sVz5R8srZdrNqmp1y+CEm4QBGWvITwyQEQlHDfUU6faedTAby0Q==","signatures":[{"sig":"MEQCIA5tqOk8ZcQe6CznyXjTs6STuH0QRXgu988CnYxKMKDLAiA2E9POzN9ZJx75atYRmyUtpuaA8DYhtKIgP9R7SACoPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqeUHCRA9TVsSAnZWagAAWloQAKRc4pKR8POVRhYIW4PY\nFky6ChvlBcxMEXUYfWAjF3AjG5mUXDos2G6qyQoKLiu1IETVpRGcpU6PltLh\n81IiasjCXbMgRkMqtcd7OrW93N+C8MDxep10/tTZIk01C8qzu8TreI1XFhvk\nK4mc6cpdqJfMwuB01dMz+ZQHEnFpF/yaDkmRvyUVVOSBTZ0aiOnfi6SDJry0\nZZWYVF27gbbyU2FQqn1fA5vEoMN9qV0zXqUbntaejSRNtNQZDSsgAq5/nU9f\nLExRWPDCvJ80yTZtGWAR9Yf2CkpUAI/D6dfL1MWshiVjgzTeSkxZBAv+Jgnz\n79vkCmMRvIg+gTDYrRr9eHS6OnlWy8J7VqiG7iD04nt1iuXvPF4eneMlmGSu\nZcbH9rGAm3ky3bFY4etsGyFSZhIiwEcyhukbYijhSFr1suBF4EpKtc0fq5kd\nGWpPJIn2W4LMnHEeXN/kg37WjYGzIskN6xuxyWSEtJjzhY3YadZjA0y8s/fn\nTmVJE1z6HMDosrJx/dIxqitX4HNhQhKFC5iEc/KbRBbKfd4vVcOObXWoyO6G\nD7BSMV3vVT/7MCABoKJlZRtVV3k5CQ9N8F8VeXUDEqIXeGPeNG2EjWAJSDN0\n0kJ461jEn10yP06k9iQvXUfH5ZcdjbWCGPe6T79g+zPAWmwvqIOaITY5gR6W\nh0JD\r\n=8Xr8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d7e9051a4f3b00f97e7904db25ec46b52030d241","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.158","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.50"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.79-renovate-non-major-d7e9051a4f3b00f97e7904db25ec46b52030d241_1604969735096_0.2784307911197952","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.79":{"name":"@balena/jellyfish-sync","version":"3.0.79","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.79","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c0229a87a0ffa99302dec9ddc7b3558b3eed6325","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.79.tgz","fileCount":27,"integrity":"sha512-u1vLw0xREdCMQWgu7IFW5mkhURXPUpXLoeVXAwmCUYCQnq+s+JTO00WcsGjvbP5dmKUD7lWbDaGBggxvN1zJTA==","signatures":[{"sig":"MEUCIQDGhp9bPbFr26cb0Rz/zoaQJozfpj74dzJO5kNnHqEHNQIgPk37flIctTby04QRFrUxPHBQdCF2FkX1lay1+a4o4GA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqeW6CRA9TVsSAnZWagAA7bwP+wd37iwyBG6le2ORo5aS\nWqOTPJ9tN0ysiiArHRG+TTZuthO79WXfq6KwgKyYHhoq4HC8PusLZHnG8l8W\n4RxXrBYTOUhX4BN8ZNCZ3VELxOwvCl1uc0VkdEz6SBTFUqW9UBJMJXDSARgR\nQdZZW1fJUIBOqvqhbha5qMAY2Jz/H/3dfvvgwopKO25vE7cQCDayUfho21np\nzgiZive63dD8E0JOY4pYBdfOZxgHk6JnUOJ28XNSHGif9FN+LmHYw6RRb5rp\nsJk7Tyow8Of/B6jEwqK7uOa8KYtHBadmMU7n8xAaQUVwMvmF5yYexi2J3BEN\ndC01zHxy4JwiwR8f/8FPgtsnWN6GXtaRkow85ZtccH4Kr3q8twsiwexCSoFi\n5/3ohj4Ju8i3evzZtI8xdcWypCOTnPYFbK3HAvC7Cg4LoEqVWnIeOLRLIugU\nBF75c97s6g6pkKjv736iyWj868tVdmqRwHn8LHYwMcGp/imO3sv2wGCQfUMK\nF8Wg7cHw7Kdu1SQfAmPBGuWdqYytY6Rl8TQ7oeJ9maLAPg4UEchNWmecSzC+\nX3+p0WNSdlFU56RNnwwpGhHmKUqwpRdhYvOGD8gykaB4jgYmFp0Oe05XzSMj\nDfAXTEQTuhXQISxM8jUxAXVyj8DCFMk7kRnBhCzfSsXI1qLSzKHsPml3AyAr\nr7A8\r\n=5h9p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6f93c1fe310797949a20c3b8a529406c1076785e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.158","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.50"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.79_1604969913511_0.06964556410595746","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.80-renovate-non-major-080ec8f6ee53c6c74ce458a8f51eb20fd39dd125":{"name":"@balena/jellyfish-sync","version":"3.0.80-renovate-non-major-080ec8f6ee53c6c74ce458a8f51eb20fd39dd125","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.80-renovate-non-major-080ec8f6ee53c6c74ce458a8f51eb20fd39dd125","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b634fe544f71ba1174aab726fe24af334ea2cd0d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.80-renovate-non-major-080ec8f6ee53c6c74ce458a8f51eb20fd39dd125.tgz","fileCount":27,"integrity":"sha512-qRz0mKGx7hNueD9fH5idINO0I3W8ogjyWyaA0nLfTcOIa1y/ksMXdjt7/UH+XIPnou8wR0FSbURg+ESeW2cspQ==","signatures":[{"sig":"MEUCIQDv4iWhjawA08f09cxi5BgpyHtAhwX0oTbwtwOGjCjtMQIgLWdEWLz3MxU0cVYhFENvp8DjU/l16vc9VOPqNRnVK1U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqf6XCRA9TVsSAnZWagAA3VIP/04ZVsr+wAI9g3Ex8Pqc\n4W4qCuRWViXR7h84XtAfXY1z6zBdVLzrf13hGJ8MBEwVJtJXeDep8IHzTtB5\nLZ0TtxSJHJQNbrH2jvcOP3E0Shpm7BrpjyZDjN4HF2fVgkQo4NNTRxiDyd/U\njkbKMzLhoquXvtcM7Cwws/0hjAcr7Je1lLztnH8qOnlhFqUZ+OArRwnwG9jA\niTR2iIIzgNXFplM6x7wKaoNarJSjFBuVe8JJInLmHPIcepQtIktNIXnfHxPP\nSbSnYKW4qD975HBLYITEzU1YxyjEzx57y9VAF1DGBUla7oaxFUtkS8stj7rQ\n01xAFKNaozIDujvH3Lty4twBBLUA9mDV4DJnPiPJzZQHQVIKFfqxAXRHheKm\nUvwCIP3LiB1RLwT9TtA7YKayRjFycAcu9CMnI2YQzQe2EwfEL1CBvLiwDXuI\n+AHs+BOBnHn3qYonjmSwwk5FD5f6E4u8abiPYpmbxN4LtgVpEjs053ikDDpV\nM2OFOg3sBs89BtQLGcn3MgAkYmXVvLrbL87HXhQIfl/Jz1tc+9kjLU7A5jBJ\nP7QfDNtroS3zhVn3/jWZXBk/09QXlW89FYePxQ3dx2U6+71iYIZKFwR1i1AX\nMgdJVIkMujjcYhJaDVfcAAmmksFPJfp1A7ksoF6XfOQZJEw/bxfPuBF0cJ3C\nVk58\r\n=QXzG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"080ec8f6ee53c6c74ce458a8f51eb20fd39dd125","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.50"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.80-renovate-non-major-080ec8f6ee53c6c74ce458a8f51eb20fd39dd125_1604976278720_0.8911131323073027","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.80":{"name":"@balena/jellyfish-sync","version":"3.0.80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.80","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3a9005ebee2b9f582a6d84f6795b93dc3a619f18","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.80.tgz","fileCount":27,"integrity":"sha512-PPHqKIp4EvydlXlpvwQgoLxLJ1ToYC4S7e8UFEtSQKRGF1RqG7pLzEB2WJqhiOFF6kWAeBDuAdWosdhzAwf0ww==","signatures":[{"sig":"MEQCIHkNBL2hdA70g5IGx9n7S6ba2dyf8UiKhdoASxEL5gnSAiBfkb04g6P3eV0NwhFDD9HxIGMMscBoAnDlBgMDvIFaRw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":265928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqf9ICRA9TVsSAnZWagAA3qIP/Ai8mHQ4yvwfvJSL2yZR\nhjkQuPeH78HzIVUQIoLWctsulnbNxLOtgEyct3nly4khJrqDlZQXsox0j6Wi\naBpP9MOLp/J0AYjfPnAhTv/MsXLFu+G8zpI6lh8I3sjonfLLCma0IEEHYAqV\n12wkR2Exb/pYm3lLZLXVSR4R0zEULiL0oGwOvzheUuzbqcOeKxCQoJeuW7cP\naXKK7lONw1XafQ0dxtOpkqaqfshMiw2MrVkZlffeRVj54RnQQft0ZT+bf/zy\nioFYis4AXFNoudcgWlFK2ey97MvPlVWzSJFKxaViDNWJIdeheslUI3FvR7Hb\nUSQZNYY2chro4ewFxxA5XMkDm44Pg1MfYAzSGPk0E14SSAhm3DIlZFYTGUiN\nxZ8ogSUZCv+lbtj6DFgEsg4rHUSCoFzmkV8M4ZCJzYCI2swe1OFGzQXKiXiw\nrWwnfk80EBj/tDiHmP1cztY5roqR22fbeWeRCqtQU7St+Z2NchFnQJU0X735\n+TIBT/CEbDXNZp9KxSW0J3UUcOjV7V3N0nmpoExNBu3MhpFMigz+qDSgBMjB\nDwHjDjpJvo2NClMH8NWaqaX9XQr0UHPQJyCou0xDq6gMhsEH8FbLU4fvh8CD\ndNJZu2Wpa2T2MdbJnrXPGLdFMHqsMYXhRhtORC7lBt+5jWeefUifs5LX3IK7\nZoFG\r\n=KQXM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2379298bd8ae03d4557c740d44075082d1398dc5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.50"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.80_1604976456230_0.07212518720629713","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.81-renovate-non-major-6ba7dd0620a0ce4dfe088876e98284cb27877b27":{"name":"@balena/jellyfish-sync","version":"3.0.81-renovate-non-major-6ba7dd0620a0ce4dfe088876e98284cb27877b27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.81-renovate-non-major-6ba7dd0620a0ce4dfe088876e98284cb27877b27","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"31c491e00c01be53d6797544650bb106c18a53e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.81-renovate-non-major-6ba7dd0620a0ce4dfe088876e98284cb27877b27.tgz","fileCount":27,"integrity":"sha512-eVVNrcYANZObr53y69b1ydQnxmTQxCgp8gDxQGHDSdl7G4i/yBuBFg1sdajrE7hplgBNrWYbjQ2uk0tsFB2j5A==","signatures":[{"sig":"MEQCIFHTZzpwcmcIsFoy9LOJBEtP/Apk/myF4yLAn8UVUZqbAiAvZhtU+psxlVfjqVfuSkFqi/JR05pLlnkCMC2MtMSVxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266074,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq19NCRA9TVsSAnZWagAAkecQAIq2/4Vgub6ye51tzrtC\n3qBVNTZAbQbVdFWwUysZm+8mkEsysIFa02UgUpACjZFX7MA4106rfUSy/2aG\nQ7N8zh7kULaQDDrCrbfM7UwbOBlzOwgjyQmhjawOHrJdWimKIpR0AUem8FRq\nbkr4EuksqlC18WFO004qlZoppvQfbSIzaMCeOz5PuZkNU+HYqp2vtrKFL+LA\nek1ndILM9jZWpCQtVprELan8wL6MWomjwEId0fKRN9BVySS2UpxCSx03adYO\nJvXiVX86Nv3BuO/pSFc/oRk5jz6xWh6EInoOi5o80M27wuyqgjT6Q9R4QjSt\n7RnBxuD4aTch1X54b0R/XIxSqDMpDqeMxejprycUFARS3IraTaMcN2oX7XB0\nxjNpjRQboJLCVquR6t39QAnuDE/doVhr4c7aksumCQwr4NVVzXSBhNEFI91V\nBwIF8bdy+dnsDJ/tbbP6GCd1zE1VLisSwR6vd05XKpZint+d0C69q+AD7DSk\nx8weH2hZGX+KqCfVGXI7b9GLbcajU+w3ClCI81WynnNmMYkJgGkUAqyIG2Kq\nku1WIuTw2FGn6mrCdnradyTq7p0vAgxF/87XJgXZMC+pyx7g1tJPqKC8MQO8\nQPGQ7fDzVB+vd02VTKPb0d579kzAhRz/KzFITLTcchxgIP8IEOnd6FprZyNp\nxOX9\r\n=E+7p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6ba7dd0620a0ce4dfe088876e98284cb27877b27","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.50"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.81-renovate-non-major-6ba7dd0620a0ce4dfe088876e98284cb27877b27_1605066572854_0.985829489660526","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.81":{"name":"@balena/jellyfish-sync","version":"3.0.81","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.81","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd37b4a5a640d40c3d47552a162e9448ff70fb19","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.81.tgz","fileCount":27,"integrity":"sha512-GYrPIGLRF2jSlximWfr5G1Yxoreh2J88nwQFAjA4hWfN6nhILPMzsGmINm3i6qFoQx1Y8FF/kYFfo8qshlKzYQ==","signatures":[{"sig":"MEUCIQDdKr1F1wnPAbxoe/690Ay5fXp58B9LkbojVyhM7M8A1AIgdm5JhigrrS1ZtmdqMFSWA7cxFIbGeJg21Bo9vy8+NVQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq2AMCRA9TVsSAnZWagAANLYP/RWcF9DgdBjIWwBFu3EL\n9DBCouV0nNS+LFhg0RQArplOCi/K7/4YmdEZVSwQvKRYMNECpeHyMK0npsSj\nsfn+9KBeRMIqHc6hfV50qnZh+dz5I+4z0wtie4eaQ06z+KcEWFMfqN+l6jxz\nFDpC1I4zz3R8dnd3bpx5leE0ikAvnHIcz+nRmDZAqA5KR6gWOd12s/OpU46y\nzl+EMW9ZYYKy5O+LJSEgaZLWay+6XcXm/hlFvC8vbmYvmXFrYZSIsgHpYNQP\nzHHR1emdyF+pfFmVB8unfOSDrVNq601ZB0WUwb4CxnoibX/yF6hbVEbjWJJI\nhQwp1na2qtyTGlNIiwaHii+0rsM4jXBIyoSA1+Ox9wvnXbqbvCw3k301yTgq\nPDiva1lb30UcgBZ1Ah4/1C2Zyk0ta0zHKcaICcXrmIXCz22L1UZg90a9tlpH\nfMqiBOFD2xBuhkvoMxCcP9cnCjXMobUesA5+WvdSQtQOsPA17PvBRtC7rgcF\nGF9glQTMfEEIXR4zGOJXZLiJyaXJ+zV2CUpekr8r7UmVCkUt5Qb+bvcxg1pw\nE5BHtR+UG3rO0tHQLkNUMXrSoBk6D1gMsN2U7BIR7qnAruTzSDkC8gYDfib0\nVBLRp19sUVoLE/uQBcjfPqjLje2ekoGdLYAvWHDPZEqfQDLgfPvTWHZcCQOm\nMi7s\r\n=5osO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5b7bce7f541b5e2c4cec2ca1a2f60de69696642b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.50"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.81_1605066763501_0.26436437062045104","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.82-renovate-non-major-bda8569d0b59e1fb33fe289e2ad562723def7fef":{"name":"@balena/jellyfish-sync","version":"3.0.82-renovate-non-major-bda8569d0b59e1fb33fe289e2ad562723def7fef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.82-renovate-non-major-bda8569d0b59e1fb33fe289e2ad562723def7fef","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"90982637e772ca01e77ae1af52143509b7f77406","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.82-renovate-non-major-bda8569d0b59e1fb33fe289e2ad562723def7fef.tgz","fileCount":27,"integrity":"sha512-BveYYMMipgWRF3T8lnl7BpqhbZpq31jTyVXBZ08MV/KMwodSZsXZ9ZSJTSgauJzF2Dry168IW7rhn0YWcVp7Ug==","signatures":[{"sig":"MEUCIQDoH7dZRPpnz1i9ZcsbQJV6yKuNeZDZ2vELKKCdjoeA4wIgc9287fUXs5tNghf7jdc2tHINb4JLGBh5/dth7J4qKyI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq5ETCRA9TVsSAnZWagAAiTYQAJWt43LAMS31yz7NXg1l\n9AhuLPxBNoZsriei7n9nCM+Dx3qMxQ9iYNiSOr05nUSY2vRiCKpyTjNvRdZe\ngbKL4ScbscDpAvllPtQrf9FB2EgNeApcAvv6D9n2iQ1DdxcX1Ila0bGGYjPW\nG5W12NyC8DzMip94BO4rFX9BZiMCuxm6l4EP5XXnZEXPoYriYLOMfll05hiV\nEZRHFEXc/ETho6Zj0iOnADgPgNsdLHKZDul40C6lj1Gl696hTNq0YyTrQxVH\n/Khoj/sZrPwFELgnCQ+5z9LtCZCM22lgEniR/VL313xVSwtWd+a60UaARBWm\nFcXt9OXsX/HGd89BhtJ0g5zn1QSnUOVNiWj3X949fhGEdml10k78NpULnH8O\nrQnsGPq4hlaja1EqGFmRDO74+A3BC+o/ZAAsN4maaImaxc59OANhjxiqmaWZ\npagFgb4np1CRw0C/D3A3W3U3RuMJn2u/+UbWfQ0uhbaZ2osRNG6BufEELCjt\nxSEbrxn3fQT+ZCmLUvGzlHw7hPIwjpFuHFGmlqjvvJl44yQNqTFGBV04YYsd\nhjbomWrlpmQgKqIQ49cVeyqrdZJ6o66j9J+ZkY+GtVmPBmU2nxtn7Menm0Zm\nmvnhHgKUPeXeEF2CPeah9JdvyvYH5HyVmxFFcnPwdPlGgEo+nH/QF+NPbuLr\n7YrP\r\n=/IMW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bda8569d0b59e1fb33fe289e2ad562723def7fef","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.82-renovate-non-major-bda8569d0b59e1fb33fe289e2ad562723def7fef_1605079314912_0.8842911285322557","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.82":{"name":"@balena/jellyfish-sync","version":"3.0.82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.82","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"57a22669fd0895d9e6504694aeead7c12efb7873","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.82.tgz","fileCount":27,"integrity":"sha512-QwAA1kCMYGKO6Dsrr4fnrfuS6BLqLGb0kaS1/vr4ZXrRWWfIFY6jrcOH9S5oHUX/R+R62FXbR+8qTxekCbFceQ==","signatures":[{"sig":"MEYCIQDVDdi3Zfhb6Q9MBbNvbo7uJ4pLQd14GsIENMyx8UNncAIhAPrAufk36sZrdkOBdN1R9QLyj/zzVxlQem29TstdzuCB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq5HfCRA9TVsSAnZWagAAhXsP/jFBcRjBKXu9rlFRUcrh\nA1P2sn3y/PoQzopSnGiqFqPtpGjBw/9hIqU+474K1feB9rBbju9248vf3QA9\nHci9vPA4dMNVcBqX3+aVwe+8okvj9chhQymYtX4h2MMkvZlonmHgT6Ip6RdP\nsD/AcjVTQnIJLkFiquWKMzjk2GpfilREMsA0kGm62WyoJiT/ILfxblaJFnle\nHITAoF97Zt8oWNkQLc6+r03lYLHNqu9hzbmBAr4HLlOEjJO9CfFY8PIpjeng\nrwG67cS+TRKclcUTrrCNcE1RC0Ap1Xvx4GOzc0uMmgZo4AIlEo/wh+a+9whD\nSk+qmasz/LEMqaRbh9+oH+QNAYkCCkhYhHENUtcdeNcOBRxSEInhTDOXS/s8\no33SfoJjDPbs6jCBgDsKlGOsj9LY0awo99tB8PIb+GUEVrOf6Z7yOSYdaPps\nPGlSbS+cLd9OBUdRfMKKfDVpigUj0cFnFLENbD4NcwWW6vwRkCZAglUxGE2q\n82KD7knbzgyyS4jBRcrtSb9vasAAJmduG8HeSwV5JgVJwkAvWsw8hzJfJ6X3\ngNgK6RpTrjQpEb/NL89belFpguzC8QE4yAtiyB+uk5dXUorm7+5o46+g/dDb\n5vCRBb0KH97r5JLJDVIIxb+R07Qlkah5X4UnXXYbVivsfH3IXkziKyLu/qsL\nrfP0\r\n=/rTF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d362526048d78d67038447e0c009ac3f344c15d1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.82_1605079518665_0.7862836738964238","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.83-ci-use-node-14-3412a567f435da167638c9cea047546feda29cd7":{"name":"@balena/jellyfish-sync","version":"3.0.83-ci-use-node-14-3412a567f435da167638c9cea047546feda29cd7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.83-ci-use-node-14-3412a567f435da167638c9cea047546feda29cd7","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68ccc04dba21f91de53be90fce2c5fae7b13bd70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.83-ci-use-node-14-3412a567f435da167638c9cea047546feda29cd7.tgz","fileCount":27,"integrity":"sha512-xa1VTX8/IhezmD63UgPLy1ceOLvACO2fxjO8QRYHdxqExGnh/+JsF0jBbN7xPa8eJsx+wh0wPLQj5i1YmRC2Bw==","signatures":[{"sig":"MEQCIG8OLlrmNPhgpT4F1dYui55lsro6DbQsOzzVRuzRPdMnAiA4GMwDo7TJyRQo7VEpdZO15R/m5tWLSUT1nc1Nk34xow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq5LcCRA9TVsSAnZWagAAyaMQAJiot1VgVlPTXFaue12s\nXNpCqKU74FjtIm/cYO2whsmuc1jMAc+QvgwpN7XoyP/iJnc62jtpu/sAVp06\nne44/aVHs/ND48vVLIqxgxQn9r7Powb1ydsoXkFMfsN5EJfEywLAQDi4yDF6\nLcws8vazzKidcaVM2Dt/XrSp1gh6QMNXBgweHzMcX5UEi7glf84O7GIezEsm\nVNLp0L6wXLMBvnNPlIpLM9xDa74RDsZQIAJXDPBzyIcp+zj1sk3j3bH+A83N\nJo3YaELZ/IZDlDNfbY3CHB+JSiSVy/4/PMKHP5Q5bIUG3rQJRg6Hgr6fGlAK\nacvN8OBy7IyqTGdhTECqY1+aN3/EJFvWwhIu9ctdoR1hVEreE+caIpUfDbuz\ni6X+RgRliRyacSuc3TSwxMbIRSY0L+OdnCBSnMBkxDDTqV5PNF/qCZ3ttr/d\nqh+JhXj6i3bQvz4md5HVZlB5f6U+B+BizfThwKroB85wpjiAGHZQVYrlRGWt\nsu5CeNM9UFZmIpZHjaFJ3ZPQ6BnovpmC5lBb3dn6tJwRi5tkPvRBobkTmelV\nBg/LVW1WHi0UoSovZkjerljVUh0sgb0CSMuC6Uk9/Q/uBLlOXZvGgudW6fU+\n7E4TCwaKtmLj77KkHavoGqHNuu0H3pMuxbzpch7oLp/U0U7ENdSctPxZEN56\n7CsG\r\n=FM90\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3412a567f435da167638c9cea047546feda29cd7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.83-ci-use-node-14-3412a567f435da167638c9cea047546feda29cd7_1605079771779_0.9190231027252529","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.83":{"name":"@balena/jellyfish-sync","version":"3.0.83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.83","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"279dc568c63ad05e1d97cb384e2735c488fa36c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.83.tgz","fileCount":27,"integrity":"sha512-Riygnhrh72WMF97PGCyYxhwD08Aa1iCxP2Vgw5cE+fp4o9T4WWSUBCkIIiGbBzYi10FrnwmJ7Rg5QC6MxK1oGA==","signatures":[{"sig":"MEQCIBRJFqDKiy7UkJTBY7i/eH7Q/NzhFDyxmzbe36u+E2gdAiA74Ubwfr49xbAJHyWbd4+SC7gaxmmYh9UL1sUiU1RVDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq5PMCRA9TVsSAnZWagAAWDIP/iOcJEv10KcjK35aUeWA\nxi0e3b6/m1IBmPQGwIGFUaMR8tsRSUQNZVIeyTfVSYq3ETLjLwL6zZekaj9l\n0OfrCjWhwULdbwu8Oqp3COP5t3Zvv7N/1qAcXuYOShdDUVwNGDtLsSA6Z7Oh\nGHGTKsf+HbY0Dmxt+vxf2FXJ1QNpdOnkI1C0EzN2oBc7z/2YQIboiU/cTQbe\nxl+DhLn0s809nMb5B2FXG0cFvqtQEKkefURPBWV8Qshi0rqFk6lKarHzqrsl\nd8sjGkM1tcCuZtKFcExCJliVz9C4ECBjvkXXFjOz9HUqNnkRJbTW/3+l3AoT\nQZ66rgIbRV6p+Yx0e5cJ6GWQNj7NTvrZsYZG8Ppde03QacOd3WnQdwBHodBv\nD+fpK2l0v0scCdy69XycKaLvhVmywBYEcJkB/qUwaqW3d6RTkFEm5j3p1nXQ\n6HCzaxiqDALio/a9lOl1rkiI6T4VVZtZp8PFjD3cAmMjfm2pTyZtRvZ9jskq\nH0TLl4Io+BGssytzpYcKATwLEcKNbHs6ZXZ9yIe7qzsgfPY/gxpwjZpUh7y/\n6E6HP5LsyS2/Zxca1C3X7TXIp0+gjlvIkzwkqKNEGSTIMxjMb8GhlQpPFsBJ\n1iQcQfCcnvYuiXEydAErIawpK2/aoFoXjkxRVDntnNSw9C1PRCvv1RitsD0s\n5o6W\r\n=wVRE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ae3d0bcc8004db924e87c94d5f991f94601d0460","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.159","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.83_1605080012461_0.879963334928793","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.84-renovate-non-major-cf018564a3955e1c838510cf4be864d2085f7951":{"name":"@balena/jellyfish-sync","version":"3.0.84-renovate-non-major-cf018564a3955e1c838510cf4be864d2085f7951","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.84-renovate-non-major-cf018564a3955e1c838510cf4be864d2085f7951","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d11c65868e4bfc20a1f7ce78706b098d87b7a018","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.84-renovate-non-major-cf018564a3955e1c838510cf4be864d2085f7951.tgz","fileCount":27,"integrity":"sha512-7jdma9XyqIMHkXLbZBruSdRSLoPXSadb2hbRyW7YG8r06DsuIc7dO45rPm+ze3/yM4e2blf/Ji9PpYWgdMMk7w==","signatures":[{"sig":"MEUCIQC2KpwIigeboT0kgTRDlCjhdaALeYEw99yHM3jncLqtEQIgXBM6N+fTEJ5+Jsi/e3ej7FVv5VBM/XdrXJaUv2QmVm0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq6M6CRA9TVsSAnZWagAAls0QAJAzBPvgedkzGaUjfRpH\ndC8KOMpll3QGOQXO1VEbDJfwqLpsedCliL9BtynK92Zcntx0BXBoUPM4jI2x\naBrlLsxTLooFCcyxuNZeL6407bomwn7BBU1Q6tBOhgvIK+YFK5u44usIdZ5b\nhz24HoaNqcivMIzmFWz6dRFZWGxMxyum1kqO+n8AjAdi0i9iZajkbLOUoQHU\nWBClOr5b94EpzBfdwqULfdIsJ4oBZiheLe9SvS9ogMj8ALNXpaa484Rz9i8d\n+ZeUAAI1eRPoZUtm96E5mXKdFsYTvoLC5po6SUyyL02zLTHAH86zJSnW4evy\n5+DUYGU6c4xn0ylGBLOgxEFEPnT7MpIGJOVllQswslqOsKPNfKHJmpM1gpsX\nktCaaIH1VJt8Y+M7QWzHtUQMr2SxZHcVh5leCdpX97HJlwI8/aJANv/+aosT\nnlp0f6u68oOUHM1Uu0Rd+iQox/EmDxASh8XbIlk8Djc0K90Fao30LohNUhuB\nuSovc8XWHsd+v/oLQnDa8yFJkGNLtmc6VoN++KAy+2xBAC5JUASzV2zOyYWk\n/LxEUgKX1WeMOz9FBy06f/dF71ayo7nxXULYklqkVVQpNxofx+ZGMsW8BiBr\ntjE2cgjnE4LPGJHAxYKG8r8a01Ib8tmVD3qQN00NNT1B3kPkFiPrQQ9cb8Sj\nDOHN\r\n=DAas\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cf018564a3955e1c838510cf4be864d2085f7951","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.160","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.84-renovate-non-major-cf018564a3955e1c838510cf4be864d2085f7951_1605083961893_0.013929368180804369","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.84":{"name":"@balena/jellyfish-sync","version":"3.0.84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.84","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a45cc81f6823d43ad38fab33eee5226d76f54b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.84.tgz","fileCount":27,"integrity":"sha512-GHBLkD3YwtJKLmUmM3K6047n9Tvoe8iC1frZ+EFOjaFEaL77/DV+GAFzz6eo68AO1KZjoefH8h/VL3PPuzewRQ==","signatures":[{"sig":"MEUCICTxSf+OijqitErcpf0SkbJ+JA/yxb0yml5sahbr1afmAiEAh2m4g7EYtcr/D/2xeHKlHPY7z0JLJ3U/DiGlTmDZOCo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfq6QWCRA9TVsSAnZWagAA4FkP/19zvoUObYiUB0q+vlik\nM9bDYcOaOj9rzC/KSAaPLWxjnv1BrFvDIQW9u5QHfXBkmpbmxYdHpOBGFFQ8\nzmxmX6po8Bfk4T53CTxRrJlyZ7K9dwOqPORHnBqNYhd3GoED/5RnrB2bmXrW\n65yw9YNTyYlj9c7gaESx6q1uHaA1mFLHu2QoCrPkP4Ctj4e4qLDNB7fKcLJf\njPGjD84PvvyPqDbSp/l7ODJXci3mtPyuFy28NUgDWTT6noxa3ca7p+aZjhQL\nxSDPDbx4tDjTlisDhAc9aN10a+EM0Eee8Bff2jbw6tiIcx0pjpf2/DUnzi81\nFC4ZIKzI+uLQ94gNk6Kv/mmFW24BO5ytR05a4JHUifxIO6p0vbiNaUo+6WXP\nOIoL0YDwdBOWFK5Rb3AEi+4j5PhQD9ylIBUiDXO194BgaldNCIkROEkYYWPd\ncPGdlhpYt+ZpJaAmDCqsAd6BmmwgnPZaPFFCdmLXYZWqkZErQOFKtQMDKUNM\nd771+1wC29i4EFXYMwpwo+JPtM66t6WSWa+QDHyB/avPN6lxz1bpVl7u5Wdx\ntRexGPiTaeBdhNXl2Qilk1LJnm6i6Mr2Ioxm/7Dp2OKOue4C7CcGqT4OY3KL\n40rmBM4tOLreQdt5w91V4WKD1aFW/N8bm5KryBzx/+v3VzO7DnJuIU5FxHS1\n9G9x\r\n=dZWB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e8a8b9632d571ee0c1e682765242854cf672265c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.160","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.84_1605084181893_0.7120736886667505","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.85-require-node-14-67b36f558db78bd943501961c2e07f7bc74670c9":{"name":"@balena/jellyfish-sync","version":"3.0.85-require-node-14-67b36f558db78bd943501961c2e07f7bc74670c9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.85-require-node-14-67b36f558db78bd943501961c2e07f7bc74670c9","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"657e29fe828980534b25e0097e341f58d977d07a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.85-require-node-14-67b36f558db78bd943501961c2e07f7bc74670c9.tgz","fileCount":27,"integrity":"sha512-/hqjiQGYNiqt6c0M9lRP5wB/RsqDqE1pS2cechU/6NZ65mP+/Z/Tli3GYFilGCmStwu8qFPI1uqrFalRIHP6JQ==","signatures":[{"sig":"MEQCIH/yRlkJ/ge9V6FDeQQXe4T4cBHxNJmYQB/i5IyR+0gCAiAmeWCWXM2i2iIDXL1CiXzPX1oDHEnOXBgcZN+XIOO6jw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrI5aCRA9TVsSAnZWagAAS3AP/jsSWyk8s3BMR7C6dEQB\nsIcL8ixGMYNFzIk3Jr8xImJc+08Um6FihAzf4DDjYdLikfV4nyHmVTJK5Xhn\naSsC73vqpKQhGUP7PxTUFSvOQ4G5SCFnuuZGeTtN2DWHuVAVVAkLFysqr9s6\nN0Hqk8hB0Av64nkESvX9IERimMg5kHLMdJFJ7H1aocc6gdxfr4uFlJ7l5TZx\nKh6rhM/GF5hywE6bvw3mUinK8cE1vwGahjSe8uuyWLOdTp6XdIi8cs7uRXHR\n7g8H45FdxEdSXxRjNH2db7Y83rH0jvwRC3n4gUCNd4cYuEfdubn/wtr4Q463\ngRxDXiRHqlOuGGEsTSSLOiYa9QlLuNypWIVHaJoajZSAWVcsuV1hqwWDLlBK\np+XO33jlO2esZiVLfsOq5Pr1AZOyx90UXcSN/ZZJ1flPFJ+0Os2vEqIcP98F\ncIvLFEcrgc4I1tb7AYmkHB90IGGUqZbueG2uDREbVt7Q9KLPD4WRGnP5MbuG\nGi5oaJ4odAzE+GpFYOfNQzEYgVdQZHNltgMYXMrOE6MEVvKNZSk/oT3LZxd4\nKIfxLKIyvxLEUdEr4c9614Q0VC3z4FzqyjvwJzv4aVlkXktECuZ2JnnhDFEB\nXX4SIbc3+KqprNY+KyMkmvqhq4uPwgypIanaw3Okzp+A68jIBy2J6uiHHZ4Z\n1YCD\r\n=z7HD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"67b36f558db78bd943501961c2e07f7bc74670c9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.160","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.85-require-node-14-67b36f558db78bd943501961c2e07f7bc74670c9_1605144153442_0.9738672397202652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.85":{"name":"@balena/jellyfish-sync","version":"3.0.85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.85","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"beeb121f82c3d71fa2de08f7f2179f474165aef8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.85.tgz","fileCount":27,"integrity":"sha512-35ADFZ3EGsZwmrDH1oezeYGWeIfwPfEwVrcnfF8f9hUAEEP4Hj7NJoB7FspqZYzQTkmYHrIcnqkGdN0lzptu/Q==","signatures":[{"sig":"MEUCIEurG/7js82BjeLfZnVNSIoPt5VlCV2yN8/turonqGnFAiEA8uuh32ADZstmg5kKq3TgutFrBIKsS9JAldM0db+EK8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrI9kCRA9TVsSAnZWagAAKdcP/0xLb2AluWI7kTXOfVJx\npGMZT5eAxiVcWfhBNzXZGbSQk30S+7ZE5oT3RJqr6f51TT7BPrODiuMvX/jN\ngTeaTksTMT0LUzVglsKCxWnDTLUyxccrE0N4fD9lTep8JWZ2ZpYwYjwHQioJ\nFdm3nPdXYofwMJImresexevgtB+tbLZtqdUUm5hP4YvJlieN3DDKyKHJVu+y\nAvlv/oteVxwfuh1I4TXSkoEbCYrvSvYDAA3i+dC8nymc1IxSMeLUneDt2tMi\nlaUppPh9tjUQJ+HDUImaBB4eZP9kW1F8xLqj57+fB/6cDTugSWO9OnsOS9jM\nHu1Iw31MYKDqG8GlVEigmmxFhVtckcyIxZD67ylC8J+sbQixd8X2/w5xnp6L\nbqma28wNaMlWAgloKTz51oRt4htYl0+/OZ16Q5AN9eHjiDIXfiFBgsFht7uZ\nhbpgyPpg+2QwcPkQLJCH1iXk+HFkH0WFD78+yK8lzfBRH/M35Vej30CsNcc/\nTYCd1ejhXrTpkQbmLIAx9DDc+J0/xFMOeUyBP80UZsBpj5/rZTK6+RzC4PNH\nZbBZCPFBPiTkweQOEtGfcCuqUv4RvonGykRaDVR+pp1gDXSKu1OEf7sn/czS\nzOMkp3zCy1zc3FMSEoW03mv+Hvg/oKWFfJcrFaAOGscC4Kr0MpVc+PGnMFjm\n1sJL\r\n=Uy6p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0c9520dc870ed22b11a93cea4c8dc81943b62652","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.160","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.85_1605144419951_0.9424532064033642","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.86-renovate-non-major-d105581558cd246c2add087b310358c99192b366":{"name":"@balena/jellyfish-sync","version":"3.0.86-renovate-non-major-d105581558cd246c2add087b310358c99192b366","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.86-renovate-non-major-d105581558cd246c2add087b310358c99192b366","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"682e295b266a7b4e15372a8da78a753e43344b57","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.86-renovate-non-major-d105581558cd246c2add087b310358c99192b366.tgz","fileCount":27,"integrity":"sha512-B+Pv3Sy1eYgCkuaREE8Sccdr270VQDpSPr7wNcbehPQfYZQSXY4TOfSQoUNNCRh8qVKUyI0AnDFOqXLE3/3cgA==","signatures":[{"sig":"MEYCIQClaJX6Ej2xQZSYg4995SjnF7tVaD8llwsusfSqg99MigIhAJLWI51rlEzzSNEatBuATAsGAA2UEBl8UqSFlGtM25AW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrJBECRA9TVsSAnZWagAATmMP/3i0xrahEZlEl22ZMDCj\njvhVq3jvq3qPc0tNOSuEfg/yJVlXITOZC0Qajsn8hmEB7Lkig20zaddosClY\nTU/XJsWOgV9RxoIWBZO3xRS+4Pe4CjQ7ya9n22yHgKcYbjBZnnilNJrcqUea\nYhDyCZp6Smf5Jy9+jMIvsknxy+hvG8WL5z8l8DAWdFKdPIGouYxRIVWg0HMs\nNsv+qpKKFjemQY/XWK4eTNVOyHDOFdx4gQvrrliLQrIQ6gq6/nph6wFQmggJ\nB670pLQxd7KGkwmhzNSrwKuXqRqIs7Ms/Pxo+jk6lXI6jzLc9F/XcCo7iokM\nxG4H1W9KuDFoHKy1+IVUVYSrfbp3e2zNJJ9nlWTlh5GimpOYsqPtHi2eQEZV\nn275AH/PY8kspnfq+Tz5k++K0MNVijQqY3HZOM1+4BvJ9SfaVY/mLCbY3sqe\no1HU03749BmPxOclQCpLHu45bM6CDzd0aVJ09lkaAUlMjC5c4iRXnj30v8x5\nKsE66h/q9ZA6WNFmswdsYhQF38ssUjb+hPg1Wq1fnqNmDtPl0C0zWp7eGpuS\n6+Aq0+GnKmNHS//x8YwEjq+Wn28MB5gmUdhu0CV7B88oXtKswVss55ebkL48\njvamcD87y4g/tteKAbEVAtzQH9oSrlFK9a8QAA4njYNVH9QbcJ94Ldey6/V3\nsfcG\r\n=rp6S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d105581558cd246c2add087b310358c99192b366","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.160","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.86-renovate-non-major-d105581558cd246c2add087b310358c99192b366_1605144643885_0.7187925229994783","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.86":{"name":"@balena/jellyfish-sync","version":"3.0.86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.86","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"05b52e58d99a0dffc6b6ded0bf425fc1753be883","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.86.tgz","fileCount":27,"integrity":"sha512-YCxztfQF1UOU47QrQJUj4gz79HzVazhG/r26QtHxNBXFahAskHn+iCSNnrFR55XRs51weDJuv8CNpmijyOk72A==","signatures":[{"sig":"MEYCIQDDW+iIWpQtC4opUAC455R6nfhiB8QRBJirJMCkglvcZQIhAJcUuc4vKW9Xm4rU/826ugci6V9M5t+zxLIh/4Hhrf+R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrJFrCRA9TVsSAnZWagAAi2sP/RP+l8HGbwY2FqMeQh7Y\nbR6t/5C46r6Usc/9s6nVC9yUoU7Xq7ySipbdXp0OkwkgRgwGEH6Avtuv/Rc1\nIENSVVsPDYfSo9/o//hsqC4t1P29CYcGiTFjL5DLiLIvjXZVDrHPIfN1A07C\nnGNcIdGtA4pNgbbFsKwgzSjzdNLiQu/IHKw40wbgkD0+ApzutmbZoeT9jLpT\n4AxeMe/hWteWnkL/PVnemZgI477Gm6lB/BAIh9ZxBWqrZePFpjTSmUE3cF5Q\nuY7jtFG+pjeWE7gN3SvAuc1uAInCXea0fMXuVG918HcuYnvPwauX6SOf9cMo\n0adNjCU/oPoWSRkxiwLZ8RGzHLHFMdqmRfSaFudUM/Ziggi1oocw6rAkG5wV\n7bVbw2toeiW5cd4ZP0/E5q8BbnbSdqWo34NfkLRNyLkDqbsVIDsdwGnHU1sh\nC0gzupgt8PmJfNt8n8+ssqIdwEgnbVgtsCwchV9S4CvoBiJdtzNs+CHLyHUz\nSCghe1OsXmKdeBGub417Q/Rv43kGHVDcfZh1ihRw+1+jO9i19eGXLi3fWesQ\nNpaWkbCZTO7lpOqgcis/YiVpVpFMCd70N+ZggyklzJHT4HBFyCZc7EELUWQo\nrsg22l2OUbUXC5bIpBiwtf2Q8EaCMkstD7yzrKkDdA6ohqTfDoCsVXPGB3r4\nykNT\r\n=Su6g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7b38f35863dcfab466bb1915f50a90b40e9d382f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.160","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.86_1605144939002_0.9934961038293546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.87-renovate-non-major-024b15421dc58b10aec35bb7c5aa973331df3bd7":{"name":"@balena/jellyfish-sync","version":"3.0.87-renovate-non-major-024b15421dc58b10aec35bb7c5aa973331df3bd7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.87-renovate-non-major-024b15421dc58b10aec35bb7c5aa973331df3bd7","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"663a11cacdbe77f1006e8367b937788888b2ba00","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.87-renovate-non-major-024b15421dc58b10aec35bb7c5aa973331df3bd7.tgz","fileCount":27,"integrity":"sha512-U7/39AwSzEuZymC19/rJITB31P6WzjIqbVc6BXZE43J1r356HzZQM8IeA2JjjYhMVA8lqn7++X1LmW5Yxd7x8Q==","signatures":[{"sig":"MEUCIQDg29rVKsVRLQ6Ma5jzDdfDDh6RVUCx4z0b4LWZ+beejAIgVpCdgMeLMwO9rhocreSG5ly9jJedFOoNsNJBczUTBlE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrJLHCRA9TVsSAnZWagAAVdYP/0WGGhBIm2cGj2nBuqpH\npkTXrxTIgFdo9xHWbT/AVNfVmBt9kKK+rJhMW5ZdqJq4uRJmDG3f85TVsFdk\ntbuK+nXU4x2lxidq5FX2GpIiOwr0JGckBbdwXYom2fM6NhcR6QVf5px6mrkc\nPDE+VsI5p4Txrj3DW5hmqsqWP7rZKMw6teED+/MaMsf3BY+V/jMWqg1hrUaj\nAh+p/OTinzCcb9fztPWN/jeQzc2cYJJHm2zZzmA1b2CITsfxf26BQrBYDI0d\nNsE2iWJG4c5TjBb9nRwIyrRbBXUG0SU7woIZpEVgcMbco/+Iz8EVopX4zx7G\nfDpZp4K6PKGmAK2l7i1e/91OfBfi4OprUqDskaB8Lq1fXZ5HJjmdj4SUIW/w\nSJJSAmzxGspe2sB16Jh+bGPgArCanPBiDXK2grzsFl4UnI1EM0SclL/bJrsH\nWC9/uEIr8g50i3s1AgLrthRxe2mxyHQj0qf6oEQ2dsNicG72/62B56giXVG/\nlqATtrE58Jcf1MAJ4i9Lh2K8ijggkSEfHJpth6A23neok8X5prXHpZnUjVcz\nhI0FBfoC5CiYE1ylm5u+giiGNRUYWlJWgBazimcwxsjKShfCJkmFrpzYQeAX\nI9lQbC2eYVtzOit4VJyfi3VB9BjoA44SVqVRHzoZQqjhQ59p2v2nDn/Fd7yZ\nS1lD\r\n=QtGi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"024b15421dc58b10aec35bb7c5aa973331df3bd7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.161","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.87-renovate-non-major-024b15421dc58b10aec35bb7c5aa973331df3bd7_1605145286936_0.7204003142063573","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.87":{"name":"@balena/jellyfish-sync","version":"3.0.87","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.87","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"41ed16cf6187b85c1695645cd6b2aed2809ece3d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.87.tgz","fileCount":27,"integrity":"sha512-sh5XtsqdmuEPb04NUjiXt222QQ1U5U/Jd8x1FgyP+Ud/HTZiE2HLQ502u69Bqp276x74Kh4Fa43zsQZ7OP/Kmw==","signatures":[{"sig":"MEQCIBQG72I3kech25HDIFWaSOIQJJseJe0bnKzhCztQtVQpAiBxoWVe6GVrOE2czang7XMaW9pICCOrG06bjmJiYbteOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266587,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrJOHCRA9TVsSAnZWagAAESgP/19ZVelewE+VAUiCDpuX\nzqkDYfrTHjQy1CV8sPL57nlG4qrV21OppbF1SQyCkWu+fCjSgidd8klkTxDi\nQEa2K1sNdyAnZAVrHAji1iQo9R6z3dBqpzNmjrHugNMq+/gCawnooRRgpu/y\nsmxxrP7IUZaEc+hrn0WuuABwX3YIJRiNWsH/JdI9Vrp3F46iLS1Zr0yRMwo1\nNpPkcrSjemyUQ6pIqoG0EzMU7DD4J4ApOQkHHuVg1a7nQGICedWXRMI9kfyK\nS/5WNR4CdDNTtnMQIPl4plgZwThrPEyFfHT6e4IXf5bpY0aGv0QRQppnnBfX\nsvpKqQBve5EKRdhRc+h9gIcJxjGpNEQvKlbqUxCjqR03BHeR4c+0lq1N1rTQ\ngzCy1TM5naaevTd+jVH7aZUEdHL079A+E5kN+cUlBtSnakOQt8lSxU5g4Flt\nbXksm0n8EwAKxv7crBp5QXWGbuIfxqM8rrEwXh7jWfzEA12rSdeYp28lOHZj\n3DD9WB/9DJfQszsZ4J3Ds17wz4sXdClD7igB3ki048ER1KyjZ9qKKPk89vPE\nMFeMP0ydOanw7xDvEhhzwOYlmafu+vIosqJUpAmDsCk53IeF8dVQR5dwjn9b\np3w5KGdAFnLTuMwsCCAyQQn+YXsiBKY7lVUAz3auFsGbKZAp6kOF+5PDDR3j\nGUg7\r\n=3oKu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eb443e1f7825fb0f150d26cc08677fd2e06dbabf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.161","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.87_1605145478498_0.48744178040396435","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.88-renovate-non-major-69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe":{"name":"@balena/jellyfish-sync","version":"3.0.88-renovate-non-major-69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.88-renovate-non-major-69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1cc9833d088f2dbe87552ea8a8bf10a284e4d88","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.88-renovate-non-major-69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe.tgz","fileCount":27,"integrity":"sha512-TmNOmuh7K0rkR25j2ovjtaJSXqiyEjaqxBGDKgVCjXIjFqV5+mcfkD5L8KJQERS130Jg+aauaSh6sz3kZJVNow==","signatures":[{"sig":"MEUCIQD3q+YW7pLceYdmZwzWnd0MiqzyMp4BuK1CnGyMUXK7EQIgP1BsKnfPcEIExQYdYsXtQuiemkrTyMWFLhQ1QtYoPTc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrJTtCRA9TVsSAnZWagAAHi8P+waUjNkL9DcoILM+vwjd\n1nWeJf/99EJYinRXAD+eO//4UShvve4c1d53OR+F0iHPWhWzXsrPqFrpq4hh\nslB34DhykZWR9//vpN5+a/LGu5m82YyjkMydJiRA7lWvRoFIIHr1+WhclVnD\nn4vFAgp12tEsXpMQobIuFZC0h9bFoZGR9Q4xRt0SVSlGaThO4KHw/wWn+ekH\nJlujWbVkC25Ciq/iIkm4CeGbGHJpzX32/jNTfCbsnhqhdIfu0yRTM34Us1L6\nHT0rbfY0K0fGku/9/ujpiCsmnVx6GienUJc83VUErtSit1QwUHKrijoWZHkb\niKZdmqRVqBSko9vXOGzaHSqdRTy7K8LZQcBQI/dXeCJy9zctAGdYTOc87oDQ\nfOxbLm7zphbhAYXCGtcaIWh0ySw8XEsyf0VH32FNvlRlR/wLnHB1kuGEyixI\npYHE1LkLBlvbuQQEYEIHGUI2N49LSvDAJxj9Z5WrHsges6oCgPlM8dXuyTK9\nP1OQBDb/o66l6z2r8xfd1JLllxMNv7K3dXL9OvRLLzvAcmQRdbvbVPquCV8L\nhRUrenptny4cuQ8tSjngP80vPL/4d6GhzRz2pucR91BJdOV4BnX1SXh0MnKj\nl2s2YM1XK4xOYbd6HSm3lDQAd3RwYXQms9pMqVkoWsQYTP29IYCMJehM+j3G\nQKH7\r\n=GFPE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.162","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.88-renovate-non-major-69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe_1605145836411_0.6705834486491808","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.88":{"name":"@balena/jellyfish-sync","version":"3.0.88","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.88","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"376dc929302b98a1ce09bb568ebd35bbf0cdd6b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.88.tgz","fileCount":27,"integrity":"sha512-i3lTMIJYuUkoLdd3sb+j2vPi+1vk6f1KJCqE1jQemLuBd+AouMLExSTKL8cwv2PDxMqvtK9dzOMxFKeOzGa40Q==","signatures":[{"sig":"MEQCIC4IyVupjxfVLMkwPHFCjQpS0pI8+/6ZRR/0V8eLtXLKAiA9XaNU6UOmlVgv0SPIq6aDXpQQnZcIq6IyeYOG3Ei7Vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrJWZCRA9TVsSAnZWagAAhWYP/3jrMnfQ8NmJj/xQb2NS\nRYOtfcn3KmaSV9wT/fLiUf7BKc/vO6XSHWFQWIvryE2xE40fbq9g4hWe+EXJ\n4f8qLlwrPT+Y0468pNVSxTbabtWOygnyto7SvNfh1wP2pUv0/F2XvKj/uwmS\n4E8g8GnquPf/LgArfJ3IG84yrzfJacKMCKgegF59caaEPj2tDntE2UIqEhfH\nNcYRi3d7YhOBQROMZfO99Btmmkg5ruCQVAJASVo5dR3wk0EYSEugj+63qQqT\nlEiVwmuIo6hd0D0lw1+3IWreaW3l3T8va2160zD73tMaJ2gHLWvEygjuHo73\nrKdYG8BzWtkkQ08MRzCVEa/VALeO/qDtfKXS2CZYx9jU1l05o16po0kNnnkv\nEBexKZd9QsdddAQM77qBd09cOCWyHwlHvzf2M+RiSEpTAxeFU8kW9xMgh7La\n1b12u2d97Gou2o9kxtYCQwr+YMpk+VGsPJD+UzpNYcs//hBYVst9ufLepz9Y\nIfzcnCimUbe6zt4LBHOTzs0tIeQrQ1w6uRbS+7ttpfatClvjdh7+3x71ZkZz\n5YuKL5wmxlVlVrLCrbEoZ4YSlvTMt+fGl+h59JMebRGoVixjWft9W/0oVAWM\nShCOH8dqBN1gHiOI06lMl+Upt8WKcUFl9EjoOWrBOJMiTAzmZGEvwnfk5yoj\n3qBZ\r\n=6gKo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0b944c3755ede0104dd585147160a8446c842784","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.162","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.88_1605146008553_0.8754576022791776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.89-renovate-non-major-f3c8a2191dc903db113fa3327e655ec9d47e9dbb":{"name":"@balena/jellyfish-sync","version":"3.0.89-renovate-non-major-f3c8a2191dc903db113fa3327e655ec9d47e9dbb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.89-renovate-non-major-f3c8a2191dc903db113fa3327e655ec9d47e9dbb","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63dceaf64ee746b329602d718432b8c5350402c0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.89-renovate-non-major-f3c8a2191dc903db113fa3327e655ec9d47e9dbb.tgz","fileCount":27,"integrity":"sha512-ShVW9252LJm5v4azfGdoDHZ8AGVk4t9An913rxcA6gjR1X9GFqJv4DR5UZo0PYCSpN50wc7F76i7E/9T17xjFg==","signatures":[{"sig":"MEYCIQCon0vMjaSOwqR+WNgTTIrtn974KdTfouc7PVipPvoxAgIhAOMHXTcazeq+gDr1WmpWZGUpExPpZebfE9u8Cj75+dqZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrOoPCRA9TVsSAnZWagAAjdMQAJq06a+xUDz4BimhHhq5\njs7MtuNKXbL9FXjuPnMyc+Z5oSuGSFOxMXpr6tXQAAaod/9axPX55Xl7G1gy\ncr74sVnT2Blz+J7HBp8/TtNXB7sLWj2BrmjchbN4bo5P2kjJxIgHPYMzpScM\nyCos6bqnkrhAWQ8J0J940i/oYvq/q7/ywkuPYeGnDbK6qWRTJ+qnqn0ayVo5\nFtI/FECDbUdtVkE4DMmpOk/kS1O9WRAWbyeYv0iCxAOapFKkZaEmBzJmfY67\nSt5slhW3iLbeDEBBoNy8jWXfZhdZRM+2DbXThmeWJOrG28mXM1ISBKWUmD1M\n2QWw0IZNmp+AV1LJRyg0ksDL93asPAgZ+k9ZKmZq7sb2b41Jm63nZuQM3MMW\nB176n3a07lXgVcKStpigFMtemZ4EeNQPh4E5y8X+E6Nf3YR75H4hi5l8Tk/p\nsx4LCCj4W0o2mt2IcD6FvsY0kTWDrtLnMlDFoa+wQKv6owcpAvBZwXdZ1jvN\nxgNQ7FoJ4w4QGWf5vgzONvuhdw6WqQlZGP3YfD64ga9X0YEwT6brVglQiuuI\nMZu6iWxgDLDvBbT6FSWPK8uymYLbDGPwazL0NE2pfMVUC7AhhW5kUteI7YOP\nb2W4BYJU/gvqWX/FB70hFES/Hdi5Nde3VQv3BCR5ymi8x9iI6ETJxDf0TYRk\nI0/G\r\n=MfXR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f3c8a2191dc903db113fa3327e655ec9d47e9dbb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.163","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.89-renovate-non-major-f3c8a2191dc903db113fa3327e655ec9d47e9dbb_1605167631231_0.20639239150633193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.89":{"name":"@balena/jellyfish-sync","version":"3.0.89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.89","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"alexgg_balena","email":"alexg@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c7c9138257cb7b64cae61b171c6fb983a891e5d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.89.tgz","fileCount":27,"integrity":"sha512-80bhXiO6f8Dpn6frgNtAx5fBnLo6w+3e9Fd00fkOPeU5JV9lpw6oWClTxNsNoHi/woQ1mZUYmm/jSes2m1meeA==","signatures":[{"sig":"MEQCIEsS77mXv/abdMh9BmtcSMDZazCDs7WXm0W2+1yP6VBcAiBljZ8B7MSOEr+weqCu6KyiH01s++lXak4W2caA1f9pAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfrOq8CRA9TVsSAnZWagAAexsQAJsWsCrDQTdRHVGkMC6g\nsHQDR3eFpHUEm1SxHkayvAWrpibcREALyDqUWaHonnAoQd4fjHuccdXZYX7E\n+tinNLB/jtXQCTGrhc2ZpK6TvL+zAEJZxkcfSVI1APt/NRh+JsSpw34/MOiw\nfRR1W18wLVNjwVHZkOCAVFf5IeLZ66DYc2vDMVll2E2R0iNQutZ1i6Da2aEs\nJBqbfmunYZSnQr60W+ihBPJF/wdCEJVpkt45yifASw1O43OtKRM74fAxsMsg\n/yReEWeu5ECeX910U1JJUeSVuZfSyR4L6mTnF5vaYA/UbPIi/mOZMg3t9qUA\nuCBCjy8Uut2OWltZyEmkE2ev6PGNIyIak2ym+qsagNPZNTNGGSEhNvflg8zq\nu6p3joYMnex8yQQEUPK5cYZGaM4JEOv5TI6ZAK5TxSZ/R11d3/jhZH7VChez\nQTvIP5YJKGvPWi4QoOXog2GdVo6DL+iHS2xi5Snu5uzMJZvEBCQKDnJUGWB7\ndVF0YkAt0P0spwUAmVaRR+m32BfPA52FykaLRCMEfMkXKsQeOGZEvjrYg4SR\nj5c/qn6ZEU2pZ41gsdUT98f7uZlkgWec6HuWGd7B4GLOj4F5vbbvfWH08DD8\nbDpEVm8dm0JNlOm5SrbYiPMEVTUsJtHCgYbrrev9q8jr3BM5DeZm7OOwBXZF\nnP2/\r\n=aVVv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d7a178c091adae03a2a76de02702f2e02613d552","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.163","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.89_1605167803874_0.5842514448792386","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.90-renovate-non-major-b3ba5fc941540db376b99a4a227b5ceb556ce59f":{"name":"@balena/jellyfish-sync","version":"3.0.90-renovate-non-major-b3ba5fc941540db376b99a4a227b5ceb556ce59f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.90-renovate-non-major-b3ba5fc941540db376b99a4a227b5ceb556ce59f","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"246ccc1093919f2024f3816562010d9297735b47","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.90-renovate-non-major-b3ba5fc941540db376b99a4a227b5ceb556ce59f.tgz","fileCount":27,"integrity":"sha512-pPXTYHeP7ULD2PKizuWhLPeODl9Nc4BsnbL1yGA5z/ju1N0BYcZACIU/kEe45smkW9kt8UaeqUddY4oQI86q7Q==","signatures":[{"sig":"MEQCIHYSa8Ysqqox+IozAOvxr04Y65CtJmEpTrhWjZspd5X+AiBB1E+e4gawigNkokFdpiu5rN/EbGy9oleoSjgLDcJvGg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr6vlCRA9TVsSAnZWagAAJTAP/j1AHg/ZyCUYxmPLxpcU\ngj/+cReZl6mC0HfBf3OXpDzgn2zrauer0uaiI/qc0bwlkwJO9BdBu+BtAoaz\nqiZEHSaDBfClbw48POjVaXwjITBopW/S32CZITJ7uJ49lOsfKQjB5jPF6Mox\nWHGcr0tK55wj/Qq6f4rz2Tkr/+/5psLjVDbR7Yl3UpBYJIOYg5En8mde9BhQ\nLhMErxBdW80ElJ4c/k+wWt8FFYW6k2xQY/tIp4Sb1tfhrwvcIOWKx5fwonDp\nLScGxUfLkEZt6QyqTtHSkYvjYHyK13C9z0xE1WGshbXwXtwZ9VQciJJHxKJ2\n1GF55A1zTSVAD/lploP0JK02MSefEqq7gxPcYdTg3rgCwOZz8kPtihbRtYmU\nAojm1h0dwgjtF2UzPf5DtkL6bIGNPuAa5BvDYfERPlnM6BdJUSEfRvMo4a2W\n97od/wn6NumWLzk3Vxuvgl6BC3t2Ia+KxDEP9SKshm6Qdka25CdAmTKS+yHQ\nY0WiwLQH2Kxe+kZy53thOxWXjDR/vZ/wUcCjDkwLEAjidjsBGbYIvloohV8m\nn0eHzl3zXeFXsYkGwVsF6zEZkrriAVafZ7BM82HYVC5sDrpQyZZWYK2zV9dQ\n+vQlyinPIJA5P9psDBBHSXy7oafwxra34y/RMfoTu6D/Cef558mnPrm6NIDG\ndqwy\r\n=oKnK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b3ba5fc941540db376b99a4a227b5ceb556ce59f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.164","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.90-renovate-non-major-b3ba5fc941540db376b99a4a227b5ceb556ce59f_1605348325456_0.7815115304739992","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.90":{"name":"@balena/jellyfish-sync","version":"3.0.90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.90","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ffdbeb5c5e477c1c17e67bdd34ba617669f6999e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.90.tgz","fileCount":27,"integrity":"sha512-5W3cuH1Ot4sfpkPD6xP/wI8JN1augr1dcj7kuZEjflt6yRHW4CeERE6RAtCEwZlpj1sgdDS6k+o5UNkU91CALQ==","signatures":[{"sig":"MEUCIC8qQd2U3UNMPJ+/R7XSiqdoOmNRb936UZMquhYvKAtzAiEAmgcHyktI9bQSadpH766B1eFn+M+NsovmdNzQKyugkAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":266911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr6yhCRA9TVsSAnZWagAAu3QQAJFvk4hyC+yGzeWjhbL/\nfV6T83G9rMXQz+0qIfQ0ksXZtX4LPpZV/LZot7E9+FWMH3s/3IOMDktTMO+z\nU6QCDYWJtjvqd6DsOyM33IkivYH5wkw9qAIMVV0OkXG74Oyv+IwQJ25K2KHW\ne8CDSp/a5t9tegtnUVHc5DVV4MaRQceUbYT7GSU3LAzzWHyNjrF47S9KezlG\n7aK0RMEC4BMKOIo7IitbKBOpU59dhVRSk28NMAEbSrlr7S8+lkwmSiFkHwA5\nr3Ii2byNZnNs+KGw+pK3VNK81VemhkDvhZ/QDNRPcmGbzw/1wckpFQxHJ7Rt\nsIWRr0S5VKIkFhY7ouRMn3aYtkHNXdWu9cu9i0DMiPFEYvYyRfbgBCiPgcmT\nG5eA3/Mw1lD5rNJckDPE6kM0q4OExorg8YshGIbBJ3wMHbB8zqckmhffii1y\nDGtbcdoUpbCin4O9qL88McG0Jxrgv6EAcq4/XtshCetduWxK4qjiU6IE3e7b\n1EjNcdjQMRjC2Y2sj7YPP/lu3Ju2JMuMo2OP3CVoZ6NQQjbORKUzmXAzBHLN\n8bKqogpdWd2YTQGTbZQYqCSQWIox6HqJMk5X6m2xSpZsffzsWPKlU3d0ym6Q\nFtkGMAEVY1qCD/mw+dOpSoXzuhr7nVVezh1QY45Rof9ZyEEg6CbcTY+opjt2\n6xZ+\r\n=5znl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"511feb1ab4cdba43ac9675191550459917cf5db2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.164","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.90_1605348513131_0.6553599851663652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.91-renovate-non-major-50682d7905c4ced97765beabce8600957ce7afd3":{"name":"@balena/jellyfish-sync","version":"3.0.91-renovate-non-major-50682d7905c4ced97765beabce8600957ce7afd3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.91-renovate-non-major-50682d7905c4ced97765beabce8600957ce7afd3","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd8895afef86c30efe8a5349e87f8eb7fd8ebe55","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.91-renovate-non-major-50682d7905c4ced97765beabce8600957ce7afd3.tgz","fileCount":27,"integrity":"sha512-iFV8KJJSut3F83BcfJNrWjq1CjA4cQGblNjYCC56W8Xdz12nrUnhl5IcczB+HGgOFApxfv/+PPGXzebt0ZFoUA==","signatures":[{"sig":"MEUCIAIgAHHpgq0Mo5Kpu59PgQ/iNkxea9yooyDJqVyoijYHAiEAzGokhitipzu7koCmy+/kF329Q2/mXw796fYuubD4QbI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr8hXCRA9TVsSAnZWagAAatoP/jxEEm0mncbxuKQSb0CU\nfsDHScdzFl4mJBcMxhcDtSySKvI1h9AUmISdtntU6bsAjetHxFL1AYmcV305\nQ6tYqwCuf5DCQ1ll9TEU7iFT+41W4UW1uER/jK8yAtTomTmeaAstfX5Fx8yT\noeCzF1clOYruJh5S0BcYz/+MAhukeIekBcomSGq2jiBRKRZtawboXlw2HhS6\nZbiTs31OUNH2H2LkEg3vOFFg6xEgJ17jaCowLyojwN+fXUCpqdAD44l2MnCu\nl9YaSRHb9nntSUQ2rD04kgXEyv1oWXAR95d8LZxvY5XlzK2P2os8Ph7uXEiD\ny27m9O2MIZR+TRLjraaWmkcCL9cocIGMj0ueBeehXz+37lXnzEvm3fxjTPuI\nNRPmGRr7jEbRdpzLC2EwkxjyrxEjM8eGVwiIUtSO67OySpVLOp/UFvcmiX9R\n9qTW/EqUK1WWf7l4zT07exj6Kc4MHpJevLA/Xb0g6rnf/eYL9BTRKZRAK0xU\n69aF2jsTyvG95eSyIXazsowlGS8SKYiv+He+0hu9ISuelOXUUrEYqXBA45cC\nHp9yuW7huTOZqkrge/uS292tgX4aDuFPrOw1EacPkSdknfyosm/2vNu2uuRE\nG+Z0sJEN67fI4e96NcWe2BLvSsv+NYvwsENGhqT0laLvotWgpfZiZJckDMDf\nv/fI\r\n=eQis\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"50682d7905c4ced97765beabce8600957ce7afd3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.164","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.91-renovate-non-major-50682d7905c4ced97765beabce8600957ce7afd3_1605355606716_0.6416176886501341","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.91":{"name":"@balena/jellyfish-sync","version":"3.0.91","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.91","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"166e26a76be161b8ef2ef2b4245539ba075bceb4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.91.tgz","fileCount":27,"integrity":"sha512-8lR3l+BUR93HjlvCAh42DuD8xZz4LjcyQiMCTpDTOBNrOw1/ty7DFitBVwMoidHslYrrStk3abnpUb0+Herq7A==","signatures":[{"sig":"MEYCIQDXa4tLZOgwYO6s70+XktpJ7XRGOwLbLpXSFYqBh0CIPwIhANdJMuTtkeAwnL9t++wibkb/cOMKmyFIQ2RB/FVFrV1r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr8oqCRA9TVsSAnZWagAAD/cP/RrLBpZSaSoXkkOR73L/\n9XGpIu4Io59d4l+ugCLg2Mf8h7kDrE4+BNEgH4Fd+I90jDm8cznfuFtj0Dzt\n2zMAi7sZY4VtaJThiztQOC2xLB7BXL7XbqsurrhrYH5SYtHxR1JV5LhOFzYz\n6/ZQxFHJGAJn94TSYPOYshdAYcKEFRl5Sh2KuouG1YM55EWCqaIVkhIo2nJ4\nZD55LCbYSCAcEwKPKrcBcCWaGAQg6mbvNQxPTmeq1y31rInI9GtJ1v6eQmCc\nzWxxhkksl83B2uHYxIvuOFhPH/TA0BgjXzuDv9kyRMxOqSzBUi0x4K8x+rT+\nGNk0fswAxz4GhTyVb7kZnwncdSvBZBWIPPtvtkwwJrjiHkgA8TvgVcC9kiTZ\nzsdAr6fXY1WLrIN2Pn+AJyOJd+CfzK5JrtkyeP5gzb26d8WIQfOxGt5YzA+T\nLUpwH3YeePO6Xt6FPfKAFyg5l3DFaExzp8mIOOoRW5tGiZXin8K9hzZvSXA8\nNBvUl0knQtqOw1xDvtytoG7iE3fTRy/gJst7lwmlfoptlWbb2fX4hzteHVrG\nRNnboqZtYvhG1XW23zNEmJY2aOstwUmyKWsvh5x0s2nFwUduMaf6vTjifkF+\nBtRbZsYMWZ2SkOU7cawRaMV/eBOnNKcYXn49iZbIRR12Bpceon14gvljbYvN\nG54v\r\n=pcaz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"99bb25eb262fb76650fa2bce6788c859d0b11f17","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.164","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.91_1605356074247_0.43026987125152205","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.92-renovate-non-major-c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c":{"name":"@balena/jellyfish-sync","version":"3.0.92-renovate-non-major-c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.92-renovate-non-major-c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ff50f1269f3b9b3abe2faba2cfafc55e0b22dbf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.92-renovate-non-major-c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c.tgz","fileCount":27,"integrity":"sha512-Mxaolyw/0QVRfnWT5EKF8diQp6IlEt221JKl5US+c1zIFu+XTdVkI61WDdG4M9IxHaEnExrp7T8enf5RH0VTEw==","signatures":[{"sig":"MEYCIQD6gHFF/Yms4+Bw82I0lMDgy9HfxD52r2G1smz9KZJ1LwIhALpWSbFTjCAtLFOV1esIjjmaGBB33ktuWRDKzAgqN/Cj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr8uECRA9TVsSAnZWagAAStAQAJM6fnxCFQ0b5MuMcFTz\nVH5I2VAnE722bFMnIEZrQKoKjHD2nFD1Du5NtpZaUNLaw6U/aExEs52GAKj0\nyCP5kG/zkG5kDFOccDuphcN9UsX2sQG2icaZssTBye0fORi1MEv34xH5IZLZ\nC5vB4YWgcZoZmAU60Mac5MqjPyQM+1qDq9HffZyAcEb6dO0JpHrCvwzCdXAK\nyEkAUW91gzAnXSttjEaSexy5FvNusqoufaW30Tgy9j2haSVwOeyMCjSq1lmS\ncHfNiRtFEyaIyyteRGUA9n8j5NQRqZjazjBooEVlXJlj5IM+piBIan1c4pmh\nBh+AwDT/mVbV0q8UaCr/wfQ1gDImIxwBjbHA5sFnmJOt4SzsIPKP2ZzLTI5Z\nOjpB2KfdAsNaBZtO6thhGoMCCWwPR9hGLfq6uw5WXGJVNS/F53DNL62ZNxaI\n60BIlRf33MYJY3Rk3KxttxdfLuqIdwJqq02J0XdHY2f23F9WoooUMO5kTWH5\nJ6JeWmPs5UbnmCOKUN2Yy7h5glKkoqNHPBcpnrlFG8zak3gahfkmhwkyy3DM\nW9uhpLBIq7Yj6WZ8rA0UplguUbjorAjDw5jw6A7t4DFkEnkVXSlMcion+Y8g\nN4+Eg5Ar4tjCWksV/cDwCqtDvzzDX+lai8el3i+s6itxazwpeThuZSJtoB+e\n0Zft\r\n=yCI5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.165","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.92-renovate-non-major-c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c_1605356419741_0.6937516323504236","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.92":{"name":"@balena/jellyfish-sync","version":"3.0.92","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.92","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"15bcdd2a421b2a9a08d3a1cf41fdd2671e86b7ca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.92.tgz","fileCount":27,"integrity":"sha512-TG7Ey0E9Ma5LmN3ZW55EHktb+CfxloEceCHL38ZyVoU11oyR8Ubvbr8rWBGCl6zTUqa8ZBKMI4DUdjiNxzyKRA==","signatures":[{"sig":"MEYCIQCMiGpuqnhiNb9Lf+h//YT0aVh3PuproJbXv8Ie/iT29QIhAIaFj/TzkWtEAeMX+pIXq7BNmQ9+XayjTw9heKJaS3qB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr8w6CRA9TVsSAnZWagAAUJ0P/je6bi/JCYQdqJEATCGm\nLKw87lQFLYYuyV7/YnhHfR7htqDhMPfVfgpncicB6LqZnV3C4k0TsKvpNG9D\n6ieg2U1+fr0dpwmO9Rs3WHhBZWORietG5KUHWNiY4HJ4qLriGAaMDUic0PPe\nXTQ8WZmCwi5Vvbl24cwZlveCHu0AhsqeP3wyYfDmA4qCU4rup00ziAJWwiY0\nL3ec4OmOlm04d6c5ZdoTTX8S5sr/NKs5UV4OKUm6TfX3yh9Q8DnmDcwidLFn\nEvadHGU/rm5nrDeuFHzzWmaIkbWkwa9gM0xIjjoHpM1YrZUyJSveZd2xcxF5\ncCVZEjMNfn1sO9O9rfu0vPW77e5bp5G06lEF0nXyIPMBHKS0XEvhPadTFq4G\njVVX+Yk2a8MQRsO1eP06BMubPdRICQYCsAztepBGguBn2zgsVNMqGIRebeME\nI/3jNzkj100gCSbfH8qk46kmbiqWvcyB4vFI0uKbQE8kRFgq8RVKM/geIyeh\nOFzFmUozxmsgA+77HMHD7mNrEYuL6DRxXQTUhatm1rSLn1PpUUbYq23uTuFa\nsa3lAUHvhWf215fgFEYz4aI0PJRwR6HNQ3o++QaJ0+Qaw5RWrXAd7COU+JcR\nh3b6T7XdYpiJNImVM1CQ8gc618PcWdtBBB7LcASCqiAW/XQQ3KuSsusLqp9a\njgj2\r\n=EgPp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7c1d8f3cbe7fcb7dfd7b7eeafc8f792ecd8fc133","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.165","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.52"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.92_1605356601889_0.8356669474787983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.93-renovate-non-major-2f377167bfa516a04bb9a94bda3f80ab0d76dc21":{"name":"@balena/jellyfish-sync","version":"3.0.93-renovate-non-major-2f377167bfa516a04bb9a94bda3f80ab0d76dc21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.93-renovate-non-major-2f377167bfa516a04bb9a94bda3f80ab0d76dc21","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6fb5095f4dd069694629921a1518cb524cd95ac9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.93-renovate-non-major-2f377167bfa516a04bb9a94bda3f80ab0d76dc21.tgz","fileCount":27,"integrity":"sha512-iMt6/IRSYfRTTuPkFxlmYAkDR8SYKu+DMXg+BsXr3vTLKKS4wu6m52Fl/Kk4cIU/qgSafvXHO/UBKAwUIP3xuw==","signatures":[{"sig":"MEYCIQCVeYM0QNNAq2pIojHsu6+dMkskzr6vJhAi/N2VFW7KtQIhAKUn8O0ZgzeCJ7fkUmho9XEgqek8a0IXLvjSX7AzMbub","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr+Y0CRA9TVsSAnZWagAAtJoP/iuCf1G7oxPRlcTsABSC\nOYz8orm8uR7f8HZZNIU00dyHji3WBP8cqowtyxoa2PoNonyjHemNvngAaDGX\nxgNQuzi8Zq2er9f1OYI6wRusbxZl+9/2nkPU487SuzQgHYu0QJDYmEExHOrC\nvcKMtQnFtGubqQbq+F+XzXF+cdl05Av4sJD0+xDIkxTOrjWAIDYaqYpCIIHk\n2gJZ4svbGm/AHdzKjHvMlVOMRW5yVn8QJ0IRiEe+Wsv4zNyZoNNhCHJYErYH\nMOGnCqTXVJcL5Og4y4JSQIou41UgLfeCgNDKZIenPLywRxvkTtWNQlTCzPhh\nfEmKwpR5vihoPrw0I+zQ7E7d/adUDTPCy+HG5HzkwHxSBggofw5DMLlKyGsL\nubtiZuTxu4sQ60ADzXfVoMjiBZMbaOOu/yxVNfbq+rB06NKg4dn5SGTQQvT0\ni3oMGypC7Vvj73aA8yXnMyuegxRTfigEbg9s9bYupSbULm0A8eE0P4Ub/L17\nc4s7I2SwU0imfTZK1HgiR/JGUcpM8gMQqfo3AMIrsJTbY5UkGPDH8hTTiwMR\nSarZOsncv+0QU1K0kUIDZnKGdhdq3KrYDgSU4M3gRx5jkNo9mWHEY3KxJiJQ\nUNatRMtOYLpfIg2/c+JYWUndWv6SAtPPFQuIZ5sltUMVVc6zwQKsoUTCrf5R\nSGFK\r\n=FE7T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2f377167bfa516a04bb9a94bda3f80ab0d76dc21","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.166","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.93-renovate-non-major-2f377167bfa516a04bb9a94bda3f80ab0d76dc21_1605363251518_0.96936116301698","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.93":{"name":"@balena/jellyfish-sync","version":"3.0.93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.93","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61d930891c95ad135a4717f0a6792d12d09cec5e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.93.tgz","fileCount":27,"integrity":"sha512-XCBhOVfIdU52PGkUEn3Wh9zCcDqW/5uYghs6VNtQ0P3QP6XP4ZEORlr4hp7bAy/GdMvBP6YOv3MyCvnfK9En4Q==","signatures":[{"sig":"MEQCIFX5ByF0SjdpRTGoqQ7xxAUR8J2hAFu+miQzRYhCoi6LAiAQCqj2DrDX3dSzwSyhQ798HBqXDPEmca1BNUo0B4bb8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr+bzCRA9TVsSAnZWagAADxsQAJJ0pLYpwcFxDarHaBxg\nQSdo131D1jQuH5rjDxvC2BXzOT39CcvOEndKJN+l+fBJQDXISAGfGD8CICu8\nvV1pJknzTOc2g0UMSXLu9Z1YkdixTGl8r4F039VejWQ4mAQAzbAnkXu+2bBG\nhqAy0mzOY32fF0PpQ9IhkwmggoCfu8tglcm/BT746M0mnFJdDp9Mxw0ZNCl+\nixIhGsyKcYXuWpBrJinI3xHsB4qFkLyabZX1JD9wd6v3p3bEdfuT3CMfcznR\nbexo7F15UuQrrokU7D23rxd72/g9YCPSINwgOb/o/7+jam4SYZv5Wy2tUgx6\nbXxJpZfC5l9qNQDjrceBfepqdvYKhXRD3PC8c9OSwk0JhYvkyyoaZxYzlPOi\n+N4lU1W7XLNBFLjpuM6kqjsqcvMu0l9PnuwxFw/1eqjY/lM4nXIwW5kDoKK9\nh4TNXkJcr5y7QUsWK0n1sUBffs88WObu2PJjwHfP5qwzW3V8ES+NN3U4jIxF\nb1gTkZqvUWUUpQvD2Vm9Aj2zfC7wpR8WhQY4ES4zGTFgKp27NuUXO1Nh5hlE\nx7wdnTb2cggDjCLsF27pZTS+0dta7iybuNFJy6jzKjLAlNdxk6PgotD7UdMI\nwBxoC14uifEMfw5r4WjzsedMatk8H9YlMn8dPyufe/mH84VsHBjHCG4K67R9\n35ow\r\n=CtsD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a828e59b96389964a4c36517521bacac5ada24c5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.166","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.93_1605363442345_0.711471444338758","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.94-renovate-non-major-9ac658dcde548771b0c4df87e569f280c72d86ee":{"name":"@balena/jellyfish-sync","version":"3.0.94-renovate-non-major-9ac658dcde548771b0c4df87e569f280c72d86ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.94-renovate-non-major-9ac658dcde548771b0c4df87e569f280c72d86ee","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"00f116b0053e882abc92a3a590703e13c418bd1e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.94-renovate-non-major-9ac658dcde548771b0c4df87e569f280c72d86ee.tgz","fileCount":27,"integrity":"sha512-53tEUJ3NxHusAwBkG/hxA1DfVD21WhlkoyNwok3dCXnK4EGDGnWn95pj8n2CRMLVmR7CJ5sj3WYQGRT2o3vXmQ==","signatures":[{"sig":"MEYCIQDUX7xQUOUl2jGvebCUL3ui4jJIVZoPKSID5uwHFRAseQIhAKtq0SFyHS9Wb5vhWocdQxhGgv60cXXW7qIsGIr4Z8fY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr/iqCRA9TVsSAnZWagAA0hIP+QEVyTDf4rGBcjvjpz5W\nzTajSuGkGLc/YB3QpuFlKynbpfL8ak9Hp2SJgHoW4uORzm7jOz+h1StogAkJ\nc6UDEWSAG8xwNwe+WkHzUeohEeB8l9FMHhTlyMgz6zfewjOhDjLDtmCI1zHH\nZVBVCOlkXqSYILDC5PyWKphuio3zYAOPw/fVMKh5VJJkZbwCsS26QhluvmCn\nrK5LFxvjGRUnceJBiegV5OrcFn70byACTQsHvBq/YS8qSzRyLQHgIIysNSfa\n2r/MttWZx6R8iJMuL0XPLaok3ybRWtTwRSIxsO4zL2cxe9I8NlP5xIokz5Qp\nMsStF4CXTI5Z1wBa7owm2M2qK6WPHOdCNejSNI58q74ynGnwdFXI5ukrsTQT\nZNwQG13w2qAaaB9Ri3AuK+oCNjg3ym85CM18C78ghqaEAd/hGsE+eKuQNOue\nP5RykjWQ5Hzi6/1z97M8sQnwoopz3vgISi8JnPD7ev0PhotNcAWuCZizu2XS\nSG9JEKVJP06On0UMJkDl2tznkUDiZLESGXTkX0ILalt4Sm8jg3KggxhW0i4P\n36Y2W+Wfk6sQRWJo0nPStx+3AqOp4+Zkm98QUkHZC3EvdMke50hqh82OQNbW\nbcVbuI+KjNLgzOkN50xrAkRh/CAFP37u4bh5evbXvfzzW6rZYMdPOtVVYMiL\nVC7s\r\n=uYQF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9ac658dcde548771b0c4df87e569f280c72d86ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.167","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.94-renovate-non-major-9ac658dcde548771b0c4df87e569f280c72d86ee_1605367978376_0.7424644702446208","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.94":{"name":"@balena/jellyfish-sync","version":"3.0.94","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.94","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9842838ff15d04a8a5aca79a9bf08003a7a89270","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.94.tgz","fileCount":27,"integrity":"sha512-KzIHiQZRnKsx/LVVGhV/vHDTokuSmbnCCiq2gxTgIekuaQC8UPOfXHLBbKRcRCUnQ1iUfVIXEcDqrZK2nzXl1A==","signatures":[{"sig":"MEUCIHWQHs4wuA08WsIiWeJZRMCir6Q1WtW+5QyV8a9gEwUMAiEAlVIod91W9o0euZdq+/JQVEl+1pr8ujuVGouecCIiZPI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfr/llCRA9TVsSAnZWagAAB7gP/03aeFo10+CrIIeAdRGG\nwUjnvX+JAoEAM2qSHxDjTGERSK2Xexfe3Qrpd8kSN6CxvmUhVRL4Rnpx12gN\nWm+cirlPrUWn15Ge6/Od7QjTGp2FNWcS9t7M1/etIxSwFRPBl3aHjBQXDTS6\nL5El1wT5eorHtKze5h6vVknewen+aQC5VS61iGramCk1SZ2rB5wwSxLZOlmm\nx3XBNIjHu5z4ZigCWD7/nov3OoGBTaaFJdDnS2rzVtTB6AzkyAM0KR1/PnbK\nN6mwPNdspj9l19Yg1F/Y/NbJNYpRtm5fvo2OMJeN2fc+a6apJO+JgQXwXLDP\nfS+Vg/6JKQxGg1VRIitMyIvEd95aSqd8UNaz/lStO7uGWw/rK0vHr3vC868l\no00AeaoTESAip3UHu781NwMeV0tvq3v2yOZySpDyTn9UKcOXdrG6N9s0OwJR\ntOSG+P+1NGHhMDL0ztyNLaYwX+cUqzMtqKfHNw4X8wTWVR5O4TBD7Y91AXJd\nyGY+vL7DE+796/JG+c6OK8nrZEMMX+bf4enu8M8k6yA4If/6aMucGYtgTvHN\nxDNW/iObh1JufN3B+3k08eh9wtoLySNAM1Ax6Mzm5Hapa7t8nksOtiXR1gag\nsaQ0HDxDv7UzMPCc76ELJSYFkkao6/MzAXnVtkC8uikScATzfsg0h+p8BJ/I\nUGO0\r\n=OEnt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"06d7c6d0e80d052a9ccc714307b18a90e7e77384","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.167","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.94_1605368164767_0.6835231802195156","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.95-renovate-non-major-3f18fe2d63220478b9398c0669f2be42010a96b8":{"name":"@balena/jellyfish-sync","version":"3.0.95-renovate-non-major-3f18fe2d63220478b9398c0669f2be42010a96b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.95-renovate-non-major-3f18fe2d63220478b9398c0669f2be42010a96b8","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6916ddb780a3bb61903f5c7a1173c212a776670d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.95-renovate-non-major-3f18fe2d63220478b9398c0669f2be42010a96b8.tgz","fileCount":27,"integrity":"sha512-28wgQzBXDFiEEHMHEBNuMoNiQKqYiRbO69ydv/gJXDqyoj5UJLsU2N1wZ7ENMBUw909d9CMa+OSXFm0tX/o1+Q==","signatures":[{"sig":"MEUCIQCY/syVdvveA5EMtb6nqOxm1L0Rksiz7/Cwnu97krRDvgIgTjUbJLlEiiA+uPHuc0L9p3bYwKBHe6Y46uk3f1K6k/I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsAcQCRA9TVsSAnZWagAAQ3EQAI47GQAFMnJ/vAxhALOR\nzY7JC6JgEewsQiWjJqI+qQSuJ64ow98oSBj55bIJA/uxZk9ZXMybE9Acyt2l\n2yqUVBQis+cdFRadfTaRKxW8NIgz72fFVPtus5pbgSpgzWGq61p6C3ebn7X1\nEFD5Mu9/xWhCl8MxTJDPcLf57Dz0bX8aQ69WXz8K4vX6FTSdzezbTvIr9XLx\n/Whl098/7AjvkXeYMEoCfSF35LS9FzwmCfKNFDs1jJ6dAdTwH5bnKLE4bwfc\ndrEvFFDIFqeaXgCdp2Didix0hkpiIuEHeHeZwW+gPDxg4dMB4frQXgcNfX6S\nbZZ/HcMu69KtxS8HhT//t0QXw7YLhxcHCXIBZgM/09yy1w9+LuKmNRmBpJrO\n+CWGsXRn12fM1WUL4IsMD2JtHKW+Q/yZ+1nrVbYEpGUXA+Vmx7vzb0oZ1Ocm\nZWfZHGa49D1B63dUI1v06xLKPXyYI2frirKiP2AtFmctxwMEe9J6hoSGHxgH\nN5HfEhNz+KZdre9r6nCLAZxt0Vdhkfy3/XyqbG7/lKrReKE1Yd5QOmHtM2GY\nTd4Etwzu4GXFp48TBiwExxcqA2YPPK7VuVnO57Q8TvH/jHfpcCAgoP+2TPw+\nqtsPoy7Y4BHwBjPLlr7OBFPC5kGoqVFgbA0+Ol4Ose4ChVAWjr6luZIYgaPF\n7HVT\r\n=q91W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3f18fe2d63220478b9398c0669f2be42010a96b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.95-renovate-non-major-3f18fe2d63220478b9398c0669f2be42010a96b8_1605371663433_0.7154357075867861","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.95":{"name":"@balena/jellyfish-sync","version":"3.0.95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.95","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"17ba8706e15942aeccf03a2e88578553cd5bb6e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.95.tgz","fileCount":27,"integrity":"sha512-Aiij+lh8fiG8YK5a5lnrcbQhyBWofs5HKkLp3aiZ7ViWpP+dF1Eq5+AmrEq3BAAj+pZkC7cPH75hZfCzzt04WQ==","signatures":[{"sig":"MEQCIHaAPRCsLT6JeFQZBl8Cr0fqgIuHbIIicRyBDQfHsC66AiAqC+n0wmj+QyBMy+daFcY5T1LgJLKZxqAldn8+b7URcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267405,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsAfOCRA9TVsSAnZWagAAyCcP/RWuLm1+ledUbirVEtRK\naVhbiYzpHTJBLUAODP0gJL8NSvOqeoxi0kXmpXsSBqXNVGpTIVnktmZuNos8\nT4sHQCymAu9X3xOT+p/WnTRflvmyf5K4qn+4+FIO1xmNvnJCm8mcoIsbYl1z\nYFkxvb1m0QojjMe8rJ3eYNNgcXKvQVyruOLbdosgvMlB1L7jslpUjHsDXuZs\nSUtIv309aQU4sJeENraNwmzRMb5RU8IE93I1d+GYqLLQ+OMriW4tmARWR/BM\nDZTFSFESnSH1baEB55PBF8vgxIeDrP0TbcWEJsK2Z5NV4Pk1Iycr/BW9XDPd\n/nH/BApjDN7g3s+/DD7V9j/DmEtJ1LvXJTOAH2cMuNTH/zWixLl3gDmeMGT+\nSxx4KU7p03XlgzGvbGyx/GEPmgIOFv0gBPtUWxhxYT/smYJwKBqHqydjMGTP\nZMzKcm/MiY/HsveyV9hTEUCGjDDX7XfPkjZaI8xXvQpK9XaYAVg/l2Z8cKKd\nlt4zAFAuvRpTAsCrugfVDg1zy6O1cyIDtFZpSkHhwcsUrnC+oWAd/xZivD44\n31zpyAjp00Q1O8VCyQpBAWDefMIJmSf4bQyIdLECOgjsppKNNGq6pytRLgM8\nRLmv40xlgz6cOoBhUjAd9F7y22tM0AKPt4E6kV6U6ec6muiwUmg4qBbKH26i\n6hq9\r\n=TyKK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"db3804e3890b14d3a6d59a8ee849f68c193b3c67","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.95_1605371854268_0.35994016181911204","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.96-renovate-non-major-a80120191dde99815b025e4dd8976b11a056dc29":{"name":"@balena/jellyfish-sync","version":"3.0.96-renovate-non-major-a80120191dde99815b025e4dd8976b11a056dc29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.96-renovate-non-major-a80120191dde99815b025e4dd8976b11a056dc29","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e911949b69715391f4a7b78756d7a0471a0dd427","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.96-renovate-non-major-a80120191dde99815b025e4dd8976b11a056dc29.tgz","fileCount":27,"integrity":"sha512-NlSwpRt7KdbQpsY7EL1j2KRUrcrnc/6gl6zlP/itD5qG0BuexqRgtQ7HyilOJ+G2o7WxPAi92PxT9+7tGd3OQQ==","signatures":[{"sig":"MEUCIE43ZqPA1hJptSR13BLOJRxEZqfD91VuIrp6zKNGd8FJAiEA4O0Zfsd55bxt/7VI/Hq+bVB+mzYT/cQdCghNlSZuNls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsI7iCRA9TVsSAnZWagAA40sP+gOsLSpqnK3E0FrwNbb6\nkFq+z9MoKYHEB4j0nctqnRLMc/S40E8o+cXWoSgzDQFq/MOmj+e6tr6ZhgdN\nLe3Bwp8iAxcjIbnoJOZu06oUNGJJHb4ZczwNHcZhLezcQbIjo7tldqpdRHgg\nRizVQu66RfGPrDRm77l+BWmMEn41CbLiMTIiASVlMp613D1bSGyug1Tj/gLN\n9ViZJA65StdxKLkemufx6WXG6pLAbiJQHHvbMu9cbKu7s4bGAIc36xmDQ14s\ninIK4quk1IBwUEWbsG/XRFXmze5cV2Iv8WthbIMXNkRR90w4uhoSGPkxjx3b\nuYIO3/tElc1bzCoFBrfAWOcreDtuBvYS9NRkLUTmDxabtAkAdk41R/hWAPYi\nu95P1+92MOl9e0WciAfQLK5Y0+714bHEUC+J0lM/5Ci/QpDWk6n4DkZdHyLp\nDCb1LIOiOCw1NRvprsDriOD+ES8ZIZY1W9F9L7PibXw02X148YpUxgORgV19\nbh6nkhBEBlZd0Yh30wZ1WJUD5TTXCBMOQavpAGS7rlCgXN4hfcAtjFjRthNy\n53eQrbcoluNNkkytcOcLY/u6FqiInMo3MK2NMsGlaRm1KODYpcVZyGjhZ6jM\nLk5eqpB45EoCzsAc1YzNV7OkwqYrvMlukhRAHeMtWuVeAwP6jjDLTOjP786D\n6zqR\r\n=rOUb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a80120191dde99815b025e4dd8976b11a056dc29","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.4","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.96-renovate-non-major-a80120191dde99815b025e4dd8976b11a056dc29_1605406433583_0.6598103244730971","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.96":{"name":"@balena/jellyfish-sync","version":"3.0.96","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.96","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a1f53650ae9f131c8a9056f2d9f3c6ee2a4634b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.96.tgz","fileCount":27,"integrity":"sha512-Sp9Pxu3HESoxQL29Bta6FjP+JcVAyA/BaAMPFAzotKX9iHiQF4GxbViw7hrJFChqkyujtGt7UmzwiWFxlV9NKQ==","signatures":[{"sig":"MEYCIQCUvMvZqHV66GKZPgYbIEUPJWCa1Ki+d5XeyE0HKNTu9AIhAJ9qk0rmR9CeS10dKteGVF6JmbYmeY1bK3cLkZZupsnc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfsI+JCRA9TVsSAnZWagAAHLYP/RCIa3eSRb+nXJex++AM\nDlw0u2F6oR8XeCpjVY9JxE3iat0dAtPnsjlMRUasRZ2DNs5biaY+S3BYKcJZ\nHMB32JvzJza7z3LXIEOoFR0ukhkKD1qUX/RVFqQhE1v584TF8maQvpQg14Nr\nQE6jb3BuJPbhJmjo1Dn2wVfJypRyEP1FQpXUwcBMOCf1eOgVwXU/Zef1JN43\nMtt/OzUElMcNjxZ8VX/hHZduLBxHyl9K4vAyeAw/0zoyqGkB8zJJ3DUizAwu\nGSwrIDRBqYojaLk2cbwUMBd/rwcFnQdLlHspaEeX1yZPTpCKkWMCWkZslMF2\nkk2HsV9Lkvt8GHUVe39FS7YZ/pdieYErCPNN/o9D8P43qUX1rHwVxLDkZlYF\nl7EzpXGubkcTo+FRDlGs4RtmGmzuDlxoP4Ufe+R1ldRwxUtg64kKylzQXwmA\nhpFOVn9k/gcnPE0qFRsxrPT53VgLtV2RajuEM+gL1NWguPw+W9GFQvYP0uNP\ngcJ1qw0zojqG68pQFGgWHrGuwD8WdAqXhtpL71jRHti2vOW3gVMnsy/cNntW\nDh2iCdcx7p84UT2IThYwRza3ap7EmM+Rv6jDORXDl0hHmhVg7chV9XTkIi9w\n57N3bxPaK8b+HyZjnBbhHysh1IJFu5h5dUsu/s7zR/751JOUDp9Ixv+FJ/hi\nL2D5\r\n=Dwkx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4f639b2b011a4b3f531692ce75dd601dd36b9766","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.4","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.96_1605406600823_0.21780761877023957","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.97-renovate-non-major-5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2":{"name":"@balena/jellyfish-sync","version":"3.0.97-renovate-non-major-5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.97-renovate-non-major-5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be435a0e587557790182c2ab354c48120e59220b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.97-renovate-non-major-5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2.tgz","fileCount":27,"integrity":"sha512-AtQyTt/zImZCfdbeNm0urA65o7WKWhLuP1JXf5ekvivtIEJW2imbUyHQ+ahQb0QMlPB8B319JjDPVlayyzOMKQ==","signatures":[{"sig":"MEYCIQCdAIiIAGvAD88QNcOstM0je0BCFlc6G/naYg6EL0bc2gIhAOxgkfeyFrzILWdOLwFKa0z/qo1zC9lKYYZiL1zzRXDN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftVP1CRA9TVsSAnZWagAAvuwP/RUc+LNt6UAToKLoCpbQ\nWoFcV0BvXqj8OojRA3EnErm4XfEjUIMxsBdB9o9VtGesAiGQPUipDiqHXWWF\nUGxhyqs0yDW7/fTN4jgGZsd4iSu+C09xKNMuXMEgFzle1SouJLjhM5v8gp/I\nBOCfgMvdZiieeygsJwBT+BQYoImNXM7hCIN4ucGqngyLUP4dJtHM7ppWyzVm\ntbDnQ6Qha+IViFcHYFgFfFe0GT+guhrmf3J7XJREtVMcPRqC6s9l4H/pE6ys\n08Qnj6JJiMbZ1GkzO/t/K9uj72M3b4nUGtwlisNM/D+69N2nUX28DlvHvW3m\ntqiP7dGP4K59ndYNWAQJDi5irNeAgBxK6saZcdnUZMqxKQrSBV6ELpFXWLQP\nGFc+Rdm+kR6/wvJJCG4Bqz48z+o0idAcxZmiwPDGBK7ioCRbXJ7fNsCrqCPD\n/FOD0QSPBVJYrKhSeLevHDDRc09ZVssZ+Q7kdSeMhvEFkC2U8KUvkcSuSKtS\nqENAMoVb6HQ1PWv9RR9p+6itE7eEOwWvGAn057cxgLqG89VJl4zVLPVVOxZD\nvTU3juN3BLy4O0Ooynu1U/tMxtCaGtEyJ/HxE2cVA6r6fp535U8ZCNhYfD/0\nANcCmP39kqqu44e+71ZkdyIHxKP9NLa553H6fZv1/GNI7xVNbEix1O4T6mGR\nKCx5\r\n=D5Uw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.4","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.97-renovate-non-major-5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2_1605719028439_0.8084734608993722","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.97":{"name":"@balena/jellyfish-sync","version":"3.0.97","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.97","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c619973f96ed318027f6f7f9a6c1ba65bb417e95","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.97.tgz","fileCount":27,"integrity":"sha512-VHr8LvRLazjMAgAzvR+TVp3FA2fdXrjfvWpZmVTHizpD3PGqVsKBJ1DKPGaht+0yTsRU98aYo1LBG8f2daDW9A==","signatures":[{"sig":"MEYCIQD31ZRwQB35qFvpHQbBlHQEUsyaWvO+Z9a+Q9t/xSuoqwIhAKB8m8M49mtFSuIkUb95MDYSex74209dmd1a3Xs5jw+j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftVS2CRA9TVsSAnZWagAAiD4P/jgmBJ6r4/A0RzCfCirK\nz2pt+b9qgQfNOFr+7gXtYXL8EFw6DSnfCyUH2VE9lpbluDTD8mbW+cCx7Yi2\nI94kX2hCtsEP+zFflD2gpFDKg4y7hltiRcMbjDks341CIze/R70oMwC7Tfpw\ns6/oBU3N9vjnimCwiFANz8ikYWRZVeBRuYOdYrai4JTSV7FSGElZHd4kkb/z\nDObR19u5xo38Nv4AuCvQsJ4IVvcLGa1pAcE7DKyhHwmqfE3ta+56SkB7szLz\nJ1LElM0tr91k6NRsXuvSv/yyPgQs1+mszPp7ueVBAgadpuBHnF9rslYqejRH\nTurR75X1KLNbKG7+4XeeTpgN9Cqzl9G96U8OQcds1+nvevghspkOmE/o+SEX\nFW362+LfX09OamtYBAkZnNPVokQ/3aOcUQ4zwJxMqiEV+3S+ZYhd9EzzOGWc\nzzIcATI1oFLpXfCKZVztO4RKatInjyww1aCvCVGHboBSOzKlpJWMNwX74kNp\nxOCniVcJRT/2XXupKIIsr3mVQ8CpobdyvYGL/uH27Bth+gb7MBnsMpyRaZ3V\nweegdS7QHrLtUt/qK4SQEwPSLuluN1DXEII8kVQ0lyRUHO7Z/4mDo0flKfga\nm37nvzrl27xBZivzWOmKATAmSX/HmgtcQdxzXNaLUfGEpa8HUnpXBrEyayUv\nmnNw\r\n=95cZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"98f626db6d8fcad38f77e7f5e6c3ac499142ebeb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.4","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.97_1605719221562_0.1904637968103069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.98-renovate-non-major-21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465":{"name":"@balena/jellyfish-sync","version":"3.0.98-renovate-non-major-21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.98-renovate-non-major-21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29a1b2d4a55ada969cf3c879b39bc0db6f51699e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.98-renovate-non-major-21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465.tgz","fileCount":27,"integrity":"sha512-l028KSsJdslf10AubpdHxNF5iwpvDz8UHy6C0SlbClQMMAucNB9JehHO9QbCqVH3Uhx/CFcWy0xWrT8eb7ji7A==","signatures":[{"sig":"MEUCIChYL/fATCqIPbmTRLDCDUW+vnL3eiosLfJrI+0XLzDNAiEApse2pXQcKjBVoafx94pC3wIquBqVsJ5QKy4a39o9ltc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftc0bCRA9TVsSAnZWagAALn4P/RQ00jpjguHTTHaGwGqO\nMlrQT62CMflxL/fzZ0dGuTuK7Ru7R82Xv+R6to4VDRZlRy7CsA0RAef1e0Rf\nFRK6oD8rvNuKc82JNa+IUaZTaG86jWAl3O2rBtjDEuv3WWwTaZ3Z4obeVocO\nsah+J3ojxyZnzlTQZmUlksRDbl4ae/cgdzs+9dZkL8GLak+zUfdRG6yA41nz\ngJBwQGzRHk/5AgiRy6n29XOSV+1ZuCBa7XHxFIDOf7o7vwl/OWUO6FmUlgtW\nvryvRT7TaYQOzCrbje8u8YiDl4KV8+qf4doSTdIVEIX33VB0yCk02wtFaibR\nB6GkoqYsC7gNoVmP07ihLGBl8ANUuLHZT+xrK9eQvERtY0ALx8z4hGj/x4ig\nnr/sx6OqTMA1m9lho4zv51MC2PDnyPYJ9g1VcArF19Q4haFPb0uCce7ob4Z+\nO/Z/bIcqDZsivINlzOE8STGIMlWGWco3tyC8G81cIItXV7YN3o9aDNM4dbm4\nn67AuQtV85X/OAOLsOKBjRv6fh6foCJ9KcDgvvkwHKnCNVQdpmAQmSeSzvvx\n4+9BoTyuTSthPMqrIlwwR6vV7fcV59d/n6bJQfLlrtM78VdV5vj0oYZ9TUWi\nTok/64OwZYMmP4iAyMhmCrsqfcRYmQHtSZtvAn8QOHS19rXM7fiWQGEKmX5c\nMAl0\r\n=mmld\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.4","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.98-renovate-non-major-21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465_1605750043177_0.7964648549812625","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.98":{"name":"@balena/jellyfish-sync","version":"3.0.98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.98","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b3b730743dae56483a128d9a31cdf9c5d93a805","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.98.tgz","fileCount":27,"integrity":"sha512-AdJY45ixQc+1MedbHXrVa7iKmhWghYyGElW5WUkdZq+N1/FXhU5r3/0gdoN/J6AKvTzdkmEivt7ll0MMMUArhQ==","signatures":[{"sig":"MEQCIHxV8DKsAmZJE+tiDjsYlUCaZLTpqgwwMiGDOfMQBvsKAiB/C+TF67oQpsFu+pruzplviAYOgbUCya+bi6dQrJkOow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftc37CRA9TVsSAnZWagAAeEkP/02k8ecjmaYWFsmVW6s5\nbDoeKPxHRgkyywjpVLSO0q3TcdOUp2UfTN78NuVB+pZOFvj8VT+hGHr91Ewv\nSeoqN01S/ym1H6vj7/dpi8WInu9JAXIa1JpQQyQvxLyOKd6PF5evoOU4L1NX\nauAFA6Vz63pd0xgqqOWIt7ZG6rtdsOYZ4HTDDU49b2BrXMv0V8WNcRA4j+CK\nl3Cym5Z5AsuGrIE4CpJCM1hqe8lKFM9lLKCGobw3IJ9FxluNY0OrIdoDpSXf\nhw3YqcP3IVdjY8GjD6PQJ1M3+jnB/Mxi0a6oYCH7sqqro8S9xa3mZr7QlIEW\npabxvM4XyfNz7/zQE1nILW2pD5R36IG2TiFl9MShIWuJu7VzQAHYnMaaFz2C\n9SqWveLGwZjOhqjh80DpwvDUx+YZLUOJm/oY3Q2+EO7kj/pIrzAoFy2zvdYz\nVv8cQVoQacOfvbxdjajWrJ+mZuR1UlZ6zaVP6k6a9N085gPuuL5xjj+qskjP\nVyEbitc5A8IyUbbKSNF2Si4wE9sCkSh2DAuGb8PzDAWSjx/R4hoQC+pbfYoV\nfu5N/sSHAQjLBljQBzvXdhKCEMglPYMJi2w5YkoHFapltMDl9MzJEvfVj3R4\nhcmYx4SzyPPylI9Auryo68CEyb+lhPYO9jjThXJe8Uuwb6dEJhwq8qtvaf44\nV5sb\r\n=BkcE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"898114c283566af071b2950383c32429a32128ea","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.8","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"10.20.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.4","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.168","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.98_1605750266491_0.15995141042196526","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.99-renovate-non-major-4054231b443b34262e6e0b64f30838a5122b7fb5":{"name":"@balena/jellyfish-sync","version":"3.0.99-renovate-non-major-4054231b443b34262e6e0b64f30838a5122b7fb5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.99-renovate-non-major-4054231b443b34262e6e0b64f30838a5122b7fb5","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10ce53be332251d1932f4239899b3b0f89710cd6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.99-renovate-non-major-4054231b443b34262e6e0b64f30838a5122b7fb5.tgz","fileCount":27,"integrity":"sha512-Yplrd4Mrq0aH4xQCkhZA6bX7DwXPJs2M53k55FocSXa1ivqwdmwbAZ3ydygu9UyYRdHyNX57nS0Ne+NdfSnVpg==","signatures":[{"sig":"MEYCIQDLV8HRTc/9Wgj4KlE1uaWgbZdshwY4iNd+NpJNWBNHXgIhAKMG48je+0zSEZg09eNZ2QtCYZdOpp8MA+0lB1fNZmhP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftv8rCRA9TVsSAnZWagAAdgwQAIdXpOnGjcvc5vIOL/2C\nCnsHAwNyI+XJYlAAuSszPSzqXZtx/ExAOCOPJSkTUsWOqicjotTFzzhfj1+n\nQx92SkzrdFWqI/0gjzGXxzOCKsOsnRa5xL/fvg/t5uLeioyJYeVBtj3P+CSe\no/QSZIjymbtrSlHADxbpnCODovhMvniQG5OBoMhTOR4WNhoYP/O9upNIrhqX\nfaImepDtcviehc9QxnUs3mFqfyVmPagrnvIRgXM658Ze0my0uYpaujwaF9pd\n1Z0xHVi8nexVbYv+iIoKLjr/vAFVKxlKRtPu9fVnmjzbQ3afLD5+5jF5lwLr\nWrIb44G2pOsEiArU57JjhmzLiCFl4igWZ253tU5siuBv56a7PceXv/3Z6Xgy\nRBpxVWpcjb5JLg9prNzCAhCWujembbyfz74aoXu6ADsjY/MTChEvVTc5BSxX\nse5EIZFDIhSaMsGziuDSKdEzb8oyXIarHNdPO/Yl4REhIkm1x7SezuMc5nQK\n7pCdgeJd0VmxY9lElZmfv4rfDAdM5JqAeHMKAXFFyVcFNP32AlfQM++fexp6\n7OTZ4VPslNwocFxaLiSUG5Y5Hz6OvI2Ke+pc395iydbpCuqPnYY3D+C8gmEu\npVX1l2768wbOXkqxCnqz2x0PBsSMCrC+g6Ph/I4x0q73ydyxQzK9fB0qbym8\n9Pvq\r\n=YGGY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4054231b443b34262e6e0b64f30838a5122b7fb5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.30","@balena/jellyfish-assert":"^1.0.28","@balena/jellyfish-metrics":"^0.0.169","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.99-renovate-non-major-4054231b443b34262e6e0b64f30838a5122b7fb5_1605828394831_0.3215266817830007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.99":{"name":"@balena/jellyfish-sync","version":"3.0.99","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.99","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2715df1efd789618da4d1891387fc886f0e71aa5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.99.tgz","fileCount":27,"integrity":"sha512-L6FoZo2yOP56hVojYSlImmp3p1WV/O1JqZ2GtTeNXAZQuRkPfxQLdQBIABcBD8N1iYskCunl7Uc74S9ri4JTfA==","signatures":[{"sig":"MEUCIDCv8PMM2Qrce6gKZRS4YyWtjfz86/HUjuiCO6ddvX9TAiEA0Wpcih5RJARJ7IQWOODIPuZ6Xu6DAPZVi4g5/dRziUY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftv/vCRA9TVsSAnZWagAAjycQAJztt4diAipxVKjFxMpX\nl4P2YhM98tjfxRMW7cxXwGqJW5tWwoM6IEvQoevVMohm2RjIUITpTCONz88J\npBnhg+xo5+qIufUrXdncuJuYQjSa8KX1ZswCkwliA5qot7rjvSyRd8DHlGWU\nfSa44aZB2g+uP5yMzDyqYLbPS5nOrqyJn/QNJB6lu3YUv17y2Aeh/E7IZzg5\n0EzNd7zb4u+awjeNPHwFDPG0yVUZXQ/mRgDtNBaYIwDKWNZ8q67vt8NOfKO/\nH8SXu+O1GlIhq7zfcgjmU3DZkHvALSL8kgQOK8rPiIcA32vgbVqKWU82vz/c\nvnA+b2w7cllv4rHvQFNU/5och91xb9CnW7b5hrY9jugioftvUBf+U4x/RUaZ\nfxG1fluloA/fuGkGLYnl99DkJMbno2m+RdBJTX4SluBw+icH2Ey2C5uAa315\nK5rE0UWyyI3x+4GmUOqCzj5Ge2gbbFyyRH1veklCiiVcvELgfSS63FifPx69\nnEZbQMC/LGgL6iRB1DH8W526P1jXHyNj1Zm/KWhh/H13OFAjNCOFeY1zMCV6\n+3+RONA19giedKd4iML7MZfnux4HXIq9MDfks9uQffZ3u80lIBHX1uBAe++a\n6k5PJqnT8+TtmsaVqK8o1wNym6k3IjkQRLaTpLrCeD598IiZlQJn/wsP8czA\n+QnG\r\n=NaYL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"45bbdc8eed2a7a7f47e0407ce575004b7d467de7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.30","@balena/jellyfish-assert":"^1.0.28","@balena/jellyfish-metrics":"^0.0.169","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.99_1605828590644_0.6594599592360029","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.100-renovate-non-major-e7e7d82562913a28239efc9d88abfd93b62cf02b":{"name":"@balena/jellyfish-sync","version":"3.0.100-renovate-non-major-e7e7d82562913a28239efc9d88abfd93b62cf02b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.100-renovate-non-major-e7e7d82562913a28239efc9d88abfd93b62cf02b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0a8446042a0ec11a3060b1ced31594fd0e1ed9b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.100-renovate-non-major-e7e7d82562913a28239efc9d88abfd93b62cf02b.tgz","fileCount":27,"integrity":"sha512-3zPtjNiJOm+d5i5AdCdNPLUycPlc1bJtmY5vcamC9YIUZnGLMG8GHNwAX3imR88BYp4AQBf8QS/ZsppFiaoxZQ==","signatures":[{"sig":"MEQCIEvC5YHm3qBZBwm8vImTIOVdSAOOteeF97uQF5hMtmw+AiB2/2n2cn7dWW4RYuDPveo92m5L7vqSuMZcsN+bvIvoCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftxVHCRA9TVsSAnZWagAAJaIP/1ZeKUC6pa+LCxQdj+2C\nhuO+IveppVWqe8iYEcxPrhvL2D4RU8sJST7R0aSkjdsVZ9V/44SsR5NjBWN+\nVFSwJOJXZXmcNhhlqspcZNjQYkP6KTgXpSJvSRlOcxPPfY5pFMqTn60hx/x4\nU/eWq/CMNW+IEkDnqd6Ey1aMG1RnXEbUM8sslLUeDRlQE7d3Y/IgUXnGE4lg\nA/I0a9Pzj7mfcbjDH9vG9uDUrbV1jamk9wCkrFRz5QmX6PBTzFsve1LYlvmI\n1ElYKAa/GJnBRpXGk0WwUOj5QF+y9CO8s2lT5mBISJuWsI0s/4fCw/6jo+NH\nWtDditCo/l0QgvF8jcGSqGbUZACRCnHkdwfGNtwAzzgOmT3y3L5Mem9XMA3B\nXOKuxejM4EeZWhqw9kfABxqa+cztdicjE7E1bgaBHS9RhfgXelbLPnZRagJ3\nA4pAhAqvXoDFoH9ZgrSUVRAhEnDJ1c1BWQGMPQLAhzWnYyc5Z4kQgXi10q7Q\ncqyRG5F0x2MgJqVni3r6BJ7l8jKxh7S9V8EfrT7KXb7GQxXf9NLpezaTvnVJ\nZTc7kDtqi8CEql8W8ngQEu1vOcbsFDfA/SrUIFUWFYwD6qrYcTtjVtjMJ+bH\nvW8et5EI+VupqNV/A98+tL337WBIgRHEDrOeEyF5/yby6CvBxbbgOY1rortm\nQvSK\r\n=k/JG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e7e7d82562913a28239efc9d88abfd93b62cf02b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.30","@balena/jellyfish-assert":"^1.0.28","@balena/jellyfish-metrics":"^0.0.170","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.100-renovate-non-major-e7e7d82562913a28239efc9d88abfd93b62cf02b_1605834054443_0.427056316990317","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.100":{"name":"@balena/jellyfish-sync","version":"3.0.100","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.100","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"30047099817d8f1e0a1973b0330e965cc70c8227","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.100.tgz","fileCount":27,"integrity":"sha512-DqhoAHyMtuFOzkknCrFFEmK9of1CU9nO1bJS8BRxpR7yF5g0gLqKokgXQZlWrqa9HOulPWzLyRur0UpyLyenrw==","signatures":[{"sig":"MEQCIH0YT8zEOM7ou7fMFcTfnDVbPeQmNlyPri2OhkX3LpQnAiAHah62IIWecSm6pgnHMVDRbkYill5TMgZ/uJqu2GvLBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJftxYFCRA9TVsSAnZWagAA98gQAKMAdZ83vkhpbTEF7gPi\n3Y++stzFLai4CAy7CbH4KdwAK9Zfo3+Je5FBQ/68qR9QF4tUhp5dcLIcq/On\noyxkhNRaMgsv9d57cBo6kxLl97rpM7NCtEDuM9X9/wMAJgnJC2OyeE/YRI/q\n9MdC70US2u29caNzwivXwKWFKgxmn3rdtSJIFR8M0GwVe2TB/wWGedI500gj\n2njilr4gmVkjw08zinuO1pFd4fAEWqYd3nA21Q+xZ2+pq8crc0NKm3P/ajNc\nJF8ND8JzcCP43v75QBd8DE582A9JhCETqJE2hCXsAUaHDWDtnR0qzJSYKojm\nryjml4Q+i1YQocbNHDc/+h0eBFglarbSNtBQvWYzOfEs/IJrtFXUGtKlR+4i\ni4/+TEn640XIBTxy3b8UXdw9hp1+Li3g0yuR7VLLs9pU+i3zvH0+vp7B9gsp\nSVQqKiuzkR0jw6zNz7Cg2vrG0ClRHBXQ77/9oKYdQPM2sCAtEj/WzB23/kQk\nkN8CHA35DT6h/fmCpxvS/3BkaLfyspH23Vie1pSeT4/4G69VM6+7Ipeacd2N\nfLAuweF4r5jHeOZjRmUbTAlSqbvTViPm0XJ19AMk0wwpcQkOtdnUhyZNnRBM\nGvD3uFr28LEqBhlnPjPAe9bQgDwQ2RTEmj3kCvxFqHuB7h68ttFlMw7mX4hZ\npMME\r\n=//sI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8a1799377c837770021581cc633322c075284b70","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.30","@balena/jellyfish-assert":"^1.0.28","@balena/jellyfish-metrics":"^0.0.170","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.100_1605834244810_0.9009054536412897","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.101-renovate-non-major-c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2":{"name":"@balena/jellyfish-sync","version":"3.0.101-renovate-non-major-c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.101-renovate-non-major-c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"171f40601c1f2556a4eb1f59bf174d09a5b5cce3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.101-renovate-non-major-c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2.tgz","fileCount":27,"integrity":"sha512-LragU4l6gZzi64XLYojgkGbnOCW2hYlGt3klLZPSv74gDsqlOoyX4e3WNFtVMpc4WdFVbvCm9Lek6pgeKkktvg==","signatures":[{"sig":"MEUCIHWVejnCE1lkVyrTBJ/KVV2ex+noJRKAfeYS0pnytLeiAiEA+zU/ryWzay/cumVA1aXWtm7ZwaIZj1T0pJReVhz+D9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267981,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft8d+CRA9TVsSAnZWagAALAcQAKQD0VMN7wOgKR7XktUp\n7JL/iOlOdmesHlgrqpYC/qzrPQofaDvZNdADP3K0ze25kLc16USNZs1azGQ0\niBodINpjOvZa5qoUVuCgZzqDHjmmwbEvYjQrxNxMXKO/fgNhxQfk+k2mmE+b\nbvi7BsTo9XO4tVWHeb/AL2pZrk7iFGruv4xPdKgTsQH9MF8hGeoBlM8gbIaf\nKPB1CqfzPAyzxACFAvblkFfQAYp6bxl04ZgAs+Tx1XnWJEXw3fAeVwY5qMT1\n0L264DdTi2ubmKeQ5z/vLVOfXjJdmQwr7+djqUXxTfq08IkNMs/yGfF7iru3\ntPkylZK4gapdgavYsKVOVmm0Vb8x7FPuFe7pX7cAMEbjWtWxM7kKjEYDM/4s\nBCEutw1qNCixwiCpFerhBE3F9Gp9OGVC4vbP0o1CsKsZm6JuN8djcrOuCqqX\nc0/Yjcvk2BaOEySj4O/SbvFJTFRw2rmllMzbnzStwkyH/JA2paoBEfxidawu\nP3q1TqvbsRZ6UVzhC5WNsLsVTDHNt8ZuV90/VoiBuklMKTgD1KK0Whwjqvqm\noNHT1dz43GJyi5V7+wJzchoz7xKNuWTz3woesxwX0frYs3g5afqBBR3/9g3A\n9dCRYRwpUMYKuAk46XtcQttiW0HsS2UAqQvkizpfd2n4GQpBdaslw34358Kl\nTSwU\r\n=mIBO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.170","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.101-renovate-non-major-c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2_1605879677489_0.11561143544373476","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.77-update-balena-api-sync-objects-ac44a3d4de1f30607ebfb7cb9837c4069773dde8":{"name":"@balena/jellyfish-sync","version":"3.0.77-update-balena-api-sync-objects-ac44a3d4de1f30607ebfb7cb9837c4069773dde8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.77-update-balena-api-sync-objects-ac44a3d4de1f30607ebfb7cb9837c4069773dde8","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"11e43ccbdb92e3ccabca2ef1727dcec086c221b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.77-update-balena-api-sync-objects-ac44a3d4de1f30607ebfb7cb9837c4069773dde8.tgz","fileCount":27,"integrity":"sha512-+38mchEfeUYNbnEbzyyWQEVpRKS91Qz+uChCaxDXTZ8AeI5x2zRmfEmely0lIQLnC9s205PAcTGs8h7syP8kgg==","signatures":[{"sig":"MEUCIQC/ynW0dRsn15hBjJ5YWlPeF7rDGtrnmue1HMEJEwoEsgIgVkBhd/m7s6qxRU/L3QCBqFzr6fEkwu0CBI7hYO/Yuzs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":274302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft8fVCRA9TVsSAnZWagAA7+EP/3ZcsA9+ywb2cpVKBv9U\nwX2xdTGKWSEYuenVplsdx+QXGFKTTEP4wGtL9FskuqNeJu/3cXLpPflCdNah\nyFJXWBDwmHdojxxw1fTs4N1ZnrUhf12WvOK3N7mnY0ZWuklVBY5GGPFRmEEE\nqg74JsgJcc3QEpUX4cnprD1kt60jOvWa98O5bfAP8QVhxHfPC1EL+4TIMQHI\nvBan3IWJNFSOEPAUpK2HZxCNakhGPmZSpbA4dD+gySuJntQEAgEC7PLABCS2\ns7g4QdELygcnNmVX0Zzry744h4qYnEnA+Ud2/q30HO4DirZxoePcjsMM/hci\nLHC7zyEFpM/qaBG9D5ZwR/Kh1KtNkFyieN9z0yavbsrV+EjxMyEEE233ciNv\nS7CGEIOpWorO/QrWDzKmkPeZE5YTI2hyB+x3vbSKx7/6lm/MvCJV0DruAilH\nHZ8RfXESQWFMRRhI6NRxjuVNgRhYfdHQTooh6itjw1mu3bnCnTuN84l/EvE/\nL3Yl88ULM6M5ndFrGRlG8NjBAlTUziNs7/ri6PXJuh2CUFm8+9NzwEcpePIW\nCR/Nl5gmGedMKXptE6qNcX4n54ZihwGl9pPq+oUyOBOuEANKmswkzHdDDRLD\nhLBNB8gpnivKS++ev/bqgQiEVL/XtuXrguuchbQQWjtKNS+UsBnkd7wbhrD7\nBp4J\r\n=DnGd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ac44a3d4de1f30607ebfb7cb9837c4069773dde8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.3","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.1","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.24","@balena/jellyfish-assert":"^1.0.23","@balena/jellyfish-metrics":"^0.0.156","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.4","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.2.0","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.1"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.77-update-balena-api-sync-objects-ac44a3d4de1f30607ebfb7cb9837c4069773dde8_1605879765278_0.8585600183728825","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.101":{"name":"@balena/jellyfish-sync","version":"3.0.101","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.101","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21c789e22d41e6aac547ba12353e8335e9bbd751","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.101.tgz","fileCount":27,"integrity":"sha512-umtoawfp6l3KqrR/Ct5afiYW72W/rX5WC/sRhvu7LdzrVQCtPitvljxVv19jsW6DGcLXHZAjtI+zJP1RKX6RcA==","signatures":[{"sig":"MEUCIBAEqeNpzbQK5HWS0p6AtJjt3YiJzYrUi6rTXGWYhB9BAiEA6sGgZT+rgueeDWNUeefkUGCWAK3QVszI80OZge0D474=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":267921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft8gtCRA9TVsSAnZWagAAepQP/3yeu+CbC572P6zZk9aX\nZyQTCt1BQesm4GBOk4+LEjLau+COLvHe0uq+7vWq1DnV05b0SEENAcGG4gRE\n+zFgHVTd75GVrkWKqnzNd9ZR/b1hPs/u8d+9krKGUYwOMw3T6k/V8mDyF15b\ndDc8xxj74snWsi9nVT4TRVL6Iqdo3EPvTMw/M/eR682fnMwBjgJjF+zzXMW6\n6Kd1xex8xM7uqZzb/vaHUlUYay4OiGPa0DSbB+KiWSTbpR3Oets5dkJ1PbuX\niBojPM3GRKt46DHeiPslOon1fGxWk+xbQTU/bqOaQVjsMWXQsy+iAIwTJq0S\nU1xHoKtc81t2S43BrqJyuBrE1O7yKvdSFdE/tw7LuHmc95xHPDEyCWaqi1RM\nvZ7nIqreB+xzXCbAXd6KK0OyW6cTSkDxRAW5ouHVWbP75IC5+EwkYwopoNF9\nQi5P5R04CMvQNhO5palfcnAynVO4qz036IPZhJefFh7ZFfOw7CyWyoKK6KIX\nIgT4Ixsvue9p/B5WlB/dKJU2WZ2GEsIw5d0exKSiHXZcIZx2irZLLTMF/cTl\nin9WptRo6EURaJed7rwsCPf+WSfkUn5t5bmth1kcFwRWJq7tse2gMTQ0x5nM\ng6FSNM5wgsIrOasxSbKmvi7NlGpZEf9JkWdWLHR9Tp7gBDKo91fDq3ZJLMBx\nArsN\r\n=GLfR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"dc625a3faab2b3c1e53656d9fd1dc6cf5276a16a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.170","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.101_1605879852912_0.5242694796793643","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.102-renovate-non-major-118587ca2e2620a6ad4f7a60794091124968f7d0":{"name":"@balena/jellyfish-sync","version":"3.0.102-renovate-non-major-118587ca2e2620a6ad4f7a60794091124968f7d0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.102-renovate-non-major-118587ca2e2620a6ad4f7a60794091124968f7d0","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb735383aa52047fc977391a7feaddbdbe9f3ddb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.102-renovate-non-major-118587ca2e2620a6ad4f7a60794091124968f7d0.tgz","fileCount":27,"integrity":"sha512-+7NQi2NvDOmei7Kb0r+pH0njTXXgwSRPBLtL8W2o7WDlJsbfI5pt//VUd7hx6mSaUXkE8B4uhohbnPtVpuLy6Q==","signatures":[{"sig":"MEYCIQDYYCeA8HWWPhHbjZktvvcVXv7OPQ3ZW0DEuh81cGLFlQIhAK+C7VleoSgY2eFM2OHrD7yzO8+TDDu4AayE9cfEE6Al","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft9NDCRA9TVsSAnZWagAAoOQP/iKg5CDY4Aw+XQ0WwWUg\nnufk4vHHD/Vm3PY4cXByuEG6yqDKV7QSccWeBQ8tP6dMa853JyY+A+U/6J4w\nOb6Z0DXRiV9tgAS6nrFWlHlKGq3WeEsYjzckMtPCvPezYOoplDRAcdQ6Svgq\n7ehv9gC9uhobstLgRX38pwCZ0StARogVd+1ab/FlXaXqRjPTF7sk4xtI3NCC\npbQrqAbDhBI5J05Jpnr8Wl8mBjxErSzCNaWqYOGq+XnfZsXGnUq7JJNK4XUY\n9TJKa2TB7LdarTjhMUG2TIOOlxKfRwglbtcchTjh3Np99xCVUCBSEzGjSoCr\n+WBqJDKYD+T7iBx409oH7DrGTRJm5oIcG/lKA74prxww0i+bPJF3HtelN0F1\nwqfIRh8MEtxxCvl0OOyiM7n0WnkWyM7eXyExIGqjDYVMMwoFy7FSFd/MK3yt\nAk7SIa40wSW6gN5IuQGvcmt7nRCZGfJIxKAn+YECpkV48Jg+WaF43AmijuHJ\nDuX1SfEI8U3FTvnPNLQlIvmXtrvLtXj5Cu6SAagwUSL7hC5o+N7APnvJoL7m\nsW1VeHKY0BAghqf0QJNpsPifkLSzTBXzfxr11Z9eSplycGQUyoecbtbf89B3\nwhpd5zSRFNDleJRRPJgw3jCCRRUiIsBz+Mr+0dt5lxwki61jaMrOJTsrHQhK\n9v/z\r\n=xqMY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"118587ca2e2620a6ad4f7a60794091124968f7d0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.171","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.102-renovate-non-major-118587ca2e2620a6ad4f7a60794091124968f7d0_1605882690909_0.2173108516706035","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.102":{"name":"@balena/jellyfish-sync","version":"3.0.102","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.102","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e769a1669ae3349ab50c3759ea9040201f88b44","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.102.tgz","fileCount":27,"integrity":"sha512-a6k6jk6Is82pdDFq9tJol53ppAodGewDcMlO0CvUD1h5eDB/p4ubzKe5IuMi9F/UMGg36WcBCxtvuZrgK6oBDw==","signatures":[{"sig":"MEUCIQD0hBoyVWt3QHyrgcgjOo5fuc+vGz55joHizZ/3EEGMowIgOEbYp/bYHxPxNDiIb0cHig1uFRBn+yHpHnbih/C7Rfw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJft9P6CRA9TVsSAnZWagAAlhAP/2qDs7sp2Eyi8dnrw7TP\njajZ4DSUVyjt+2zE4cNSh9qZPmut0hNW9A4MjUk9wR0xIIHrxRhr49tTWEOC\nHfWUBX5L3DtLe6HNydCzGyu37FUzLL6dvEkzkLMReQ2V1NgFZUd8nammxbol\n0yLnYu7kKUJhw8CmZFz7qYS9OHrvBx63BuzYICNVAthiB+QWS+fs1cYjqwg4\nGOSyndv4iHnX0KfZRf0qrwoK2KOu548YcSQZoTo1v3F3zzV8XCYQZax6WK/k\nln1+ZTemqPTGbaeFnh6YEIaSoZ6z+vYLLUA0iTu1MHlesIYZooRhoiPzlSv+\nV8R8vJX1dMH2h1ADaXQGHWq++qkhO4SIKM11YrLrNdVj9zMLRiOFurlUeNRP\nWdFwMnKvnWwrbdS1LUwwI9ID3nVI43WM3C66EpQcNk36q1nezVzQPweO/g43\nRpmY3ytF3vuftnm4RLw3Rthds1Pr70Xuxi+tbiR+OQAItYdHXhjvrWJg9b9a\n8zEBhtlKE+b6rwny/mUdV5HI9MLtibzEGBguJrgS5tZsCYBc1qw+P9QusjVb\nTNSXbEhX9B5111kaQfviD53N8uaAG/+5r/c68UP4pv+Uk2m7R+SgsjveMnjc\ndWsD1f1zhgOCdZTln5NSDmoWw6tRKIPeKnMJMtcj3Cc7fE12OHdnO/8NEEng\nQ74d\r\n=KP5v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"16d563e35e63629de2d8d2a712c4a539e571368b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.171","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.13.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.102_1605882873648_0.3029436476707925","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.103-renovate-non-major-fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e":{"name":"@balena/jellyfish-sync","version":"3.0.103-renovate-non-major-fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.103-renovate-non-major-fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6dcc19b9be9f57b7ee59d784716788a1d2a47e2a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.103-renovate-non-major-fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e.tgz","fileCount":27,"integrity":"sha512-bF1HWd+IOCpuwfGqpsv5ayA/ZqkUTCVhPTH8nraWl8ZY2XZLr5u8HURkL2+2elaBU3EZ/kNIFW9XnRkhf7cWLA==","signatures":[{"sig":"MEUCIQDQDW28UP32dacJHbPFjo5BIr4rThVhI81v2HlqQfgGLwIgPH02RKEF5NGfOrl6LdvJ1A1435dG71yU79LrsayvSVE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuE5YCRA9TVsSAnZWagAAsswP/jyF6nEG7zPuEIn//5n3\n1YwwaR58uCuJGEOMEop12U6lV6bd+p6/lFna2DaoSP+zc/2emKTtHs1rR2Yp\n8GpXWCsTCW0/2+WsxsvIKpYmGY0j/KjFAEEIv7LXp/+QtqpDFR9PQ+oxW08w\np3+Hb1+r5lwYq4AQuBgAvo9S2EgD1brFH5Rg7xs24w8tmWcogJF82kFJpwKG\nSDE0pjGn7t71hI54s8NMnQ1gzR/zXop+QZnYSxax5E1FD4WDLha/Di9yLoNd\nbM1JgsBafSDyJ2vp/RaR/NEo9F1JuT1UKLDt3eIuKroTN78e1LknyFgvwnKj\njGzgQi6y2d035bAA2ZoWTZ9Z2/FsvRbN8MFj8rKgG+I+yL2ot7qRh4ZWyosq\nQGlDh3Zd5ywjBCiiY99ETKCPuNQzfu6+JXMXQCTGvGAhjg6Iod9JgTNofQWC\n4Z7HkP6SFjxnmszuWDnjwWdt7eeIp2lAnBaRLwm4J35hU3ySUAul5ziEin3N\nLoZuGdIKgCa9EEfEIOsFpYqFx5V4S3xAAYdioPHVGZYDlO1V5oXrH1S8WVlQ\nhid3JEfb2sNXju4pmLI39y/eZE+V1gxy+2yCfUslZgWGj3oSaQzAub/N25Od\nd/zOTkvUdaK/O3+PH4urqaeEASLkXNboZsjesjMLWcK8srirGW3nG8RQdb4u\nJp/y\r\n=yC3T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.172","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.103-renovate-non-major-fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e_1605914199831_0.9788879266813462","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.103-renovate-non-major-35e028001cef3710166f272717049358984c95d6":{"name":"@balena/jellyfish-sync","version":"3.0.103-renovate-non-major-35e028001cef3710166f272717049358984c95d6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.103-renovate-non-major-35e028001cef3710166f272717049358984c95d6","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a4ad7b92965fccdb620bce05cc479c504bd67de","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.103-renovate-non-major-35e028001cef3710166f272717049358984c95d6.tgz","fileCount":27,"integrity":"sha512-uxJL3vvI5wJmIi3TXcloaGC6/ah/ndFn2aX/2AMPGnKo10lR7zBddICa3SQXZ+GISTvs+Wx/5MeGYLQmsElOVw==","signatures":[{"sig":"MEUCIQDHIDacVPgggd5n79GH8tWXXS4HoW1sR2gt367oLKWX5AIgRLikCqDDmfkQL+7qi4jZc9XSuunDewJOkC2v0gG2HQE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuE9BCRA9TVsSAnZWagAAfXEP/AjukN/eoHdc5zdlpaN7\nLNtIRdXQzjmaAuZoINitH0qoTLG3EeBmR3rclkhOC3qOetdfStj4ElDeEkMj\nmXnrZ+m/eCsw6hNt3Is2X1cI7RhDlv52y5pxS6E+uKYjF9YmwdnspQg/dt9J\nS7NJsBgO/gL+expUQalWqrCujg1WDXiBy82cMB2bCMxOtM4pGBZxL7ex/ims\nXYmuCEKAqDDYRCpV4NMONN6v/ctHtQjfwGyz/3FOkyWwuZSVVTibG0dOb51Y\nE0sL8o1/20f3qXmAYLBVHFOCDqFJDGLZxawG540WEb8d759fXdZ+dbOP2mrq\nXtN4DzHmUBS3EVvgV0xIdYNxQDKLVlmGn7/IhiFmiTIXCL5RS/D965CMWE++\n+lDBWZrIo5EKnTA0gfWmYxjDNjn9bJaYqJBIyWHxiWiy7xiCDQi4Bh9zWuSu\nakWxgDtDG8llxZmMsFOSlblQT9bPzzaOAaPiTVWaIB2Oenx5KvekXIuirc8n\nxe8s7wYK8moifTOBTDVu8o3WtRlhCuc3jZRIsMq0bEGR8HE6zXGKuJNRCc2O\n0+BQyelZ5GKqb+Y9OwKCFLyg2/2FKNbxiISGxs8eAL5UpKBM86D5hUQ8wliL\nd/AgngoKrMJoZAJUHj1gFLKfxg5axt2qPkB6iGEvEHlf9p1QIbRooIiojoSw\n5lf3\r\n=HNnO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"35e028001cef3710166f272717049358984c95d6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.172","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.103-renovate-non-major-35e028001cef3710166f272717049358984c95d6_1605914432967_0.9220951542927642","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.103":{"name":"@balena/jellyfish-sync","version":"3.0.103","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.103","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"937ba2fd382c59cdfd5a19253adbe36ab883090e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.103.tgz","fileCount":27,"integrity":"sha512-QGjjCHuQf/xqKGLDPDkY0ZSYgdDXt6BUee5lGcgfQpaQJ4dBbA1qZyYliZjlczUw5MEQFSCXEm+soLgyyJwl6Q==","signatures":[{"sig":"MEUCIQC41t3+B85MLy1SqXxVgSp2/wYE7lDFzFH4K9JaoEdMNQIgDKaiXKwpvEIsQ/Xtyf1p9rEqUgX7uP3Uta19JmaTlaM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuE/zCRA9TVsSAnZWagAAU3wP/jgJxErWuD8BSvHonrVD\nR82W9XOH1AZ4lt2U6j+8miZBWRKKpJkrlEJlkhcuWQ88i+/w+B0F+MZUBbsD\nxCov8zNTrB46VnVXiG/w245yo3EWfy9M6QuPOd86FwW4OcWxHnuJaqwOjGNc\nQUVDqxLP16JrDQiK7di71nEdOLJQwtAGC8n2sXFSwb/QQC6CivSLRubIhB1g\nR947C6nvfkh4UtoYDiK9YI/Wtufu8UPSJGHCgzrJqgEWWsav8+PcFaCnwNCZ\nsYzjdGTzDq4piS9Z3JCAomKddSzSajteKBHmZUsVpCUC6+11sex7/2vLZvj+\nuGmP35MNtCjlZbEXCULX3p7pjZULwGNwGAMGZVSaZLjYTdNWsFZ7zEJlKSA5\nJoPTN35C1/3USYTzPvKVBjY7dlrBiIek4Ug3wgVY5FNydN22aP4oOPr4k9yR\nWIZQTTjnaGqQl0+CLb3VHuNl83TH17m81BaMAFJan3PDm/S2ngbWBJHP9ond\nrZenerL3SnJL9VeixLmE/HXtrREJsVTrVJlt9mZgSrO3ezOfXU2fCW2Cj43z\nw5l77t0PgvgvI/SVaPt1p4npWbT289sF5yPjHVkkaVCi/CrCh5HmdmC/Pn59\nb5UHRNJLyz7FUeSvnMS5heFm9ffPB3F1oTTKGcOYh+zP3WiJHmWl9KMd1Q6p\nyn4j\r\n=QkQ6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4a9c1b91122c85cf67fd9e7fa4a9e003ede2cb86","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.172","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.103_1605914611496_0.10108746034382965","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.104-renovate-non-major-7a485fcd90b80d706644fa9f5b81463fc225e1b2":{"name":"@balena/jellyfish-sync","version":"3.0.104-renovate-non-major-7a485fcd90b80d706644fa9f5b81463fc225e1b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.104-renovate-non-major-7a485fcd90b80d706644fa9f5b81463fc225e1b2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d395205982dd04351c304ff876835a30a418902d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.104-renovate-non-major-7a485fcd90b80d706644fa9f5b81463fc225e1b2.tgz","fileCount":27,"integrity":"sha512-lEW6joYRBgSxETHbQwjEoZgTpbjPvA4mBuiMgWkqtxBLIVVngZ3Og2FPZmR/ksTVMkJUCoRYFEbl+VyfwcpIUg==","signatures":[{"sig":"MEYCIQC3ISvR4NQO7kY2ayIumxprj9NW7lpNF2uwVz3vJwjF+QIhANyDcEwlTyYZOfDdygnnuDCcfmHnolmVtLGrGaGVpRol","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuH7WCRA9TVsSAnZWagAAUTQP/2ScTPSbxh2IP66+E9My\nKzN1+L0FcbzOfoAyKFtOUxaJle+jHkbs1CRnIxqM0E6njDRzloYTpUohpTsA\nKdz0tpr520ZCd2ngU3tIDKg77beHzBBWVQ9ybuc6QqeLCPygesytLcz2MB7/\n7Jqt6n7wTTdaDxx7EkD1eYu0JPXhD0RPkwiII+li8K84VamXJK3MsjV0gS1U\nK3o3YvXswzc+u2XeioR657FulbcwdkXGlmL1ZxRhXsCEqD9spKm1bZekK1fl\nHEO/H2O4pHVAB8Xm2wRYXvfZ2PHDXZV9wbncHjoOQLG1niFCY5C+5D3SpCfl\nZ1eqoRaHqTaScCfhQGD7L75gOMXf1rdY4eP83eMuhetgkQzTM+yQ+qnHCnAs\nIjrliUZEF8bhFrBCLSB+pizGGapHFfh3GY18j4vj9zUO+aTM9KRyEITaZcML\nU+ToxiKDPxyapFRnj+jEQlL/lddXYF4yp3QgKC42FR5R3yLrwNiFTi4UhVLM\ngNvf/koom1Cva/NUqYOkYA/T5G0lAnOA4p7lBi8aPGucTlU1Zovk74c0NJph\n+OvJCKRjiql+rhdxTO8O4m5aZLoIolEVnV6uNBKm2Ywqn+cGWj/UQcFPwjdw\n13WYX2mDYm13aJy/oP14kxKF4rHiOq15Q9Ywtlq9qPQoxNk+OOJdnZr5PWrD\n+mdJ\r\n=c6j3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7a485fcd90b80d706644fa9f5b81463fc225e1b2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.173","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.104-renovate-non-major-7a485fcd90b80d706644fa9f5b81463fc225e1b2_1605926613671_0.047819262787474504","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.104":{"name":"@balena/jellyfish-sync","version":"3.0.104","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.104","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59479180b0e28ca120f5789d491a7539323b4bf6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.104.tgz","fileCount":27,"integrity":"sha512-au99g3PhYXwzR1+O+Pqo8i5g2bsiE8YC1Ah5/XR8xLKCDOu0sDcpHBG6hfSc/akIZR4I4VmxZIQwKQ50oRKZBw==","signatures":[{"sig":"MEUCICNUCB21u6HLRZCt8T6+oun3//kh60kY0cO80ZUHh4+hAiEAwwnIi1oClIzffReE5dc4s5xzlIa3vHJhzTtQOrqM4C4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfuH+SCRA9TVsSAnZWagAA9ZkP/iifd/S64SVmPfzubY4J\n5an3edl87/wz+WTtnMtQTaWdPS5HkF0rx0Y3fd69rZI0DUM++9w0KNT4/BtX\nycUR5E0GUctc6qJUhHQn4o5FQNBdKI/M4LmPteLUEDzMgDMn4vN9U/JRCfH4\n3SFUjUZsvDJsRzCzYioyjf6iB1q+2SEE1HhkSUnvi2HxPdzMLFNrt3pwKDzd\nY3XccZ4imREd32gjvzCfb/vwQT2fy5nXStM6DlfWFD6+8WfpsMscZlgRc4xA\nPr6Lfo7zEVqPkhNJVKMz9kv+Bfs/sxsMfiri6ldw+CceGVvxjj+5Sjt/vCEz\nhfnf4k21gdHzfXC8hcNLnK8KLjWAYfxsRnEcZsL7qAjolc/FWIiNOocycVta\nNCE+6ctP8oK9AU8ZUG/OANh4uMu71/R2P73zJhhhmtUvgnIn5j8duwWnmOEY\njeWLUmIk/w3LWqH2h1Q7l9T44aqhiD/M3ugbi9Wj19htWT7FLzeR/ECl8Yas\nzk1wG7gw8KRrmlydmp/k8YQZeqzKMOayXaVXPxhz15fAXHmrgtt03l2JTy/+\nz4SamguEaQ7NHumyrKHWcZlWZVSpvH8fgoGQu+njczVa4nJM2oLguR/6Ddj3\n8Y0cxV/6SdwF8HYh1ERpo9xtZqvA+360xl7e5/HgTCCxAV58cMK3RfOC1+eA\nzioD\r\n=eNVE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c71c9de234d5f2045e9a409436ad1b46749709a1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.173","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.104_1605926801686_0.9884586930719104","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.105-renovate-non-major-a8f0495afca8b923f2607340ca332576095a0f4b":{"name":"@balena/jellyfish-sync","version":"3.0.105-renovate-non-major-a8f0495afca8b923f2607340ca332576095a0f4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.105-renovate-non-major-a8f0495afca8b923f2607340ca332576095a0f4b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29c337ed14c0dc5589ec41e9e8c5e5f6df8e25e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.105-renovate-non-major-a8f0495afca8b923f2607340ca332576095a0f4b.tgz","fileCount":27,"integrity":"sha512-ce0mZhO+DFlWL/dS6au7eeLtNeWROoExRjnn2td57j49k3PExoyE5GrQ0TRZDAYyqjvRSWocx+3Yx0VCALYZaA==","signatures":[{"sig":"MEYCIQCkjzOTAIKrJO9tWERLVZ1z+bRJ/II0l4Wk0BBcXDH1DQIhAMxhVWXl4osTyCJelRQqr2yGjeE53ZgF6kOES/N0/FdW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu6S4CRA9TVsSAnZWagAAfRIP/1g807tZtaJmudYzcyKf\nV5KUAm9cPwMinocpvHJfTZ+aBnGQNLpFIyeON0l1WIT5XdFGp64rmyZQ8CeD\nPOc8ipjM8U9LcgnRuGym42G3LMlLT5l44gSiE6kwSPpqsWLCO720zE1e00nX\n2f6dJ2gOS9QqRkXIYmJ3r9GrPbKQ36YS7MQFk2Mi2CN8LxXVpUHBJvrrv0eo\njyEGwnxpI//onWqHK4hrwaeov89B1Fp7k1OCYUfT06ZEKON1qglrb0BdCV4A\nI81sy2DeaHn40iQrg99AUsGPpsfOSV3A+a42dfOUYL0tuAcJgq7KYA+De2OD\nYVuMUUew4Wvl4s3RTV7KXI5FyjEJGc/ld5cUVM6f6pRGD1rxeTUpfPZZX7CX\n3DfJCD+ZouKnuX0f9Ww1CwWjrqM6FESw+SzRbaPS2kbuEhHBmf1QXzifEy4g\n97nm0Fn31vJM/sKlg+yRFrZogIn0JscvAsw46xS9h/ORrtNTvQPtdUysF+Ny\npodQ/Vl6gN0+UKTbOiaQjm7EUz9+vW3jttgd1wmF1NdEALBO0XH1CwQDtw3F\nEsAy/RvkAWSDnooBL8LY0ffVBWiLs7AI9x+rV5H2PQdq7Y0/S6zx0eGurKDH\nhZzxiCGZcQxlFskocGbTL9CxdeodjPg9xJz5VXyvdzjHimfzvz4lT0h0AqC1\n76a/\r\n=yfEA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a8f0495afca8b923f2607340ca332576095a0f4b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.174","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.105-renovate-non-major-a8f0495afca8b923f2607340ca332576095a0f4b_1606132919672_0.377856636841746","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.105":{"name":"@balena/jellyfish-sync","version":"3.0.105","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.105","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2539d1e6aa885e3339a6b1a65d68c2cc1d617656","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.105.tgz","fileCount":27,"integrity":"sha512-1RxJUjKOS3xY+6usnJHsSH9kR3VkFRCdPMkxQW1NL5XFBD23YcpYnzYEQL4NeGnOEe5vjpUgfwQmBXc9BgnoFA==","signatures":[{"sig":"MEYCIQDoqsLysq9eFxSesSz355L1u7qa0hiJvuT4hBJ+IPa9wgIhAPZjnOoef4u0+e2NOwtR721TauMWgfuZRcVUlHNc+BuX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu6V4CRA9TVsSAnZWagAARG0P/jsJ3U+O7wwOmpXr6iPk\nI5lOOr0/zQAaW/Hskgn3kXBMdZ9Abpo08hipC0cSZydFk/SyyA5oz6S7MyqI\nj/I/aKsfC8nC2UItyyyc+pWobOgHTK6tWnUdBjV9wr9QWH6IyVpsx1DAt/bJ\nzd4w3WFLyqJlqDtnt+PUMKjqH3Hm/UavQFvBObkuzo5EZe+LUCeXGKTJ+cmC\nf50ePLUVq5JrlL1tr+eedavc/pRuN9Yg8cJB+6Ao2+U53liCQhxOyLNHtU3t\nXA9Yz7PNq0glb1hAbwetgMqgue5HnED5dafbnO8NuzdPKuFWCQlhQaa7/6oL\nnPg7x2PMtUXZvvdHuwyMrb6JRyuUXRDzMhASI/Il7lAZjW0/2Zdyd3Wcovs8\n5xPoRrY1nHpVxl7jNOWN0Ob+xEMWFBFki81Bth2ntllzTkQyEXa8Apn1TJj+\nYZ1saSQ79c7BvxaeYd+TYXTP2Tx6OxSKYHPIKfzLmRowumCazxfYclb/NSzd\nnaM+j3StBtBKz/B+VdjnzOK1JFbBdCKLhMD9+hHUovEG6Dk+Joj9O92zBEOF\ntul9PeyAekTuanhi9SIL3Ynwg3x4gTdqaNSTxZR16KcAUplhLjqgjHywU4nG\nliEbXHAJMrQDTolnse2FSdnxn33I1xLPc0sO0GBsIhHa/OD/mGFzoSnFHb5F\npu1+\r\n=cbb/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6b9219db3f0eb7c2462f31ad2a452b67159a36d5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.174","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.105_1606133112097_0.03931058765184381","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.106-renovate-non-major-c03fa754eeaab0954e78f9c0709dac27d414dcb7":{"name":"@balena/jellyfish-sync","version":"3.0.106-renovate-non-major-c03fa754eeaab0954e78f9c0709dac27d414dcb7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.106-renovate-non-major-c03fa754eeaab0954e78f9c0709dac27d414dcb7","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"81f05e1e3f7a6bc1a6eafa6185a999bdc709cd61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.106-renovate-non-major-c03fa754eeaab0954e78f9c0709dac27d414dcb7.tgz","fileCount":27,"integrity":"sha512-xNJXSYS2L7oz8V4WUO81fTnP8goCwfGCgN24+Xs3kjpRdDuGgBAiT1jzwwFSARnG/e+3+zfCD5WBForS+Pq6rw==","signatures":[{"sig":"MEUCIQCd3B7QzGXQQ24qcQM4DuhA0cnQSc2nEYV2TuBqAYDtDgIgd0TP/do9DcCD6VMgJ49QfyC8lT+5cWyJOjJdgvynGfY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu71qCRA9TVsSAnZWagAAzWsP/iGXKyoEJeCbpvQx3Jo+\nL40wBi5LDuF2tvK4AANFb5BoMOao6KGUN9MlyqqbYymPeu/M6sGRl/BV+ttL\nzIQQOT7RRT2waBHoPy9D64/KfW8DhJiDRLruHpFqzspTyqu6SMvshKQX/fu4\n+KEr07u1pOPvJPAM3AfPDQOEAxtSBTw2jIBqMixI7JUhUBYsjMQ7TLHWhE1B\nmzDeQiPcrTv7ezKZniAKZJ7zpxa/gg3PGcSu4ex8rKQSa1r/mOm6tWosUgnz\nDB6u5nzKvh34dMGngh8jaDTakfoy41oRZ695WRv1oBBM70l/dISsaTIZfAXi\nOLUW6OLn2ILwiVhY+QA61hwz/IOBUq/a2zdhV/4ZnKyJZBGwqQL0jUB7adlv\nFtxgbRn9dgC30/N01+vGxvY3aW8L7wEpmKcJL23mu9vRDMtESatczfBqxpQj\nYJ81eIKSKhLcNqDCeJIa58fJcQNW/UCQckkxBy5Q3nMHnNfHEZ4TvX+HO21d\n3Fwu65+BghGluY/yDpdVVylTe+DFbsKvryZeaWm7VoYgpLnbRK0SWmw8Klji\nYJbt+ehqlhu7FKJzbg/TYup9WxU85E4+iJKxbzN8rZs5Dl+PLzyFR+9kym33\nUi5gg5MwCpmIP476JWqy84ek+OXKOkFZdfy8UK4uxPRkJJkvMu35g/W2rjpW\nmKXa\r\n=RJtK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c03fa754eeaab0954e78f9c0709dac27d414dcb7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.175","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.106-renovate-non-major-c03fa754eeaab0954e78f9c0709dac27d414dcb7_1606139242080_0.5460924188469516","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.106":{"name":"@balena/jellyfish-sync","version":"3.0.106","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.106","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9bdd7ff30b1a2e1e566c1633ca2589a584d8d62","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.106.tgz","fileCount":27,"integrity":"sha512-jTqFSQsjqc0L32rHbDKt8d645xljjzqK5Hd+6P/oC9xL6VowtasLIPJ61iO8MCM68PZpq8U/dfzqNrzBtfrmHw==","signatures":[{"sig":"MEUCIBO8gtl2+Ov6sxPRIhVt5U08iOYCI+Xu/s6t35BnbVD1AiEAhhYz48FaISEh7qh8IjWDXZ1opT1u4lLMkzKF+xxwHkU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfu74wCRA9TVsSAnZWagAAteQP/1+G8+ciNozY1kiBL6J9\nA7MIIu6mI5Gk8gL3MetTW4cpHIRVuw9rOjjFsR+UNJc4F8K+9AyJfMrr1J4o\nAGzKIOt53UaEpIxehU9XVDClQuy6wk9oaDL98KrwR7mPcp8gJRY9wgJZANh9\nVL/aBWHoJAonZpLanKf5qYYhOEo9HUqbikIiyg6z+vy+ui2VNtCSgLz4Xu7b\nQDv/pgaMDm+6qgwwT+KAcRWy7OkGA2/ruDFxmA9f7qEQTtnYnnMO5vJltp40\nbXQtJKBQJMbebKC6g6b30GMkaBTnbO8QJu+j84HK3kG2s2HsM2hq0+0pP4he\naGZmm0bhKerFaC50uekqPyrcBAzeweIUqKv/UvsQTgFsIqbWFIA2+krx2YWy\nwRFJSG1QAPPTRJhYLF2p4xxjA8aNUUHLXRTMkaivM3S6OrG91jjZCaQpeEZ2\nT8QE2BkzzSW0u5gJ6Hx0PEV6zagATCPLvNUxlQA+DgYJqaryFdDKc7d9CY0I\nAUpgxqhsvkamkqVT5dtlpzfqQQlPNj4xyHAklW8EnDNGnpVkBbXQjwXmQH5S\nkET+FHSNoRZGCO/tjvV/DAME0NKjOMHOnzz9mT2VJXL4LcaCl1Nr2dqdpgYc\nY/Rjo1ZGPwl3KWz108JBj2vfkrFYjX8SrzqMFNVF47HVqrPupT+3Dl/dgc9S\nfCIT\r\n=vPs0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1239e2b0457706d948b41cda9012af98307111fe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.175","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.106_1606139440391_0.4062954145564497","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.107-renovate-non-major-816393c494c0b9c645f1646584fcb135767665ee":{"name":"@balena/jellyfish-sync","version":"3.0.107-renovate-non-major-816393c494c0b9c645f1646584fcb135767665ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.107-renovate-non-major-816393c494c0b9c645f1646584fcb135767665ee","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bbf284a985ab3250a395d20719608d2fcdf2b041","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.107-renovate-non-major-816393c494c0b9c645f1646584fcb135767665ee.tgz","fileCount":27,"integrity":"sha512-0LB+iRhjjkUn4aLLCWjWQM4IjU7ygf0vkk1rH8HP22CaaiVnLWPTIgN8L4IO5i1/8uVNULYmFyW2NRGw6RmITw==","signatures":[{"sig":"MEQCIAlWdJLZK+W7NB3cczF/4MXnEXJg9V+MAaRW3PrJUwDqAiAah+bosWIFN5hv4B9RtrH81vFJ2tVhQCXjyCoqZfWLiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJd8CRA9TVsSAnZWagAAmBMP/2/0jATJIR1OsK7z8NZG\n/mzeFQiWJydBTbc6d/0k2jtud2RvAStU+prn53InVvF646RuxhpWkEhOCZSP\niTp6pIdtc+jCZ3FO3RXay/ZAqejeui3fO773Jx/iL3svWfAzokJ4j5XIYEpq\nMITXTYe/bkJmQ0Cu80sQi2YwZ11G3eTUcv2WwsgNgz45XOTxJaQSNor4aLWY\n1KwG/lgyboY2NtJ012Y/Z55K1VSmkcqVKo/OH3CseRG4E2+3qeBKzITDv0he\nDdnKqqtRmv+gZTppNMHB4IEv9+inl7PWasePMkxFux8vqIlvtFc3fAbgKRTM\nQrERtAPZA4VoxXS+3k76kEMCitDWRtW+dU+u8aSJdLAZgacYxmhxd63EhHcA\n2f7cJf4ThUvBKtNsvKS8PPLKFNxIOgmTEyTsAffnojIam2VFEcOB8wYiyobc\nv3EREtecOXfHLxZbw+GjQOsmhPMr1YgcxTf3nBGM21sTBb3NsiFRdT3zge2R\nfyc3bNl403tFKX4AKVewsZZQipsZb4DBfzrkdREcHk0Bkjvj33SiCLwiFWX0\nppsAOOXEKhtVsin83zt2DMJXhKlU3sLm2A/2hdjrROYFaELSKisCTiGci06r\n5nEyCiivp4OrGUOHYbLPXWDNAsNrU7gVfgFGfcSTjWwpQ7Ys9zM80OXINKOg\nN85P\r\n=WKqG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"816393c494c0b9c645f1646584fcb135767665ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.175","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.107-renovate-non-major-816393c494c0b9c645f1646584fcb135767665ee_1606195067594_0.6035084747433894","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.107":{"name":"@balena/jellyfish-sync","version":"3.0.107","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.107","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5fd07295df92e6ea53677a1f8108b1b06acfec47","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.107.tgz","fileCount":27,"integrity":"sha512-bD4pA69zd10AQO340yuiSsYSs+W9a3UO47XdTlIL1bEiSNuCjQzH7i/xI2j41L1Qf3XCP8TJtdp8PpwTZ7WL/Q==","signatures":[{"sig":"MEYCIQD6ax0dbJVnPSssRpabey2RiMczwQfrkw/wiUMiYfdTMAIhANQnhekGCiaj45eIGcS/NpRXqWfuH5z1NohSuxmpbYCQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJhDCRA9TVsSAnZWagAAd0YP/0laVGXyjm0pmNmeOQh7\nMd5E7AsBGaYa1pHwmXzuEGysSq3AP/MJD2AdYiWa7nKpFZTzuPQqmH9ULEUC\nFRIQaiM8D/OI/tPeqgyurM+BTvWmOVNMBPpF6XY+demTyAiM9JlLQECr6oUW\n2LVUFvlHsb48d8nwr462fy+uM3I8mgvYky8w3SkV6a5nNqsFJn/YeFnvMIRV\nS15Nel8ayso1XjldbhR26Y9GhF4fUAAU8YLtO0+f26LwtDZsc95C2Z/lZinI\nZfRsU3F3iNz4+IhgdnTVvkGR1xzAoC4frBRSjfDf0pGhpon0ao3Mk1hY2V/F\n0cexlyzWL6KWSwDksec3bHSkQNclWN3c21f6E/BkQlNrRYHcKQutF32X/xvR\nCPGi5yEb+l2H/eZXttt6Fb0OOU/WN4qZgGAlCi/DtBnrtaTDvBlqbwpIqi2u\nmhYSakFcdWPzcu/a1jCIIc6m+K7PHgdBjOfcrDFiuQLo9WjoqYhP9L3JulUQ\nwXkLIeiPNCA7E/99+AsvGPZXDCGvgvytHBSZ1oYaCQoZWOgvordf6SBXziab\nwAcKl80Lg/Ran1v3XDZM9htFlskCMjd6flR9ip7p4o9T3ZvmR3FniOWMQSRv\nlps8/pxLuyCoPpwtFlY64pXJOwJc4JXbg/1GTE0KjPH0Q9gmyFB5QkIGhzEQ\nFWXp\r\n=nplu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f24bad9706f10ae785cc908e4961f5310013ca1a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.175","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.107_1606195267052_0.1952800101822436","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.108-renovate-non-major-abf46d8c6f9f98702804510016e2c550143aa285":{"name":"@balena/jellyfish-sync","version":"3.0.108-renovate-non-major-abf46d8c6f9f98702804510016e2c550143aa285","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.108-renovate-non-major-abf46d8c6f9f98702804510016e2c550143aa285","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f23d1bbc6e4d862a1544cf3a93eba092000bae7b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.108-renovate-non-major-abf46d8c6f9f98702804510016e2c550143aa285.tgz","fileCount":27,"integrity":"sha512-pF2L4/sfhBpq0oNOQWauz8vkGbkvoBWXrNgd0iCWqMmalRFVMjuS3jji7pnWD+RrSwNXs3w2RrbeoJ5qqkfEYA==","signatures":[{"sig":"MEUCIAb1toygEvVea/OduVxV3fLsWiKvj0JvTaEm2rB8QjqYAiEAsCpXbiy5FKgrxpNjeKZesn7S/8aVyNOiFClobYSMPqE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJlvCRA9TVsSAnZWagAAGGMP/2OEHIr3cam/2EogoIZ0\nYcr467VykzCOz9R2XTTdqonodEbGEQnKafV/e3O7MQCdbqIFQJ9/3+9Enh6W\nXfLPBv3WWM0v3NJg47/miEsXmjw7iMzcp9cais9PVKqGQdhkITbqjVaPElZK\nW+T/bzn75LAySh0wR4MuQekQ15iQmwIcnQb6hpb21QwXvhJpz+9oQJ1WXWJ0\ne/BPT2fEFWTF+vUeGri2JIojMdIyySnHcFF5Nti+w4KgcfoxgZ/yzkGLbqul\n7loywrrWnvFt1tj0fbvCUuUoPxJxlzWlVwbRVc9cCjcgnYuDir67CW7mXqzP\nkq98+bEV1TEelDulL53pKsvqGTtPI3w8jLyeAAttS5ceI4tHY5vdKblLOGiA\nk4S4tKiV5WywWmHfIGY+EmEs6HIux0HSiJEk8Bl6kTAi2T/CVOraEfDj1LY4\npCpB9p5VzUUrhtX+W+UaimQVJYTzogyoSsoVN/H9jOFoYOtum8Dad7hqHy7C\nqkeiMdsTjsRmaevB+qkP4Uo4fOUdd7jsKnm3IcpeljRt8A9LZjd2UvWUMfnd\nxgNFQlozZW34lzKa1IY6pPcrrXt/jJWrXxNlefna5kAbMcnJvfDCJg700isS\nEYjaR7mw5SCuba7CeweMy07dT6AocWI/kKRXuXaRKZYuJ8tLO5u7qfZqXTm4\nCrOF\r\n=r03w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"abf46d8c6f9f98702804510016e2c550143aa285","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.29","@balena/jellyfish-metrics":"^0.0.176","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.108-renovate-non-major-abf46d8c6f9f98702804510016e2c550143aa285_1606195566392_0.8076248969902484","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.108-renovate-non-major-533a53d7432226c32357e3b166243f214eccebd6":{"name":"@balena/jellyfish-sync","version":"3.0.108-renovate-non-major-533a53d7432226c32357e3b166243f214eccebd6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.108-renovate-non-major-533a53d7432226c32357e3b166243f214eccebd6","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"76a7e3595b37246e42f59eaa8ae815afb661538a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.108-renovate-non-major-533a53d7432226c32357e3b166243f214eccebd6.tgz","fileCount":27,"integrity":"sha512-9UWZTXdSabpU8O7wInu9CDXp3IG8ItxTsrquybQsQtQVrYQeCJ49cLHB8hjMT37U6PDzsJxdgu727Fm6voq4TQ==","signatures":[{"sig":"MEUCIQDN1ant8BLh6FoRoMAyzYBOpXjsZTugniGsrDmZIWuI1wIgaWFsxBO0tg58e2YS/MJM3DbCz6Y6mGVq+GRzNcliZs0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJqhCRA9TVsSAnZWagAAK5AP/ilwFH9lFIV4o89QxSLX\nNj55X/PJTO4Ar/YHXIcyC7FisT5meNaHYl/PqpbLjSk4aY8F9ZAI/5ZfoytP\n0M7xKCpORaCeFZGBr1Qq3bJa6oUfRrhocVXXB1fS9SaOl1+FUAn3gsK37tQM\n6nVPBkf1tnpRQ/uw5eon0KyW186ytb3UnxhgzIYQaNUCsOyg9XgsTq6UONKi\nqolctWiEMpwSTmexhgmDeuTX5ZBV2VxRy33VNT01MEPCI1Tx+AYBK147SZtP\nk0LHShbR3sgam43xRPS1+Xx4stqeOSVIZjZtsExVKxabIfJ5HZPDVaE8hsDM\nAxnODrpUIXJnVtjmETvWgcQqrUNJ1eXcGIBkue8GsFzIpLvJc7a5YONjU5V3\nxIgA/CCV/qNqLk+tq54vJIIVe80OCZZa9x3JsBbWsT/s38S9jsEIjod4dutN\nlBEXGioQ74ULWMFCeDPyZSUpMused8CeAj7HY1M2NKFmsBKkmoGuGtnD6+Fu\nfAS1DACqWDZJCFJMDykz96GNPsm1YFuo9U7kVLpvviZKkxU8gES2gq+wmp/C\nWkhV2az+EJaP+kTp/ucZM/1ddqZxh/0iEiychcTwSlD6zFAOKWqt2lBZwcRM\nx2LHFfpUvhAIVBldk3vtD5V85f7mR+TR/vGThaLRmYBUQ6jB0IHwzfTAc/1R\nC9fl\r\n=GSfJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"533a53d7432226c32357e3b166243f214eccebd6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.176","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.108-renovate-non-major-533a53d7432226c32357e3b166243f214eccebd6_1606195872608_0.7129783762404394","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.108-renovate-non-major-0075a96143f764b00dd04711af97bed07401581a":{"name":"@balena/jellyfish-sync","version":"3.0.108-renovate-non-major-0075a96143f764b00dd04711af97bed07401581a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.108-renovate-non-major-0075a96143f764b00dd04711af97bed07401581a","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9852aa81bacea8da96a8ed0e9a10a51e83f89efe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.108-renovate-non-major-0075a96143f764b00dd04711af97bed07401581a.tgz","fileCount":27,"integrity":"sha512-miXPaUZMr7ARptuNNgfP9SU2TEnuUigxkDii43TvLuqX1YhYuFIUJWuazOei+NFeckAOyWClIk+PbzIrefccQQ==","signatures":[{"sig":"MEUCIGE0kItWW0EpMEnft4bJMT34sPjAhmB7sdBnZVn2Vw+RAiEA4N1KBeiFL6kdeuLETzmOE4VDMW9st2/cXsMdwJsfGAs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJujCRA9TVsSAnZWagAAi+UQAIVdUEanXCLILLYcYc98\nGJ5f6SKbisLGPOz1Z2lBaHNy9/7dMoqIjiODVY9AscFCo0mDz50ECofTusck\n+tWcV5VV7gP+XwSxtxgLljvl0HhrQ4ifUaBySoIzpzm7WrMpSECO6PVEP0Nz\nMQuKw6H2CBnpAnfjNy9wT3or1uKI7QpcvEvxsVkj33skd9jgutkeH8E6Rd4j\nKRDYPQsMAOMfkPwKfRUZwY4PDZ3oC4fllLBHMalGEoR4+rWZL0Fb4EjGkrkf\nHK39M4uM4qZT5BTLMHwHGDCMGAsvea0jt5qEY7GUrqRaM5vaxrIVAzsmGP5Y\nvQVvU/3/BCC9Tf8YPIMwluLp2ZnJ28U15EMDkcWEFvs0YcGcGEt11SmbW2tG\n9TIbSPZTyoBhrvUb5C2KxzCvPL2hrpP1ZPZIFXe68Jh9rsb/jyTEQD7/pK4P\nzJz/J99Yc1pKa96VkkqLkwoJIkuKgoOiiB4L8ja/3lz/A1tJBsS6SGPtk4oh\n0rQwZh6JljUXmQrkG4YlnMEIInzYp49FfM08ATgQgJDRA9GKhOvdMOlIOKBE\n1B6J5YS6LllvSjmNOUah5wt7eQwW9/L/w3+I2R2e4/yPfD5iWH6rwNr/h5JO\nn72u+WUADXNfdcQIRf+Pcq5VLEAQtVyO06XKGMqsv1xDvgyXOe8XZuTx7fw3\nKI13\r\n=04rv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0075a96143f764b00dd04711af97bed07401581a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.176","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.56"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.108-renovate-non-major-0075a96143f764b00dd04711af97bed07401581a_1606196130816_0.48505159951536436","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.108":{"name":"@balena/jellyfish-sync","version":"3.0.108","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.108","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4429260b2a5ead18d3a277f1b70a8ce2589ba577","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.108.tgz","fileCount":27,"integrity":"sha512-QuypxITVzEmR+m/M2n9rCGG8+XUgmOkbK/lBhQyjqdihvfHdbzpWpgRzBhJZWPEMyxErXInmMhoNKLWQtQ7mMA==","signatures":[{"sig":"MEUCIQDPSvbZWhy21gFKkjKimwew5PDijzq3QcC6q8wQV2f4EQIgft4PMrgWLxRd/iUfX05TrF6CQo8QeORjtrmmtzm5akQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJxjCRA9TVsSAnZWagAAuhYP/ji5+tO0liwJQjuFcg2j\nCVWkp1leZNCyJ9dR/RWTfG8zAN9LsZ7MSDf+cUqtUf95C3Q9m2UC3WJRv1MT\nVWQBQQr3iIOOID5Txrg4c9RZw1ru/Del/ItqnI+sHCi/wLVjsBluhoKGd2kw\nTYOvGsW52UUJA0eZHTDoboVOVfFzwD8BiXOpd57fd97D6/Kaml9yaY6iPAZ0\nePR/feNCtn8izzoVdp4X2f02p6SnIz5ttTF3Rv2hnYTLNiAQ5f6OrYIK4PD+\nvAWNLKTEIgKDyWZPfL/s+CoPGHqg894jOnt+9BSKjRYNKpxxnZRHdxJv3bvr\no8VILkf4q47WG3oJI6oXC/OBmz9Nwd1DR9WJ1uROAyX858vMgSXRreHVxun5\nLuY5lf8/daF5iC4ePjJv45pUfF4JH4gXM+a4M7dTg0TLQE0QQvOIPUNZTowr\nJAlQvRUbh7JGpK1h1PzICFQNr3j6ODqlZ7Mh8flg6Usa3q/mvHgDsKRKH0b3\ngC6pWz2xGoq8xkpekMN5A1AAQShbqu7V1CtGwMStkzCdhMvhSk1qNrmJq9Ad\nhsGbpb9CfHlccHTpOQb/FjxmFgH5Mxqq2/KGxzlJogQpAFirphnUbx8c/Jln\nE0AHRMZqZC0acpxZB5sdOqC1dz4OzLb390O2NBGRW4gGDGkz7gb7xz7JCb5h\nXxSB\r\n=CH74\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2a62db9c90c9d832aa5d817cac909565553fbf4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.31","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.176","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.56"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.108_1606196323200_0.7123912646672874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.109-renovate-non-major-f02d985a2752f5035cf271b6a3df4a70fe673715":{"name":"@balena/jellyfish-sync","version":"3.0.109-renovate-non-major-f02d985a2752f5035cf271b6a3df4a70fe673715","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.109-renovate-non-major-f02d985a2752f5035cf271b6a3df4a70fe673715","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"30f54fb23fb98a92a04f5d8472e3c16516b9a050","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.109-renovate-non-major-f02d985a2752f5035cf271b6a3df4a70fe673715.tgz","fileCount":27,"integrity":"sha512-PLCjOijHYtGuokixvBiCOTf3Ui7u+Y5EW1v2OZFpOIq/eYb9gdoaKgvrFLu/5Du8Q2yF2rNkG2aqc2HwkRrCyg==","signatures":[{"sig":"MEUCIQDXpjIWfB52F+7Ls31wznAtoTCNXBAmnZZ52h5sNE6YpwIgXUGPktWllrpoTJ+s5Pt+fYXAM0rqZL4Dt7d8rngsNvo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJ2QCRA9TVsSAnZWagAAHicP/i0G5AJUv4ffTIZ10QZi\nl4uVVVEx/U5ir4hoy7gyCPwsm6vaeuzKNKZyd3E2iTqqqQPLqGIDNa4fWIry\nUiA4mshMf/33WrAY+22LZrC2nlWXJ/QBwHoWInQwojpQoiPSnC1bhHSJJT7d\nyblLMZyWN62+N/n/+OlU4cVtxK38T7zx76USeyEuYWlb85USxTzpCrSExOIr\nBKjS0jE+/vLB5+cLwvLs2WqvFy1d09xuqOzyqUIgxXw8kz8n4SzTP5ZSh6jV\nTHEYJboLG1EuW8f4XnlyNL+I23E4EUT3TKYVTxx1FWosE0Qa+1LVMEi4FDYC\ng14dW8ZeypxbMDu2Sw5F8wxfPfxXVoJ3CPWBmp6Hj/QNm/FLcViTJfoxOeSo\nfH048uA556XaUTRS/ZgUjOVVWnGnPYHEURfDI9WDq1NtuNFLhzmJTT5Vg9T2\nBEWttkJXn3Bu49Vd+V/+qO2Kqo0dmCTacMsJmvRAue7rR8y93hjBQ88COy01\n6+EQPzHdKraEf82ZyNmFrXEmomzfLB4BZfWNaL6vhEpCsDh3vkc9PXfiW5rR\nAJcyvQJIuNp/rauNfkU4GWVcZLPfczfwRIkqlOW+yctTMekltDFGWvMZqp9d\n9TKGj+EoH5ISMvJDUE0+Zxdv0OPP6BEU849TUEBBwZSu33QbC6WW+uQO+1CJ\naFAE\r\n=syFU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f02d985a2752f5035cf271b6a3df4a70fe673715","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.176","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.56"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.109-renovate-non-major-f02d985a2752f5035cf271b6a3df4a70fe673715_1606196623956_0.607748858617946","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.109":{"name":"@balena/jellyfish-sync","version":"3.0.109","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.109","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e3eda361b541ec9f2df4fe7e10441d83bb97fb92","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.109.tgz","fileCount":27,"integrity":"sha512-RH+RGO47EzhsOUuswO+W5GPNM8IoW/bYI4591EQN7bHPaYngk0JQgI1fAduLXJ4SZGVpFhbXStUXWHx37EY0Eg==","signatures":[{"sig":"MEQCIDim7uAMEriUOwiaU6jKS8QQhjZ8qabsnFF2YHdi7p5/AiBx747sJwdxDQz4j0KAtjqzTyOLc3g0NKH5wQXtccij3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvJ4tCRA9TVsSAnZWagAAu0kP/3qP2rqb2YDfLSIYl9UH\neeGC+JHtbGrQnG3EFzz608Mv+SX36Lj1wXfpDUcxqJ34yLcXZarF3gDKygie\nZHk7ZSUC24gzDiBvTn2ISJrQ4tL7D99lfvkpkd0tvr7SIJ8cS//IUU0227VO\nIYdOaCb3NOuNUo72IrChvNDSm2ptOdRzX0AmSL2iLYnnleJW2OB9Uta/zctx\nrEoWemccMbafcIvYs7A6JXrjPldkPq2V5XScgMzazA9+E5aJSdZYgBZszg5h\nLXEvTt1BvmzggYz6NJrxXXSUctrIFPw5E2f3SPsvh5uCKhAA/ok2wZyGz2OK\n5ycHajnm6mRo/HAWVNgTGDoAAQpm+3egQv73wA7FqI9Fgej8/tVeUSSFZQ0l\nqhNhdX4u7XiGutkgrZHRcLR8SDEWcyDag/APkP3Xm6raZJosSain64cVAsqG\n/wQaCLgAFL76H9LGNyfjS6G+RSU0HgA8ZvyRSLXZxZiJ08aBsXfm54gIbA3U\nLWunYAoQr2b7TDFO6/Pgnh72nQXBiuqjMZrgquEK1tNzYHfqddDxUBpuJiX9\nDWVL57A7dZ/zB1TgDKPORHJICL9e+MBrZvtbQhrmA6ifNN6sfN+Mqu9qB3Tx\ni328hiPE0kb3IoVI4znnCsc2Dz6h1tkUGKrZhXGtY5HsDtSe7o8ChqaQjGGe\nOXAg\r\n=cSSb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3a5df398675a35955f00c9c7c0fbed20dc4ef124","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.176","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.56"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.109_1606196780791_0.5734692958018095","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.110-renovate-non-major-2c2c57d21179fb4fa59799d6a48c45356619779d":{"name":"@balena/jellyfish-sync","version":"3.0.110-renovate-non-major-2c2c57d21179fb4fa59799d6a48c45356619779d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.110-renovate-non-major-2c2c57d21179fb4fa59799d6a48c45356619779d","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eca3acd364cc8b0931c848f042ccdec099f4f61b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.110-renovate-non-major-2c2c57d21179fb4fa59799d6a48c45356619779d.tgz","fileCount":27,"integrity":"sha512-Y7JkcaBL+lAlM+tBdpwgukBecaXIUw6F+HqJCe0cZrnI9EIILD75hicVOP9xg/yj6YuirTd8A7efAqmtMRHLKQ==","signatures":[{"sig":"MEUCIQDV2ema7bt92jYKbmHdZ0qc+AfRhBqFJrV/8KBCWvfHVwIgWCkeKEBi/6IUJI0Ho1GPH5mFM1q9aFV56ecHGaDfFOw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvMDjCRA9TVsSAnZWagAAhN4P/07KgdFO2URvzn2003u5\nn+voVybK//TnuTb+wshC/gH15GOiAI0RhFBojyPvseIY70rW9OrAR3L/yqjk\nQdBJcJN/ehuzSPX+20eXYGUsCGNONxVLfDGlHCd2zG/omWxcD+vkn6QK2/LL\nMBmtszUomzOvjQo/ncpGNJea9Z4l585i0ydOUMoVaOEiXYXynFcrNyst0j3x\nQF4vR7eQNl6w9v/JAJekbYfhRq/FsXS7z739CLWOZH6Nnk0OW79YyQnxbuIk\nV4Eq20GdpMtJJfWQCjqVprZ6afJVIb7Z0sbaG3x0q3ZAq++lpUv8lsv5/2FX\nUccvGNvCQFy6/x/4shYtb+eWkuW6BmULpOm+ohmaNzueEEqhevttYqpUuhgh\nJrR69vgInE0PO14H4LftuDBy9Ru/rcNxLTklizgVviZ9bIo7VFGnk8sUhB+9\nsQ5jV5epkd89XL1t0gt84fPeizkcunn8QSyRpGorxhUIx9glEWjym8RFSMSo\ntQvJ7s6RxLg+Lf8/kVTpSwKgd5JPo+q3W5ivo/x+h6HryxscPG7/EWDqCEgx\nmeI/0YutG55JjfMOrtHlsS1VouuegG7pcPD9L18Qxx26HnhjKD2QXBfDrVqO\nG25bxna/0sD3/j9M1aXVVtbqCokmCp3a8zwlTTBZNNgpnMX1pRbgVMYwREv5\nip8H\r\n=tFGN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2c2c57d21179fb4fa59799d6a48c45356619779d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.177","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.56"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.110-renovate-non-major-2c2c57d21179fb4fa59799d6a48c45356619779d_1606205667305_0.3356289769692631","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.110":{"name":"@balena/jellyfish-sync","version":"3.0.110","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.110","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4fcd62714d099765e2084622655ca088486ce37a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.110.tgz","fileCount":27,"integrity":"sha512-8ZsxjMp1P/zeVfqasVnKFzyfdR30SolHIF1aBXo/73gnjnxfJCtFmOXF1LGvoFWqendG+B2GpRXmOMlEEkeOBw==","signatures":[{"sig":"MEUCIQDSNoCWNaED7gxc/Y6DeBEY0bKBKIx5rdBneRBqOq5lmgIgNyIgGLq/nwoqpmgf0HNuim7xdJ2UggzrUbYCkqD5CHs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268805,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfvMGrCRA9TVsSAnZWagAAnxsQAI9Py8XcBwSjE91pOWfA\nV/s+x+iQ9LE1P7EUNSVXGNfRbBpSzsGfqnBXzMl3x4zhK72Tk8u5jHzWmI0w\ngM1+RegcNYXjvjysmtmJoS24ddkWrbTq6fvj2Qsmqp2pqiSio4iz61T0AmtN\ntQWZdFwJApPUojMtMkAujcjnrPP973FQM4oday52Y4s/4Rph3ts35Dn+Mf8f\nsO0N+2PNgCIA15Afk9EOUluigo6DOda77HI4VjgC7sPvD0R1STX3BxiQG17Z\nX7hQqhoaJWdB08ZJRJU1m3k3kjL5GKdNqrbuPxmfWbPNUYLtdj8Ty67OX7jk\n7QIhpXibrQrW29JFX/MqN+kHa2lE76HfVBJyGyHhYhYBs2m/MMCDGqYRK/ko\nhtsVpBF4FnbC74vPywg3YCtNlAgiV8Ih4Jd0yD//Ip/a6wS/U1pGxqIDbCHp\nEWMwwYtUY9WZnga0FtnV2JwiQDO8uvsksBpBe5bJdoPrqMq2+TN7sC5btPg+\nsO7qSwoZfxDTRGbSIPjBKUe7SOZADxioMTa7lh4qFoqM0HG64cimk+VrAKdt\nA7T4KQ7ikVoK2a8zapAQd9mBs8RvHKCa3l6JNmvL9fehRu84RqAdgsAaOtkm\nLGJltJTu9zpjerbSMP61N+7jmGTnd2DWfTUtZNBCv4l0R55//4QUVh8Tqulh\nAKKR\r\n=17kw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"36bb99e7a74cc801979b78b765ee31725e775af2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.177","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.2.56"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.110_1606205866561_0.12431648183866484","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.111-renovate-non-major-4083d1f3d6509058c009cd9ac402e0e53171806e":{"name":"@balena/jellyfish-sync","version":"3.0.111-renovate-non-major-4083d1f3d6509058c009cd9ac402e0e53171806e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.111-renovate-non-major-4083d1f3d6509058c009cd9ac402e0e53171806e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7e575d8bb994e8cc2dca35d583b7e56ec790a4af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.111-renovate-non-major-4083d1f3d6509058c009cd9ac402e0e53171806e.tgz","fileCount":27,"integrity":"sha512-3KgTdE3J6qbOltygR+nfY3uk9lI/gbaZI5+4FIWyWXep4B+P9QHXfHvjzBI1AZvCX8soBgrRu+uwLGMi17uSsg==","signatures":[{"sig":"MEYCIQDphil1L0jQcB8hhq9UsyFju72FRd/hcfsWujQ7TIoVxgIhAOA3OELiaCC7H6yEs0b802EJTi03FKjFAMszq+HNPcZ1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwLqKCRA9TVsSAnZWagAA8UEP/3bA65ufCkWqdejDlC7J\nKMuwAa5oHNZ+FWyctnMCiCaf4xYkGSc4ITeO6SgSwsRVoQR9329P7++0MKYR\n8PZY3Fa1vkFZw9djCOdQgzZAfMxGRRoJnPQ6Xh/cY9p2AMlbDHU5jjn7o6oE\nz37dEL4DlzqHsKF01krVa8A+VBtmTSd9Veu/s7thTzcY5WQTSlufa1DH/1BY\nQG9BljxqpQsc2osvuCLeAogbAxqIs0qmt8PAdKe29+VTFFOp/iulnI2fbKYS\n8b3qL9xqVe0IpR2OrteROGi79gfiR1kgLZ1oJe6yPs+SyIrGtWm0Y+hJNjld\nfKkTjcJGXu88pX1jBlGPeQW16cDeZq/CvMiDdi9i1Gn3Czc7Z1CbrSHfShra\nJaHdhbsC1+W+A2W1m+Rbs7SJ5P1AxKWcHfAzrDnVdJbKe0mSEYnHgtgYzH4U\nUL5rJjplPe/aX8jueZcv+CfuItQtZVjzok2y3DL+TdvpcGgIkwADl31SLSOb\no+n7UpKkrSiEdeghvzDu3Fp0RApU3/39PjT5jxCGllUkLAlcmkGh07jvYLKJ\nB4P8KFYHz55GP3Z8so4vGzbqEzGE029sJTqNJM/rxX/Kx0iwglXBzfAhnhfe\nr3uKSSigKoCxkPtkf0njoy8fNWxtcUXNccqOEpnaAIpXfJt4thMGLh0Cna7j\niJf0\r\n=Vid9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4083d1f3d6509058c009cd9ac402e0e53171806e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.111-renovate-non-major-4083d1f3d6509058c009cd9ac402e0e53171806e_1606466185732_0.7345831388327178","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.111":{"name":"@balena/jellyfish-sync","version":"3.0.111","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.111","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8cd676aee5e91ec03716f68ab3350895060305cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.111.tgz","fileCount":27,"integrity":"sha512-W0KRjlhtsdC6Il/6knen5fVl+VWEMleV/55rxKGYAjMwBHsABpP11FuNRE6BSe7u93ZDQjrgyUkw9Si8TxSieQ==","signatures":[{"sig":"MEUCIDgBzJUhQ137dH87HIbgY+GlMW2B1S6BAH+JVmyMItB6AiEAysW+1stl3jJOZZ4xULtERz09OHvjjTJbkh6QuG1WeUQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfwLtOCRA9TVsSAnZWagAAV7UQAIvjaCEPx9uvsMco5RJQ\nDS0vxpAl1tmMDNJwQxHgOc2U7G4HP7jQpGFJam9Y6qboVjeHZOQJhOFwS5Vj\nUbZoz10YBQ3JQJC7749WcjVV6viG6cJ6lAiaVxgX/z8mtNRNEm9YtlkH9N4a\nE1MdZKJ5jegqTPP7MLj829G8qe7ZmHH3IyIDxNi7W6dqqLHZBktqi+dnKRKU\n1YK3t0acrwpdHWHVpdhrgf8WBivymYl7346Wm36IV29o9QzBMPolaEZ1jHt/\nZdJ62QCsHXjeqshgCcm37AkxeCgXAjhxVVINvbqsRpQjF+L+ob0EZp6SLEAT\njO0QibFZjuIEgrolGHeWJwLYMiWLmNorZARWUipzoyIAAdoQqXTeZhotoUd9\naab+rJo5Es6CSRYzYiulADUN0vQnq5fpm0GB55YsirPsrDRbWVQlAEi0s7QC\nTawcmTUaHhEjejIat49CH9G60q2WY0kl4rz8hlkWusG3u29Am/AXPrpABL24\nazGi5PddZ8Sz4GFBSkR/ugJdndnjXCPGXiCX8aPnN8oA8PjIEaUnxL5RqDZe\n1NKya3R16d9OcvLwhiCXyR1I5qo/Rf6iaOWZr4rFG3Vxc46fGGMjpm4l/Z0V\nR4EnwdYDpgZF25nT8EEAVLT/aDftQRfk3/5UpWpVYwY+SFp+cKWTMlBKEmVP\nFd9c\r\n=UbwM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d9acd326b87111f5cfcaa90c483eb5e049e41c41","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.4","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.111_1606466382150_0.8881149454228225","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.112-renovate-non-major-f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e":{"name":"@balena/jellyfish-sync","version":"3.0.112-renovate-non-major-f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.112-renovate-non-major-f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4599c9894515ca4b7f462d219aebeb6da3fe9f63","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.112-renovate-non-major-f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e.tgz","fileCount":27,"integrity":"sha512-fNgW9xHuWp8iDQZbjkk+SD3lIML3Gdhxx9NJG6An6x0slfJFhB4dY828G/nznPJbQZ0UdnJqP+VXS0hlLPMdmA==","signatures":[{"sig":"MEQCIFS82XcPR6cw1iuVGn+1/KFF2IrJlcWNJ0C/Phr0jXOZAiAAwglQi9OiIv7mkYVPc/B9sl8WsG8Mdk21MlC3j8aqLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxeGqCRA9TVsSAnZWagAAkJUP/Aw0WEDY1tUr+3uZsTrF\ngXtGTB8drkla7B7L4TR/aDx2fHFHgxUYydV6+bod20gfUmyhC6HBRdrCeTZ7\n+fT9R9Kqnm81wGNNYdp2louNnC8KKcQ74AUM2u+D/x57yb0JNscC1dgGm5iZ\naALduVruQxuzqT6Rf0rcTrK2Zuq9kDmQGywkvyZ3swlLK5xMDfjq3yNJh98L\n/xcdfSGeabtod32mfuPH6KkAnU3KndLpjCMnZYXqO1UNPEtZuafXzPMaK29s\nQOjkZMsPsNcsu8ksTRz/Culi2Ehwwfv20N9eSTtlKJI/hdeY6a/wDqeJyGMU\noRZZdw1MeszTA5tjh+1jMR+eXqvfagd9rwVEk7FiRl7XeFaquWxpPb4VopWF\nmf2oGLS9HOd2XA4qTZuuN0twlMHArIphKlkRN069jqrqACT8r+HoaBte2Bsk\nn4FKqkc0dkNmekYeMpOAyO0oypoF5zMcsCLid3B4vjl2rKAV6+2enCCi18kv\ngV1/KghSV5MbflUDw5Rx6nv/d9zAWizGqofcA4C/kWbgf6Kd2yEGaQTcq1Kz\nqnZ5NvtiB9bU1wdffxTlZBCWGS/i/yf+bQzoo1mXTSAXDuxTBwG+2qJVoy8n\nEDJqoIZZq/p1A5Ogqq6A0WXVRXKAM6XBju+Z9CWRUxgIJkZ4Tvupzxbm5GV2\nwyXY\r\n=5bxy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.112-renovate-non-major-f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e_1606803881652_0.32247511313871513","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.112":{"name":"@balena/jellyfish-sync","version":"3.0.112","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.112","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0475e88850017ce5178cb74654df4ce4a8715beb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.112.tgz","fileCount":27,"integrity":"sha512-I+D2hSCtTk69l9zHKyT+ZR7078v9FIWo8wW1igAEYb24ObfFA5ycfDm2TWqIrV+eO4FvBvaFwyujiaIGTUBUAQ==","signatures":[{"sig":"MEQCIDOHXtDbJSIPcAGMmS6+n2Ng/9iYLFut8GIP7Qv6gfU8AiA+4ziZh5MUWY0rUvsOguZMBaIPjuhITrw8pWAW3R2w0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":268977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxeKPCRA9TVsSAnZWagAAqrEP/jbj+zcQp/Fc/7+Nl5uO\nzOzur5+H52GdCgg4QtblDwrFSRXmApPzprmT1V+blHlrb3t0+X2ndF219p5v\nsk+k3ntCo+6Y3rDZG5ROfTd98dBvCgyXZj2trZljGsdzAI1Zb6wv/te3RYip\n6HBacGB+pt/PsUa8Dx9nt7pzFMkLj+VzdAynsqAh6zB2ey2e0pEBQYAzo4Dc\n2a+12JUhJxpD23v4OyyOYBZTthY6vXkD5k6kmlF7AQdISXOiZ1VqdlAxkueA\ndoQ10pvTy1nRlyu5ZgjB4lqEIT9NyRaz6BiK0N0kLVrITbyHXIHn7tXJTLGn\n4pnlR+LDZdbP/dHimFhP7TwmuiO8ZDBUbwlmYTlU4BLXJegNjumH0Ipw72X5\n48O1cOTPp2fsDIo0fspIFWle5kfJRN6QuFXx5vt/3YE4DUGm29WKfTBsau0v\nDZsQoCfUseniW15fW+9C2Ld34y9uDyV3IyL6L0ZQgnUsBrKxUn0FRSqUTuPR\nNKuuQP07LbI+S4jsnpF6Rivcll9h3Ec73HGxUt9Xbplme+lhdjTsmGWE/q9R\nCgGHAb817qgZ45ECnICw4q4/+d5Ke4wili1j1/dRf/6+c9WgkLxrHEcsOgPP\nMl5AR6lMjyiw/3duCsOgnHiX+1hYbNruTNgavxlus7vFTckcl7DRegKOKwuv\n2NYN\r\n=ux0A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d66f288ffc565690b1531a00906b59ffdca9fb2c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.3","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.112_1606804110453_0.343580223005288","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.113-renovate-non-major-243da47494ac5a0dd1b3b839ea3747f588251fc4":{"name":"@balena/jellyfish-sync","version":"3.0.113-renovate-non-major-243da47494ac5a0dd1b3b839ea3747f588251fc4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.113-renovate-non-major-243da47494ac5a0dd1b3b839ea3747f588251fc4","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a966a26e9e165fce0490c566e93b3fd5797c101","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.113-renovate-non-major-243da47494ac5a0dd1b3b839ea3747f588251fc4.tgz","fileCount":27,"integrity":"sha512-3hsCEhQ6H3K7dKq20DsgdgAqyOzTr9Ha9sDvm0zyNxKGvHCX6WEQbO640NeXpdptr5nsrjLEcm/vGRvfrnUsmA==","signatures":[{"sig":"MEUCIQCC70RfAfOyLbsZ+k+PGBBnxMfbT/DUT+of7GUX+TpdKgIgNlotzzW1crMMVouU/8SvCEIaMujdE21CtRcqIZjPzFg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxg2yCRA9TVsSAnZWagAA3NsQAIUS/wVV4S6qGr0wbYc5\nAKmNGJ8BN1d15r/Egvs+wuIRiafLADVOn1lPYdX4MZ1Gz4tEov4GHEoVsjAe\ncJbCv7oxEJUbk4iZDjKPYxRz1ia3hOuW9Pm+C5GdPjWGiNikhaRGZzUDxCJB\n7SFa9SVKaOL5FzvM3B16K6oFbrXlMVip7763VdglacDNbP8W4doAYfCBLi6l\n3T76X2OJHkwbDzJgolXbjydjaFOn3WkxCdQf37Uxj/Ev5F+o3nLo2QKYlF1v\naHKG0U35vx8KEKrWyR1rLlA2H1iL6lNleRwxtpVmhMIQ5ewW96tZeGkR75UW\nqudqI03PYSyQwmu3dySqXM/oNviRg+/q2kfOnJbwSJYqcgiIpGn7tBAnwbpQ\nEUU8IKkzElW/A2H6SXTRBaKkZ4W4iSM7Wbc9/bOi2qzJZ/I6lK2p5FdJhNqP\nXLLYqSly6UoLmD8vR+S+DhM+nYksIwwB2leK5ZmJsslPQnhUlleu9SOeI/Pk\nfzzI1GVwSykUs3KZM+1c6EA+wS0GB7vyNwmSMbojPGHbhB+wfhSiL7pwPbn9\nyZ1W8q5Y3FVpJxYwcyM3gmBZqUwL8ll6Uyp35VRTH0wb3Tk1qUowtNwBYtBt\nKS86TPxD8fxlyE/+G8WsbQl8XOUl8h+IpvuK0JZskHKgzhLJ2sZRVrE8hKZW\nyOSV\r\n=G3Hb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"243da47494ac5a0dd1b3b839ea3747f588251fc4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.113-renovate-non-major-243da47494ac5a0dd1b3b839ea3747f588251fc4_1606815154031_0.5753022486260235","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.0.113":{"name":"@balena/jellyfish-sync","version":"3.0.113","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.0.113","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb40c5d14e2859da944486944c20214ffd64535e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.0.113.tgz","fileCount":27,"integrity":"sha512-dL23nh3BQFdxWUj/K1Rq4j/eqH7StCjf11A5d+ZZDlXO1kjHmeRxqLxl4mdA6Vi3No7TZInitRONvjc49LSHOg==","signatures":[{"sig":"MEYCIQDsr2FJb9nLYPDktjFo7UOOo7bEIyqU2IP9cDHcQMeV+AIhAPFWR/Cn0ARAVWztyh+LA/UVjCzMrMniFgu95LyqPbhB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269085,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxg5mCRA9TVsSAnZWagAAmEoP/2zIpMNt9ND/LUotPj+O\nQ8CdcKnPCQCD9pUXobJ81pOXooR47xK8f4Ojklt4mIxreG/CLZ/V9Gw6aLRD\neKifQs1XyfmfNAXkMiaKDfZuQ9eizOcg9z6jNFkhKgLZyqdaZQ/pX6tImBoe\njfCzcsCgvw2MYoVZMLOL1rQ3ig/qCy9ZEyrwgTvsnDO4cLB1IOi4D+5MBa4J\nDLwoPcpMCf5oVOrHaZbIsc7CouqZps4bJySs/qlfPPc3ogkRaRt3G8GKaTWE\nzdMOFm+bok27syJENIG9h3ZtcAX9cGwhuWhNgkB1Wnq+t+MusBmpJ1jFyfaJ\nkTjC+k7jFd2OorFKraO/ROtP7x+jNsc8DnbHKyNxKkxnAeh+/hA93tCgPvYF\n+NzRY0lxkZnJHQTY1B5ig6VdzM7F6lNjR5POcsBq+uIM18ndqe+SJCCdqNss\n6miL7mSjccaw6dQL2nOYn10+NdDhGEEgjPiRb0TONpUzT+yjIjXCf1I5mEI7\nSIC+7tRAhoOkStCcoCkGYS6z4JfnDutfry7bsr297bpMdCKHiyhnWabfgRAW\nmecqhPVU4JO/MuDvNy4CbfJ/J/e/fJELUC5Q391XQ36DJ3nWcPwxrcRRaMo5\nGNDjNf1kv+tmcAduHC/Rgd32j9GEVLmGPASEXv8VKDZz7qAaW3dTZaXbJoG2\n6oOd\r\n=eQPk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b698244aefc7463c4cb0632045d0b6b05833957f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.0.113_1606815333806_0.8388246598717939","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.0-update-mirrorId-matching-to-less-specific-a4253d904d84c45fb4e427914769b897db5522ad":{"name":"@balena/jellyfish-sync","version":"3.1.0-update-mirrorId-matching-to-less-specific-a4253d904d84c45fb4e427914769b897db5522ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.0-update-mirrorId-matching-to-less-specific-a4253d904d84c45fb4e427914769b897db5522ad","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"75f8c25c06a9daf25e0cc32bf3f6a5b146763332","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.0-update-mirrorId-matching-to-less-specific-a4253d904d84c45fb4e427914769b897db5522ad.tgz","fileCount":27,"integrity":"sha512-AE/NV0US2B/HC6eIq1bwSr9I/5nqGyJhjOwUljFXZMswn3D7JlD/0LffIbaJOJzKTWmri0yZRq8EuOAI5msHzA==","signatures":[{"sig":"MEUCIQCVYHRIBmPdt7abOz67uc543TbWFJDooIYtMYdZ2sFZHgIgGeoJH/xKnsmh78VQ59XrQwbyq6RSvy1ouILIoeXhjRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxlYCCRA9TVsSAnZWagAAAKIP/A1Qqq+zf6Hhw5RBrgBB\nlZLZ72+WeLoohz9i9Yaw2tCmhAwn/HUw2G4sWmjm5+ugCbZYnn6RUaD9QR98\nqtVEmMgzKueH1W9c/+SvQyv4ZJQmts3Vs0XwAFaG0MLBGjdwPXWlfhYfqa53\n48njrk0C3WPX7PtsvtTe/LhINp8IJlJU2oBZwbmljz6fKZyb6Un4Gw1VcSj7\nk3rOIzZ5AfCc9nEQTamQ1mFyj04/xHAx5U2l5VUs3K9bZ7m1eUGpwtLP0rqU\nxqKcFkGhFcOOzSaMO5y1dig3CL2DxWjaWoOVO9W1C3Y9VpypjNBm40p7j333\nE9/L4cxHehiRbUP7RjASJN+ipUaoFYupdkt3YDQRgHyptRa/WFvVtkrpXCBN\np17sKM7L0BlbdT8+8QGV4c3j83H0y7hQY70UdUH8Dd+iQ9GgWLI8QXKfswyp\nF/2ddnRTkV7hORtkvn7QRAuhQyvKVgi4RUDQ0Us7c1u4LCNDfVjZrOZIXtcH\nCgdvIfCqJwJPNa5/gvxF+qaxTUEi1BUw0uyROqPQv3h95pMuSuL0CMeILFqA\n+Enf/qk9N5K+GbeUBs6TXVoSN2R2Im2tHoTKbfMzD8LmdadHcyrVvv/E7tFC\nRypozOpPgmlij6z0vvZg1f7QH4iSVs6pXavjlVX20721cVGQqUTNUQcfJ4wJ\nub8b\r\n=2OjU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a4253d904d84c45fb4e427914769b897db5522ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.0-update-mirrorId-matching-to-less-specific-a4253d904d84c45fb4e427914769b897db5522ad_1606833665591_0.17080539328627076","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.0":{"name":"@balena/jellyfish-sync","version":"3.1.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.0","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e52bc916ace44c9970a039076490648c8b63d2b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.0.tgz","fileCount":27,"integrity":"sha512-kK22/WUuYse5omRXSH3SYCHD/pml5IDopWSEZLFtvuteKocPH5TV1lvHM0dg4XA/aF8Ks/b6ttjDXxRI/xim8A==","signatures":[{"sig":"MEYCIQCO/Y5XmGUO2SuXRWpv4GHcgvG3NpUzcLoI/RV3D5KcNQIhALr4XFzuqIdbfgB3B33874nfUfn30o6wI9ZIyrZAsPfE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxla1CRA9TVsSAnZWagAAcCkQAJ0QMwUNt+WEFZtH39Qt\nqMPc+d3nZ++yGVxonRtr5LdMtu+jPwvvgMqY6RsO/Es3sGhZmGMbupkUpBW1\n9q3rTl8QeZA+baUUiT7x0+7ti5Cpy/IsWDWt02Ksd/vGl2AjWB5kcz8yWgCY\nE0TSUISLpt2NU8z+jrkLHOjz09qydZsykOyUmt75eR/HuSSzqnvCi5s0Mgr1\n54gJZn0EdUIFvbMTgNXypvsFocH76mp3gCo3uNI8z40JTEb8UxhtZNbQzpi0\nu4SWuP2B2NTzZmdO6sbwMhsU7g8dzlYLnVHvW3kGVXZrMj/UxZbrLXmlgF5r\ng3ChjWMLTv+6T3QGKSCfEb0flOaqqXe4f1ic4Yt1a9jRstOyTktuocfBccKl\nNct2g9o2g/CjocZvaBBP0NcbvquUVvpKZu6rQPu7jmmJWfTg+Os6LT4XOUuR\n3zhZ1+nxfrWwviYRotV1hVKJjchDT7LZYwR/d8Wh3x0hDs55SWr6NtiWCKrG\nXQ8lYsNdZmU/r30TCzx0DOFOkS5TUgPMfdSnhP0wQy4U8Mte1pDlDcXmw7o2\n2dcp9m4JhjuHnpBBTPD8qsjM0TvzyyDlJfIQ7WiV1Z6BAMi4ebLelzONK78D\ndRkyS8H0XLa00dLTUKCKCzG+0WvQkRrDiHy76FkIoJiF+Djfznz50yPy8A3j\nrHC+\r\n=ciPd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d33ecc87993418adcc95c9cab6a866d553dbef8f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.179","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.0_1606833845272_0.8004657640516946","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.1-renovate-non-major-735f8242020c3d42d219520ff214c76194196aab":{"name":"@balena/jellyfish-sync","version":"3.1.1-renovate-non-major-735f8242020c3d42d219520ff214c76194196aab","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.1-renovate-non-major-735f8242020c3d42d219520ff214c76194196aab","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"25316b2f816c61be12fb794be414741e318abd51","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.1-renovate-non-major-735f8242020c3d42d219520ff214c76194196aab.tgz","fileCount":27,"integrity":"sha512-kRSNliVjWrttM9NvCZlYh1RDE8NXXPx7GiAAqSEWHFPxogivQ7YvmS3/uTBHEkDLOAtc/dKD+v4p1jv960OOcA==","signatures":[{"sig":"MEQCIC3ydBssKg1A8PMC9cxzg2PLj1seUL61OgOgvVY9fEsPAiBbyZ0SIGPMytn51/Ft53jQBwWWCD0XYhaJrEGdTCqJBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxmntCRA9TVsSAnZWagAAJfUP/3H4hT1Ucr3fgHQLvFwP\nQMXCqFFQ97NJxG7qoh4vOCYIiNj/2+PLFWwhdyC3VN/SJBRWvd820V9knQ2e\nU0a7BzbOX1oY0z0a+Eoee2VrNyuth2iUnQpN4sxltyG2zMKRIyiQpqB5Rfq5\nCIPiZYijO2gk6WRENfNraw/1HGX0GPhw1yW8nlbOd8aRl1y/hQwH3k80enIF\nxRWCJYEGM4rFHVToHRjcAbIZhfYVPfiI2fT0Kz8KRVGynr6J5Sjv/YOTDdpQ\n/ndtPcknNFbt237nAr4Io+AlkpVqzJEc37DjiMzimqhb+m92T4TY806Ll3Ti\nnzG0UehVqsMGZuPqBDGOU/9wmQi35KCMU5kQsm6JXPa+5o+1EhGxLgqPiLT8\nHsEUAkz7HwZvEKxgK0fzBDrbxe5aSQk/7kcOeH462iFTWisi/HsrbnwXh1Qt\ni+ejaqM8NPYPXuuwTpLOE86JWuF4FkaOtUBJbTcoiPUJAWRw1vK0gOx0BgZu\nXkw+MTB1/vRbe59hj2IAnYqPN1VqS/01nKOq1PhkEjutOs3jIFryBYy3lIcv\n91pFNmIx3k36uZqjRMhcYtwk/nbrHolZpkPDbJnGzSXxkeJIm7nTNgFH9Le9\nKkFv7xeUuDzcKS7sqQjw33uaRjFYzJ7w3hDnRUSg4PSCXeFVP/OmpdpmEXOj\nQXJl\r\n=hVPP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"735f8242020c3d42d219520ff214c76194196aab","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.180","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.1-renovate-non-major-735f8242020c3d42d219520ff214c76194196aab_1606838764991_0.7250906121108653","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.1":{"name":"@balena/jellyfish-sync","version":"3.1.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.1","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f0f37b614851552bdbedc6803b5d428b9efc6b1a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.1.tgz","fileCount":27,"integrity":"sha512-Y/4u733Sp2C7qk2+65x2wO+kftqE4aeqd2LWQKhzA+EKQY6Tyvi/RxOWRfbvgzxI9fykjIUstFPNp97pcCUhng==","signatures":[{"sig":"MEYCIQDIUoX9o44qut90RdxMmcwcC8rldUSnK2I51EU7pDED+gIhAJBSre4zA+XPRxJ7a1mQu9cNoax+CXyzhY9znPPFgbb/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxmqUCRA9TVsSAnZWagAAYHcQAJqpnvGMiZcAmXu+TPhT\nFzf6xtLjawyZXR24/JbZGVQzBpc84zn3O++EyoxcKfUm2W+Wm9o+w4EYOOo0\nLOmVvwZ9UiImj7uPXA2VQXnM4gzWZ+nVtX8INBJVnF7EcxNmrpGylRyjxake\nuLmFEpYo1IIFlytzJM8LE397awjYXZGqHUc3VyiRD3IzraTW0tcgPbEGz7Os\nLx8v2ZN9aLKI96D0IpvksqHxm+3hIiZEPFDRt7/YzXONluW4UPc2q9hjDLho\nM7woHBtNiSyLxmE9WrizohCS7MK99nhKw5DE+BcOg3oqbNHFDa59Mm5Xfv4E\nJjeIx/43WHBV8nX1pF/Z5E5Zcl85FK0uXuCV/W6YtVfK1Qd7QYmmQeJp/yzt\nKUY087H4p17Esrdm9a0hK+Ph1WuR1AzeThQzQz2nMJNRCLyNXlQ3n4bER4FY\nYBktGtg/Cnw+er+xPP8DvRrPyg4bcU00gSP7u2TLZbyd2bpq+Dhyn03Ti/Y4\nenyb9bK+oCFsaQbIIHiicSeuBikcTpoSxEdTCpht5O7kFjdscxLaSZK4+UAP\nufr+5BW4TBeyty0zVifIO/mjaAp6Zr7wxZZpCQUZ4AwnXeCpLWHLZbWbnZ9i\naXCbdPGCkGjo46345Cy+YMtyh+l2/ujKoxNnRfkrAZuvjcDdTqZIoGljsRyT\neScl\r\n=DsIk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"003b12efc3438ae36cfb5a95b6492504d5212cdd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.2","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.32","@balena/jellyfish-assert":"^1.0.30","@balena/jellyfish-metrics":"^0.0.180","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.1_1606838932306_0.2280488733561019","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.2-renovate-non-major-70bba4be86c53199102ca84d7d6ea0128143f1d4":{"name":"@balena/jellyfish-sync","version":"3.1.2-renovate-non-major-70bba4be86c53199102ca84d7d6ea0128143f1d4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.2-renovate-non-major-70bba4be86c53199102ca84d7d6ea0128143f1d4","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"181a3e2a3a59683b293237edf2c8e9c2592f4c0e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.2-renovate-non-major-70bba4be86c53199102ca84d7d6ea0128143f1d4.tgz","fileCount":27,"integrity":"sha512-/U3/e2RKnRYni1XR6SSroxq/V65bih10lUi+L7NP8G9Yaw73esYa/CBzRRJOHsE+7g7Z0aOMPO/7Iz3OGAH5dQ==","signatures":[{"sig":"MEYCIQDicPDl6Dkkkb2jD7kBYY4FkqA0Vb2r1n6m+S5Nxmnk9wIhAO5QwDXzjo4afylOoInkcroryDbP19T06LA5BeSTsqDd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxqyeCRA9TVsSAnZWagAASToP/2pRl288TLFIYhbc/5PR\nxgMlN6oTqXyad85EAi7ygNebhXdAoMB695PPuoWbJO7DqNEJc8nIa8RXuBWF\n0kIu+ef+JSQB+RXLJ95TIlTLiTk1dCZSwIi+onM7w0hIyKgF2QVI6hvzw9zC\nJ8v3QxqVkLdadKh2wrMJLtAkHN3ZWWTIkCfYKpCwiPpZZbgeZdAwvN+bd7f5\nnNkZuJG/SgzIwCVmyN0UnbbSa+GJPd3orPYWGixsaxge7+zcXYwTVacXXBI9\n1fJSlvF8KNeL5D3Qk3svfSdzkA5CCSuvtwBBYmcBS724hLl4kOATecPbNV2r\njGvtPgt1j0xWpeWMMaba+6dMZP5sZILzrGOTOHl7vqEwpNk64QgKxy7ESYSr\ni/PkQdw6VYCnFVNYC5aEsMGYbBV0lR2LjMaCIHma5tuNx9xjygvt4aP1mmBU\nXbVB4hoCQzia+Dui/s77zdK2IQT7nN/kxcb7slcgTZc3TT7khvH+zQPqqa7a\ncPfP1N/4Ui3GT6A2DBTsTIgBu7cYZCEdv7asmkb/x4bnWtkz/jBq9ffcwNNE\nnxzTPeChlGZFpmo3dPOVVQEcdTRGURGAPkcf9khQe53xYHJKO+jLWnr/q+EM\noAjJTJZyx3Gx4TeLXfL18OVo6EyrwtZw0+Sv09T44CB07It9FZnv4Z2NTZi1\nxaoW\r\n=YWbh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"70bba4be86c53199102ca84d7d6ea0128143f1d4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.3","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.180","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.2-renovate-non-major-70bba4be86c53199102ca84d7d6ea0128143f1d4_1606855837950_0.9841413418304876","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.2":{"name":"@balena/jellyfish-sync","version":"3.1.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"af922d620018fab84a099fdedb24d815490b8c59","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.2.tgz","fileCount":27,"integrity":"sha512-b4mRKmdth2mQbnTVWV7KmxeM/sogpuL368nBy/d0Sa5dEbGTYOu4YvhAYU0CYOCgWf3OjllyuFJhDqQhen653Q==","signatures":[{"sig":"MEUCIQDS+nzWwPKpA3zco0G41Mkz5ShAnzEQW3kOKqAbhT+oQAIgZbREbc2I8ffRdLzLJvobesv8GeEfkVx595T9rZQNhis=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxq1jCRA9TVsSAnZWagAARRgP/0FdUIPlM30RaatMyvDG\nUPhXtLSbnyLrp3e0nwgPUZbgXqpqj8qGBExf6vpKMszh5asjaD073vjMLfng\nm6scgavxdIhqHGpW6vJU/awixZGY6LIuowBYvwESc4H55YUV8L3DjbV/itoz\nJGNw9o0DmOYoeV3ZQUV2rigp6ApjLf45qSJQA+dslMTJ9GqH6D68rPsYqGm2\n1q78EiEsyuCV6eIsbg5oM0KcHPtxVsqn0JF+qKRzlcBVxQbg9VtFwil8NTk2\nHYXBVMMExRFr/MxazN/kS8Zdf2kJhPZx1xvvo/ffF502C2oisyE06pK9oXH9\nbpSCEiOvpWo5tQm3h5XYDQJB40HVSNZ8FQkJxU6Bfsq6nM108jbN+1XanzOQ\nL/TEyMxkXMn7SnSqKHCjfq5KMd97+HBw6ck5UsaZ8QHjjxtngTj66DUruUlz\nNnIp1baYPIX+Z6eBVGk0PYAlHOHR3MKmHfRT5KFbBqMj9N4l6GjhzTmsqtSE\nmkLoBbq9OCEOcnawEaLxnrleEzXB1KQjeoNa2gbXjwwq0AM9f8Q10S82mVmq\nVArys0zmPkcB6cOGwa0mGYrgrr1Kms0dKUbDyhLQIQYPT0T4JLEM39RCQpDc\nYFj2I0SlQWsKVMjM27zEbO/N3Svgbn2magmNYfk08EM9/v8QllrT5Gs4g6jT\n08/k\r\n=HXWj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5e8638b35de5fdfd8fd987dd58228f108aa60d08","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.3","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.180","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.2_1606856035287_0.5565882350805742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.3-renovate-non-major-d4342beffa41e5913b5400bd65194296fa027281":{"name":"@balena/jellyfish-sync","version":"3.1.3-renovate-non-major-d4342beffa41e5913b5400bd65194296fa027281","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.3-renovate-non-major-d4342beffa41e5913b5400bd65194296fa027281","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5887084edf9d9b401f0ae4155e1d227419df26e0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.3-renovate-non-major-d4342beffa41e5913b5400bd65194296fa027281.tgz","fileCount":27,"integrity":"sha512-14m+MfxT+m/IfitXuMK3OvAal/+qViLN8fDlI5Tj9fHDE3jffJTX+HsSbJ4q5bepuA9B51af2nQJLoeFR3uxhA==","signatures":[{"sig":"MEUCIQDGeBSAW9HQ8kQlkEzO4Ux8R3vcdfXvstT/dFatS4o+BQIgJ71jPjTT1tew/ZRj7SAQxibNU84/53tP0R+/9G79PFk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxsSxCRA9TVsSAnZWagAAe2QP/jAvyXy6c44KGHMWs84L\nvuirVsqpnfPCWHxcon2JaXdbNGFTILCGJKiv8l7jsgmu3H+tb1VjaB9AdTN/\n5YRoJPbm2wUD1Dxht0kpSa+yyYpwYCm1Dwu5OtKzmP6sVQPn1dyBz+9QFLSx\njHKY8Tkch/Aa/yJBkiTSa7W7TQmZ0jZR81TWzgn8YdM5a6nttoijzPuuh7YZ\nxB9kXxpca9C8IUhAZbOMCfsXk1UYgjpNzQCyBlAOuDvsmLrXbV3F4qe2mnyB\nDdKzPTp3hNaUmFnlpodwoVIK9p2WLoVmMlcmxqjlErX4e1/ROVFpT6NQT8DD\np+o0Ho8ufN+xZoTuHvVaDNmnO7H86kWZR7BY1BL49grZYZcgsJN/1XpvGfb5\nKaUgFW/hZKOnsRjHqQn/sBTjUb4vYvNbkMhu+iCPdv1tGhUAll0HSK+UJe2k\nWnz5cuB0QboMQRijgJKiHLps/6KnBCqtSMubUQ9fKjU2ha7rewHfg353Erg2\nNVZmggCP4B0hja4Y7dnlOH/ma/mMfJKZHAwpZZQuX+TH2HikscQExaaNhgmB\noC08Fs08MqsVvtnlCFiDfobQZpV0l7ghjKgma3IGgUZQSNElgHKAXsheA3dp\nBJ+6mAD9dwTiRIX64xNUuSRaEfvAWD8YLWdPFZoBTR3eA/s/0M/g96qEh027\nTl6g\r\n=Azyy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d4342beffa41e5913b5400bd65194296fa027281","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.3","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.3-renovate-non-major-d4342beffa41e5913b5400bd65194296fa027281_1606862000490_0.641528882059121","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.3":{"name":"@balena/jellyfish-sync","version":"3.1.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.3","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea65a291e3437f25e74a8e1c41b69767e5dedd70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.3.tgz","fileCount":27,"integrity":"sha512-QZdsNzPIupuOLATJM797OnMiRgmujNpzifkFITmWdtWfLjYYqnNvh00a0IArLPWxRmFQlOkca8h2wTs1bpNJ0w==","signatures":[{"sig":"MEUCIQCZj0VSMI/BFbIkdtefnziVhlNSnxrcAGT+7VYGA5RCaQIgHmIuqSLmpLfota7Dvmhj27zGmnBOGrxm35zSPsgQNCk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxsVVCRA9TVsSAnZWagAAWKIP/3NtkQQYkIl9DUJfsj20\nM5LHmSn2ESlxdwOAQqNJZAB1KoXOfkGxwWUcICQ3TFr1P8ORUxBQdKGuS3Jp\ntzPQJEEeb6HGfVdeaX0gcMxT/31Wlg/xXlplHmM0dNe17gnvgX7ZyMA2/Qun\nF9tEH8ojQHMFS3/rFIO6B3ybD/IW+7rIPtjrvUqCk1Z08yI1CPBDrLrs9Vt3\nxc1Oc8g2Oauuc35e4oOeGS/s6DTYjhLTgTJXYAlkrqDkyeEbtHEW9Prlsv1C\nAuDgTC0wXDfQdQ/H5tIAT4kCmAAXSjzzINblt1WXdWEAp6LCZisC9ZLv/rUK\nQ4x8SaGNOSAccM1h+OrRdyRF4rlmNM7u9IaNIJ/gyAmkT7QcZayeyFkbqESJ\nWjiWvrIegRUwNbNfyOl5f+LySP7goH6bbofEjHgOSRIKKTESxVhnZjaky1nX\ngm9oLm2jJducCCpj8zxWuNK2uR2C9b3NFu70f3VRGUT2RwHyvj/LRgHif3JX\n3XXenhIfxB/3FeSE2b/AxvUrWvtTT/bUSrmpTMggVOY0yHwaM4oNZ91sXV1R\n8gUvsUi24j/O93fuRcNbCQo3btQfI9eUijUKGxHquJFeym8gZmElabFThpP6\nhI3rKGtr8Km/Bi4ga55ZVWNgrwyOGVVnTPpYYBzK7VtPYxQM+XhOHCL9Mazs\nXGNl\r\n=ERUa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0806731bea4fbc360ec9b6744f78db58722cc464","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.9","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.3","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.3_1606862165261_0.3817378928816688","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.4-renovate-non-major-93f91fb0e680a80a37c6ce7e7fcdeec4710c3157":{"name":"@balena/jellyfish-sync","version":"3.1.4-renovate-non-major-93f91fb0e680a80a37c6ce7e7fcdeec4710c3157","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.4-renovate-non-major-93f91fb0e680a80a37c6ce7e7fcdeec4710c3157","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bcb985b2c964c442b8e8799248c187bd1e3e553","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.4-renovate-non-major-93f91fb0e680a80a37c6ce7e7fcdeec4710c3157.tgz","fileCount":27,"integrity":"sha512-86gvHivliuOSVydEgSuPWv1yU7EuAKYYYH6a72Nob5lOZ02MDC5LqOx86IUEgEHKpIVVq7+RmUWN7flj7FzLvA==","signatures":[{"sig":"MEUCIQC2yo3zogs0tP+717Lc/ZLlkBso0LBWj7RDTO2B2zFIEAIgCrW5NdJUssm7S6MGF86I9KNxl9msNujMP5adu5FAUSg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxuRMCRA9TVsSAnZWagAAOJwP+gNItdOlcDKxX/pnYdVm\n5vE6Snpw4wVGJFzMgC8I6Q5K/wSJVXhmvMDyjLJD2hnzKMf0+bnNKvEnidfj\nsDklUrcTcu+dOkp4unWQC0R6KY45sIJirK3LJNxxdqGYXsEUMrORs4HdpD1a\n0YYOc3kOBsj6gkr0wYXNFo9S8Msbsvs09o62J/iyBWjvSvi0CXADgo7pdfD/\n+XjIymP2ooo1SAOzIPyEFXWykw8rdWaerpjKzFWrZWQq43oHy3xUTrJ6us8j\nc/lDpoK9wKtF58nnIcVGpr3MzQ4FqoSMpKYFdFLRpZco9eCdJu+3Sj7tTd5/\nnAzobMj15LF34dROeJRin5g9u5TyKNhEVeWgsOcP0OGmaiQ6QP9DtBCbZ3uc\njSdrtt/kEJmdcqgWPr0HGRqhDtNImkECkqC0pFqo4wegz9vHzWgRxS7C06iK\nHcc62dws3bjvz+5YkxKIxgfddlo60zF9zdacDhPnBk9VbZGBYVwQK87WFne6\ncSB5fZLcAxjaPeBIsGGSNY3OltFRG7Ohi/jPUfLrdVqSudDNEfvab4L/wd15\n8RbhvtqIEr+D63cChvp4e1s3CNeKxG5gcGWi+2AOdpAcSyveZBgBDOV3r2Dg\n84peunzSjyulI9Yeae2DyJtGbaaHDbFMs+nmA83vK2/ahM1XK36akyhVLZnb\ndMGe\r\n=yTJP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"93f91fb0e680a80a37c6ce7e7fcdeec4710c3157","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.10","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.3","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.4-renovate-non-major-93f91fb0e680a80a37c6ce7e7fcdeec4710c3157_1606870092051_0.9926811919226417","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.4":{"name":"@balena/jellyfish-sync","version":"3.1.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.4","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7e12948067795189ed00ab3809cef1dd16a9493e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.4.tgz","fileCount":27,"integrity":"sha512-g25p86kW9aDa/5iX/U2B8vCFuPoHmxk/y03fAQZ0MI6xzcxz4eSGQCb41yV1zyC+Vj5rpYQi0BGpOFoy7WmQlw==","signatures":[{"sig":"MEUCIQDRc+AwLRTgZLEGXbNw28mK2Hxl2bwQ7LVSStzxSx0FYgIgKhitvquc0WyLEOOt/J4IRtmbfOs1nbl5OJK+7Dmu23U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxuUKCRA9TVsSAnZWagAA530P/31d28nDhOGNDM+IRB2y\nEviy1X69YnFWVhxMJ0B+2pGRCBv0onty++biihYHWIOx5yU3supihd39/+zw\nZexSsCPpOIyVk63l7a/J2wzjWXShqad66Kc5ySrFXi3scV7v0Jf+kTgb84wi\n+2qJDL0xZ0p904URiIQPS0DhKg0YJkJsWay4P9iZTQjGKonDtEYEQxMD1QQm\nfRqIu/mNbYf9J97QZgigFVZepZB5ThHZsxZokKJvWwl3KHDOHC8AaR/nL4HY\nMo4ClgEIib+1pq50ZNNruD+1hoZdxDWC45RJqcVnD98CCPN2IuhRyJMm1mTg\nQuiJGCEV/DEn6ZM2URjBD84IpmySiQcnPZvs/jqYes0J1pdyYYZVAfjAyVTm\nLX+aMtLZwh/tQOXRitULSGApf++FxHPj/fnnHP8EqFD/NsX8E7rz6+ZaIy74\nr9m1CW5jWh9plDlPZlrbL1pjT5KSms/ns1qXfuceclRWIFiC1H65sIfJdJAL\nFy9h12q7g8NsIdB1Ahl1jYYNZIfxUZGXw2aA9pAFN9Gt7xsqSzZTP2bFyVRw\n8G2KNcS48cWCMOxz5Oi9ZWhsJ3LRwizuL4xLvoolsJKZVdBAA/X+EnpFeq5i\nwRHst8qPMovrPwuLLjEmc7XxFA9qRNu2aqT/3JPKm7Yq67doK67DGR5zPdI3\nCtPu\r\n=0uRe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a63f82ade790eddafd5a8999b66a9ff1c644bdc9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.10","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.3","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.4_1606870281604_0.628007785775065","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.5-renovate-non-major-42a5d8b7d6226eb1544dc019256b37b5fe235a64":{"name":"@balena/jellyfish-sync","version":"3.1.5-renovate-non-major-42a5d8b7d6226eb1544dc019256b37b5fe235a64","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.5-renovate-non-major-42a5d8b7d6226eb1544dc019256b37b5fe235a64","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b2e9511284a23f7867a6eb67b673ff3aedb5e905","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.5-renovate-non-major-42a5d8b7d6226eb1544dc019256b37b5fe235a64.tgz","fileCount":27,"integrity":"sha512-ymYFeulRjvZV2wQCXpq3JcNFAd2Ff0Q7JwvVV+TJxLBYdetBLzDpusxDmP9Eaq4HUA1Ybr7k7/BAWezrGXgysg==","signatures":[{"sig":"MEQCIGoOhf/+ZnwTLgI1ZraDgyGNhknBF5VG8Ou/I+xvwOkzAiAxDtAEAVcNmChMGmhoTNBAWrxkRGJk58/nGm0Fpoj62w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyC2pCRA9TVsSAnZWagAACssQAKUCgAGMLXywX7PcCAIg\nrppU+mAAlQQNBdDezVZrkr8Xekcn8IkwPil7MiBd+i0qbyz6aPajfxbDqbhQ\nvy3KbaSwsfJEkiu53IU/QEqPk8XmAlkEjl82qETUN+1kiGMatuExL+f7cpsd\nuO5cJIr3jso1KnaRmGyIu2nj5KFbUVsUEvA+tbEBlzGTDLi4Cl5m5YRvcbxX\nEtqOTdQne/qISoWRINHkcSeCZKxPsOHWlNZZA9Bb0hL2sQ0Ea6kdhie/DMJS\neHlxDzmZ+1sVTRL10x3zuW427eA/4YLwVYi4/dfuMoZykbGEhdZ8FlRix51E\nLuKy1R+kJUFrdW0ztz+6x64om+FBn0IZLgwprgP5sKsMjY5EiUZ0+tXtg66N\nlDVIofh+VyNa3DpNRW6WaKtd87mspdQ+skv+Gz7fbtg02Ov+JX9YFOsfwXP2\nM9gBo9NQJ/QXxHJ45h4rpxiwuaJdvfUeV+VxhwxAxDcP780z5JBUgVqSadzR\ni0fmfNMEjQqnEjvEGbc/e0mqqcNSZwB62b1tr2bCsBrG9xIMy3B2YayH1laA\n383h4trwo/AWyq85swIuGRZ/P1guGhCsbTHIjKjcOGFo/WKlftgoRUDGK/RH\nKZgH3LECs3fKX6KMppSOBSLJs1ukxnfp8uQd/KcrMMZtXiENV2HcrO80ClRq\naWUf\r\n=fq4i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"42a5d8b7d6226eb1544dc019256b37b5fe235a64","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.10","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.5-renovate-non-major-42a5d8b7d6226eb1544dc019256b37b5fe235a64_1606954409397_0.054454267717840565","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.5":{"name":"@balena/jellyfish-sync","version":"3.1.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.5","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"23b3b1d65842b0163cc2694b2753688c88426ae7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.5.tgz","fileCount":27,"integrity":"sha512-T2X1QsgL4lc6vQ7WJ0aSGw7rzppcyC59GwEf+4HXC7sXu4el71MHrzO/XUbr5n0KLDAr7M0pSwL9tyebB+E7ug==","signatures":[{"sig":"MEYCIQCTQVl+2rq1jshTf3gcbRkvcd9Hz8WreFpmItrC/TKM3wIhALApf+p2hvG4nZBv4dEA8UUnORHFLNZl7eQBMLiJm2de","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyC5rCRA9TVsSAnZWagAAC3AP/R4A7ZgeK4lF+SBg6je7\nsFj6W2BqPGHV99FfJS0a/XB0v9H+k5zsJDsgUbPuzLaULcii/fp8sNkAZKZM\nhi+iE5xTYdTdX99QSbbjgn5OmPdyUVr1eBMJRXz3UQbRDy3zsPibAWhqIglb\nSAjNzyo4LARQwUWMeqSbbs0PkioLyJuWoRABRh5pdDqME6odiaWsx7Kwuz1g\n6NKp/LHiKlD+se0KmujmtFws84bEnIlmA3fvmtPqGdtlMZxtHto38HIYzVsa\nYIYBv7QyOAG8CExL3b95Xq4HA4KSGdPo/pQJap4pSgxqE+/iUYRtjAbB5i2w\nG5hgaFXAw3ymT2f3MsGNdpCQL1DrRJxRkbOG5ufxeXWutv6uUFxut2ONbJDu\nqaPkinMgryNBfcaMa6zil9Q+4CxE3t9gtlqB+rSh8MCmoLB9WMI3C8LzQAGn\n2W4Qrw/Rx35HUEaH1b1UbsOi0s9Cd0tyztO7gcuB+WouNUtoS3p/d19swiuh\nKvgMqWQL/GSJ3Tu4Tmiift72VrGzzJyV2/yWgBCVqxiMU337MRhq92yctnXp\n5IuC0kJV2+cA7vlQVr8Jlc2oL/aXRf7akX3JEEKWENCHXKbCgGyZ+mwSaRMD\n76C5CfH5eocsVb6nCT70wJk0GbPyWsLAnu3W1ZADDWmoWKpFCSRoGx+zbewk\nwulZ\r\n=+4rj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"60caea185b3fe7a7935fd1806ed3a314ce2bed5a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.10","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.5","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.5_1606954603077_0.8577253452045901","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.6-renovate-non-major-d2218a46e9458fecdaa0a085a435406326a0773e":{"name":"@balena/jellyfish-sync","version":"3.1.6-renovate-non-major-d2218a46e9458fecdaa0a085a435406326a0773e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.6-renovate-non-major-d2218a46e9458fecdaa0a085a435406326a0773e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bbca5ee7ca0b69997876c1fd4b5e70b404571fc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.6-renovate-non-major-d2218a46e9458fecdaa0a085a435406326a0773e.tgz","fileCount":27,"integrity":"sha512-oR4gewpzkzSmeD6fV2mOe1AS/VNqwneUOdj6kKc5iYuvnZK0XJKcz5I4RylzEAriHXuhWQSrI9b3EId0/OZMkw==","signatures":[{"sig":"MEQCIBq3wUHR2JCePdYHcCGeBa2DMDqf0pdK32vpuBiXdg8pAiBY7OwRnDEWwBu8aBxcAEfWgewRusrDd+hUyt94NXBnmg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyDHqCRA9TVsSAnZWagAAv18P/3rlCJzeaJPUaCs/wo40\nzcis6ZJFkBUcz3GR3hPHCOBAFFuOFld2T27ZkYaxaE/kmPmEfCAo/4I3r0FP\ni4oIZ9XNZrzieiZiM1WH+4rjQBdGiToaNmCZnUFmBu14Cyn4C0J/+j+gx8m/\naz/6BLiNrrKyfbs7JAPnTdRMcmjeVPVDB0Q6LJUTV/0RGJAWGD03CffBUa2G\nl0aACu617IDwvt2A3Vdc6cWrw3rpphgDAbCz6/N7S1cd40JOr5CLS1K+g6gf\nir2MSn4CzLZfN04h8EFXECP1Bdd9yRX//2BnrLWYK1X4ZW41ouANLf/h4jyS\noxPDE6UIUR+bng/I69xTZiLg4AX3QPlXWOEWn8i3zP2EHpOBZoaS1NJOFL/X\ngkib6zmEOnFQ65hZJH5iTzctfcOi3Q3Cs9e+27OXveRFrQZWKnJKiI1qYoRx\nMjNSY+7y4f/ubIez2rRyuq0Jj34qJzBOpOnAbfpuhcEQP+gw14QbYjFuHFOl\nDMLzpVtjpVguHFDA8csm8ykTvWDNAAZirv7vxNYtOXb9PSGW3SAlUHXDBDzd\n2zokyCcPXq5IReXiml3AIaQLi+toaotUhYP4j3klkGQ9DKNscBWSZzwt1kyE\nqt50kjivmD1Q+lTLBmhFuSV4tTceDuUkK8dFSTcbDn5owR1iJHV50IYQBEuT\nnnIL\r\n=w7+U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2218a46e9458fecdaa0a085a435406326a0773e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.10","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.6-renovate-non-major-d2218a46e9458fecdaa0a085a435406326a0773e_1606955498061_0.12993015896851667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.6":{"name":"@balena/jellyfish-sync","version":"3.1.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.6","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aca7ee998ac0427adb129ad1ef3888868441352c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.6.tgz","fileCount":27,"integrity":"sha512-GCAUmW4wrGMiu2Zea/SvsPh2vRUkkIeTNyX14YLtDVRe4YIF0KeExEeG9FcoVw0feIN2N1E22acFiwh0W+C3Kg==","signatures":[{"sig":"MEUCIQCOE8Jj21o/GvrQv+FXWrPHLL4yWUTq3YQfY/qJVjBr6QIgCSlOb7O5Pf8R7zAVbKML8X4r/Xit5+H51De2lt38kOA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyDKeCRA9TVsSAnZWagAAzVUQAICPJc0P7R4eIpKb0Vvy\nWgyMmyYbVLFfNIDJCZcV/oJnD5+KrsJcg70qEbolbNbw/XgsDcIN/Ci6wUEh\n6hVoNCyR3fLogkzetlUqbVOB0nIm5M3+hZH+meK1GNcelbO1650BYvC+l5/M\nARPjAPaWTGGt1wjp1Cdpv6bZxUJ0Lk7dAIZw/8heKfEp+c9yuuiOQd3x6r4L\n9GhVS0QBDS6u0AK8/Vo24IP92Bov4LatuES6Jt0yxnxYMpPbPzNuRBWnyDRS\nMfa23KzlZI0dvGJcXs7KhYHym0ILGeS9zCdOeUydvKULFzc9nyRagbNc/xdm\nTOZZcEyZqKOZadnt9y88qFkm4a3aE/QV49yMik+BqD+UwBvXhn1CNPxm+evc\npWKtHhbnZ9AW1ZM5CM6ev+fDmxt7+WkU3MwiGAazK6NqbAhmyM1zPw72JRem\nS3xfboMFfTvfn5XKThiUUiyJcM14glDyTSxbAIvR5rmyH0mXbjPBhsVRe16l\nkXR5k1KQzBfawr1IY92+uDWFqPMR9KAiZd1q866eJGW8F68DPHrPXhp5KeWg\nR2gJvxsn6stv3LfKimaI0dtDrBXOdYA8qx83A/mXb9i2jB6uqQJFpCRtIMVl\nQsF4vWOssSsdI0wHd2zJSHqM4Ul0Gr0gqfCE3wMmBtfqwP8pFNGyfoAGOjZq\nW5d1\r\n=lbSM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"db86f333cebfb77da3a2788938fb925f80e98d30","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.10","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.6_1606955677862_0.5717022480336016","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.7-renovate-non-major-5018a220036d3d852caacdc93e030095337bdf86":{"name":"@balena/jellyfish-sync","version":"3.1.7-renovate-non-major-5018a220036d3d852caacdc93e030095337bdf86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.7-renovate-non-major-5018a220036d3d852caacdc93e030095337bdf86","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ffd6f298a4114b5139e08ae12f10a7565cfb5d22","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.7-renovate-non-major-5018a220036d3d852caacdc93e030095337bdf86.tgz","fileCount":27,"integrity":"sha512-l2MHJCl1l+UHVyhSW8cyZCL45zoibXyKLXCf8LNHKljjfjqnrJqktFnSHL0UDmGUwfen8t8ySfj2WZhIXQKA7Q==","signatures":[{"sig":"MEUCIEVYcFDqZHyqc63f9Uwf10bH6+vo94MihJPliDobUl7RAiEA7KLpt67nrN3VJklkTLYlj0O6H7knJWSwcuTgUgAcTNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyJJYCRA9TVsSAnZWagAAHhAQAIcsgkZ9ifuVXoQ5PMMY\n0gt7XYImpAAO4I3DNnATkJsmmU4w+KzzBbhS/4Pi+s6U3v1l2+eyf4EMGe+z\nzrZgnhvwBxsX8hrH1T3z+MCoj9SfEimIy2sk++ipoRBK+gD2z3jR4L+LWm9H\nOcOaPmA1rOkgxCxrO6kvQZRc+EREKyRhnMM/VSg0fRM6EQNvjeQrIicC5dGM\nqUJ6IreZF2gmIwdk258iYXUWGZpZylhLkm29PskGQB0PDMTLOB4kEnz//tfx\nSql3u6yETxmi64a0i6I/bB/CZOe2v7qssdMlitXOfkkax/lS13R7r0YZJT6w\nu5xn58MFU9wPsyG+Re1F5n7rvisQCJ1lPQU10klvOQAMYX1sai9xBI1oc9Lr\nETtDm/HFsPoTBWwGALOqwPoFfx/IBtzfFYVEPeQYj7zPAEDeWPyfn3Rdfof3\nfJinnBKWNAWbQ38OxT6gAtvXqm4BwMaWKd9NlgFIDW8z4SVSKfR/V2OrAQI9\nSVxJXsdAxwmpE+IWOJ6/wZ8PDw2IcVDo6ZcxTHxfokKX5scl5tQi1XsVqKrL\nQId1GBGpJRSMT1JbYVJa3Z8+oJU4AKa+M4ybC0DYtayC/AX6adT4sx2nrD6f\n2SPUma9egzcFnxQHbptA1oLxgPi7WKhQ5MZbaX+9j5dARr54F5YZTHNuHk+M\n+R57\r\n=OE14\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5018a220036d3d852caacdc93e030095337bdf86","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.11","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.7-renovate-non-major-5018a220036d3d852caacdc93e030095337bdf86_1606980183924_0.22982949970275257","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.7":{"name":"@balena/jellyfish-sync","version":"3.1.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.7","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc481cb97299c6aa19a9b26ac8cb839c2ec8369e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.7.tgz","fileCount":27,"integrity":"sha512-u500CiN9Zvz6ZfFbfamsMN23MW/Cd2xe22mNTquOdZcQ4b1Oo17kAvvTc1z+ejs++LuCBr44wbIpATc1Y3apQA==","signatures":[{"sig":"MEYCIQD2gv7iuZurqf9T6nihZiL6z7n3+xuiNAlbOLuyNWhX2AIhAJxWQSiEL0IB7G4+SX1zQrtPtNu+f3dkNDmPQTMe/qfx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyJMCCRA9TVsSAnZWagAAH40P/iwoy1umgLkCsZ62GkwH\nbfKAsSgKGcDyT3wPvhpR+VcH1CamWzdPo5HfjojPRKHvU2ypMag/qTrhRShU\nksT/NEDNbOPdyWhbFigrREpDPohTKoSeion2oOLm9+3afGBoJTc2CQayHIEy\nLlK996n+FwNKFJUEjDN+6CafhHAbkVJF2Z+ykKm6qcw/Q9DnhoGpazYBtU9M\nrsCU3QIH/gGNr6VfD7ldeefiVZD7Ub7+0VFcY40bGOnoZw4AjM9fgx828FNk\ntUqFrVTNvCI2VWMQYkjSQQQFq1KzI6+4hrKrXHQNIOatOiDLWLhrFbYKoIpy\n3lZr5TgULJHpLpNfRUsv54ERAapXkLrjb4GZpKrcF7prlgd3hu+tBU+0dm+j\nmwbmg6CVzEDM7ttAJ8JhRW8e2dauSgwYvI8p3wdHA9XngS8RIEPEwW/qoiUP\nnvvPcfUr0K13evncRnQv8rcHxW62KU2GnS+XP/WtFlMU9LFmxH0Gy9WKUwt7\nP09uCv9Cps/8uaj/TAx+1cJkREXCoUAr2QbSA2MWsrqY938GJNYne4cEHSvR\nYMajdW519Uw/5mAVosPnNPNCrul/lAzbtqoY+a/zyaToyDw6wPbwQPk0KUwD\nqbBiTU330pqz5hACNgmzh0Dy5o4Ur7yHyRJaU9SgZfFpdPP/qLllW/bEjAcl\nCJGG\r\n=B6Eq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0c6956c68f7c891cb2b29322d4bb5bbb2961f1cf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.11","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.7_1606980353903_0.044055063039415865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.8-renovate-non-major-4c2e85b251ae2ceaaa35f93048317dd650e480ee":{"name":"@balena/jellyfish-sync","version":"3.1.8-renovate-non-major-4c2e85b251ae2ceaaa35f93048317dd650e480ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.8-renovate-non-major-4c2e85b251ae2ceaaa35f93048317dd650e480ee","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9ba0da8857488c36da059af04ffed8b0f6bb5065","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.8-renovate-non-major-4c2e85b251ae2ceaaa35f93048317dd650e480ee.tgz","fileCount":27,"integrity":"sha512-hTnVY9GX/3naA0fK31w/khsBTH4VbSgRknMnVYOdeJdC0TgA0raVwzgGtwEq4Hp+diKtZ86yi2TlB25ZbhtQ/Q==","signatures":[{"sig":"MEUCIHZJmZXx1h3u9WSd8fV4E2VLqevmHOhdO3giWvweN4D3AiEA9Cf9mmZc//wbRmLctf42Z6d5iY1zzH0YFjM9Ft2cv0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269963,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyfOGCRA9TVsSAnZWagAAj+kQAJ4D8kKg1x5tsfpcYfrU\nH3usx4aNEza4jnLV5nVn5mtk5TPpctVFH0nKPZRhN3fNTfLzMwwgW7cWdv6k\nzOiCpYg4afXcdaxdfPk0pTwq94cF5DVeLgUSI8PxDPLxnzJUBn2XwwuSqElU\ne7hgCyFvZJGoY0XcldAPPYXoEc76XYSZD5QDAtTmShGBhPiy7B+ON7od2gDt\n7k5RUXczhVnQ39m9g7TduijX8loGaqZL4PveI24YnwAWnDoLq7oJ1+RMeZVR\n8yPbjFRW7JN5fkDRl8vGYFC7Yylcm4tXC5zkYatG2Zcv4rDOTLDs1poc80er\nslL6ZfGx9ewIPYhN3fbFDN12Oqce/kzA8j11ngFyAhjhDb+RCqRLN8hcd2L5\nq7llC0a7cr0MO4jA+QpGgIjHN5/97Ln97lL2XdVCsmPuCvsiWU3J7tHOX9tP\nWv1HwRa8YBXtr3mfsLR/nRq9EtyzJ92kYXQiZa8Tq4dI1ekPBFqxbIYCyWF+\n30dRj09MmoujZqc0tSnpcHdAooPecSzpNOVg1ZCQCmWiR5QUddfW7Yf2xBpz\nenmBQJNRdUUY9BBGbQHwEIRPk3B/iw3fQgVBFUv3BnKsUjmbSR2/UcSyFBkO\n3eJbUPgnutt2Ik6QM32cxGfHYAnGHOhEEYW2GpRDK5A7RygWBylEdzBeDbG8\n9u/0\r\n=fW6P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4c2e85b251ae2ceaaa35f93048317dd650e480ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.8-renovate-non-major-4c2e85b251ae2ceaaa35f93048317dd650e480ee_1607070597911_0.3722105454216327","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.8":{"name":"@balena/jellyfish-sync","version":"3.1.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.8","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de7acd52f147397173a099833b662e7ec4195232","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.8.tgz","fileCount":27,"integrity":"sha512-VqT+534uorvqhMqB5PS0TcQiJdG408OOoBruXpRihmoGLxhmyiew18k4yuKFn6LqC/Do9UzIdZUzX4+5P/p2uw==","signatures":[{"sig":"MEUCIQDWtwjWBMKurnyxSPqJht0WSWioD2V56RoIg14YVhshXwIgcleGZVhrfwh6exBupAfHPLRA3dDuWwN0JUqopPihIjs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269903,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyfRDCRA9TVsSAnZWagAAIa0P/1Kg1l5y3LwR7WFeN0Hr\nUdbqj8dK1aZ5vIF/f4LaFTjyagnLH0ly5l+CzOlzHwc9KOBciP27FVRMDwEf\n95GH4Jr04pJ5eRu1Hy6Ibe7hSIyCnUgK0rsytqX+gunOFmtEbBe80yG1rZKp\nngEQE2viZixkyxBRzx7ZbMpJ6xJtsqPSOKjZD6VejCR6CqkqV777cIFJ4SBp\nIZqSsEziuT8bLm4XSPkrDOk7YsdzDOQ+f+emFsbE9o5wkb5gPA4sBJkTkcpP\nwNmrM8IgHAEWXnPid2mz252qG4NTfQG5hGzA1EEN3wBTlbfEhVXDAC4NIo5v\nYQ8VeropCBiYRx2K6AHWsKrd+nsv9YGyvd7rZDWwHJcLmQWxa24u90s/3sWY\nutgLEkpFLAuCQ8RagbdCG8VIgwR3Dpm2iqywkcKohYpzmIZrXdU+AD+m6bwt\nKGFihNueXMR/igG60640qF0ePB5V1Fu1d1InQ8bStuCDP6QTGLgO6eN5+MFf\nqlT9RK1s49quWt04QjSR1mrR/0f47Atkr4ayQ3I0A89ld36KFH/nxG9zPFGX\nJIjJWzfDaQIK8eu+x+av1LNZh8C5UFWsUep8hjh90r+XdoTbx/I1tf0rXO3P\n4M4Yv3gQhdglXJryquNMDuU/VCHRWOGgftUEnF+RSL03H5M2t3+DUpyOkj1C\nMXyW\r\n=uvVr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d37ce8cd84448e664e32b62b847f7ad74344ea45","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.2","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.8_1607070787324_0.11702639056675856","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.9-renovate-non-major-01e54fe0505d9ea23276e1e54d8535eafa0d2c72":{"name":"@balena/jellyfish-sync","version":"3.1.9-renovate-non-major-01e54fe0505d9ea23276e1e54d8535eafa0d2c72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.9-renovate-non-major-01e54fe0505d9ea23276e1e54d8535eafa0d2c72","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"098262000e7d5a0addef0fa1204dd3a937d856e4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.9-renovate-non-major-01e54fe0505d9ea23276e1e54d8535eafa0d2c72.tgz","fileCount":27,"integrity":"sha512-pZQxjAvEoktatKzAlqhP7cj5PsfQ05Hj1zCI0O3cO7I1NkT0d6eOUR2dUamNhkWsezdbJo/aPsE/qq10EXJPKw==","signatures":[{"sig":"MEUCIA2NWxNPU+f2/es7ZFT9z6TJCX0jhr7bp95q8z3o9IEBAiEA2jILFJqIQfOahkpjTGNgffX/6llo+lCTJtJup/vxVXM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfymVSCRA9TVsSAnZWagAAkVAP/0CaypCJSoFZqOZbPfuH\nSvMFiHS4nfTCO2cBSXBBiLgQF7PAKC8cLk8bJBaL9CLijc1vSVbWFwRQqJ+T\nABie0QS8V6hpSP8Jdm15vjnOwv9mMZ3FcNDveO6qt3de5Lxw8276Af1Vwzr7\nyzDz14nw4BP5uoV5EV3VYDf4GPu/vy94oDc3f4lcVSthoP6iw/c8VHdxTcxp\nQgyDMNWm9/cV0BgoIHjZ/PJyTAQLaRTTitDOHZUM23+K6t73+Qidnblx2+1X\nP7gZ+PS60EjJpXQiDPbP356/C3/Y2YhM4lU9kIwygG5mYVYesDFHr4i8Gppe\ndhOpt/oLQPkZQIfPfNdevLuL2WmRrY6dM6lkUviGd5Y/cID55v8dRfS7xLQp\nwOzfi9BRv0xTB0KD8c1S+quFmO0ieg0t5frdlFm+oIQLznr/MnPJe065L9hn\nXZ0SSeUez6UxynT8t/8MdQ+BNrAq88nTyyzqozILVpMhX3y7vRgzMEvmabDt\na+/fGQeBG4aK7PC/gEM/Bt9ncQndZ8XlvPeLPCQP/5l0q/VwQbxnbjeQ9fPV\nSXPI4dzkJ84Cg4ZDGcDzWICMPCc1WpCZgVQztde3luK1uIsrUiEAqRk8af0y\nzjXjZEgUcazAliKKet8xxmsP5K6fd4XrYaQu6rtEA5ia+/WT3A8o5tWcv56E\nw3E9\r\n=6hzA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"01e54fe0505d9ea23276e1e54d8535eafa0d2c72","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.9-renovate-non-major-01e54fe0505d9ea23276e1e54d8535eafa0d2c72_1607099730017_0.8961960834278977","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.9":{"name":"@balena/jellyfish-sync","version":"3.1.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.9","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3271aa7069b23fda2719bf4d0500372282387de5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.9.tgz","fileCount":27,"integrity":"sha512-To52iD4EFhvMr17u0MSy5sZWL1x8o3bQRwqhLazOmxma4Rr2VZphFwuJXACW/t7dL3CJkQBzV/CkTT3vmuafGA==","signatures":[{"sig":"MEUCIBjkyK+4k22xL3Po6eSYWiQawiMd6cmb3224a+GgQqL1AiEAmDSymaHR3CpqurRMvF5OkupOFGXFW4FAJh6cJeXX9jA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":269995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfymYyCRA9TVsSAnZWagAAUc4P/3WxHjcILOZPdix19Ovw\n78o47Jk0zGAulxEgo2lJ22BZSNCIukqO6DkIMOCJXthZvSb6PQ7IagbE7YXc\ncvFCqCZyyl2YU/lchhUzVrAIXIkTWdTXAJEKNKq7kRQ2uyOISNID/ypNv16N\no7U6HI1myzxBnpSMh6K6QIytUF+kqc4b/tos9Yl0iLaDgIEbj/oSsgQjRbix\nwTX37AMmpy9KDUgTsM+/rifNs7YG1jb8Xn4tOMCP/+QZkaPWL/Aib8ffgRBo\nx5eEE79tbdSWb5ISAd+8s/0rhqDWnHr+SqEnj0NUGQxPxnkOhRiWof0q4EqM\nTE2LERlttgZ5qP99J/P8YtvQSHbv3Nk6YNce4k4QqMG3vVtBxNys+gDFZzmy\nm2e9RMZGuQ+mp7pW0obS02XbhU0i4LOEwjRaOpXZ/3269WxZQfPXzdpjN10P\nImM+oSx6wIZNF+7KLPBTB39TuFyKLKeVueP3vNjo+AEfo3PkfCmB2EE0QVRS\nVnYH5QEdy9gUw+/xug1JNo7yeMT3Jlz3Hy59D2BvPIqtqn61OV8DB+W/VUEE\nmLMeyv2WN1tL+eqOzahb3lOJ20yBsPTiYoBcycpDoeAP9ySTzADMCVzBg/do\neLPNQcp+7vdCqWM4L/6i+tMH3Hnt1iTQUd6F5dYkWJYpfvh7q/LFUo5cpgxM\nqYPi\r\n=iSCK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"73a01156149e7f8e77d158d16cfe3a7763c3d292","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.33","@balena/jellyfish-assert":"^1.0.31","@balena/jellyfish-metrics":"^0.0.181","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.9_1607099954191_0.6616042963405557","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.10-renovate-non-major-59a40fc1e3eda2d59ecc3a82dc143bf15670fa80":{"name":"@balena/jellyfish-sync","version":"3.1.10-renovate-non-major-59a40fc1e3eda2d59ecc3a82dc143bf15670fa80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.10-renovate-non-major-59a40fc1e3eda2d59ecc3a82dc143bf15670fa80","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46feca8db73bd14b2ecb9a8b46493e124b560988","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.10-renovate-non-major-59a40fc1e3eda2d59ecc3a82dc143bf15670fa80.tgz","fileCount":27,"integrity":"sha512-brdLxayQAen9T6MzKVJ/tC1qdZKdEJKWYlAFKnXLzPHA0zg3WKPE3LJ+D6QzaTFv7a0ZrEynXB65SnkyLACiTQ==","signatures":[{"sig":"MEQCICob+4el6WFt4my+pkSZDsYtMEolTgViaAADfzpEUJHSAiBQ581DIQB1nVrLEvNk0njt6MCJQs6kOy31FeLpa4IfLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfyngrCRA9TVsSAnZWagAAFeQQAJDGYYU5mViflLeQy3qD\nprAeBKKHMDnT0xATPU8OAlAN+vTzyZQ7/qIHaPOoVuw4Y9hqCDRF6EMZQRxT\nFVXpB4DiwMrrL2grFDnMc1fEhYz08d8AFU9Rl8sH1dq9ugOFr9OVExHSI+Np\nM10t/2OqVpv68z308HD6gTJrq6kwJj4nyGeE13Do7DrX7di4XQPXvcTS6wWm\n/SQ/U2NmqYdI3UNuXHRebPPH2Sco9l+a3HD5iAB2wriZ/7v1c49qHVORKoUA\n6glREdoSytDDhK8WPe5pgKKl432KtNhnbbacnPFwsQXrafW77JE46BvF6VAl\nLlbBOJZrY4fjr/qeYcZ0z1yRIVKgfNQtf0CtAh8szfgiRWRJFzHklARLv/gp\n6p7qCUPN2vQal4YNuqQoaSRu71F4bKKmFJ3eczob+Ko/XCqOqjdD6rtkVsAf\nrVrcF9N0pXvNg7HMS+ajI53E0BKJItEjKjFWQo97Lh0JHc4FyRsOuDDQwnDF\nDxCBzfLqnXaQwX0biuwtbI1YdCNO/J5I/CHgjGPr0dpwmidmOZO0a3YPTaKZ\n93P5/tiLOTy6T0dQ8MsO4aXrIndWXAYndhh+DSGaZj5UgOhqnFxITaAZxf7j\nywxRB233dSUdCZVi6rAQEoWw3aDcx9uq/byjrvZLKSBFN8bmqn0Hz/GwkycW\nNl8r\r\n=OXcX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"59a40fc1e3eda2d59ecc3a82dc143bf15670fa80","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.182","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.10-renovate-non-major-59a40fc1e3eda2d59ecc3a82dc143bf15670fa80_1607104554902_0.019228389208822083","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.10":{"name":"@balena/jellyfish-sync","version":"3.1.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.10","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c5862e3144a8a4d0b7a7bb676f6f5476881e769c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.10.tgz","fileCount":27,"integrity":"sha512-a8DjTGn8qyKS2qXY5/7Wj3pfLPmO18ZI59zCPQW067aEgPlITXCnJaL+1XoVg7r15QhT1jttWafz2w0fzzBlGQ==","signatures":[{"sig":"MEUCIQCXHgW331XXzYjg2XUhoI/Ca7h68x4J7bc7RMPdxWcFuQIgctT7CpbAH3o2C8sJlkiYqWWNgd0g48PmIfQ2D4Eqn6A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfynlDCRA9TVsSAnZWagAArPwP/3V9I/MFSSJtUg95tGZn\nk66Wk26k5BpHG9csyma2u1RRhPl5mLeudUif7MWSdaMBBW1LT8TIl3nnVvsj\nc3bdiVxw0gd7XLeb+yQ6NytOgp28F9yx28gmJm8ZSSgQdrASD34DulxzYNZK\n7kX9of63yGUhY0TghZYUVZSynqEqtYry2zE/R/mdykMR9OdcjeG1lpkxknEz\nTWlH7RW5A89uZEosyk/cKbLsJUkziii+DohmO45lcZB5aCRNWoMlP+RyAtdj\npKASONoS0/RNnKOai6B5NcEKSVQ3EuxaaswAPJo84nRYWFofB0XA4UNr7vw0\nd557wKVHq4+PZnd2F9QrJlqQbxvFlVI9RN/cUefsDs9FyrIlYaaxOQA9VNFp\nX4wCfrPFhc7YvnFImF+0fY0/IAXC5OcOUK7pwAjVUM5X/ZHYB9P0AkAc5s2B\nL0FGKvrPjjZ2lzxNzjMUEwygTe9kUT/81eONa/X4LyWQ5HzSj2S8RVaIL9je\nrH6VimCdyqTU8H6JDO/Yp5mLt1Kwfwi8v3KCI2SrVIqfqtWpaySrYJkWzT6Q\nrSE3113ZrUWIDCwBMeUzahInlJbc62DhrfdJxv6qZnsLhZGZ8Abif0QDfGHH\nP+UHVNaPkSYlfrZFTx5UhHjltIaVkCUfcTueVYve5iHHjjOW35wzeIaK5BkR\nSEVW\r\n=they\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8864e6090f6674ded9064914e589c1910ad2f48b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.182","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.10_1607104835057_0.010237677315289462","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.11-renovate-non-major-0af205a3170a84460b6656f73268982f3434a561":{"name":"@balena/jellyfish-sync","version":"3.1.11-renovate-non-major-0af205a3170a84460b6656f73268982f3434a561","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.11-renovate-non-major-0af205a3170a84460b6656f73268982f3434a561","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cffc66041613c98c40f83f69d1c84032356c3beb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.11-renovate-non-major-0af205a3170a84460b6656f73268982f3434a561.tgz","fileCount":27,"integrity":"sha512-BHnlHatACcO5DVwonbhBLU9I2/kbLRd8XHsI+JkLpbGrD7xxjjGAzpXmah3VT+socHk2lxrrp8G1rI0DYRAFyQ==","signatures":[{"sig":"MEUCIAKREHFMkheHFX1inDHfweUrpSXfS7pgjeBBKulGQ7O+AiEAn+ysRcJ6UPmidFjBEieM/Wzo55KGe5YAH/GcgZl4l3M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfypXzCRA9TVsSAnZWagAAJgsP/A3vFiyrFjLwuy5SnMPY\nn3ehRYUlcJ0SR26S/ZqxSicGnPOKpEv+r7rytS9fDaE1dNQvLp5OMmJUTirm\nwIph5UMiSr6JEePkQAUesoOPjv0vx3GySlxFhff+lKniEN+fLROHNvd5SsnM\nA9mc40EL7Knri1L5w1KhicReOj2J7oALDYDa4BROCECmeuyAwgePkHhW1YYf\nHwbUOz3dE5CPFZ6KsOd8XSbV9Uj0Z8VMpKl+AVGn9NvKJp5pe5KAmQh8l3JR\nQPDbFRfoRPeH3u7+14eRIUg93ncj23v9zqOxX0CN0a/cpQ99c8EiDOSDjVtC\n7y/Wp9SabGR7PXS7atYvkwUvjU5mUoPq7nbL6A7Zv13bAfjAtysZ4vKjo/Vf\nI80+ioVvugiUXwlskLc+HzgJTHNhElxUh8x0c5cXcXCkP3eUV8izRDUJVOFh\nQx7S4/hdfU08nJUN4MYWkoSNLl+CjF36xvOJr30ocG4sT12ylJLHnNyYSiQT\nnRHtP1jSPXW2EvJtxnKqNk1JV2pjeG0vkAsAyFnXjS0iruC0C2z7mGmTNSGQ\nUd0M332T+5MxGLsQ6/PxMMpYaoK2IxI5YvddMbr0iGjb+GYqZpYZawgvsYBu\n2fPDSaFJmeIKOeqZlDCugRXL+sXTXgTLsMT1qhhZpOe/NInCEfUc5ur6OBTU\naRf0\r\n=3lcH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0af205a3170a84460b6656f73268982f3434a561","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.183","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.11-renovate-non-major-0af205a3170a84460b6656f73268982f3434a561_1607112179033_0.13746639638903502","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.11":{"name":"@balena/jellyfish-sync","version":"3.1.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.11","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c4c16b82725e4a71519e803fb4aaf4d2b128b39","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.11.tgz","fileCount":27,"integrity":"sha512-i/3sqi3lUdAUjwN+scPHKpoa+Pgv72w6g+R/vNoR5XHY9w2U3xgbN5wI4xfmyLGnVsjsnI5cA55v9X2e8K17Og==","signatures":[{"sig":"MEUCICpWcZk+BhoK1ZrLX0Dkd34WLJEIwAx9KLdtoi7U66xEAiEAkqVK1BBBcwbB0L1kmUe2QFudnitf63GAJ1M+93eme/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270173,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfypazCRA9TVsSAnZWagAAS0cP/jirbj2ror61yd2Lka6w\nGHfasM2X8dpyP/EJAF4gUAwZLP/kfewT2uA8GZxSuQLpjNWZfUGwQwpYj0eY\nvPOr6eLkKaQcP7/J5syoClJZzr2BjZVi38FUIGIElGX1jv3aeMrqAUWdFah9\ntu23RV2fkpy+RoggcCtk1Du05udJ4ZkoVxlUk5ubJzFKJNp3Kaxn6iemfBzp\nkzudLnyxqyqDn7wrL+EnaQUGgUfO54ADp0W8AEklbamAmxtks/9hvrciCLK9\nlkP9n0MXoHCVmzGpnNlG+GL+1bIT+vXxy1v9lXgh+JQ6i//J8sWhvZGiBkdK\nnaIovAflvjSID3M2xj4kYYO9dYxjEQK17ML/EIFYNE9WGhJye68OZaDlzfjL\nq3qTA5TUMYziBWyGNUiLBHXlOQozeWeFGpCpwFNOh0JjPSulBd5dga9aUnw7\nv0gXMDwtxadCocbc7DrwmK3gJeQkOV3dpNAgWSQLcMmil7/zzC/ljt7Ugn39\nWGYEur/8ZodKx6Czej9Tjkd0QBj0B2JWNA16gbur8vmzERenJlhLbNyNU3xe\nWto4cgk2Ct/DKOp8BjuUnMaTqN+KmMOpot494/CF34A89fQPyw5kfSzLLwNA\nWS+5B4LyQ85vNAT+dYcKkiFJPrg9TP3c+zkZqmfmj+V5pTogX889tklWYTIy\nxtU5\r\n=pr1s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a8e6cd98e0103aef57f2ccb55b21d843871131fa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.183","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.0","dotenv":"^8.2.0","eslint":"^7.14.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.11_1607112371225_0.64098035485209","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.12-renovate-non-major-b218fc42850dc8030d39b2e173239efc2481f7c2":{"name":"@balena/jellyfish-sync","version":"3.1.12-renovate-non-major-b218fc42850dc8030d39b2e173239efc2481f7c2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.12-renovate-non-major-b218fc42850dc8030d39b2e173239efc2481f7c2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"96f7ccfd93bfe44a7f6739b2c3b588c448f033b2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.12-renovate-non-major-b218fc42850dc8030d39b2e173239efc2481f7c2.tgz","fileCount":27,"integrity":"sha512-6f+qgFjyzysgUtab5BDuE+Qp4i5O1NntwEoYbUox9h4Pkhi/h11527Yj3vHJz/YsZAiJj3pnTUbVXeHHHfKhaw==","signatures":[{"sig":"MEUCIQDPxPA0zOkCd5xtRCjt/2+TMn+IRFRPndcxrZnCW9iODAIgFzlktNZIobRId+9VIZ+IfMcbL9XP4c1Aocu2UPa4QEI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy3/JCRA9TVsSAnZWagAAldYQAIw1aSAHPOFFC/NBXAnL\nvLWxUCjWiuxkBf0msGSDmjwv3lJo2IShkuNRw19mYugOsmZjNknWtLUFSfha\ng3bcJlvo1Bbzf0ZW6IXJrAKA7nKCIdfzeANAh6papzjZFxtckeUeKTljITpS\ntbmyoGMMexX8f8B4YK5J6ce/iS6k/QCKprJqVXlRsxAqjVMd13Jhw8gUmSVv\nxdXpRaJTgoXdXJdsBtkd1qC7INFJc/8Ty+BlGmE6MGqRGpL1iWnaFTk0W4KG\n9oXUUgg5+8okUh0qA/yJeRnulpxxpq8ubtJNKbcul109entqtJeH8n1bBGud\npXouHdsmwDI7BfneA9xOttgUvbBwgVKjzF9wWzCWWxRPes3WQWiXq050eISH\nUU07X8UAh8Q1OXchngcP2Ck7CY4OEgbcX2uOr6nZMSDdEd3Nxw1L3Hpm5ZS1\njOJhWoGvHHwu5D62iv5tuj6evpOZ43CdDvFzI35cO+wotcny15RQtJ3MrGU4\nUYfOpYinbZApoWIt2MwWzPkL6d//30+I/d3hP0FnbIk7RGBPqeIc1VACtmjk\nB1e25PY0dDVjaT1M4PHmvAIxz28eIvCWad7gaA9yZdJu2Qb+dZJ+1YBuE4Uz\nnCulR0PltxffBPA7/FIDhgqOUUoMxYE5g8pYdK1KN68EJyAZFIkNMg5HJnse\nJRAp\r\n=D+Zh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b218fc42850dc8030d39b2e173239efc2481f7c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.183","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.12-renovate-non-major-b218fc42850dc8030d39b2e173239efc2481f7c2_1607172040725_0.45731743362943056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.12":{"name":"@balena/jellyfish-sync","version":"3.1.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.12","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a627a3696c554f117b5d73ad38e3827ba84eba67","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.12.tgz","fileCount":27,"integrity":"sha512-AiT5+hCbFPNGJGVekzZFaeIQJQsYzxt+Vaozd1XEOvhbvAoIjLTFNjKxJSP//WlPkOc48mx0sfgA5Jo4iIO09Q==","signatures":[{"sig":"MEYCIQC811/Ldekq7vfWJ4rshh2LxR7VT2sop0uBcJgewC7/RAIhAJZPsvenp7MVx7ER7Fi9GpYzDZpzjPG1HzX/UyEWNS+C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy4CICRA9TVsSAnZWagAAB1QQAJVSge9b3p23i3FxaD5D\nialCzFJT+ziT3GxnowW5xyFEbmrIgh6bREA+bxz9jiX9RXz6hXb8AaftWDUw\nezXGlIwlidEZZACVEu7NaV8LJakt0pVs/TByegqgoSjdj9vFsrjCrSWRZuSt\n3pHEsG7xkbwB7tmFJaHNABgMzHCFcoadrLa8FJT+E5lnQFtGY61Vtr679r3G\nMDVFDXrNlOydiaMKoFWmD9Yp09TBeLkELaL+R274yCiH3svkUIRLo86kNQ5g\ndUWU7R3cXVnXSVgEMeCuRcFcQCnFeNOnVKlVHC/mGbyVpwK9E5PaCzjzOlL+\nZ4Raq+McQbbfz6lD/CNDzYGMQTFMZnfchkIQ0HZaUjRx75xJ86IULx4ohF3W\nloPt8V4Ps/lCG9C3WTRkO/2EMvn2Rkf8XTxkjfJkrETaqdyw11WeWJA+lzQX\npW6WrBz3R/VhY9mPW6uSUM2OkDD9Igp49PdAWuDgyq+16kAZd2lL543jWPWS\nOKTHMXMu5JAfXiO9P0ijLe5ZnOmwWw36Tkaz15DbhncDgrpr6z7qKqdOtth8\nvrQTQ1zGEDStnOEPIFgMd9YZmXPMpbnemV68cqeuZaIhELBZ1tRHLlVV9Q05\ntVgT77wU1kkA+BJOCVZ/CaQc/BVExha/NtruuYV7BHkij5WkTQ17Gcy/j+G3\nOuvL\r\n=Uvfk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"234f81ba49dcdb83df87d8901253e5a5a705d5aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.183","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.1"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.12_1607172231640_0.6052025330191357","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.13-renovate-non-major-093db28b366128cef11662ff44703b72f0cd0204":{"name":"@balena/jellyfish-sync","version":"3.1.13-renovate-non-major-093db28b366128cef11662ff44703b72f0cd0204","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.13-renovate-non-major-093db28b366128cef11662ff44703b72f0cd0204","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"371e5058a8513df9a4bd66182c22d10e588fcff0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.13-renovate-non-major-093db28b366128cef11662ff44703b72f0cd0204.tgz","fileCount":27,"integrity":"sha512-+WhKxtyZlMchqkwsdhruDsgZFKVZxHdE66kcoNcx9sP6S4sacK9sKAbExUPGH+iXKEzJRK+UY8JfPBqh3Jki8Q==","signatures":[{"sig":"MEYCIQCvO4FIcgRw4Z+uM/+7TC3JTlCyAI5UkzHjSV7W0RHcaAIhAN8XBH5Hm14OK2YVSc3Z89Ny4M09oY1rtigHa/f4XXF+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy4sbCRA9TVsSAnZWagAAYycP/jwR5tRb5d9F7WK2I0tP\nSTqzWDL00Z7ldRMSetGNJOrNQ5buGD64YA4FvM+FKryuzwRdlDF09JuIbENr\nXqpSprsPtPvhaVLnoc1IGkkvi5LRFW3nK3+Vl+lETIG2Q/yIjaWPhOUm52FY\nKKDgNEne/PS8vyI4keh2BOxRU2UsWs+j+bWsqttf1HZyBbGigP7D890OKjGh\niDPOs9KGiu/3E+Y2opZcl5e3HwjO5bBc/xL5gZPYs4XomtMY+xNCPP9iIbRh\nsu4j9x+buMr+xepnjNAFdiFF1eFAPgxF+GneptytSBhfgKVpQgqTC0A6yQMs\nctbyGt4UfKMbt20TK6V0knyVv+rvJQd7Gn9AGhg5Kvs8iyrjGw5lSk/GzmVB\nU0SaQ79I/VO8GyoPTj45X70VzZqMzRhlusBrJ6EsO+Q3E7laxxZfmrZPXoJ3\n9XQ/TF7eQOuF8veyOpzgkidkHw4fh36j+xT9+fZUKKZeRdksfkUxGdoUE7bD\nT5BD3U/8wsAVvjY/JmUoq2DnhTkPn3Dt/Z3DTczqmeUVB84w12qRuzwyhMrk\nv6z1pF4+5J78s8GXytIMJRp2YO4Is9jIqku8wAOgT0VoJKVxHQ5j2CvWQCJk\nLM6ihWSTx8iNaexUeCNUzl0/e5C0bBW9EiRSSgY6IzQqiGy6br3fGMvO9HDs\nvkpM\r\n=iRgp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"093db28b366128cef11662ff44703b72f0cd0204","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.184","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.13-renovate-non-major-093db28b366128cef11662ff44703b72f0cd0204_1607174938487_0.8654684504038133","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.13":{"name":"@balena/jellyfish-sync","version":"3.1.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.13","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b29430471280c84addda41de070de451d2c00042","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.13.tgz","fileCount":27,"integrity":"sha512-f7o+WYkYtINKKLWmH0fgp4yzvX+BBqh5DK+YHZ3XsSXSY4hAxOzKY32zn1aKzhSC+FeALUbbIyIWFA6mE8bKaw==","signatures":[{"sig":"MEQCIH/u2TOz+xEGkVf1ImpNCNySEJ0K/oQVvcr+VLxULxjuAiBBnUhdjGLUn81VK11tlEwHryIPo7ZhxVAvUabXhIenig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy4vTCRA9TVsSAnZWagAAXioQAJFPiLFV2QFjbIduukBw\nxAso0HtkcxiOW+R3kiLBRXrUI10hbiafPcoXO+VXX5DKRvxKK9cIdPaY+CqC\nKcucvO9GG9wYZyu3rt8ylSSiJ/Go+y+cs5lF/8xeToFXC1P/aT4AaoI3e2Sk\nL+lCzrF0DcWphzZuHzbN7GVCRtxs3AUCEbTjaWtJ7wQ3nJAMBfYQ3dzdZcFs\nXnEHZvioEik9umCWqDlH82fIHIyvDYQwjFrV3BHZD7jH/GEJwBgEKtRO42aJ\n5dAfiS0AmsW6V6smlRbUr3wDSkG31qlfTUSeLFJ4mdRE8xE/XWV3Ou20uUS6\nuVxfDcgxE7bw5iN+p5EfnOvNrHzKtThCsRoFnhTVoYusaKxB5ifzE4mp9Uf3\nXwuKWmI3zLyqCFXaff0RzeBxZluF6fND+gk9uZrD7RCmWlvCONLscXTmeFuc\nDnyWemoGqwi+wi7JDxbiiESVPDWGR/LLGRjIjKmP/9/FkdLVBtzQOjqQ1MFT\nqnRyaqOXjRltlDchvERqOHBtRXZv89vqXCN+cdAlcId8uYWbVprTjvvm/TZW\n9y/9Krs8xOH5JFitvJYMoTOaGmBRu1YHEDoKNrL+11OalwojvCLpVG1z3LO/\nr9vRxHKCsJWTt94c+pRIiUPT82cO1THHwtpfGV/jWFjvdzZ2blZW4haSGTH3\nbb+z\r\n=auU7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"04c43f110674f056da7a672b1cbdbbee24666fc5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.184","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.13_1607175122596_0.9594463799052018","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.14-renovate-non-major-fc3d47c43d95471904318ed2d6b90581b9cc6de7":{"name":"@balena/jellyfish-sync","version":"3.1.14-renovate-non-major-fc3d47c43d95471904318ed2d6b90581b9cc6de7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.14-renovate-non-major-fc3d47c43d95471904318ed2d6b90581b9cc6de7","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd3add6bc9979b8bb8d4f7765f7eb278b6042b78","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.14-renovate-non-major-fc3d47c43d95471904318ed2d6b90581b9cc6de7.tgz","fileCount":27,"integrity":"sha512-TbQl437atQznpvQhss1QBBqwAScSERiGfJESRob2Cv9RramIkA0dyE64YvFbKxZGPFikmN3J7b/7HWpi5wx9Yw==","signatures":[{"sig":"MEUCIQDK8osAoaZNjfV5caxa6eJqLKIFK7Tl/z3JXgh4Xqy6fAIgD9gAHVuVMm1ZoCoXBiZAH4hSV90e2q9owaBGJ5z1yOg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy543CRA9TVsSAnZWagAAUi0P/1DzWOON8A0S4pmSkQJv\nOwaD9ox/unTZzhxqdqgjiYJeJKZHuS9hBkXZ/CYAk4PmdW0GvDEML6jChvhE\n88BcSK0kW/zBWqPiT4n9IttDIj1fQrQ0M23DLbvcg4D5m4MU6yUESjP/HCfs\nYD+OEXGYCpJDPEYojahvrQWL/bCLXR28Rpy7O/vzkWV+swfQkefPN3j+ui/b\nADGeB2JDm0bXe7i9zbEe5+OKwqThL6slbAQxTy0oITkzDL42NEM6K4TGZzSE\n7fyZfqkZDSRGFpaIfxBLQKKIOo8c+r8X9VHMbyUFSTrPxzxT98xZvt+X3Rpo\n4V7JwkBLLHqPRUw1Wxa9KSeWuCQI0EH0v64iNsYsP6tAFMkBE6O/HsxrcgpC\nEiBl7x4Ek/o467JtshLzQpDZUTdS44H4AC/aKYc98ql2wEABKWPYxDCzHd+0\nx9J/aQufk5lV6MHqxMebcPWah8ASci9mfGLqSOrEIy9WFJHeF5t+iU64lhn8\nRiSB1g1xGKp+7eI8HqtsOC31caYqEWL9ADJxb+yCb078Bs8/t9dsyMeAd+TF\neXiTk6mcEHS6UfV0OsFImTOhEGcbtut1wYU8pXZKLfHROFKS+/Hi8TFqzKk+\nPgaC+qmSzR4T1steju4VTkYMOy8ugqU9+gTx2Nk321JaGcl7wqhcwC5yo9qZ\nF+wP\r\n=EdnT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fc3d47c43d95471904318ed2d6b90581b9cc6de7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.14-renovate-non-major-fc3d47c43d95471904318ed2d6b90581b9cc6de7_1607179831449_0.8421688104249012","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.14":{"name":"@balena/jellyfish-sync","version":"3.1.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.14","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"037ab279f2f67709d3bea03eee8bfe301ad5483b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.14.tgz","fileCount":27,"integrity":"sha512-Quta7hPneEhQQe1+vm9LNUOEj5rrsxbgmddoO7kCzjYs8xAh+ZmfuJ/cVz0b+LLn9eJHcxsUlOminsjA7Xwmyg==","signatures":[{"sig":"MEUCIQCE4if8TN/GKLJurbTPFV3Gp73+dMJQyUlOUNoTOoe0RgIgLSkNoVT0DoFfpWf5kbLgDm3kwjMSqXc3NvA90AKAtTI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfy57mCRA9TVsSAnZWagAAr1gP/jl51vl5iVzlX8Bf+GoT\nHW9QpC2Fi8HTSZeF41OCFiGRg+Snzf28PHpdDvNsS0DQGYmxzb9KqK2N2P9T\nX8oTBzApsLGzW5IvOd16OsjSTuqKZtr6AfeTPvoUtpZmyA+dOYrzbCNwWMD+\nDKwZmQuYZ2Vi7TNE8BbpzLtdEJ6eYsBG3UddHChExD8hrJ8hBaS2VxN1O8KC\n2TkK9Z4VrxdHH3t6QlFq6oKBAVRM3kQAy35KdVtWNESBHVAvl5nHT6UIZ/qZ\nUgOcy3LP8AVojTh98iT52YukfkjRFDj+rGfgR4HHyEPusSpErcyhvBi7B4F4\nWsjlJideVtL/plMaj4klehdu/1VCQsA+6uQoIxOM4sbSOw/fw5OzqkVzcLcs\nL8XlBOZcqKlrrxpk9NnaIEHfAx8g2dDRMJ6DaWRUqWssmKWBOq9JlFdTPZ5g\nxpz3s5DLPiT9om2jnu0snkewTAzc1NNQ4SHAmijp1jzuFT7y+2u7dNP8fbjS\nDht5nSG1YAnkNOdT2VmxHHqRMIBAMJUFb9oJQ/ikta/KLBIPOlXLSJJ/3YzO\no1YyLPu8JdH33v+pIL6ZN67+o/Amp2HTO9BhJwcfCoaJTRw0ctp5RQcTcbYF\nw0QzA3SCQ0wy1JVJzHBNJjpOTttgPl89IPrOqkNU5mAwyHkvRtMLQuANmlIU\nq2wV\r\n=0gMZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"498889d210167e437f868395ed34b135a7490bde","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^4.3.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.14_1607180005897_0.10958808433610345","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.15-renovate-husky-5-x-933598b27b0f723100405ede52585db2b1636a29":{"name":"@balena/jellyfish-sync","version":"3.1.15-renovate-husky-5-x-933598b27b0f723100405ede52585db2b1636a29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.15-renovate-husky-5-x-933598b27b0f723100405ede52585db2b1636a29","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"77bd4a5288d42c92a229606faf7bda2cb07c2557","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.15-renovate-husky-5-x-933598b27b0f723100405ede52585db2b1636a29.tgz","fileCount":27,"integrity":"sha512-lX8GiHhEISKo3FXSW/sKoYki9jKUXeKYtu8Po/hdyL/mkrcwXHrTqRRg96bXZ3k3ZHZ4TOUXRsrC/aMRnTxbJQ==","signatures":[{"sig":"MEQCICZN7tV7xrxJKgXP+OTpn3VDvP9XdQivaxDCokB5u8VGAiBMIPVZxuHY13WrL5ddv8ohfw+9/dyMLz2VAe0Z+qCajw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzXa7CRA9TVsSAnZWagAA44EQAJhmbpskuKlY0hU2l/ix\nYPz6ORGs68pp4jAqs9LwoU0JapThSPcQlYlyQBerGzXafLbpUIssZptLs0er\nV2wEt2qSzQOA+1b9xryKKqrC4yfiCQuobhenmxfb9VJ/28aNw8gj4FuJvd9P\nWJBVRKIzcWJdR0Sw/1lnTv6FmsyEX/njauxmsPFJI90u5caEHWe2sskSWguW\n64zMwB+dozmIBCO8yi7Ac9mLuT6lAOTLKm91S7N52aekghciiBP2n4cxshKK\n7i8ZVpiie/RX1AEHdpX0dpA2maRiBzw+IoA941kTp+livG14aawIR4j+D6DG\n5YKhPt9AqdP9poIpz7ji/fAbtqNidNGh9ZDHSLMzDErfy9I/XskjXb5cDLlD\nA2E8Z9VJfaZOfalWojdKW8PlZ8/9Qb5d0686WOqpWo7a2qLSP2pKx0gwmdQ3\nFshtr07Bt9tw8oE/wWe5Jnn1eMMk/9r+McVc9hQCH0i5UdKWG6uQOIzqUXyC\n7wM8ZdlfHTkGMnwE3fGEUumNv2A4j8c9avbiHd92BoLrNSROECBYvbUj70QW\ndQfwQbiThz/lyOKl7nQRpFeJV+07OD/CVYpNOYDAA4sNWzfXvgqfgrZHv76T\neYUeyJo0RewXq0qFrPQwBootzJNG3nTvHWZdq7JSA2MXkxR2Bbk+d2WLSPRk\nS7il\r\n=Ggr9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","husky":{"hooks":{"pre-commit":"lint-staged"}},"readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"933598b27b0f723100405ede52585db2b1636a29","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.15-renovate-husky-5-x-933598b27b0f723100405ede52585db2b1636a29_1607300795430_0.06195951182173354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.15-renovate-husky-5-x-9393a55e820cb3b91affb00c2c39c2ff8aa82c1b":{"name":"@balena/jellyfish-sync","version":"3.1.15-renovate-husky-5-x-9393a55e820cb3b91affb00c2c39c2ff8aa82c1b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.15-renovate-husky-5-x-9393a55e820cb3b91affb00c2c39c2ff8aa82c1b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0f63a4c712d827e0f9f40cddfffd8a78ab71ebe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.15-renovate-husky-5-x-9393a55e820cb3b91affb00c2c39c2ff8aa82c1b.tgz","fileCount":28,"integrity":"sha512-lFuo2O/NLaH6uscrZ/Ps6Y5w4jIEXRRLVwdb37K/b4DlCaIy/hL6v/xij+JN8xp6FvCe/fdKhoGt+eQTaSFd7w==","signatures":[{"sig":"MEQCIESRdN+Srut2xGrrDYkBWaaSj3uDh6JEis832vt1VnxbAiBV/Ifu9xjqZCErhCq7k+ahmGjWKEBYAOa8OYD78EjjPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270663,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzd4PCRA9TVsSAnZWagAAavQQAJLEQqt0TSvjCrVn1GqU\nqRd40G6wWpdih0nUWLimt8BISFe8BRhp+HJkR1Y5B3kaYUJpeNjLVTre9Mlk\nYD0cDhRA1w8421v3//u6aKRe7f15j18BcFwr1Xy0T48KS4Bj2OISR0cJyGIf\n6DHTUcidEBC0XJMd/tUIO5+qDtEJnquLxMCPr1CgI38gxpwGCcz9BRlb3v5h\n10cezbdZsdK2RTC7tw2mBP/SAVIj5Y5s4D+DUQvl9ojZLeZAVFuhLvoI78CB\n6C1l7rSelZgG/D0C9BjwPvGrTvfxV/7T93hdm+dhDrZW+bEdhRrXOhwUHkjk\ngGXgZm9Zr4nHG9KsqJywSH8BIo2iImaMbyEx8yffnz4ZxhvsoYEyxUQ1rAvi\nA/GPLbbvWb3WB09ypcfA9WBJ/Y2yCHMCyfkSoZDVHusZMYsrvVgxNhh7mrTf\nVyidez3PCgzu5dQlqku199u1tX4Szsfjbm0PtgpT7kiNtbY0Mme7hZDa5jSH\nRDgpdkidL6A+umL51L9SaFm4dFyGXfYyBZ0nxFTcwFPJ6BS3UIyaLuwWw+Tt\nN3J1CiB6O+xWhqXV2JFxOtoMMYKjQdtymIfeSP5UgiQy/Nsw8hhoXMnm1Yw0\n/oBWJQ70qJKl6j664qZT+WyhtueWs/WpCbZAeONwSTKnppjILn8jSBZMVtSj\ne98t\r\n=azDF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9393a55e820cb3b91affb00c2c39c2ff8aa82c1b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"is-ci || husky install"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^5.0.4","is-ci":"^2.0.0","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.15-renovate-husky-5-x-9393a55e820cb3b91affb00c2c39c2ff8aa82c1b_1607327246539_0.3422320962153913","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.15-remove-postinstall-b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00":{"name":"@balena/jellyfish-sync","version":"3.1.15-remove-postinstall-b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.15-remove-postinstall-b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dbadf24dda85b4f96e1c96e5ef358008a6881bb0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.15-remove-postinstall-b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00.tgz","fileCount":28,"integrity":"sha512-4lqvXYQOCTaT+brHaUbO9pgp7mO8XP5G4eNQQXly3Rm0i03AAN2WIisSuwDB2MECgpoX+m1XrgDalvkU1TwgNg==","signatures":[{"sig":"MEUCICBbYL2MyLwgbODh5xoEkhvLNYqXZnZnwkpE9m5+ugxKAiEA1m0jfaooxbPkWBKiCPfQQ4Tmy138cHo8302jvrs+XQs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzfXtCRA9TVsSAnZWagAAiB0QAKHyi0JkC4+MLuoaknRs\nNdOUTsWxr59k84vVDWKeUMr4rRXXwvnn96gedl2u2VeS2CX2T/IFJfDMhDwQ\nQE1T596yiSEQ4W3Px7NoVLawd7KuPFOqLNnQa3Q9WtjXGT57RaquHVIyVGU9\nxG/hRHPN8g65MfiemDa7HqcY/koeCLFNEIIlYD+H30XSWCSkDShjOf2bWdZN\nlPO0LiEU/g9tRxSNO1vGQt0G3BVhRy79PgougTqljrUnG8sYieW0QM0Tcl3r\nOhz7lGo2bjM3okZtHFjhe6fidCz/TXTU+/nkodXfaw0/ecmhO5k9QHiBcV1e\nBxYyYyV4WNBLF3+711W5laKGJuHLuVkaGKG+25540k1BZyLdKVXouvemSTDb\now92+kpBWdQ+t6akGrf2lL1BW8RFI3f9Zikq39WCdFPfo6WKZzbloPX3iZLt\ny07dmZAsnIsmxjrNl/VtDO62NlfLE8IlQZtePTc7VaPdT8QQse+HqUqfslZL\nOGh38Hvt/XZo86bNfFuNYouE1wx5dDV3WpiWkFBzN8K/2mryaasJVRSL/+kb\nBSHtAjtAn2F1oVfr46z11CQox5pKxwIBfn8oFZVHP8UX/iOUhXeOVNqyJhEI\n6Cu2VDfRQ/rgXydouAD70vJmwL50y8yXP1PvhntqyhDlsPIA/f6nqJOF/ZVy\nqNSh\r\n=ghwg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.13.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.15-remove-postinstall-b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00_1607333356783_0.8222004422337463","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.15-renovate-non-major-a0a030d049285b08e773b9394093243be56da1f5":{"name":"@balena/jellyfish-sync","version":"3.1.15-renovate-non-major-a0a030d049285b08e773b9394093243be56da1f5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.15-renovate-non-major-a0a030d049285b08e773b9394093243be56da1f5","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9da88bc35a9ee9875e4f3e2737cfd1663e4c44c1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.15-renovate-non-major-a0a030d049285b08e773b9394093243be56da1f5.tgz","fileCount":28,"integrity":"sha512-zlc/2TvE9DXnngMUA5HNuWhAi+FdyjVHi0sC+o+uTUuIn7hABdvLUN2y9mtO7cwBi5RLtnItLZNzOkrNdFXACw==","signatures":[{"sig":"MEUCIQCONP2JdJHnZYAgvxEpkaGYPfcmkftp5C4kcy4kH/8lswIgF7wJ3q+qGS+fVa+7zm5apcSVfs0NrypAXwsVDjQ6Ytw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzfe6CRA9TVsSAnZWagAAFNsQAIlFXqPTBUlX9leCMiXu\ni/V4r1Avro0MgAG6AazS6ZPZpEGzJp7vpX6/bBfWQAIceCHHUpn2eCmu8tjx\n/oK9oVMijVkU9dAylRbzdUAK12pLm8aByY9Iw6c2iAvrADLph3EOYMQ6dBSQ\nollgmQ3rke/XVDwrYmIQMkGVRJYo2rGhVpigWJHz4BAf72Ya8H00S6793nvt\nGeg6yZW8NVmBqIeQwhX5+D5tCyPp7VEU7LhrPgF5acL4dcqWf/v+8YmgOX+5\nICLSANlNN3Lovn+M9u+HomLtFTlapwqjgCnIzhwJTu4pzOb3I8hxLO/THBNl\nyqqlTIAdK+vXmWs+iINqbtzrq3eX1VgEIY8JBgD5hJQVSzfn7XTmXgzHqX/7\nbVeHhdtEoH4YP9BKCwNp+kZNeE2Km/ECBd6ZhoEbdt7BMB31J/vvHQGJ2uep\nnfJ4wohtT0h0qa6AQ/V/EIRWPtA9IiUR8zEqPtgMs6/LPGvPNjScBnzBi1Ou\n3ehuuj7P2y2ELbdGyiWA0DUbLXJCoIkbQhrkutopIdJI9ZJVycb5WrCqZN2o\nYUBzogtlI4J/miPwijQ/9tCL6uDngdvb5oAXnCW7qHwWuqJD41+8IIUwwwhm\ncP2CqJjSwqAKpWb4mpRKK5mg5Q1yiiQqtV7r9Qymw3EdaagEcv6TcRb2LzBC\ni0zS\r\n=efEn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a0a030d049285b08e773b9394093243be56da1f5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.15-renovate-non-major-a0a030d049285b08e773b9394093243be56da1f5_1607333817603_0.2929085163993268","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.15":{"name":"@balena/jellyfish-sync","version":"3.1.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.15","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1ce8398f457dfccd8ae214de9cd3a1f3168c5d1d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.15.tgz","fileCount":28,"integrity":"sha512-9rT5rLOQSRAD7mHs0A78U4CmrlnbKqOvIG7ReyBdCiz72x1VctYGV0mu2HmfG2LMogI4CHplJzGdyfo4pQoqEQ==","signatures":[{"sig":"MEUCIQDnLJRICumj0SMexj+I+tLFWfsPBhR0DnV0H5NWiS7m3AIgReJg2JoY2BR9RMB3UXB7n0Jb6NyB/ySlx597GJXbAVQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzlh+CRA9TVsSAnZWagAAbEUP/3YZA8Whk+JgNMKTfGkt\niNEcl7V3gViYK4LeYQ8Jy0+KoRKxPsaU28EY1aJdHLFJUnV/HCfEssn/464o\ntQNI7aBsqb0ltNpZ6aZMFvgF8Aabw+RQvHS8bveOan2XnKO6mxB/YgktWoD+\nwUjsPVewcku54EKDd4BpquN7TxNxgN8cqH4Wc8CQpDNfBCnVy+oqNgShuKv8\nIQ/fLGS9iqMODgbc7XTgTjKurPsJZHCWejRKKPFDpUm5GCguJilJb1CTpwAk\nLPy6ETsQkAOA0LuHilYX0ozxlyoQ7fR5oIHOAZJHG95PyAbFIrQ1TznQAzlF\nRdWTQ1uC9ndzjodAgxYrh9b2j1+Vql9gSGWI3naM6x0LXhoLF77A3576WEEy\nVJ/Kz+qYJ62esdLa3wX4RbKvNW33PuT7N6SVV2ixzNTlhTkccGUVRiLSa9pV\n0S8Pq3z3LzzIhfUX8rOQ0HaAyUs9fomyrjlqrt9mBqpwAD++1o4JBxfdgraR\nwMfOR4t6Vm42QJNHp4MXQYDvC3Cw3eQ8TwfC/7yMjYWTxCmzqEhB5w5HFnOx\ns9fA6Ns2Jw4I78MwgDJUUJzn7YBWlhY97LPb3hLQosHZ8uU56ihRpJMzdU61\nEMrInCQw9j7YLH3KGriWFpBj3YJqpNZbzlVloSbBtXCFsu5MbiX94JfIkfA+\nxm5q\r\n=wwqV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8d7d25d85dee3ecf377264c4a3edf980df8b986e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.185","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.15_1607358589861_0.06861425544079958","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.16-renovate-non-major-5305dac3aaeff68a70f42c1864e8085284a05968":{"name":"@balena/jellyfish-sync","version":"3.1.16-renovate-non-major-5305dac3aaeff68a70f42c1864e8085284a05968","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.16-renovate-non-major-5305dac3aaeff68a70f42c1864e8085284a05968","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f383f6222d2c2ca05877d838790e120879618591","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.16-renovate-non-major-5305dac3aaeff68a70f42c1864e8085284a05968.tgz","fileCount":28,"integrity":"sha512-ScDHNfTLOeoqka1fT+0DpJ5pJ/7dsovVhPP82yVlvCxu7GueD4hm5GC7R7JKYwuHStlpS/R4ejn5U85y/2Y27w==","signatures":[{"sig":"MEQCIEhoBKpi5V6Yiqz/+5DvRJwgzBn3VgfEnGwyFi33DpqLAiAKKd9vwkWvA3AtFwpleThjAS4QzGdECAWMmBbY/MbTMw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzlneCRA9TVsSAnZWagAA4iIP/0o76RLoNPqp3NczChQc\nByzCODCma9HSrc2BQSA1Zyt1JL7MCMYAOeEPXFoG1aTfU4xIMAarU+vxrdg1\nWglPqR0u6y4qm7tpQkrg0oaLHNGD/jH6xIv/F5Zh5GPWisvQbkninva81SVZ\nLmhx91dc6cHskUOgU97W0HGdFoAvh9HBPnxEYfh+3S+jcpZCQaVwCPXrIlHM\n9mScCU85cqOVBzRLaFO5QA88CcjRv2CDxacfnqZ5/6z5chicnqBunvZx0qIQ\nP6KPJPyRRqgPxJu7MbiwyrHCmUx7hmWMkz8XQLYOv4UUkMYG2UPWT9IA1aQn\n4Do+SRov9MsV0qrF012+1OyleRuQxtB5TT3tlxdZVSn9Oh5Ipo71gQbtqFoV\noFKZPHBeN0onrhgdnKDtwh2dJ96wRk2Zk5bQsVGoBY0plzqYc9ePalM5QQgo\nlkUsIBROB6sH7b38XIeEzFudPrWnyVYY0jmLBCwibqt+tOQ7kAhyfbHNVzly\ngjXSdKCBYRI8eD66gplkM9dn5vIACgCVAoQppoEKeO1M8ZGfNZeq/f3dmua1\nCg0rMpUngF/A8xCwmAB3YerBhC1yfeUnDinCv1GpL9+XpXHqMyAy7eEnZl54\nI2t1bGnk/oJqOMNzQWa/5nEsI/ft8Lq1ci4AlkDu4SagJH7nO6XDJCs7de6d\n1J5j\r\n=2QgW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5305dac3aaeff68a70f42c1864e8085284a05968","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.16-renovate-non-major-5305dac3aaeff68a70f42c1864e8085284a05968_1607358941504_0.9500020700627652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.16":{"name":"@balena/jellyfish-sync","version":"3.1.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.16","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d2399f1e1e9661c0f1c672fdd4dedd2f7b1392d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.16.tgz","fileCount":28,"integrity":"sha512-lZQMYGvblq6biPi637YvdgZsIs+AuMkZMkLpe/+6jxczlvnzCc1PIQuusMpgiuMQQFHJhVpKgkZR+aFoxWU/2w==","signatures":[{"sig":"MEUCIQDJuJ4/jX+HhBJFFd3XxnwokIWA9ZfaJkRm12SKd6CpXwIgaCGx/dLLCogZUDdvm79RQuQO5g136be7r2Dz5dJZBOw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzn1ACRA9TVsSAnZWagAAVm8P/RHbETRq6PEm/cZbKM4v\ngjNI/4y0iR9DFXoqL/YtVoiWWPi6V3dWi5j2hMI++DCfhoqL0cE7zIoOkOLs\n2eJtVXZE28/Yv9HiJukWChqmkrbeZhmFBWIlCLQuAmoLyoC3GVkE82Pp1CDE\nTaZojuat8zfTJ+ajc/sbQdXPw1M1I5RtGCff2j7MZ7zIV+pixvaT9lrzAkkW\nFqLQBaoEeN/Xn3W3X2sqpCI0Qs2S55pJSqZmxQiwYAkhFRYhukF+LVcAKCld\nmmfOfx7W2/V2S22WD2B7tD7LYwUy4wKr/3ij6+4TSyYiD17u2f1Xcl3cXer8\nHGh/vKz5uvW4nx7fH6x3G3TTPZR7s6uC8vMoCb6oW8Gfz9h1kdv+Gun5XV1b\neBRNUUxa03JTLtY6VjhtQi1ugPknewgDZPkuyHtJfLgzv0BV8Mxxxd/vBoCs\nEJV6s2fsEYnJkbSK/nc8+Pq0T6tCJvven5FoQ9De9IxkTD1REHLAz5m5UW47\nIP7+eoQxugconss4NdCVUkgnFdIVYEAxlECH6kZEz9vV+F2ICSzhe3N84DRd\n50vmuZyJAbjVos54SL0rF/MhYmuZNloyVelRtMP09eT8JPpk1/n6C9sxxLW7\nGRJ7VrcQviV/ILqbtmDOkmq9pjYykGk6tjfshoJl3ee6cCaQ6parHX/o6KRn\n0Fnj\r\n=H6jU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"34925e5439f7330cd6856f8179c02e98e8bedac0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.34","@balena/jellyfish-assert":"^1.0.32","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.16_1607368000035_0.26346999142754735","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.16-renovate-non-major-68026af9afa7a10d6335e87b6156cfa69f0a732c":{"name":"@balena/jellyfish-sync","version":"3.1.16-renovate-non-major-68026af9afa7a10d6335e87b6156cfa69f0a732c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.16-renovate-non-major-68026af9afa7a10d6335e87b6156cfa69f0a732c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f204ee2a197cad10fab8bc241acc6fd4d43f897f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.16-renovate-non-major-68026af9afa7a10d6335e87b6156cfa69f0a732c.tgz","fileCount":28,"integrity":"sha512-M9VsYsO9RcdXCRQ1JQ3iuO55im3S2fI0vnAPiw4PSNN03KTuvrNiMA0yaOGehv1eZ1c7ohgppYEZ+S6w061dHA==","signatures":[{"sig":"MEYCIQDxOCvd/flSOWJVT31LmEz9g0hz72VpELg8/2Fj2FVg+wIhAPn/RKk5ytW6YiOb8ZpDgIIdm/iIDSNBENPIlIP40Qwa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzn3MCRA9TVsSAnZWagAARNcP/3S2vZ8t1RVqEZyt07gF\n+hwDrNkIF8vEhRq7g4tSxP6NLyTuSTRKlikSTef6pGhHl1Wy6xTRwPq6XThN\nZlEEqeUV2xdR5uxX0qBCgAeibpVqrTadWNf1vvVFQmC5VEoAAEZcvXPLhdhE\nEklnqM8gzclHzBdcfB8g/IHdmRpWBoOthELOcAP+TII/Q+ynQLN8BInIPuHy\nMESrsr0BJAigUH+JGQSZlFIeVCO/etiy4AorY8J+WX2KY+ahcu3mdHdFqg5+\nvZczVbIsKalzLqeAgv3cCOzuL+ZeMwiHjLK0gGBrTVPY2GO1MBfxbk0XQAsq\n7O26hAMVQNV8g/TucvrwfVzJ/GWLLwdZZ6o3X6FVmgjTywaD0xmini9qfap6\nFfFWwADfH3Rz9FCHN3uAy9eY9EwoFIHCankpH+35+KvcsgHAnAyMXzVcuE82\n5RJRx6jF68lXUQI3ldKQD1GqGjaWT4YnWqzIeC1Rl3NBE40gtEbl1wecxDz/\nJXYy1Ykm/LRRc20c6NAn9UyV2OT+Wt6xixyLfBWJgZMwBLFlrQIB3ys4St19\nN0CnlLXtmNIR/92k5dCu24TQG+S4diipjsjVyuBUYINCw2BxC+5/Eq0/xMz+\nocO+596gUL6PABk104HXiJSzPXFLSKv/GI9IaOSapQCAATTn1B/FoSwzEi8Y\nzSTe\r\n=Gb7n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"68026af9afa7a10d6335e87b6156cfa69f0a732c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.16-renovate-non-major-68026af9afa7a10d6335e87b6156cfa69f0a732c_1607368140037_0.03657120280391313","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.17-renovate-non-major-bd7cf3766fac42141dd7b08e010eaad5ca8045fd":{"name":"@balena/jellyfish-sync","version":"3.1.17-renovate-non-major-bd7cf3766fac42141dd7b08e010eaad5ca8045fd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.17-renovate-non-major-bd7cf3766fac42141dd7b08e010eaad5ca8045fd","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"db7578efc4319f3b42251075fa72470fc70cbd46","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.17-renovate-non-major-bd7cf3766fac42141dd7b08e010eaad5ca8045fd.tgz","fileCount":28,"integrity":"sha512-dlk4gG3Aab1Z4e5S1bsY/RyzYpTT10PGvEcCXuwO0+AB7cKrQ5JLFncwK4nrpInqxi+QTYoO6dXV7qJlk6SxHA==","signatures":[{"sig":"MEUCIE4pJuWGXtiQ9DBis1dSRvyWL1xYPN+UbhIM9Npnd4gvAiEAjaYE0mnqTgbQajQArSCQExGQfZ14gVC2hqA96nNmPOA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzn6CCRA9TVsSAnZWagAA9gUP/R59MEtZIFvkKSN20mh1\ndfEmQGNDisYh7tjybODH9qnQKC7oE4wl7vXQj1EWhnwZLlbVDcQYV64rnXWX\n/J9rggTjGDtzSEPvt3gfLgW8iG35mWHRyHMXU8kXblruN+w49tzqEurSRh44\nLL+kqK59ole1B/j+xsh0BXJ6d2luMi0+x5ovRDZ46bp8+0i/faLhihmmfOjY\nEBIpWhFmFwa3my/LKErpml/0b/jggM8lISM7C0Bi/RZhGrPlCtteNrP3sJHp\nyXXxfc9RVxcJgF8E9tBr4hTVy44o37eMIHRk0kojLFuerLD8315Ffr9NR8t6\nRshjasygcvJLRwJrvGP82XCB0LHEoIM0NlkQ2nee3vlPeE3ukm92bFa/3EhA\nUe4gUPm1I7BpveUOO6dXGE6M/rVo5bwgTg3oclev8jL9rNOM/DV3S4qSB/Et\nY7kf4XYNG2kVztfV84/MwJPt4AWgeFx2XHlUL7+n6Tv/fS+RbcH9WHFP7CNi\nS0EAP58C7t/AF5mCeS9QoDMXKQy829nCAFUMFyYTX4yTwLq5gUoz4jfYMT9K\nM3bB4mWYwxDvGefiLSYCAev7EKmsKt0UXIiSYsLSpMJ7FU5oWHEYSmY/ZOTu\nHhLCvuQAMH8XfU+bL5LQFEDqxGBqyz6WfKEutS1CfxN3qrmGsO8fBTLE4sNz\nkY6W\r\n=IwMw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bd7cf3766fac42141dd7b08e010eaad5ca8045fd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.17-renovate-non-major-bd7cf3766fac42141dd7b08e010eaad5ca8045fd_1607368322421_0.20042716829243923","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.17":{"name":"@balena/jellyfish-sync","version":"3.1.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.17","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b58bf4442b458a9fed88be3fe083a775530b855f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.17.tgz","fileCount":28,"integrity":"sha512-DOjpzerFw+n9h73qKSnRCB1nJ/PC77PdX7e7BRmq7su1Z1w0Tm9ZPoMuBmiArpMY9/7BECwupy2Bqv85oyNvuw==","signatures":[{"sig":"MEUCIQCS1oeWQwwvip3jD5VtUFzUydjkvfrJirVzElTfqXEelgIgdtOfk/RKK96k7USe4wMqbjFn0qoEMBTPA/DmarWQe8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270772,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzn+aCRA9TVsSAnZWagAA3w4P/AhHXhsTBnEbWIUdSBCt\ngcmQMRtRQVy8W21C7RoXckve3/jhX/vADuyu0dhXpNZPJ5dSQTN+/dEC8zSO\n/rnbr9YJLs4ON3xDunnjDa9KXEoVzknmLoWtwQKlEBuVlDuSg67TiR+PMSXi\ngqY+2vYfj332AjZjTaxAebVQ6U/P2GA0QQmrNLxr3pAzqDGqjofSEOnede4K\n6fc4xbORBgi91Ja6JAXHlsl9G5+s5RoEPH3iQPektgWa4p1aTBR25xkj9h75\nCXHsk1bx0jzLsKDNyPXI7Pmu7UZNpTtNjOP8tvQgQ0yO3uH8PLhR1lM9n+fe\nljbh7cn+lMKxonIxm7zFymct7T33oi3Y+sjwu1oK1A22pTV9wPQq3gVkcFjK\nGZisreSuX+tCm2szzwTydfufaeL7pDHYqvl5r54TlV2OiLCBtgqkY/zMtPf7\nT6/AWEaDy7Ldqa61xU4ACrn/HnKl8rS9lRXYpgFvaYlv5LVVh6M1rgqgZO3o\nmX4nXwUitNDHOntBE6ObSxOKiGTmiW7V8b0Aib0vpIQLNISUvftO0vs5RqRV\nhxPc2Gw1vHFNoHhjhTtRjNS/sDO1PfpOxSJulV2KEhrMqDeYpn/pjpoHIHbV\nK2i4mV5jzfeo1vho3l4fatX/Hlm2UZ/2MuFSVYn7V2vXCp0UeQ4iM+BckTH8\nghgZ\r\n=ryGN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e4b778b7d22aff853708dd576fd7003284fe0ba5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.17_1607368601942_0.5761537222573585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.18-add-husky-postinstall-29fcddaa981d1d55b241e54b59169ae30048e4ed":{"name":"@balena/jellyfish-sync","version":"3.1.18-add-husky-postinstall-29fcddaa981d1d55b241e54b59169ae30048e4ed","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.18-add-husky-postinstall-29fcddaa981d1d55b241e54b59169ae30048e4ed","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72aceba6d11c0c16d5479606d453bad920663467","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.18-add-husky-postinstall-29fcddaa981d1d55b241e54b59169ae30048e4ed.tgz","fileCount":28,"integrity":"sha512-xGPyfPq0aHLwgcvYCWe+9+WhMdBe/f+4DI7vpeuHNRIIY5nbZAF9knFFXBZs9WeIYIOW/6GOt1G3VZfBQVdMTw==","signatures":[{"sig":"MEUCIQDvxqFVfE4v/PT0vZ2vcFiQJSvJUVDh8eVJAvh/Qd1ObwIgKDAEHnk/SeKTFoZFGz8ZEdCCxJut04plK4mA8twBxHk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270983,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfzuntCRA9TVsSAnZWagAAiXwQAIHDenyJ2PHnrj52LpdN\n7y5sFI+ZoZHekE8wZAJQko1u4yopTEfB41HNR5JLx6vOcq2Z8IDVH+OBmkEw\nYDcpM2DnWiZDSY8IOvFoHKBe31g8APZFTah45RNecpY6BwRq0yEORG5HIhFP\nG5iPLeintST8PT4C450FK1Au8wJ/rpac5rHPam7sW69zcoKpoQjsY+XgxBCj\nRNHuLui3bDFKYb5u1A9j00MnkH/AD+y2dmFMAXFafcyd0r0ZapPvueJIQOcg\nsCIZU7241uCRGzEvS5Hv2GgZ4ZRcJKY7N3iik/XnIbKEsaY5jVHIwWryYx5h\nnTWvtY0SqEp5DOTDJOVmPjGOybRKVrBXB2gSuGn8KVFZQfYFnbsgdAXySjO7\nijfjiwP673U6M1nkh4xZwxiSTktZFRupQG3Fk1RSM0WRzOT8OyQruXhkGwXh\nZQSOgMEU5lw4unIO8Ux/QV8AdfDUqCfOsaZaJKfJiN2XtDpwfdR8PqLl7629\nNVPhx2ly5avBGbR/wgMD0UGsQTeGY3aCKWBVDqFNjZs6wdxcYibjSYxBdDD9\ngoqKHP4oc0i1RHiiJaKw+M4atCUm7qr0hFoSPST2O67MLjMEeGI3PyQUW2YT\nr+GVs0V7Kt69LUpzbUNbYHgraSVLQ0hnfAtcWg4FPAMml6nZW5MJj2soHCr1\nr1AG\r\n=/k1g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"29fcddaa981d1d55b241e54b59169ae30048e4ed","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.18-add-husky-postinstall-29fcddaa981d1d55b241e54b59169ae30048e4ed_1607395820568_0.7727875232945423","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.18":{"name":"@balena/jellyfish-sync","version":"3.1.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.18","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4aec4e00faf4e4dca26e5ad8969f45364488c2fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.18.tgz","fileCount":28,"integrity":"sha512-Ot6cdJI6wshCvmC7newN49rQFf3H2glFlWTHEsWN79/g9iWzYtuiEgCjWMkTGHTfJTJDJUmQjmIieBcrX0lyCA==","signatures":[{"sig":"MEUCIHOPDbjVvEJOO8K+ZhdwtBykZrPTel5gXesejtFYYzvEAiEAkZs5nrgVDfrRwxBlpi1C7yjXgbpuOzmKYGG12nMEGAk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz1MrCRA9TVsSAnZWagAADL8P+QCkiDlVWDLDp7MolRGF\nwacOkVu9+JvC7clDEs5deX5nPweHcV12o5bTvbEtqR6x3z9EoZ2+JYEVtOQh\nYobfPDle/IeSXMdDaS+BK6Oj2JX+cr5FVHtVv57ngNDlvalL49blggOqhvxl\nL1IbLWyXGwX+g1o+bCilv5hY4w5ezFwCWH2YEaEQn4vaaTBWuOcM2MdGbrkT\nM3jHKWkY3UQqR44qk/TuMCwSvWVlmMIxgFPWKPkKoLXxVBVsqGQg2brV87/P\nmbrTn+nl+hmMAtv7uF+AU3w+vcWJ5WeEKN+LOKJzUOKtnnuByZcgupr7N2Sm\nyauHxwAq8ik9BKMyaS6SQPP8G2/0v/wyVCDQX8kp8e+XbxNWQJSuD81Bp6kS\nML00CpugWK/1lOrQc4KiW+2b4k1bWU+BPaP9dTkcskfbaVRWwQvw1rpM2Y2F\na1X0YOReq1rInVlu11AF0dXumYRVXhMdl2NH8vVHBvYRyAwQ45mfneTddj/+\narOTq6j6hUm2WyKlAWP0T6Z3NAcmASGP2XsphytZ2YSmWmWSX9QAl+onVv87\nlXDyQpQmD6YQntwsLIMRjZgzwnnxcyPHxHFPDBc2XkSUrIq5PqanXJGNoKGa\ne5OAbh2VmLYB9pCSP3tMZ8DBptW+ELoFDYmJogdRSqAGVF8wOZhVoKRaQPJ3\npfoz\r\n=Fvct\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ad6efc68903dfff8ac4fdee9aa5bdd6701b1c2e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.3"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.18_1607422762297_0.6339441684639746","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.19-renovate-non-major-5f6c56fc263794ffa13ea3af03ec77c23e4de6b6":{"name":"@balena/jellyfish-sync","version":"3.1.19-renovate-non-major-5f6c56fc263794ffa13ea3af03ec77c23e4de6b6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.19-renovate-non-major-5f6c56fc263794ffa13ea3af03ec77c23e4de6b6","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"716e3fb3ab4d5052cb20a2e442d47f96b258e0ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.19-renovate-non-major-5f6c56fc263794ffa13ea3af03ec77c23e4de6b6.tgz","fileCount":28,"integrity":"sha512-SymOQBUK00YvcgUQEqNybY1njIE8opHrkGtGYZe2GjTjsBL1B9eF8Es4nZOUFAoD56JPK/KxxPQFPW+br+gsWg==","signatures":[{"sig":"MEQCIENlwSesh/TMef2Se0wYnUpTGaRw3GCc5SnZuqD9pLfkAiAq2StNJbMkdAKVDQsgFlK4Flq1AkOmLalCgyrx7jNwUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz1RRCRA9TVsSAnZWagAAVkoQAJ/qoLSZdpfBfxg2XCwa\neC5DkuU/yxMtKlIpaFilp+Rlo0y5I5hT6oTHLsB4WEp1Lr1oMDKjzAWboQgl\nO1VWNcrlP257gGVqyZ1pjGcLzKexJKostJL5m5syGPClMZ+RRq+t4Q0b7UIN\nwGEwgrt9fFpwOP40nPIfWrE59+dvMD3lab/XjzBql1tMcFsnU3MB6Luxedpv\nQ7qyI257DDf7LhnpNHMNXg53L2F4vjCQNGjL7T4HHgqx9VelxemkR4DiMEvI\n8IUHfN8MWHFgoldO7ffQXG1WHLuwIB//QU16JPu8+yWu4KLGV4VV+RcLBmEM\nZ0VNbtzS4a9FiaKz2EFz7jgISXRoY/gSBnND7BClDRyJqWpzKh0Qj9M7xQ5h\nRm328i+oh3/rww8y2XejPSqnySglW7WGh1cuLzt78xU5/otPwnyu+I2je4vd\nxl3BK7qjWH6vtYoF/m5dGODMHmuQbha/GqmRVjidpIGlwdEHdmAF2I/JQ0UH\nwyHJZujBt22cChQGZk9pxPGm84XJ/c1UYXiDKlGcbfoXwnutvqfTeoDqQFLN\nw480unj6rcke10V5wAnBb2+dXY+hIGKLhTiJNbCZOMHNOrstjZWala3h6zKe\nkYdNXs7+MyGviYw7tE5atrufUTo9+m3niNZDourFG0FxB7jjK6UTjaRMnFze\ndCQS\r\n=Mx5m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5f6c56fc263794ffa13ea3af03ec77c23e4de6b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.186","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.19-renovate-non-major-5f6c56fc263794ffa13ea3af03ec77c23e4de6b6_1607423057232_0.10214064793719979","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.19-renovate-non-major-f348aa9a32546e28de03f8738b48435305d08238":{"name":"@balena/jellyfish-sync","version":"3.1.19-renovate-non-major-f348aa9a32546e28de03f8738b48435305d08238","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.19-renovate-non-major-f348aa9a32546e28de03f8738b48435305d08238","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d15e648d8f41299f527394e219d9735a608da3d7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.19-renovate-non-major-f348aa9a32546e28de03f8738b48435305d08238.tgz","fileCount":28,"integrity":"sha512-KkuBjU4GfIGuKIG9RwKXprfFhgZP2bs/Xg3ILDZW1I4c7i6LKr7xRS9BE5yuLXZy45Tcw9URf007hewXvvA42A==","signatures":[{"sig":"MEQCIFrbuQZozRX5q7EULMGDEWVf69RX3NVKlKrtm9io8M25AiBDz1THEUq2kS5UhdAreOQDi9HJ8+Eq2PK680jOyHoE2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz1VzCRA9TVsSAnZWagAAd4IP/153eoMBfYzzG3Yv2C3S\nGclS6qcJquw+dg3SQNwMK/WNhIeg1eIhigDLU3/dnFG5Tj2lyYLf6oErXMGr\noAj5n3IDFh9CnPUhCPWUcQwA07/eT2qS3bnz1U6+U0Nz9snTehvHmZoikNei\nIr0H00BjekhSZVq/8JRNjvqV9z58lkT+11ZwN6Aqe9hioizTNEI2NqwWM15h\nQrbO9DGEqJ0cpDrhfanxO3GNOGywanHBNM+o02JfnCe9untCC1j+3chd2B5g\nZNOYZD1/M8b3S5HcYS8RhNFOoGfQPhYr+WGsCcnvb+9953fVSeyY0uUKHWek\n9pgu0580D8HHCYvD1C/aflXcIk9T83AfkHAoP89lyxYvrckD7VwD//Zf92xk\nngtCmXHfnjI5N57mEh9yvkq8WpmZGim4SJdM+NvtS2au4rBJFwIgDToxJUzY\nd/eoL7IzCBr46o2jCb2WufMult6PkzSBi7oNebBw9/Nr3Sbv8BuTSLotVF5b\n7h0lnvQx5Y+ZINeBYWbSDlsdB1YqW3RlDGqJ9kQdkOPSIqjFI00IEyqoDtnR\nJQFUre5kI6KZliw9OPxxaTBJZYnUJztV/4ZGN4gDeWzTbhJ8bq84GUTg8V82\nnwPYre9ZsggwBl9NvXBZvS/StjA7qadKD+W10wzp2PZ3zdc/FITNc6rpfXpA\n83iX\r\n=VK+Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f348aa9a32546e28de03f8738b48435305d08238","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.187","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.19-renovate-non-major-f348aa9a32546e28de03f8738b48435305d08238_1607423347008_0.32971525902759957","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.19":{"name":"@balena/jellyfish-sync","version":"3.1.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.19","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"898f977ea122e571ea82f9dac1b947384ca2aa58","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.19.tgz","fileCount":28,"integrity":"sha512-auM8ht+InE48/ynEHBe0jnMND8WAXqVXMb5NSnWl8CId6sEi/LzhGXklt/+iVxAJgPZciJHj4ghFBem8XwdL9g==","signatures":[{"sig":"MEUCIQC7xWIgyPUdIrasp314flXO7s5AeUmVCxwClsn5nmSyKQIgfR4qjXRBy4tLqP/rdLOA9ST1eq1QDFQ3ZdHwgGhv/zM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":270989,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz1gOCRA9TVsSAnZWagAAaagP/3Mkffep8v/E3ECntaQ3\nwNsUkDXMUVcEHRSp2ObHTsDcjFt9MAyjGtx0z3hYWnbvhfRvmZ/Q2x9u/x5U\nab5OjHSVztnmeACYl24Hbb39ds+tpopq/XphnfTJgE4ZkdAUgVXWfes/zfv7\nmkNPrkgQp/EJ7wKxMuS6PrAwaLHFH4J+duejT7iqsktxvSYNrF2CZo5tpOZh\nQNYQMsWAxmiAQ08ioIrgX01QuG6wfYAIOy4KQuDc3JeBtGVBRBScu3pIzg5X\nkYflxKpoeGgrNX/yi0M9PUVBHr979uyKHoEYwuQPwvIOWJB5cKXzfXjKe3jc\nZd+NFNEbGVSwz+gUtZiubt3HBI7vJxpAnRbvAnAbxY6jAUBCY/1NIsEmFQPE\nXJ2EKXlIFx4+3RcJDhyGGxUDTxGe2dwDn58u5rGL5gh6UMeLJhArQwTH2o0x\n5Nx8UJeYSdu2S52coTR92QGFIVzC0jR65COR+rVyMbF4sMEG7PlEHfYA4LwK\nFPK9yuCFJC6UmTor2Yi3zq+YY8thpB2mm7V3rdq9LniA1bpRjp4GsW/V1Ipg\n0t/Mxhxi5yLCPe+3CMUINIR2YVX+Jiw4q+NfE2WhhoY9KRYnz0VVTk1twEQR\nYcuNvO5/JpS70VJBBaeCqAmhddQPUefmnwJ6DVWyU6c0hMQtrYyEr37NHH6Y\nmcAW\r\n=kJix\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5840873939eb21d7dbbc9eed9c42a7badbba59ef","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.35","@balena/jellyfish-assert":"^1.0.33","@balena/jellyfish-metrics":"^0.0.187","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.19_1607424013808_0.2615580844311918","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.20-renovate-non-major-b97b92dc637a88e01c7e54b43c0797e641228eb7":{"name":"@balena/jellyfish-sync","version":"3.1.20-renovate-non-major-b97b92dc637a88e01c7e54b43c0797e641228eb7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.20-renovate-non-major-b97b92dc637a88e01c7e54b43c0797e641228eb7","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1f5a2d5093ef293d279a2e4503f950c3fcef1238","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.20-renovate-non-major-b97b92dc637a88e01c7e54b43c0797e641228eb7.tgz","fileCount":28,"integrity":"sha512-kWppV/EUfiS3KcOwpv3TRxKSNW7XnsRP3gxy+HrQj0gX1mWsHRuKcENVce0aUmG/HP/qjAdYHatsLva0Lr8+pQ==","signatures":[{"sig":"MEUCIQDJ+hBpeWuFezA8IG0Mcq2WuTZb7Cx4GjcIlluoIAQxXAIgd8x7ZcMrI4KvNcUBpxiVlWTWDtE90s2HJxmKhZGh2kA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271118,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz1mVCRA9TVsSAnZWagAAFF8P/1nl/Cd1qZn0O4FMe/DN\njgeZddkfWIKfjRRG1Rh3UaOMN/H5d29ixgTBRPH7upPA4GzxpmXHH8HE7egA\nJ7b4yW4IxOtFcPu+u9fOD9RhYl3bihCqlnFg1owg+IpqnkDTa8ywdgZE/XYM\nuKGUjSjjItknkc+xu7zRpL5J4SKX+YrN4Bw0JIaFzWmwC4X442aL7L1k47di\ny03RFNHwWIMDBok0f8SMHl/UbhKSdmZ2LrsafaBcOEnsqs0Yr2cuz1Fe63++\nAeZVpkU2kXYdSBvNoLFp60sUMffWpvFIkU9nMHBDnwTO5z0IFIWxntDWuQxz\nf6fk2IuNeeCEC2lmjxZeoLI/OccYBy2g7IOi90/FPCQCYmUxMz/aUw4KHHDZ\nipBEZUN7Fg7cAFPbkvSKBXcyb2MVqggSCsw3J+ueKmCo/OBHiLIc+mAbq9Xg\nY01tq8xUL1KZ//iROQNPVchEPxUWqaw6BbtwY3VVD15ZBzTZiEReGXGTWz6I\nerq+eRreI7nM+NIze9glRjOg0NNhrsYhuqTqCDh2j8As5897I8gY9OssUPKt\nTBLGAHoYad0lMuLuDR2fyU7vUUkeZcm3Z9p3TvDbo/ZWucQfuPLQjzWy6WyJ\ninxuMtt9EmM0XMrf5JgOPMabb8pdtMSHwutTlTmEOxgoE43Rf/NavwOJrnlt\ng6of\r\n=/N+o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b97b92dc637a88e01c7e54b43c0797e641228eb7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.36","@balena/jellyfish-assert":"^1.0.34","@balena/jellyfish-metrics":"^0.0.188","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.20-renovate-non-major-b97b92dc637a88e01c7e54b43c0797e641228eb7_1607424405466_0.5455923225952584","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.20":{"name":"@balena/jellyfish-sync","version":"3.1.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.20","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"af390bdd9d8f739d319e11ec7febc38accc32de5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.20.tgz","fileCount":28,"integrity":"sha512-IiMUaZu4MTUI5LOv7YG2v6dXZutukJjCUQkCIjRI3kflPUIEwkhmMbXPb4SWuP4NtOVBMyjrFbk2R/bkXZb0KA==","signatures":[{"sig":"MEYCIQD0QXsjcB3SU/OrC8RssYuB0lrTI57NjqvXojAZiR24AQIhAJjTbJp0uJXsGp1N4ZuDDF3npr97CEU4zTOADm/37yeU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz1pGCRA9TVsSAnZWagAAq1UP/3RhKMdpeZisVmngwKdS\nsDyzBzyGeGyKGMggb9sxTXrj1X6vWMsYUUm/BN2Rx1P/Ji15tB8I2J+VfF7S\nBwoNiTZwkvua2ar7H87ViiIDiULirGuEwbDm1lObAF4965258Vs7SXhCMScE\n68xrpQSkuJdr3QewVLuI1BAklhv/bgZ9GDgEVZhmP26+XRTO2oOUtKqNUOqb\nC+fNMSXYmdn0dTbSRYAsK+Fa9MUi+EJ917gXF9YHtvjCQMSn/ywz16uk0zXj\ndqBcVoNka+7NA+ZmL2smMFlfZ9Z9kZYuPXM8LMnBEJ66gBvHDc2ZjrkIuIHy\nb5V6Oj/ciFnLW0r2ax4o6YlgF+AmSQRo4pvHkG+n47oab0DHFJLLooaQhu90\nz4sThk2vDyR+tZc4Bh3Gafh0Lk+wZ7NZXDcuGRlf/LffTNn8ypdv3NMzkN7i\n+QVrL8OPRufikNpmp7lDRR5pzoLmJLFg4BGz1bG1HnR7f7kgivNlNExmtuys\n0pQV8B6G+q24SgSgSlPveJqXwhR+2Hci+n4mqewzbGjhUyf+JyQKWvDVFfDE\nIo/9fRr++aI0LBJrF/7gxP8xH+eAU9+2kbw6BMyynzDbBzi7NklaBUQ5hQpw\nT2KClxLeXtN85dm1riz3HqahVTVfruEPZ6GVE3wK6Ufg4IZrumoWu01sp7PQ\nA/B+\r\n=gvwP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"204690d1d182b3be53951712de53b3fbd0dd0bbc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.36","@balena/jellyfish-assert":"^1.0.34","@balena/jellyfish-metrics":"^0.0.188","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.20_1607424581764_0.6256988912700931","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.21-renovate-non-major-2997efd9cb672643cf92afd7e2b0d57c57ac253c":{"name":"@balena/jellyfish-sync","version":"3.1.21-renovate-non-major-2997efd9cb672643cf92afd7e2b0d57c57ac253c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.21-renovate-non-major-2997efd9cb672643cf92afd7e2b0d57c57ac253c","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0caff3eb67d848124b37c8a53f4549ece76a5c0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.21-renovate-non-major-2997efd9cb672643cf92afd7e2b0d57c57ac253c.tgz","fileCount":28,"integrity":"sha512-Icw8qJmfAmo9Kxc1Cc8YS9Ro7335VCw9LO7hK5oS3pSr3u6Kv0Ra9ik72580Ecp6Y+9b7Dvgb2BuLB2eErzdLg==","signatures":[{"sig":"MEQCIGlN7r96kY/kxBLaiNq6KjOmG5WHNNLp8Owxe8Vxoyr8AiB80zNwtMkSsP5XH8Q4qTCfZ4e0gm55EIM5UcN0+Lpocg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz2W7CRA9TVsSAnZWagAAQtUP/A69/dhwMYO5Nh0YKNyV\nc0YkVOd1sfxGmsNWpMaqxV1l03EuHGoCv3dKoPXjuwdWTE2HkZHJ5bhicApV\nJJnMjrb9dVys1Op/C7V12bOClpr3fy9PHQNAdg/lAdg1xIglzBQdcjSeq19r\nsYwiOF+AI8O0jPGius1FbYisiYAXlogf5X5AgYk+d8Bys7C2xotZau08nO7s\nNQKd4Jk9YSAObc9yuVOOMqPFc8m8D6J2iGVAOT+h0m1+UtRjiZ0tygGGPXM3\nl8U3raVZKIH5ChM9dBV4ZIqRkhpsLptkD5IQWfLkeTGV8YjtaomsXU7DkFBG\nThMltWNyvy++7cvqHhckDBiKJ7rjjkFWw3omkN7sekNFcTbhHXNdovUm/QRv\nUWFPGwD/5gd0hzjVCxfZeGTBk5gxcB/icGaxI9FjcZ1pW0V8lWk8ew/ARcr9\ng7ib9uTzGHdfcNVwbt9fQ63QAf+/zeFCk445EzLIZcZ0dkOltjUxV/CW5CyX\nkkfE3ilBi4UFQJViy2B7PqkyofUaMPizqs4eNrxhcNZUnUuXLF+W29JqeItH\n/4kKQpzdEshE4hB6pTZXB5rhOe7EzWA3Sy06j6l7i5V5tHOLyxrpuUKAliJ+\nVfLYuy9IqkMrkrAnfJMxtX3NstTfBsuvpCFe266pFDZx4rW8Du8TBJ41MYKJ\nqBXS\r\n=lEDJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2997efd9cb672643cf92afd7e2b0d57c57ac253c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.36","@balena/jellyfish-assert":"^1.0.34","@balena/jellyfish-metrics":"^0.0.189","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.21-renovate-non-major-2997efd9cb672643cf92afd7e2b0d57c57ac253c_1607427514472_0.05843613304058093","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.21":{"name":"@balena/jellyfish-sync","version":"3.1.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.21","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"16778e23bcdcf7f672d98c4483d6ebf8c7905d5e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.21.tgz","fileCount":28,"integrity":"sha512-ViklK88ZqivwOya/ZvkjKDvU/ouReajy4capj3liOnPwZOSdsntVhUOqHxT8ZkLXb2/WYToYMGOjO3aXt6/Fig==","signatures":[{"sig":"MEQCIHBfo1btqJQiUkZgM6v48hWpNuMWYU4dB5In5EAcwtRCAiB11POji09VYd6JlVJGIABl4il8aX4awUZhc2I+bzxJGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfz2Z4CRA9TVsSAnZWagAANMgP/iFJkXm2pMBvZUkJ6XSr\n2iDokH1ptF4iI/v8ewUXpza96FKCawVy1Nboti4FdzZ+d1+ZN2eY9hNUsNRw\nPRwECbdLNiOCG2Bp5kv9ZutriNCOtmGHcqpXscPGoDU0hxNfwWDEvl/BxlN6\nDOGaCV9cI6ZknbY4Oi+PLmGL/RIcfrvvTTWc09sftFqmEo7L9LeYFZOa6STK\ntad9f51FXN0mxJOfC21KDIuA6MrA59gNnSTVTR3oYkFVlw/fRdJJSFLo2CbS\nuMUjsruTKketoqCn4DYJUZ7zfdk73LJ/ZE2kJIXCPyhEybMoLQ2va63XNB02\n6Ws1ubLwNg1pscjuDsaOBS24ce/OI4+Ea2b2DF3QHTXvTaVHp8vqpylBn71x\ncjqmzVq2zmaPZG/MZh8afogNaxyJI8CjA/vAaMneWE8TkK/pRUDGtEN1q96p\nVT3S2gIL03AE/Uz5V4ToGVIL9Loy1ZVRC/zsBW2lrtg0BXetpTSv4w8pvbWI\nnO5veL0Ri6x6mp+r3XkPs5vrT1el7Q/UU9YvgiBpSGeUFZPi9vL+L1gbRI97\nnksaLW7gptjXvlRRIeW4sf28zUljw+Ffu1j3p0O1aGNziYmG1GHx/jVXOORD\nI7uYKXjZKWTniz6boSnMmzNBNhl5pd5FSgE5q69l0g8tJUc4BI5NJdhsrv8P\n4Qfp\r\n=2U3h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f82016b5e594b1e6beb22bee713b8ed09c9d6cf9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.4","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.36","@balena/jellyfish-assert":"^1.0.34","@balena/jellyfish-metrics":"^0.0.189","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.21_1607427703841_0.5194585095830941","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.22-renovate-non-major-4e2a35adacebedc864d5a56591f64393406ac6b3":{"name":"@balena/jellyfish-sync","version":"3.1.22-renovate-non-major-4e2a35adacebedc864d5a56591f64393406ac6b3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.22-renovate-non-major-4e2a35adacebedc864d5a56591f64393406ac6b3","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3516470238782f7bfe3c254157ce037015793beb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.22-renovate-non-major-4e2a35adacebedc864d5a56591f64393406ac6b3.tgz","fileCount":28,"integrity":"sha512-4WiFlwqZzhKQKG3xWAypm+MxRVlx5UK8kmW3oNhd4g7yCIxl+6LdqW8ZoK+G1J9EDSc18CygGJav5+JsewCOSA==","signatures":[{"sig":"MEUCIQDKjdZsJAhmhJ/tXvQEEhhTxNJkg5U+3r712WJKLMytVAIgOHYSjSkRAEO2bNIRsBLXV3m1osKrmT8xJPiHyAOpFSM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0QW3CRA9TVsSAnZWagAAioQP/3Q/CSRJkQM3VPiaGePs\nBV963gRaFuRpBFXI4HGBA/1YPjaSNZJkiuIB0DnCgdcz08txHb6tMdLLx+Rn\n/zimET5uPmajUi4N5RKNgUUK2IKH/8xflxidNz//7R7R+ac1TCrMg9dcvA7F\nPfhXgZxBeThzF7+sg8JwDqozYllZMKwchcIBcwgMyh+Lq/nLfuOkf8fI5Wr9\n6M2lXT6VWYmgOnptzOuO+w8uGHbueU9ci1bpkQK2AVYSE8ISDMdYaUt6wKUD\n66U1CEaP3KfRI/paEkj2Zp4HoACLtyrz2EWC2Gh3Sfu3vPlAFfjE+5a57FdA\n4ZJf12Ud0FvmbDWfeGcIuBxinlLSWf9+4m2yiaBe2oaYhTKlLLonIz7HohVz\n/HLEH2t9cHYBZqKL7VADzd/BqgMXfX3hnL1iuib/TnvZwRV3cf8m4PtqNYDF\nB1wjhL1pid/EGvJf+zx8kVSNwFkYcW8nDDzsIL1YUBtFnjPEGAFYtUXgS3fP\ncaogMNIszNsz1IBllvMsMsJzZo5i2F91ZEdUgvZszg5EdV7uF8DWo74gBvKT\nRARQlUj4tQAx1DlPtQWs+OjMQAxfDtVxZVtBM+lTHZ46JClCnhQKTbejE+MD\n3cqqx5ka0Ux867gvBZ9l9ieCcuRiwysVFiHx6Nf6vXXl6+Kb2plv61ZmHPYr\nju5Z\r\n=bMSA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4e2a35adacebedc864d5a56591f64393406ac6b3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.190","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.22-renovate-non-major-4e2a35adacebedc864d5a56591f64393406ac6b3_1607534007342_0.2943259573927941","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.22":{"name":"@balena/jellyfish-sync","version":"3.1.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.22","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"675b8b1375892de7787a323ef82b07d44f1faa98","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.22.tgz","fileCount":28,"integrity":"sha512-vhH13zHxQ3gV4+7xDC7D//dtTblqwGRBC+0qFfMC4O7/uQa/10ja1z+5RETKdZ7vt/7AjrlSov9wB5pvQK5a7A==","signatures":[{"sig":"MEUCIHjF9lEbZ8vLZqup2rJSUFHPO/+2HUIkDehExNotlFadAiEA5z5Qe0E1c67of+MPBkCng7KZsp3SA2IkDk8gSjGlC1I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0QacCRA9TVsSAnZWagAAzN0P/2nbYT0TNP6Zu37UN0X4\nwFiADdqXzXDh/21HbggqXIHLv+qOdf6g0Teimw7/5KboGZE34yWjHAy7tH4Y\nubCmwSbEUaAA5bS3mj+F0o57BSswDBtILd5yJSASk0LzrzcS6WBFBxx0g8Wb\nr1hJuWiQWeP3X9WwK8BwuzCjWWiepozDq0lAwJYfhEWQeJSX/Rv+a2SgPtji\nnkrclLwfxwY3rwWq5ZcCLOyuc+jCR1buSMV4/+JXpi9ZXA/EBGzfbbC6YSMT\n1+R++Sb/bpFVQVhkvkMEsf7c3wUC30GiLQLECXKY9GUFisqsig6OukaBywxQ\nfviNAjXAjigtNTrX6484gXULCS60gOL3J6H2wNhq8TIkrgOtjdg1CHIF98WX\nzTX5b80CX4Lcx48JlyFbN+XeeMYLkZ7o8x36ULK5CdIsLwxLCa9+dLZywz3K\nEMoPDM+80rERdTDgz3OzClnpu4VHa29/k6coRUouaog8Q8qbvvFtE0EhByW6\nCLmfbTpHkVS4oDqWMoqr2kjHXLa85VQXh9ZBbgeByYBpxQ4An6XgS4oArJUF\nmTM1SHDsaCQqqaYCpd0NrWqFOM0PPIoMTXK2RJ/xvkoZs39GPsGYkKmc6QcI\nkajTZ2tGluCEZBkAsAuh8I2VYPECuqzSJtRmPyz52/gKWoob2lu166soRyLv\nN/4l\r\n=4QHF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4f480a38f7a86d50025daf24174b11ed3a0ca079","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.190","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.22_1607534235801_0.3947829812037156","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.23-eslintrc-root-true-b27f534c4069cb0b0908d7d8f23e36801f3d2a86":{"name":"@balena/jellyfish-sync","version":"3.1.23-eslintrc-root-true-b27f534c4069cb0b0908d7d8f23e36801f3d2a86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.23-eslintrc-root-true-b27f534c4069cb0b0908d7d8f23e36801f3d2a86","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5230abd54579ef67466436e239c4b6f5d21b514","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.23-eslintrc-root-true-b27f534c4069cb0b0908d7d8f23e36801f3d2a86.tgz","fileCount":28,"integrity":"sha512-pJ9ZF2r3mn7ORq3p4XtVbVVTdd1koqzE2t6GV+pV4Uhz5MQ78jpFGvBBGOzp2rYLmQXSf2JTVEHoFvMtRvv0pA==","signatures":[{"sig":"MEQCIEQhgcgtASqQtqqcIttFQTsk8ZjMwuPtTLdKhwTlH8CSAiA2tvLZxQSaiXjTYYU1nrwqoyNlIztIbCCKQhgxD7gn3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0bxFCRA9TVsSAnZWagAAkQAP/34C0kaoUkwVsXgA9Gu2\nSvqWua0Hoola0lbORPcF8H+LZMajyq+oP2nNhgyYPfsBDw+ex63Zyy2dAwou\nbXjKvPaL3seXFEUJphFSMUAaRbGoyPkc8wDFSdWm9LRzPE9GBiWduDeSnY4a\nIch0Q+XrP4ouqiHJGp5VOwm/D69a8ZUY3Lon+wwFU0AFXi1M2b2mMvgw+Sb8\nseoslKRe9ihyNFmcdkcoC3HIV4jVUqoAFAEfbTvC5sM9WG3asfpbjJYuaNEK\nLBG/9gJWsh+/MOs5R88u3MI6Vr4giVTqLySkHtucqj12Up3VB1t2A/eSMaRp\nd9z9MZNkgSKWBC+K+ZB2JfsXN4HJHpKZ1dpb/mKGzy9KkTCzAvb7JVFHdPmp\nOJ9ribLO16zrVhdUkCBoq8OlDRUMBWzfkIkwf0uFw3CPT7maeiVjnSsk69Jx\nMTtaPPyrciWj06b4Iimbl6NMSXsMYBqbfaNOAEKQenp7DOpTpv277lgSI9FL\nnWtdbT6ojWezTYfjZU1KItAY8er8ZYDojT06sxnIiIKxtDMMjrH4UlsyapX2\nZa22KYfgR3x6lYpoWDqR1B52GoudJtLFwbaA2WE2OPtUdLcEqClrmsvqTQxY\neIND1K93IVmTUCkBwsxWgognQupzu2xStoRcUxxmDBqIVHeWN2K4BqumJoRJ\n91vt\r\n=GXcL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b27f534c4069cb0b0908d7d8f23e36801f3d2a86","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.190","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.23-eslintrc-root-true-b27f534c4069cb0b0908d7d8f23e36801f3d2a86_1607580740871_0.027168529668595065","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.23":{"name":"@balena/jellyfish-sync","version":"3.1.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.23","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"405b7d9562aba4fa6f1a30efe2030e2a428ef93b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.23.tgz","fileCount":28,"integrity":"sha512-+NaVz98Heu96B16wFrbDkuFZWaQRqEw9txdWoEJSMmADUG1+evzUP7FFdBc/PiE826UIfqUYKCVkKPQi0R79sg==","signatures":[{"sig":"MEYCIQDl+HXO4tFFfrsTQpOyn4FfoP3neEdDjMQLh4x113gU7wIhALRZrEobGlwL5ClAa8faPiqFOB3LGy0nECIIcvEQoz1a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0b0yCRA9TVsSAnZWagAAUoEP/13nKQJXHXWmAvhkdW01\nsiizxPFVVJAXUBH1RY7pno+rE0RCUtv0s+NloH4FvjcbWVF9QrX2cN87WDv/\nsANlcVSmTmaXWO3wQmjE2kuN6FVk5zMezl8EqKZUYL3k+Z34AVz8CN4SbRnO\nZdKeXFWA6T+E9G/sqyI2IBnRzTcYYVDvMeRNrvn8PYjzFIXNCRcgCRBNILnm\n9tP+nDQiJNH1A3qYVyC5YOPk1Xets/FbdW3HmiRTQrGZLqQEVajdLRwxArl5\ndqf+cDTsiU7qw0W3F++eYmZsL4zbETGoliXUlFheI6hoynyzbSx0y0FYXQcg\n9omJsFYDo91/s8WzeNQbQnzujnMYTYqFoWRpWNBid8aD4tU4K2JQjG7uLcNT\nia/zS4lMfQjB0YRqboUCyzhJKTEiWaTew14S2JF8tmqelOgnoXm5FebDHOfH\np9Z1jZPlhA30iIymJ9LTAnF3teox/v0fJbIiPQLrnw8xarIhmMKsFxMWlxOq\naHh53NewNbIRVxuX+EMXeBGdFBTdDE5OZCgwg2IT5c61Mcf1SegUir7+GCsw\nwcYMTly+xvJw9G5hzrwVSnfN9zUn0kckgj3arRy0SkwbGbzf4DcxH5GiTGqR\nddZj0B8wSXcuZ9Y5SAV4B5iBy9IVajTED8kXBODZZTf4NezNwTf3r7hHhwa+\n+K/F\r\n=9Wy0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5c92f130f0b7200b977624ef6c5921fbea4ca41f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.190","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.23_1607580978119_0.15676736341430408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.24-renovate-non-major-06be4a103ffcd02cf958de56611bf8fd2a830d8d":{"name":"@balena/jellyfish-sync","version":"3.1.24-renovate-non-major-06be4a103ffcd02cf958de56611bf8fd2a830d8d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.24-renovate-non-major-06be4a103ffcd02cf958de56611bf8fd2a830d8d","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a85bebd130a8d2b6ad528a95e14e646696dd8cab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.24-renovate-non-major-06be4a103ffcd02cf958de56611bf8fd2a830d8d.tgz","fileCount":28,"integrity":"sha512-dUdVLXMQBhAQizEGSd8oVpsP9HZuegzJemaKUAF3QNdgIgckSHOiYFsSqfWj1SI0aQXox4Z/3tquFp+cJvIusg==","signatures":[{"sig":"MEYCIQDycUfvHiNrwPMWB3H3Giuzx/cloUceMteRyOQRO4iMpQIhAJg0Q36h1vbiTjMtflbGsnBrTGgvMc0ngnEDyfTHfrGk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0b5rCRA9TVsSAnZWagAADPwP/iJnEvpvJX3aWF4E6VBt\nLzxbeSV/UvQy90GQFQD65ZTa7DlP3wUaiQCwEKMPrttdV8YHPTmIZ3c2gbbO\n9jTHflYSaf/adBeHetlCPVK7lkyTw3A0qUKP3hlP20xssRkkN5s4OgPhWBZL\nJYl0/lVtL2G04Bgujg1qnq9umG9RbEq0K5fY3JVmxEIULCcDjzKtYk+NiNDD\n25q9IuBqigfNsWA4tgXpM2+dlx8jDffhDXMPQDmyOOVIvHMuYfdybR29261w\n5a33aIUuZ0R3R5TY+qeBe8L5h8Te8rWsJxGcbZDN52i5rEpdTbqferQrkw3u\nCnSFXCEILUDfuJ7LZnRzBrs3LcUP45knkCbatG1AWjpIa9bREdPu+tCoQkr/\nwv2UsZ9sAfh24AZjT09KgwKk4z5VR32eI9OJa/5J1J3gWURwREX2NknoGTdD\n8UVsnpeEm8N01yjzh4eqmeidys/uS0T2ccJ0U7YxDbtvgcdTaM7cNAzEYj2V\nzcqz5d9av3NfzwNdXXG9UKOQmASFcAUKJkScowHH3MEY467s7f8OuCM+LJFS\nTnj6/gLwY2mqketcXjZUg/xPJY2eOQjLe6o+1xj5aSQdJeFGsq4J1Ffx33RK\nPXZzW4QX7YjbuLfDYKsoeEHCJpwzQmDKhImGvyUg3SwMmyAsJGauzsRd1c2X\nWDvM\r\n=d7vx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"06be4a103ffcd02cf958de56611bf8fd2a830d8d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.191","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.24-renovate-non-major-06be4a103ffcd02cf958de56611bf8fd2a830d8d_1607581291061_0.4672311756342644","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.24":{"name":"@balena/jellyfish-sync","version":"3.1.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.24","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3f730b21e1345bfbdf42802eb60a419ad3518673","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.24.tgz","fileCount":28,"integrity":"sha512-lXThEbtRcto/ikkII/PdduYiuRn71LpEjZD5QWdpUhXbkGesX4u90wXdNvvO2iJnVapXGT+aHgRvDXGzdqBb+g==","signatures":[{"sig":"MEUCIQDypEpSIdKNQRRDiL0w2UsszYdifSDyVzRKpQuTV65vnAIgF31UR1wsNY9KteXHi81w0byC4kzf0VqmAhmJwfuv2Bk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0b9CCRA9TVsSAnZWagAAsh8P/07OJ09OkEn43OzVK90K\n5XzmgVuyDoBqTIdpAqdFMADTiU63m/vngNBSkXfPvHmTry09U0IBCLbVprje\ns5MOXoylPN71P2MNB+i5wXzMB3rBZU1pic4pBzvnKE+UDzxwvjZnG5CqD5S3\ngEnAiUm1/DEuo3ZqFS0IPXQ9T0Yl55CXwKWG7HGnZ9pdVTp7FIaFsZt4XLjh\nsOp9IjLH2xvzisytiTw0KWmUPYtyjIRj+8g501SLnGn9wey48I7GaBkofOu9\noZg8Jv4sEPrOd+j0VcHDiO2Bo3FuNSQlz2hVxXbOxklI94mpZY8xtysazNz4\nSrQMkER0HkqqL33sWjwZmEBH25U5tRnMxPGfJIeD8TrAthuaFAJU4xNp3sXH\ndHK5b6i79ZI4OuQJIJb4U+FG8mUvfZs2piRJy8D7DrdD0PvOkj+ZBpFBgDT7\nQp7aQg1dNd3TecLzpiHPueES+zwpGG2njRgyxZbt4CzDlE6emujhuApvd3bx\nH1Q8cWklLSXv/gCFwCaail5eNSSGlzXag6tpAYlZgFndVbAiDG4owHOkBhPt\nH5lvrNPmq8p5QY1AHRGBSlVUJwOt7qDdeVtXq8AY3rpErTaPs60PcGXB66Nf\n+iY2NT3Q9OU0aNxrA2RlNyEDqY66X2Cu/KInkUjTlxb1gWeTupvElrg9ExPE\nXr1Y\r\n=XIXT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"161ee9225af518e83b3b07a351b95d9cc3b8b85c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.191","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.4"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.24_1607581505438_0.9195877387589229","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.24-renovate-non-major-ac83cc3fdae84c8db70296555044e1e5e654fdb5":{"name":"@balena/jellyfish-sync","version":"3.1.24-renovate-non-major-ac83cc3fdae84c8db70296555044e1e5e654fdb5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.24-renovate-non-major-ac83cc3fdae84c8db70296555044e1e5e654fdb5","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"092d966d3b8eb493b4fefbdbf569366441cd3976","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.24-renovate-non-major-ac83cc3fdae84c8db70296555044e1e5e654fdb5.tgz","fileCount":28,"integrity":"sha512-i+MBwikCEHsDyEMfB4qayipKg4GQw9RyMmFHmd5OUIMie+S/pXIep7KIVbm+yZ4/qAXovXbyR33xuMzyv9ff7g==","signatures":[{"sig":"MEUCIQD36pCRjMIPN0Pmdc/3EoapThIfLYG1vlbJR3mAX4TkdAIgd/G9yixFp9eaWGpIK86BZieAU8qMOyMlYzxWiahpEqA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0b/yCRA9TVsSAnZWagAAOSMP+QGYnnDp5Yn0MX5pAz5e\nE6VEHChVd/XHdk3FTKMSmi3rhieoC/vYtFt/oSBAlObYowTXeqwRsYKzmZfz\nSWRNT1PJGTtT5Ty3ityJ5kIsTCKGIhGPw+Ypeca815G+Ql3QdEHZ7CHhOUkr\n5Xc/TwwftMziMC4MsbZC3kCvD/s6tjtCavXHZBPWN8ymLo0/tmUwEa8aGgvm\nFby2SxokUxASrEQS8+FyURrftPCCjSF0pdXlnSkR6fqS48r+Y+fjwfxE3v3d\nL+XtOkclwlQBeguIAoiRX43RshnvRwJV/CnM4g8Wlh7cXjstG+sp0kXoD5dh\nzciQdm9UlgY0TwjDNIUyR+HwQIVcUfapq3vZgHCa0lDJiecRWycTDOjieDWl\nlmPLg80Avfao9/IqlWNssMfRiiM3vBcf/eiqNSpxfRFVS7li45EVf/dbdJ/M\nSsve9bqgkgAgNtjgrH1kcVVIKWhRxw2htMaeY0rOwl81OUg3xIKaPzHS5grA\nU2x1f7uLY1kmJcLmC9Bkkld5TC3xlPEcpWKIBiQYc+Xs+xQFeEEjWNKVGNJn\n8LegjJjg2q82YWXqcaQDBgcOkmuWdhhT3t1fcRmgy/JyQ/lZHr8YEe/1p2sL\nXg5tUOB2lLFk9EO7+0OLSV50AIlyif06hyO0vTC0ak7DPyDkEYVz5jSDnt8S\nWNbH\r\n=ufFo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ac83cc3fdae84c8db70296555044e1e5e654fdb5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.191","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.24-renovate-non-major-ac83cc3fdae84c8db70296555044e1e5e654fdb5_1607581682072_0.9822078552855409","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.25-renovate-non-major-8f0be2178138968756e795b771d7e8264620a1cf":{"name":"@balena/jellyfish-sync","version":"3.1.25-renovate-non-major-8f0be2178138968756e795b771d7e8264620a1cf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.25-renovate-non-major-8f0be2178138968756e795b771d7e8264620a1cf","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d47a7c7148ff0674979e02582692491410229e82","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.25-renovate-non-major-8f0be2178138968756e795b771d7e8264620a1cf.tgz","fileCount":28,"integrity":"sha512-aVBGBR47uJqsv+2HkJkZRj9MczjbXQJoRnVfXcOxZnzKh1jljGWUNXdZjSzA/IKNA9yTjpIGgXhen77L9vMUzg==","signatures":[{"sig":"MEYCIQDGarcS7nVB4LN5WnsQANlAL7KtqLJEFA+h0QVuHBCz4gIhANetxHZQNdAi03N0EXXJyWdsRMzb4e4eW9bR9Y/tPexl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0cCqCRA9TVsSAnZWagAAQc0P/3nuwrhunRGCBRg9Q39p\n47AiVCIBXbv4KYwBwk0cIMMPgjuStnD/O5d576SCCbaLdaLHu0SmDXp+WFD9\nk3gg2RPEgwP82tyfGu6Yj+SO1bebITvqiTtt4Za7WG3p0P9d4u0VJ1KOxutl\nvH+ELQd19JtOLZUuRkRsc7uop/Ih13pzUPF8N8C+/KwmWiaM9WjRCPZLnTSn\nfY7znvyy3TyflEgDaYoLLUnqwJBXDYDEni0VlBf0h9U+I2URs9nxEg7p1ylm\nt5Mkb2cMFwsbet+SkayHyoQ1BSZRHCEdI9Haf/BLJs853DIJ1KZreEMVS/VX\n+vhGUPNhv7+a7oewt14bHoBqo5oYhGX4STEyY0mfnV4JoWYTdhFlgj/bq8mS\nbm0O+iRqkc3kfhznnjaI0dWqN8utaK9rTa/Nel0MN/a8Dua3tnAaXaf4yY6d\n7JzSXLPX7x7Q98q/Tkz/zW7ZgrbZlpdHVyPUivRj/XtAP/LRnEdqaiRzNt1k\njQdDlMkfCxduZnF5ZmMofXtEWrFWddRWjoozONWE5hjYvNVAOLtAqpxh7gP1\nU7UIr8kLjCzBZLCCRHtkye0w9tRaX+Wd6lh5d3Y9U03FdoMBeS6UJUyTcXk+\nKKVVx3s74anpDRoAh3sFkBA/cphCPz2WD+N6aiywsJiozM1IP9GBvuZFQgtr\nWEc3\r\n=k3og\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8f0be2178138968756e795b771d7e8264620a1cf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.191","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.25-renovate-non-major-8f0be2178138968756e795b771d7e8264620a1cf_1607581866081_0.5768757207899298","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.25":{"name":"@balena/jellyfish-sync","version":"3.1.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.25","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"928c14a1064559c3b6656d17abcc4f6b74a69e9b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.25.tgz","fileCount":28,"integrity":"sha512-X00O2LZcbMDlLr/5am+sVhxEpLdn0S0j9egO3BvtqJw0qaJrOQp4UjTlk1zA3uOyTkYNW/NHwkYbXs+mC7LGQw==","signatures":[{"sig":"MEUCIQDm9J8++fniMoiyeaqnN0gpxZ/YLKP1ra5x9Nj5X8PLkgIgDzEXZ+gKLLwJhJoZGDlEAvFkz3QxjuivftxEERd2yc8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":271547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0cFaCRA9TVsSAnZWagAAW0cP/2PvZpwBvWn7svjptj24\nxHDHcSvHyJtkz3J5FX4TEtwsFjr16gRunifI0AQaeUcjmuURVYhg7OQv9pAK\n0EhsocF5cLtc8e4gIwZ2YqZsUdc0FytY/QnMzRU8Mwdg9fi0pMDIoMXqlduP\nO6BrsdDen/u7P2d9AR/zNDomMZB2wbm4KIfOdrEv0TfDN+3VR8daJtp0zwmk\nSjacw3CT3Mx7gQFPfwugspIqXU0OSmRAnv0Ag4LSnjvY/QoGaZMkRZnmhi90\nDbYAJO+MHtxrZHTSypP45MoSXeRUK7+1Nop8wDA+omqZJQKWBWkuuTnwt6IW\nTAMgQZ6rvTm/zbEEXSGpvXaSu51r8b1U7/PSekCGWu9ikhCHNUBYvIP7WUoN\njfjplcDepsYQF0L/A4L61R+AStXvTJsSjPyUXv8ZrjcNB9SsBL/2r/DBC5FB\nBvhAgzuPoGxrgigJFzwSxgieORKeCeZBPGBioLhpiPT/qxkqM3RXvgljGZtt\nNALLEhBV3nhtpFeQlTv7ABxhWmvEXijCFL1bfi2E4LfUQl2e/OVnck/niQyU\nbsory39Tu5TycnbCZNd3IyXisK5/bj17VMhd1eKJuXR3HhLldzTWifwc2Scz\nlxp/+00WkS5z3zffJGDFx+Xry1HBffmW2OucIi2iqSkHMmS+S8xhkyo8p3LG\nQZIn\r\n=zg9+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3d24fa79c50467cbae1b9c849cc85a50f8cf3028","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.191","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.25_1607582042428_0.3972534126108649","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.26-update-balena-api-sync-objects-58754302b076af188f779053edf04112a2cf8178":{"name":"@balena/jellyfish-sync","version":"3.1.26-update-balena-api-sync-objects-58754302b076af188f779053edf04112a2cf8178","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.26-update-balena-api-sync-objects-58754302b076af188f779053edf04112a2cf8178","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a3d1d83cbdd514b9d648c075253cd09c040a417d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.26-update-balena-api-sync-objects-58754302b076af188f779053edf04112a2cf8178.tgz","fileCount":28,"integrity":"sha512-K/3i3O3o5n0jd9Ll3b71qM2G9fJ8axHxwnjxDPnZYdHKuJvR8e4043ZhRSbyDiRiT4JpHDZl83HaBnsYhX9E9A==","signatures":[{"sig":"MEQCICE2WKc/mJwOt/BOB/NgvChujlOvjp9nM4tzcf/pEGusAiB0pP1xu8tIrqdd4uEDMl43n6NuTdYQrHW8ziw8kj8RgQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0h+oCRA9TVsSAnZWagAAeAQQAIZEmeW+XJ+W/I7e1q9s\nNh3/8Bw55sZ568jNmdOxksa2khskehChYrpJDgiLHKzcnLO83/QZTwIYHk5i\nYD6Ctgmh38jaGuWquCYLj05Th/cP4U/cdJ8/AWpWqqLs43fKuWgnKnzErvvq\nQWWLl6oWQbpa8AyMdG+WX1EObNIuGcQbxAXnig4ZEWD/l1ZocLn2b/+6HaC9\ntlH744EU+CI/oY7foCN1UFo226u4aSFDt4ab52zGEPIHpjiQTV3+dOqmw5sI\n9h6zg3blcjkPxQ4FdTrQxfpUjHJU5KPrI6g8OEH7zbGQPrHWCh10R/Ydq3Tr\nvtj62QMeKNhxTx3VjCSouxVCEUTB/3xrR4i8HHuwNsDq0ajDIIc+NT5xJitQ\nlKmmADpUMpT1IgsKI8uCKTaVBtOjq0LODxqAP/F4MBFRelXVJIyUdpXbcKQ9\nNGMG0CrwCV//IgAjkJNUixRzSZ6t49aVkXf55jnc6IrJw6Kg1ZrkWTcOTJui\nSdOW5dZ03N6mY1sEsiET7PXAO7zrakRuLIXHmQj5P1NrHVpmKk0NlmCA+Yxz\nJj88K3+75moM4s4f4hrxRcDCQYrQ3AXxlA76B5Jxkn3y6qMi6IPXsjeIP61M\na9z0v+SxAzwNEP/PfxxooCrMO+Hi1CEy7byh3FR2RzraE8V744IwMTX6OJNa\nwpp7\r\n=FkRb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"58754302b076af188f779053edf04112a2cf8178","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.191","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.26-update-balena-api-sync-objects-58754302b076af188f779053edf04112a2cf8178_1607606183897_0.6149791408092571","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.26-renovate-non-major-7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e":{"name":"@balena/jellyfish-sync","version":"3.1.26-renovate-non-major-7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.26-renovate-non-major-7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89b4d53514af042f6e35ce30a770f9103812a60c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.26-renovate-non-major-7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e.tgz","fileCount":28,"integrity":"sha512-nw/taucVXpIJhjrTbq3AMD/CA0AowZa50UWUYBK8K3HkufOLYipM6p3037U78LetLLP+czrfo4l3LrkdaVUGYA==","signatures":[{"sig":"MEUCIB/yzcXTiObqJvbq5TXfRc56LFXmAxwe6WRX5Bli/TWYAiEAiRNQcx0bdOtHeEk8LGVpPi3ou6KDJGOKqMmtsihXbxc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0kkKCRA9TVsSAnZWagAA018P/j8ZwkGFEdUAQWX1HJgp\nMKr5ln4AIDU8LKQufdFYP2SKgt9x2AroS+rrmcBA4YtcS+QnyzUJu/R3Fvlc\nguKsqSH6VU0YMTnGmw9dabSgtEax0MJGYcUW7pLyYHPQ8FcH3IlWat2ZHClt\n7x8jB/qsatd+RPcgor8m461bYENIXewt+45hXIW/N41TXqDs64CJfhRwdEyG\nyEVP8E/zdVgrQkN3wSG5mCT7UdH+v7Cfnzlx8Je3patPjEDoPsL53P/jM3R9\n03wiga1T9KaTnTozxdiPVdbCnreHxQtjI4MAbm29MHO8XFjPimYodXzYODkR\nYd6VknRcRyYtlTvJH8lPxi+oDedQ7d/0/joG+b+TLpglwDq0l2krt+0WyL2c\nRPtd6Kgs4vGcBF/vCVaTOvPK+aszhiNxk8+iOMcl7gBoblMNjShYEqS7VMkP\ngugK5/Mo+bF6t0B1o4IRoLQbfW58qiv6jj2wHeLWIGdykRZvRDX9TsMqewOg\nCFZF7diJdxdK3ZQjKhW2KdWngP5LRU5rzuohKwDRlLshe46ZCVDyQ0Y2Ez02\nb28fzv47dwjGQyahXaIVf5gKfZkTz3zdaYZ6mvD3vYVyF73xhYaumoQFgrnL\nNrMK8F/iDfl+DPeRsqLI2fWHrhaIle3Rp7cRai0FxEO1aNUwN7D6OtuupaVX\nRPZT\r\n=ajeV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.192","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.26-renovate-non-major-7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e_1607616777583_0.15388905283007115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.26":{"name":"@balena/jellyfish-sync","version":"3.1.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.26","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3405031a565314ecbc3a845bbfb5908bf1f670b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.26.tgz","fileCount":28,"integrity":"sha512-QJFzTj6IWCBjNQ0zbluCscom1eyCFcRmMApst9Bi0tMGyOa39Okx6jHRcq/nxt8OPfLGDkkmJ4LJ1fk3SmO+2g==","signatures":[{"sig":"MEYCIQDfuEte6+8ESxtBEfJUUADrwOqPeNo2ZJBm1Nrilk74jwIhAPo9dbk2YVY6rYdrxV2B80V58pTSO1otaZKk8G3aCJup","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0knECRA9TVsSAnZWagAAnHEQAI5QpOJU+JFgZc8sNeqG\nFqJDZrhe+WGd315kVuKXlwBeRkFBieHWtZ2bnpe2+zKOfcp7Q/QtEgZ+6gW6\n25VAghfepxZjm3LxyrAP93ZnSmJKQZDOmkiIUpQ1TTnlgcwsC87yclohx69Q\naO5o2TIGFm2/ypMp31rUoY9xWwxj9qJUsQeU105mjGIyeixLJGpW6+GjUNqY\nP+9K3Y3QcRsPylgfL6k3ZL+YjaTOhAUi8MYbIpVjIj+QZPMCRXbpiGD666ol\nmSDKxreMKmjlwyUBxA5V6YGt9VzoyUk0JNRLfD3CoN0sRFzTQOLLn2FsIBjF\nUZ/ocnCPnENNySanQOaqh46crkfFt0A0LewvcYzTSmcmgLb9iC9LVor/lq9u\n2FpApSxiLAfbo1QwZeUwTSSxWybifAzN4yjeWpBg1oL2fhbzqDj9ZB5iNcd2\nM6KwjWaxuE+2lFg7fUBkV7ms9hO2Xbj9G33UVqrcAhkO4N8XcgQVA+FqOsMy\nZZrjUQWJ3rbN7cmw6GJFqYqRS1dix4GAYqPUyndgeMFPzBD11nPLFL9ewTTx\nFb9c8w0YtsUAkDoZ+ex5hC1Zg/Kv1u4iRdnfacpaWXs43y+NH4n0IwL0hB23\nKC2uxaLofezmx8vBYWh+Z5q8uGTkzJEwPuUmZpHV4GAveSZIq1EJJG928+DD\ngZKh\r\n=FFua\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6dede522eb633c1f590ebdcfe299f81ec5b464dd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.5","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.192","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.26_1607616964053_0.3598301103301862","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.27-renovate-non-major-38477cc29fd997ebeac1949404bb7f5c07ac929b":{"name":"@balena/jellyfish-sync","version":"3.1.27-renovate-non-major-38477cc29fd997ebeac1949404bb7f5c07ac929b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.27-renovate-non-major-38477cc29fd997ebeac1949404bb7f5c07ac929b","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"892edbeede0e475563177919818503baf0b95fad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.27-renovate-non-major-38477cc29fd997ebeac1949404bb7f5c07ac929b.tgz","fileCount":28,"integrity":"sha512-ERgaReObwyFudX0a75xsRMTtkMiw5aQiVFvHj7k4xNaT5RZoVIXjebLFp2earVk1g/mA0hIOKKE5QcT28OSxIw==","signatures":[{"sig":"MEUCIQDCQ9RYPs3FCi82OlUR6/kJZmJ8MazFb0fbhVpnBJc9GAIgFrjRQUoCscWlnW3Gog6Eut9ENlj9lc4/7Iqb1QbSViI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0llmCRA9TVsSAnZWagAAzaEQAIHzGIiUg+eUuH4CxwHO\nW8vMgTjv24YtQccuyYqpw4nNDmhgGxbrsGgc2ckIzvGKa3tcaM9CcDzyV+Bm\nBh3XfkglhChdeM22Vbz6kaxSnchDcj/2eXpp/1mhPza2KFL6K7xrI3oKdicG\nJ1JscgXAorpbePj3RL6eBrUH/zlEuklPaZuAM2Fq8aKncJ+sk0Igu9AfCXou\npFpuG+FoSguLTeqAQeabyF956l1WqSQFzc3GdG4NgmGBBOPYwx6xk1UyL+xK\nGmLpFlZeSuvfRRMyoOzX+xCdczfK2fbkycNFdfnmiMRQn/EfMnjUUy4P3AbR\na25TX2cy+fW0w30sQ13gW5b+z6BQFFLuncoomPhEW0BOSqylNk3LFTCq9dTR\n/w8T3epqeQSBJmOmitHUwekkoTU559DS8rYfIIBbWmlqOPTgRf2nnoOxwFxm\ni3h7YBfvCYavT7ftVfwNiez4Pru53TGAReJBjUM4iedpd9RsBMscb3C7cmTd\nLKq+kfpwh3qRTiXAC7yoe9AvJs7PzhzXdbFZD1YA10MLkTF45hHsVhpegSNC\nqirCDjffkRDZbNaiGKc6eF5g1G7uLETOUMuz4J24DD4Rla6m6yZyJoBivbYD\nK5pMT93006w62IqbTDDrlHK2Gyeq3gbBD3afx9+a5Y38od3Ce+bR05O3kbmK\nmuzh\r\n=u4NC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"38477cc29fd997ebeac1949404bb7f5c07ac929b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.192","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.27-renovate-non-major-38477cc29fd997ebeac1949404bb7f5c07ac929b_1607620966414_0.8535142423301396","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.27":{"name":"@balena/jellyfish-sync","version":"3.1.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.27","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c79f763a646d481bdd870d16839bd78904f831e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.27.tgz","fileCount":28,"integrity":"sha512-2mhQ+9q1KbXjm1346zJ1A/wtDQbnhpuHKSQTrjZYnIx81eNZQKwqPZw7eiC0dO8zlfqriw+VyM/zD5OLk+z2aw==","signatures":[{"sig":"MEUCIQDQFyCTjgkygU8B+jR+DkSDBz0HIx0wsv2uE7lzme0+lQIgYuGfqdxwVW4KXKs/iXOgau5Ms/i/cPQXT6kEjF/pNMo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0lo6CRA9TVsSAnZWagAARkQP/0qPJmhxkK3R4UDYI6Ph\nXvpE4Z9jGUnVGsefRf8kc1Ma5vXv2nQBPS9tY5y2GXZSccSNoqkkgXZwXpBN\nVbLRIKls6gEROMZkxFA9GUT3ENkUCWAI/G3U3xexiDe6mQX1Y0L5GOYpwsOr\n+Qzb1nIaMK8o/3OD64DeC0KOvzOjPHk19Qn0aJtCwVZ2GrEfqwcN9sXtDG4h\nWY1YRgzcdQU9/SHCxljT2faUS0UC5zqc0Ld3NSP8BySEj0TKDl9DFUIvspiq\nRYDL/VL3QLiFmzsd/YLLAropKFqCd66x/fWzq+1fza5PEnja8vQEIFO5kWKL\nvwvICBFl9HEx4YK8XRx6mgp3HIHNGIgbu03QuTU36Fc/uuAkHzUAW4vADJ0k\n8go8AfF/5hcLcGYA0gsyEiXU5V8mNa7tymHiJslTe4svpbsy/oe+lnjjugBA\nU/EX2xGUzrmJyqTacQcxalaCm3XQKiRt+iOY0MgwXhEHAZE2MAROE0BoAp0G\nRE2AAXn4v1RXwWBi8K8Ho2Lt1MnXmdr+p4jkqp3waL6rz0Q/rsu3ydLLqRgv\nxjo8fRKH+HgOVW2lzd8nEdlbt3bbCN3CHjeYhxoBYDHqf18jKyUkbq0Zf/J+\n2Liw68Uy5XN1BSCvHpf0JzfyEgMj8gVz5Y4/opLGnBAkq0eaRRW674RL5ReW\nnA6Y\r\n=UmNT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4168717e94d3d7f520366878661738358bd9b703","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.192","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.27_1607621177772_0.48007304148556496","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.27-dependabot-npm-and-yarn-ini-1-3-7-a71b94420d01c984bbcffba33803e90f36bd8177":{"name":"@balena/jellyfish-sync","version":"3.1.27-dependabot-npm-and-yarn-ini-1-3-7-a71b94420d01c984bbcffba33803e90f36bd8177","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.27-dependabot-npm-and-yarn-ini-1-3-7-a71b94420d01c984bbcffba33803e90f36bd8177","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"014bc1eb707f414fd70e86c41ef5caabf2a9900f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.27-dependabot-npm-and-yarn-ini-1-3-7-a71b94420d01c984bbcffba33803e90f36bd8177.tgz","fileCount":28,"integrity":"sha512-T2ZxvTlYmGWPXw6/oAhOX+qQXopWoRe4FGHdWyyZdQtewT0G9acu1ZGtmXKDFnA+hOkwXuJ93GhfVK2UHeZgcw==","signatures":[{"sig":"MEYCIQD70tvb3pEiafS1dAzhlXdrQe/EIFfSKqmJVNjzN9CqJAIhAOGv1dggXakVEpYh98rrF4KrTb6z0/VcJxuDraacfDhu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0lrJCRA9TVsSAnZWagAApzkP+gJJbGVycRnK1BEvq1dJ\nl2yEShGY1G/7b3u5UPV3SnKT1w4WEpreSOa/jA1Ovxe1kUwSyjrS3b+6iWKg\n4daFf6cAnOsjaQSU7T+kzwwThC5iv3dnWm2tGv/D015GVDesxg3DK2tZFrUT\n0M3QJUwTFpZ614i9PwzA9XeVhuTa0tbRv4icWczef2MsD6UnjdtvKnK4B3qs\nyS1qcNBK+VSuksfGB1CS8Q9kf+vCplWwbbGnYzYM6xkbSzMHHtMlvMaYF+8/\nXPQgKJjQ8t6vZX3wtClTctmadX0gqtO7MbTbzdfJBFrahqNurURH/LmPRxZQ\nfMTZW6sJf6lHnn5AU5DqPM4IizEaFUvesC8ZWO1pLU4wB/EsWFbk8V29T1Tn\nAbpd/6tmsDua9oiXOhXzZOTBzDdjFQ4H9U/lwHWHwOgwYK0GG/5R47wCoABi\nRrf15jCifHrSBEO8PiStcQzYVcI/jYqNcPktO4PYq/+iZkOpcmvThGn/g3uY\nvo5JpJCuv4sk4zEB+iVlzTGYs07SO5RCE3NwUqHLxFSMw8rmQ/6vto1opxP3\nBMyhKvwQDOG3GjGBI2TFeqvziPn77Rplgha8HlTyD4C6TeNknNT8mD2sRmAw\nNSnKzHJ+C9rLRWmGGSYc2oemCeHHjr8QlL8cErLm+UMe6fRtxydWtHN1UeGR\n8mg5\r\n=zUyZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a71b94420d01c984bbcffba33803e90f36bd8177","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.37","@balena/jellyfish-assert":"^1.0.35","@balena/jellyfish-metrics":"^0.0.192","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.27-dependabot-npm-and-yarn-ini-1-3-7-a71b94420d01c984bbcffba33803e90f36bd8177_1607621320558_0.1746414591733083","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.28-renovate-non-major-2d450bca80007145e23b8580b3b538c54d728c9d":{"name":"@balena/jellyfish-sync","version":"3.1.28-renovate-non-major-2d450bca80007145e23b8580b3b538c54d728c9d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.28-renovate-non-major-2d450bca80007145e23b8580b3b538c54d728c9d","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c21133fe0e34b1d6a150497230552942b978e91b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.28-renovate-non-major-2d450bca80007145e23b8580b3b538c54d728c9d.tgz","fileCount":28,"integrity":"sha512-bVhgEXHeImnBgbiEutC/HzydkGsjz5AjSeUuhoS1OZBqEiTBiZU93+/EqV3nO8WUvuv1t4d73Dn/Gb/W7w5eFA==","signatures":[{"sig":"MEUCIQCMD0sqG9E+dUQS+QADJwzUKgOl/HUhxr5D/5xvo8iUewIgDF94whHMcPwpgC9G8wYFU0DccTHRRt0kFQXsKtfCMRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0rfGCRA9TVsSAnZWagAAFjMP/34VkWttxFFvZR4WD7oc\nsqaZxGp4VAM47Y+6Z24k4rlQfDfMl98yOQlhrOBtKs3wKA0NXrnd5MFQ/BeK\nz0brn+jb6LJTJMrkK9X7Rn4IfzBezae1i12/yoBVKJDbHXYzDEWHX3txw8Y6\n3pFVmPBa7Mdjp/GEXojhf/UPwfZkDYhI4qTKQ/TwOFCmQgQ1b7GRqnhEjwlE\n18sZucQ7u/0MwtGYv8HGyi76n+EfgtvZb/2wQN9ojNyOJzMB2a7zSXuyZMvP\nSjuaWaf2JAItk/xUZD8055JCy4hyZMjtPWATWH/KpMA65vZgMnU27tXzUrf+\nDEnNx8Ht9vpNfzblXY0OfCJRj2MLl/gSrGcFMcSJsG0oMbYXwRfwWOP0FlLQ\nVJJur2xwrQjv60qWHkBjuCHp5MYw00GdrnleJ22EK96YFV6NYXAi7LINMCDY\nxW0Nb/dsHA3SqtTzlC6BeYsBDRsZgq764TVd7oon7b/rAiBwliR2EY6nCYzy\nrTJ/CqDeGl+Rys4448JuPxTGHDxuFLo7OVISmYfwYa9xr/byOyz9A1WadtuY\nIYCbnQzHsDoHyxRDxxxA3M0MdL+5NKe2ZLpuVuYX9Q6G2Vejj5et4t//Gh3r\nJ1vmuTPSqm0d7bGydsAzxOWW6fD/i7SHqhN5yNQFciF/rM5ziIWCMXAyDH5Q\nERlR\r\n=81Sn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2d450bca80007145e23b8580b3b538c54d728c9d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.38","@balena/jellyfish-assert":"^1.0.36","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.28-renovate-non-major-2d450bca80007145e23b8580b3b538c54d728c9d_1607645125794_0.3076097247617329","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.28":{"name":"@balena/jellyfish-sync","version":"3.1.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.28","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"200ef45e0c37dfb02013f0fbaa15bec955dee005","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.28.tgz","fileCount":28,"integrity":"sha512-wwUvcfe4V9dU4J31mXCCeMdLp1nV6at06wpy7RZ25ZJp2F55P1GcL50dKb/z/ZqNsTTjmPUiAt1w/kK9MD2URA==","signatures":[{"sig":"MEQCIAHmqKQ0Rjc56b2gPV0MVf3OsVT89in9TVioF0IKQ9lMAiBFFVvF+h0CGZ75GiUPCX4lDR970JPeOJGk9aESiHkPvw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0rizCRA9TVsSAnZWagAA9LIP/A07krqc5yuZZwJYbxxK\nfN6qiPVQs5uBTrOz0bBBynzI1DYu80wSuDzv+l34AUelMK3f82rTNd0FlyAS\noORzq+ozo3mO5ngVXjgTVD60ZMnK0Mm6KXHLzsCKy4MMtnn+iDSD7l8myeRL\nCs0eKYjd1qM3W2iFL2n0GcVW5OxdtxlS8Py83Ak+6Hw4xpDzVpJl+l3XWWM9\n5cdHspUhR5rhH0l6xDFJcwkioU5cmfb/Lya1fbk0zb/VpDrceMkxMy04DGjx\nYVKd3EcwM0P9mHNRsyV6DZsvnI+Bu7DHe3adbu1ZdCCrJG/7IVzvRr+IKL72\n6QREUxZolydULKq8bX7bQ3/djrgK1XNmdeG6U8JooCqpQmfCiVvPdvnfkbmw\nD/ZLTwX8eZPb8d1FbNQjqBKhe2ODeOR7rzX3g8c1uNSsMDYz8swfjCpKcqxq\n1x4grtbqSaOFMPAQcmT1ODjzoqQB+zpZ9PvitSiztKJhysbtjL34YgPWWN4q\n8RCKcbbODbXgtdvBuloEpeEUIQg5M+At8mXL6g9rOAQUUi8RI32/TQVp/BCq\nUZbhFwzKN9cTiiCXpkOIxt2UezRMQgp8PDGiVFDhx6C0ayjzMp9eFOoW6AS1\n5Er70dnsrcAVL2K0GsQt0PaMlE3MWVCmbwyzd+0YrLZasgCDsbeLyHDhpCnd\nEnSq\r\n=1ozq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bcab97fe9366138535eae0876b6b3e162e34429b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.38","@balena/jellyfish-assert":"^1.0.36","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.28_1607645363041_0.6157018245773493","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.29-renovate-non-major-30afdd3ff0e28bdb221cedde9fb1b51d926b6e44":{"name":"@balena/jellyfish-sync","version":"3.1.29-renovate-non-major-30afdd3ff0e28bdb221cedde9fb1b51d926b6e44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.29-renovate-non-major-30afdd3ff0e28bdb221cedde9fb1b51d926b6e44","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"99f78c22ffde7a1da3c4a66955e779361fea9d8e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.29-renovate-non-major-30afdd3ff0e28bdb221cedde9fb1b51d926b6e44.tgz","fileCount":28,"integrity":"sha512-NIS9RNVLpTiLf3G41FESXiXKVyU5WWUmFjCf7H8deQYVxuh55+/vIMBvySICBhnpfxLRcEhjh1boKn4M7tbYww==","signatures":[{"sig":"MEUCIBdpeSDW6ake4Q0xlDensQyi8u3KwYZ5v9/KMMCvwq/DAiEA/SegoMugi2MKDGyrdqbujtqaxkvzlHRxSEWTE1ZryOQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280493,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf01CLCRA9TVsSAnZWagAAlWcP/0j4fGzL6nnmXVnkgvzx\nW9rbOv5plmnkiHbQMmE+0jHXSKAX0XYHBoJW1yo2RnWn3kpbX8ZyDnfIGz8u\npchynoiPvOg4UTnTsHBMHTQfddvRs3PPu+stOM0SwKTl1CmKIYPgRSkanvNN\nPCDipDlAv8Po/bGJEAVAkpFNV2D0BTYyIuYNE0FBYIwPg0N5JF97bdX2YfbY\nqcQCUS0fH46weE2qZdLfC76xap1nyg0OKcp08xDWBDDNlSwlh7NQmeAJn96m\ni0bbckErcqVuF6ijOw5ZQpJNIeaebuboGvGTW4ItyPtiEEm5FC930pwiFhCk\nFkYk5HvU5B2FGKGg2M4a7F4yLP+8yfMHSaSdve2bOOuUPSbPsmJKkOzJXOjt\nnwGjCwWrGGeSctp9+/0OJ9bzhKK3O+c5b/Z6X6u0e82WxPz9xIq9AFE76Gbv\npP8rfMoxaCB3UtGWAOtK9d+7/yCxuP1nMeeg34dofl6CglnjDUEioq/+T8O6\nK5IuZo2mdvjw1fwUK4F4gfk9y7lOD/3vIFIa/dX1VB+76QLTcb/Xrk1hq2NS\nddXRDa46hf71jimMqarLu2rRio+vLDA2FLAw4+jk0NshceCdF0JFcJtaij9F\nJYGozAYaiU74J2Ipib9kFlW+tQlFSfr1R5XGS4CUVYHzh3uWFrKC1AwYMFi7\nFUzj\r\n=0kou\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=v14.15.1"},"gitHead":"30afdd3ff0e28bdb221cedde9fb1b51d926b6e44","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.38","@balena/jellyfish-assert":"^1.0.36","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.29-renovate-non-major-30afdd3ff0e28bdb221cedde9fb1b51d926b6e44_1607684235431_0.34140860327893874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.29-renovate-non-major-319acaad1016310bdab75c4d6e6d35dcbe6bc3ec":{"name":"@balena/jellyfish-sync","version":"3.1.29-renovate-non-major-319acaad1016310bdab75c4d6e6d35dcbe6bc3ec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.29-renovate-non-major-319acaad1016310bdab75c4d6e6d35dcbe6bc3ec","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2b0c2df55a1994db21b841b0703749be90c53dae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.29-renovate-non-major-319acaad1016310bdab75c4d6e6d35dcbe6bc3ec.tgz","fileCount":28,"integrity":"sha512-4/FA30MNlY8NhMhAqR0KGN4HRFQXm03ngMxPErpM78OK/pgG+8VbJx5RMdvn/1geHjATioDiHnykaMcWHAfB6w==","signatures":[{"sig":"MEQCIBnlaFP53GpSrH8y39HR57RBJ2bS5N/NJT4xWT52Uz2AAiAu0raJ4KplJNcupxdiWcUfh16o1pne8IF+jzWo3XL6eg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf0/F8CRA9TVsSAnZWagAAs6gQAJvdTZCOWjBN51WOjs8w\nbJv6ugtNvgwvwKyXGc6qAIQeH84+H2R0pjURbehPTNT1PymbMersX17v5239\n5pQelOAIvEuGwEV2BIhz201FCaOmGo7JrxgAew4XZ+ZoPtTWHnvN99Br8MBJ\nVWZOB3lJkiLVjaGTxaMIehNZOdHGGJ//72CLt0rejuGSI8/UDSvNynFG5flR\n1zClVFa2a6v2L/DUz2hOD3IMxYdSTzklNaz3WVOV2pVoE45fdc+DNcILuq2J\nAps60wG5yq4RXXumC6t+TGQauvu0EwUhfwFWmp9IzZ2WVUa2LJMOyMdcZ3WE\nwvcZRrndCGfnmKmd5F5+w1OGapbjwqtq+TppPRWc86u9aLSYA/CggZNqVl7j\nBQqNcObL/q2d21Ig0A2A4APo//W2TmLIBd09y+WKuuYcy07HNbWZV9zr+PLH\nleAoucSz+CtNCWc0SzYLVdp5VDqMsL5qAbGkogqFn1XRa8R7kmcYeIYOc+0F\nPAg2CC7t2sgjPtKiT9zA7VTDyr1uFmfU4fwRVgXhUmaev045RS8qsGfJ2W5f\naec9a+MOSYeFKaTFBH23KC2uJH1pxR1upGNF7sVMrrNNxFToxIPbz9pkiyLq\nvyxaX0JlQ5Ces9kW8Wte0Foof5G2W7kcehjjw33LcYTofTb5xrekM51mGBO5\nltJN\r\n=WjBp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=v14.15.1"},"gitHead":"319acaad1016310bdab75c4d6e6d35dcbe6bc3ec","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.29-renovate-non-major-319acaad1016310bdab75c4d6e6d35dcbe6bc3ec_1607725435777_0.10695447777605493","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.29-renovate-non-major-f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35":{"name":"@balena/jellyfish-sync","version":"3.1.29-renovate-non-major-f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.29-renovate-non-major-f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"035a7248ef91251f88ed4562aaf09244ff0af81b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.29-renovate-non-major-f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35.tgz","fileCount":28,"integrity":"sha512-/3nVjvmXzB1o4gODjeX1u0NmJ9DoB07q49hd/1xLLpS6ELfeiLixXEidB7UiqnX9WX5nGDLgIuLfIX5cKeyC/w==","signatures":[{"sig":"MEUCIGptHz/SUCp+WteRlC249hhYORjRJZ/P9Zxo2wWj1xBrAiEAyrMu0HV3L2z9mojf9FZzsqz8qE8npobNKL30XpPAFRs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1BhuCRA9TVsSAnZWagAAavwP/i1VuIc2lrkB7xo7ZQX1\nLJvrradA2+GgfoRElpkYzLFOMeJC4HdZGSSg3od4V4jJiewWGShmLW4FRHDj\nnS7pbhWklO1EWU1Tqmtl/iBHw+MOtO0yL8Ln8j2e6S+D5IgwTEhBEZqS2mc3\n2B2IbF6tsjQdVfh9dF/1qYKVvlBGfcO/rcS4NBQKFPTFIpFY1M+p6SE0yi/M\nOkxeM+Tt+BBoG48vKgFebKHKwLH2c4NwTo7jIzUaF66pEYPolJiOLQ+5J87i\nmanFJLFzNFIX2OdGO3aBWcElCvHRUwYNSdlDI+ncw534Cfz9fWIcmdBDk6Eq\nrDhxQmmovCTB7w6LFiB9Xy4cgJy39oT1BbEoTVsPYasNi1mFO46u0QX2Ev5O\nPLgsq/Zq9QYYi78sBC2zwce7OaIMMlrwgsTNALHGYzRMbPyfpriRIGa2H/n+\nNQuP5rrHwChA/ms0N9fEu/q2LmWH9zz45ZPCXGE/CZIUBGR8SoNnHaEBJ74I\nJxo6HIw0JZ5Jmqv6jOQ26t4MBZr7koqFxaIpzDmNqTsXFLNPRc7BeP1IM0XD\nhEXX78KXch44G1MjKfKe5mNfXn3LTVq2SxDJZ8fjdNVs7BUld1CbUZqewcyW\n+pSvpHUXkvaWFigT9Y3W86IPCHk4qbt4UOIH6HV8PVfHXQ9peg/pS1PAZFhk\nKx3Q\r\n=+58/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=v14.15.1"},"gitHead":"f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.29-renovate-non-major-f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35_1607735406261_0.6025682659555289","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.29-renovate-non-major-2a8361b1296e8937bdf06659345d8311b6e7c965":{"name":"@balena/jellyfish-sync","version":"3.1.29-renovate-non-major-2a8361b1296e8937bdf06659345d8311b6e7c965","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.29-renovate-non-major-2a8361b1296e8937bdf06659345d8311b6e7c965","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c1db364fce34a92ae5636d1d381a6ad4fa43984","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.29-renovate-non-major-2a8361b1296e8937bdf06659345d8311b6e7c965.tgz","fileCount":28,"integrity":"sha512-4JcyUPvj7LtGMYFL257bJWXmUj5t3tm5ixJ7CFAu2LTnuaUQO3ItZm+JI+tjg7d/n23ihXrZBE/HxXitQcOfkA==","signatures":[{"sig":"MEUCICjKdz+B+pPZDKLUbcoSedLnTQ4TN+btbm/wDh5urZqVAiEAnw1ebHvbrLqA5pexLAx+xEL7GTxG5xe3VE4oT7KxIaM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1Ep+CRA9TVsSAnZWagAAeTAP/3R6219BP1N4gRNumT+B\nUHnXct9bz2AdlUTu4cNAn2frVWakxiib/NXLg5CkPupUYFR2oqUZy3lYLLrh\nXsQ1gatOEV1X5+5/+5d251GAg1gAxVGfZv61/GGxFT5jG8lrjw3YWlxgVteq\npD8/hCwkyj5D03Sd73WbjlpyLeqMK8m12Jffnaj4jKThwARj3U+J/H2b8Pzv\n4cxEyUbkmlj/gABYU6RwbLtXPK+2N1zdsVz1ztRNElT1F4aEpZ8FmKqQgVPB\nchZtGUkJ7ao1MgaNZ3wzHilbGu44i7rMTuY4L342sTrEml0mXioN/zHoZZCb\n2saAguwA2NG1A7sLa7Oo8/2QbA9nQoog7OOPVrV9lXuHVOWIwLgiNVMCQc94\npXEz6TCrb5bltw7zrRHMKLN7ASlrrS9FNEDJcai4u3M5uoBg14SdhF1IMnEe\nA9N5m05GaVeOpOmP0wpdpNCeLuix7+NXCruLASKmQ3mOytoBNyMCwzbt9QLE\nlidtGcDbCMzxGkwUBAUV/5kPybOVa6+PEwtDUKFe2q2ydoyGgIvwISKn+oqM\ni1+28wB0Mxsylb2mxUe8sV0yi1ycTlJR6oPl46ohXvuMBF/1ENg9z47/+WJc\n2qctEj4sQFtQBHXXk3bS8anGojwq35j4zoZ1/XAu3qwgEChdUOT9i2Xx+MM5\ngosd\r\n=tOhF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=v14.15.1"},"gitHead":"2a8361b1296e8937bdf06659345d8311b6e7c965","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.29-renovate-non-major-2a8361b1296e8937bdf06659345d8311b6e7c965_1607748222202_0.8790672355230791","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.29-renovate-ignore-node-4eee0ab90aafc6e38dfd487775e63d1d4702b7f8":{"name":"@balena/jellyfish-sync","version":"3.1.29-renovate-ignore-node-4eee0ab90aafc6e38dfd487775e63d1d4702b7f8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.29-renovate-ignore-node-4eee0ab90aafc6e38dfd487775e63d1d4702b7f8","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"43d5b74b181c1efadc870febbc78f7471ef6bfd8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.29-renovate-ignore-node-4eee0ab90aafc6e38dfd487775e63d1d4702b7f8.tgz","fileCount":28,"integrity":"sha512-pjWwPN4ws4BdtIeV9V/5QuMbPzTQgAsRmS+buX3xWkXPQd7C7PsoOkppqDJso1flpJyL/0JovjubdQwZm22XeQ==","signatures":[{"sig":"MEUCIQDI5u9CvekYCMyI/5fzSIC+gbVYDuYas1r61fKQfUE/OwIgDuQkqjOiodKPbhc7lqwVSFg37vV6iWfvuFYWxJwvbVI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1HMZCRA9TVsSAnZWagAA/akQAIFmbkArp9E4ZJ2QG6os\nQw30DnYAsHWNjruMzcdGG/cpawno4IFeZ/6Xmt0NZdrvsthGwQqXtSZD8l32\nyA86Y2FtvO6gHup14dN/Q9gQncR7iBc2+DtCTBtw9BsLRu73kBBAQKOuwxfH\n9O0HO4NNvobI9p7lRlo+ubgsXIFhuA1BAVe16Xn0R+RgTZZ4qZOFTZ45hh2h\nV/QJTDCTW1Rl1D8iAlMiTUvX4TU7/X77LuVy2h4fu22Z/IRkr8D+7fFaCsUO\nzUTcwZIHpp49+TUzqa34yzhRYz5ObazDmVekXWQaAP1ZK/Mpauw5yWiaILNK\nPBHz55FGidP7HTqR+tq0ofqLISM0kQCOerD20bcMSo6e4/WrfiHC+j0QKjp7\nR5sHHm4nFZiYyefKchempTe6PlztWpReM9i3VmozcAceACYO2d7GpZM7Q9YW\n7JVw34J3fowVRnYrzadsypgDVd1xCjJ3Zf2rFDUEjaRucVbm3KQzOCoUN3ul\nFbmIheR/ZBtV1lihDXfQwrytfpQlCL6P9gnDYypZfOHUSi/DLouM2w6BTRNa\nR41sAcgwiGkVdGt4XQvtVzMmHTBEiymOozNx1ozY+p1z6GvMJZomVEbqYMYh\nn93pTpRrvmSeIIwcn6l7uI+7/DSAFt5CG3fxb3LS3Wqpqqs6cPcq4L2i11gq\nclaL\r\n=XsMh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4eee0ab90aafc6e38dfd487775e63d1d4702b7f8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.38","@balena/jellyfish-assert":"^1.0.36","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.29-renovate-ignore-node-4eee0ab90aafc6e38dfd487775e63d1d4702b7f8_1607758617224_0.9914038579397491","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.29":{"name":"@balena/jellyfish-sync","version":"3.1.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.29","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"deedb99bd9d56e6f52035d00c512f33653ddbfe1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.29.tgz","fileCount":28,"integrity":"sha512-DTsI8UHCByDQljDThIl4sFs8Jg3PsvR9Q5JAYDPgw+R3W5AaMVZDnhJGE9nn6HRMKvax+v3jtmAUZdtB4p66vQ==","signatures":[{"sig":"MEYCIQDUf8POgZBPdaYDDlYErkrZcIhOXbzxzvKHHJEWdAPYgQIhAPOdejV17JOzTOE+l+fbg9VfCF4XLgMsDDiiiW9Ve+O+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1HRvCRA9TVsSAnZWagAA7wsP/AkYoAMbO6t9kuBS+hvS\nPd482/Kh9XXYSikSJzKXjHkgAJSOI2C5EuTCN9QaMRWxBSXyT7AOvcnNhs59\nExp7xuymS1lBizCJSZmpB0g3CKjd2IJuIOm9B38BdRMBunVFHPMFsuGKl2Rb\nFRxKUv2h2zSa+VRZbKnufWGbPq3HPG3o1nOJH1hKNgrDfBTBHSGu9snSnwUl\nb3aDdZLBSt7DVYFWLKb/Iub6evUKn7a064YvHD6xFE8zdZ3HCV0DW9dVQegx\nDBothM7APuZaFUQpwLm+v/RrkmlwQvjOB1zWhRL65/rCuEQwO9v7TXtWUHKC\nmqBIUx5+w9HKX9fN31vKyos02EaITxEl+fjs1rTMzzRf5U/aHPB66g0KA/Rn\nSG0Nm+7fGRMLTEEHEQc6joS5fjYvRIvq4fJhLvmDEecu/LyeXqZ9/ExpPKsA\nZFGWhagMH9Xl7+YgSxPl77J/RhrusLZaZROWi3umHcgE6Uqb5ehD1rllCNWd\nyzeUriQjVgmzYNPnivHPntimh9iBmv6P6BYBuOIgNBSnLuVwnwhYRKDGlLdT\ngErYw6cYLiOVNf7JYNvOhbUQOgncbCbuAuCASNzpeR8SZX8OPilIgb29+iCP\ndO262Co/AnIbFQS3HpJ0lRb7PWsOhlJP2x8Bj5qjOWZK7Xc3kxGhU3+zPoHU\nBt+4\r\n=JhkK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5a545bc25303ea9d621f5a78f84ab322564b36aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.38","@balena/jellyfish-assert":"^1.0.36","@balena/jellyfish-metrics":"^0.0.193","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.4","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.29_1607758959026_0.12110467176751749","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.30-renovate-non-major-1ecbf60b387d62952e2d6037bca8ae41fb41dd11":{"name":"@balena/jellyfish-sync","version":"3.1.30-renovate-non-major-1ecbf60b387d62952e2d6037bca8ae41fb41dd11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.30-renovate-non-major-1ecbf60b387d62952e2d6037bca8ae41fb41dd11","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4ee0d7618a6b601df91e1ce2fa0c569b99d1390","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.30-renovate-non-major-1ecbf60b387d62952e2d6037bca8ae41fb41dd11.tgz","fileCount":28,"integrity":"sha512-nZ2p/sNvEIb13zvlKz48DmKuz2afcQ8wv1u6beBMAB/iWNxLu2npHfQQOmqTiM2iNLXsClY7X4eqtld341xNKA==","signatures":[{"sig":"MEYCIQD96zE1bx0ZG0mZt0xBBYvbSYXgx6Lx3eZ2+MEhaYQKjwIhAMb0iS31fMMadC+e7Zryue9GZNE0ciSGPYC7fl7yeafq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1Hi3CRA9TVsSAnZWagAAtMQP/03kYGe6K0OP7V9YHXWW\ng9hT0qAA5XyKPPl4u49yvuLuxDzXDoOCFkQod2hTC4nTTDtKmaHuLNeT9vCr\nnuPnqppTgxWbLmL+1+ZK9CVRF7uxZBhqfOLT+sCYxtWArhy1EyygM/TNtB2S\nea0GgnGGQ2qqqqlAGpSkTEQgpgebprPblKiWAN5nac36BF9UDvN3dHXnsOn+\nN7urAL0ygVCVnbz8aR1p+cH87CvGsX/Tx4wYj8hHdJXsvTDoithus5GQq62V\nzYTeADD0jbdXDkX9FhvwjeCR9KLgE23sQcaC61taRrb/bq2+errSDT36qbtx\nhRpKKkdz0hyvYSLorf/0yFjm3GWi0AAUCjrJz3wKL0hgp+WHOeWEh0Yg8rPS\n8OVAepOuMYL+p202eVFLTZAROxxGS688JgsKOJEyPGG5253SEoYLyYmuJdfs\nud9FSOR3yi8M0fb0XPDoXwhyfb6UjUU8FCyi+7y0B/DuAjVTcoXMAvGoXyM+\nz6VchcnkXcRXI7siBBJbEOe8YrVv8YMttGSQKXYYjBmbO0ho34WD2LUPf91D\nrMr+Sbj+7ePk7V1ZLTMPEN/mq22M+KwlZS5W2PhnwgQbrln+rFgn6NxwQv/g\nxK1GVclgKzDL+GFkhC2WkB8TIuUy2X9tt0pXyfP33Yzm5jQuIsRbaHQqB5HL\nwA9m\r\n=rsb9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1ecbf60b387d62952e2d6037bca8ae41fb41dd11","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.30-renovate-non-major-1ecbf60b387d62952e2d6037bca8ae41fb41dd11_1607760054613_0.38103809361532104","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.30":{"name":"@balena/jellyfish-sync","version":"3.1.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.30","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9b2760e29008623e8542c9eaaeb05add284af6ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.30.tgz","fileCount":28,"integrity":"sha512-CE/QFmklSq3Sa6HGxX+m8o/YbUFvSx3SC7fLOk35Ti6ywIx6MAyduOxBuIkeDzMZvuZLzjFXiMC7yVGY8K1IBg==","signatures":[{"sig":"MEUCIGz49C0NLzRfkFHDM5+Fe4NXLqEW8T+3ZvXfH+ranlW7AiEA8ks8pnGIoBlGe+lc/xHxC+E2T6I7TJhmXKm2oHFeOOw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1HmXCRA9TVsSAnZWagAALhcQAJnuaf6qh3w/723dLjTZ\ndf9qRH08xALIUMxSiaxBGOWQ2NnrQcKuVQm/M5KX8hC+gb3bWQU8pMeSE4rr\nLPWtBnFDBKQWibelZwjk4cK6cCU94GMGFLLzdy/20Fdl+HB5qGMk0aSCVPyL\nmhbt0GUH8AC81Tkoei7b+zPcUwEM06zp8umHidRf2W9pEQMOfpNpkoW8IMZZ\ntX6zdv9jvGq/6HvVBzV4O7RT+kKuHgL87ctSxTWo21UpJs+imZft8Nfq6ytB\nBcW8PsFsJXQjFNlzR1JbI33oKD5IPYC4P79juRKn5XJjliFEt28wHHppMQNb\n4Ri3Z4nHszcF0JiYs5q2YqVJFbsv0LUkCL6v1L4R2/W8Fd4Wb5VxXaqbrtu6\ntt5B78oltBrSrIeLz/uQrteVmalMhs8KLoi5WJXb4XeBBC9V1AJFgZte5NTg\nTky6tsS+SE0HPNrSK3JuJiFT8xvR0zOaLkfxOmU63pJiYCX/GwC4AzNEq3Fu\nsEGs0I1c+Yb0/oKS0+XgJGVOq5e03jtIsBE4FleHX9KN/MLBGUbKrwOMONiB\nJq5EIbK61JD//s2Y05joH1GQAGqKWhvypS46FfbRoDb33pcwsdNn41vYSSGF\ndHuxrIOybGela1E8tL4TgG4XPs1LrEDgaApKwj2sGNlp710/s+ZIZn15barC\nC5Vl\r\n=Dt0v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2fac506eb57115a3224a2ccd15318e3487b6b17","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [[ -z \"$CI\" && -d \".git\" ]]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.30_1607760278987_0.7299269058278037","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.31-postinstall-sh-compat-bd4647e87883e8ad6d488ab8c968c6a544a5d9df":{"name":"@balena/jellyfish-sync","version":"3.1.31-postinstall-sh-compat-bd4647e87883e8ad6d488ab8c968c6a544a5d9df","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.31-postinstall-sh-compat-bd4647e87883e8ad6d488ab8c968c6a544a5d9df","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c8d1d6b06b409b54f8264a9e48d136ac667e77f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.31-postinstall-sh-compat-bd4647e87883e8ad6d488ab8c968c6a544a5d9df.tgz","fileCount":28,"integrity":"sha512-fR+5Hx4TnOjWPeTDcwgrKgtgC1ZlChzdBCxGWtqkd/o6T00YpX2ujwGz7KJpVOQvccFQjzPeAhPKguNwOPr0sA==","signatures":[{"sig":"MEQCIDXFVwuLgGJ5u86ExnvmFDFVUR1nrp3IMbgEfhJ8NMXYAiAY8N1l8d8bjzdfjqmwxdmOx7SUHmDv6cEglrbzEnIwEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1IF0CRA9TVsSAnZWagAA1u8QAIX3fn9KhxdOqc4tz3tD\nxlftW5vSHBqy9CNHmoi55LEc8/xyKvzkM13OA5N5AeJLt4L9/m9UKjeW8uUY\n+wtS8RfCFprot5zXuUhbYzdsFCV0l1VzXOgqZdBhX36z4u/9ubjAOUQHPxFK\n2VxGi0RLMIXA4moNieqxqtEeILlVdFJz2E0XhyFLe/sjjY4HQSFdS3cYCe2P\nEEMLOVGqCFssya4TdRlT45Cms7i15UhEEbxER6X40xq4OPDi42oxjv6ZpC+A\nnDdyevzmoSjKeOVr63cQ96kgZcTBwMDH1sdnoTsUD3OErVK0SAOFQA/o7Wg1\nuCUI1BvN7y/H0XpH/giCcETgcA+YIpG7dC9k4iUhjC1c0HVwSBlfaqaalGeF\nzs3P7fpzoyrCpx5lGJQN4MEZwchFQ0WsVdDwQTVJ2oQ7QeIx6DDR0XawWBpt\nf7Hjjbt9G7Gr5HaCcS0jG7GILn8n8pOT+vmET3yfAxfU9YCTDdwvW97ON35l\n7ycP5R5ivfXdn+ZduyWgUVuAqmSlRF6AeA5yjw8XYT0X0f+rzLkAMS+4PZr7\ngFe/Bp0NjaP/ALUMwUk+uZlyKbO4WwzAPp4V2jcyBJZ/324IrCsgvx49crGH\ng62Gy0jGxLvi7Q87wja+eLmoRiSfQzagMXKcdcpUf6+PUetpRet4oXu6voL4\nruTZ\r\n=Zmu7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bd4647e87883e8ad6d488ab8c968c6a544a5d9df","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.31-postinstall-sh-compat-bd4647e87883e8ad6d488ab8c968c6a544a5d9df_1607762291838_0.7911930310950943","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.31":{"name":"@balena/jellyfish-sync","version":"3.1.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.31","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"08092f610bd640d47b4ff1b534eee1554ae577e1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.31.tgz","fileCount":28,"integrity":"sha512-dI2wZER4iS6x3XdSxIYTpUKbSFMyv7g4Th5+ITxAKthoHBjg5kIIpmrZMFIDCHxUR6y8jS239P/KIOtn37JHrQ==","signatures":[{"sig":"MEUCIAuTZjgAeWXy0NkOwM6ij6rTRdGcQ8Ho5Rp3sKSLVAmsAiEA6iUBlENuAyBsr2BI4q6rZ56PYIwUZS3LbQ45zvkgzNc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280621,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1II+CRA9TVsSAnZWagAAm0AP/3gVzy3jx++O1FWTtdHu\nVf6ShfrFU2xZITDzcfRW0s/rumiCO89GL9ZPVQZDIA7Upr2uoum5YwB9L2wu\nuGwRNM1KP+LS8/GK1U6WKb5Hx3GQGiVpjJhGLndfXi0B7F+O+zvXRt4C1bdJ\n20gpkFxNXWuIPIYzv3c9ikf0kl9hk3rUk2fQPtITw/oBHFIvsAx62Ofw9Evu\nPCqUugF6yHmHXl92QXmX/MEUjcP6Ej5L/8mVKaFP8NvjnH17s4jc42sATWha\nXJ3NEUZllqztD/TGMXStYHP9PSFtzFLnj9iWwyQRKe2L2TvDviNgBZXmYAi+\nqLg7Owwx8tzoYmZwTZjeao/cmA+gD83ehZ/sU0WFOjHgMKq8eTQWc2j+5DcJ\nEGx3BB4KMJZFzG6EwKBD0hA1gcpQ0ijaXPGULdAgZLBflRdIMRxWEaxLh56i\nPRde6TTyZ5Dp52TLoATKau3MgSxNURnheBuMbzzx0MHwt6+YbSpaXSqWWEam\nx9p66h4ndYc7fnXDpmZro1SCBtc7H4AM8xzbm0+j+UMg+Mf680Zuq16Z7AOf\nAGtCEMX2YxaOqqfNvZ9Cg6ystDr47uVbEvOU9OAc7IjzHC1KmFOW/JzD2+Co\nrL+UOyUc9SJYg562fUmrOn0kwXX6GUEdJS8hNBS0+t1/hoF6A4uhYUztLvfx\na5tn\r\n=+B0t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"42847acb8fdd0b3526baf990f745d5eac26022da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.39","@balena/jellyfish-assert":"^1.0.37","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.31_1607762493854_0.3487202245782042","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.32-renovate-non-major-90a1f910ea71ab0efbc1828395ac5816e177a079":{"name":"@balena/jellyfish-sync","version":"3.1.32-renovate-non-major-90a1f910ea71ab0efbc1828395ac5816e177a079","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.32-renovate-non-major-90a1f910ea71ab0efbc1828395ac5816e177a079","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5fc9371b87eee3267b110a74ff20518adb1832d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.32-renovate-non-major-90a1f910ea71ab0efbc1828395ac5816e177a079.tgz","fileCount":28,"integrity":"sha512-LwwF8OP01HTGi8NdYxB7qfarz91Y3jtT2pKFoWotG8vSUHNqiXnmOHHMgaluffBEZe7YHZZ93888txd1XWOX0A==","signatures":[{"sig":"MEQCIBIlVs1sihREF3bCUTdIzCI/r2sc4DM01saM24TbWcNCAiAURdvmWxVp06VDTnDdWNnpIQYXZeQVbR9mvJnTU49TjQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1INTCRA9TVsSAnZWagAA5HAQAJ/vUGjkHqN+C1dz3aZy\njH08nbRw4SOQ/M9/AOXtDVYVA+ql5E6zXbJbW/U5j9rUq3z6cpsBsdohLLmT\nTQXyxwQ/oQpOyhTPXCXbFL87qUSdD7avafcnPtBsPnOwT2UfvaH6PSp3Y6lG\nTl+cUUAT2bZbYh6P0UjG/Cy3JnFnbuv4wIJFIo3BzYOv3aJYczdj5T06Iu2f\ncu2c8CnYDp97L6z1g8FvsndKmh23qrdOSjQ+Wk4k8Yru7wEQ0F4ipNSBlWFF\nUp2BPOddsqRwhC0QCYd8a+SlN1Xc2ajAnxZKxs1GGwqdASA7nY0GPSuFdgs7\nxEkTcef6LlgPQRzhOeWfC5SBwSBTaEBzAXH7NjcEuH6LdXLwtnAvt8k6xZds\nGLOtVVTl4QD5yZ5YoDw3gO/1mhtEVA10n8CpYG0Z57Xkn6ly8D/DdXo0unqf\nJMNkvqa8672EviZHQAeOhWbkOm0NVSxlHeMKHvTgBqjBLA/uwk6bMpIBN69K\nxk570IHyGU3QQ9jytRLt3B9yykkUnpogg5yW0gCURSklO4mcLmYare+thBSr\nhZwzMGYNGhYk2VhI79YCcXlllIWt3ccj1QVTueOvADoRzR0cBU+3fdI+oOjM\nNtcMowR08EegSPTRmOLmw6eOPU0IdeyLt5D0B7OqRIoS9K51QxtuYWWh3d+5\nPOx4\r\n=+3gE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"90a1f910ea71ab0efbc1828395ac5816e177a079","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.32-renovate-non-major-90a1f910ea71ab0efbc1828395ac5816e177a079_1607762770595_0.8291402523226723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.32":{"name":"@balena/jellyfish-sync","version":"3.1.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.32","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"08bd5589c76d3f9a467a8c47a57addfddba2652b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.32.tgz","fileCount":28,"integrity":"sha512-eYGKD6cX0i2nGzR+xxXOxXVtoKMEBENgFHRxS3fhHJyuzkhKVx0XkBdBIAfbLh5r8kKDnecH6YeenRo4sEse3w==","signatures":[{"sig":"MEQCIDQXKy0mru1bLhBSzstKj8pV40bxiM/AQhx1iZEG7RIwAiB2Z+XXwDxDuDw51fZ5NwW1Um8irCy/cb4KRLzm7HQ2sw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1IR4CRA9TVsSAnZWagAAKvoP/11U5OVV2RRBf0ayOM2q\nd/GYKLBgFgI5U2grMZf8Nnzb8kYTxykvYaG4bPcU5zG91sM22+N6P0BKTgqk\nEy2p5xgSToqqGmxn1MwIVoayxu35/caEa7J3UF7duL5eYgvtjTPGqbN/h9qK\n7x0w2aEkHG2mCKjgsMwEkcS99E/ltHJGjSMFBVaB2GwDjNB6y0uYQ7A5rQLZ\nSPgIPISaLilQaGkNpHYo2BFL3rYuK9v6VcMZ4yt6SgxPvDgaerGiEUKw1o7J\nJxXV+AGOjepK/G2p7zdi2TCiGjH5P8hBiqxZWyXDULLJJ88Wm7DEd9W/czB8\n7/LenEqVkK3sFtfaEL38vQn1dxj6BOrqJc3tqc1PAKP8en5UbY0J6qWYKtiM\nZuKi6XXywiKQ6CPhTDOMLvfuHen45YepLkJBGtjNw2yblaf/nB1IOw0QaZ1/\nBwzJeMIoVh6In2AW9i0A3XwEP6208PH7hwr8OPcCPFhXVRmwU7HwlaW/zpOO\nVfQc1vnD532GeEpdnbgd+yBUZcyKNkzXtNYA1I60MOIW1mRT9M8LSOq3JciQ\nix/a7Zca7MVeyoDtZWpUsZep70AGFiGpavNqqlQ16a4cQGxQhNKQsddoSGVf\nbTcrogyCu8Io3KVrhRMrAtxZwv1TgYamHAM5OnLMwSSnZzuH1zSqS8ZVNCPn\ns+az\r\n=jmD0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4897883e06c58633e2833a6592b62debab73fd0e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.32_1607763064438_0.7332168309171088","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.33-missing-company-name-7e8d6d5c86431ec914a6bbd55d15cbe4f463daea":{"name":"@balena/jellyfish-sync","version":"3.1.33-missing-company-name-7e8d6d5c86431ec914a6bbd55d15cbe4f463daea","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.33-missing-company-name-7e8d6d5c86431ec914a6bbd55d15cbe4f463daea","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"33a4a0c1a14a96bd95d833388c06031f0caf268c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.33-missing-company-name-7e8d6d5c86431ec914a6bbd55d15cbe4f463daea.tgz","fileCount":28,"integrity":"sha512-zPNrnPEHEMrgUv37d3qHSso1EL2jqPqgGTSHD8+PUEqT7pgzvoo1Q5njoZjNV41s0Wn8k8cAuTRsF5l33y99Fg==","signatures":[{"sig":"MEQCIEuH42DKEhV1SYiGoqTkckzSWMldjyJSYGG3LUthmEs0AiBHyCgdVE8xxnicvODLXVjRzi+oViE9AYeMO6CucZ5pLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1IaFCRA9TVsSAnZWagAAD+UP/2OPxFQ1UGnbiOZi4cTa\nZ1Z7AVMAY7wo6s2ouIMWWqxYF0oVoMUtkqoH5fIAr/M5QAI6tzFMjj71wPrW\n8bMMWt0rpj+bJwJN4Ps6X1rx54xpYz5aFuJxmLMqqcHqspMOF3KejuaTX3Sl\n/8a/j2W3kfdwk6PWO8vVy4Ajj/2TQzPcazQjjlK1JbtqoGUxpn/NEYbmWdew\nBpR1qwTj+cLYc+dvSzbdUoz7CKn1u95Vj+TfMn4RgRvnknUuLQSAJaBSfBoG\nqnHgquWShGxJk+9G8DQFansLVu2RqRPY9/x1xfq37zYDDk272WBStM/0QU78\nMgNB8odAfLfO80AZXts63U79X5ErFZIanzZz/pX7exEoZZPU2UWL4vYHC/gi\nLw1Sd/X3S3tPcuXECxDB31U5eY22rE/6GNYJXJi0i0WfdlwU8/kONxel/vHL\n5YSH/I4Hw14DvGJuz42W0VJXr0wYIOxaSDmVIHyKyUBJyBGVIC4HLK1VhHuj\n6h6jfM5LwKEZKW1EC0yVm8kvIIsU56LQcwRGuHQL+4JD48OPR+bGBNJYym3y\niCLJYpaxpOKCzLKEqSCVE+XHyhZHfuyTt6nyVOcgTRwdYewtqVMx4brFjVGi\nxkEx6/fyzksjDKqw+Ylc2eeP5PER10YNqZkrHz7uZraXtQ7YJ9Uc+0x0fRFr\nsd3S\r\n=79VL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7e8d6d5c86431ec914a6bbd55d15cbe4f463daea","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.33-missing-company-name-7e8d6d5c86431ec914a6bbd55d15cbe4f463daea_1607763588581_0.35862797087914267","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.33":{"name":"@balena/jellyfish-sync","version":"3.1.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.33","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68e4d831f1bac60065e248c31da4132320fb4c14","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.33.tgz","fileCount":28,"integrity":"sha512-uO/+pvexJIONlGcxFgHm6ThMrJD+GrRWE/Vifv90OB5+S0bZxLOzuoHQTC3waQouSN9I9zX2E1BefTwS0AaXdg==","signatures":[{"sig":"MEYCIQD9iw/JAWoX4g2NlNGnHV75+/+YjAkdFXqSNCvuyJ8l8AIhAPUm2InGnhm4tFSBFKgVu10VdvpRN6wHUrB0+DQWmF+f","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1I7uCRA9TVsSAnZWagAA4+0QAKO1rnnLQMtt9TZhk9bP\nudU9PDuJ7QE70tI1h/9B2FzvLOyztEUlYYyR0FHrE42Upi3tA9YmW3ilmkbN\nHaKjL2vWu6elQfQ+89uVKAUjl/ztcSBczDvQf+9D/2SXSr4pISU9rWUHfoXa\njdHsv6WSTVUYaM/8a4or44kpFlf0DGO7AwnpZrQ1VR5OR5mdbXbf2AdZBWkB\nGAkeIShraMXJjmYfNuEoKE+VaPDsAa2OChzBWezLAxr86lnp5fdjqq6wS9Um\nNwA8oqquak5p3YIwVQ5QWaEdU1NFDJyQqjTzxX2w0LVdJrDOKacZ67dMzgQd\n3fs8zZSzv9NkL7vZsWCMJiKWNChAmzv7zt1vKG/qHAq28ews8V2nBtu4Ks5C\nHZMWTA14uh1ErB52Q0wiKkO6a2t2bbFLQhqhBG3RmzKi/GFdswbE+lAnkD1L\nbAV/4OyxrXPVVxZ+ZuyzW8cZ3TR0deQdLV3lU0RFROxXW19WDFEI0VyFzsVX\n/4ZLr5BezC4obRQjZhxY33vEjVAKkjiYMHRXaM/0lWe3Q76Xqai8qdoXe3SX\ngtpIVR6YXETOj1+GE2oabbh9sDF2qWQqf34XLv/ZdGILE6itczxpo6OEqshs\nzUObT0qDGmOcPPsqE4tWUvfISzHUvSNLMlnFVU019s0eU1sqSDwwY+2garGr\noZNs\r\n=w54H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cac536786e5c38c0d67043058d0428b23e3b7977","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.33_1607765742214_0.8235270883567933","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.34-dependabot-npm-and-yarn-ini-1-3-8-91c308fb0605da67ace6cafe98a072bcebdeefdf":{"name":"@balena/jellyfish-sync","version":"3.1.34-dependabot-npm-and-yarn-ini-1-3-8-91c308fb0605da67ace6cafe98a072bcebdeefdf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.34-dependabot-npm-and-yarn-ini-1-3-8-91c308fb0605da67ace6cafe98a072bcebdeefdf","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"64b8073139993f04d564e3f24b90f44b2727b760","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.34-dependabot-npm-and-yarn-ini-1-3-8-91c308fb0605da67ace6cafe98a072bcebdeefdf.tgz","fileCount":28,"integrity":"sha512-QWVSMagBGUUA0Qny0G36bDCiC3N876D4XdP5JLWuqEdgeGe5sVy0zHK/mbFu5nGbOxZHbFgFsFX+sKhHMlIxtg==","signatures":[{"sig":"MEQCIH2k0IW8NDnzgpslu9q5mc34DTbQgomWXwbRsS96/+dmAiAG/SwKGlfD5JSFXv1L4aHQZvAVKXUslJi84z0m5H+z8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1JVkCRA9TVsSAnZWagAA0gIP/idpK0RfuYZo7Qlg/qQ2\ncblb+8URS1pg6JaLIyJrCuioUxvJ5EbjDSM+srf/az1OVW3O5PvYpluuJB4J\ncakE6Yf0UBZXd21HckTH6mnB4VeprQNHu0QAINnU2pB7VbUIhjUpvSOMMSfb\n7RkSeJ8uAJVNHsConCSrWKVCH/3sUkJqfeM/E+LUrRhA+m+4uiMw69A3fMCg\n2AAGl3QM+Lpk/uDBXSTdr/w5XdtW31ggO7aNkKV9lAuZgzhIvCT+mtYcnuYM\nh2HMBFYS5tj/ZilILMkFsJs0gXPN4Vi0ylmxhh3yUxF/oAdegVd5XbD3ujIX\n1qFpXFYdFGkKEvxo513CeIW39ShLSOvT7TlSZzhiWNq5ZaRGJWNdryR1c3MG\nCZgz1EorgnpmXg8CsWsuucBuU0P4g++3GnzeAseJHQtija++AwNtEEFP5Auh\n2w+sAKrvjXWx/NlMWf+DaB24MW4kJUl6ambDPq3LZQk5HQiKno7hgp9TlFAm\nAfsSSAGNzRstDdPmCECMXUaEY7llGV3m3bzSYvFlTLvhA+XvIpzbBh4mZrPy\nmSJPo0bLFsnjEpG0pACfLYttS4LVMr42s60iYXDnfXzZlvri+JXkoRhAA3pq\noyn5RNMh35F/M/vfcadeZ0syIdn9fSd3wqmtiOwts75lfc3kgpDjkCwdngxp\nuRAa\r\n=VM+H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"91c308fb0605da67ace6cafe98a072bcebdeefdf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.34-dependabot-npm-and-yarn-ini-1-3-8-91c308fb0605da67ace6cafe98a072bcebdeefdf_1607767396434_0.1298170991542107","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.34":{"name":"@balena/jellyfish-sync","version":"3.1.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.34","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"597b5e27b5a00f749e248934fa276140fa6d389e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.34.tgz","fileCount":28,"integrity":"sha512-teC5xhaXz14k/WsFxh1kX1aIDkMF6sMOlGbBhYw7MbcmVOGSIXqR04BmiS55Nx4EyW1Zng81FnfzxpsrY51Elw==","signatures":[{"sig":"MEQCIGm5sDHuagknIX+3bQrkMMEuS2dlVnSHTqjHWSYpld3QAiAbZiHm71X9f9oJdkKNstYjLCiWBHFVgTs5HsKAv8BdNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1JYeCRA9TVsSAnZWagAA/GQP/A8R6FtQXpC3EK/fAvqa\nT1e65G4JJO/2JkKAs9Bsf1TdVJVnJoGRs4NIBz/peL+NuJMoRdlb/gsTo+BR\nWZHIle/6hZXGVwcXpPwxBrgby4BQTEqK7WQhrVGky6E8EBMp0MIs+ev8IE3s\n4qfBsNponfdUi88iEYvgXk7NpEttCpTLeX8fjrKBvCBATBJHsyjENmW+SEHz\nInFjDwZ4eST7y9GgvBTbtOTM2fOAqhiaRIUuxLGkW8iUEQzSVRCDeo8QsOo6\n2zfSPlhj1uzzgV4nQ2Wtwn2yzmXmdiRbfAoOJ2SwC0NuPHr5ngZMf/VIV2Lq\neRqAKW9ZBCBEUXGnkjifySRtZb1sWBAgS8LPMMdjiMUtPpI5lwWstxbV5ubk\n0rIsnhcTTYqVgSUh1SnFauFEwzyrurBm2eanvInvynNfjFzA7WMUrbwTDZdr\nHaaWxWQkpKFgWsETvJWU0sMrCt5LKTnOUWnKUJHpGacNcoi6VDK/TMB9qE14\n1JiDgnEZrw+BjWhsuMrH8Nqu/qkd/iDOSG0dAtg3swBcojCBmGPRsZoA9/Ni\nYOgyZ6Wq4mq95GGrlS8GWxmUN+WU43BXMCTgBBCV6KWN5ObkaXyxxFfSTQHV\nkgGzKHVWv8xgW5o5fxN9Wong+kzD+rC2F7P9xRxkv5YQCZ3l/6KFck42h84m\nRe1C\r\n=2h00\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"74f821deec3eaa62ee992c86cb6acc9cffb456e1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.194","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.34_1607767582388_0.17618373401696297","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.35-renovate-non-major-b0bdfdb4fe0db363464f5266eee158443e35dcdb":{"name":"@balena/jellyfish-sync","version":"3.1.35-renovate-non-major-b0bdfdb4fe0db363464f5266eee158443e35dcdb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.35-renovate-non-major-b0bdfdb4fe0db363464f5266eee158443e35dcdb","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf9355653b49d548975112f556f7929c630133d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.35-renovate-non-major-b0bdfdb4fe0db363464f5266eee158443e35dcdb.tgz","fileCount":28,"integrity":"sha512-x8xBJu2jodL6tLUaqDdZCuWFmCtgsZ9kFFsWcN+vrEh1JB6sdvKEetspe58lH36/Io2aPxoFoRql6yHA2p0L6w==","signatures":[{"sig":"MEQCICKXg5S3hV9sjMitsW+3geMfJ/Rpf586HP9ZGPjYlpovAiBHNlWejKIEASu5pWXg4jiE/moNH0vcbtPPY6fdjWw6RA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1JicCRA9TVsSAnZWagAA0+oP/im9awauioJ8WewQEMvB\n89XSsJj4EFiw7ylOjiaYsurqtUo6vepiDGIq2Y2zXUv/qc0frcxiXubmA1Md\nYHaubZ1j5B2zzfzHKfqAKKIheEzaP5SCBgZ8CXYoKz+1LSq5WtGNO5wcrvzm\nEGowfwd8P/x6B4JDx/CCVdJUib/0LQJ1L8mybLuYV/Evt+jR0somHf9S962Q\nhK3+BX7zv4W5XsYXAMWXwxiv3ky+tbHO//WFA1w7spI92vu1anEEZV3jOMTl\nJNyYKMlBUVFLc+VwzjMnrCR1JugLMZvtqsrKj9TOjrw0s3V+rlQ/Ls0M+WmO\nqc8CeEcE3krQi+J5nZbnfcLLPpnMrYhjx8FMpI+iS9e0tyiQMiP4cnLMB52v\nZLsR+/qHltlc6vS3+IvGG3S3vGHb9NQDs4/csI5RIkMHBSbwvc2Bqmk8k2lq\nHu015Gel/vwziZeHkNwLfZyyk/ryvNPIt8qh6HFXw3nd85y6aKoMNWXa5Een\nCpOWftobpvQ/hKz8iposWCJZMH7iTT1sFZq8okNgLFvVujwFsLw8pSUC5mCb\nh04nGdYMnx2EOJv3OhDZPA5DXilc4wZkLxgGyubB2yr9uwYr1eaFq8un6nvU\nPD0058vzv3MheNan17Fvn8yf1hJqL1zXh0qCgX0cuTadp3xLeyA6QkWI2CKg\n/G9u\r\n=tihs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b0bdfdb4fe0db363464f5266eee158443e35dcdb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.195","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.35-renovate-non-major-b0bdfdb4fe0db363464f5266eee158443e35dcdb_1607768219815_0.3652149931533524","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.35":{"name":"@balena/jellyfish-sync","version":"3.1.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.35","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8320ce57fa5d6cbe9f7086cd83868b5601f750e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.35.tgz","fileCount":28,"integrity":"sha512-1fZdoMFDUlPFOptQgZbfxVFtUQFKrvF7k+DTl0nM6sVXIwpZ1WAMwZuQpWfAND+lqtigLCpepUUCQ+ChStQbsg==","signatures":[{"sig":"MEQCICNNL7N7AU2LawPHTn9+1EVfjgOIfvTL4sXkqOOeLOOCAiBSsxo+9uozhCnRhaoK+wiBupaOWRkstAFJafo6QzQKeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":280965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1JlCCRA9TVsSAnZWagAAxZ8P/3UUDdKd84ZtVPVUPYJz\nrZb37Nygu1QZ9q5TTSL8POmf4GJrRIUkU8P9czy79umkZ+P2PQu8G8xStA/s\nEH1n8cWleuBr4NmkbqrIDSu7N3JAOIU4pU15kZFCpZPDZ0Yj+Q/mG9tM8Nuy\nHKEbpMySsBpbKveYNd0U2y7H3m8pu1QQkIthAfXa348sJ+bHLjz6Lf+AFvwI\nBHCZ3vSy0rC4+j0ovkTo6x5o/y9XJ3Xp5b0egLdIy/BRMdUze0HLtuvDRuTo\nZV66YRvz5veFaa4ol28I2074VQsUb+T1bIV7S6uBnpOhZtBpA09wuabUJJ4P\n7T9rNwNQkszcintdZ9Q3hiHZztG2MIQEEiZ+C80ymNBFDHzMAjXCEosPC3hL\nN9IXzVZD8NyCMxncnQBWJKIBxnd+eMteQRlpnZEIhHThAfs4KAXePlVHcofy\nuNakLIUy9dqPmtmixSIbo3iVxo5YzR3WKPftOd8ExqZ6WT/proe7ojC3lQVq\nVJrgORRvG9lGceL2UER7sibZp2jAPmsDFwj6lBmG4mAyfpe33g/FNvazGe/A\nJveSISaHHHH22+aZqe9FvNjKgJA1wY2uUYa0D+cnfXv+UFERbon6w5Xmq5hn\njfP2YDBplq0DW3QJj73+m5pXE5pmGpe1Q2hVv9wfkP/xKbQEgtDO1YEQi9Up\nu5aQ\r\n=BZK6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0612d993c7497813adb3cbba54b8de5ce662bd74","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.38","@balena/jellyfish-metrics":"^0.0.195","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.35_1607768386226_0.3038010509240565","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.36-renovate-non-major-d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2":{"name":"@balena/jellyfish-sync","version":"3.1.36-renovate-non-major-d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.36-renovate-non-major-d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1023795f3bee81aca32e846eae6f56b768ac3ca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.36-renovate-non-major-d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2.tgz","fileCount":28,"integrity":"sha512-z3Tw2WFXE8U0A0W6BFHV1X6VbI8EqlzqRfwAfXV3zib85Wc4ys7x108KrzwG8e1UykBPxYwVvm+NlEnhijUilQ==","signatures":[{"sig":"MEUCIEhwSru31jiiNoC2e8gIFn5oEvi6Vh0WY7XEa9cElCw7AiEAtrZ6B+6w9WSQ8JXIoWt/oepy9A+tV0JaelCTZlWgHuY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1NdfCRA9TVsSAnZWagAA95cQAJNIks+9CAqJl+5421Br\nc8WDQh/bY6AcKMuZBmJy2Nct+lEQOGsjQ2yvQ26D2E2Vd70EmTNvDdy+e2Ey\n4L3Jojs43LEi1H2+xVr3lGWxKaea5lg+/2sBV578M1z22rW1zXG85zCbcdK8\n4U8/0pirG1sf8GKwgPBTtkzXIZvi/BXMRCmxm0cn1hvyOC1dTCbbJilKKisz\nzT0gaj1I63m+MTpcYbrZvfVcYm4f0Sf23fDsyqNiBiJCsczq33DDEAWeWt/x\niY/wlZ1vmDaxfOokbAaBOcKk9HGZNnDB/gLVK4FzYiIJgp7HPAXUgilacfGX\nnAQQHNbTaYjW8kHdziAELXxlY4KPsxiKFjw4YMnDoOlwQIbT61D7EFQeI93N\nWo0iiS3ZyQT73dy9WN+loE6z20i0rgXuILTuXA/TYCAhFVOXiXrm4x0HhrDV\na2q46+b0PR2T3cd+O1yReYrqB/FF5KeBluESD5xPyI1LTGbDG726si49ZmHJ\ndnVIKO+TuYfaiLuJid5FJukSv1HaGSoEfFUVIYLfOD2A4sg2MfPUXAbjIQGU\nCrQWv0Nqs6jHiMZEZ9RSy34XcbQSfrqiZu/Bd+jzu/MWb53+JvsonetwTcWF\nLoR9o7+I9OqteGzqBQ/txfGEgW5iWEsEB4q8qHTRc4cXBJJ+ReSAOLxpdzYs\nbN9M\r\n=gUOD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.40","@balena/jellyfish-assert":"^1.0.39","@balena/jellyfish-metrics":"^0.0.197","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.36-renovate-non-major-d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2_1607784286935_0.7070576192452502","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.36-renovate-non-major-e350785d9ff5c8e001a32adc5d72c19a1af273c9":{"name":"@balena/jellyfish-sync","version":"3.1.36-renovate-non-major-e350785d9ff5c8e001a32adc5d72c19a1af273c9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.36-renovate-non-major-e350785d9ff5c8e001a32adc5d72c19a1af273c9","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"55e055e01dadd363ee9f4d669944c4f91351e2ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.36-renovate-non-major-e350785d9ff5c8e001a32adc5d72c19a1af273c9.tgz","fileCount":28,"integrity":"sha512-tY1QTG6NrfyK1FUabs9VV+y2HLfD1adJD8Du6DETEs4mnHw6Md5OyxPGakkqE5a3bdY1Yt7d1cXtQUeooOS3Ug==","signatures":[{"sig":"MEYCIQDB+kAF7vvZcAT4jTw7GE4/hVCc8qHrvL0EyVBHWCwlvwIhAIDfl8X6MjpWrpjpKBPEyB6H/b3fWL9z7jT2QB4+0rFD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1NhgCRA9TVsSAnZWagAA3nEP/icQXKpJA7Yzb5ypVTXv\nPBgSzVHlSh5ofc4RDtzE69fduGu8mnpQOdc+SZHXKURtWQBkwMpP+a4AAV14\ncPfOIvghnHiIJ7nemE9sa0eOX079wORpSMrV8GEqkQ6jHXVhi402txIUitJA\nPbYUhMZ5GM7QgubTiSp3aTplJcfSlHsH2eLqcjS6+a+Wx+odhcWSgKQfRk2R\n/0Z1Xy9B7lBYMO5/lRohCijb9xtP3lrPDwCrRoH+VGPl1zGKpxX9HfTx+/Hj\nEGAkdvPx5qsHBLwxs5wgpJ7D6SJSfcAEPGsJUaOjgpbV4g0oiWrKDSmq9E2R\nLJTK79yHWTQBVehdgRRoIVwIjdhCYhvaRNW6InTVinxJOQ0bxCapz5Rrydyz\nyZ6vByBy1cz4WCLRv/0SznAFuvo3dT7dU8HISdZ9OtEwhKjizbqK7mGYhlZ+\nHtixpYOk3ijiLlw8q8BUz9vlMJbjdd9qvYON8I0zdz6+NIWQhlylI6WegsLM\nIMhtWeeJ3+eHJMaOnRoplQwiNHzs+9+sEgj2RDBNeWP9K9jKHfL6aXLWHAWp\ne/+Dd6h7Cq2xWzl5pmLt7Pd377YFzcE2E5ULrG9rl3P+Bq7T2Gz1ATLXm+Ig\naJXRo7Up8n2rP/QLej+MxnrB2VlRU+NGljGldLcXmedQMJA6C8hO7uEckaV8\nLDqs\r\n=iiuu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e350785d9ff5c8e001a32adc5d72c19a1af273c9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.41","@balena/jellyfish-assert":"^1.0.39","@balena/jellyfish-metrics":"^0.0.197","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.36-renovate-non-major-e350785d9ff5c8e001a32adc5d72c19a1af273c9_1607784543470_0.8331872945009735","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.36":{"name":"@balena/jellyfish-sync","version":"3.1.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.36","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5dfec28e5863d594e88936c0aa47a2a81ab1e98a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.36.tgz","fileCount":28,"integrity":"sha512-4AYFIKwauQzahAAqLb78iTr281lbl1LlYGEYB0nNeOH/zgAVA2K1aLOYO7LBPCKEexpfcQwXhVVY4wHFJfDcAA==","signatures":[{"sig":"MEUCIQDxtpzDzoFFv5B/WbYh/tSA+p1itrGX18n7WblEWIBsggIgF+XsOnqfefjEAM7ut/PVNHNNM7tbBCGxI+4tZk9DjYY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1NkWCRA9TVsSAnZWagAA64UP/jbV5106k0U4EBTEfiSi\nqPiwBKH2QeSdCMTggW+FzmB36GGTsXRSPoVG3kbtnMw4LLg9CYK1ZkXOPrlB\nbTcSuasOyr6DiwnH6UPy9cOK3UhMOuB3zNU2NITuRwQXMGUwZw0Pxw9qbqf9\ncX6Vhh0frNgMRNNUZtFYuPxEaPBuVxCsau1LXceney4OTxXaPGq7HC1YIZ9V\nyXbQbrVN0SgkT/c8C8J2LgeCR1RQ7om8MVyPlXFGVaQm3lC4dAIch8Vfm7MZ\nLjxAvZ0ROvZDdLPn7G63Dgq/rYJXB0uLLjMBH1f6XZWoC4uBwImOHvyMZLgM\n3haLAJADyLu6JOfvLE5LSSKFvL4KTPf7h5Z9i7eUqGnUJ4xi4P2H7Xa55TuQ\n+CWk9HVqifClYbq6nmw7H6S5scSqqmo2H91noXCbzv9XnA2y6u2lqgnbe+d1\nTGlbfnWjggI5bxmaHzJPzIs3ZboGrO1D92j/ByAUOhBAqAS5/OcvDTiIU7ZJ\n87RuGqj+u1NEvCpCQ2zg/lHGYPdtsTo5gs71YQC2qLuRj8lt/I2YqR4R2CQq\nDKyPR8iLH1fgFJzhicE54n3lbciefcpT2p+skoJAn9U93xYVj7r+ov63geE6\njmK9pKZjpmBaI8mYkbTRaNq+LewcZOLEl8Y60IVdpaZDbKfQO/sTifmZ5Vug\nHKL7\r\n=bGEP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"31688b277035bf353e3ecc147e4d72dd92d72cf7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.41","@balena/jellyfish-assert":"^1.0.39","@balena/jellyfish-metrics":"^0.0.197","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.36_1607784726112_0.11745624807285115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.37-renovate-non-major-c257dcd53ed7c1ea2ab446266ddf877e6568f061":{"name":"@balena/jellyfish-sync","version":"3.1.37-renovate-non-major-c257dcd53ed7c1ea2ab446266ddf877e6568f061","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.37-renovate-non-major-c257dcd53ed7c1ea2ab446266ddf877e6568f061","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5369d5249b8accf49c422dc637f48b98d1843046","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.37-renovate-non-major-c257dcd53ed7c1ea2ab446266ddf877e6568f061.tgz","fileCount":28,"integrity":"sha512-HM+xEbXe8CBwaLq1c8DiRgxPG+fDWSeOzxGHb69EV9WhUee0rlMARXfPCpFf2lISGhr3IoYKb3PA/4IHfiBrLA==","signatures":[{"sig":"MEUCICZjqxQJbuXcWaPihlKve7Gp3vxhbAIfCzO9iixRhSrqAiEAp1w+hSeUncPP7IZ6CCC6x+Cl55cAo+Ty9OZEx2QdgLg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1QjUCRA9TVsSAnZWagAAjLgP/iXyCq1Jd4VgCDEQCgIy\nxzpY1NaFLjZuhEbkkvZ2bjS8xawz6poUL8KfXjdWy+nZwj3JCEGxm7IhluYZ\n6Wr1B3w+MtOY3cgxYutpXvGSfv8wT0zAeAUsou05AuUG7DhoohMPzBOdaBT5\n4wGmkF4+XpcWTQUpdXl9ynwwCIxtwPmeL4oZj7MYmgnCbTfe55ADhfhd/GpO\nooEqVszHKSdQoz5qZcHnRHAtOAhCFBtS7bEgz0X6ivzTlV9yxOr3+0ynuCKv\nu/+Nk/OsTeGwuef8f/VAZtjZlsYjlfQ/xr/eWKa4H/zDxh0Lhq2iuByTgJ/J\n1Ranyb00mfTAvq2fvxeDIBVkYo+BJq+O0mPcgM/qhoolBcAOgUpMON2T0XCS\nSQyGA+2mh9w3KE2Afwd1u9GmwHKSXy7mFKV6s4rE3JVDoJwmP84VmlU/cl3t\nUQ8So+5q6VKirfpE7Ln4nEsrNU2+oNsz3bxIrTiTa9TAI0lKKMv1ArSAi0V4\ne0Mqbf6skBSHG1QXVvqqedKXb7qtYTvuLQHb0tv7kacWugMB3BYNGbdUk2bS\nzshLuYDBZhkg2qNC7HTljUQjscdSwYW0HmsO6BSq5zsBfOfzaSQjpdEiWTIv\nxAZMUq9G0ZqkhbbzxhhXsCh+p6M9Iu2mWMnic9qmVZj+WT5djOVaH6lPlI/l\nZWUJ\r\n=Fy/e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c257dcd53ed7c1ea2ab446266ddf877e6568f061","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.41","@balena/jellyfish-assert":"^1.0.39","@balena/jellyfish-metrics":"^0.0.198","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.37-renovate-non-major-c257dcd53ed7c1ea2ab446266ddf877e6568f061_1607796948227_0.0342651388560411","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.37":{"name":"@balena/jellyfish-sync","version":"3.1.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.37","maintainers":[{"name":"page","email":"page@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b8eec768afe3edf1e43a7b2a2944c3288ecd8cb0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.37.tgz","fileCount":28,"integrity":"sha512-tsvp+yiooKMzUxdfvSjqFXvdp3e0wEDnnsAS9bwYhf1VzzOne5eIB5HfRzaLHI87USev+sFKpeKSCJKL4fx5fA==","signatures":[{"sig":"MEYCIQCtJ+GZ4dSntQ6rFFKDPkiLrZMYF9uxp30NpfmXSLnQbQIhALfktRmONBJqfmxi7ByYEDWBHUM5+3//XISphcvlx7OO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1QmUCRA9TVsSAnZWagAAoHkP/01wPrnYDRIIy2mahJY8\nrDi5ftJqPeRj0OKLXI9e4pnPdYXtmN6xdd1SFKBS3JMwsEu0y7meEKq/ZtNx\nN9PX11sB5S+TjwWTCOiOAsrDrUnqLFawgeMGkSil9UF2+013AHtqHGUdIkMR\nOswFhbyyXzgIBDBabdepy+0aJUIBaiupTaMNotodbzr7S966SLGlvYCKpuYV\nw/fWLz0aXKS7bu8jaQISirQfjAwMeqxDYV2PVArsetv5Ci8TKecZDMB+GRg8\nl8dHQhQuknPgmaeI6XT3s3Km3PtWA6KKZHem4/gNDXP3wz7zIDZAS/2MVWrb\nZ5zm7YjnrecMbrlDIbF8G9VNFY5TBi1J4EI78BJQjB8XVtaLQKrzdtDFwfyy\nt5BQHfvBRiUgPk5XHw/gT6MNB+oMM4Rxy9ABcoWLbtlRrCxvJl29ur226w9O\nIlF7sGE4X0zJ5TLxmeCeqopwRTaHlmFSB1SO0fsba/HSoflTOHk+7pkJt4Iv\ndMmqc6Tytw7MD+qU8RoRH9hqAT79P1eanhmkNvyPaw7ZRG8tpToOc1HfxfHG\nHtCLs7nNBNeiS3cj9pROD6wIV2CNsiw/qvNClNFBXvaUIdX5Re+s0gq3lBO9\nWy6/EnoFyufF3JW35cOJs5Ug8kN6Wy2YiB8UfY8jsIL8K09uoDXvJseauXoM\nK4g/\r\n=p8D6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e00ccd3b06621d36a318e79cf5f1473b1f212c9d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.41","@balena/jellyfish-assert":"^1.0.39","@balena/jellyfish-metrics":"^0.0.198","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.37_1607797139902_0.9259290827639934","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.38-renovate-non-major-86088a17279e71881af15ccc52ed9ede7f9fc916":{"name":"@balena/jellyfish-sync","version":"3.1.38-renovate-non-major-86088a17279e71881af15ccc52ed9ede7f9fc916","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.38-renovate-non-major-86088a17279e71881af15ccc52ed9ede7f9fc916","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"40b8e61e795c12562c0fe7ff9e6372ae63e9ec65","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.38-renovate-non-major-86088a17279e71881af15ccc52ed9ede7f9fc916.tgz","fileCount":28,"integrity":"sha512-5TdOAv16zBLCu9bKXVjJJXIbPa6CZwis3pYxCuzZn0xR0bq1OaPp/VKnxEVD6hfHB5pBYIcbnO8BAW2BXPiiyQ==","signatures":[{"sig":"MEQCIBuUR2QvXhJ6YXIqdL4J/1anQz4oiEkzkx4NvD+mGxvPAiBwT8F8/mrm1Dk4npAbfNeUdPQ4Yj0tg5NP2XK1jo0A3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1megCRA9TVsSAnZWagAAu50P/RDnEVfsLb69Nl/WEXUU\nA8HdM1qTw137hBpzpWiSduCvJ2k73RTlnQAoVtV7H/YBIPl9EdtoUvllgVNz\n5Hss66eGEPpebz9koozaGdpBrd+mCEcAVc/FOOqkSnvE307OM9pwTjHcs0H9\nTE0AuHFR4z34nNDp0IA+6yI+q7ctyzXNHfd2aNg9a/m/3PLHKgVfBt2sNuq3\nhJnKsbFthtRhaAsEtKv4HBPOqVk+eR7G8qeHYROx1LVwosgUDJlwtVI9Eh2m\nHLYvo7HzcmJ2hyi9apx6P5ZLycht2pZcOG0ksbZm/b2XJBRrkc+OJG7S7iPR\npYMzBaAChne7QzlvFoMAisrjuktEtbp0SOAV4IMIe4Fz7l8XJv9zGR+Gn2+J\nrErNAb9gEqJB/bmtJfH7H3lJ/eaDJTxHLNyKn/yntdOP1GkCVkmf1kBGzmgL\nFBNa/8/8QUW1ETvsUfTCD/VOTHXy0cVXhElpdpbRSUMsboJ+W/crN2lDPlV9\n1V3PbIQPglCrKGXL7pNmz4FS7gLVYT92QZ55ETmy538YodGvgBFyQRBx6zYR\ndfcay22qJhfiZW7UFVUeiFdMLtb5z1AQomLCAcIvggvm979gxj6b+RULWdH2\nlL+yXA9oO7aueWN8XSk56PYmspRj1XH0KHPuntU6vGoi97IHb3w1Lhiasi5k\nHBEk\r\n=zCqc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"86088a17279e71881af15ccc52ed9ede7f9fc916","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.41","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.198","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.38-renovate-non-major-86088a17279e71881af15ccc52ed9ede7f9fc916_1607886751540_0.043471893531227934","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.38":{"name":"@balena/jellyfish-sync","version":"3.1.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bce83b951c2a698464dc09bc952ae89bbc5838ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.38.tgz","fileCount":28,"integrity":"sha512-AwoU7Ky9noVfGPeRgFr4uJgSGgGS9yJxdzDrGA/ymWirBuHjqJz7ZbE6xkmYSyGAyWeoHjRDfePqFy7Q6/wKog==","signatures":[{"sig":"MEUCICO7IoDHqqaKwxgojHMqxpdNbpi2dnZB8z499gFOO3y8AiEArzn0zq1GD6bIt0bcY0FLaAti5OiRMUsj9N0EeCQYQIk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1mhZCRA9TVsSAnZWagAAXS4P+QB0b6C2qDsIAkf4DMf7\niCx6jkhPQ5+xpo4gW2bDzT5OnFeYShwEAwAf7B1sUwcNVS2TJKiBd+NZRh2x\nt3z3N6Nm5c77SxQcOY1vzMCIlbNgSlUqQf53pD89Nh55RKvHQ/vjQ/HNqKQF\nyp4r2AvmJE2/2clMHmEyZIgEUq87/8Hsf01y6T2ebpttclu1FUvDFG0SE/fg\nsxHtCKZzxxTTg1IExtw4TbIG6tmWt207d8qZ1XiYFqBLvByMvT3x3RHag+Jt\nUrZdHOHlJh67jJJQSnOh4Aum1dJD89xDD2Ua0Evnt0xQvEagz9P+y8UPBmgG\nbUYhMW5vOU5QhN8phc1Nzs/rfRrkBBfDKHzjhhCj3SEMXuUrZN0OHKnibfV4\ngIS6TWudYoyPDqF54D8vg5RZL1bVybKW1iGbpZs/pHRTmkwQjJawvRrkHAXS\n0iB30dgAjUyUOtDdZrtmCT3H/OLmvpYNcof90MMEOQKqi+VWX6t859Kq7A38\nRIgYrGbb+5sCnXXvaA5fNkzB1p9btLPYagLETrQn1oYnqd1VfRy5b+D/Cg2Z\nBoszZ2TZatI1AutGc3EU1/yDBhRePD4O0g5yDbrne/M3nyrxlzSsN9QhF3Jb\nJ+JXUUN+c9FIBFz3c3WOr12NZvrvWipWSRnejfqmcGzHnR7VB8IoRTjNp21Q\nzopO\r\n=KdWL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fe8b69971c7c1cc2c905a71b5525cb049c7ad831","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.41","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.198","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.38_1607886937285_0.9116784006540004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.39-renovate-non-major-4c5a809f365748315966b11e030f205af9d169ba":{"name":"@balena/jellyfish-sync","version":"3.1.39-renovate-non-major-4c5a809f365748315966b11e030f205af9d169ba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.39-renovate-non-major-4c5a809f365748315966b11e030f205af9d169ba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"84dbd394160150932b81eccf93882cdcb1dcb310","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.39-renovate-non-major-4c5a809f365748315966b11e030f205af9d169ba.tgz","fileCount":28,"integrity":"sha512-QNNw/jJbIulyevyx3yp/bv4SeKRs336mGYY1YC6xYIg06sNZmah2QWPjski2cxIKqTeZ76D6GHktUkn7W1OGYA==","signatures":[{"sig":"MEUCIQDKjnWI/EPo+wwc1nzYmJ+QWhFU84suYw7+7RxmRyZzjgIgYAivXKtklAwekW9N+TvmADqvDzVnqsR7ExIj0dU4JxQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1ntCCRA9TVsSAnZWagAAZcAP/3n0ODPzk8ePV7lczMqQ\nEfEp+oYdUNpT/+ru/XTcPq0rD0thNmDdnqHLtQ481NZ+hxW2DNYdfJRRQ8cF\n/SaL3zVSrt8BjlgamPK+h2VwR1u0X8QCrp24KYDQQmbCeDRkczL8335Fpfa7\n8nt/oyuULQZtTwPGN79hO9XHelnjLDR0KWbKNaRcS5WeUhXGv4GhTdX4x7sm\nBgozIa9XWzqF0gXIJvp1E2GuZVDjO+fLQdONNx1p3H5qBhvGPRDq24QXuCEr\n20YTqIkIcEt4Qv5SaSy4K5vTWL4OYaNljmptaXK2C4ApuWy7AwhuJNnW3D6n\nsLTpOPo0W7onnGLUX8MTfrKpNMsV0HzF3uv71sMINgTNtb8ZwFycV6rmYfCL\n67WgmWAFO4qZ2Kzd96bZzAA/ieMPS1+lMnXnRYA2eWUcTuEKVI+btwIWCgaL\nrgcN1FnX/o8ViUEakzgQd3DyXu/5kYJck10pe7zF6KpnFLrz48TODKtpeKQA\nNt4MYWMoBLHRv3g75AQwzOhyB9/xCtWH3do1DgUS7oR7mcswQP9bav9QWGoE\nHXbus0+kLPwIX369mijfj3EF2ErwdcSdTmuXj/m1puBV9iG/vwLTc+L+uMXQ\n3m1btr0EDvO0sL86HKDpPqLRhg5qPl/Z2aErladx+4m7zbextrQunwQac5Z6\nwsPn\r\n=b4UX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4c5a809f365748315966b11e030f205af9d169ba","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.199","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.39-renovate-non-major-4c5a809f365748315966b11e030f205af9d169ba_1607891777782_0.10449031445621415","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.39":{"name":"@balena/jellyfish-sync","version":"3.1.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"050d9f0e27a177eaa2510d6181b843a921852dd7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.39.tgz","fileCount":28,"integrity":"sha512-Wic4KKgD7shkHH62cNGb07wZOjegveZJYuMjZBCZgNcHjtwHWKGrnLXYOSpDDd6eMTuigmMa/eifrNdw53mEDw==","signatures":[{"sig":"MEUCIFXGJybpDSk/qAqmhq5nAQWs3g4FpcyB+SXvsK2v0+wtAiEAtJ8doHVJVZDJGdBSPYSS3EIdcHUUJfQZ/xj7rxL7CqQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1nwNCRA9TVsSAnZWagAAq2wP/3W1gxEnMcS4VBLz85bF\nqSxZKMy5lvl/PI72C4leZgLBecXXQZzuqDD2t0PSXlEsnXgRJ52W+OXaK7Gf\nPnRDqwjqvG7LUokiVc0J3zpb74+B3QC5c3SDZJoQtmDOw57/bJ2I5e3bHmUL\nX+SbGHHLvIF5sGpsap6+MyQU2WAoKNw2Fx5LrZ++lk/xLmY+yWy407DG+llN\nLwnN542iPGSbkC6l40+912ikpdT31X0TGOA/BSf+pJwCN7FPJtHZ+AkynKFl\nncOx1rtLzhnaB7gZiUTwqjHU0MobSfO9hn/iVhtGZQyEbpUltOovwgCDX4si\nO+rFO7piwk3bYeNyp92ninkHrKiO9nskQ+7MyCE1cqjNdkK+ki5P+eogQ4RC\nEa0DifqwCJFVKmTm5BskRm/0q+56pA4M4a8s5XSAs5VHpM+wGrMG6GQY0Xtq\n34Rn80VeXHzs2QP8H0IiwnGqfbeLFjOxV8Vl0PcX+4kOFkLcW8KPOld2+AgO\nWLHbhDSO9ub6RGvituBX2Rg/GaedMngQwI8+qiKYifCbbOZObm7UpGstpi+2\ncJ2JgFbtGDuMrkiN+loRSyN28786jNecE0kxtYtsZ2Qw4+a0CNX729kuRDA+\njUbPYnNZ3g+LItL3F9R/E2wtwLSvUyZJCim8M0tv8LPe8Xblirhd6RbeBrJf\ndzxV\r\n=CSpm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"19788dfb708d93b66264d82236ba6173bca22a3f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.199","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.39_1607891981079_0.2748729600577964","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.40-add-debug-logs-a2adea0b71d8528e32c3232aded83b5473554cf9":{"name":"@balena/jellyfish-sync","version":"3.1.40-add-debug-logs-a2adea0b71d8528e32c3232aded83b5473554cf9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.40-add-debug-logs-a2adea0b71d8528e32c3232aded83b5473554cf9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0619f30d0b05b8fd5ace54382792d258ddb8f5ef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.40-add-debug-logs-a2adea0b71d8528e32c3232aded83b5473554cf9.tgz","fileCount":28,"integrity":"sha512-A8nu4wFBOQc8iPbXqKiAfLfzvH6wKZlu+dvvmztyg7aTgrfDILjxiFf0MiAj+Etp2Qu6eWTL2LSUopsZ49MKvA==","signatures":[{"sig":"MEYCIQD0/dNi6KrIHNXJyzDJf4nNW0zgUdHes6YQubphy/IvuAIhAI9D3qmCAq401va3cKK2/dfKgHLaPy8XfA1DFdyWnPbM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1uJFCRA9TVsSAnZWagAAr44P+wU11eCLw0OiHOiqsdZL\nvOIqj19rvyaVM+HmvQUQeyRD2Iq8Uo4OMsDJ3fZlo/Of6uqnYfVDqXfNqyUm\ntGnDQEGpRr6CFywiUQOJVx7gaTStq3RpFjcu9DEFl8UkoHSDET5f7xu1sdqD\n8I+sUH9ugQIl7CbH6kQUEwuebvxtzj61SYfm3gT/eR5IvVq+kgtFnEWvZl/H\nnmRrybLJJpkDScNg2pl8bVidLkXFc3w7iH8WQLOMDGF9E7cbZBMAUMRZVlkx\nUKiqtvSs5lcL+QNnPmWqzj693CaH7U5qmXaDqY0el2qRXFk6HCpsyPD0TkPT\nYwgGZYbaf+5OcWUzZSynuadnTstO7eAg0KqCt3kVlMINCE1rzOoBpzAXrcXe\ndCBrOAxemCqBWLyxBXCkS8MIjM8lwoj9/na2DGW+030R4nmx+mdqe5e42CUl\nv7Z0lDt5qAC5UmmPUEfwvJ6fpsx/xYLUl0aAmkSqldwmUZJfBE0hz2ywbIpr\nVZagtF8KukMkw1StTQLlz0n6w6aYFQed0NKOagez0gyUmT5VK3Sz1eqB3/68\nc2MLT/A7evYwDGhTCmxknc7/LXQGO1dYzRmwORRxBM6n98m/Qis5iJfIV5rp\nf0NMLYHFXu0Sy1HDETE2ApsGGGfJwKsbUkFFiIeG0ORtlwxLiftEY2stG8iB\nXY3c\r\n=JCO3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a2adea0b71d8528e32c3232aded83b5473554cf9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.199","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.40-add-debug-logs-a2adea0b71d8528e32c3232aded83b5473554cf9_1607918149276_0.03493800121642776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.40-front-mirror-tests-1b0e998e3a8b64ffd97e869ee420354c3a0516e6":{"name":"@balena/jellyfish-sync","version":"3.1.40-front-mirror-tests-1b0e998e3a8b64ffd97e869ee420354c3a0516e6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.40-front-mirror-tests-1b0e998e3a8b64ffd97e869ee420354c3a0516e6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e267091e6a8c052cc7481c386c1681a106426cb5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.40-front-mirror-tests-1b0e998e3a8b64ffd97e869ee420354c3a0516e6.tgz","fileCount":29,"integrity":"sha512-Pagnnsu1VpQ+2YE950x4a65CUBWAmX/8qY4gq58FPoYSxL7pR6YZ5LVM/W4OfsJ45Jp+j/G5ZVlezgtkwDKkYQ==","signatures":[{"sig":"MEUCIQC6VBmbyBciwQhwnlfwgeLxQRXBOvBosbTGMCjYJ+5wxwIgKX9rXDoWTYKwiM1vQB+Gd3wLP4m6eccQGVHx8c9cmZo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":283102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf1y8ZCRA9TVsSAnZWagAAOI0P+wfeIXvN8ZRngVKYLQOY\nuV5XUr+AhWi/uWaEn0+fv9qHgEpOa8V3Cgd+DH9QX8MJWReWOQ8QlGrI0Yrn\npBsYim/ZmHOroVV9Ud8Wp/W4MlNCieQsUyrab+6cbH9RfutpLeZKUkOuK43H\nmX4qj6i/cQqQ+LVdidWwRLUtVmJ5bdI3VGD+9RPTdT/8CitngogvlsLOBcKX\nOleM1SCQm++WDq0aVMjjHKMeyEGQ6uyAUNWtTwyapQsjDd5KHIueKn667tA4\nbv/DsTIOTOUyEGPnHsd3KL0exUSdYvW3aXf8+AuWAcQMJLGZ+PDwAiKYSaGv\neaQYVT40F7xOQ+908AOtn5TNFDcfzi/q7/SutylxKPXKGHVRp4YEFDILYBvf\nzDLwyu7OmrlAX+Bmh7PSmR3f9ckvDR9V1kjMiPaF1gChWTquZjn5lZsgsrL/\ncDmzb+KYQ1ibPrHV6rkUKcFS/rQQAt3w6pv2rKV0nK8ggTnpxnC8xnv2Qf96\ntsarrnDFWzITL0islgNHFP/J9jM3+CAnGi3xc8yEpvr1qvWI82WgoDIKdavg\n5yxFJ9rh0/mUHpbY4pT2PHENiFwZE45ijla7Cveghj9tpbrx6d2ndRsVKK28\n89SGAi+ykSjyO9Ps7drtUWztvip+LqZrVQ16B5Eu7unzUir3BHm92A0vt6sr\n/ck8\r\n=y+FS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1b0e998e3a8b64ffd97e869ee420354c3a0516e6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.199","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.40-front-mirror-tests-1b0e998e3a8b64ffd97e869ee420354c3a0516e6_1607937816742_0.7498016743606442","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.40-renovate-non-major-f4b6878eb860c01006556ab9de158ed5aee08f19":{"name":"@balena/jellyfish-sync","version":"3.1.40-renovate-non-major-f4b6878eb860c01006556ab9de158ed5aee08f19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.40-renovate-non-major-f4b6878eb860c01006556ab9de158ed5aee08f19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"81b5ede8d4881d1e92c0f2b419c2a6cfadeec1d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.40-renovate-non-major-f4b6878eb860c01006556ab9de158ed5aee08f19.tgz","fileCount":28,"integrity":"sha512-Q4v9lQHLrvAJjOW2t5OBHM72U881+NoI/cFBQzoA28fbgunbWJJELcB23Jo/1behdHPtPnxHk0bYk3APSEzAIg==","signatures":[{"sig":"MEUCIDQsgHRBD1P6IXNq8zigDlSvsHAedZhoN3zqxosGZvjUAiEA34IcYl1shCjMupILkC/SFk47tXYBl2IHcXa0B9zy/d0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2FgMCRA9TVsSAnZWagAA2UkP/2OfpAdn7+a5N6o4Q3dk\niU65qBF569Tz4S9hb8ZXm1me/zCSqnVMz6Nto0DTz/Ni2h05ungrVye7/aql\nmhnNalEcrLr6O88kAiXa9H6BjvlR+5kNBuHtmuQsaTikiVvnbqgf5M9AmsCz\nems0iMxDLudSCO8V8JocIGFFUo1DCsmPTvcTUhIal1ZSzIJ+dhDailMvaSoL\nRwmUC8a5Vnzyp3HVaZw49EsjdM9I2OQ12Ij4wRJkKKikE4Bvhd2WhpELigil\nEwvcsl60hTCd4HmiYXr7pW02W4dF6TcWhf+9xEl90wxzPrZTc88J/eeYAtDV\nnJLwvHizbvxAdprgR2y/ytuEGe7jgwHs+DtRxjZgMHgYotjqdrG2vDcKWgH9\nyjmYDPgR1Q5gsrJVjjHyCLih00imN8BAO/0iZmJPq/PnC7kBPAWFu0KAjNuC\ngDqYQIFaxYdXKXeqE0pr+GVaMIpsHU8mqktdutyEUx1hHkzB+FiWP8cKa9zG\n4OTcxKnysl933zAzZRzUgMLhcVE/3xGFzUsDPQoASR4vf0PMPCheH1Owrx2x\nqjT0eSJr9H9zdDDqssqMb3jPztDrCZuqn3qxXFWsJ8/lbZNrMpSvjMWIa/an\nvpICvWyU1HwuNwheFZ4HDONkAmBI/O9XG4hdkXQdoY487k20enbSYNS66XXb\n6YSC\r\n=zofo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f4b6878eb860c01006556ab9de158ed5aee08f19","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.200","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.40-renovate-non-major-f4b6878eb860c01006556ab9de158ed5aee08f19_1608013835475_0.5758573117344352","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.40":{"name":"@balena/jellyfish-sync","version":"3.1.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"426a65e31b614915c0508d368e2bfe9782e0fa23","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.40.tgz","fileCount":28,"integrity":"sha512-vvy4DnPgL7oQE9h6yTq2HSi5szc3osH31wJMk0UnvFjwiq5y2ISxz2bWalMfYxMYbrAf9F24C9Pl/mKaQDJc8Q==","signatures":[{"sig":"MEUCIQCHZE95dQgcqF0jdaj0vRRSMxYdYVL8ZyJOGu6nvqu9NwIgQE1oFB/O1ipda9+ICKpczo9WSuNJ4EZbcoT1cRfV4ro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2FjnCRA9TVsSAnZWagAA/VUP/09SFnYSyTKSkgZ3Ap03\nZxfszphT566Kei8FGUIL9LJ+EXVnipTfhrCNsO/HSlCbNd8D+VmmMWxx7sNk\nNwZeGCCwq6NYMjsh6art5AUTCOxZlThkU88/YXsgrO7Dfrx2oPHtUrO+sWA/\nndzJoFvBZbNKB21UdwscUEfHR2kkH3mm/RmPKTrcL67IvcY5A0mJujl5rUUX\nzoef4kp/tasaRJralZuGp3OhRAFGDhITsFkRSN2xwCJpddV0ha6aPv3EFuG8\nTpBaA4ZsLNSPGYB+oKc8WjfrQQ8PvOUZvF15c0zVn/23vxHUBXHYhBA3aZbd\nMUuwj6qWBo0BRicTuKOdXKGe96XXHnPAdqrfoX59L0FGhpEE6NCyqyWhoWVW\nubFa0+n7i0em2Wkd0yEXp8tDVGjGXgtpJyB2kai9IBgJhFUkIjkv5PlmKIcV\n5rVr4ktzI1nZdacm4L7Agk+pgJTPJuQGB13RgaKlfRrpEnyUqxRI7MpBnm28\nnv5UBpBJNtMlezClZVDA5mkAAkQrt7LVeXgJKggwwbtGVC9BY57FY5fB8Hjq\nzscmJzfNYRzkhVSA4Yq9QutmSrCikZqc4FZEEH/caS8T5k+fSFWvwYDuBh5C\naw16OoTpYTXkmK5sV8KkjQykypkuMCdWy7LC6qgm4y0SL1zM8NCvd+0AJLud\nvO3m\r\n=J0xL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d1c0282b23a4d7f7e1a2e5d2dd9d087ce4b7a5db","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.200","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.40_1608014054669_0.4699707453180111","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.41-renovate-non-major-2c109d19fcede0c5929be76a6891ae5b58df5607":{"name":"@balena/jellyfish-sync","version":"3.1.41-renovate-non-major-2c109d19fcede0c5929be76a6891ae5b58df5607","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.41-renovate-non-major-2c109d19fcede0c5929be76a6891ae5b58df5607","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8eada76d1dc0cb722a516e1cb25004b37296a276","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.41-renovate-non-major-2c109d19fcede0c5929be76a6891ae5b58df5607.tgz","fileCount":28,"integrity":"sha512-ursP54LNcQcmlwjHsjpStAIuxWt7OqI4YQDJjPSO8fbUXiPrMnyjUNrkTg/bgmeARWnC1m+9XERGtLKlqIRHBA==","signatures":[{"sig":"MEUCIQDrtsaflEdrDWthkyZNtjL3Z+Ri6NervGbPpZith87mfwIgUdCF5OPhUin1JnupvdnMsrO/3HFfDBU7hHmq+wUlhpY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2GxBCRA9TVsSAnZWagAAQ6QP/2JjBE5JLzdKCsa1iKZd\nZRMTL0FFjqU72LLeabPZRIRE7VQp9sd2IoG6SJ7Lgu5w2YYv7TLwcTycXGBO\nFpjSPGb1Z+YaeYTDHUfe148H/P2hSXN8FR3d4BgH+NGzOskvVVV6ZRPuUH/B\n+M8xTp/FJktarkj0b7rwCZvpagDmiTD9CzFVU/kDKkIxcq5VnoN+ik1kUoRx\nBET7azH+7RR/iW4HMOuOExlfm/1PW6+UuT8wDz4NfnAxTHMLqA5WG2aYMpoj\n6XuuDeOnBrk+E21GzCtJwG6775VAm9fKDOh1S6QpL6ZqSkOwn2FYkDXYTTCg\nep4cl1jaeowEmGzYzEM4UhYrWqqia4r8rHAQGC+/4PagiC0hLXY75Vo3jioT\nRjfFLY4i+eBq20JJNXtzWqKbjdM6dkcHHLifUU7vp2sofoE1O8Qu65CxOR7H\nOT463CiHTUnuKYTdr796hjmDal1Rd571/RLjanS8Hu/GfpenVdVVVk09q8EI\nIlnlLz0/3V8TZlEAxFyxllA/PpxKeKhMAxJCUnpSQpkWNMhNDhFhb7GedIxD\nsbBfrny+cq7y9gw6+uhVVklKoZbCzxgMwB6zMzdjrE54HCZPF5+YpezEDIdD\n1Stmrac06osY6H3HEdeOBAqSbisJZmwwIcs3YMudul0JXZcB6lwzi7Ugzisl\nQn5o\r\n=R2GR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2c109d19fcede0c5929be76a6891ae5b58df5607","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.41-renovate-non-major-2c109d19fcede0c5929be76a6891ae5b58df5607_1608019009428_0.6231368988622117","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.41":{"name":"@balena/jellyfish-sync","version":"3.1.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d353d073dcf81372772bd04a3bd455d6e08e64cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.41.tgz","fileCount":28,"integrity":"sha512-I+yR6eBDj1ZXvSyRuXuDdZNzliQr2lNglnR+r4EXuCXkgjMFtxlR99IH5pdzsJ0Xb7XZb1EExAYfbKxyu3mkvA==","signatures":[{"sig":"MEQCICEknczSMxWhIJWdVRh0apiyjP1v7N1TmE9CkEruRV/LAiBq7jnzEydeN2IBwfd3qO+IVgKz6kf7K2WJMPZn3vr5zQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2G0FCRA9TVsSAnZWagAAoEAQAJsThrSvpnuEkTFo9clK\nlFdNht/rHnqPZc3TQG/7XtYmm1NSmvo2INdl3UczvQX7fSagMcb2KqGOD4y8\nA9W8t0GB787RTHCxQ3+xB6JlbgA7vUjTA3EpeNE5R3GthXBx20J/kRUT+eZ5\nAr4yK+BxkEgbKLvVlAnpNksp70l53zZ+WKb9LPM4PAk8ZMMnRcUVQJZAmp6s\nhmlrXig6Tj+Qr5gpZYnjQWIyg4hHUGB7pDGXNHWITNve7YHq2iAPC+vMFMxb\nNdbxYKcGIJbA+gKrwOCBMJ1Mvh6HlqquMbU8wf9Uq7fwFDhsUjG+e2A52I+Y\nw/e6tqIguniLWba42LoMBzFyJuanyglXnkxsKX5VCAiPOaKfTHleA7JF1eZh\nVNUzg5eNTlsbeekT4LVGKkCD/yFdMsGW2e23FxW1BXeeXtRifqqQyp7FlQiK\nK/jkK+2rrgAfIkfI9nQxNhVnJq0J4AVp209pFEmZY/2KTaG6XC+maI+v2Xv5\nbBazoW6fW1D1LeupK7a3pt+dBkZa7KQ3/58JnvfJG+V4ydy9VfOF/IHxlDb/\nSKnPNnWkcvc8XxW4+OID0N+QORuCkFC82lJ2M4KD7ejEOEHv8/m98e0A8hum\neUUsbpPozZf/WHoB/W51Eif7e29rrJPvEGV+QR5tPlgQdCdKfyGop9D8afKm\noSZu\r\n=jPer\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d5623da302cd47062f19bd17f48b684f0db6c8df","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.41_1608019205132_0.2512258216340564","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.40-front-mirror-tests-e7e85abaae4080ad5596870a8781b93258617a8a":{"name":"@balena/jellyfish-sync","version":"3.1.40-front-mirror-tests-e7e85abaae4080ad5596870a8781b93258617a8a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.40-front-mirror-tests-e7e85abaae4080ad5596870a8781b93258617a8a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d70cae0fc38c3a4a4db792012777b3a96966ee2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.40-front-mirror-tests-e7e85abaae4080ad5596870a8781b93258617a8a.tgz","fileCount":29,"integrity":"sha512-wKo/T9NS+D5o9sKTT7TF3hP6l041DG6ueP25txHAow1DqTtLpzTJW+EEkPBPQwstdKkdXUeItK1ih5lKIMtoiQ==","signatures":[{"sig":"MEUCIQCorn8yhjy3yzYtjsEYv7phaZl2X4x8YxM+rDWrOoLOYgIgbUGRueM38p/YJxi1QHxKz1Y/7DINJlBO0Wl1HrrzdW0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2IQVCRA9TVsSAnZWagAA3DQP/iRzUYURkyCdMqGqRt7y\nbFtEn1AN2W/FnqNrFNyl19OJtLUGNFj2P+8RdGE0dPg4s+lx9lDczwVYU2gj\nWo66dI7QIXTgcGWur/XB0KKlz0n515Px1TxHPqaWh9WFe4kakA4r0iSXL3ib\nFFF2Oj2rczGWURaM+MVpg9qfQvpLZy4xwHNHstKQGP5bxPgvR0lItl06DRN4\nL/cYQ9Wztu1y1aTgvQntoh2KfXpQgHkhzfbD+ejGWpUXFJIHuLnnMih/TIQm\nhRzz3W2RkT4v73XHvhgPvkmjRKdRfdij5DMjUCdubPVTlTgQqlWcJRKyRheU\ngfv5jIPXY39c7ojX5YPjEgn2qkR/vvsR1CCFQKJcOvuMWyCd91cEvK3SWX9x\n5XMKgN3pF/k5ElVShxI0TmUTqDeSbTEA+UWHjdIv1nCqNPp61N7lHlSsYXKC\n2BMVBD0C6fqOGNMvyNd/27dQlnVBPoCfCQMRWOpB4mYQA6512qYiJJfsfAKM\nm1zKHsxDoZaPCW3KLo0AhRcfJGVReLCIAQ3ViENwQbRl2eNfIAKZPitZY2w4\nLayhnLTJ/UxDalQI5B8alKAI1roECE16CGGqmEgCs4LNw0nC1RuMhr6jFwQg\nNiXXvn5GwgJrQ6vrTBed/VPVu9/p9oC/cBE3AAcX4LPk/kF4xSKVOVZWHrNn\nD6zW\r\n=qiai\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e7e85abaae4080ad5596870a8781b93258617a8a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.199","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","sinon":"^9.2.2","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.40-front-mirror-tests-e7e85abaae4080ad5596870a8781b93258617a8a_1608025109423_0.93429814011633","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.40-front-mirror-tests-1d9b401b5683c93d7266e8cd8a008deefe9d8d72":{"name":"@balena/jellyfish-sync","version":"3.1.40-front-mirror-tests-1d9b401b5683c93d7266e8cd8a008deefe9d8d72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.40-front-mirror-tests-1d9b401b5683c93d7266e8cd8a008deefe9d8d72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c42fb6e099337b8b2a259ba9d5a6cf86662367b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.40-front-mirror-tests-1d9b401b5683c93d7266e8cd8a008deefe9d8d72.tgz","fileCount":29,"integrity":"sha512-HMsFYAzY6uu2gyo4LrmHp8NtwuuPqNozK7x2Dkm4iRLr4aYQW8OE0h9z0t4I3pgkA9jXbnHtXuYgJh80LC//WQ==","signatures":[{"sig":"MEYCIQDaIpNVApq4lXPtxD2Y4Zlk9H4wzBp6p6s4QhyTRgi6xAIhAI9nlHoi9hN8d0f/iCLvW7yjpBRNsREdjeIogiErWg0e","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":291124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2IjkCRA9TVsSAnZWagAAygEP/RPB3VcMe79iaM4OOask\nYXRvD3kc+Di0W9Hhyq6VSXlY+MoEFRKRLMCcsf9peyTZdc+Lub2R68voC+yt\nOQNctUe1gZbqs9tOreS0dx6DX8/lM2UixlsQOmfjElzUpUNFD6b+bhigb0vq\n1v/phszzf6uIvv55SzJoItSn3tilccH0LHWh5hMcfJX1xJKgFGsQmQbJTkdP\nj22t/59/lC4hCEhxBa+6D+F7YWw/CunlsTnpXJPNcIhZQeKuHFktc92cMaTh\nwgyFnF6qGvzo1uGS5ZqKpmB8jQ2ViI2PzBxtFL6j+mgOb8raFkv9dR5hsX1c\nG3uAbcx/aWWemx+6zJyPB2YQ+SnWr0eTZm6d0tzja0f5yhkHFUEwYqVzvWPV\naeIWorEqlcSBJZqrTPPHyJinC80YbqpmABtGrDdA3oIQNsIzNnk0GcHfi9Q/\nZ3Mz9fb+Co9WJz+seiZ4KJjHe1qfJDNrF540220+L6po9ELJh0TZhGagiP8E\nhh4FUWdXDYJXeLth1CRvmjYpRzb3JEsd90dCWSnEM16wQ+49xyoZFBvNqfLy\nsg9Wi3nxA4NHdbZaF4Hrta9WTo09vbp/7PNlRp65ot/qT5CkGuUMzP+8E3Ut\nB4cOU4NVGuijc2W9ZmIqaWQ5VtNhUs5Ih8OmfxV5XyDfGdHgBzSA9/YVPQ5l\ndp8H\r\n=4siO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1d9b401b5683c93d7266e8cd8a008deefe9d8d72","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.6","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.199","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","sinon":"^9.2.2","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.8","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.40-front-mirror-tests-1d9b401b5683c93d7266e8cd8a008deefe9d8d72_1608026339693_0.8677575359264948","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.42-renovate-non-major-1101e0434e308ad389aa6051536239dcc9fee3af":{"name":"@balena/jellyfish-sync","version":"3.1.42-renovate-non-major-1101e0434e308ad389aa6051536239dcc9fee3af","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.42-renovate-non-major-1101e0434e308ad389aa6051536239dcc9fee3af","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e819fb0fa15d3e7f655a853a10dcd8c0a3c380bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.42-renovate-non-major-1101e0434e308ad389aa6051536239dcc9fee3af.tgz","fileCount":28,"integrity":"sha512-8jiiyNqYEkLdFcVMfY8Jve+vZTj17Wc4VR1I/4GTX9lVaQ+9htGjJG1vcpGasJQk6RNODiqJ9K2g3Kr+ZiSd/Q==","signatures":[{"sig":"MEYCIQCzFQd33Eo09bdqKDi28uCL8VBrN8qa2VogaAL0TrLjjAIhAOip5T3DdbHVbQZsBNUoDuFxr6i0JUce7JEdmQPzFot8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281642,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2Sl7CRA9TVsSAnZWagAAYGMQAIuM9N7cH9ThbZJWt41k\npoQwoc/cExsklliwN6fQTh2yT8mnSEQyKniVwOXlqUFAX+ZxQtBGrdVw5jaQ\nyAIdUHb/vFyUIYiT5gvaVVbj4uprBuBelPj8hW1uVUQzP9cCcNQskSg3NQs6\nrIJRu3pdjeucJyCZ2UhddU6ywlQki0VT6WZ99UHpHepCsxgMhKP7egED3oxR\nd2OVwSROBn6omSuKD6yKfZypjURrdkll8Gq19YeUAGUijmvSbHynpU8Udrzy\nv6x0TjzTRCn95FTK5OQ7wR1mxlAqzz1wwZycCQ2QyA6CMvKzM5WNtHFs8E9J\nyt1FwaYfzmroQV2vUklyEJtHGSPHdwgwcZVGbhYx627lBaDkFDptj5w1pwiY\nZkBExXfpbhXV03lkUomBCM9ns32b4dmfdo+QZqQCsTt1D7YC6i9xPAPE1HNb\naiS1npabrug5Qfz8CUzl2HJFFURL+GlWruT2TYYxtFWpMYQ2QvS4zrVzaasX\nptYXF92UAJFagEwBABIPwsb+oV9WOtKUKKtdMGFJ+pWUIUdma/NpfpA3a8JN\nux+qGCVNzO3vbQNznijPyPwsOdZJmVdab4krc5QPjiHSEReF+WBXPXSyEJ4g\nHN+hXiqCM/28k/pjizCu4GO+QEh7VtSQxKiLIt0qRk6a7zcdFjYmm5/w+NSq\nmr5y\r\n=SGJd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1101e0434e308ad389aa6051536239dcc9fee3af","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.42-renovate-non-major-1101e0434e308ad389aa6051536239dcc9fee3af_1608067450330_0.5883797913372597","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.42":{"name":"@balena/jellyfish-sync","version":"3.1.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"457055e1d5d37dc9c5955a71bc03d0a125a0debc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.42.tgz","fileCount":28,"integrity":"sha512-zN7Qhz4vCbTu1T7sW8I83OGjI6a2/lFrsCJI1rolKntVkbYWVHvcGEFTBo4gLhxadEpD0ZPoLQiRCxRyr/sUjA==","signatures":[{"sig":"MEQCIGHZGxU1nPVjjZ73CTWj8lWXamWVAInZdvMsgFJ7vqORAiAu+T2qZ9x6udp/61yCC6q11R6HtGY4gSq1TNQqJ7drdw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281582,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2SokCRA9TVsSAnZWagAArKAQAJVnW8m9IVuUddhXa2Yk\nhn0lixLPrLw2ZxLdXn9ZxybT/y+60Qinjx+mrkSK2omEpVemuwd2I6OMQqsw\nUE3XQPL9f/b8b26O+tN/lBKMucobfiCfWb+qrgzB0xpE/QoVOn1eQRhnsmsq\nHD01NnkpfpFbwhieDeYEqfJN7QfDFEbRr5DYeUIwDXoAPiDMfUFaHbxq38qj\nqKpGosp200lFHgEA95HSNHqwNWK9RuRDcVM8T+cNrS0MyoLMPghIj7bhynqB\nTOnTvvf/ErdvBUdTbLbbsrKa+N5Aq6+iC4a04nXTpFkT5f9swObXDdXPk3HZ\nOtYnmD8C+e2NdAMck+vEG9SFWv960igyZ/uLZsobZQI2+XokNCmUGuZB4+lV\nRSW+mIeCkhlf7cutNIrPtwyYw4ZzSwrbuce3IHvkY6vIc8b3ZjSr5fc9iM2i\n4L4fsKM1advfbFns7cu9oQpU8nqRQbKOZ7MiqNwyTafk3/vXxstlLAgQolxC\nEARCKT5wS1DlEMhVQAipu06TBmMyHOVAE2pIBqsjAu50lcL0Qz7EeYLmq/Xl\nQqbnNiUFidXGcR04Iazp8UZMg4k15V7xqgY+2Cd1JKvZPCE4Jdo8BfKPymSj\n7l7Fj28yq9z22LDjNlSQE1n86yn2Eu8W5VgzoqeebaHFrrQO2aZMmN3TkwKw\nsD6L\r\n=ZNRy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"de63db632e862ebcd0d57f7ea86bc5fa5bee8436","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.42_1608067619812_0.00634427545838645","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.43-front-mirror-tests-fac7c54aa227f02ce0051f0fdec446e00a9b1ef4":{"name":"@balena/jellyfish-sync","version":"3.1.43-front-mirror-tests-fac7c54aa227f02ce0051f0fdec446e00a9b1ef4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.43-front-mirror-tests-fac7c54aa227f02ce0051f0fdec446e00a9b1ef4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"40062cf00a462b341b8450110ed1f05736cab1bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.43-front-mirror-tests-fac7c54aa227f02ce0051f0fdec446e00a9b1ef4.tgz","fileCount":29,"integrity":"sha512-YazNEu/3n9WAlibjADzDBCVf/vCJW6qt8HI4lVwPsyi2MXAmW1yWXdDbrz+BrSxG1rl46hnWy7t5Df5QNQ2e3A==","signatures":[{"sig":"MEQCIAf8ibMKUKTXy9dO7srDX7ltkHFfwwWRC3eDPBeEhDMOAiBoUZGv4hTDlow7zRGAkVmVGzpidDWVO0TY1HEXB9cv6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":294125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2YTrCRA9TVsSAnZWagAAGTsQAI62/FbYr7BD7kIgFOH/\nEMlUeMOvlCOSHRXkIPSFP8QBJ+52Vf/efgqlxLu68NZXRvQeb4ZgJWyAp1hp\no0Au+cuie6g8YGh09VO/DE7f27BtOpQkoHQ41tIjWRn1z+fZacvx3qpD2c3Q\nN9dFqhvo/U0lHTtyvea8RhQGkAkjJRDHgSNigcAgkyzehmTA4mjszW74/2MU\nz3+KI6Z/3Gyy4ExJFtcHJg4Iz4Rd/nX5cWQkxDk1YR418yjN6wPd1vmPLH3m\nelEndL2Y2CWLiY1uIGiFyg4UKFC7bIbnyHUMeeXNoA4iddfnnuO+NVz8KQX5\nNWkSAcvKH9nbGCd8MByC332JmdNA63c1Wjvl790BfBnLS30MWwxB98Yba0Yf\nlQZjOlnf3RchE44XWvTCnmhLNe2I2FWlv3AatPgS0mV+3DpYcjsLrfY1ltz5\n+cjFrdiAePNYSXAIRXgqzA0jiT/DyzMKYW1DdF0XH+TmUKKpQOF6VYvBlWDh\nNz/9xqs7MFxP76AwJ4di1em26seR6ayO+/CY0HHd8jk/ZpCV5XgUn1Lco7JF\n6mume0pUuGdL1VhHzbQRbJCnelC6z6WLY0AvQHlJqtU5GH9cjD/lue1oNZrv\nX47TeWbTre3Agy4w9qd9IGxq6aZBa1HGl4fosSRl5DjRyOvnHNaEUP2jWFod\nE6/4\r\n=QOBQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fac7c54aa227f02ce0051f0fdec446e00a9b1ef4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","sinon":"^9.2.2","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.43-front-mirror-tests-fac7c54aa227f02ce0051f0fdec446e00a9b1ef4_1608090858350_0.395993463910961","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-801764ee4a2bf431eb1e99809bdb1c61f9f604ad":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-801764ee4a2bf431eb1e99809bdb1c61f9f604ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-801764ee4a2bf431eb1e99809bdb1c61f9f604ad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"40cb52b8665ae8c9ad7df8d485bbac999be0dd2b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-801764ee4a2bf431eb1e99809bdb1c61f9f604ad.tgz","fileCount":19,"integrity":"sha512-tfWvrW2mSUbd6hNrU1B+B+ILjORmj9liiPqJ/ZEgaL6pi59Jcl9mdbdMSmmBKwwyWaJJER1hDsnyE1sQap9XLw==","signatures":[{"sig":"MEQCIFxmGxjx5C2e+F6pK8J/TZ0ks/vyzqHQ043XErZCsm8XAiA4VnV2Buk3KjD8eivbdUFYv7ViQwRhHSN7+DWb/IPk2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2ZCECRA9TVsSAnZWagAA3NAP/0J+BeGCx88tppG2Fnr8\nSgvKRX6Ij+s7j1YuAwtjxo1k8QZ4PrL8Epg8cbD8Zcm7wgCS7l5XJmIRoYtO\nFUaZ0b/oLkF6PAD1ktf6IKIzdqXV9lx+hqsPwHoSn8lRXuxcpQdxVDit/LFr\n5EkvSlcff8LESUYCYafNRih3N08heyoJ4CDKMy/63Tk5Iqc2kWghIkppOgod\nOaEp3GystDNOaTRD7rZebioudCvS0qJLou/XsC5lFZKV4OLbzcW6Gm2rnh/d\nthvP9yhflJxcgadiSbk0IHwyj6KyxNg11V42Nvlk564lDaSMCrJ3XMEx/P3b\nZd3HUhVnKBwGfSgHeV45x1CncGxrBC/9VphjxIWuHRvp4IYU2n2+B/ZGvJdt\nJI+PWfENFxioK+Fl/mfeWJfaxOJdWvGjssnt08jtWXkRgukYcAN+j0+yVyHL\nENWwNO35KQRHYKo7Rc5Eu0D+OFLISdOqsPActLFi8DOHoMuCjYl4nNSaPhaA\n3uxhx7kY18L5vuMdw/jqnfqAnfe8FURdY0SfplUlfRrhE1t+Hiz9poP3MJhR\nhiCTJYktHK303mCY/eIhWFmyHIkVGfecCBO+WU5vHSGbPaL9ikvqMxkAo1cv\nCasOyaU9cF1E4XlmSuIW8PmZFel2Vv+inZtSJb19gyYJ02LloEFyhpgnEa8M\nFC2+\r\n=gOIM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"801764ee4a2bf431eb1e99809bdb1c61f9f604ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-801764ee4a2bf431eb1e99809bdb1c61f9f604ad_1608093828367_0.8694148280847296","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-4953987e2b6af140b3d7039bd164c83c8985153b":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-4953987e2b6af140b3d7039bd164c83c8985153b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-4953987e2b6af140b3d7039bd164c83c8985153b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9c1510c6d374dcb483b7885e7bb9f6f61c9721c1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-4953987e2b6af140b3d7039bd164c83c8985153b.tgz","fileCount":19,"integrity":"sha512-i19KS2AzKYxWcZ9SRFgKJmsiK4oKaZNdYanFsugaTsMANWwVeL5ruRpx7St9nTOmPClRMX72ogKWS6FpUJfGBg==","signatures":[{"sig":"MEQCIFyXNOJZZxhqXL0AFaLzygPTRmm4prH86HYTRdnHmotaAiAjNF73bdkSktLZhlVXsV7vBdaQ7VLMAQEZqR3p96N0ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2ZIuCRA9TVsSAnZWagAAqkcQAKOIQKHlsQusJNgIt/RF\n1wee+prq8vTIYzgDJcH7ydOqjYcpSWn+baBfnm00iX4HKQH+ZhOVeWv3srTu\nUHgzPikoZUslMKmOBAn8R+2aM0PJvzUz5c+4mhYA6+WqS4oshrETzYbf/EKl\n5B47zOMEt0dhhfFstijrHcI2haxOMVcH6/2cGjmIT/jZlLLQf5kK2jWQ1kPP\nJcfh7QDuPQKAV1RhMk8an3vNWPOp+1xWX0f4zNNaDDG1PFtLWpXaf7ltDdkf\nxaRFstRW0uZUohcWvjiuDxhyFr23nc+BhIRilJ7SDyJwb8fEerfYkt70Wepf\nSQCoMCL+k4MlPypaEitKpknqBQqDgpJ9LT7LyiM0MerqiDUin0kR3hRRhtyh\n13IRV753uln6HbjZbISC41RA14vcAFDmKWBe24PvjKbwYXhX0Lvbed11CuN9\nVqYpjU0V4k5JwFnQZ/kiGqFFLDYmTGBsYD7uQnEIebnvnOBgpoSIPYXH8Wxg\nlu5J25oiBjB60KXaSe7KTn+G21YyhMSqAVZFbLF33xgCRygCC8vv7/QpT9BY\n9kHWkaQFqXoGtH0E2kRMMvV5RKKnw3Y8Mly89zyKq6pZV46vhgN1MSyUqFrd\ntf4J7RG+FNiP6A0enwp5UDY/ijdejV1DE4ccBCJODhkDxtsvdOpMYgLTZE8t\nKQ24\r\n=DhUM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4953987e2b6af140b3d7039bd164c83c8985153b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","node-jose":"^2.0.0","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-4953987e2b6af140b3d7039bd164c83c8985153b_1608094254011_0.14640652148803412","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.43-fix-balena-api-company-d2619fb142307bce37c906eb5de3f5a4f76aaaff":{"name":"@balena/jellyfish-sync","version":"3.1.43-fix-balena-api-company-d2619fb142307bce37c906eb5de3f5a4f76aaaff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.43-fix-balena-api-company-d2619fb142307bce37c906eb5de3f5a4f76aaaff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"957cd2aea3f8235033c63ae792b43047a5910486","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.43-fix-balena-api-company-d2619fb142307bce37c906eb5de3f5a4f76aaaff.tgz","fileCount":28,"integrity":"sha512-WR/iQKqxnuQwCM0XXOI62GyUFBeRA2BoYOHfOnKwMOvYG+l6mOkDWD+37llGbeYDD/HlsmCqsBgqsELzU8V+BA==","signatures":[{"sig":"MEUCIQCn27efWLx8aRtOL5sXJucuGicaQUab+j8jQBoKX/U1sAIgJpDU/73Swqu6xjGh5FxWnbpIgyrSyHme/YhVDSj6Xzg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2aCeCRA9TVsSAnZWagAAt48P/A8vtZhWs2ioMv13wIh7\nqcDKsY4UsBuy4hLvNu0xc1/T40KnYLQRToG60jb8s53P8So+VSHiIVNY/Rc+\n1a1tbL/ggk2/VW9MHhkGwmnw1BLZDjquZPwDVzKGwl3xo/4tzVz6rNWzhZ4j\nwqkmgQhJLRc7qrVGiXR/CF9QmbiPu0S3JHxqUkA+En/bpG2Xu3dQjraKfBKd\nPmVmlk8s0J9B2NwCyDCKUItwe1ux2kSciu3S+2SRkOkKunNTpEFfnJ/Su8+5\ndfNP+GCQOBQCmAAhp0I0didI3uoVJp6JEgCNZusnh4XdejvT4UASFziQz+Vo\n6AKT7NfGPfQ1j6RNAp2lBGVmEyr1YNvlw8jDKjx4Wpag+B6gOyLYUevgSCQx\nXV7WAvZD+1RNJhf3UqM14Tp2u2QjoG8VqzTEAfE0GGvFiic8PSqen4BWF8VO\nDlljrzhR+XnUml3FbEz8BgXQ2u+HAgnp2nJiqpir57E0UZcUhA/UqAA8KhSq\n88VmPuCKD6OsWKDAolnoa8/FFgYobtGdXak8+akCKs+J2dGd/qGiHY3eV1OF\nkaJcy3qQnv5HcsxyEUOF0mCOzxy7tcuQebIrgccJfCz26laq6vKbEx/WMdkN\nRclATDgv4TdRmMC/qbQscbaQofY7WDA3HfDeMhdrVLWoDF65JwIy23p928pd\ntLzr\r\n=nqSm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2619fb142307bce37c906eb5de3f5a4f76aaaff","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.43-fix-balena-api-company-d2619fb142307bce37c906eb5de3f5a4f76aaaff_1608097949885_0.6768067494824817","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-0d27dd7d9342535adda97c78ae86c091d7f04a27":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-0d27dd7d9342535adda97c78ae86c091d7f04a27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-0d27dd7d9342535adda97c78ae86c091d7f04a27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"458516478ff5d39a14e69e712cfe156459cb8467","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-0d27dd7d9342535adda97c78ae86c091d7f04a27.tgz","fileCount":19,"integrity":"sha512-m384LbJH9iAHxkQaTNfyeH/a+LzNWsisPbith3EjlXw6AnsiLxBbNQJDBhCQtRhf+wvNBbcmTUH8PAseZ+4LCw==","signatures":[{"sig":"MEYCIQD5qZRiOzzRxngZoXw/fV0GdM6lfGpoWgOug+7hdqWzSQIhAN8efxBbysD/Sy3shZreGwoZmnrYSR/94rPlqdwQO/cS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2aFoCRA9TVsSAnZWagAA4HgP/jNtC+yzVFnnZcZhll2P\ntpNzdU01aZVlUaq6p9uz1Emr+CQ+oYcg5W/7hb2O/0E7Nzsi10EXLH0iWPYJ\nOeZLxvljTqYl8wRYiYGIk7ODowno4gotc59Oqs573cf1JN5WC/bfuEJvG71Q\nPlfr8EGfct3E/JemIl0VTvUJEdyNPj0XvNGVxT/r3+Nq4qxuvZomPHc4jolg\nQ2GNmI2dqmlNI8n7S+nlF//Xpk5bghXCBeNm31qZzsd+FwFJhrObSdTgaNgp\ngcl7sVYNAS80SbC4gvWTIuXZiDJlfCVR3n3KvWsGDP20ilao+RlmifsvSggM\n3GN52fWuZW00DX7/rfLHLfLC9BQqPCBNjS/OfYOTUSSzMQIHexHc9M6WFGx3\nrxuRJkDb6bcI2Je3khpa8BSbhBk84s1PiweNX1KGDwAQ4hwYmChWh4qxrdFQ\n2GMyTldRUYliStpuRcPM7FOcnbXqPVjDEziTGqkbi7XQgyEJAvR88HQPukZg\nqNXlZt38Gzk0MQMdr7ZwZDFOoQneI4vYSlF8wiX1fqGJe818BDVyiPEJfNad\nRGZPRhlK2P64erDbobiHC4N+u/h+yeJBakmXQM3wMFKeGyJv5kfIRSnn/LE0\n0tMq04XxRF2i1G1RKCynJkfVXQOllB89rnZ3O2A8IeTC7Tjg+jTOLttu0mcm\npMZW\r\n=yoBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst JellyfishSync = require('@balena/jellyfish-sync')\n\nconst sync = new JellyfishSync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0d27dd7d9342535adda97c78ae86c091d7f04a27","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","node-jose":"^2.0.0","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-0d27dd7d9342535adda97c78ae86c091d7f04a27_1608098152442_0.44463483046359786","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-35bb9e43b95e2eb8e12c72559f327c6ca94d0179":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-35bb9e43b95e2eb8e12c72559f327c6ca94d0179","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-35bb9e43b95e2eb8e12c72559f327c6ca94d0179","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1af35f6a985d0d5071074acff867cbeeec7f526b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-35bb9e43b95e2eb8e12c72559f327c6ca94d0179.tgz","fileCount":19,"integrity":"sha512-i6Tm2gEHOj5gXDLrmJS3Id6fH7F1lH6wB7yr0uPAu1CII0FnSop4dEXhaP+/nKh44M3+XjoCBt0NJ/41s5jyJg==","signatures":[{"sig":"MEUCID7I5zXctbUKBZXP/fIMk/qtPYR3m8ZbJXJUqKq1K/2uAiEA1pJnO5iU06sywGazPmsDp0FCTaFegCd52khOejrrMbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2aXSCRA9TVsSAnZWagAATMEQAIRHmSwj9tWH3n2i+6BY\nqh4TAHVIJSWIdE/QzNyhC1ZAcj3zsdwO/eKK8T/xnSWQWeWRA4UY84lEK7U8\nxNV13a5ALnbdO47QbbyfzolE7hEkQ1vtdf/GVaq2WETNSppISldJVBykdoY7\n4C/QwmTI3MaVzsVmgB6XIbSlEb0urWYuorVZtFaKR/7bTPcjLUSPV50A3RNM\nkP9XQSf459SMMvlYwy9/+BoJrUe+0NU6Mgybyg344KjPY2CRuSr2SS+WoFPK\nManNpQ5YFQW3PXOZzkpsBikF5vPis2l3qVf4fv97gGc3V3I2ZDnM8Kwss4gX\nce2huCsQJq1rRN7oat0bDqVQW3WIeTyKaDth2T0LggvpGi/n+P/Sgha2UErz\n53NzkTpPjI1JjTw+ue/NY7z7KfetVkMboP/9JymizAuwUxbK6pKsIu/WW3Qu\njZxeZ62aZv6rdOkD3Rw3INCeX5s+xN6eLHHrhYLCwmab9Gz4436B/m0OaBJE\n52wD/upt9A6v2vMI0UvnFFkhQeyLshLAMMPlK+oALJ76v5YJ+qU1JaYpoPJD\nGDJvm44q0hawo8LZ1Ev6uarHAQoaHvI+q24ka2dfUvFfC9vsxKlQqnLj75aI\nYkvkaq0RVrNpdAJ/dnau0GXqVcq3FvlRObEjXcl2Le7gV/RQCSZl1O4Y6Msn\n2Xa6\r\n=NNvN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"35bb9e43b95e2eb8e12c72559f327c6ca94d0179","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","node-jose":"^2.0.0","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-35bb9e43b95e2eb8e12c72559f327c6ca94d0179_1608099282503_0.050597856597248025","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.43":{"name":"@balena/jellyfish-sync","version":"3.1.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c3385aa9cfe34c40c74e3de637c70aeb44ab520","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.43.tgz","fileCount":28,"integrity":"sha512-8nP24YwvTD6ejXzy6+F1I2mRW4v1hRp0nQ/uoYWWGA0g5yMmj7tjI2so0fnZwr1iDbrWM9TqrLhfMqEX1zSFkg==","signatures":[{"sig":"MEQCIB1wOgqRKJ6K+kwO0iEiwb5HCH25zA989c9yDlLpJsCdAiAz2tz6sEnl2VYbnSX4q8Eat0xhRBVEgSzXqfacQdaZyQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2dJFCRA9TVsSAnZWagAA56UP/iBzsVizmdEPrCdDYXrv\n0TCyNIgbnIXMpWsWgyo5fV0wT9TkazoQa7g7L4DjNrbH8MJFdpEO617Wonr/\nv0NVPX4TFzT3TK+bWDXU/CTJbPsNjrJsL/qaHfEWS7cZwrjSE6s3Z6MLlt+g\nbXWKZTD5CLMIdhAoTmyBoxGPC1xuMJguwVx9B4DeMkaBNmv34sJbOFtFlFNc\nfp19jU/HvdcBc4tudYPScZBQzz4XkVifPx4m3PAeDQjM0GCNcw9mHtxDy9eK\nWRK5mzpmXnNOAEEZ2UndGE9h78HtxR38RvSkqEufb0+amOwOtaNaW9RwrXMy\nbYwMnwxXfnuaywNBdzIgeUAangHLS8i83v6jO/Az3MuI68uwjlMk0hQcfukc\nK8eLF7H/uYbApafWUkiYNmxNWyCIRMzyX+EBacArNV4aEqzxx/yvfpMqAt7I\nPsa4viOt9wanvkxDW3ZapmJhZ5CYnkvQa5A1EHy/yRt5WgTm7UJ6aRU8qgVF\n0whKLo/1AG1EkIkXFcRo+Zn2BhkOODTWFbVa0KJTSAOwumXuxEtRHUFFzWs7\nLkbDf9StskKSg8zPo5EDDp1mPvHuIMW6puHEpaGOa8UAImJ9GrgrjmsZg2bS\n48B9vbAPxgiYq5ej3k1tGrmG8OAsJip4VrwYjgpGXnS+iTXm204kEEIV0jEh\nQGfK\r\n=Idgs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e9fdf8d9590938af917376fbbfc745a67e46ccce","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.201","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.43_1608110660834_0.8648545541731631","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.44-renovate-non-major-9f1bbbd0f33b6243aa920749e2b3cc56c76a127e":{"name":"@balena/jellyfish-sync","version":"3.1.44-renovate-non-major-9f1bbbd0f33b6243aa920749e2b3cc56c76a127e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.44-renovate-non-major-9f1bbbd0f33b6243aa920749e2b3cc56c76a127e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"547a393e8ba9e7d57a2d08f1bbc850773e53743c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.44-renovate-non-major-9f1bbbd0f33b6243aa920749e2b3cc56c76a127e.tgz","fileCount":28,"integrity":"sha512-/3weAwPQ9tP8HdYR0laWJ0FAuZPvyxtVbk6MUQB5f3Ky/GcPGNzzNU6428rJE0DRcyjQ5G3sx748J9Ll5NJIGg==","signatures":[{"sig":"MEYCIQDFze2zUR68kdFRfgiTmmspF0gFipbgoqoxQz+JyrRIpwIhAJKmUxA6el34YpTnEGQ1eDtCkHca0fl8gG3qDmQ7AAdt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281878,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2hJiCRA9TVsSAnZWagAA88kQAI0icFZQE7+RsCHVnwDN\ntk/l9so6oUR6he/Di77IwpWO4SByykoKKZ9ShIy3JfUK56ZPX/7QxUz8dGYI\n6dbtoOOfTm5JkCiefn8+g1lI8Ebpi1PfylNhilP9UXmP4JCtCcEldX4PfN9t\neWnrzTxq/ifzS8ldMNYOPWfeTtXbXq9cYJwKg5t/8oLIf14COWkte68MFvYw\nXPomgw5WsD128hO/TgS4VX7yX3gznHr7sq9bvChcpvclKSNZz0uXRDl0GqQS\n0Bxx28M/JwbVtIZNNnYT2s/FJJapmaVW2o0opIUbgSXaHVnB/1RpQVJyr+mZ\nZaVABkl/cAbMVTdjiKXjocojpGF/+6C89ttTUiTU7xaG0mxnajo0g07oeQFF\nwBByRON8K8/xJjYovtVLnl6aBBJeEn3AV+MiZd5x4BpkrKsGv/Rxp4bG8uw3\npUqrlfrrJSzqeWue5qtvcqqkLqlCbJKGB2MGwIx8tJ/JQX0LPc6TetuPjk3c\ncaz4PbFbd+AwbSXIu/dEZXBXNjE0deifFD4GdOX9lcTdibsVzGMOioyM3UWI\nfAj+ngFWfDSP45h/SBGLFSbmpbk+JhBiIQbF/WuksI1CXPvW8EUgJNxKdq30\nnpk0E3iXUGYZVsi5yUFP5cmFi4GII18vtX8YZvC29Mk5T5nDkHMvR5MUDtrA\nz58N\r\n=L91w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9f1bbbd0f33b6243aa920749e2b3cc56c76a127e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.202","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.44-renovate-non-major-9f1bbbd0f33b6243aa920749e2b3cc56c76a127e_1608127073588_0.3215045229452824","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.44":{"name":"@balena/jellyfish-sync","version":"3.1.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1a5a1cac9cbd6690ff7e9c2ddb8289f8e5aab44","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.44.tgz","fileCount":28,"integrity":"sha512-0qoLqysEE0sJDVG8zcCtpaf3qsi411m4hqNQKzo37nhekipl2kIyJaZa+pbpa8NxVlqhk//eBhtDZldmE9cHWQ==","signatures":[{"sig":"MEQCIBzTLJ/C0Xa0+gZs7JPoMYFfRMTLGdHTj6epcw6g+CkfAiBd6KWiWHtiSW8Qnn+EvuiUkCEyPMh9zhAlAtLpT3xfeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2hMaCRA9TVsSAnZWagAAPe0P/AhWua7VN4WaBkmdLmGX\nca2m3YuB4c6ZnMaiglgdWNp8W8YUGtSw1egPQe5XG6jLdQibsOc0Ckns7G+p\no2koBgJB3mKhn5p/VM33PH1a4hQ+lvRBubM1yYtUfJwmO2mp/WqmJb44EgnJ\nfQjXf6iVbobcd8Bh2Cn4ekc09hRNOZh1mT4XC3dR3Tosrr9IHppsEYMtW4Gh\ngyXhHjD1YPyycGt2GQuk4uF0iuC01xDnnJj7WnjugUPRg6NaT05fEUUmEnUv\nBt/airjmA3fEaRVYvhy9dAijifkDL1dyjB6/2vIYCrxfJ/RMen0wFmuP1yCv\nDViCt7slHzNuruTi2dyUQ2BEZbmwiMk66WMEf94fIv+XV+GwxSxqe6uIBG36\n+kIgQMjsa3BIgpRY9NPI2rKJ+zj7Lc4n5KOsdSZPa5qRAiWvh9SuU1X5rs+J\nbXR5ywnmA5a8dRxffWAqxqCWnDgdxYsN8ja4waXYl4bHDS8JnTqm2s5hLC/r\nqtyGGoA5B7xGmRTJgyBBuas7NsqfSMPNQzEBAlCad152vJV9v1SxF6YP4LCP\nqLOan4Gxcz1YNRxnIDwRPwiwBe0j6lQ+0qq4P3HJxeQATH73Ya5i6EG+m8bq\nOyKV+k7jPsuNCgfEt2fAqjaa+9JxvtgROxjV/4Cmwfw4tRnLDuAn1GrxX2Jc\nY+iZ\r\n=fXmr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5fd979e75698577c361074e1f6428799c4529780","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.202","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.44_1608127257643_0.18390771966486708","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-9498fe1966939023b553a2f21964319b57a3c021":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-9498fe1966939023b553a2f21964319b57a3c021","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-9498fe1966939023b553a2f21964319b57a3c021","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72a562b6279f92a47268b05808b13acbad968442","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-9498fe1966939023b553a2f21964319b57a3c021.tgz","fileCount":19,"integrity":"sha512-yf5yd4bZ/4KZyPYn+/URBSp+2Y2r+jr17qDaBLEp9rGL7LnCDOoOMqRWoxK00lw1SPPcBGs6CulDIxRjg5sfZg==","signatures":[{"sig":"MEYCIQD2y7u+xA3t4qNtOK+alk1Wpz8/IWYG+qHMkJP6TTW5PgIhAJ7wRvEM33w8Fn1CIuwBTxHv6aJQagB15/KcVZt8Nk9B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121161,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf2uz1CRA9TVsSAnZWagAAmWkP/16dpnbf7qAfHfCR2uJV\nR/noogYsgNj/sWIi3LSSOSK7SpLiCvTuJT15OdqEG1LPYtAb7vqaLUzV2iDg\nDEMKSndUi8mFDXqi5aA7eq562FJ4wxdlQfTGWf+6ACE0BNaPt6rF0CorBiiB\nZ2NeackRBcecB3Vt6m9WOLeSgJk9LvbjK0KLlsR8sM1AaTJSZNJ5W1d9M6GR\nWA5LcQWclo2o+jzhlbcP5XgMpjVTEoKP6kdJr5awJnh+lF220MQfX3WJ0VeG\nkTWmFmw/5/OhwXRJwr0Zjiex1XcT8/637leDJHRF+S2QPc2Z9gskrse1b9Q4\nQsTPLKGGQ/1uzABn00LWXJAHY1OspmrEp3zzekp6RiwLx0Yid4VeqYanQ1sv\n8ry7EvEvsR9ebtVNGg+Zf/wjnpxhSk4jXeHIAsNRHlz/FFiq9EDloBh1V6+B\naXUJQebWBrt51S4nTrHf8tX5XrtcVWJPvvo7Aa0Jp9vALqBT//ucP0livUYG\nRkg5iEwjeM8i5Ljg/GGz5VcGH7rPezj3WwIYPOLLVD12jxnsUlFacWCaFn2A\nFlhynL515QBVCZzH1QksiwOFqzoOz0kGod9fOgaH3lk+UzXCM8+HbILm1MYp\nm+ngMM9pbs+pVT+03tZCLgiGc8MX+gaOl4d/exmcoPFafUYPUjbGD0DZ+SU1\nqJ38\r\n=D3Od\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9498fe1966939023b553a2f21964319b57a3c021","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","node-jose":"^2.0.0","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.202"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-9498fe1966939023b553a2f21964319b57a3c021_1608183028942_0.1378190461412685","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.45-renovate-non-major-02950939cf03c3da056d5776ee4bdbfbf4f5f890":{"name":"@balena/jellyfish-sync","version":"3.1.45-renovate-non-major-02950939cf03c3da056d5776ee4bdbfbf4f5f890","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.45-renovate-non-major-02950939cf03c3da056d5776ee4bdbfbf4f5f890","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fc2d2fa5ffaddc2ce8b0667f3510ad102a222a3e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.45-renovate-non-major-02950939cf03c3da056d5776ee4bdbfbf4f5f890.tgz","fileCount":28,"integrity":"sha512-th3mLKuGChCTnK1xxSK5822huchwqi+Ky27iERyhKHY6LnLBcVCbr8ewbXyU21hAdleuMOmoH0daRYycKrQKPw==","signatures":[{"sig":"MEUCIQC41P0OuI/cwMyK7HGg3LrxHmxxsa1FSC7JZto3XS31zwIgP/DAEwkK51sUMev4O6sB6nhUzPoel4Nmwh4+MMqgKmc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281986,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf29J1CRA9TVsSAnZWagAAlkIQAIb0v4j9AWs7f3ocavDi\nQZAHo6+WMaIuwxOVWYXNYgHZoAwSTikFUphvzfF42KAa48zD8gx5lhbNIySw\nOOarUb/2ZL3WCoEWHUgKCHcCGU2Ar32qG5WkK3+cq5Io9zTXza91iAwotYke\n76oSzj/RkwC3nKjX+Eb5T6gWSG3baENHPhElhnLux2qptQe77Bl1I1adr5W5\nzi/qtD8HuAE7iRV0B11MbRUOK+iTd3HJUCFQARMtBffZUt0TS1nNncKr+Imk\nADQdqHRwMCpJOJvnB7OPqYrQ8D13RftJTrqQLybwrrSLpQwu79r2vdqR9pSk\n5V+veJe6NLjh1cHzDQWo/lPTEPt24wY6y/h44W6KQ9hIvE62cmjqgv4cxMLw\nt9wMmVfmXWkTIrmz/9cIIL/WR4ZU8uY/GoTpmKRv+qCWg23XSfuXhH8mggBM\nKY4fFA/0Uc8CEx+QoLm4SIcuvu6SInavLBrLwK41F+FpRH1rpPocVGiogIWC\nGZ6Oua/vUorTyNsTZN9OHV7ZfXkT2DporvIeQ2BliCB3KK0go7Zw6MgfG0rW\n6sJ9L/rWo/oF7VoftRIsU7hENCGjrt4cIuJRvz+clAdCWeO7RYKJyE3gB8JX\nMaoPbyE792DNWQ+UU2iqGOR7sTjrAmS+iKj3FUNAGrHXK3GIbyZM6cAfMymV\no38H\r\n=By8y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish,\nalong with a set of integrations with third party services.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst sync = require('@balena/jellyfish-sync')\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n# Documentation\n\nJellyfish sync library module.\n\n\n* [sync](#module_sync)\n    * [.OAUTH_INTEGRATIONS](#module_sync.OAUTH_INTEGRATIONS) : <code>Array.&lt;String&gt;</code>\n    * [.getAssociateUrl(integration, token, slug, options)](#module_sync.getAssociateUrl) ⇒ <code>String</code>\n    * [.authorize(integration, token, context, options)](#module_sync.authorize) ⇒ <code>Object</code>\n    * [.whoami(context, integration, credentials)](#module_sync.whoami) ⇒ <code>Object</code>\n    * [.match(context, integration, externalUser, options)](#module_sync.match) ⇒ <code>Object</code>\n    * [.associate(integration, userCard, credentials, context)](#module_sync.associate) ⇒ <code>Object</code>\n    * [.isValidEvent(integration, token, event)](#module_sync.isValidEvent) ⇒ <code>Boolean</code>\n    * [.mirror(integration, token, card, context, options)](#module_sync.mirror) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.translate(integration, token, card, context, options)](#module_sync.translate) ⇒ <code>Array.&lt;Object&gt;</code>\n    * [.getFile(integration, token, file, context, options)](#module_sync.getFile) ⇒ <code>Buffer</code>\n\n<a name=\"module_sync.OAUTH_INTEGRATIONS\"></a>\n\n### sync.OAUTH\\_INTEGRATIONS : <code>Array.&lt;String&gt;</code>\n**Kind**: static property of [<code>sync</code>](#module_sync)  \n**Summary**: OAuth capable integrations  \n**Access**: public  \n<a name=\"module_sync.getAssociateUrl\"></a>\n\n### sync.getAssociateUrl(integration, token, slug, options) ⇒ <code>String</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Get an external authorize URL  \n**Returns**: <code>String</code> - Authorize URL  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| slug | <code>String</code> | user slug |\n| options | <code>Object</code> | options |\n| options.origin | <code>String</code> | The callback URL |\n\n<a name=\"module_sync.authorize\"></a>\n\n### sync.authorize(integration, token, context, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Authorize a user with an external OAuth service  \n**Returns**: <code>Object</code> - external provider's access token  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.code | <code>String</code> | short lived OAuth code |\n| options.origin | <code>String</code> | The callbac URL |\n\n<a name=\"module_sync.whoami\"></a>\n\n### sync.whoami(context, integration, credentials) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| credentials | <code>String</code> | access token for external provider api |\n\n<a name=\"module_sync.match\"></a>\n\n### sync.match(context, integration, externalUser, options) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Gets local user matching the external user  \n**Returns**: <code>Object</code> - external user  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| context | <code>Object</code> | execution context |\n| integration | <code>String</code> | integration name |\n| externalUser | <code>Object</code> | external user |\n| options | <code>Object</code> | options |\n| options.slug | <code>String</code> | slug to be used as a fallback to get a user |\n\n<a name=\"module_sync.associate\"></a>\n\n### sync.associate(integration, userCard, credentials, context) ⇒ <code>Object</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Associate a user with an external OAuth service  \n**Returns**: <code>Object</code> - Upserted user card  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| userCard | <code>Object</code> | user to associate external token to |\n| credentials | <code>Object</code> | external provider's api token |\n| context | <code>Object</code> | execution context |\n\n<a name=\"module_sync.isValidEvent\"></a>\n\n### sync.isValidEvent(integration, token, event) ⇒ <code>Boolean</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Check if an external event request is valid  \n**Returns**: <code>Boolean</code> - whether the external event should be accepted or not  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| event | <code>Object</code> | event |\n| event.raw | <code>String</code> | raw event payload |\n| event.headers | <code>Object</code> | request headers |\n\n<a name=\"module_sync.mirror\"></a>\n\n### sync.mirror(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Mirror back a card insert coming from Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.translate\"></a>\n\n### sync.translate(integration, token, card, context, options) ⇒ <code>Array.&lt;Object&gt;</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Translate an external event into Jellyfish  \n**Returns**: <code>Array.&lt;Object&gt;</code> - inserted cards  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| card | <code>Object</code> | action target card |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n| options.timestamp | <code>String</code> | timestamp |\n| [options.origin] | <code>String</code> | OAuth origin URL |\n\n<a name=\"module_sync.getFile\"></a>\n\n### sync.getFile(integration, token, file, context, options) ⇒ <code>Buffer</code>\n**Kind**: static method of [<code>sync</code>](#module_sync)  \n**Summary**: Fetch a file synced in an external service  \n**Returns**: <code>Buffer</code> - file  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| integration | <code>String</code> | integration name |\n| token | <code>Object</code> | token details |\n| file | <code>String</code> | file id |\n| context | <code>Object</code> | execution context |\n| options | <code>Object</code> | options |\n| options.actor | <code>String</code> | actor id |\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"02950939cf03c3da056d5776ee4bdbfbf4f5f890","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.203","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.45-renovate-non-major-02950939cf03c3da056d5776ee4bdbfbf4f5f890_1608241780962_0.8832767714753627","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"3.1.45":{"name":"@balena/jellyfish-sync","version":"3.1.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@3.1.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef7b5a4efe752f671139f401b2d18a9c2568be63","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-3.1.45.tgz","fileCount":28,"integrity":"sha512-5D/ifS1oE+/YzMDvRSoHV69tTSc91wEmrjRE34iktehckeZkvvYiO2aetRxMndUd8sHDc7nU7ei/sdj6xmKfyQ==","signatures":[{"sig":"MEYCIQDWQ+rFjcJgBBD0Ptlrku05z532WleHPYJT0U944IOsJQIhALG9qTde8LcJHq2KENec2Smk8+9zioCg8jQiZhBYhlcE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":281926,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf29MyCRA9TVsSAnZWagAAB8MP/26mfOOJayQrqDxHbzIh\nGWsB68HzI6fXcJJW2I+1mnD9P4B0Uu9m0UFBB9B8QulRooG+cBsUR0cSikk7\n1ZJmRX8qdhye0lo8drFH0Wm3x/sctUvUTxWMi4oUtnJm7l1smf1F700BB9x5\nIgiUSNCnaNDz+Jzb6pdcBbwGHx9DlFBBBOFbQPDt6ib4zOfH2CvRLFyW7w3r\nMqhPXhUtNv0JClN6NEiDKsg/GAM8ZQNV8y8C0ifoZGy4rs167au0d3iGvrHP\ntCdzVvDYSre3AKG9Jq9MJs9YaUQQQDgIfH763GyLZxn5gWa/sXMEQzMkVC8D\nYbL5rtI9/WCGy8e4bR9PNGqploDPMDftcLtKOweZphm5ydKIaD5I9CpC8QyU\nFpuE4bDkbEa7wHiiBQTeUrYTCNlbsGJnrRnk+LInpMvddyEaMcTBeueM/1gU\ndLAYEHdIV+CeCOo8cwmJV1VgRqCKylz+M/yragMMqS32mTLHrCeYts/1bLs0\n2IoJNGdXLkaiV+T/e7DPUlOVbTgTxKANfe3rdI7zk0d9zA+PmTGtPcEGQ/bD\nIAkUsM6Bfl/l5PCGVgUnJuR3bQQfzxDN2XQJvH5FPZ6yPyeSvRJa775bsMoB\nLK4Dq05XafltjXH004pkpqGDRkgDrRjTEO74at/0p6HBt0JnpYs+vXWrSNQU\n3b8d\r\n=MS1o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"dac06c687490a89185e0ecad226837238c4636c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","is-uuid":"^1.0.2","request":"^2.88.2","bluebird":"^3.7.2","front-sdk":"^0.8.1","lru-cache":"^6.0.0","node-jose":"^2.0.0","geoip-lite":"^1.4.2","native-url":"^0.3.4","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@octokit/rest":"^18.0.12","intercom-client":"^2.11.0","request-promise":"^4.2.6","@octokit/auth-app":"^2.10.5","@octokit/plugin-retry":"^3.0.6","@balena/jellyfish-uuid":"^1.0.42","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.203","@octokit/plugin-throttling":"^3.3.4","@balena/jellyfish-environment":"^2.3.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_3.1.45_1608241969779_0.3913613985174622","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-407a29756c3d7dc8012f1a436348ed062ecd95d6":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-407a29756c3d7dc8012f1a436348ed062ecd95d6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-407a29756c3d7dc8012f1a436348ed062ecd95d6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"def6f46bd029b9879f8b29b0dedde61f198054a0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-407a29756c3d7dc8012f1a436348ed062ecd95d6.tgz","fileCount":19,"integrity":"sha512-QnQMatIV3ZANhy3ispaUOA9v5E8hdoOAAnIihBhAOAZzb43azOUric2dt4/U8IqfZYWLbx6ekICcpph/78PBkg==","signatures":[{"sig":"MEUCIQCn/KmGAVzruNkatpM07R8+9McFBS0WsfxXBHt2cDL+jgIgCo40zG151d7AXHTlCEEmot7JKNLqGOA/929WWNZW59A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3Bo2CRA9TVsSAnZWagAAZvgP/RR5N2QyL4tQDtbQenES\nvucHPDaJV1gKrrFHRK8VY4ju118Hk8teLXnNIyjK+LhYGepQuGfsp6zcDvHX\nm1aCsGqOOtn0AqM9QMv7zpP5ZOHN94V2h6mQVP3bjqcRVxBck67sskTJdStt\nBa2PGigdnTZx2eB5hBBO9R9mPGkjMwuSdxmNkPt3vjAqRIpMwNANm5QjVgVx\naw+kEDVPlbbOueP7XaxgUevL9A9T1e2kQdxB8ufnd85Z6UwcVJ7JzpAlH69D\nM23bOP96REM0c1Kp31dMaA/hSv+qFOGbg6oKAsnjRoh7VSAJSAND8l+1w3Zj\nF6t6/kEuEmAD/zRncr66pKKls4N+aLTM92DLJAjtQkQ2sozKNHrjE9VyNjHK\nt405t9laxonKKcrbjNIjQwwBk6vMf5gLq/Ba7zZ4pspLBFtuHgt2PcdjHVWG\ncfZLGKP4EObmayTsltK9iIU1WMScZtGnQDWhVa+6g7qK8EjxzvMIcwVGMbdz\n4W4r9JRDJhaP0+aAMj+0hckb8YRUYAZvbXOhidME+Y4kgUxQkQe9XTRM3JTe\n3w73n8cAmZqVVgFLoXKYeTwIukXD1i1k9UWXB6rbRQTjY7IcnJOUb58hJInl\nlsz6O0rxOrhXtF2k29RFrvUpjrdQb2HEJFiKnpk9old9BlFPMZjPfibyEzGI\n4pT/\r\n=wit3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"407a29756c3d7dc8012f1a436348ed062ecd95d6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","node-jose":"^2.0.0","jsonwebtoken":"^8.5.1","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.202"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-407a29756c3d7dc8012f1a436348ed062ecd95d6_1608260149680_0.952053986439825","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0-dependency-inject-integrations-160437ba6c652b0e893b729b3ff354fae2afda44":{"name":"@balena/jellyfish-sync","version":"4.0.0-dependency-inject-integrations-160437ba6c652b0e893b729b3ff354fae2afda44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0-dependency-inject-integrations-160437ba6c652b0e893b729b3ff354fae2afda44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"488a5d817b6e8871c00e0783ee381dcbc66216d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0-dependency-inject-integrations-160437ba6c652b0e893b729b3ff354fae2afda44.tgz","fileCount":19,"integrity":"sha512-7zBgMYpWaAzbQLHgwJS/kivCPIhBsd1Wu3WSJTndc9lGNDSr89KvEZem+8Jbr0vv/NsySQLLFVANbKbWGOtSzw==","signatures":[{"sig":"MEYCIQD6P1m5Xs8danHw7m0JV9xlqWbqmY1+waAAtjWGq+H5KgIhAPhpvIYkIUvORuvGu+EiV5biFuVWKKR3XpAgXpp3Jy5J","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105849,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3CIiCRA9TVsSAnZWagAA2wMP/i4kho3pzGcGboS2kgB+\nIAyAJD2FvB6jnUoNgaDbwPmnZCr9FyFhikuk/iSdJ6Ga6wEu7/BbBLDJ9Lv3\n3UDNJS6kQqaF5DFvMHpkLVugGnoQ/2m/V3eTA/cZ+StQU7iNXWy0vCgykfzS\n1dtIwuqx5fSn9wfKDS8uQuhhMhK4Ru4U7ll00DFQE67qed7I6SMjrCQkKw0H\n1i+V/meIpp6GxdPMKspmmuVmr5/YkPUkKexwQjHPmuXVZ2oOLHix6YexI/qA\n1slSAXFJ6JMosMNTaeAvVA5huqcCnbu7u9cei/EmIqgtGSZ9rfHEEo5bLUKO\ndMV6cMTIwwPM/xWpqdNj/SxEbJ1eKnDJSX/U95LwGhS0yO8SB6jt3obVYmpe\nvifre9Metbf2p+4GA3nvDjNTJ3B8shyhxp32LDIPm7mrvjeZS6MyS/+TQGed\nTzO2Nn3Izk4/tux56Nl4QbgtJTAS3KoSJrTA2q/0Q8N2RiXmSMaJpHxrYd0/\navTTxKduq5Yw8PfV1f/5IkVy57Xy5bkIZrMEH8t4qraX2+3kM4q0BT4c+FXb\n55OfXF/IxojghnkX8ykIDixc9zXp/fxLN0n1Tqzz1gb3YxE6daTupbjQLMnX\nVQv29ScBpjqGP9/bnKEfiSC8LuG0ncXhr9Bju2I5UMMPq1Slaldvoxnu1Vqm\nc+D9\r\n=lTL+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"160437ba6c652b0e893b729b3ff354fae2afda44","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.203"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0-dependency-inject-integrations-160437ba6c652b0e893b729b3ff354fae2afda44_1608262178107_0.27189296875074853","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.0":{"name":"@balena/jellyfish-sync","version":"4.0.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"506812ce7f71c4e700b1e85d0cd4d7cae9539362","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.0.tgz","fileCount":19,"integrity":"sha512-CD6ccngjCEFEn2trrfz4EokDHlHVwkaggETjq5OJtRXETp2owpjmTcBUyPMEbST1HkBuPzOdDbPp573MWtagsw==","signatures":[{"sig":"MEUCICWU3ReFtxKUo3MnO/LUxFNOW/9C/GhChNJiUALJ0tD8AiEAiBTZn9B3je0enNi0ydvqNb7JN1sSPqwrrLjfC74+ymY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3E+SCRA9TVsSAnZWagAAcIcP/RIUj7M6I/pZM10b98+D\nk3kuATLuwAmSxMgiCQ4MXXdMv3+33gAN8gagChyqKsHNtlAMVI/fTHJfecUB\nNcTFYls5gak70/RqN34jBIVc4O6RbTATheFRDh+/FSLxZDopuC7zSh0If/cW\nj4fqtQEymvGG2C5GJfn/0eOLBIgBPAG+Z3D4+0YWh5hvrS9euEuBA4Wxe0Sx\neYo4YbAuVImzr+i8ip0w+ZNOtCGGxAPYbA5inq5Skdfsq2rAgM4bC6EC/Y14\nPlvQVyl1dpzzSsSe/rKn/c0BLPpJknvV1aLe+Lz+1AJL3gbPgn72g/TkR8F5\nvsc9smeRhOlj9efwLokmR0FOdQv8UmpRuN5Hr23nYJVp/vMApwecdqqfa8OJ\nXytgRF5GBB8iYQQHRUEpRj3K1JuK1Cp5EJ9Fh7MfzVNwifjXDHTpa5nDXo4/\nBt31Jo8dTaENEO3mM/oZuvRAsn2Wd9ffWjGk6x0so4yfyVMYAl5xXGZzX0xd\nddAnuX6na3ekZk3phle1AID/8yKggArA+l1wUPN4W4wxug38MW5TUidGzsxR\njBIKUfR9DNAHvzZtozMAo2MnBKVhFTe0Mdrb3mGpvmhbFl9Z9PUnG0BP9IOv\nFd4dMHMaWSEB+ZHn1ApHiOKr9CiUVzBHP4CzcAklvbhRe8SEp3ORqXQtwvjn\nGX14\r\n=6eVI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"34d8aff96bbcc128902be98da0761477147e577e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.203"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.15.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.0_1608273809896_0.9027798048423608","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.1-renovate-non-major-8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd":{"name":"@balena/jellyfish-sync","version":"4.0.1-renovate-non-major-8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.1-renovate-non-major-8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9ec0d10f633ac12b7a9277cd51cd9599f0c6d751","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.1-renovate-non-major-8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd.tgz","fileCount":19,"integrity":"sha512-1tzDeuTXAcMACvGXCCMlmFLDfvOsL0Tx6fwPFQ/UspV/XnU7M00iSm0uifc/S6+ryYaZVgHLU0Llga9G579gQA==","signatures":[{"sig":"MEQCIAdDOdNyzZMyVpddxg5ZmJ+YmP31d+OqKrCKRup9f2nZAiAMebPzdyu8qLfyKIhfYAOHIhnP2LKo3fcbZpy5lDRQSQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3U2MCRA9TVsSAnZWagAA5nIP/3JcnQAxm7lzF1ZJaaQZ\niE5fgForlHjO4UDGyiaq6B/B/RZ0T5OvRsjik6w5szSTjYCQNLKEUxVh5uam\nyCJcJ9jh0h0767U/+S9hu9EMjTHQIcKkAXef9780gWvDYEGK1JppuGCAEXY5\nOhiwqWuyGTYrUoLcQtWMvUWuXzy2a+bZZp7k6bdG9SLsay9Aik7RcDCrem39\nb4Yx4PnXASRyOj/ybEZlIMgaL1mDUZMzUpWZzhDs8gtvHBdJw244nm2v9rCY\nz3sOygo/o2QH0e2+FjYkyPxexrCdwhFOUnHoZkcjLiENO5NJlcW4XG0039hZ\n+r++z/knuo6Kp7DTsJbK9mcStbyCTX1R4NU9or71I9odP4GkFgCtq7akgyHB\nYVmvjXfXqHSCirBWiZSmE/FlLXCAGb+B1OONdyejrZOIXP4UGrJrvg5nEBTv\nsVTN0Gkbq6h60bGt8J1GE+es//tDHp1PUJI1Z7g2U8XCIXD2DCSoDJm+Kr1D\nYA+k8psVH84sGyiwWK5o2WKjc0qNGovQ5AQx1e0sG+4ScRVpLRS7jJbEyxFh\noo8cqfZSNJV7/l0LP6YD3WnP/U+bKeAz7SGXgeY6UlD2tuST+SZNppHty6+Z\nR1lWpI8yMwyl2toMCtHc8pbnnIzWvQEGUAMTc+EJr/j31Ay/owiijtOV4wH2\nUoW4\r\n=jIX1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.203"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.1-renovate-non-major-8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd_1608338827617_0.5239926223616407","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.1":{"name":"@balena/jellyfish-sync","version":"4.0.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27b9d1c684b2a4bd7ccdc88fe452597ac3b23e80","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.1.tgz","fileCount":19,"integrity":"sha512-MpDSagsY+d3PDBCZxQZg9008cQ1owZoWGwY++NDBm8Yrddb/LxcWBgdtBIXhs6VKdZvUxMeaxHe2fy/yxCalQQ==","signatures":[{"sig":"MEYCIQDsDfz7LOAKgBXMFCX+/BH1hEPZZtQw1ynux9hOeljuhgIhALtXCYp9At65r3vt9Dmx/BJw6Tu4AKLJAABetJ5NBPlM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3U58CRA9TVsSAnZWagAANQ8P/28TgNJeREuVSBKqes/w\nf0uFVcdj7bIbMWao5JsqjvtPEtJ+MtrD/cp7kMS2RinJ7+jiiROYAg+MWp/7\nfssKaaBh9/ndsWU/Koo/QAvFY9TPrZPob7vvZlmDYKH+JcfDBVCJSbf4yfNY\n0xqtIzilErPdLb6QFOdz5Qnu6k3khPZ6HU1w+Wd8ZucPG4wrQJp6fEYUH4wj\nUYiMdlq5O3si3AYI/g4PdnKt1gr2f//kbejsB0vVuOrULJAdTPZYHDXHrpVz\nAyNqw31GDRa7DV8lUStrdjdtytQYzG23RjyYFDi21nwxOiCpk+Ay87JEe3Ds\nNjsdZrDOthZWRl9cmNXGDD9izEDcJJBDkQjwSFAjHRE9sW94EIxyd4O1rFCN\nZg7h3IGOtap5Olwd8sM7qiLgi5NHY3DuM4hqy1O3y8DykSBa2zlrptRlfRXw\nPd3qZnb0TlM0Zc80ohFkutVFlO//PjZLX1YhKHKOzvq5oltNOXSjuH2Fd9MG\nsslZFqbtR9fCznNbyLb51F7kTmL9tyrjlPwDHwIYqLUyBXQKIqGYpo00ZkNa\nbEZl84d2w5AoxyJYNcyObq2lGvjrafjFjVi+lTM/jXl5o4wrKIl6F3M0JGiz\n7VQMvdYPMKejDb6zUuWILksbVGeqTvceoTtz/0izgs9XuYt0Ft9RL27AxFBV\naD3d\r\n=iHYJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4bd3bbcfa5755fa818ade41c7107dbe3b72309c7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.203"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.1_1608339066998_0.8247070449894582","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.2-renovate-non-major-5fbf721c14442395c3107027836b19519dcde61f":{"name":"@balena/jellyfish-sync","version":"4.0.2-renovate-non-major-5fbf721c14442395c3107027836b19519dcde61f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.2-renovate-non-major-5fbf721c14442395c3107027836b19519dcde61f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b17c731ef0cb1b1a73862c544c1b70e23c1d1ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.2-renovate-non-major-5fbf721c14442395c3107027836b19519dcde61f.tgz","fileCount":19,"integrity":"sha512-dIywSQSdC9hueSWOD12I7xcy6pXTuC3cJHtyQpYaoxE6JAw4dSajZqg5iolFqwXqBdre1t9mA7QkhYkyv3iJQA==","signatures":[{"sig":"MEQCIE0hr7R+tYPZBZau4Ozv2jNTAcjQZi+LQH7CdnjOK7LiAiAx2tm6R8XK263WIdLDNyV4f1uEb4oXKP1wGX3TdSrdkA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3VBjCRA9TVsSAnZWagAA0KAP/33oCJj0c9K2Z71a+zEL\n+wg1Oo2EUO20d5u9uMQsBnsPeXoF1RfmfWgPG9wLm4PrBhx1QnZlvhmKv+pT\nsWoJ27r5QfyZGEQSKA2E7mKlLX21OqgVEgM1X6M5Yf2RqUbfYfRpjDUZxv+X\nDk/CgrXr/QLZfL3OMfyEqWC8CGPJ8NMB0tH36Lve0xuK7xe0wJhBo/YsmEs6\nxsE861/I6Tawo75Fh8i8sZ02/w5ILtsTzQtEISEVBU34SGwtLVhEJfC8bMCr\nmeqY2z0FREJAGYjq8XKzVWisEMK++oZww5s0YllTFXSYN0sT/4zH6+34a08X\nZs+oy/Xk9zZeW6Daw+56+KLkdexANeaZig8CRtXGFJ0sIqscyvRpvk0+cb/2\nip/ir6mTqhDs20tYo7qdpMNJUwrc8bHDY+TKxTdX3yjBQAu2Fosnp6ojv5ai\neP2jrE0h23d1pPbRIXDAv2M9ZO0Zw11QYALTFPlAF5NRAmcDht17O5OiDyxs\nrZ75aZaYNx3B338eWIRVsXaMfFQdJC1vnYQ/Ey01sVbi4DPJaNb8T5bXilqk\nxVUIGcafRFTLmtCetI80Yid5wM+GK2VvcW3l6w+n4F3dvwJiAP+P5p4BE2NU\n5nh2tfxcZHGKlQhhVYM01hk0SrmjIKc93I5w/N6oYbD6RohQq6IHJO5N2FA5\nO2mH\r\n=2VaT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5fbf721c14442395c3107027836b19519dcde61f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.204"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.2-renovate-non-major-5fbf721c14442395c3107027836b19519dcde61f_1608339554959_0.7200760403034951","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.2":{"name":"@balena/jellyfish-sync","version":"4.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3354df8b1d3e7e06ab0d55d704a8a9bebc8e5f30","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.2.tgz","fileCount":19,"integrity":"sha512-m2Ct7kKJbf6qiE8PmlHi1txC38yPrDN8B+uTsTz+6Fgk26mByYdsG47KdmuoRppXeS1eL8bFgFMdyHyPm+egnA==","signatures":[{"sig":"MEUCIQDoudUrcxWseIdPu+EsMh0LwybPD8TInC/0NQzFcHuzwgIgdMxy/kG3amE8nyuuAcuHmfbmJzT7k4Y3NfQVBC+Ce8Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":105971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3VF+CRA9TVsSAnZWagAA5GsP/R0CpglTDajp+36wnCBb\niAuRAE4ZR5WEK3Opb8MPT14z0av1AH6Tqk24punslpHiXBNTgHavO5OkXUr2\nyg8pySp7H42lQzRRQNl6HZ3EEOb+kDBHlAeO3t7nF2B3EYqKz+XD1Ao9DH5R\n6s6eOcqFVitgZZnLx2CsVXYn+J9iNCPdrjCmqhLVjSOIXbZdsD6tIDNRz01K\njpJl9orxuVedzSFTf7d/An2+/FUblrCjQTzlsHDgveYdVtKjEakIKe0Op2UU\nbhuSaGOo1CH0893xynihSyPSNSLyzgFq2jvFYMBkzaXrMOj3uXXKjlphDLQn\nXHVnfTFpAQikVjFeX2J3MmI8GP4yhdPTrRAE2zfei6mQS/X3PAEay+FO/NSw\naE7j3lBy6ZsdBIvoNsWuNXCujnsl9XttwZHeqcT2E6YgPswgwW670UgtPjR0\nVT6+oc5pUCzfe5W/I2UL23SmM220/s4INfcUUDYpUfGpLCDp/2BBYsy8kMS0\npuHrYEV6s5vjVQmykEMV8g9TELyN8ZuxAochkuzw88brCXeruUxv7QfiyIuy\nOqhUo5T3AoQZQR/fNeApzl6XzWSSNe/ow2amtndQFj3spmUUo8hS08IKcDtN\nrwiBk451i06HwncPumIro0PpjR5E9/zhi+rlUAmo9WBu+wsqhkGoPr16J1xP\nbvmO\r\n=ov6C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0af975217f6f8a2ff5f2be0f47aa07e7859ef3e7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.204"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.2_1608339837592_0.5263623095659717","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.3-renovate-non-major-db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da":{"name":"@balena/jellyfish-sync","version":"4.0.3-renovate-non-major-db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.3-renovate-non-major-db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"77eb349451340c0d5ab2cc4a8eddf140dcfb80db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.3-renovate-non-major-db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da.tgz","fileCount":19,"integrity":"sha512-gsflbaR2tINY/2yv2UkXPG+/c64/4GYL3CmxnZkFtiU0xPh16XZmtTfR+x/qS1GsmrFbdlFM6B8vIXjuSct9pg==","signatures":[{"sig":"MEUCIQC54xmyHFOpxErVw8kzzMIC316I9jQTJJHdWZxakdBwhgIgFQk8duw9EL8SZzfc6lCDyoSnQS+ONXO8ZCQR++dcpOY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3VOgCRA9TVsSAnZWagAAoMgQAJna/wz1q2o3ciTIeAck\ngl0ftw2xsCAeD1WJZyNSmUmSZNL43xRqpia5MTlQCgbQMAlinA1J6SgBZufg\nuSqcDBSFHlnhca6rraWvHGoxe+h+QiAeCnz/uuuYv8bqwDUzNiMu92TZjwl/\nIPI4qpKF0pQp4gCAr8YKekA2xHYsW7+JpJTBn+CgDSWkb9B8fl2d63eg8Z0e\nCpWNl8DDDd7VYB/zo5M9GXrhgHiO1epEa/3KtWdlSfwyI76EID3Nbthxq1bS\nD3e4mE0GQp7vFZd9OREY1RczBIuA7vEV1nQ4518A71nU6+FdZsvcZigRCu82\nIWEAJI7pl/ajpMQ54zIpUZo13fOWhgP8Ul7d+0yc9/Xm6RKMFfSOxXL1+6EP\n9c0Mq7hmf7iBvJj8STo1BiPlnbxHqNC+IJkUq+1WmwwCVWxO4MbbtDfT5PmF\ntsA3d39RvNBC+NpopH2q7i4nMdTElbxkzc3jDoZgb/AXShbrBRS7q1eouxo2\nP5ITeoVFgEqTl2PzuYjwfeMCVTvITveZS+E8aLo7oJWok8ySw8bJsz+8hrc/\nRZHlFHDBO/smXjBGw8a3Ar+IweF058v/zrYS4BhmaE7wkEkGc3iks//1yUAQ\n9N4lMwMozJZDiEDwjfypa7pLmIiiB8K1gO4U5kwNR714M4/xzlafVEstx+ex\nLJ7d\r\n=XG4o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.205"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.3-renovate-non-major-db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da_1608340383440_0.4061406966595187","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.3":{"name":"@balena/jellyfish-sync","version":"4.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9c701199994e98d8ba1e0609d136840d2e358a5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.3.tgz","fileCount":19,"integrity":"sha512-uTrFRP6XGnL5RW8JkfFP8fA4FXZsvt+yvJyvimog8UfjY16I54cpmEOVowmFHk02UjU3OKzkV+AwNoJJSc9tDA==","signatures":[{"sig":"MEUCIQDFvkCESk6zLU4kJ89gSgAdYa0LtnxSKQbE7HnemMtIBAIgZS/hFkQ3ESnDIdlreK2eUzYZtt0hVyK78adenjXOhrQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3VX7CRA9TVsSAnZWagAA0YkP/idsvdeHCpZcuu39+nva\nZBnWNCljVinFhIYM+vaHoae0NnmOefgMI619ZKghyXFE0COYP7lrUO9dEGx5\nwQ7jbasp3Hzpdi18l7pBGQ55zWYeGyiecDpgJlltzBL9vjcaINgDhD9autXF\nvgbQcyJzKeL88UEZmh8VuyU/iXHhat1vmFlz8Y0LgHQwf7wp0XkZeWDThfKd\n75ug9URcyCnKkR+m0tmwfnBRdgV/9nJhjOchJdCPyYykuqxWpWFKIZ/092jn\n+qHwlJumYYCczY9buHljw13w217pSj2uS6+IZNbmt6CWX1r58d8oor32WgFP\nyn95LbyH7f2M4IBU77LPmO7kMr9RUxK8fl7IquTNwS8e2i5/7X2q9aVS7zlx\n596+ClgbANaD8m2OPmbaes1iYKTEHAqHk6JVY9YOaymLO6qB+192a3CWXW1H\npdhla8xAQYQboDbY8drKFgN2fvgJIPvs0ZVizhVsi2giqKoFKMnnzZfzC9f2\net85Iya4vD2ep/CkR4QYByt0wCUD7wewSdkp+Okg9zbVdhjIspEfXYAngHh3\nrhY+Su56+4Ar9C/8IOx2J5XstcPw05IJP1iy1qrJW6w4U0o2iWwY1BHRpqpB\ntKEvbZKSSut1JiKs3DNQw/2FuRzCxnzwUMyFOY74qXOav+8cjX/sZetizLvH\nuqvO\r\n=7hbK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"603bff1c062243a5d58e9ab90baf2900329b41c4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.205"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.3_1608340986575_0.5513726689849068","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.4-renovate-non-major-2eb269d09cf57b73668f6c1dbf1e74497fe4b916":{"name":"@balena/jellyfish-sync","version":"4.0.4-renovate-non-major-2eb269d09cf57b73668f6c1dbf1e74497fe4b916","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.4-renovate-non-major-2eb269d09cf57b73668f6c1dbf1e74497fe4b916","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"acab0ecbebb75e5e17aa11c6b2d060d3dd3b5f64","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.4-renovate-non-major-2eb269d09cf57b73668f6c1dbf1e74497fe4b916.tgz","fileCount":19,"integrity":"sha512-y1+Bc3ITuD0IWKQKhuNMIpK6baHLgHJdSb8nHGY0Oyed2LQ/mNBJDsu0qfn0cxHLttr13UUFCHMmz5sO/Ttklw==","signatures":[{"sig":"MEUCIHWJQ+xS/kiwLwHT3fTq/+b7EzXwxXix3k763EgHkNHqAiEA6nA3XqzVOdL3aau9C6+R+XK1ekukv223KDw7MlQwrSw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3ctaCRA9TVsSAnZWagAA26YP/ReHoEOtAiIjLz0KVkJ/\ngt7UGqAGn9TiuS/6qEGAt1UGPPqGn0h/dPKty+lspmG7BBug39fAykdVmNjK\n1bXMkoykizSrdcwGF8f76J1a3kwh6BGKkaGiDGJMTSClMdj5MoUQQLNl1wnk\ntQmkmL4CS07CKh5JB5VOcZ7gOaChelG5+wwaeVxXCrNYtzOhfKEc1MIYq75n\njp93+bUNe7fURqIo/v99B1ReMfxcJAeLWWXB5Jww9Hv1L5ks7p7P9snJnqxI\nfpLtrOc/dbi8ltmrO03Ni+tDH2UbBrKamDDKucfY5kWdslQwKoQKxYLsZOUd\nxIwqxaaO1LT6wxvo3i4jHOduF0NeyYPvzMVUduoo6B6Sun1wBfy2EBYGcxyP\nPvDMEx8e5NWTeGJPLspUfWUSWWbA1drfD0WBQY5brbygDNinmEg4OYfc6bkq\n25fUiqC0r+uA/MBK+7Ap6u5irSiOty36MamEYcFN+5qmZGs2BtWT3PT1IlP4\nruirwo+otTVKA5nvuGAtkP+rKgisOvwhSvqb2uFm3+PmfZYbYtxIerjWIm1g\nG0iJwRBnHCQ56l1ltTkVOJpHPxW1AB8Q6k2+icsw7kezjT+rT0UbCM0lr6ss\nZPOU3LoaweUieVH6sr15kHQsOGo8AHC6Ie6kX8/T6nJPPa727nVPYnW/VD1A\nK8Z7\r\n=55WT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2eb269d09cf57b73668f6c1dbf1e74497fe4b916","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.206"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.4-renovate-non-major-2eb269d09cf57b73668f6c1dbf1e74497fe4b916_1608371033567_0.3527019599791241","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.4":{"name":"@balena/jellyfish-sync","version":"4.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e4fae9117404b2d8919e50e4c407e839d4bb8a14","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.4.tgz","fileCount":19,"integrity":"sha512-uZU7eOOP85cxJQzv6EqPeOwO0Wbih+L5BiLRRtc4xE5vsGzuDSBKYtlyufhYb/x620TFZwZbHNsVePvAxj3ITQ==","signatures":[{"sig":"MEUCIDMSsBZfQedDYGo36HeJw2k9FGeiuzkgtJfOz5m0x6U5AiEA7zHGuBhFVxY4THhlyxJxtFLFPls/zWV0iv4i0fe4vMU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3cw7CRA9TVsSAnZWagAAsdEP/2UARAHiC+A1DrVQFvIG\nOB7ECfAs3Nt7pTVuRRyTZSip7GJQ8KNKhQR4GSkMO1fq/ZLWhB24eQ9J+jzL\n7MXtITEOkqfNmx4LbPLMaD3IF3WjwGf7b8R2bM72F7aH1Y764hcY+GOyMrxB\nSV4KJMHmHNR35L5giKraPk/Rtk13lPbmZIqZ3xB820U+DBY6fxWlr//RsRIh\nXKbxiFoP8rPHqSQufs3zsncrd2l4lsV80L5jeNva66cWBu+jJI25LrL9pDZp\nsRgb2Q138HD/mpkiNDLu8/0cJPxD2rOBG2G6jIPGe3M4Dpy8o6FD/YuL3h65\n7jQc5mcL8BW7cql20y1jQJMSa5zvDFYXEw0mM7f49iftCbGuLZIRXmG9tao4\nS1clqLvF+8aOkeR2Q7DJ09jJWvJbs9UMtqCMCEJb8UW9aD6cXcFGlccTP97r\nT+GU/U9CTBG8G2IROpuslylx0yew0szmYTh2pG3pyrIYUaa2E8lMjkLPGSH9\neb66WlR2rLruQCtq8vB6XZZXAasq1HU63Msvfcqs8AZJEEi2t1hArvVCGbAU\n/hnYN+xEkKEBIO9iCLyK7KiDHlaxX8MQNsFddaMhVv0ARdVtf9lPR4tAq6Ao\nt0lvmsFfSc/heeMzt3duAi25MwUzRiGiRxtFvhmlnFZ6iMGlmfTUN/4OGZmc\nwOEw\r\n=eN5H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"09e8725667481c4bf5a58a0d4bab1cff6e87e748","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.206"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.4_1608371258682_0.006444588729388245","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.5-renovate-non-major-2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178":{"name":"@balena/jellyfish-sync","version":"4.0.5-renovate-non-major-2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.5-renovate-non-major-2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4c982bbf64db8e79c3e58b3dc91a0a2fbb2970ac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.5-renovate-non-major-2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178.tgz","fileCount":19,"integrity":"sha512-9E18AlJr3QU0xj87DQ5YBvDKX+9SgYGbx+EKol+0lHJbSkFVvMVSqvzXoqMtyz0e2aG5dqvPPb99U533RNNzVQ==","signatures":[{"sig":"MEUCIESyGjt60O5YUZ0ya6zEpiW83u5efdf4y0fAuHa5zM28AiEAhtJExawm9a8DxAOPPsOh18XJSjJw3DOmk+P0BpcsSFU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3hZ3CRA9TVsSAnZWagAApoQP/R/f1z+tDrJxrQgaRFf+\ngFandoG7nBo3Qpco+N35tbU/PoDXHcUdP+B52J3ed2aQTKyYtojsrM4hW6+p\nRXWlqq7+tMPSQaxVpViGcFMc5CbPo4ibJVUN2VXIvfIWiSl8ZgtzkyoaZCOS\nlOHoWOOuD8wrBQHfc1kQx6IvZIyhqzrSnRkWZiHFYetsiYaAGBrfIHj4is+J\nlvCMqGZN4bdG6bX9a4LPxBgJRSWgb5C3nwDBtdafw//4/s6FUMa7U9PSvG3i\npAximosxVKuGnxY7HsWMtRpRmqZZwQXpxKI7nAuM0xCD9edAuKn3+ulRFCdN\nKmuTBq48Dn8m754WEQ8O8rQiEdJlMB/fJ/GaLrl9Tc6sl5KubgVA4FoULvBU\nhFaTfu4/aVbepNMJnKpFrloH2gITd88FPUoljOo+8ruLh55Sa3C72ktzZ2gv\ny8fKSrJN7S3fRMXbO7gmKWyP5xdsfB3EGofOdQcR2H+ofID09W9UWPV1SOuM\nVaIZlxgAasIL9AkUBgSh5QNULi3o67FgKM+lwa1wSnZMetCEe8I89ulvrXre\nUZTTvEL4xM/FWXEixZJyTmzueoYJJPlb8CXbyA40+9vdKWC4ghL+ZlpVDu4r\nRoj77nIAFEP2ZmuhoswvfPUeGAGDhREqEC+cnjaMywy1ZWdQlFln6Sl/mg68\nz+UV\r\n=rSQN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.207"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.5-renovate-non-major-2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178_1608390262993_0.36955190041350194","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.5":{"name":"@balena/jellyfish-sync","version":"4.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"66374373f84b07e6e43cff2c1d2d0e1596284c17","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.5.tgz","fileCount":19,"integrity":"sha512-Kw6GIpVtrGy9qzm4JV0vA1F6YNPvg1jaS3WtTx0qMkwdmVs/s/UJnJeg5+A2jvxVbnYEwcix4+cr3fIh2L1ouQ==","signatures":[{"sig":"MEUCIQCjMYfWReUY9CgPLPygflOUmDNZFGIRN3BUgqmf8TBy8AIgCdhSr8OkXbCEWxMCXO0Gd+kyQfMMTCnVM/3mvA0M9Z4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf3pemCRA9TVsSAnZWagAA++EQAIiPSLf+O9gEjrZ386GX\nfN02C/ymTiDmxtxoCtl6X8mFc1xZdDWXXcK+FDEqtbVCjCZb4bUx+02d7tbU\n566AszhRuQukiVPogpeSPoBq2ldhrWXjWelNpMtVto51ehsl3dChE3Wa6zqG\nB7xYh0/36swIVlROIr5+y98HW+aP/4hnWvqjvNqka1xAhi78cyX3+dXnUL+u\n36IqIfgyAsdTNzhKrX7kdLSmxs9U+qeB3Cg4+ZHm6bemouN7PzXAFchY/DHU\nte6+cyR56hbDQUk0wuQdz8SqXrEvhod51bRqBysdN2dhHbGvaNEmPxUXTX0g\nk4q4ZwWKWFYwb5KlYM9o9pgcnumUvtECRxr3oPSS7N/GMq1gNpMROn9gFyj7\nXxh9ELmgjrjCkAnVzbo4/mkRmVfYOxPpJ92N7SS2xnU6u2omqqNhzQzbVuf2\n4qxRy4JkuzXOL6w4emR1GyPo+z2oL3oXqiQgIMLiMwfAbMd/BOr9X8hbNZGy\nL2ggWTvgOXXsK570iviAnNz+LjRsn0sMlFdNKK1esv9ep1EiLagpHHGtuDsY\nS7ifoCFGGWDYeUFt0bPEfnBA7TrTiR2/k5CVQhsiwUOHziW5djZ5HI9HKS1j\ntaKGLfam0lVEsOPaOf6yPNci5PVWyR7Xerl17EI4Nj8TsMCZ9bEbB5cQTejF\nj6Jp\r\n=o8Pe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5ddddd6efc355bb43ebe4b395ad6088afdd6f627","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.207"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.5_1608423334158_0.8499634165667207","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.6-renovate-non-major-2b0529c6b6625f373d49da8063cc3d6280fad503":{"name":"@balena/jellyfish-sync","version":"4.0.6-renovate-non-major-2b0529c6b6625f373d49da8063cc3d6280fad503","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.6-renovate-non-major-2b0529c6b6625f373d49da8063cc3d6280fad503","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9b34ce7d08d19e9c82bba540f1e6235c359c7c2b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.6-renovate-non-major-2b0529c6b6625f373d49da8063cc3d6280fad503.tgz","fileCount":19,"integrity":"sha512-sLBjoFI2cQhNbTIkJSSPqZl54pIHEM1mE5nF/YE+j7k97KPAuGFr0Uol8roBiMWAs3fW444Xtl7LYSNtXbCHwQ==","signatures":[{"sig":"MEYCIQCHsXI8qMr+2ACFRyO8TV79f7uly5dohhPjgOEGho0IbwIhAKintHSBIJKAZkLMp0QSvQfK4wcO9+8HqEjwaIAloWLV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4MSjCRA9TVsSAnZWagAA+zoP/RVGf41i34htjVl2z8nx\nNCltu6RrrHpKR2WPlcgTW91xiLxjAaXpOH4WKJv8ns5Q/adqvgUa0gr5L7aX\nGGG8lTjg8J/pRvmaAXeh/4/1nTc7+8gHKJk4ht2RpKHCfrUR3f6SgKjCwBy/\nu6z7FcZJoadYxM914j+74be8CAl1ZwJJRJpnfdWjQ13BBGKY3XfNkG6hltQo\nV5LkGDq53OnSJIbUhYtmhv9Wn7SXuuqNWU1P19/BEhDqgpGGADBReFaYujkE\nFuVtAnGvf0ykEi3L5l1STbXbTRu6gDIWwTIPO6V5i9Tf476UHegkGMzNFbLU\n9H9bBLiBZjXRZFDSr8ml2VqE3kR+RwZJeS29RJM79g9Gvxw9xDCv4YDUfutU\nB9AWwDAqwqBXRA+b4Ta5IG0dVZM7Moxkuot7BkkkMT1qE5TY0FD64OZOKbtT\nrV0v2Q64++MUF5VQhUG7we5i5Ie7hg7HnlietBY46DuNvcqyvvhErdzCk5NG\n9E41Rpx+s+XfjdW2lJh3AElxViQqmI+8C8BJsKQYCFQFcFCQqIIl4L/OsBVD\njnv+h+ka5yQj16+Gug/A+jN8knKkppowqKcKQqE+TKw0JybG9jtIe8seSStz\nN0gCRgvWHI3ev+/bFiEle1AyWssDt89MLK60gkm2jfdS4RTQtKkxN0uNn1Kh\nsjuN\r\n=RPMy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2b0529c6b6625f373d49da8063cc3d6280fad503","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.208"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.6-renovate-non-major-2b0529c6b6625f373d49da8063cc3d6280fad503_1608565923241_0.08407028790363946","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.6":{"name":"@balena/jellyfish-sync","version":"4.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"67a7c3724d21f52764a3150ac5cfbb2a0c427b7f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.6.tgz","fileCount":19,"integrity":"sha512-4K9lUXRPVDTTtmH9f1Jn/E8iHB9PPl7eUUneUAaX68lMnsmvi5MNCo8ltOcrIh6FKshPJ0EybCQu2HoR+4dXAw==","signatures":[{"sig":"MEQCIAnm7NjIWbsR4od9Za7OxUv/w6nXMrH/sgLYb7bJHskAAiBedbMfVHNYVApY8uAsTchqMcb5loRsqsWAG/rLY6MWHQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4MYFCRA9TVsSAnZWagAARW8QAIKC49BhXBAUUi+OoXap\nFGAMAiK8Pjeizo/motEOr2ZIF82mN0vCM2ivoQHJtVKZHPWCiOL2AHvl/TZQ\nvwus1IzaHNaQ6KTXzum8TSoMaIF5KvNXqOCz+PTmdRLjpvVahB3Xll4c3bsP\nFx/gO4VK4Z3D/M1L0e0fbGn2LbIEcIBfQ/thVPVUIvhwvnh8ycSLEfMy/fzv\nYitp+Tcg4goqqct+sJG/RKzePZxE9gRjgnNaFMezUaD7u+NBqAEotQg/QqKJ\na7cJHga/hucEpAlLFLtBVWOQyBxP3Fd/5EuPbv6Bt52QL9QL/7GsrPmzrnfY\n10/JmnlMpPQ3rqu/NQV8+3uqYtVuVUA9vbnyAjxJXqNEXAPo18bwbcZ/j/U0\nwor/80DN1E0PtQQHqrfZCCDQIhu0qxEJc4Hn8TIA9BJOmir/1NSsfk4KDxkF\nUHkbte4iOzmOZhOIScucCPARYxqQdrIZFERwkf9hrOnsN8JxRJmxdMiI/OQk\n3eGt+0WMOA2Y9RruUSU5b6f2NAv1oXP9XUyHnmgEAu2nRXaYB1utq7yoVdMj\nkOC7qTTsc7aAhkHGrO1LxdaLbnNRnXcVN/8nChuziCoDMWa0JjXvf/cADOc4\nV/X0CI9WMzt4OYhe5fOsGnOHFHaVBHfXuNzgzfUSlYX8bei9xGPzkpHXuhOh\nVKVo\r\n=QwMU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"323b929ea5d10ecbfbe3f25c455c320c8be1cb58","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.208"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.0.9","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.6_1608566277155_0.6710022240887237","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.7-renovate-non-major-5689427c77d33f282dd5dd41aeacf57544a4d58c":{"name":"@balena/jellyfish-sync","version":"4.0.7-renovate-non-major-5689427c77d33f282dd5dd41aeacf57544a4d58c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.7-renovate-non-major-5689427c77d33f282dd5dd41aeacf57544a4d58c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6a22bc0b64be13735a76d552c8b8fc1e0c957664","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.7-renovate-non-major-5689427c77d33f282dd5dd41aeacf57544a4d58c.tgz","fileCount":19,"integrity":"sha512-ZX5ASMjtH/I1okgsXUdtuoxfVMc0zy2k8Qv4/a8JvVXq2uF5vD/fJp9rzLKSzcxyqMJICFBqfbDHg13F4Sa+3w==","signatures":[{"sig":"MEQCIAR503Mb0OHCb3zxhVLaY6Km0wW8tIAanwi6zt0O88LJAiB7yXDRuhUZU4Xi7CbNg1jQdHxPD+jPG2FFRvRYn46Q3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4wZlCRA9TVsSAnZWagAANsUP/3W4yHozntB8IhNi7P1Q\nsYpRcq0stZ8eus7gBv3cUb7QR9Mt6p7uYKncp/v/k/74Vk2H+yHaFsxBi6WT\nZteZarXJs82IeNrLvYz0GiCcwA39uCziCRK2n8q0Y+9fJRB1BAIww03T/BwK\nUUdDj+/cqpvXb7um1Ur9lu444FaGeYe09p4R/qSYOvXNhm6vdwZdfltFThIj\nG4mUGg5O8O3uPFW5Ed6d5eeGzScSm80Kd4GQoHZ4nsoPVhYbixJYegeGxZPL\n/rddHqdkCdaygxU8IB3P6AB9m6PqPxtVIOTzlCoR8QGjAEom4lVpbDWaekF6\nVSC+xKco2SyvgOv6cuGBJ3sYNcS8rV5jKcEZFZYL9Ac0f23zjlSabca93ANV\nd12Vm00msj/7agJwnufokjwxsC9aEDdMfJMlrap+8QWP7l5GIfg9f1/mua9H\nWND5RCTuzR0ZvB5KlWGFrQ+ICjEMD/tTwzdBwVbEczyBqmCsfBExV8EUBjFJ\n8Y4dzk47a//NVuNrqKOaxRIN1E1TZDoiBkG6C1NDPw2wwO6XeB0rc79I9cgw\noWoT8aacTkRO9iQiFk9U9EyhLBnTTjOJ1pZGBbnJcqMhVW/8jtDnHxKMyYRm\nCW2sFXlUiipdHhzK2Tc66d0EHc+I8AGsyyi3KWr0+aI4zhWLxjEPqDoSMOzm\nv9Me\r\n=/93G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5689427c77d33f282dd5dd41aeacf57544a4d58c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.209"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.7-renovate-non-major-5689427c77d33f282dd5dd41aeacf57544a4d58c_1608713828482_0.3325820969278577","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.7":{"name":"@balena/jellyfish-sync","version":"4.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"16a68c44c183b8e87a8897d9c2c8a446192827e1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.7.tgz","fileCount":19,"integrity":"sha512-Bt9HWp+B/s/UZaxgLQZFGGqh/MySH2SmMpPypMODf6dip4eYumRY0PnoPXWGH5lZIGzwDT6Tkr3hvy9P4PtAig==","signatures":[{"sig":"MEUCIBmFW5hHWjHmHsfVMuEjbqPS1tvsDj3FuMw4vvBd4VlmAiEA9RnRv9etN/WD/ITuXCQkQrrf2oJ7Gn+rYv9CJ6+r8Zc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106428,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4wcHCRA9TVsSAnZWagAAfNUP/3VCmgHgGhYYE7ABJH2w\nXyNjST0oU8HsRpLY9964PIP5onMlCDBblaXChUI+6By04c1eS+mbxFtLEKVB\n4g7m8Q5RVCsOCRjnJOEKf1DT855FgDHFPFf24UNviTaXawi0RBrvoAqHUYtL\nXd3MYBfCpcZ76+rREmfTAJtD+D9FzOeTtmoH80vczLZiMcfeWT7M23nDAjun\neQ0hDs31aWOfx/8s83wuAfK9j/v4OHCC+tv3fdAkAyIu73JPvUqCUzKgoWTf\nPhawJONB38GCZ7BIb+SRTg/Q/2xMVhjzt8K1jA7/GZBABEoca3LdoqXBnwor\nET5yaHHSjoFQxSQj5UnWKV4YWlt8k/RRDpUHgHrqi69VH7kAbYyLYzeObZZz\nWUF+n5KxZ9+sVGS5Cy+3+f/l3c1qSHQhuhVh24xUXyUQTHEN9efNO0eqEBnz\naaKjgOt04XSZ9GcEOQnYD58DfW1ME8lRW5U8jf3IyIIauYP5Acw7Uxq9TMtk\nijCfw7kiGguSs9AQbM9Z9R430T8bOyeFXt3S0yMCoZYuuX8x7ENTBjijLHHq\n6jKTCLGLExD+eIN5XByjIMc+IrPbLPG0tabJRjqAxguy9GONlutQxYeTMUgJ\neckHhBDhBDmg7RYASKLMDd2ITpi+YHJ1XtpRjRouqqaF98rZArcsR3IBfvUf\nEa+T\r\n=SErD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"16f6fb813d7c5b16c56d787a9151a82a4d2626ae","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.209"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.7_1608713990755_0.4796944691653424","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.8-renovate-non-major-4eaeb8231a3a55f540eed10a973685b5076b2424":{"name":"@balena/jellyfish-sync","version":"4.0.8-renovate-non-major-4eaeb8231a3a55f540eed10a973685b5076b2424","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.8-renovate-non-major-4eaeb8231a3a55f540eed10a973685b5076b2424","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5fc8a706390bf16695bfbd79114c448f5589b2ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.8-renovate-non-major-4eaeb8231a3a55f540eed10a973685b5076b2424.tgz","fileCount":19,"integrity":"sha512-YSonyuRsJz7NcfdsAFb/HN5ZNrxS2OYx1UNoG4vxGbG5NZN237lfbA59KyWj7oVW95/Rfvvb5YLwpbGkdtISNQ==","signatures":[{"sig":"MEUCIAGS7LzzZcXpGFKVABEFh/Bzi0Q0PIQaVYMpf9zjwDbwAiEAx7vN3g2LKr7kRORd116ZI/pXPneQr0NJXZFdzixUDho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4yz/CRA9TVsSAnZWagAA3SYP/jGb3W40Y26UIrMN5rKx\nHsRgma7apgvFpB8COmCU4++PMHJ5b3Czk6ZcrPp2ss1Z4+nX/uTzyPiSgSK3\nhcAXctP7DSrw89MTgb8pqNyfpT1RYDYxVaBN5vV6sM2pUUEYTxuFU8LVAeyp\n3rCE+Or/0YO1EA74PxQD/46QoP72XTWRLt1NB6gwPSf+gtF25HQo+dOKiC11\nowerUPpiMF1OQRg9Q9wWnWBkpivLU7CDQ0jsO+akY5ss5zZr7+JvT7tTj2Xf\nM1PpagTseL4fipBgk9Xwz/hJhewDt/bEXQ5UrMaCOdp61M4ew05XdteIWXZ9\n3wbxfkIcDReKBi2+oobfmZfSk4FH8nYx/gsriVpigAcIWf7p6gXnxjURYTIn\niflTgkvZ0QylSlgPHEqPj4lKieBuXwRoepyv8Wfn4wSfJ009HhgWLUEnFfUt\nyZlZjqHCJ6bAnpgfdeZfFiUMptKHmGgsIiIFsJdJzx4kWxwy3xZFGeKJhiU4\nhow9B2a3R0/x5hpqq5wuuNdRvcYcfxwhUNI0XyaPRxTh7W8VCWuf8LJ3zbAJ\nyYcPyLobEo2Vxx3nDZI3RWCH3wVku+TKAMgfP28qqhGCEL0ZR9f7T7WyL3Dq\nNlAz28UNdnWufQpu/91V7U6mCflO/Js5YnDnzLD1W5VTeXwyrNAmCSrubqCU\nNiof\r\n=UBy8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4eaeb8231a3a55f540eed10a973685b5076b2424","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.210"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.8-renovate-non-major-4eaeb8231a3a55f540eed10a973685b5076b2424_1608723710774_0.926237753916598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.8":{"name":"@balena/jellyfish-sync","version":"4.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ded9b915a93db248f042c021e8ee6d4add37b44a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.8.tgz","fileCount":19,"integrity":"sha512-JwNKre4gvGBXZV5CvLC0hw+RQenrKAQxBw3SbkIEhWAscHAlOWAk6d7JkmKMCFMk5PPB9pc95htgCGJnXgPKzw==","signatures":[{"sig":"MEUCIQDE3B6LI/FntmC7EQfJRcp4u8USGKHJVDn+X3/uGemJhQIgDnRDX700kIikS64N/R2D7s5op9aeU5zLbMKN4sQVim0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf4y28CRA9TVsSAnZWagAAzAoP/jNWKv2gl31Ez6Kf/ZVl\nsygDRU4aF/23IifgrcOmQeSubN9amo+hbuZCI8oWF7FNfTsIiHgE0CUv3sMa\nTUeIFkwlOVrzGRznpbGfMboFa7DMZgng6oXp6XWn2vNdhor+PrNJ1jnBAcW4\ntLI0V7Hv0XB4WMDTpO6tek4OX6smJhOeecWZ7C28PqK9lU/SSB5lnqCM3Hs2\nY8yW5pxAcwAOoUOHAd0mh/kkQqadHs44WiSZacrA+T4+iHr+4jlIlIQhgxRx\nicdo0hTv7L/ck+9G8KvkgIVQy3cQ3Ku1ikPqoYo0iQuQwSWofo9lOkVCP7yi\nUmXOChLZLKFhztdrlcj8TULRvtsoEEnDTdCF1rIT2AkL+Y82aMRnccxbWbMv\n7nD/PgIsZVUkuFKBZHFlxIs+Cwm1b7J/8XagQrHm2+Q8kPRHexQMgiRd+Tbf\ny0hQlq9kg0dIH1wmDNEagdhZcvuq4tI9/LAXOZvqEMRO1AY5SuitxkpQQdaM\njK5LhbYOnKc3CySnoBPQWMDMYUBtkx9J7Gqjq4jNFMnN2aO73a76X7fzCYT4\nDtScF8l8TwlktvZ3Gndne3mGOY1gvpJr3MOhvW2FZKPZoQGIL3a2UMhC3IwA\nw0Ytzy6Nngk38/2inIgSwxjV+2vOlH7RVMyrwMPNR+wm7+h5q/wXJmfkpkCf\nm3CI\r\n=8XTs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8524d5d1b4b0cd1182043d7ea95fa492d8c783b4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.40","@balena/jellyfish-metrics":"^0.0.210"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.8_1608723899778_0.46465541806919286","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.9-renovate-non-major-9f7f15ae667f94390755d33342f69842675ce5b1":{"name":"@balena/jellyfish-sync","version":"4.0.9-renovate-non-major-9f7f15ae667f94390755d33342f69842675ce5b1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.9-renovate-non-major-9f7f15ae667f94390755d33342f69842675ce5b1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d4610d891d64b1ccfa876539e9adc9d73e2bfad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.9-renovate-non-major-9f7f15ae667f94390755d33342f69842675ce5b1.tgz","fileCount":19,"integrity":"sha512-7hy8rablzRpon12AFVWCDUMPh2Df6qesb0Ets7E51mBDnJcMLiYCL0XcLNBGjZ1nu6yGNYqD+M57wRiiaM6tIQ==","signatures":[{"sig":"MEUCIDrf1OCuSBS1y/XQ96w96TpCN1bLH64i8CfJ20Q7PrRpAiEA1PSUuOZPyEZDcjvlYLHDWWpV7lTfoNLzTa4k31XcQl8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5+cWCRA9TVsSAnZWagAAy70P/Av/R2CKuuLPKZlQzZuR\n2FhOkddF0EYKhN8TEV1InkMo9hiQdYk9favAgNR0sbsbj7iC2NgMWXRdrhFr\nxT90xkIuYLUEfQGwPgSgizflo2YhTzigwVYr0swTc5zeVBMja0QzG41bpR/S\ncI+640BGPB10wfijqmXPMYrSVtNDfV2rhhzVTr8/tuePbJfS/2zpUIa3TXZI\nNbQfaWlIEPJ8Ju8Y4pPAdOOhLDWQRI5xweNIUVyH8YxrvUwz+qpnjiSWN71q\nXZkQ8obKuVz87LMXpv0kkHOScBc+AgzWrjr+xfMEUuBWtiLzHTBSRI9rOWC4\nA+9/FQMLK0DHi/T6DhyVJOYR2+jCM1kOM21XGH9kD/NtHng/Yw1wsgCSC01U\ny9fNBqBaD0djw9hfaFPYUdcM69U+nFGh10k7NhqPN7F+k9YNLQSdxek97u+0\nKv87IpJDFahTozxkDHJ+CUSXrMr4GduIT2yzF00QPudKid8v8XKkTcj0/Eme\nZFi699X3qyQ5xzOO59KigCEGp4sAVzDCHaUWwjhAUiYDqP7uBe+7W0hhox8e\nrC5lDmN4g7JTgNfMFFvXqF3XN5Ior8k0KwQJQeWLq4Jn+xCNVKNglVR7ndWy\nTwchuisCaq6Y+ou8zTX5k7mJknz5xChkHnAqSg7x+DwT1FVvzB9IaBH9V1Vs\n11PO\r\n=bt/7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9f7f15ae667f94390755d33342f69842675ce5b1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.41","@balena/jellyfish-metrics":"^0.0.210"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.9-renovate-non-major-9f7f15ae667f94390755d33342f69842675ce5b1_1609033493609_0.7179676571694098","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.9":{"name":"@balena/jellyfish-sync","version":"4.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1cf4787c84ab0638c4a22826d4a51b62c390716c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.9.tgz","fileCount":19,"integrity":"sha512-7KF6iKsrGTpXl4cfwDGQsHB6PGUkxUMHAULEqB6la27yLH0SvKHHbwDCkpIbtp4ldTaFdli6yXx8uG3ECGb6hg==","signatures":[{"sig":"MEYCIQDhGQ+b7TbjswAT4AslOX9+oymSPcDahZBu2c7VTsFlCAIhAJLV0aSfAHjlIigXguXxmI8MF/0VWSrdrC2rNsjx6Dh5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf5+feCRA9TVsSAnZWagAAbiQP/2QXLBd8KP92dN57G1qJ\ndaXSYB11r7kIduc6/GOKTjnOZ1ycy7SyJruTEeDisElfgkrMZSjp0xvKHLxQ\nNWXUbl6ODW4yIpL+ibqWkCT2iSCAl8hjNEA5Hj1GMylpbf8DDNF37T4Vp5gR\neNY6hOtaSdJAqy5Atp+zG4yb0SY+8/szxv+ZJS0w70kPdKxY1WFEW0kapdCZ\nKAbWs0ndBnqhDo/4nX/ORXi2RlzMcKeXFR5u+RRGtFL8OXV+PQ/itu/lDgaM\nt5uT+C30V/T+v7bzfZudhHyopABGV7wqIRQ5xsiOI1ND4OJHz6wety4z/+7K\nCegKqRcaH9fiESuo8uF/vOmizESTZgkWHsRMJBzA1mBjnDLCZOiEOCIs6Zx0\n9x35MVkOGPeRbSkh7X1Xsg+1Jjeo7de/pim3OdDEjvvoJF2c+jN5cS88aVZV\nBYfzhIftKaksymC15SyOws+AlliZiPmE4+uHLco7Nxg6dRzF3h5AtddM0UpL\nesCFZgW42aRZ+NUwpVFSSaxH52hYyozHILS9RJIJDuBbI6Ofp7jnIcuoVBdU\nguTm9ArD3FmCz2LEGQzm15l1TiJG2gRZqoA8kp7p7CrPpo94MOH033njQFCt\niqX+HxyMKR6E/57cFhvX9d2iewSuNJLJoUIlCi9owpGmuvWXqjY+uQ48wHGp\n4jM8\r\n=xwQE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"26edeced885002cf8faedf864d70041acc1b1039","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.41","@balena/jellyfish-metrics":"^0.0.210"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.9_1609033693574_0.19130987445594294","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.10-renovate-non-major-6ed0d44322e8363aded8f32bbb13d9a07a9603a7":{"name":"@balena/jellyfish-sync","version":"4.0.10-renovate-non-major-6ed0d44322e8363aded8f32bbb13d9a07a9603a7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.10-renovate-non-major-6ed0d44322e8363aded8f32bbb13d9a07a9603a7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2cfb6f035abed25d85b42a43b733b7f51d8e5874","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.10-renovate-non-major-6ed0d44322e8363aded8f32bbb13d9a07a9603a7.tgz","fileCount":19,"integrity":"sha512-6iRHCmCakcxskC86oS8pbkQ2/LocYZTILd6J/vWlhTDGJBVgI94JyhohU7CR0e6lewJ26630lhUinNKMNhMhZA==","signatures":[{"sig":"MEYCIQCyIfyfs6AkYbysnlVByXZZ1Fr76yfORMRwuyDLGsfdIQIhAN1d6vqmqTmRZAHQ7deblwF/p1RAQLCzIhHxWTDvmITQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6ABGCRA9TVsSAnZWagAAECsP/iPS6eUmmtFHtuwMLzia\nlisuyJ4Uth6zdBbfNeWGKBpJFGyRhscwsSZRnH/nbUbugDYczP+wHG7vHuO+\nR7C4uvkRlBv3Hz1otB6sC03a1P+SST9bH/WhmsAOa8TwFRbR7u7AUexcQzNV\nRS/hqg/TpwJvkP+1kC45MGBVVkA4ZLea1Hsr/ooWx3oM1drh3L8z7rrKXuwR\nXkif/AfjTDrXmhLhvf4WPUdcOHsRXw/8gr8nP8rnPFyMkdS0JQFBtyhEIecY\n0z41f9Q5QQr+bfq2dq9S8rjbyVlENGmJR+7RPTZg13R+mrm89LjfNeVqUeku\nLn6w0i6APg3wzJ+QC/I5AjOMHs/8zqbvFcNZYo48S3wcAYw+vD9GbAYkAqDC\nYbZZxlINWsQxZdjDOk4sOyrSzln6pmo+UuK1kLz0v90179ttZR7dbMudTuYZ\nMy7e9Wao3Lm73TtvF9KCOiG/fZyUPlHppCec1SLZIfvJNTt9wJ/xXVQFvsIw\nlMBWDanzP12zxl4ApSQHijcxZJlFWMIf2xJYNlhM3G9fPRYIUy8qsgbTWdpN\npA7Md0ATvDJLsJ3AIytpmOxa+xj86gWgYPPzYCWQvvNTKEQObCgQvddR1GYU\n7jFEHzlmZppIopqs9VaIFIjZZ22akJvc7MOp9+YtktUzInK6xYeARhwa3IB3\nsRH8\r\n=QXBO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ed0d44322e8363aded8f32bbb13d9a07a9603a7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.41","@balena/jellyfish-metrics":"^0.0.211"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.10-renovate-non-major-6ed0d44322e8363aded8f32bbb13d9a07a9603a7_1609039942266_0.17675267739968925","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.10":{"name":"@balena/jellyfish-sync","version":"4.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21b65f081646a60cca663b5eb7b0efa26335ea0c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.10.tgz","fileCount":19,"integrity":"sha512-HL28b45Ir3rQgPBE8pFyc3URqTmllwPt/fqSIq8tadMuUbfE+0dowoTBA4sufd9ri2ZHUJJ14/3ldHMLwcbQpw==","signatures":[{"sig":"MEUCIQC65j02lc7XXYeTuVwb2Rj78dIQ/LJQwpLYx/PTDGQiLgIgBSNwjU2nTBg05zq/V59hnKmlH/P+u4O/KQpXMwLCXwo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6AEJCRA9TVsSAnZWagAAIPgP/3aoS5yXZB0Mc3I3vKae\n3R1gHsBiPa2sgi3UzU1d2/SHvcS2oB/Z0fCAOoJvqAqmlmbKKkoDUb60msOK\nRoPVnQGbZB1HieIBhRxFDZRYnRX4DMOiaqoYHIAGLN7WPxJqsHqT6biLyGHy\nG9vLo9KZ2dLBbelJ84Q+Y23KVIayRBTfkYvC9BPiT/qI3oHwCitWm5i+9cwP\nls8CIXePlAqllHdqopSt12H8LQsWcQV1MjJrxcfsVsKf+vgQoUJ9Tc6yn+Gg\nboz9lElHEUGbYABlTR9fjYmGQUoq5X4FTRorjzqWMLEOW5Ieu+AwEJ8wjKda\nM2KAR4OLmsxf1cJdA2E35eqOqxt8op/WhaR5Qy5zwk86oluboYzHcuf9yzLs\nriwbY04bjrbQNB1jgyBcoVE6Vw395YhWuaBvfefBKioBa78PxbgDbfDC2/r7\nmZg57w3RlxEEwBHV4KTBOyP47WQV0JcFnZL6zA7a5hxatHjZ7fIl6ozRM33G\nL3NeBovaPTfiu3aF4JLkmfRo+iE6PcW0UOllB89ftaG5HvVpvR5mLJsi8UrX\nA0FcOEyT4aq6ZAKLKoiKHbKU+HV2o2w6ab3v+QHlDOFyNGlP21h22wP4wpYz\n8Q/0NA+oNXH8owNWnkZ7CD+cN2F4eNsZmUisPIX/ofyamwajgOshGBgCRral\n2FjM\r\n=n97D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8974b2a89c5fe2747545cdc88f132fd36a20ba1c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.41","@balena/jellyfish-metrics":"^0.0.211"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.10_1609040137330_0.21459561156519902","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.11-renovate-non-major-427af6dd09ad118d8b00879f0e97431f12a04998":{"name":"@balena/jellyfish-sync","version":"4.0.11-renovate-non-major-427af6dd09ad118d8b00879f0e97431f12a04998","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.11-renovate-non-major-427af6dd09ad118d8b00879f0e97431f12a04998","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c988c19285b4c1b68a49811c0157c543182bbdb6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.11-renovate-non-major-427af6dd09ad118d8b00879f0e97431f12a04998.tgz","fileCount":19,"integrity":"sha512-68Akx/jzDvrmF50Yf9xTfjn5zFCDGm/z7MwtlgmBuc6fbRmGazwdDAnonx4iBdRs8VhHa1ihZ44r6FAS5mCLVA==","signatures":[{"sig":"MEQCIFhyjcaSq/6mBc58ubxjFtO82jxQ9KIG2gMe3Q88vqYqAiBTFKXFroRJZ1X2O4Zh5h5r4TnYtN+8O6oVs2FiJFaxWw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6TXTCRA9TVsSAnZWagAAIy8QAIk8mhMvZX8dJxxAXIIU\n0eLlPEhgrMaUlgUsFg0Qr+dnkGwXXYx1zJiQicrDreJjNTJyvOhTnqsc/61E\n3rXE1ARbxBTvKWqN7EKbZpcwewSeqquY4vcV0nSq2E7aRF6LeGGAYDzeuwgE\nD/0KIdCpYTem7w8qqqrtY/267f+XaHbV/hMetOI5dUUqbTooJ9jO9IWMefvm\na5V+JVpjyZwjGiJ0DLzcw4oXQOJ/0tmGCnJOE/x//3nvjeHVVYN9WrKv/OOG\n2cjVEnoQq79XgvgluRr0SV1TcvLcRR6J8f15o0KS80e3lyOsEcugZzd6viL1\nxW9vMADy/5KQlrNHmWz3pNtsZvy7auNfuOd9ENoCtFpLwlEtG+FMIdRb4wcS\nu+8Z54bjr33OCszkgqxEbB44ZQaCY+Byz5DisdtJgamOIQyIYugz8YNS02AG\nEHP/NCmZn11K5SstbHqlK4ZmNP2M8xPW5g9zUm97FuyPb6348q+T7p2hb4Q3\ngtPGPB4LQpHchB3bN+xhOG/oJJGHqmHyYOcQKr3tFb3Br5POW88BP3OVfEfk\n6g+2P2R0rYyaB6rWsShIiXeLdnE1T37w/RSNMlAfPgE36Cj9fosNqnGs1hTh\nnUry88lrdQUgkex4tnMfqM+7C3QfVjxtLTsTsYZTBJTLBSswm7d1pUUp/MdC\n0eFT\r\n=S2hv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"427af6dd09ad118d8b00879f0e97431f12a04998","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.42","@balena/jellyfish-metrics":"^0.0.211"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.11-renovate-non-major-427af6dd09ad118d8b00879f0e97431f12a04998_1609119186978_0.28610432035172195","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.11":{"name":"@balena/jellyfish-sync","version":"4.0.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2c39c9255b95f8ecea783f43a89dd21be0ba04c1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.11.tgz","fileCount":19,"integrity":"sha512-KwHeKqnJRHkDFBmwBvaupc6QVhnpcMTJocZe+4olK5dZ7pqQa3xcdtLM5rn/6x1zAaLcMmFrt6TuNtpOHZkCuQ==","signatures":[{"sig":"MEQCIChvSVtEdmDdf05v1WWXHS77RSmY4dtBAOkYBusYjJPnAiBAWKx8YD09Kwv+kEXqwv6i3E1OPAlHWquP1Qwc7jkHxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf6TawCRA9TVsSAnZWagAAU90P/jKp2tkSbDjtLllG3spy\nQMIMRWiQl5/q1REB3SAx5armISXOoCMRljEZfFzHAHN5WViWgL3gcfsToX+5\nKRs0DHJHJujTbEO0k4bWn9WV3co/U47vGvahjwszpfoN0eh0P7wyobtRMPtr\n6Ap95qVvCk073nTc9r2QY6cS2z/hum4Nsue7zBea3qbj07O0UF8vsfeRAXS/\n5q2/w9CTy5oqUYBE7zF0knw9iDoZqiOLQpTOBM3T0vtMYdmHtFThQkTcTWlQ\nzM11WSnkuMHNiTx8j6UVhkUs/NHPz2+dcwNUWY15ourihsvUJvi+zcOxzUXY\n0QSoPcNj8UgufvT58Du3QptGUh8PYd4DWrOQwiTa6keqJwfK8+3hBVBRwGom\nollqaXWisj2qBxVVKnIx39JHKD/dvOJo6RqSKNiQAT4u50xDhXd0IQjcJH8x\nVqgbj+TotrzKab+JIBU3ITy40zzJmbfMtLv3k4V3ihcvc0z99TFDd3+JTHkd\nEFsy3rx3TAd9ktXSVEaOXqNClmTWhXXos4vxx6Gln1Ev10gzxeZ4LtyxLcd0\ndfcW7UmyuBvHPJ1LWRUURvlR5chDFoid2NOH6aky7WrpY7dhk56/ofuxwPb4\nE3RXFBvDLwghQ4+hZI9GLpveLJ6fUuYObXYQtvpkqVnn75vCnR8mCK4CSUZV\n4Ud7\r\n=FEhs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"40a6e7ab69028d16b955e08d232875f7ae294b15","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.42","@balena/jellyfish-metrics":"^0.0.211"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.11_1609119408259_0.5440584082669413","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.12-renovate-non-major-1f1eb6186e6ce38a052f09d3c2c80dbe017993ad":{"name":"@balena/jellyfish-sync","version":"4.0.12-renovate-non-major-1f1eb6186e6ce38a052f09d3c2c80dbe017993ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.12-renovate-non-major-1f1eb6186e6ce38a052f09d3c2c80dbe017993ad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"67243b67d94f28f46106d15ef34dc56b585f8b8f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.12-renovate-non-major-1f1eb6186e6ce38a052f09d3c2c80dbe017993ad.tgz","fileCount":19,"integrity":"sha512-0tnR6Z7A0SIWywtbjUM7WGq41aRSiEATj7TqK0Hdc34n4xg0p6v9bpm/CZISUJeCxDpzVtS5CFmnrMsAuLXkXA==","signatures":[{"sig":"MEYCIQDaENfbUV+gTw64hYSILFIew65oN3IC5qXJI20uuwvXsQIhALJlHDFb+CX0oTxbIQecNcBePeAfDtoIWY1/E+efoR3r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7BNYCRA9TVsSAnZWagAAHocQAIxr/nGX1Nr0VUXVHmqA\nZDf52IA4tC63tkTZGzRRYl1P3peG9yWVzJMs+ezuKSWXIyx447F7/b/+wDdj\nIwXRTG2w8QOhf4KC/kiWwV6uAqPHIfvsUdLQpdElecKzDxu6+U1ZLUUcjktF\n71Kmjq8apRh2ja6JosULqbFV3533aAUncNeZITiz/VZJqPjKUMoFXsqMq5mZ\nFRkRhJFS4ro1A8B1tqlse8/dJ5pMnu9E8aftxm/hxDZkfVCe5IFMcPuDuEgL\n8Sot1w/2WyxM+TiX4oMmsD9W5PBOSxH3afjRBiOSHcELy4VXpub3rZe3gyxK\nuXT+LqPp8x1jUqxZMCZoR4w1CwklP3WJxozycgwRiRqpab7P0BrgjTVI3zlc\nu1vZUMlqqFCucUJ2RIMKAii1Xm5GDg1j10fSwdzQqKs8difsZTeZAcy5S9TD\n0qfkIQShBrd+5IpSsOsjejUKa9Oz0d8X6cdR9NYVnrQF72v62vssoVZD81Qm\nrqq3EzS0C211Sy4RBwMmTkUKmp9hPxez1SeeqS3Doh9ys6a/MIXPBWVF8yvj\naQmZfza/jBMcl5nNjjQrCNYlVLJEbg65Lni3HgvOOrTqfmV/NEHqat8V/5HE\n0k3YkKpw6F8PvmqS+pr4R404xp9zUK97Lf5zUjsX0wVjyki6i26M8yXmNNSq\nrUIU\r\n=SRjv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1f1eb6186e6ce38a052f09d3c2c80dbe017993ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.43","@balena/jellyfish-metrics":"^0.0.211"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.12-renovate-non-major-1f1eb6186e6ce38a052f09d3c2c80dbe017993ad_1609306967969_0.8346680474198511","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.12":{"name":"@balena/jellyfish-sync","version":"4.0.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"47e20e6d457b0c9d26ca67056fb207222d624400","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.12.tgz","fileCount":19,"integrity":"sha512-1fP6i9VJA3QHeZ5apmozB0C5A9ZjKB/EuNRC3aG/ah7xTtr68tZRqXsOh/WNtIanNuvbtrqnv0MFRiU8A50JBw==","signatures":[{"sig":"MEYCIQDRZyceRLQx6vIe6B5tIZynAXTu8GCkREYfCCR1ek3MOwIhANG5zwB9ujEICIuvNPwQvvN/MRUKA5ZCew6CD5IMrCej","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":106961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7BQcCRA9TVsSAnZWagAAKJ4P/0Z+PIVpHZtWtsmRmt0G\n/n8Z800WD0piBkwnTy1PUmXyby20wxLkzprFpvx0/ScAenFmyNgZJbxmm+xT\nRbZMPBMXR6IKJmg8tgVX4UhHdbjtDzjlRxYMqyf2hK0Tm7kQ9+Uu+DskSZZN\nfY6g/Fuk4IkhBg6H2wAkGTbkzhfzMJhSHwVUnCmqNkddqvutIA8PhMsydTqi\nyFHiZZkWiq8AqcjiKrm4H1D1o7S+B6gx0okdaEuFL75tlKeb+e4xFSIBFVgk\no23i+7D9VlkpC9pVhWvsgGJSEdgeh4y37Q4VCcHcyVBFZGn6Fn/MaGKpEHgk\nWCY9aon0Xz3op/P32FEa3hZ5fkNKRqVdQOYG8qQCM5oMm2l8cRgFbZe4n6Ud\nDn+zvTbMZ3ClLzrajpSD/k+alVmsLOjBMnfOWvOvzlzARNluCHMKicDDCqcN\nEI5VxeIT4O3FalYxAg8cLIcspjChTUNo0dxlLk9Dswh32P+PRk3iddEMHJeD\nlTP2q2EUm480enWSs81lnlaAu2m6FTfX+2V+YRhkXEe7YDGJm/Xr2TdOG3Mx\npf7PnYceXfQdHv0bafWw/+oSQ7RHc7uqugnOGbYrbbh1K4mZshrZ1nC9UYHy\nO/y6+BwAPxCiTUXlWI4W7r2cylUBlkg/xtnWACbtuSuMOt+WbSBrIHgbnj2z\nf1e6\r\n=pzgD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"359ddfe93d8440fe232a690fec6bdb97e944f097","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.43","@balena/jellyfish-metrics":"^0.0.211"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.12_1609307164187_0.7392229267008494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.13-renovate-non-major-80ff874fe6be1f16acdc8a3e1798f05f0955bf59":{"name":"@balena/jellyfish-sync","version":"4.0.13-renovate-non-major-80ff874fe6be1f16acdc8a3e1798f05f0955bf59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.13-renovate-non-major-80ff874fe6be1f16acdc8a3e1798f05f0955bf59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d5366eccbdadcdfb9ad5a67a2c6b545c41ba0205","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.13-renovate-non-major-80ff874fe6be1f16acdc8a3e1798f05f0955bf59.tgz","fileCount":19,"integrity":"sha512-Y6D4ctlbMeLsJ7gIsue7pRqDc7pcpxp+G+JvZgg9KOEfI+bexkJoXiQPtGDfHnewUcAQMtIIVxqLUAOYG1XTkg==","signatures":[{"sig":"MEUCIHNibuxWtDrMSjLwoYx5KYbEDPNoGNRWO6rD2tIaZPNJAiEA1Z8vufVPzqQqyIlnNi5vYPhUIZECBLpRqHXjrOtqjj0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7DqeCRA9TVsSAnZWagAAOJAP+gOhD241RYlrur1taQxn\nyo2XabbQgCTZfDLnQiAFq47D7ec66viJo0rKoYIcfI/922QK3m/sY6tAteaN\nJEfLTUfulX7USnOhCEQFy2rCZNhwRMPDz9xD+ptttAxT0gqLYhcSS0iWGhag\nXemU0XuS2gBRAWHfaEcGLhUqaNMj3e/cW0BfDuwZjYhw3iT186M3DIQH4QNM\nmmfCDPU6/foeG30kMTFLa0dkp520e6HcqDgFKwwKgYlDEIzPr817RmGtOXHz\njXDzLMkB18fIJLG3bH4/IzvCBRculLklu9JTdq97n1JJf4ROpW2A53S0Uhv2\nitsTWATcHwNq7qdB1tKj8M0MCnBuTz/hjNb6F7QjUK0R1HUltZ8gWHWVVMrv\nDH0sYi4LmeIWn3zEBoqsZ7WzDagMz++d2B1/Dy2dVpwkek6LbKL2auyDDIL4\nXxct/8ouShmPazvOrslAqFkvlrh4BKL98154kuOM+MtbqgFD6LhL2kuQtprN\no/C7dIZAueySm+qV70oPJ3d9+zmmL4Skeclux1uXmZpMhLQeZl5PxxiM9Ru2\nCL/5unm0RblfIN+ah9JTVsE6zdAdDVvzodKkZcLQr8+ocLfABJfDcTtPPUQM\nflyAS+vySEE8z392x4pS+xvdayQqcBSi5/W6ZRkt04QJeKwHtp0FGCor6T8Y\nKnoS\r\n=ycth\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"80ff874fe6be1f16acdc8a3e1798f05f0955bf59","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.43","@balena/jellyfish-metrics":"^0.0.212"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.13-renovate-non-major-80ff874fe6be1f16acdc8a3e1798f05f0955bf59_1609317022385_0.14325319562306849","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.13":{"name":"@balena/jellyfish-sync","version":"4.0.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6642ee0ef365b53fd2a59c0559b49dff57feefe0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.13.tgz","fileCount":19,"integrity":"sha512-Ju8CtBXdHewL5JXpUznscOjGtNJoWLqsLu06oWUCh3sNMF22H8eszOgzT+/g25VYni9+kM9tw+019kBSxtRMAg==","signatures":[{"sig":"MEUCIEp7quHS4D5oL53dGiSz7yf/dhqn/H4aDmHH7B7taMFEAiEAjwRSeSRKvz1EZoq/kMsIpFKZTFGkp0mFyOGQYyD4xwI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7DvvCRA9TVsSAnZWagAAoiEQAJ5IN3L/hzyQj0AhT2MC\nqvvqReF+YvwUnRCxqmav/cOiyHxzNSIN7sJ+a62dlGa8XGNOFZtDqo9Mcc8M\ntlQrjwke5zZO+9QjJ+x155R5LBF7az6tVMqA9QKEpTyF2InIvoPVx6PrBEDv\n1+UvLacOJZ6qVmrBsXJO3YHV7/QPWqjVlbThVqMM9XQwo+M6Z1K8kQiA3m2I\n2+kpLUpOvo2RfWl/UUEu4nPC80IetF3D2Hi2vpI4gqm5+MMPKpLts0IKkBhj\n4UpZOSGArsd2irgmQuEA3bxKSWfnu+ngo8Vb29VKexPLZZWB5CtpJFNCr69+\nSQu2YKB47fgXGT8WU4ouLoLvR7bqJVhttAVsddv7KMwf3WSZ2Pxv13mTUPFk\nsmjxVlTj/4wkbECrHD1znH5zt+WjyZtxFjpJWGJ83NQj2vd31BaMJ3TXLOfW\n+dTbiTWlo/v1uDCW5LVhpIKZatYZM6LpvZkYWj0j8OWoiw7WZDqPBg1BnlDH\n+ND7pZgy+2+FqEaV6xd8mvdcMYStoILq4LcoP4g4vYrrW6VQXZviuzOkBOo9\nhLJx93tYo0VY7YBnH8q7yZu73icx8pfrPBecbRstJ0lPzb9c5rGoXYI/Uken\nZWeScWAiKsFUzYCXb0T2avbD166nS13BG06Bgo+j5Zdm8NYirc8Kdk6wOX3v\nUc52\r\n=cjuW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"aeb978d16e5b7255c0dd0e4e995838d693d15b24","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.43","@balena/jellyfish-metrics":"^0.0.212"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.13_1609317358565_0.46052854693583667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.14-renovate-non-major-afba044086b562d8b387dac2ef1d50624d4056ec":{"name":"@balena/jellyfish-sync","version":"4.0.14-renovate-non-major-afba044086b562d8b387dac2ef1d50624d4056ec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.14-renovate-non-major-afba044086b562d8b387dac2ef1d50624d4056ec","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f2ff7d12e32e7ba12c7412d9eff6621258a832f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.14-renovate-non-major-afba044086b562d8b387dac2ef1d50624d4056ec.tgz","fileCount":19,"integrity":"sha512-YnzPgLoB9XAJoU9iBehpoHHq3hTnpdj7AArxxTY++1avwP/RzWj3SWZfvVdBloVDNT+/yKHAF8fB/HuXRgwXyA==","signatures":[{"sig":"MEUCIFHZBfx7aPOHnrUnBaEJmT57BUwIsmoTZrnSZGIuFf+QAiEA8E4VbDFACIs3r4eMVyVsCJ+mnChB7qYq2KuCtWYZWK8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7NaZCRA9TVsSAnZWagAAse4P/R11OZL8I/rJ953IkYcz\n+Y08IByQQVK+EkoVm2yWE9u3yQ16fb0wTafMXcMhu4JLq1f1nlBAdxkGKikE\nSFzeTGLpzNq58a3I5sjDgTklFCVE86QNLfdIBZ3N4eej1O9VvE/KfSDHy8CI\neiCYD0tvQaWH8NcPdvoA/sZ1qgCSVRlvIm6Fi9NpD28H+YlJfC+TagBTFUZd\n7NbsGtQhzZs8ccgkJGUHtAmEh0uHlU+B3vIlQ3UfhvExDqZP09/rjCjPYdS6\nFTro8pm/F/L7eAWFsEi/G/Yzt4Hdt761RfqmDPXq7erHFmfdnhUvpjaUUlx4\nbAdZA9s+a4LXyZZPZkcVfz9dgkjMlxxC610vO+A/qyz+QwQc+2Uc28KKpxHe\nPtPCWxBToORi1QFYF0vYtcmiD9WvA1fB2/C5qyR4SSo3YD4n7JFYD3t2LyUY\nNnu5yhch4rW65+3ymDMPsv7q1xcxtLBe4fdm+06kUn7Gos9XlJ2FMPi/OWLb\n9gZCcHHC4/G7vpGFHU3N2V/pizDw5y9Ki7ivEOaabzDnLISG9p4l98Q8uNCH\n3u6V96+5wOMuo5DjadVpBLPUqLxpHRCUiM/Yx7iljrTRxqDaASmoUSEmCatR\nWWfjBMQsiCZ4Ykd0ssrQtZSeN5gcQyO6AFsGttBSfvuOczQt2MX5rlUOK9hE\nsuxT\r\n=vB6C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"afba044086b562d8b387dac2ef1d50624d4056ec","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.212"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.14-renovate-non-major-afba044086b562d8b387dac2ef1d50624d4056ec_1609356953247_0.7177465886485406","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.14":{"name":"@balena/jellyfish-sync","version":"4.0.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"85f9871a34f91369095a3aa35f1fe2484c94d230","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.14.tgz","fileCount":19,"integrity":"sha512-CNRNjNsgxFdpCBmM3Mx/El7hSxqJjy3siKVYw333GL6TCuPTjBa5Cmj8CXGJrmR00b9rAOdrQOmQ38BsBkGdpQ==","signatures":[{"sig":"MEUCIQDCMThEsB7HM4Bk1gFr5C4G3lFw6tEw3taPTxkh27JxgwIgaCgN0i5HWYkDAqMvWcDIUOWD6aWc1IwWDGPMbt1qgEE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7NfZCRA9TVsSAnZWagAAaxQP/i3TAfZFINYGAE2iiQjB\nKG1ktN6xR6EudJ6YTKDG4IwqqQ+4ml8Z6QbQqoOJgEc2RU4Ev/ShxFfu3MyO\nK+NU7kJgd3KY3pEZsmT3a6kXED5q98Yf4ZGR19hzV8IVafx1iRfkTWzod00i\nFXyNMnlqGk7w4nIr8CDdZU92AYMyzUQtwSJxDqtDA26xo0TOO2nckOSnlyfG\nOL8tBmVkB/lri7zkidNQDpIeR1MTKgr16tGta9r7IOO+GHK/uS8t5cL3E3tS\nxFSDUx8eBYb0REa/1V4/8Lhu0iEMneSQozR5oe5pToW+LuT+GlbKi/RyyiV+\npErcQW12J3IlWGvas25jC6YyeOjcZXC+gGRzR70u6yjCqmwP9YIydVHrdO5L\n8mDeZGg4E0MtpNzdRfOx7VnnWxNzmjUvz/5gixhYjcLDb+amLJhpa+SQ5LmA\nj9kMY8jmQ0KRCz07OX1/5vhw8SIAYUPcJkK/QuaEAY9pP2y+IFS3Ltg6o6QQ\n2M29wI+BzXcnKk1uTn2HTs4/x6y6QjDi4q3czVBoO8BjH2hhst2yyvCq/ocg\ne5TC0VEmReaYwWeYnK92WHT0OLUtpiyZVaN/xQSPNuViSyFAcmfLuWzsccSU\nyaua3aFC2Y/1L2ILUfuZzzWuW00sec/LUo9RDiGMpzNpcDnxc+tY1PkUg5Xi\nW3gd\r\n=tR9I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"de2fa84b60390e0dbb6d099b6f00d7f43dc85f3e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.212"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.14_1609357273066_0.2188036801134683","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.15-renovate-non-major-e66ad89febbd7b94fe0d778ac33056cad9375304":{"name":"@balena/jellyfish-sync","version":"4.0.15-renovate-non-major-e66ad89febbd7b94fe0d778ac33056cad9375304","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.15-renovate-non-major-e66ad89febbd7b94fe0d778ac33056cad9375304","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"df5cbeb3b08e888df282e0bc71f014cb5c3aa152","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.15-renovate-non-major-e66ad89febbd7b94fe0d778ac33056cad9375304.tgz","fileCount":19,"integrity":"sha512-l5uq8PAu2tXcOkJzCF195QiFpWmK0b97Mg0Xigorq/qaXCLsxU4RyJ5FG/GepGpr+3jYL5op5fyC0MD10J/QyQ==","signatures":[{"sig":"MEYCIQC42HL4JgfZLqPeGu49sES8nc+i1i2/K4f/SrH4SCjULwIhAKkkrIMLx8O44tu/Sp321wG6UH7mlzLVu5jtz6mEZQ9W","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7OH7CRA9TVsSAnZWagAAAuUP/03YmmtDoTihQn7ZJbz1\n6uKoY1qRZSrYfTkBtvym/VK8LGTQVPGdMGG81vJEetEsicziuBvKwRYeEfM8\nXzmvzvMde80Raxyo6oNgU8B1ff5j1E1YBHIn1vqy7b5tzcLi2Z0iVu7Tm3I4\nQG3Th5Knn5yYgvA6f8eiZe9itGpUErn87oCkX6VxYKcCNuiCoJ5jazqFJnDV\n+q1H/Pg3QBkGFATgf4qh7vDZEwQ7HAzKalMRJWOljlVi4trXRzGXsqg7EjgS\nwwW205hYpy8pKMb9/pPgCjYhRFZHMbWf8V78WijUdxumtMSY2MgeD5GEeRYd\n+p8hT5Al9q97KXs71ABU4G8TEztCet9b4jRBZy52oGF6c8Z8YjQhCwTfsUgG\nmX08ZjlEhwaT7XcYpgaZIivM6+R1UXRzaFDgP+TVc/khNYmA5sDmaWzSQ8FX\nUWlA8DjJX0VSIOzfhJeSM9JajE/JwNWf5rSc9KtXpRkFoQG4brjhEiX10RNj\n023UYxg8dpxum+3+FOAvdL+jgVc75D9NkSKdtvqWbNR7mHWmSHG0nIoQ/0VH\nwzq66JthKoniV5ZKFFXBwqiJ1PXXyjhk1z7581yWBn6iJTr0IxmICgyTmVXB\nOOXCC6nC3BC12J2Uqz8UuuWi1KNGklQABMG3/QyHUYozDNSosgFOfiwYDRYK\nDVWH\r\n=HMV+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e66ad89febbd7b94fe0d778ac33056cad9375304","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.213"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.15-renovate-non-major-e66ad89febbd7b94fe0d778ac33056cad9375304_1609359866779_0.8722086666643594","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.15":{"name":"@balena/jellyfish-sync","version":"4.0.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"19b54bc4c02d448d7423e6cca15b592fb1e117df","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.15.tgz","fileCount":19,"integrity":"sha512-++RYEqlti0hpNkopOdd4D2A+dBpQbGGhJJMeel8bNCDaBYl+ZbdMyGGw+yfV+R9e2+Mq34idII/OVVkFLk6W6w==","signatures":[{"sig":"MEUCIQCvEBXpiu89r9OmH7eeSP8V9K95Qdi/jBVJJwKuRVO31gIge4CtNk2Fzn200BU44eSzp+Y99pkZRk9yauPOr2/ffjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf7OLoCRA9TVsSAnZWagAADsgQAJQyKx83uLVP21CHs3DW\n6YDdPuSkwtSrkmNiOcD22hGxCs7OBX1rQZEK4SIQn8CEhHcDyyOlj4/gYntN\n+Eyz2McdIX4XsibMi+h4qLuj0mO2w7rJ7zwvJ2IqD7wcjPB0qTnsilelLd//\njwKCZbQDykurPCkLWR0FzM+boZzZoSMp8qALEpnNdBgli/r8OxpknJmjWHOU\nrjNbuLF7dsmLzZUysYr5DRQ+XxxnNs9tqzshfgQzqxpQqBfQgZKUU6VHVfK9\nQ49unLFeMmmxKw2X5bHIOKjYqjJbKsbofGByrCOmg9afUR+qseMkH2aQdirE\nsz+fhvExDVLViuKmJhwnUh7XHOcY0cv8WlaF2a/lora7Dt2BUYYnKt2vEO+b\ncJJMT704Ei7ih7sJl0pd+feoXcK7hv3UCBLK/ISa0H6vMtKMSGicW7vUvSSw\nkafmsSPxI3sgmmZtQQhztzuKaT/QPAk3+WpqIVkINndYPGp5ckYWfunPXEeN\nx9lpB0lC9gFbmiJp2bko+fykmrgBx62AHWwk/nDYJNWgQCBWdhlZAoQIsG9g\nyxJHPsgJ99KrGWO+lTaft5LmKoXwAsxcPaufAPsuIHu/fgjs9uwMV5d+FXE9\nUdzB4lV3icwgfRhDDdl2Vnc0Hx4NqAeznOBy7IJ0iV5F/uGv2hXCHIddiy5c\nfLRb\r\n=eGRu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1ca6fc13ed1bb79ad05fae778053256c215e544a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.213"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.14.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.15_1609360103646_0.16297680477928878","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.16-renovate-non-major-2c7c81641e8fae1a35f1c06b741c4f0cc5046794":{"name":"@balena/jellyfish-sync","version":"4.0.16-renovate-non-major-2c7c81641e8fae1a35f1c06b741c4f0cc5046794","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.16-renovate-non-major-2c7c81641e8fae1a35f1c06b741c4f0cc5046794","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c89191f4b4aa4bbfb14f95d2baa9aefa54890440","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.16-renovate-non-major-2c7c81641e8fae1a35f1c06b741c4f0cc5046794.tgz","fileCount":19,"integrity":"sha512-W5lrUCJrNrJ/8Ji8s2Hrls7q2Y2bxtznbd3n1pbADDKhw4vp+k6VsTGQsTWb/0kSkOLn7A6R0CSUruNlIg3htA==","signatures":[{"sig":"MEUCICotTxVfoJQan19se5F1Jig+Vrge2qwdVYZj/dkwiuUAAiEAgTGPO2157jgD5Y5/iHRXAEeEzWVHZjt8Vf58ItUly6I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf72KmCRA9TVsSAnZWagAAh6oP/jTykn0gAV+hgEk/qw7s\nk2409qNH56A39uvNM4kvu9b8XbapQi23hLBeMElY1sa6Tmp7bmfbHkN6YQxW\nc6vBpOhwb5e0CsK6QPg/DsyNiOOzUfXINCdIJXS0LDZw0qzLPEYabtRVL5Db\nc2Q0oKcEKmZdB9e9PkdaItCodGDXI2fCN8v6rxVqrMrlGJhlfQgXdB9JquFZ\nrDjhLkV0jCF0NFf53YFIYN4LsJerZ9q0TvWoB/rgtkJ5dGTTnixyLLuv6dj4\nhUGnHkUAJjgLDyBMnGG5/Vj5APOobM7PaiHeLxN5ziRvFAeHdfIzitAz0yJA\nVyo5J7INU1+neSuBedn+ncQxebXyC4LjDqkemIhC7b/Od4fTxzz32eiefGqK\n75KzoCTFKrwXSzq5vW3UHypjwwGac2lQ62Je9ItCO55zh+XzVYxjewo/xm28\nuHoBL+7F2HsYbT4DdS8Mc7jGnxdh+175mszvndVmWZpVsR8XhWyBZOTWDmG0\njE0J6Rvf/EiHO7WhK8mXPwIXT4AxcyFpLFW5Xc+pMa2D585O76MoV3vlJXm9\np1ynRKJEEw427yKElvC0tbG/tfwN8omZRDlbq3na3XEqyuB99nzzjNQ37Dd9\n4cLPURCDWntdqEFcJFPDRoeakZ9qGCNESi5ay5cZg1sTUs6ia6d4wnGkyGZz\n/zVk\r\n=paOQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2c7c81641e8fae1a35f1c06b741c4f0cc5046794","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.214"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.16-renovate-non-major-2c7c81641e8fae1a35f1c06b741c4f0cc5046794_1609523878243_0.3105934340321166","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.16":{"name":"@balena/jellyfish-sync","version":"4.0.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"99b62d2ef3d4b533fef5b49535287ce70ece56ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.16.tgz","fileCount":19,"integrity":"sha512-w/jwoahhrsImB2B9zBFSobK0BDehsNnQviKZhZmdniIvLGSN0/B1XVfmdCkkQd8nzPJE8/wMg1yQB8V20DVr3Q==","signatures":[{"sig":"MEQCIDRvhsu9Zin+c9wRhVINmdKqDiWK9GOw3eJcY+Nq9iYvAiBzNErN5Vf6wPaOtck335nw8QgBnBR2dmpPQQEcvuT5fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107352,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf72WsCRA9TVsSAnZWagAA0noP/2gqPj0xpg4uXJy1iUVJ\n3pjjmu+jtOjqfAS3vP0Gl7kO6sO4IxFRD8SA5GuQKz2tl9bb1uV+IdHzQzQ6\ndFfJuQ4tAInhkTcT61K5b4uPr+5WRL0UOLyJazU/yQ2ALtJ1WV7a4PiZRVLg\nY9hAfg8st6lyiKC5Ef2bo6KyKdJ0/six1Wm/kpcJ7QOtrcK1E8qg2fqrf8W4\n6HyBS/uSyFw5JAE8ih1eJARx7qgiQWGwemrvl4s+B4yfd/VWQfKX2SmcObQ+\nPZF7cWC9Y4fKGyCcwoBYcJT2zHITTZMw1FSvjdXSzC2yV6RWbUsSnUnKGGYY\n2bG4z1XpeZM8S030zgVK+uCgiuqMi6i8mQujnSfdjg6DvfqwDGzXwgKBIm0s\niuPbcZiMn4pXHIyb6ab4PgIjxnzp6lwnnwPg3XGzTmgz80KWDvjh0kWdESUb\nVgy7Z82Sid2gGTpHcQW+oQAYrQ1doCshd/7o93WX9kZmMdrf7Jyb27xS80rO\nQCxTOArKaEkZ54MiHKo2rFFhVOfDIQ0qkoUcUIJR3o42xS1C5oGw3Z4lubJW\n8qJtSN6SqgvOgqmLfvPB1jwOalZE8dQWsZ0h/5KXR3NCUoHVq+lavNClk6Sv\nWn5TsAQXeIMQDqLsvb8j/3Y7IKZ50XwzSpL8bWxqK+KbAFA/Yt98PXNa8m1m\nTgHy\r\n=2T2k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"98a1b0fa9c36432777ce1c408e5162904b2d33e4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.214"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.16.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.9","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.16_1609524651907_0.9942524688702015","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.17-renovate-non-major-d53104f840dc464813438606d98702d2b4f1f6e0":{"name":"@balena/jellyfish-sync","version":"4.0.17-renovate-non-major-d53104f840dc464813438606d98702d2b4f1f6e0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.17-renovate-non-major-d53104f840dc464813438606d98702d2b4f1f6e0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"67b281aa1421dfa437c82261eab9ba381db140da","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.17-renovate-non-major-d53104f840dc464813438606d98702d2b4f1f6e0.tgz","fileCount":19,"integrity":"sha512-rU9d2gJlzLBUgr2WztiY9Rn1LRQ9Xq+jXVpnVUgWPwZwKjmWPY4BRFBhDqQZcFC+bjx0k4qS9PDUSS2YnNcEOg==","signatures":[{"sig":"MEQCIH3MADQTLEex0J2dUvS5dmaq3uEYoHiUWRiJi+R+HW4tAiBN9nWgEaSYAn5x+7w3r8uZhHveEHveZ4eqAFj08V9MeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8wHzCRA9TVsSAnZWagAAxgMP/0kTk2rrjXNXNxFytGmW\nfZPE4BsTNIAsFSgzp/Ag/2JKxJUMMDokzx8I/bUwAcP4VSf/ORWxphGVFgMO\nhpEBwWcjlUvMkP4mzBnCZ1cmgWZRVrJvKToqO0om1hjYq7Iwvz1bvoAZ4WQx\nstocUwq+3r0O8RgPpvJ50w9vgYXZwYa3UGmMAswYO041/Z0b0wo0t9PxjqTz\nu+46HLF+2+7WMZpbn4JuN+tjcMQoBzjUsnWy6fGT1Yvx29ExvVKB6HiFC5Cc\nuS+16gvVNRXYSce/rjKw7THGmG/dafMXal5AJQzBcDi8A5Uy9Pk8KKFEPTE7\nwMal7W8zUlHr0OWj8Pl2/4PPJ5jG3FW1jo4h9eI+17/KVJT1j/iqp9ydvFzU\n7F22w4SpXcqYl8CF6tTrsJE+09Z5Sc2OK09QqZvRiL0iAFM+soYmqxNihW39\n7/grF6kWCjBg1O9QfZWun1XlBHg+QBaHMuDdWJKigQe5GyX+WGVg2EaVo5cT\nU3GcTbBWcpG7TkZEE/PtdRWQmhqkswOeNJ5D+v3kcIu15ORtGQtORDA6VzUK\nMeqErNSJm6H+e/uT3F5t6uCAG99puXLXSvW0q1tTqKk+Cjh27gZ7YxhRTf/3\n/30N1qbspnAPhPELyKD4+UgFqqyK12UWk6FTXUACdU4o6ahPX4vlvc0jOBnO\n1IQm\r\n=ikhd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d53104f840dc464813438606d98702d2b4f1f6e0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.17-renovate-non-major-d53104f840dc464813438606d98702d2b4f1f6e0_1609761266447_0.7403754651856946","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.17":{"name":"@balena/jellyfish-sync","version":"4.0.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e6518d3da0fdd52a783582022d6cd25e24d6d408","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.17.tgz","fileCount":19,"integrity":"sha512-9BgTuU+1pT0G0MB8XFkk5S4l/u+dm5ZzbsHb8jnKEXQQ8gPy1TjzYvmJmsPYNqXsmmF53W6kk0NctgT0eQdO8Q==","signatures":[{"sig":"MEUCIBB0bGGWdK1tenu5yUjamjvu/RPeNZcO7wQar+NsCAL4AiEAxd5+AyuEngJWaR35u6j1KI6Fc/LVk8mq6wrak/yvWQw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8wKuCRA9TVsSAnZWagAAqAsP/1Fh+nEopAgVqE83Z4Ib\nZGJ6E1VtFcz1ZQA3VSmIjqRdXb1gEkn1XAS8sQPcZptjq6m9qwOHpoDSElOp\nnn74MzghzC1/NOiJRaAeWclACwtwj6vc0llEPwKcuXot+o4yLsH85hGOwzlK\nQ2PqA+/D3a36pFq1y3unc6nWBweVCfpkpVWOJcZvgN2IkuwHyLjgktrZJkDs\nxpMtMimfzcJC3wXz87Yx1VoSLf51d5jlnzqUVjD/zDEzgMIO4icZTZHjhHYf\nBUKyo5ZtLIxCi3liw50Eh12mtcDnm+QD/LZmhwG93GB3upYyV23K04n9MXuD\nztERLqnuAuiQ6rQuS64TinrqP3I1CgUM7axzw+PtWY/z2+x4o7A0jOP87Yz2\nmOBmGMfIV8JzKdX02IW+8ljvtVR8U2g8u1giBgPbE/zbbuLj3VEJOnPWXueN\n8Y+3yNXRo1z49nFICHcjkBt4PV1xOYYi1pn1Wni+LSytdfZsLMiAuM7VKHyU\n0jkn9nkzEoRc9KdJJPa1Yuakr7w5Dxat0yti0EU3k05pDdPuikYQ6bZK6DS/\nuaUOPWiTGBx8hNRHBrCyi/2mhcDSkkTAy0xeCXip+iAnVYZWEUEotm3Flug7\nIQS8j4ehxX0yj4Z9r8lveCbDx8Ue2AGR+VfPjdugWcZRULTR1m4WtGJ+proo\n9iUB\r\n=pOOB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"67bbdabc3089bd1a569b0a62e749f0b33c6202bb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.215"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.17_1609761453520_0.5692689000276776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.18-renovate-non-major-4f883a03d59e60b801a52a46a0f4aeff643d8502":{"name":"@balena/jellyfish-sync","version":"4.0.18-renovate-non-major-4f883a03d59e60b801a52a46a0f4aeff643d8502","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.18-renovate-non-major-4f883a03d59e60b801a52a46a0f4aeff643d8502","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ef7c7538b8d00fc2b8884ed640d8ba148972904","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.18-renovate-non-major-4f883a03d59e60b801a52a46a0f4aeff643d8502.tgz","fileCount":19,"integrity":"sha512-Y11m+gIQ0UU1rdWEHOA3/6kJg3+f6oTEV0MhxJ5R/Z8WqkFylSjZdotVeJSQLMyjoeKTpKKEayZmWP5Bn4mDZw==","signatures":[{"sig":"MEQCIBBHYCBnZpqN0GjylZngOq2IVjsikdDbVyDxsgbDuJI0AiA4PXdFyNiv9NmJodUy8uoRUIdbKtpTiOrVXlNfxn+D+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xTLCRA9TVsSAnZWagAAGA0P/0eZyoO6vVzYH24Pqdo0\noWg74LIoLr2FgSzfphUMvZgZoRlBtyimQxKSDPHQugro/k2G7kjJgl+G7AMT\nHQ3/qjmEpoz0P0M0/G/aPZE1+uBFNDCz2lWcSyV6iVEuE0aGqdTfvNVFaU90\n31nSzz8R+JaIEpBmh0iVL1CJ6K+1980oZ8Zh0c4siWDZmZc5EhrKsDMANrwq\npNt1zVXc+UKqrzXXA7N3yRtHvdbl2dv7w/dkb+ElOO8NgeXDjFcW+YzdWqm+\nVwn2tdyI6DJ6hX1RMRQgnFfwLXX5eTsPidcu6zGnrnwbgjoMjfP+OzzzdFEC\nGFCCsjtdpk0y0YBe8Ukdi6c+iYRGH2sYpTq8RCqD0/oXec3r40750GGNqqj8\n48451o+KUIUskKFVYBmkvstZOan6TOFex48QiVPpV6pb3iGvU+ToBfe7IuyK\nwZbpXWUKNHTq4FjmjGaTD5wi8xHZYgxec/cWDnK1xHoyotzgp8GoELf0dcUE\nsstHL9H86ysbSHqBBlaNJk9eSEadEGsl/bscuBtNYus9Z4IKe0mhXlsSCHIO\nE9JhuHM1LNO8WihlzYySwfRV9EIO2cjJke+mckPH1omsmynUCjRlh5ikn3VH\nsqduXCj4CF+MzmtcK9sStQVeAv80E0gC+YmFNEVzdv7uBM6B5i4AuCjHlngk\nuvtU\r\n=F9HR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4f883a03d59e60b801a52a46a0f4aeff643d8502","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.216"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.18-renovate-non-major-4f883a03d59e60b801a52a46a0f4aeff643d8502_1609766090754_0.8843480737650324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.18":{"name":"@balena/jellyfish-sync","version":"4.0.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4bb4b834afecb327dc7adce07a6faeb5cf929f40","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.18.tgz","fileCount":19,"integrity":"sha512-rIvfUf20RoM7jP8m2ZvRFZZrE9m560iwv5oN9SxCefTyiLyIhnsJ2aOTot6qbs9sYtGPyYzmovTeX2C6/sPU/w==","signatures":[{"sig":"MEUCIQCE+q6c1d6UbxdR7y3zhfVzmYTVIE5IczTfGfGDmkRU2gIgSxsheZ0nb481q4DeZiWObWFsNcOuPsENWfos9JGAqbo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf8xVpCRA9TVsSAnZWagAAZwoQAJIXMatS5PHW5l6AdV3P\nyGyIm2HS7FfHEx/Slhztyip/F13B8mH0GOerUKCAbsopMvwCMa3P8anNrBJl\ncrivTccjmMwOumv70nbGyeQhmaZ5I595WBLm/2MWlt7CjJFgp1Gj6HHF60YR\nqpKiwY745nKDHlxPvddh/uMYN0BHp8jsOfF+9cTc0WswoKreQYm6MQq889Ak\nVEy6I2nbl7aHjd2DWvyZdoZsjHnBjeA61qBwiRARiVAuHEF+lQkWqeIxDFim\nf61BwgWz3RvNYkPM0P5KxtqwgpgaEEoOpNAppkBHKE5f66zuXKkLLM0GtUZy\nB+JmjDbNK9gpYepqf0Yttx0pPNJ5fvUONTF0n9EWwAczst8pQNVsw+vicU6x\n5y76v+xZadUnr4p1spR9MRp91Tuo8OAQZW2qEpEjLwP4Nixne7AHU/3Xp+FY\nEjFdlFssQykNyUHBku0mVZOkSmd9nzEaGSliD6jljlK2tD+ZJknhQPZ28RQC\n8Clbt03o9SSDNd5vw6AOR/4yH7z5WlqXgpSDn/bDnFKZ0kinJ+l2EWjUiiiJ\nXSsGitFoLlmYudmOepTDE/0JHcowoWxkQRhiG66+U93ADENPrpES9fJX0FVO\n05EgVRHOI9b4gyeSlKPX1ZRh+WjGa6LNlph65azij6XFmtSIB5PFSvwXweNr\nMeJr\r\n=k/XA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f20e6026d10b18b780abba594ccd03fa03c9060a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.44","@balena/jellyfish-metrics":"^0.0.216"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.18_1609766248473_0.5305007270210205","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.19-renovate-non-major-91675e89808a3dd0e7bfddc2d7269438445d3e2a":{"name":"@balena/jellyfish-sync","version":"4.0.19-renovate-non-major-91675e89808a3dd0e7bfddc2d7269438445d3e2a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.19-renovate-non-major-91675e89808a3dd0e7bfddc2d7269438445d3e2a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ee2693fe5e6165316002fa8aa2bf5947571006a3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.19-renovate-non-major-91675e89808a3dd0e7bfddc2d7269438445d3e2a.tgz","fileCount":19,"integrity":"sha512-1u5xFLHTo4b/ZMo7+TmxwRxbkJVs9vTD0ufaMQgiVeZP2P8Ia5efkMe2ETHsEb8yKs6PwxxPXNcrZYWtDu4Ung==","signatures":[{"sig":"MEUCIDkw0ypczafQVqWiRYANYR5yYvi7D03hRhefkJ/dQVHjAiEAlf7DQHOCf9i1r4nHe9rH4cN7lA2R1hatmsTN276EsOs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107696,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9nZmCRA9TVsSAnZWagAAU8cQAJ4ty8Cu94xFQjpXzss6\npVokcwOfAvyhbE/3g+8EQE0nQ+Ome6qJgIAechbbP3z+PoEodZ005IjZFjtE\nkDmaWq3kiNR6IG7mEjGiNO+FwdoyYmBkZ0+HBY7eO34QVwLja8UtrGBqwItG\nEUN0DDFUZpqMwSmLU3Z3/Zi3hg0m2GM9t6RsX4o/UGuoIY9YNZA+/4EJoYB9\nS+gWJn0B/5vCJ/eQYbh/OPw4gI2snl2Gzg4Oa1RHouW9Jg+T89Zs54aBm7q8\nvT+h1saVcAoBfuM87SCE883w6UD3vPxZIRK6dR1zLhFtJ64wW5MN1aozbvvI\nlzGLNPAlGH1rsBLwvdbaTz6mZkkRPa347nWZwvQazO88dhhjs6WIvmD5ctB5\nRVfXXiWUp3hdodX25j5xAhSJr50F/PqJ9qOg9K9u7JkoTiL1dFU/uNkM9rog\nQx95iS/v4c+EaiHbv8znh7tXsjmr+i8zAsW+MA/9wP6YgNJW442/quID54ux\nlqlh8adqLkEHzK+bxgI36n9PEWH8r2N1zSGdaUfaiiILOnZkniRF1lAC/bkr\nhjcsijqBZQiwFD2ixfHLtJCH0+wjHpzJkGYd+l0g+3BOGgl0l8j68rlAbvAn\nKmftrn79c7byyBOckep9rlNQBt7vt/imDNIntSGHXVmLJkjFxPAuRYiFnwP3\nnb4r\r\n=YCz7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"91675e89808a3dd0e7bfddc2d7269438445d3e2a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.46","@balena/jellyfish-metrics":"^0.0.216"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.19-renovate-non-major-91675e89808a3dd0e7bfddc2d7269438445d3e2a_1609987686302_0.6087135923820803","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.19":{"name":"@balena/jellyfish-sync","version":"4.0.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fdc4a7623ab2b518d7eafc32122be14799524936","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.19.tgz","fileCount":19,"integrity":"sha512-F3HWuRsx9Y68Y4RHwgB2AUHvYfSHa6HZ5LDK77F5g5agWAClVrHO+Ybf8IUlxx4PBPiHbXsNn23cgZG1yEyOhA==","signatures":[{"sig":"MEQCIADUNPkyf5Q5meU3F1P5SDL2qa3L++eQQAoxYOj1hbYzAiB1IInrC+N1NlfnPz9j76BEdoSuNEUompNz6hCX9XCJEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9ncbCRA9TVsSAnZWagAA6kMQAJ7ME+1IfbKNy1AUOxAy\nHjgxYKX8T+rl+WRkXV2xCuHdkqM2Ey+7DiQ5JIsDWMp4R6CdrO6D25HS2y+o\nChSpSvA/N3cb7sG52RyzbiBnIHOHPFMQ+vmMc4ML7fSbrBA8LWACjvXeRRaD\nIqzvrD8rdAP4dnUNrE2BzIFF/tt71YAgRfevOmemDKH9JOaKdkzHX+XpDOpv\nYr+hKQF90mCXcF9VUi5h86kZ9BOPG6kvs8oMq9b2ccHHd7azCbNEh8Dy7pTl\nbLR36i2cPwvXLkrmCY2fbF4haFFblrZx548Wd//+lxZFdKLTBgPlK7LVdxlV\nFi7phbpjmi2hiS8MKDyuorezgzAM0CAXiuGdk5ZM8mVra+YILkzvu/KuJwEM\nRpbm2QBLDWb39r045wP7c5XK0EYwRfbBZqhSE9mkQyWaWBiBuvuv4fcesES7\nucqu1v/nXYD3oL4gkHTIEJpkHf7IYr0Gl2G1IUdfKrT/90ejjmYH4nIWmcwo\n7YfZqzoMt3/aXrue6B8bQ85dPZ5F9HuMHW/ADVsnC/2QvIwXig3vJNDfIj/E\n9gO6Jj9k3y2HrHJ/e5nFHkl16br1uyYZIq46CF0OvN/D7K/mcf4r1RnqZ/vr\nQWZ0iTqK/wNNzIWnaph+mu3CxLQSXrQSnBtQv8QboT4iVgEE1fBvO5soxwxk\nnwM2\r\n=ouiM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"10a64d266956003f8cfbd8c6aea4191e3e2220be","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.46","@balena/jellyfish-metrics":"^0.0.216"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.19_1609987866785_0.33135053665644865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.20-renovate-non-major-a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb":{"name":"@balena/jellyfish-sync","version":"4.0.20-renovate-non-major-a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.20-renovate-non-major-a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6de8eac7886f4f298b093a5c6bdbb308576fba87","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.20-renovate-non-major-a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb.tgz","fileCount":19,"integrity":"sha512-pXcjFFWljlBLnH+ewnoD+hX4fJXy5cSq/YVDOsiq0Gy2yh53dNOBQ2wrsbdeSbJxxB6oBudmHL8fPXwJiDLADg==","signatures":[{"sig":"MEYCIQD6EbjKB7fTFyQd2qCsY/fsnCbWU9v5vlPX+RF1yZU0uQIhAI46wwRCrUsuALU0RDfIylgbJiUZ2fammfUIMhLwFSHy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9o0+CRA9TVsSAnZWagAAqxsP/22jdeRLUFKcFkrDfdFB\n/BwKLLBmrzmfaKNVuMIEVENRxmRoK5QMZpfaAfwf6DJzgyAMb1t+8eq9zclY\nP0JtA/3FzeaR7psPlSp8LICSc8Q2y6SarMZMLW1uVtuHRvrj5WUii9xJDzbK\nZplWCOWHfHcH2rzsQSLPrlX3QqI1PMY5I50BsjUhNZ2K52zB5xjKfI381cuo\nN0KJLuJO/GhMv7toBXOUuU45EFxjjnhyOBq/n024iSoFzYbqUGYdLbVyWDwo\n2LvE06NrHkemvROi+N/Sp2nF+BMJSCR9O+H9Wpj/7EyPNkUw7p5dO38m4U9m\nkV+qEyLeZHFuGyHOftsjEId4P1dlBu6xNN6HttyrZE20gYkykneytvNeVrDT\nYRRtRni+96WmRnL//fGUHpC9kg3lqmi0hCJmbRzikjgCUh21CMhjSSeHRmRB\njx5MFj86nIR4CDtoG7lGhsWichYaVy1nOjWcTkFO3raF2I+5P0GQI0SnCg4d\nxiPnOth4CBnxfwZL5uCCRggUyW5vsOoQ5MK8GDsaELCCMaDILfU3ZRSns4zu\nQgWNDgsSnjlejhPGdnIXaSbCW3V339B9sYYeGSo2L+FeS6wt8OOi9Os9k7BG\nuyKpAXqW0f78Lz/G3FW9K7fX004mXKI0SYGjyFU+WZitsGGsDcPQ6sEx+KrN\nTp+z\r\n=po7r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.46","@balena/jellyfish-metrics":"^0.0.217"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.20-renovate-non-major-a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb_1609993533658_0.7013755110143525","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.20":{"name":"@balena/jellyfish-sync","version":"4.0.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f8feeb6145e9ec0334785c59abef8e5ce24ce5c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.20.tgz","fileCount":19,"integrity":"sha512-fOgapNvShGwPw9iiDzz6LflOy7BO/LGNp+iUGYb+CLGZKazAkI4a+CoTs4eBPHe2tx++vGJxYbn3YkZFF1Q9dA==","signatures":[{"sig":"MEQCICGPwkx0WxkYbNNdIvaBhR6W0+Yf5Yk2Os845Rt4sd6+AiBZQ9tQEY3jx1xUDEt0X3DQhCFo11+APsoMv2JG127+rg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9o30CRA9TVsSAnZWagAAGAYP/iqyFut6cVSxUmsPj0W/\nb8kMZqx/mCATkzT8FzTqWnmOgnJwqg/5x0lLGuPgowzQjH6jbTjEicerhpxq\n562werQXGrPDCHHRHcrFDYBmNteDWbfjNqAUI1izwq89HoxYJggDoVX6j5Ok\nh1i/m4SkeembSs5wVS0C6a6En5aDUEd3MSKoPSsXpRCWO/8XUzPCLrCOkbcz\nh82wlIH4XRl3LpGmS1R851x05Re+rU/BXCVM0zZTcP4/SaRSkMrhxxeyh7+c\nq/VYpuZa+0f3090pGWRY5oMoard2Lj1U38P/P+NplRbLxvGRu4SevVEh/FL4\nQanjpalpW/T1TQcGyEcBT6O0j/qOQvY5+DVVqxqDtfA5mTGmtfBolqVrXxL9\nK4DvSvZXoO2khzZWtwsGAKgLW1J/mVvo1avQnr7fifsIibaJ4+A0zsYRBB3g\nk3hDm2wqo3+Wlpfu7KfO68rN56ZoKm1i/fVRTWkj2ZTpzmBT2yqBTGN9iml7\nLqsTLjpnJt48wofXtvBIusOVc+RJSVm8s4PzQc2ef917/GecdbV/Xwv5E6SR\nk6NVoSRsWcfnBPbZtgLPW594K/14zsiIx46LKMxDdVx6ErBQ8PwIGeZVRsl8\nVACTmqXzUYcxzFPh5Di8hmLmErv15J6daZrLrkfX7mPnoG9GhnwBmkpKVTef\nQ0h1\r\n=YEKs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a4af8c7478b62d07216cb19848ec49adbbb025de","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.46","@balena/jellyfish-metrics":"^0.0.217"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.20_1609993716146_0.6538031763883796","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.21-renovate-non-major-5cfb5850d063fe97716c7b1a4f0cd21ccd33231f":{"name":"@balena/jellyfish-sync","version":"4.0.21-renovate-non-major-5cfb5850d063fe97716c7b1a4f0cd21ccd33231f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.21-renovate-non-major-5cfb5850d063fe97716c7b1a4f0cd21ccd33231f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f30041d64681b23c66f90dfc1e664873f68ccb8f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.21-renovate-non-major-5cfb5850d063fe97716c7b1a4f0cd21ccd33231f.tgz","fileCount":19,"integrity":"sha512-v27JZ2ECZ4OwuH75QZ077WGXfRUWZKMHL4Sxe6bR9O6CrLv3q/HIKOmWeFT6qX52XmJCnuYbkRl1RSL3eoglZw==","signatures":[{"sig":"MEUCIAejNmKJmbLeiBPj3QUOtmlceQapRqdx8ASJRyP3Im3tAiEA9xbQEsttqthqX6FG5DwDb4r5DPcFF9ax+2S+cVEECSA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9um0CRA9TVsSAnZWagAAUtkP/0kuJJoTopj9yFAsqHTu\nyfFYicDMw0lJb8n9KpBrKfsgUDBxBHY5YMNrdqRb6RFSdPTaXipjNpCYl7ul\nX53NpPGn3ABSwE5iiAisJCQBoGyZXDiwF5n70oF1SGY5GvX1huywPXKiT6o0\nDqo3obeL/BpFfjXPArEBUyMIDee3hZR0DmMvM1KyUTR/ihpbFWuj4xybEDYG\n1g0vrOzmMIqrHF2YId7I2a+TaD1qQJsLwRRXpEN2EE5Zb6ZjT+8n3dbDnpZn\nJFlmoR3dJTMY2mB9QC1cwa5gCHqjMOwuJsnwcPnVL8xnTU9g7jcyY+Kv9GOy\n12r86h1oHOBhL6J0BeDbORjTG7cA5ZUb42syR0P0Voq2Le7mEQczghe0Z24t\nboLZGkg/SHS6xqI6XGDssu23m78GZ70cokHEjDcIi6AAv2PKj6FJquFAKwnT\nflLUJXbmLJyyG8s4nVbwB6Igz0zmjjc5COkAM9LL4RJU72cretfDqsVZNT9m\nERTOUa/4m9WMEAhHb/l19SpCe73uTFvOw/t3YGiArwLU1dNdf7uEUC/eySKT\nfo31Ydpc0mDTYu9UztbnoglNXPJ3fM24Pw7R3hp1gszOmMxVwNHCD/YPreb5\ndN9WDJ3vEGhJGljDBt6WyfbInqyo8+CnFRYdw3wQBsn9ICkhP22W59+QeF1d\niVb1\r\n=mGP3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5cfb5850d063fe97716c7b1a4f0cd21ccd33231f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.47","@balena/jellyfish-metrics":"^0.0.218"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.21-renovate-non-major-5cfb5850d063fe97716c7b1a4f0cd21ccd33231f_1610017203682_0.248092330869206","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.21":{"name":"@balena/jellyfish-sync","version":"4.0.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"58e381d6c03c469f0981bdc87bf4a93fb3fb57fd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.21.tgz","fileCount":19,"integrity":"sha512-vhOPm1i8ha93VjoZYZuCjVv+a1wg4SrwVICIaDAcki+mDG3XRhHzhExJiZ5U4c3ogB/rvy5P0gdOBHVkIjwdsA==","signatures":[{"sig":"MEQCIEMmOw1jRmfYKJu93zKBvCg8lgzpiv+LIYnMNzzoatWhAiAP83z6Ek0aBXqCsfSuBrLQP7DB2hgZUAIRB/NHskk78A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf9uplCRA9TVsSAnZWagAAF8kQAJZ2qn5ZafsmCcI4cm1w\nEbf8C+KRjhJhl06I426oMUcTahDavEaq7jENsFz4b3s958Y08nR4ZOE7aj74\nmFMq/PkK0Q+EUFMpFMgqHAY1tmskCxc8F0kUMMLBOI4TSvK52ES8MmlaKYy+\nqVkME93tKFyW4q1TWqmPPeijRDTtkPt8z0+Lr/uIOVRAh/Ha/euSmAzq6p58\n8PmOFLJvTkj75Wq4qwhABQc05LIap3qqSkDjiL/b233GdVsw74BRD0zSo3ra\no/jkJoCug7lEcp6cWR/zoXb2TW2Bfr2sPWqIpGL6etIucoVArcr5NQ3v8jYo\n9VESA8y5iwaUZfW5vW4ZZCevuVZvr+VGs/PJMzIyvbFuyCyRtOdIG/6jnblX\nO1UkkvEZNUvAilGY9c+Yeakp2vaW16aegeIseiAivG5TtUydsELRi4EB3GQ5\nyEuNM9DYqwG9EFF9jVdoSq1HVKlNMkLB7lvzfK4RdXze2yCZMMltO4eqZMQ4\namXYlfvjd14p8NfvuTL3TxTF/6tUWx/UgD8XO+kRKqPDbG78vD6MfAq2XkUo\nCYqbhGa2Mg6buFAQ8M7xyjxEV6/+wsFVFZ2FPvlyIUaiWyACtyHng84vQy5f\ndck82IW/jqVw+saGmFLaznaGI/eBvcLu/ppOPP5kYxeOqB+gWE2xpy5dcQIz\nZHfT\r\n=tKLh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6cab131ba9315091034eb684124ca3d4efa6898d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.47","@balena/jellyfish-metrics":"^0.0.218"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.21_1610017381021_0.806198491177273","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.22-renovate-non-major-ce08600653a12a9b5d5c3051cebd0348b67ace30":{"name":"@balena/jellyfish-sync","version":"4.0.22-renovate-non-major-ce08600653a12a9b5d5c3051cebd0348b67ace30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.22-renovate-non-major-ce08600653a12a9b5d5c3051cebd0348b67ace30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0710f34d1c01484b38eb95eb721788f41fb27a84","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.22-renovate-non-major-ce08600653a12a9b5d5c3051cebd0348b67ace30.tgz","fileCount":19,"integrity":"sha512-rehiwhLn+3Wz2YzUV+YnY58lA/3QAhF8aY35P0EP0wVabYr62uQMQjiGtI1awPq8IhCHBG89y69mehR4eWdn7w==","signatures":[{"sig":"MEYCIQCTVy3ZA/4BviywsbPGaFqZ94BphrUGj9VTHMUo9Y3a2AIhAIwdr3C9BqdwiHJMH5G92lTT/MKdoAAKUxi5gCegsk7/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107979,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+i+LCRA9TVsSAnZWagAAnVEP/j6iWTZSSZL6RL1RKjlA\n/hvHiYu1RNjxoW0Bh3dqtKqDH6Xn9ZXHB1aigjCSzlS7cWcdMSbtNzS048uy\nI66cHo4TydZPh7h70XmYvl47Do/qIOUEjq4PsezdbVCM2nYAGC50qfaqnbH7\n76+d7FMBkJT1FG8drVzS8xzSoxZfwmHo+gb8DC2tcNmHxtR/NobZokjBgPHf\nMJmx2MP6x0jdl33QLpY0LlZXfJF3o5A7TrrdxRIlBWFXSeafFgmUcWOK320e\n0zwrfB5sNIC/+U+kZWdqRXonQieVHdDGSbxqmm6KwcD9L0rLVCYT5YfhY7On\naPH8qrbaye4jWhbmRy8eOYUJavgAw59I+kW3VLq2qGWycHluyOOP2sydRXp7\nTNRR4kpBHukjUrXGHRhroJ56HsAqG+rR4kbDGRMRL64xRpuIfLWrKmCxBcbz\n/RHIV18HnwfOkS3q2JWv2wfuappjAETiFnj1KJeQ15oYfF8R5jzkYULLCnCO\nkS1kBx5GOo4tpjkr/OnQ+Ynsr8FFt56GJZWtMIzlH+n7BIekQa/qyDB4QivJ\nWfyvmPqbZUdUS1GulGmsG6TzDSa8woWpHi9QOHYrEBPNUNsFoOTzZNZyLO36\nIKX9ZA++4hRgaL/7sCmebliMDfcby9yTnBNKCKnUdHVKSNeLkt4p/2ylBULj\njW5Z\r\n=GWP6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ce08600653a12a9b5d5c3051cebd0348b67ace30","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.218"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.22-renovate-non-major-ce08600653a12a9b5d5c3051cebd0348b67ace30_1610231690467_0.6686912579852606","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.22":{"name":"@balena/jellyfish-sync","version":"4.0.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f6102cddfa7f0a21169aec2ed39212451489fe4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.22.tgz","fileCount":19,"integrity":"sha512-idhB7UM7nuC0Em3QtMx4EI7tjpAIcxxixZJoDf5P36aFDOW5K6Y+LfMs75HIp35/rm8B3VvJfK12lyh1fAneYQ==","signatures":[{"sig":"MEUCIQDuq1GrpvDx2NBE2M+BOBJHvZs6KlGEGwbZMNm9ZRRiZQIgck/sCw+NeS/oRljwo6Q3rD1CCaVYFwcjEs2vvXv3IiQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":107919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+jBGCRA9TVsSAnZWagAALowP/1RE86LclyYWK/WADIV0\nTnpecO32VkROZo+3/hafAz/aFXHopqFMIY6EK29gM2n8GFKnyLxBuMCNK5AP\nYoK2ibbf9Wy1IDT4fBtYEwoSl8Yes8Lw32Nw+eKCj90bzRdiLIc6ZUuDDLpB\n1RVjkc8y8zlyP2EGVYOc+f0a+QTnvV7UKQ8/iyAcvToSzWX2Uq7WaVm0N7Fx\nMstgthw/PWfW9UQQIbCZbolspc06Bx4Im5e82nlcftX3/tpJAW0kaaLDQmbB\nTpLhyJWJCImJDRJYfiHvvZr8N8aMU7mLQ5NsMgKRHX/baDWLsM3g/CvVitsF\n3o6sjH04OuUJ0L0ov6pA1+0AYHt08KDJ6TjBHLxYX7zeFSgG+nX3ZFKMsPJr\ncTKn8QoQQQ0YGLc/20fG1Xnm4cfnhqKBzWRVrT3qbphlNa38T3ExMMeqdyIA\nK6ROA4ppErpxQu4YNl1JfrjHVfNEXUFyal1emALyY04pDxOJxvg67CEJ/tT1\nh89C09iDDlVV8fHBRlgUYOtftJz/jWeaZfVICKOGS0zjTLG5Tt5+fOeGoz5F\nj13GF+S++oGU5BQtyLqsaMEWyunSeBaZqAKT4Hjunaza+4uNkl1SiwSJsgkE\ntbmt+iubkQ6aqSXsF5bHCd3w7e7OFoDYaRvrWB5GLiftae8QAmAXgrDFUXYI\nVmhH\r\n=rw+q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f922d31d00060e8e43e58114bb2d3b8208aa3cf9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.218"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.22_1610231877663_0.18290626540516963","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.23-renovate-non-major-b2caed0802d4a9a84e46f4f6231032c9f095cb2f":{"name":"@balena/jellyfish-sync","version":"4.0.23-renovate-non-major-b2caed0802d4a9a84e46f4f6231032c9f095cb2f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.23-renovate-non-major-b2caed0802d4a9a84e46f4f6231032c9f095cb2f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea66c297a4e4b93958070cfb137cbc207d7efdb2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.23-renovate-non-major-b2caed0802d4a9a84e46f4f6231032c9f095cb2f.tgz","fileCount":19,"integrity":"sha512-ttT4ZxFYTr7hSpHTnMU/ufxsVSQGspcNGsKJfEKwVbRBE9b3Ke4+ab/iUT8lknJrVxzYAVbneroGQS95uTW6vQ==","signatures":[{"sig":"MEQCIDwWne90j1sSH30sKNlngD0/8Crk3VHTXqc89sJOoMJJAiAHUC09btJM4svi/RnAodlVTTBs5jyY2/Ia09VMgDR01A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108087,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+jFuCRA9TVsSAnZWagAAUu4QAJGtaeKHRik/aqoTs8wR\n3JWFFu7VEPrV82gbfnnHY5/pu2+Eb+D0hchUAqD0OVjQ1oNfs/vFG8SCahma\nwTLRML8r9STTSlwGSQUqQthIONdQBvpekM5uOPTR8QFv7Kxprob/FatkmB11\nIakH70F7Ecz+buvPDjDUMcGdqlDeyJqoqbIkTpCUUHLM/MMnLIfp2b5NArwn\nb3M5cG8kugJ9Yg9pewKk6Jo4OTQGKk1Vxbc0eDTW4Wl2WGnMV//tsJwU6C1B\nJEAkRQgTY2bsFaf5SVZ20Xj3qGscvwtrRvIRZkYmqC4wYPvpJCy/FCEe7keK\nW98ZNwJR8MwFRfHq727r5+ySROteArHpsoO1HvZfVP1fwtwb0w5ktkVTjUA/\noU/PxKN4ZlReDop9Ul0Hnc0xY7qo9j+Q0eCOHM/XjO7l3dqxKf1oRMOzG+QB\nqR65bq+ryPd5WFP/TiV3thSUPTU/4R2dq8fs6ApjI+ezquYFBNVJgkOJr/A6\nW2NgXVne/WK3Ku2N8OsTDO1jU+hGzZF9y7U9OedtxcGyiBKwCzMvjmZ04O4Z\nS+SIY88whCRsVLnwCpMv1+unqFHFKrdyk8LogotOjnNrwv17HpomAQKRug5a\nVMB32rDo/E0eTsWklJjlTyA3aMm54qKUJdqaGkf2yNjXORkG2LGNtYjA8teU\nwdvo\r\n=6uLT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b2caed0802d4a9a84e46f4f6231032c9f095cb2f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.23-renovate-non-major-b2caed0802d4a9a84e46f4f6231032c9f095cb2f_1610232174175_0.5177136978609522","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.23":{"name":"@balena/jellyfish-sync","version":"4.0.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0d01e73b820e8a352a2b6fe7c59d322f691a36a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.23.tgz","fileCount":19,"integrity":"sha512-fbM42MSE473kqtMsvWr2pZtQclzC7PlT5BapA5LuzVnNwj8VNnChtb1lQAiO5S9pCRq69uQcd9cktpOW+TsIQw==","signatures":[{"sig":"MEUCIEkSphTjtl8EB65dccUS4d2W/lgWv5elpS1Ih5kX3kp/AiEA1wBekD0qHaG7bfkMLiTXDtXYkPR9YpGFnDyOpaPDs+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+jIRCRA9TVsSAnZWagAAG8YP/jAxAfPnTw1VAKY172iy\nMYUWcpQTyffYb5NaxYctF/GLIj33d5C725Cdei6W7IWxgRjzRgHQWESyYVW+\nD7PK9c/6VJIgsCzGgeIprnBK8LPkUCdfO82TJC8DS0F689MIZSiiMGjP6/Ez\nfTHhpqlK/Ko3W2/Zh4mpuO7RUPHS4y2ReXfQQ7/4ZVFGz/W/SbEUfZTh4tzh\npqEW1aYBSyIsLA8zIzSE7GFH0qZa8guZH5QQEJ1R5V5nf/M/IX170TLDJCVv\nHrbNq/hvZmfi5S6ONuvVqm07OK2JoDasbYaxhog1LHeG0Sy6iFmocFXoveNm\nRaXFgccE6G8xHn6kn69vL4Ban9nDXjxqW00sQIRhy85jxkUv8jvPa6v4RL/p\nUXSmaDnxwsV1DIDxEGXh8F+lLMXVWd3ZSpCbFDzWlDfrcYenxbKp7T3Te4PV\n6BqemIjqaLkvskirzvxM8Wzum3AwWGQTjUQi10Z+Ln4huMk+DEgUa49iCFf9\nFw2zCFmh5xeDIOPXSWUBnpPvh0FuJlhW/FH2TGxsxjjXM2JAR0kUBbx3XDQY\nIvWhv3p7H7L3p+d4S5BFNQpv8mIu/9CBXRrOk6LANf/wEOfJpMryLZA6kfRz\net97KIc833KTcynrOc/+LhaIzHZFZYrDOjdYZnx5yolTXg/om1LhM7fJEjyJ\nRVLy\r\n=FgfU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"492f4d7dffeeb07012cedb46af9baef1c166bf10","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.219"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.0","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.23_1610232336848_0.0036375709450666704","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.24-renovate-non-major-eba21b4c755193b8f7bf0ee5ed60016a30cda1e3":{"name":"@balena/jellyfish-sync","version":"4.0.24-renovate-non-major-eba21b4c755193b8f7bf0ee5ed60016a30cda1e3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.24-renovate-non-major-eba21b4c755193b8f7bf0ee5ed60016a30cda1e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9dfe330b988d62a275c672bead940df8db525670","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.24-renovate-non-major-eba21b4c755193b8f7bf0ee5ed60016a30cda1e3.tgz","fileCount":19,"integrity":"sha512-eZ6VVyfIW2SdPIyxeaX1cNuglpBqxt+nPYKiKOUFOtmwPBFRSQ9hLPMMP83H5vnIfAKVsUiQHUApEs+VDqZURQ==","signatures":[{"sig":"MEYCIQCZFJxI2m4UWZVVcgnO4xxICRei75KCGLKWpzNOhjwyiAIhAJ/JVai/Y/mNpyTna4qhSimxuoCZcTQ4U8QX0FIxbHgX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+/TFCRA9TVsSAnZWagAAn38P/0KwWqQY/FwN/W9ZkevO\n6ASrfqAi/jaR/C6G8MKJjEPuex5WhRr53HFHa/yLQOo9w6+s5iJJVx2vVlvK\n9UOAKBel8HcaDZkuCyaZY0n8094FwVRpD+QN/l2uUehhQoSzuvCFaTWBRxCA\nbYGe83kuYpZ/xDI9+/zjSBk98YCNMWtCtRHTILgylWG41sUFL4K9MjyrOGpM\ndQEAcWufN764e8HOEJCHOgI7sBCenW26MbgkHaqI4EUKHAxsvWgNBrSzxw6j\nul+PfGE7KO0+rKyEM+tprCOXt8fpfNlK4PJw3pxhfalZodZEom9UTHFD7+OY\nZ+Y7IADFoFMQzjTejxgg4dsPvmeQpgCwmMSNfU7Ir9mXaXWyM9PdMXCXIPBS\nUUZa6ZTGefLDsASILIJ3KsfYL7Nhb1s0YY6V1IjRknohCSB7pKR6ItyIP1K+\nIznx/+RVF5lkaVVaB+mTpS/jsSEmQ1vs3UOFDOaB8gjo2khFp1gACN7UGNJw\non9h9AK3KvZGqKyfbLwkm4dkp218o7vL4CxTNhq1dwHsav3cSb021HSCq3MI\nGnWbBPkDUmHvDvB9HWU4dHlGJS9H/6PwWGwqvQx3Ba2823hvmxmM45jIa7ca\nQEKVhxZ5FbK9oxFuLV8+xSdpZSeaYXAB1+G3AY+Sjj+4LQs2or9GDfKjO2zQ\noYhA\r\n=0Ivq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eba21b4c755193b8f7bf0ee5ed60016a30cda1e3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.24-renovate-non-major-eba21b4c755193b8f7bf0ee5ed60016a30cda1e3_1610347716885_0.4349512866171261","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.24":{"name":"@balena/jellyfish-sync","version":"4.0.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d09eae09e7fb20c2761e68d7edd5528295d6378","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.24.tgz","fileCount":19,"integrity":"sha512-Vd4eMU2HvaLnOIA3rU31bIBx/MFIcRhxGwNwMD2Re05TCLHCjzBMLoyZRhfAWIt5hSJ9av0sMCvM9pZB1lTlLA==","signatures":[{"sig":"MEUCIQD69iTQZvpS7mWh+syzE6rFbcjMILJQEpDE/BF0hUwq6wIgOArufALn4CW7jjZ2zLRCI3OuEVQ1BlTMvDncLrbqliI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf+/V+CRA9TVsSAnZWagAAkEMP/2n710pLF+S5s6edKiKq\nrRGvNcTe2Jl/mZZlQ7V0AZ2cLnZ7cB+cjjdRAi38XrjF0eh53gkTSVF46neJ\nXbVe65WiQsdmv6dANuvjOZqxJnYXO9lmwksGvLhA73wwrmfvyHyYyYDQHJqD\n77Yn7DsUbQqbm/GRp0DbMLCoeuJk3J6sK3HVxUjDeGSZ0iPjmkXvJ/T8oTgr\n8ZQVHh002WSxc6rfIBJkOd03Z0dAS6uqsNx8/Cbej8Lwg4R09eCpS0uLpWMT\nBS9/2R5r2kSm4b+PdAay7NziSCpVCtbrTerM9CMTkLV+pNjH2+bI05X79xmT\nZc8EQWzEhfHo4IcXbdaVereCF8QUHbTaFLzZoJuD0megldqYzYEkH13AnuQa\ncJoGZMVNmFsclGHH6j8hLuPiKCG1Np1KTFZPs0MqfFVvc5keK1kQbqu/ZK+H\nYv8Cv0rG1xeOoJKPIXHxToVaRBddum6t8GgO7LV3p/GLbUaHRU+M1a5bmTI4\nd7YsZVZ3RBnm1WMexnDCwhtKYq64XMII2bNjz4qmiwJMEbXaLN3cKpIFTl/+\n3oCFBQAmn7yjhIDA1Cg7AicfLj8UdbLkh381Tt2/kHo3bSHyBm3zS5YsrMOA\nhDeJtPlf3dR7xk56v5t+IrLQydqeRDNhZUmasaY77O6temAkr3yVsIZ2Jeys\nzGnm\r\n=w1gE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0f458634c03bd02ceb3bebf4ff83c9e09eb9de86","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.219"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.24_1610347902003_0.0638031015854974","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.25-use-company-token-8ac038540a7bc60b6bc54386b264420550733f8a":{"name":"@balena/jellyfish-sync","version":"4.0.25-use-company-token-8ac038540a7bc60b6bc54386b264420550733f8a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.25-use-company-token-8ac038540a7bc60b6bc54386b264420550733f8a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"394e775899001b68686fc5c9e122d8dccdad0737","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.25-use-company-token-8ac038540a7bc60b6bc54386b264420550733f8a.tgz","fileCount":19,"integrity":"sha512-fsY2/PSa0lrfHoP7VQKCkgYjLHPHjjchRU/VbW9h1kZ7bwhqjL5LTpy0wcZGF9kYdVWn5lM7AJEnse1arcryNA==","signatures":[{"sig":"MEUCIBhO+JnDhSsUdWZ7Y9k42xfzhIcsVtg6r3Op0LS2fDxGAiEAwAr85A8z5yPFhPPJ21Kxm5Ap06LzW8/Jw8gPZPr2cXg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108261,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/AZpCRA9TVsSAnZWagAAIKwQAIpH2vJSYE1cIE/0WzC6\nvYAr6LvebyF+9I+uaAPFP0NCc7GhFkeIroOHtmZgsGgqO82tbFdZKPxQkzml\newgztwj0AYq4PvPhc2MVLO+npcmwlxoZw7ZjWfhUr17du7+Wg+RIyuU5w74F\nOaV7ZOW3fqrEdILDqfCSKfLrerIvgvMqvjEJGudPM80O78tPaIuIOFZG92Lx\nLlRG9Ryw1QafLgx9xDqBJgNRQBqdoCf17MvjV4Sj4jcXRWh1w7/uHM/maVAC\n42DIDm7vag0FEJNlbq3sWNs6E9PdlNrsFQsrgszucU0gteE1zieVRZnk5Y6I\nmva4csfLPJuk1317RLdjbLC5T7tErZ0sorlJYY99tcD9kg4HEp9l0Xf61Rbg\n+IHscJu1FiRUjgBP8SBJ386OfKxyXG5zZT00FWEv+cnhkNrgRSS0lcCvYglr\nMMf67fe0YQp8maKUaUIywrzXxLCxXNYjQyro4L4oyKoAR+Yq9SpprBezBW4p\nl4EdtN7SMr/InvFm35fF6ZEWY9xjtUzzAJczrDUX+A0RPD/fwWxJoPoTpysY\np3sx6JLtsKkuIXSlmgVDFd02N1RGkRLB+x3etP0Gtt2Suilh8DWLxRlkQq4x\nzSjFkp5+XwgstbkqZ3CX+yNX26LgPOiTiE1tCS39kzVF4YlhGos2oGeA5/8Y\nz7Rb\r\n=MFyr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8ac038540a7bc60b6bc54386b264420550733f8a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.25-use-company-token-8ac038540a7bc60b6bc54386b264420550733f8a_1610352232710_0.9884847846489908","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.25":{"name":"@balena/jellyfish-sync","version":"4.0.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d42ae4b92978cda6f91b92bc3699ebed4dd3dca9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.25.tgz","fileCount":19,"integrity":"sha512-9Q08xygvDzE3zV0H1dtunkesEtCPpY2x56gZEXM5VgmkSKLFSyk5I7ZRV9EzHJUlSohrfcqF+OiighjmHbDFMQ==","signatures":[{"sig":"MEUCIQCZIU1S6mFP7SR7yUblcdhrXigKBT6FMZm5rWTo4xRPDAIgNLgb6AjAYVb9HNZ3vqb778OzD512TGRSj6lnvVZ5FTU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/AcnCRA9TVsSAnZWagAA3yIQAIE8RJtR5O9yeqPtQiu6\nuUYCuxhjVasgu6OHKTdWLfUUcXewQWsuPXBi8voWOQ7Jn+E94nGIMtnjKiSS\nvt2Llq0CUGFiQdeBKVkwwBJpavsmPK23A1p2Y922cYLATWw4ifxwolegmtn7\nL9VMkObUyQ4Gsqmx+TQ2YwaEOZwQ2E9o2Si1vCAxoghOVuo7X6n4j2962jTn\n5O9c+5H4ox5iBcCw223TEnCuPVxpwTr3dKno39WLAD6EGxf90IVu30teY0nH\nt9GYpLmJtijvSm11/2v/NejJ7rvj6Iqxrq4sSxq5tDJG4g5XLfpJcoc7t8pi\nKE1CLsU73JKDHm5Vebb4jWFYmeWGT2P2O+zML4ZG3hxqXgcxz183n2C3IVao\nTfA1cmSAus7kfyHU8quhvW8oMo/ixtOhvVnIZLAn8kShpO33ROFPD2pcMIIN\njl5p2CyJkbxMwBDtKBzJGfypm5XL4DImXtbKWSxpvBHFtG/LdR2T6Qml1Pkq\n7E9e2C572vAXrJ39CeSiJBCLKkgE/9Eud7XY4MJKpLUvOxyhz86gdD8twEwt\nPuJ7tjp/gWA5KIJQPoyRuCPFQEkY8Sl95wO9UgEqE3APGF1EeuloQGHOK0C6\noi/qMScJxMPGIwjgqMpfT6QAmYlT5kObDbpqHn/jt+vH62Di5/T56ko9ZVky\nE2F3\r\n=Mm2P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b3743cb0b884072a3808207054f941b916a3141","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.48","@balena/jellyfish-metrics":"^0.0.219"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.25_1610352422576_0.040864932744581806","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.26-renovate-non-major-5830a9145cf4344fbe44b7e396ba5e657104f784":{"name":"@balena/jellyfish-sync","version":"4.0.26-renovate-non-major-5830a9145cf4344fbe44b7e396ba5e657104f784","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.26-renovate-non-major-5830a9145cf4344fbe44b7e396ba5e657104f784","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2c2e2cfeb9767222078d37f90b9744141035e452","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.26-renovate-non-major-5830a9145cf4344fbe44b7e396ba5e657104f784.tgz","fileCount":19,"integrity":"sha512-0CJ4sEP73jzlF6ZFI7Ie5i8vRueEQsiRueFh8lGsT3kuZQWq2WYDA/43TSHICCahSq6AoZddnZ6cJW6K1N255A==","signatures":[{"sig":"MEUCIQDNWgTZuIpsusvVcE5O/t9i7r1YpAyPdYuQMbh7647e6QIgJhiZRpZIaQSdxriGjeHeuBj+qxQ5013ji/+LbHMj/Xk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/AiICRA9TVsSAnZWagAA9woQAI1EstV/voR6IG94m8+B\nqnbmSLflEVr28GXG/G6/TIM4KrWrVA89fwBC6V3+FLmgb0ujX0j12DvFazQF\n6qjts7G+Mj3bF5y3+Mwrsc06DOi1lBIKdhsUD/68bQegz2H+pMWFHWf51a87\njShtlsXMEm9KImPZ+tjpHYEGyI2N3jXRlyDsCtHMbgIYvqU7nr5Fprzd/DE9\nmt3s1vUJSdYBas6wY847tBSWL3YMcHOP+9mysEE6bEWhRByg0ICGcbKm0HHl\nByWiU2K8VQEupg/XAbwerrBhf3HpHuiAI7H+m6YNQmFqdryUTSVa0U4YwBo0\n20gGcwAg9A5+kAVAHVXX62dUGkeuVe9lyUiTSv94O9h7eO60kDLITitrZnjf\ny1ha3QFA/393IgUVTVnTKVq3o/UWTxXPHZNBS8GmhN6hcj1bBQnxuyRPUS0d\nhY/zIu5jtVgpU4caMEuF6VecNDPm7C+DEcXN7rgFZTs5Mt/myAQZqQ56ILL7\nQvw+SIrGV2o20zwgWzXythVQFbnQuaDtEG3utFQPEwVe4a8h97ZgqsKSI7Wm\niyQhXX0kM7J9GEJ5+Rq8T8xjyixruS8aBEBm20ix1Wigc/XDkKV+CXxsCtU4\nk7dMiehp6Pn8BRdloH/lOixs6ybyhx7n9D8OMY4qTGLDps0pSVG6ntmgJg5j\nSaw4\r\n=JqiF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5830a9145cf4344fbe44b7e396ba5e657104f784","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.221"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.26-renovate-non-major-5830a9145cf4344fbe44b7e396ba5e657104f784_1610352776293_0.4694298127080281","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.26":{"name":"@balena/jellyfish-sync","version":"4.0.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a56cbe611742ab05974cc72dde867c56e1293b6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.26.tgz","fileCount":19,"integrity":"sha512-Hn5odNFAotuvD90iITdcnrUd0NRxDijY2+JBCnAfRVZRIYh3mjEON9LtrhqihZ5WLQ+K6K5IJ3kTqy0zg8Prcw==","signatures":[{"sig":"MEUCIQDYl9IaUPRAJ32j0KyQLzN2jR2VCzDX4BaxiS0rWpfvQQIgVvIUlvFHAgGd/pbbUBO8yYky8wPBxcU6np3UGBh+U4I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/AlcCRA9TVsSAnZWagAAxlMP/jRUWjY4WH9g3R/MlPFN\nDITAG7hY5quO1JdrqEiNKHbQ0QEL8w7rHdZ9iQiLdMe0wyECtghEFnKfYfXx\n//vuFTQ292a8vOE88rtCZUYLY5ymhAt7EKpc2TPV+g8fpGy5gfy90VMuryZL\ng6ItLAmCtNzlNn7f/u1wUnD4WC99KbWAJnc/QjniWQJfZBduAKfFdHX86NnJ\n0HYE+YMN3ZBnAK8WRhih05T8tZBPVKLR/JxvGHlOCmBsDrv2tEg+r8eHcAy6\ngvQO03E9wqZF++w56eY8AuhlcDYtUEUnt4/yWPuao35Q1Ly3NbrPB4ZBCTn2\nDf92nHZV9L+6831QJPY8gjEvtCJia5QZftZjQlkKUqRRptPsLV0Y3UDAopeE\nDudEBsYDAkL4icyfvh8rgA1E38wVw24PpBbf9J0WKg1uoU6b4cHD+2qjFBh0\nnryPpGYO/cO5lFdqQ8DmXTDDViHfyErNmEiuOUSV6Q6YI+rTUW7kgFYI++op\n3e+bSEF/g4IX1WwRy0m1ZCcPWKjnHXAw4t5M10V02MOuinqVaNxX+akhQh71\nIvofju3FfGYpRPuAOz3akL/OrKxmE0NE1aEd4y8COURRv+UmOr/pV4kQIB8Q\nGLtjnLQtEh71uYMfaTPNTK3tJiKiGq1LjUuEacZvs0w1o0B9Oj+ZAzjZaHWA\nRmRp\r\n=JV5l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5d9a4d029b0b1345188ed766dee990b0eca2e7d9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.221"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.26_1610352987749_0.4489716803718915","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.27-renovate-non-major-b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8":{"name":"@balena/jellyfish-sync","version":"4.0.27-renovate-non-major-b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.27-renovate-non-major-b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d2e937ff4ec05f79de763784e58fca0c3872673","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.27-renovate-non-major-b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8.tgz","fileCount":19,"integrity":"sha512-qZyr7eYa9/Bhk/bhEENyoKgyWWS/4BAuMpwT8NG88eni8FSyLFJ212OVF3PshIFLDJHbuypp+dJ1lO8ffGX/gg==","signatures":[{"sig":"MEYCIQDRTVe9DNvOpd18Iy2zmp6YK440KrUBd9bPeKfGqlE72wIhAJQMHywNQcALLRYWKsRiQkoY6k6Ms+5i9nisP204fp/U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/Aq+CRA9TVsSAnZWagAAnbYP/0mvahyHUP8Oh/v6B4PA\n4SQBXrpERO2q4C3UN1lIdQpvu0Yf0JbD6fyOYTZncwa0YldZPwX9658ZTjNw\nWzuyhWBvkHcCiGCPmTeW0ucSxVkfj6ZdR5bpI0TeCLoVrFr6Tha3CL4i8x8S\nQ9XP60PL8kVeCgktP/wg/19rseO7b//qTz2W9qjtCv1wCBkYgy7HYKcy0XTJ\nHLNBUac2OBuGvaAl6Ex9455QSjx2aPpbH4nDUdph+rtkarcYcZth30Honfpl\nhioW5t//S9dWex1t0YWk7QjfguB+yziApb9zQ63mwKP4xDjsnCCeje4wlnYw\nzZBfjGioFCyS/jYJBFnwVlMUiN6o7rB5fyjpil0qu03uEPshk+aJ6yRU4ZrG\nerk/X9TPc0oFfM+IsNjRIV9xlyZBr1+6OXkWvkJ2BLxT5gmJZjiGkfRh4eOS\n4VoTRb5EbCsT7NYNXmH/snMFvOmZyNRrduVNfpZDfm+FYP6j5eGkiDdtyLqz\nuuJHNKQwiT8rNeI6AQVgIwUU6CoDeyPsnf0Z6Vy9Qv7LfC8CavcCAHc2N1dI\nQ9G5RBgI34n0N2j+YUY12YSBSUugMTIyOpQ/iuMcJJBt4hQrCdV+D4DGiJXB\nApxfY162IJkzjClkabWDb4w2uXXRqHeiPWqPCwIw7wqe7Yg70BwdmWeWS90e\nc8xK\r\n=gPLg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.222"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.27-renovate-non-major-b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8_1610353341584_0.13163864178940643","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.27":{"name":"@balena/jellyfish-sync","version":"4.0.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"662347a20c54455c7e6d7ceeebc45b4fb17c85ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.27.tgz","fileCount":19,"integrity":"sha512-NY63D+m+oHGB3B0yr29UwQIqEHegcmKeh7c3Sr/7jNODwNfcGmwHROkN7OcjIimV9ZwBZlpV9yrghWUBa2lDJA==","signatures":[{"sig":"MEUCIHDcHX40w+jCkxyM6Kpqc0tf7uEWH0pHZ5UfAAljc1K9AiEAsOGm3yRiL7Wz83iml0nzw0av61wDKIDBTXFRzeMjGMM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/AucCRA9TVsSAnZWagAAiVYP/0eQO7zJOTcNLsLxBJIl\nOPpVADnld6ooAJMo81+G6P8XePpLYw/pWDq+jog3O5HmW68rrvaYTEwhatF/\n9QozcvEbbf3VlZoogSQu4vyWnTGP1sFg0tv57zD1A0r1X830LWNUGrYXK+dW\n0A/THAh+I+cMTORi5t1l2Qr18hUU6if9RkTZuOg7QTVeaQFkCf/EDiK0bIWC\n5VlzwG6v6OOO/vFTN+gIWBmqIeZUISVQtWO1D2wcE1VA9AmYekAuRVBwvEj+\nmYBJcOOerfEXgEekR4JMuE1LFc/33+tDs8p4GrasnfkIGXWntgIPufBrLzO9\n8BueMpAAPmz3hf7QXH+98cqNT2+1xVycpwCSgcq5lkazOX0PmI9Px3FJsfJL\nK6Ab5PwsnN53fQCbydcaQSqD+xuSVOhnm/TXd9I1wMtt1kuUdorHtbwUku9Q\nQf6+jAQOMjantnArfdbdUVSSamzI5ICKloIsYyqEGH8TrHmeJ7e/aKfvEJqn\nGaUTi2rtPu91sG9avuF0J87sEQWc8z/MAfFu7xiF8j++KKd4ZkGhEVRFWLow\nl2z6pW3K/H7QyiD3QzoeKTEGOjSjruiW0GBXz7eX9zWaMbhMQpZJcs4lbz8X\npMErd+LgaIh71mKQeWoB1JyiM2SfmdwjEJj+OPnrLPldzXS6dpSYTw3ufYoc\niPb1\r\n=gfjS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f7a6206fa2cd2e8b92ad7e88130cfb1f28f7782c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.222"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.27_1610353564393_0.4471712379344517","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.28-renovate-eslint-plugin-jsdoc-31-x-9b3ee0a5eab32a2ee13819acd1a1a453c1da4123":{"name":"@balena/jellyfish-sync","version":"4.0.28-renovate-eslint-plugin-jsdoc-31-x-9b3ee0a5eab32a2ee13819acd1a1a453c1da4123","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.28-renovate-eslint-plugin-jsdoc-31-x-9b3ee0a5eab32a2ee13819acd1a1a453c1da4123","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0790e60fecfd58a8f47120deb525143d27435f45","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.28-renovate-eslint-plugin-jsdoc-31-x-9b3ee0a5eab32a2ee13819acd1a1a453c1da4123.tgz","fileCount":19,"integrity":"sha512-sNlBnj/+oS1I4SaFONQ5IkTNoaV27rBEi8yddLMp06odZiE9V7rGtyTLIeNR2ca/B/18pTM6eYQnI2tI940qzQ==","signatures":[{"sig":"MEUCIQCGoF6V9z3lhVuyUzd1XzVZ8artUCkRQN2kSu2rGpnDrQIgfBMZVW9jLd3kBHE3NGO4cjUuKunlvfVg8FR2XZCodL4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/DfMCRA9TVsSAnZWagAAUTIP/i2rwICpNw53R4iwIPe3\nmUOEOWUKJVjinbG1JxL7/Xfu20mIcS2s2SyYKaHvJGpQMCanFs3W7oWwjLwD\nHJKo5n2MYrXJhQ0Sg++ws2oAE/9k/r7byFVR0vl7U0M6v70OQaXYttMa7XWw\nXrBJCqCeXlxKiIDEWhi4/dR0yRPu+0HGTJC9PKWqBf0bt/854BHiWaDcoc73\nXv3BeovvwS4A5+hFl/lVGjDlJ8CLa/YX8xfHYYic346wm+fochBCWWViyL7t\n1Fjx6e/2EDnL64QuPFp95l6HkXZ3NGW6pw/oKQHTbrMjQBLwAQP3SlhsOear\n9/1wZFH+BRq27xO+I+En6WVj7DtnJIGWB30bWaunU/sqH+xkBRlta6NQf8sX\nBpNCg80H4HTLWF7ahMNis8P91w2DIzEzvXIk+oWud1f7bYFO1wr5b6fAUVPN\nYmIKf3qqbYWs31wXVVTbKFlan8V2bVHLOC1A4qLXpLOwp02497HQcZ1Tm9A3\nE7kiJLwvAV8FnNm58qYiwmBLQb37iMDhRIQt3aNNEiy8thtGJPDr/8TuTR9s\nSYyVYAyFUeHabd/OKSDseuIV1WBwM+gQ3WclaCdStR+BfHgDo1YciPt+49JH\nrP7qnlE3c3q0lNEQVLfPmbqFtIF1b8T6TG0WkeuGPDrcDfvyYFnEVJx7Pq6Y\n1CB/\r\n=PbUk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b3ee0a5eab32a2ee13819acd1a1a453c1da4123","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.222"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.28-renovate-eslint-plugin-jsdoc-31-x-9b3ee0a5eab32a2ee13819acd1a1a453c1da4123_1610364875661_0.03167606941886825","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.28-renovate-eslint-plugin-jsdoc-31-x-f6677329d02067e6fe637f0a3a0d55ab729b50ff":{"name":"@balena/jellyfish-sync","version":"4.0.28-renovate-eslint-plugin-jsdoc-31-x-f6677329d02067e6fe637f0a3a0d55ab729b50ff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.28-renovate-eslint-plugin-jsdoc-31-x-f6677329d02067e6fe637f0a3a0d55ab729b50ff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"086294c9acd8ce7a9abd8bd920303160c22679fe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.28-renovate-eslint-plugin-jsdoc-31-x-f6677329d02067e6fe637f0a3a0d55ab729b50ff.tgz","fileCount":19,"integrity":"sha512-anAvxUrf04epmQUqCSALCqU2pgYAtn213WuaT85OSTW6stEVhVn5juF4W6keM569vdmEBoWT3+6FGfVUnHayTA==","signatures":[{"sig":"MEYCIQD56Y35/z4Td1+ekLul3Sla3diZpv6FR/J90hmvMQQddAIhALiAV9xA0pCISjbUBAnMjNElMhsR8OMA0/CyYiMEzrNL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/FfjCRA9TVsSAnZWagAAXrMP/RlWSGJUN6WmuGO3EJ/D\niKgVD6jmjSsB7/aXnPpRM7ZN+dPXxisnqMDPpzQ6qDHBewmRkOQVrxLv9YZx\n2NVB4JGhU0EC2sT/Jsyjf9ZToZlGpdsuSUslgvnXcs2C/7dDQzfESf9VpZ6T\nKKvc2+FbEa2PCt32O9PAulyJCuO1NjAMYQRt+nrgFNEEAJ7ciXEDDUwIJlin\nzn0wb/+QniTpfyHnvTUTsDlnCXxfGnBO7KvRPuHYylNGiXQIQ6P3LbLQgOBt\nxlR0aZGmgRtRlaxIi9g9nPUE/XFYP70SCuXv1B0Kget9A0RNY/myHTm9OZK6\nU1LRcmBrSFbta7Jyp0S/omBcc8CtOYXWq9toe4cd4gww2mSNwdxupiO4AymH\n6YESGnHfB5Rq+3kGXW6v6N4AQv7+FQgT/mXLWd+Lb559waxyKBZcztq1lTHD\nJ5h4SBZbrE/rgKANsQ07onvlYKI5iaen2mz5i5xGGnxb/piS4nlDr26hy9Sk\nOh6xlVG7kDqpFXxNZ9tU5VlXltFDEHqMBgA20x9YTbEsPS6MxEcVJy9JWH/g\n/gR6sy9/HIrZmMO0UH3TBf01S0iT1Iu2c+LyKo3MI10oc8UeqJ2m55OJSJ29\npYjUgd4C3TZjZ9/Fit/V1RwDFHKMEA5+vP7Z+PEVOfMjWjq6IKLnQppQ2trk\nitJv\r\n=onvG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f6677329d02067e6fe637f0a3a0d55ab729b50ff","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.222"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.28-renovate-eslint-plugin-jsdoc-31-x-f6677329d02067e6fe637f0a3a0d55ab729b50ff_1610373090808_0.10894207239768217","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.28-renovate-eslint-plugin-jsdoc-31-x-54c565bd6a7f7747ecd7c640b356f886f261f6a0":{"name":"@balena/jellyfish-sync","version":"4.0.28-renovate-eslint-plugin-jsdoc-31-x-54c565bd6a7f7747ecd7c640b356f886f261f6a0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.28-renovate-eslint-plugin-jsdoc-31-x-54c565bd6a7f7747ecd7c640b356f886f261f6a0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"49f8f244e61790280dec63eb83922a76dbf47c6e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.28-renovate-eslint-plugin-jsdoc-31-x-54c565bd6a7f7747ecd7c640b356f886f261f6a0.tgz","fileCount":19,"integrity":"sha512-5WOZDXu7JXX16KiO/cmy8MByYyuFeXwgGUZQ9G14lVNSgzjq0XtgmE5LGvtYzCXCxdhex7xiBlsuzJlaz71zLg==","signatures":[{"sig":"MEUCIQC1FywGdX46I9SZJbXxL/lAHWlqCDF9dzxr1jv8xCXrNwIgXSYRjdHyXAmPwM2DaCKTRAzB3K/TXYFq+O+BNV+8UsU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/IlPCRA9TVsSAnZWagAAQy0P/22r6xgnZFPtSnuPruqd\nMYoxiCCJnvB7kL6tTjoUCogmBxuKTWrBj13YGNsEgPHmpubUtGBXVwzii/+d\nQYRuuYD8l5N8hEL4S0nkZjV1TVX6x7dQQiPQXK29YWEDnf5qJOpx5DmKb3t5\ntHwtXyYNjL/MWpOIF0Q4WWozatHdqUNSgxgQnaZY6dc+iveoVvRRc8cRn5yU\nxiRC18ScGtqHU0u1YYmYX2C6AR9gXcwaz9IyUlpG/+zTmh4mKAwlUI/2v+Kw\na/HUgzciMr3ktlH+P0Fsw8Lgqfgi/M3Xl991Fvm3G8ojBeZGGeJbdZxq12WV\nvG/y3oJly2EE+3PQE1ouZ3vzJdm8oDYCZzoyErJYuI2QNkGfukXKvnbT9Yev\njjmIE66wozTjWiUkDl99Uu4s9d3CMyFToHe2y9T7tRIsuqZ96SOZEH1xw8oF\nCK0zoKTrDWa32siw9EZJtPyF+7JH13O7x6rdoWo9t2V9FmBHXJRyb8jSn1C+\npsE7yY+zsFHdFdIvMBPXLl7CLUazmY5p35XjPiIRERpPj/Iw91LU6aVK9KkB\nvJoNfqEUEMlsRD6EjSI1v81SJzoew/VKZfX9SbOLnUTYnEbL52mofJWE3ic9\nuiwdQaR9rzPa2yJ+ZFYe6bK5421r8kvtYqNHannculd067EaOMsrf5gjqTq9\nuT7l\r\n=0bjK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"54c565bd6a7f7747ecd7c640b356f886f261f6a0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.222"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.28-renovate-eslint-plugin-jsdoc-31-x-54c565bd6a7f7747ecd7c640b356f886f261f6a0_1610385743242_0.33673308248300726","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.28-renovate-non-major-e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f":{"name":"@balena/jellyfish-sync","version":"4.0.28-renovate-non-major-e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.28-renovate-non-major-e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd6f0f0b7e6551da55b585f3bcce14992842f27b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.28-renovate-non-major-e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f.tgz","fileCount":19,"integrity":"sha512-kwevc3tFzWrZDB90ngoLzRedFh+wS4imj7afC1Xx2JY3mDkZrhtcVZrzGp1odZ3E0OTYKX6cBBAFp6go2bDu8g==","signatures":[{"sig":"MEUCIQDYtxabpYmeufwzHLTP9kqdShkiAWk6jnHSILo2F2ugIwIgAPpo+Jzmj8x8CoQqZ+RuoOqiHRLo8Ete1oXCjcv5F7U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/P+aCRA9TVsSAnZWagAAoVEP+wbYNZ3v4xDVjgTDfv9m\ncfAk9jlC34N3GR6jR2Kfwb0FaR8RjymJRLNxMRd7YjawdcvosG9PIA8dDU5B\nTqvRAe8j1m6ZK/MjJdREyH7KK2zi6B+UeQh7aYgbzfZE0hBrflCrQSaYGlhW\n3pUuc/wjx68IASz5c/UJcr1qR1wX4JsrNdq564aSiaFzU27AXwb2oljKsEYg\nWtsPEbqjCRlkGN3i+jXgA8QlwwRO/YMyddqk1ex4fZ/enYWKLThGU1f1UbRg\nqg/i+YP/uWurRw8i90dBSC3Ezd/NH29S3LX6zjS9iKgK3xZHiP9Y6v66w9dR\nFZ4zmyXO1aRK6RSCqeIL8r1spk3wcrCvJmqwa8zth4GS4USppgUFBJwWg0O1\nzBAEAq5BkLwkduoENHiIl8/ytaVO2xjx9PbRQRk2uFpbE8NtPOwRsTvVHTJz\nON2itexcAN0zj+bXZFZ5EtV4FLI51bnK+cNESN2FvoZgLphAGYiKHrpGTytI\nGi8uJSubLpo1tzykUmjk4cxPFM9tUdKDDERGI31nrdbrMOVoGHYzcbvnSCF9\nCl9kN4u/S/IIaqP3v7mKXzJliZ5zB9zGIAja/j2ckyxYxmcSe+bMxXEd83RL\nNi71zeKoW2fOWhKuIYSNO705RTNjDQgbEVW98BcZ5iwZp6KdiAJlI4xI7/p0\nGWKE\r\n=U3fm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.28-renovate-non-major-e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f_1610416025490_0.9708011518333663","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.28":{"name":"@balena/jellyfish-sync","version":"4.0.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"15822dd5e08a877dbadb63ebe1aa31d0712c5266","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.28.tgz","fileCount":19,"integrity":"sha512-xiNuYPCNRRkkojvEE14JJT2pRYvkMkSb6D9hXhKByWbfIcO9z2YNW/xruvW39WZkhpiByiAd6Y66BlG3PidJog==","signatures":[{"sig":"MEYCIQCCjgzLfqoZjoULQvNI7be8mnXQr3OUTUrJLPHQX/sfBAIhAKsdO57agXsuFRsusDR0r4/MOucaVg+nUaXfZpB7QRsh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/QBWCRA9TVsSAnZWagAAJPUP/RaZRaJGCkni3z6rfrZ8\n3iKPDuSFwXDieiaru4xe7JcHqK99AAx/Gm397k63wjZ1WWECoXDUMluCCcYZ\n/HqlaTSrPs3/qLzcsFudXYgUZjVZmAUuY/RDWPOarmyL3b3fJuKBX7hjb9+s\nMv6DQLk5kPK+VkdbEZ4kkRGjrr2OYMHmUY5J31MjSAArhYZL22Fuw8+k7PIU\nQID2hU5BWGTkgfrn4KCYk7xgwzheUIDOQgvDJSb9zipI9Z1PNtI4Ruda7IK4\nEPriMrBc8MVIWcnKDF3jZF11tFtgyTdvAHIe1+zSvq2m9n6OBwGZQbPIf+uf\ntttmExlCg4N+LkjO3K/8nPM46t6067B+3t4qbgvjTovRC1Ntw3POQ7h5AXdI\nVKh9PmPbGCoqKYwLa3H6EUvVHhC6uWkZoxHT0Cbcne1x6Ncq207UPHQNwjI0\nvSHSQVv5OTM5WXXWBZm2xBjjzy58P2huAb1Sawp8lCojLXmyVpNq4wh12F41\ng7enTODHxcwRG/3ucdFQRLxCuFE4CzB1HC8wmVl07EohMSMQ2KQK1nhPNRgA\nv3kKibI3nmTW/cVz0SUA9ShRT4cllXfn3KAuLFT2UvghCM3Xhl0GZnlhofhH\nJb8tnIMUhVqvsF7yDTA9ROeF+FkKT9lN7nlOfF/LgEfhyQmpVOxX6TJIrqs5\nDGgT\r\n=HGji\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"30aaecd052cd41b53d5ebde0afcfc5b1fe55e4eb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.223"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.28_1610416213803_0.9889099022070607","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.28-renovate-eslint-plugin-jsdoc-31-x-849de1a074a0cf7bc19f0a07eabc0fdf1d150728":{"name":"@balena/jellyfish-sync","version":"4.0.28-renovate-eslint-plugin-jsdoc-31-x-849de1a074a0cf7bc19f0a07eabc0fdf1d150728","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.28-renovate-eslint-plugin-jsdoc-31-x-849de1a074a0cf7bc19f0a07eabc0fdf1d150728","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b9fdf2f352b624c522408a97f726f777bbde324","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.28-renovate-eslint-plugin-jsdoc-31-x-849de1a074a0cf7bc19f0a07eabc0fdf1d150728.tgz","fileCount":19,"integrity":"sha512-aortLmKoMMwqgCADwOmRBz/tnoWpVzSxuDtg68Z9qHRQVTNyKIyYTc3vtoA04T+5cFYRbY1NwZVaVIOxhzVLYQ==","signatures":[{"sig":"MEQCIBnI8TOQd1lZPzyYugRs+vlzrJrxHKkNtpRshNrdji7JAiAXvu1OkrLS0WsfyeVGob2p4vIemJF/h5QQRAn3ronNPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/QDpCRA9TVsSAnZWagAAnosP/0OvRl1euIgq+EI9u699\nFyD4olBg9doMgqhf0h5OyB9e6m0LaTY/D9wnCx7QMzPte1bvSovrwSWHk2Ha\nQAZxExcOKKQLq2zC/uPF73ffm2ESrAW5nPSDvoscLUUyKZL9fr3nfSmfDxk6\ndvTtfGwZoH7tJ9HR3M/7mOUs3OWNgAp36BAI9qpJK++EF7Bd6i6NabxSjeGB\n6uPhavRumeUo+IbIB2lJO1p4w/6gyrbRgO2Vo3Vdn0r2HdF/nkyG/xjNPlTp\nIqdTt4HvNuLTThT/+m3TAPFP/AXlcQ4i7CypCgfuShH/KT+/h58Kye7absQi\njJFF5tTLWMruuCllqVCWKK+DgODBO++QxyJag0dySWkB260u8UH+Yf95LFY0\nddgf+S5rFJIQaKxRvukfux59VfLS1ByDXlnhJZRogFy6tKPo/XUvwPxpEqS+\nQu9rCAb5lBP+IT78kDFocyJODLyr+4J5YN/j29nQ68WFALHAJ1Swq5cmgi9V\n/Tm+TXMfs55R+9nuqowrmnl0JJNhJXBkW7K4pbaUOoSN2Wrl95cQCeWNZT9M\nvFz1htB5vBJoDWvB5lu4DkxnAR3LX+dvglMDXyHtusBM+fZV4B+w/SVdz7KF\nuPX2m9Bb0f5cQcSROe8M6r05UrjGa2Zb4wbfOJ3lpy6JXn75VdjTXin4JE4h\n0E7K\r\n=r58N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"849de1a074a0cf7bc19f0a07eabc0fdf1d150728","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.28-renovate-eslint-plugin-jsdoc-31-x-849de1a074a0cf7bc19f0a07eabc0fdf1d150728_1610416360605_0.5703976942578157","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.29-renovate-eslint-plugin-jsdoc-31-x-896953984080e94f6a1379300c0f4ed0b3226f61":{"name":"@balena/jellyfish-sync","version":"4.0.29-renovate-eslint-plugin-jsdoc-31-x-896953984080e94f6a1379300c0f4ed0b3226f61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.29-renovate-eslint-plugin-jsdoc-31-x-896953984080e94f6a1379300c0f4ed0b3226f61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1986d9239c5ff7828181a64b21a41a0c7bda6f6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.29-renovate-eslint-plugin-jsdoc-31-x-896953984080e94f6a1379300c0f4ed0b3226f61.tgz","fileCount":19,"integrity":"sha512-BaNNXBcSZbKPI5slTUZwMbFqoMbdpmYh3BbelRbZMWyUOsS7alYvzxRL4eNm75c4DteNuxyvJ6HYWv+dqlrp7g==","signatures":[{"sig":"MEQCIFTX8RQN5edVG5NYxXL0UT8UYfVXxDWMTSD/5F++AY2UAiB4Ssjaa6k2Wz+6Gh7qliMB4YkjZ4tZUlIqyw5TOIskbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/QGRCRA9TVsSAnZWagAAdCUQAJ5Jn1BkKl+L1/DbBXBe\nskdPdnBO1/wW28b2vqB1xdet6vNNjBHv6sXhCP3hIEZWMsUFxg3MvfdXa3vu\nHpLhRMHXi+TTM4QM6mBSdtK8bZJmXjSjIsGkS1vSyKjF6P++qKFn8U0WIhL3\n01iUtxAaWjt8lphYLgTm10aH9sUGMhes+cTYZzosGl38/+wJBWY389zZNOpp\nS0X5wmr3y4siPCCrccrCessLfJrUwYmMqE9ct8tn8XzJ72uhto+MgtpSnG3H\nX5NSwp55xpPm2Ya1/r6VjOoz38GEH0T5uq0W+jMet7TrA2BCW6B8mEkb0jiZ\niDYt6xkWIDkshQDIL9pqWPalUuFhyU5SKuI2t3VE/72e0LFGt34PWv4QNbEH\nkRlQDcZeAVpg2KVSPHozPa/YJiQyqVvWYVSnZBV4HTmbVJZ91XHPN47yu8+Y\n4r3wH8IrpUt1FDJPadYeNyd6kDswD54IE1GRp6WPpcafbP9FgUHooYWTqr70\nAra3dR4NNJEQi7Nnw6a//FXcD8fI3H0pdU/yU2fTvBTYxpKdqGlH9hk/blRM\nR8rHsrlW+0loHergk+rOxKAPPUX5iJbBztx3U9uom8YcaAT26z9p3JRLZ+dC\nZfBcKd5beFwUNHp1k1FasVYt4bzMXn4FMqKdPojBKC9gNyWFvIj1ANuG2ixW\n6xQr\r\n=EBP6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"896953984080e94f6a1379300c0f4ed0b3226f61","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.29-renovate-eslint-plugin-jsdoc-31-x-896953984080e94f6a1379300c0f4ed0b3226f61_1610416529335_0.7376002142130744","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.29-renovate-non-major-87447a83877d92be35afcb374d758399d9c091d9":{"name":"@balena/jellyfish-sync","version":"4.0.29-renovate-non-major-87447a83877d92be35afcb374d758399d9c091d9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.29-renovate-non-major-87447a83877d92be35afcb374d758399d9c091d9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"03a113b72378ae08507f85c6f975695a820da624","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.29-renovate-non-major-87447a83877d92be35afcb374d758399d9c091d9.tgz","fileCount":19,"integrity":"sha512-1AiP4oLs8IMyRxJ5Bc8oiVekq5X0gprq7KMS6muvSt1+Ks/Crfglw8eAX5VvEHArCRsSmovrvCvkPCK7aNYUeQ==","signatures":[{"sig":"MEQCIEdpks25p08RjZy+ToFfA/Jfy3ci2ss1GeG58iWHNoZ+AiBV71chM23NcUy+Tqb9iH2RRzEmwYT/jthj+IG/Cw9jxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/oz/CRA9TVsSAnZWagAAP3AP/j1myn2lp5U1ZHKxILwN\nXMZlx7Sd3aO0U5JgWi5YNDYrGo0hQWZ+Xql22PvffsVu4f27kkq8QQ3vXkWU\nGfS/fqIH5wvgB+P9nD4NSNRE/skPISMxOJvXaSwqBEY4qiqkXCDHxyuDCSLJ\ntyBWqrE1/OclxWgQMHdnD9XS/dGBEEfH9G9Ch3CGs5mDtjm8JhkYM0yMZ26e\nQgw5xTeAxVo2dP6NLWLO0DjiAmHKnBMU5TCksm8b3OqcSqjha7b5uXIZpWfe\n526jxB959YTGmszQuV2sS6sABIDPPInaq3yqv4iMqeGeO5BvOge/falkT0nl\nNPNJfHfswOu3zZ7e1LQTNf2BuEOrJU58Ro5jrMyZWjVQK/eO53cpxKOMGIkk\nBx3BMqjhOhbdyVE+mgCx/yXDONpzhjISPb6YVRuOZU+/sjKHSfM1Xby4Kb42\nuUGiL1MZxFOd+nC/wca+2PFl0TTZAz57Z3LfZ10t3XTncXm/WYRK5BOcyRz/\nUcp3DjOlAw4o1WkAikAUSQ3ESWCjsqftoHVgTtcTqbHwcAWcp51orvK9nnzq\n0L23jMxyLrCOiOjs4YzPLP4nPQc1IUaWMK5+IbuiymZp2e6BPyLhT7rxQf3k\nWgc2y0dJT2QDmebhTOaHD23W6sgPKffX7rfoHf2Y8hiwSaeVSALBs+OFva8L\nk2GE\r\n=TEw0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"87447a83877d92be35afcb374d758399d9c091d9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.29-renovate-non-major-87447a83877d92be35afcb374d758399d9c091d9_1610517758972_0.6069805458018158","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.29":{"name":"@balena/jellyfish-sync","version":"4.0.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b10dd8ef89ff7a6a54fdbc0ba0b58127bc3ba1a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.29.tgz","fileCount":19,"integrity":"sha512-IBhWQHvEkJ71mDkhVbqZfpvqO4IRnN49P0L/GFaUJL/SRZLs2+AzVp8lvpGw7KRF7vxyIy+a2itZaYzQNwJtoA==","signatures":[{"sig":"MEUCIQDb1p2bs+vMKrUChlepr5EE5+5L4nTbf500EQ8NAv7dbAIgbVZKz+ixPtzd8Z8f+thbktJkS4hmgNo7BV9FzhDc4XQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/o3XCRA9TVsSAnZWagAAARsP/j4wjxzJftQa/SewpFvM\nLB4OkeOgKontlB/HTJ6VXYWuIV6G5uiwIXiXQnMjRacMOjVqffi14Ai9nggV\nJ6C2QJ+J0rsYgHfY8+BLyGbxOq6XcYOAO0MHnzN/mu7MSfEZe2w7GD5XBKHk\nrvKeOb6NI0bitPZAe1yV8ebk5KU9DPFMan68+4zg7ZBAqVpZa8XysV/9kdim\nbE0ffXcfhFo0A3NJ2sDSeG70Bj6xit0NvR0VQjLh3V+M+ktHOh17y5iWxJPg\n3y5cXcaeEg7s5tmIGm31yqmO/eG8QXO1x/5U1AnxOE9aQizigy9xdD1Gy9BJ\nfW3sLuFvl8YkKeYrWXv6n9CgylsbwhccrjZA2RNZhEwnH/HRRs5FhcZfRtTM\n0tzmLTl/FkJe0munypXttqrx8MWZqFROPBsJowyoVXMGq9vjP4pGs9jQvTjT\nhcl8XeSpDb3142tJR4oRxtNNdbWK/CXsM1VncrtXRl0KGd39GnDU6Q+cpafG\nc3qm+3Nv2m8n1kdaeDp0IDP2IyaWmdWPReExC9CRrrzIR3SeBjAFlEMlP22D\nANocsj2BXgdSsVsAaz9nQ9Ksf4FKQ6qePRNLHpoQM4g2UJO0eZQ2Sne+wMVO\nZg5UBXN44wx14JRix/iJS3/BjLcC3Vc6sqvYzsKKfmEhb3+/k3vYqVeT8RFW\npKGQ\r\n=l94L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6d693b0b7790a516e79ed9b6d2cf7468f38c6b62","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.29_1610517975165_0.6772339017103324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.30-renovate-eslint-plugin-jsdoc-31-x-5e8dcd8442556779b12947d314b5a26adc656a12":{"name":"@balena/jellyfish-sync","version":"4.0.30-renovate-eslint-plugin-jsdoc-31-x-5e8dcd8442556779b12947d314b5a26adc656a12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.30-renovate-eslint-plugin-jsdoc-31-x-5e8dcd8442556779b12947d314b5a26adc656a12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f3983aa15b85f7fcab575c8177f2834e669c2bfd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.30-renovate-eslint-plugin-jsdoc-31-x-5e8dcd8442556779b12947d314b5a26adc656a12.tgz","fileCount":19,"integrity":"sha512-esy9YLC4JDsTpEp5jFIWVVxTaplyqYBpTOINU3wqb2fy+OOt1N29J889g6v53d2VDw8jx8B+lxIjhSya/wdV8g==","signatures":[{"sig":"MEQCIF9i3j84HVewSMtlga/jcugPcSoJb55WYhoJSZnT5NaHAiBt5+hKW2x8l8uv7AOXALSnlivXYKLow4hxeSVOwdN+0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108762,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/o7JCRA9TVsSAnZWagAAYYUP+wYm4aMBQBu5ICDWKUcW\niYPMa5qvsg1VlA+4rOewEmWp7VY2IxOQaXit11RI5Loq1OyJEtJV2yViHa+b\nGs7qc7BuZD3gKjkbjSTmdpB3Hp6JH5kl9dq9aZdzC9lG9U1/mQ8E5yndIt4T\nQY3vOVLOrdXzwBrtpLLmM49oVhnPUGkmDFmifRHO9gfvfg+wSjwd7K6sbTfC\nwzi+I2zz6EBCeTizt9cNbCDe1/WkrGdFky8y1PfpmgFiefoMFUeUg8fFTd64\noWrtAqx+MtLwo0EaP6R4Uyn88cSdXq+/hvTgTq+TrNsTLn90IYt/bCmyBnI8\n3QnyCdW3VMRu3BmHSz2kUXs2W0EuNspmDX86nVCoPGym3gYxwZNcT0b7xv1A\nbDPnRtyl/rMUyLSlG5D3nR1rpImyKMwwD1CofM0Xhi8ivGKz8os1zeMCxVv9\ntz6MdiGWobH3RmJ2nm8i4iCBSXpWJG2Bq0CA+hHuD0Wfpi8fClZKronfYMT7\nTq6+Uz60KUt5bsR1D4wFkdFNPpwPH7aHfqHqiNv254jGjtvHKNxGKzplS2pI\n+25UKwnMmAcfwicVOrR07B+HNRGyZJYupwym1Bfqvm+TfodKa4aXZFMc+hVU\nDSboUkSsG6xDkkCCY+OJGXti6QO1JZy+4PPvA6ixgiGyI7xnIKePQOfYEJpz\nm7FP\r\n=5THU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5e8dcd8442556779b12947d314b5a26adc656a12","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.30-renovate-eslint-plugin-jsdoc-31-x-5e8dcd8442556779b12947d314b5a26adc656a12_1610518216960_0.011117615272645098","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.30-renovate-non-major-bb942eb4b2aa01e0191adc88cc2bd0424890a6f2":{"name":"@balena/jellyfish-sync","version":"4.0.30-renovate-non-major-bb942eb4b2aa01e0191adc88cc2bd0424890a6f2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.30-renovate-non-major-bb942eb4b2aa01e0191adc88cc2bd0424890a6f2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ff21969d936a482a59cf4d760fa8a01bca95ded6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.30-renovate-non-major-bb942eb4b2aa01e0191adc88cc2bd0424890a6f2.tgz","fileCount":19,"integrity":"sha512-c9SdbZvDU1WKt74DBPJ80xobHUPJJC+Q8d9LVYAQxWtvAwqDzhwNpKzic2c6Bl7hCKD9Ro3r3Yps0KnNnBhF7w==","signatures":[{"sig":"MEUCIFFiKjfF8SOwPJRRx212mAaLLuDjfx1FrUNmevVUzDQ5AiEAnNmRydXtCcSXinXRtiOPpL0xtuFPAP36UuO3K8iJhRc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/v/4CRA9TVsSAnZWagAAiKkP/0gN9LwmTXeZZWpjwok1\n4WUkjot0nFQa8ueme1EC33k51xTUQlcjliPYN1lxN54KKblbrWUiRie3VGUr\nqBfPkI/3dlBN9bTtwPcRwW0ObNioz74z11sVj82Yri+D1SU+ziWOCfi2zKLJ\nF2w1YeAt2DltmfpKKvU1nTEud1/H6yiOuykrVo6COZ7QS0+HWMCeCDLsYbFm\nRE+lEsus8gULCbEOuzV0Pk36hQo4Af8/BgGWR5kB0Ix6IOTQS5UtFBbiAQhr\nXLKhdjIkytq11X9n4OYiT7nLiVCwIjDUhQdlE7eZSI5zSi56S9k2WCWuTyZq\nOd8cQPQmSeOkiskw3beu2wfg+ZWJkfU90qv/0Ndyufmz+YKRcobcccL0qDxX\nqOHOIwNOWXRmZi2OR+bUS8X06k5Icq39pXqbiM/i96Z72w+4TbSxSkB7OEdp\nMj6+vjlO/WJFOq0oi/KBoRRdmAgOLOEsmu1v4lHdpqdweNXO4i85Ckxt97yb\n5mv6A7ndkT4JssDT4f5LQELmg51j+fuccy2TXi034rdBYGzqVpej77fTtyMV\ny8JutW4zPewTMnWNLVEQPyTOlDfBH7CZi2Ld7p5HRNSjIuHKjmNj10/zkk32\n2olo6VW8TYC1p9geALMOxk1VS5p/ob3OSQKmV9zVN/F4FmGgfwS5WbGHh5Nb\nyPHT\r\n=novd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bb942eb4b2aa01e0191adc88cc2bd0424890a6f2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.30-renovate-non-major-bb942eb4b2aa01e0191adc88cc2bd0424890a6f2_1610547191890_0.405279109980891","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.30":{"name":"@balena/jellyfish-sync","version":"4.0.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"065a40064480c87f54d45365e2c2f22c2a1e3a55","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.30.tgz","fileCount":19,"integrity":"sha512-aXmsdXJ+di82lbYtJzkQ7WLijI+pPMORKrUz6MPcIt8k2Vla3v00Hf0BnZeTg1HHTGptbjEw9w40a+v3Vo4oUA==","signatures":[{"sig":"MEUCIQDxdMWiU/kP+Aq0Pkpnp0uZGiDDEKpjMEItv9OLPK5MEgIgUfi1Yf+fdmYKwqRPiH2KWjw76bmZRwgpN/AEDF9rO9Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/wCaCRA9TVsSAnZWagAAc3UP/2U5Fnd5B7lT7OnIv2K9\nyQZ0EIRZBOSH3mza5QWnT2IFANlm/Mdn+OMPPWT/zXhz6Cj1AgWt52gQJ2m+\nfSQNhACI8MXkWgovH0moZraLL0zTmBvXZDQKYadLO2qE4F2fxWn06QHAV5y+\nqz+1EC1XiLUKiJzWDsBWpHWk+ObgP/h34vAeDk/Cs/Hg+t5OKEeo4Gjd8hZw\nrTrsH4aDJjY9RyKE4QsOAROzi7KGM62oJikkxCKSXDbswb4K0RpuilEpR0DT\nYIPpmzZ2HOw/2N5Z4Mz/3DORgcyatCldS1nV5auRS78Y8dBm8lrJCxwPiWiM\nBMfowMgSCx/3aQurHP1d8lSI2M5JGpBoigjqZl3lAKKVeOu+ZPNPPXBVUPBV\nSd0nJzQLRprGvZUc5SoTrsWfHVPPpCd2G+dd3wIadsuzIPdR1gEXGeMZhkiP\nByUmifF8ZWU3sgHtLXtl6TzUyjVlzWS8YEzgqxjLI4e4m6ZMHWA9PB2116qB\nM9S9wiWbnQGpj+5RQuXjnqGWdfEyElwnyzO/wSbpNuKl4RA7T1XiUtETiytt\nUdYwybWeZf1ZmqSEJmBWJrJCJUbTNWFrVqQ0Pn67mYMuYaY3jxxdknSSjDq3\nCWbVg/3+sNYCrTqYsSEAquJbdC6Yq72Eac97Um4wlTAhLQHQPwHoHjSPrbIR\nnysF\r\n=JaII\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ab0b51230a198178476a38751e78c2b84671306","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^30.7.13","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.30_1610547353870_0.43812991800414824","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.31-renovate-eslint-plugin-jsdoc-31-x-66af3be5ab9f80213d9e814c6fbddf14d2b3ca06":{"name":"@balena/jellyfish-sync","version":"4.0.31-renovate-eslint-plugin-jsdoc-31-x-66af3be5ab9f80213d9e814c6fbddf14d2b3ca06","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.31-renovate-eslint-plugin-jsdoc-31-x-66af3be5ab9f80213d9e814c6fbddf14d2b3ca06","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca8846f959f70ec4d9eed933c6c9603a4756e2b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.31-renovate-eslint-plugin-jsdoc-31-x-66af3be5ab9f80213d9e814c6fbddf14d2b3ca06.tgz","fileCount":19,"integrity":"sha512-hpgaKqSkmh3UDlQsy620INTt/wkXM/3lCmQGcsvP7s8EZ5CDFbV9472g90TjXWhcQSYhYCvODSuiW41YZzYfkQ==","signatures":[{"sig":"MEYCIQCxB4lumgROrz5nbZAkkAuCjYbdBaCiQV4KF9xpgy2jIAIhAPwkzdXFzL/6Yzq/gsfXqkOq1ErNT0g4lQzUbvJbmSyV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/wIECRA9TVsSAnZWagAASagP/id8T2mjZ58kh/cN7cIS\ncwPXzRrCJdZqTeIeWYl/T+eP6YMIM0D7c/Y+ygYAcc9YS1dX6J10xY4mh8oR\n4gAfsDpr8AP6NLdXPPQ9Jt/wbdw655Zak8ZNtuQbMjj2V2garvuKrdgY1S6q\n2dbv1KEpfss2+Xjq3FJWOW3S2NWa4tqOaZFy2XS0mhSNEKxTLYh8KF028yhZ\n/JUMYIOT4OYSoWjtDHfBlGwcRYcP5m3rpEojYxwQWuZ+Gzk44LaxdZxE9g4L\ngSrgWYwtOhSA2bRrkraS0vv6/0AbgRIhY3EoE9bNPykg47zM4tadIykV+Wk0\n3X8gdcxyeEifqz1jTqgtH8ZDULrJUIDmENr+4Z3uouZDYcYpOZORNZQ3HLNe\nZh4WdBCFqkgV170yGObRXw1FT4O7cT7uPXT53yCVeTir/DjYZb3+88tkf8uH\n0AdhureBrJxD9+ypl5Srta08P8yrQOjPUR0La4aTQ3GIVlSPLRoa/7AT2jCv\nq4sRf9KAoTVRRE5ru+DVGghw/lmmNv384d/rJI8L4H4On+L2XRlSR7S69/o5\nKMZ2sq+cx0F3528hw4C0E/c0sBmS1NlzzrHP81iimfU/nQ/An5x+tjOpnHnf\nqnQtIGqs5e2XSPbjNiowF2pWkhjStXuWCIZm6rSqXUF8mTPNxK2MmhfX/IbO\nrC3T\r\n=g/Nj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"66af3be5ab9f80213d9e814c6fbddf14d2b3ca06","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.31-renovate-eslint-plugin-jsdoc-31-x-66af3be5ab9f80213d9e814c6fbddf14d2b3ca06_1610547715754_0.0631363341820732","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.31":{"name":"@balena/jellyfish-sync","version":"4.0.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"caf4174a029b307c2136d66451f21fd9b2265e5a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.31.tgz","fileCount":19,"integrity":"sha512-KdXdAT34+8OAya7jw0rJE42jYGjcrXZmC9cB0JvhxRavoOiPE7ouwPfNuOV0Y7A8E+dYAC38RmbVmFrOtCfrGQ==","signatures":[{"sig":"MEYCIQCjSriQL00J+3gyUiJGQs8cFaMOuVdgMoJTqch8e8MdMQIhAJvC8/atuS8mdQho035SfMk7gkD0Kvb/POY4b9NUnhAv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/6plCRA9TVsSAnZWagAASMYP/jHz6jSs82IceB595eom\nSuvMYHSdbqLatHnCwwJQBjr187lz3Wy4AzoAsnXIKOy3aqGID2iyuLlWONZv\nywFOUVElTz3BwSHV0ZO/j/T++ppMmdzJpqzESv73usIZSWzls/aajPbzugig\nceGnRCt8eKomlSS34S+SlSX/UOFp9+DnYFL9Q95TmsmKbdJBtycfTcraCObe\neSZfjEQo0YmrMSmHNgXSvO/GhQr5mnxrBsMdf8txZ6af+RLc6Sg7QL9J4zrr\n0lPbUimOFRTV26IZ5Zd5WQ/GUdtTlr2XKy9mHVrbS+qCU/FzsbKb1BFGIXwO\nAjCVkGuEsnLq530pPBjJFqZc4Fsb+i+ayp7th5pVlW0JfWie2j+Lk1ZN9Mu+\nQNNqg3s1jW182g+80GYfbKBOct2VWMArXunwesb3z9GOyE2Y2dNBcrymzUPX\nR9cGJzcT4wjJAQoyqsccmgPVo8vSZZp0cmn5qre0D+C7E7x2pWzK+gU9+lcL\n3qrIQcxfSOKgT/6nREhjd/rtBudKfkxH9jMdVHzdngoiH5nLfGt9dUNqaCA/\nrAaE3AY78QBAvqYjNI9/+nDQacXrE0GDjKpuPwOTo6OCrQDUBLA0LTtBMy05\nLesZdA0r0++OTj3HGqyDptT7OY2ot7qJIi1tPVG7jiKB5Rp7Th9m2r3BTkUA\nJFyl\r\n=5eWi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"93ba80ad2f3ac20b48f6cc9ada88e01f869174d3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.1"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.31_1610590820987_0.47817773904980454","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.32-renovate-non-major-7f25b7491cfdec8c60b43665fdc1d947959a7e65":{"name":"@balena/jellyfish-sync","version":"4.0.32-renovate-non-major-7f25b7491cfdec8c60b43665fdc1d947959a7e65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.32-renovate-non-major-7f25b7491cfdec8c60b43665fdc1d947959a7e65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2f9e370f4231691dffa4ec26e5ebb652fb1f1e2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.32-renovate-non-major-7f25b7491cfdec8c60b43665fdc1d947959a7e65.tgz","fileCount":19,"integrity":"sha512-Ci2djJNQJfVJlWp0YFx33dyTHFuM6BYo3wd//1ivGQyfHV/DvWKp0UqrvjQ2hWS4Egb1WikZfqWxXUSld5t4xg==","signatures":[{"sig":"MEUCIQCbFssLffhnk8+UWuLWsNfAhZ2YnS/BIMjAIk20En8/YQIgL4i6g6Gyx1Qw4g4pvxYk+ZFRJj58kyFOik/GxPCSGxo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/7rKCRA9TVsSAnZWagAAUJcP+wQkvG7fqKy7KqdGO8OF\nVjmS/uy1Aso5YUMPKPsKAtQKT0ySeBajhFbzQ/mrkT+EYL7/iRmZq/J6+j2x\nKPwcIJ1lZ9Qy3y39R+hnk8RLVr5pDJz/4Osg7owrNZzkP1cTdQ0OPaq6xwfG\nfTYTX51h5/F9JYy3U+pTNOmQ+H+UJOsDwh9GyywGG3VzNvXf7ksGfiVCulBO\n/GCG6P7eCoqUcv8IhGpxjZnblGxLBMqDyxI71XJTqMxII9OzQzVkpC6ny91R\nlZQv8IU0KPQjKHIPaL/p1wADobnlDm+dFsSiy6Uuz1UTzN1SXolgR40MqYHs\n5y5YVadOK8bCAllORdBcGHcwuG0X0UB5cWv0uCwSVzTOqo0/KfiBE7p1nQgN\nMLRBaReQs+IH8cYcYmn7f8wy5qRDHFlg7pLra8U7qzVUyCzkhZ1M3fByvFBb\n1Cu8bUa4fXhH+HmCjWq4ZoLhfe64fZyqi05mWfL7QDqERk6f/eMzvLJBRmxW\n+pYYQuQt8wB3MJ6M7PjiCrCxwomIzp5FhrrCiyCKkW+QNDRwru8vl/u7R6S7\ncUGhL8e7IfS7OqCRL/9jGMPFIKveX1aTfCfpwldN1aYrdaCgJxuBDGMq8y8F\njs272e3J0aHG65W9dixjE+/FF9FNXdF0atiBeDstilLS/GPr+j4IpP7uwWHq\nhWB7\r\n=Eeq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7f25b7491cfdec8c60b43665fdc1d947959a7e65","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.32-renovate-non-major-7f25b7491cfdec8c60b43665fdc1d947959a7e65_1610595018221_0.7664433325971629","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.32":{"name":"@balena/jellyfish-sync","version":"4.0.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"744338fca0954b3904a4b04c200817dc702ab217","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.32.tgz","fileCount":19,"integrity":"sha512-WO8Ks9kJBf/XYR6SZZFbYpVLnVbW0bhkEOt7fh9p6eUQCQqty1wntnGcRQLQutHDjTjnSXTuc54mWmxNwlAsHw==","signatures":[{"sig":"MEYCIQCoxnbwYkYsJDJ6rAZq0rlg9wg325xWvkKKNIKBUSteVQIhAKqTqJk2FKtJpip26ELgitIafjOW0uUoIRKI+4Zt+NMw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":108899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/7ubCRA9TVsSAnZWagAAN6UQAIXokq2s+9QtBdRQYAsW\n1hd8sJpzxmoBbpdDSrOyVnCyYlfrr5F5vZWNKNg20c6dgR3U+DAOnpnelrtG\nEYRyojstgcSRcbogBl6e9caWU+4RS4R1GizaOkwiSrrMY3y6T9h+I/zuEHDQ\nWOQOQdpL/g0lbDuDiiZm7B3AhLBM26NC4RmUOCq0u/dnM8pEnioBIVjJ8p2v\nv3mVHDsQeg8bqTwsNRxvXrGxI0o5xkDfWJDhmUxCvK/bTAidPp2XP3jQI6cz\nx0oaLnNfVU414mlHf5NQ/XRS8Z+0pmYZjp4CFhH4izX4AarNnajSIeYg3qg2\nKPTh2ST5aEAcInlmQFVnRUjxspleOaI0XOwlOImXF62FM7JWg9M5zDl15C++\npNVbFQb5YsoJEcXUMIigMe2UzGBUvzhZkDVSGjSBluzo3g1n41oIUdp0uKKw\n/QoUR1nmQeVMeQFG/WxH8XmURCz2UhqFaGqnxYeLpx+rs20ReRJ9ZDpqcBoF\nQGGQziH+QujciuexfsEg2yZRalED0k0IkbCMNdfnYO6jV5Qo/Vh8CTgeWXXj\nAuPf5zZR8hO7L2RGWG2//QshGvKfs4qhr2IVelwMutEd+XRCVTxkZbEAVAE6\nSnPToO2WIbx5ZOsDLRPYK+D62B/gpmLhdOiwS/T87q9rX3vQ+r6NYIRtu80O\nGF8N\r\n=vvkX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e21adf997ad1e05ad42f37858d3f64f33b99cb4d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.32_1610595227438_0.6827272791197179","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.33-renovate-non-major-69142cc0cba4c01464f2777b4bfc063a716cee2e":{"name":"@balena/jellyfish-sync","version":"4.0.33-renovate-non-major-69142cc0cba4c01464f2777b4bfc063a716cee2e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.33-renovate-non-major-69142cc0cba4c01464f2777b4bfc063a716cee2e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6163c04d9471c0d88494160bca41abbd6a555d4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.33-renovate-non-major-69142cc0cba4c01464f2777b4bfc063a716cee2e.tgz","fileCount":19,"integrity":"sha512-nFexhlNGrfhD0aZXOTgyenkrKEsfLG0t35ZvsMkRVTOLbQ74FNeMzK4A+RhioMs7h5BxBTfczIcS329DY3lMIw==","signatures":[{"sig":"MEUCIQDXVA27JJeAHYhA5vYpcX9pefZTplNOZ4/nRF+dh9r6AAIgXMN4AjwHBwyi0LkWLsy5MtNoMdeQ97bRHX2ta7Ce8ec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/8w5CRA9TVsSAnZWagAAb5cQAI3V+sd3HWCOfHM3AYNm\nuoqIWHlgwV8LGcCX1+K5HSBSqOXqoRnjP/yXRAnTETBpdV3DmE/uV2QXjuWH\nNydist6WKOZu303Q6t4iRbKybWGPitCqaozoF+yTrYETU9V2tO3df78DQkba\nyqOiUBEzqSPJwqxEGrhZHYyY4eAbIdLVUANK4b9JseYArRIWvdCmhnMEjLxj\n6YNLfxSU8hbwwnIazOrow3zReKYsFD7gq+ozEOT6I0D6t6p02sFIkPu6+/Sb\nIkomdcEk/CrU/Ltocfg5XRIogHFSl1c4JZ69sydzobVJ18ug5nDrBczT0X0x\njw9yI4BTu67PoPfEMGZO3/2SkSLezZe9rPh/X7x2Bb85l1mgQr6LiQoeqYSv\naLWuiqTomJCAF0BHrcyGB7gQGhX/rBkslr34lhsyAG/QGdMXSrMCls/kEm0w\nwOU1hsuriNklHEcynHfIphAmK4MgutElWDQDRJqpVvmn5t5v36XLQw2xQDPJ\n35elB2iJkUx3iSgbIXHbqHh4v5nbJ5oHdS10fLwRCJwNdH3FSSsaKsPlySPM\n54upcN/UCz7KdWHgBAhPForFOg2j03+pD3ao7y/L9qveoT/5iHCU0k4F3z7Z\nhZANgN4oJj1KH27Eo+6bO9DFkN1yhcK+y5bYamG4PLRHMgZUgOPmQkpgYwWQ\nl+/P\r\n=QEQS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"69142cc0cba4c01464f2777b4bfc063a716cee2e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.33-renovate-non-major-69142cc0cba4c01464f2777b4bfc063a716cee2e_1610599481357_0.17854364469423167","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.33-renovate-non-major-2265afc01745a16aadb653bbcb775f16cb3739fc":{"name":"@balena/jellyfish-sync","version":"4.0.33-renovate-non-major-2265afc01745a16aadb653bbcb775f16cb3739fc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.33-renovate-non-major-2265afc01745a16aadb653bbcb775f16cb3739fc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a05a0433f2dbe2ca55379c2110cfedf5ddca0212","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.33-renovate-non-major-2265afc01745a16aadb653bbcb775f16cb3739fc.tgz","fileCount":19,"integrity":"sha512-/2nknkGg2SL1kk3buSAREs3O8VSEkDW7+wmlW6STdDCJILsIFQvH1yeb9WO8SFBzSXRpC6zb0GiOhq0VHco1zw==","signatures":[{"sig":"MEQCIF27+U2eiKWT9gqjBjbIkkeA/Kx7MaCYsznuwtK99s/zAiAMoCedlIg19zAl/FJ529AfxwNm6z4B9UEpcZCzC26Wmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/81ACRA9TVsSAnZWagAAOCcP/3oYhDC2V/6jH2STr0yC\nn56DUn2PE6UlDFzKP+shLsSO9zFHRMkRc2d/7gT86owOI1Noo9S/Jl2StaTl\nDxllPUtSs6gak29jvHl+Lwqh1SU6XhWT7PrH0+srYW1qxLkcnWpdRL9dN4dY\nV4JIAxkCEiUGTGmO1ralPNHYqcY8r35z3lICzyNrTt982t7q75lu2XlYPHLY\n5cOEka0u8bYWcge3aHVf5sITrimLeMUAeHG7O1hy/x7sQm7i48gOMVEBTf0r\nSb/rsaE8LRe9/+m7eJfIdDWE/0tEdv4mGAtT3NhBaA7WD6B4JFoE2fqGwna6\n36BQjlMdldvxpu80DYO4oG3Q5lcBbUVzks6CdGq8KgVPce7RpUCmhRflpKKq\nMT7DXaoT0yU50DGqlNV9leOVJ+US4LiiqG8thVaX1qsUfuah6S66Y8doHwKB\nbp+d6gMUzgsANVb0KzVHYgkWmb0VOO0wuzHktdD6VVMF63w0G6aKiGshL45E\nmxapNrvgMgZ7PBV5UowGFnfvZYH1ojaGLQE/PI5pLR7wv9HtXSS6y6VAGHM0\nigXMQ7ilguq8Xc6DZrd3yCzPY79uMFAMjpILFKmVR5oL0yp+k4fT/cvTWIyu\nL8HeC23tScuBp4A3QxKOvpHoRCxi/T/U8GhOkSKNsCB9KDDCH1UDt8Pzlrg1\n5Ra4\r\n=Guth\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2265afc01745a16aadb653bbcb775f16cb3739fc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.33-renovate-non-major-2265afc01745a16aadb653bbcb775f16cb3739fc_1610599744308_0.19163650398227428","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.33-lint-staged-add-readme-5e6ee7957ec0791afa7b7668c36d20517b10d350":{"name":"@balena/jellyfish-sync","version":"4.0.33-lint-staged-add-readme-5e6ee7957ec0791afa7b7668c36d20517b10d350","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.33-lint-staged-add-readme-5e6ee7957ec0791afa7b7668c36d20517b10d350","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aa0a076366a4075b6a15d67f1e0be5e32995ae7a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.33-lint-staged-add-readme-5e6ee7957ec0791afa7b7668c36d20517b10d350.tgz","fileCount":19,"integrity":"sha512-IS0x+tAyyZzxto1jSgA+gxgf4UlQ1GdfSrhPuJ4aBNH/G4qmTPqwrRjXJZjDr++cc3V1+KZ6U93xXQsFdRkiWA==","signatures":[{"sig":"MEQCIEcKxHXPnenJKBQPPQdhbzllKapR7PxDZgX22OpqHCzPAiBRkKakWmFGP0NLmS1XjUITsvXpuaEjQ0+rrXRr8UfKDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/83ICRA9TVsSAnZWagAAYrQP/1HF0srvKJKOCIAWw0aC\njQR8Oqxx7cT3sTM6fAHFA65JwGTwTk1ijVc7HX1Cj601aNXgr6k3uJpVsO3u\notaivEL3LP5SKVgKM0gYZqoV2T2Z475fcA09MLz+wIb0hCBmwxdi60AyMELd\nkSD3aPWrgDBMXtJArm3LPwFNPej2Bt9L/zRTrqyCaMRblm6nFy+P/4vYoEgG\nTEzpWZJGIkOPaG4kcZrbJpfV+MSYMOdqtrZBaPJrgTRoZt9wCpm7a3jJgFP9\nPTGsWNKk2Dz9f/qlQgPM/eI7DtENkSh6kNuz/qMPUZWRL+8wtQQqcTS81Opj\nvQkSp5d6O+DXNWiBHnOSECJvH0E6DFX7XTwIufBV80FhASQbYiDrKEtG01fi\nSM6Yi39DlJOBjv7mkYdfIImGhd3zwcce18U5D3ShaDRAxUqEVShUJQ3sZvEg\n6+fUpnc4qJwHB/hPM+uNdJZKJKp/x1mg2SUgw2jxrOUKmnsNm+CWTk7GGMRW\n8QVedkeNik4Dcoky8ia2n94ot+GdJkyBE7z1DRv0WKCi1XNK+QIfCBkPzwKA\nUDTZPKyLBhaWCQyLBjx5J65mLBLTdOntMV2ITF3uNP5vl4v19WK/deCSZHGM\n/aIVMN6hYYzrdA6FqtPbcnziCtDfTxs0ai0d3dOyrNyv+5H5XxlLJlrE3JPH\nyWFl\r\n=xwDC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5e6ee7957ec0791afa7b7668c36d20517b10d350","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.33-lint-staged-add-readme-5e6ee7957ec0791afa7b7668c36d20517b10d350_1610599880409_0.9659368590339652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.33":{"name":"@balena/jellyfish-sync","version":"4.0.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"839338237b41a2a816006ac76ef4f03a9e1f298a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.33.tgz","fileCount":19,"integrity":"sha512-68zAlK1quhNmal+Kf/F57oqMW+OcGYhS1f2dvlZq4dFc3eVEShueG2AQEld0KHcibClOo0mEte5Lp2x5JLt7Og==","signatures":[{"sig":"MEUCICIBvByq6l3fv5TRExt/LJLe7lIUpVyipi1v7kLreeKuAiEAqpmGKZ85c6G6ABCa4hp9evhM+hfB/sQh8ex9EhPedu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/84CCRA9TVsSAnZWagAAQ8wQAJqf/wYU23mpVd7crsmu\nzUyvH9U4cZBZxuy4XKYjzCM1Gm/3Jl/ASeHm4szSff0KkbCswQLrjbTDh0L2\n32r8JRRW2cv/fv6PfjkaRK6Z/BcIi0vud+gYrDRNg2JFWiyp2RbxtdCaAhCp\nhkq8jPFEUxs2Mbvb0nqCXSq+Clm9ZVOh1YQswcIAiUYLglBAKAVZc9h+GRkd\nt+S+m91w3lvN6KDEF0FeAN4iS7gri3UzCHw9d6H1B0euZKNfCaqZ3mOGJpoB\nUwsGwqk3eNrgoBfQT8rXOC/NO2Nu3HAIX1ORUljYDer1Elj3Dy/Hmw9B8d1c\n7w5fO5JruppZTzBqKQGaVO6Hb7sZknKpQ/yrb28lgB91PuLBpV7VRRgwFqPT\nf1rxvK8bGfXooWEaFaJlB9bNXVXPENmoHVctN+IWDIqxQrp7ibClNjed/2QE\nztxTN5EpMuU1cuiJdm64UCtaHhomdvVW9dtgrP6pC+HIOjwxYQ6ckd32/A1L\nO1Ugjcvg5YqBpcpvEkFixIEmi85d9qSWSvAkYN70cncBbgU7NeUQsFwJgJfC\nmuT+TTMoU095DI/uCUB55DvUz1HmGys2M2olkbJ9cPicZQSK1MakUN1db6nG\ny0FakZy9xerZyUn9Im/63dcKIUxW3oVAgM+plg9uyI7qB51JmMy4hVVgb2yY\npitn\r\n=KTmZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d9785c93851fada9ef112ace10682d88f6c135d6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.33_1610599937613_0.7548567482666009","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.34-lint-staged-add-readme-7af33ab403ec926dc92778580dd5211c3fc4630f":{"name":"@balena/jellyfish-sync","version":"4.0.34-lint-staged-add-readme-7af33ab403ec926dc92778580dd5211c3fc4630f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.34-lint-staged-add-readme-7af33ab403ec926dc92778580dd5211c3fc4630f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1d90e3c254f21db70d818b368561e87c86793eee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.34-lint-staged-add-readme-7af33ab403ec926dc92778580dd5211c3fc4630f.tgz","fileCount":19,"integrity":"sha512-tJkrkGr+Qi0VCO5fWBy1zAUmRuBOuah0E8+pYws11bGc9JqfMaKvG3vfQo8KuPC96s7UJ9OWBhsAEVuRVJvbbA==","signatures":[{"sig":"MEYCIQDl7vw6eNIYV0tspwsAX6A2IrYXadtvueZOXNn0znnI5gIhALeozitFq4zBTR4aBgBB3EnaYGTrfJlfy4b29Oxb4vfl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109183,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/89UCRA9TVsSAnZWagAAUi8P/imVAQYs+HUDl4yBa4Ae\nIdUozIAqsRl+CCUkHnqOzSSk+kX7Rw98KKObDH4ZHxcRActhXGi945/ZA09U\nLrCU54q5m6+MbLR3nHs7JVNOrKFQwv5fJE4N14XojV6+kKVzySt9Mv5Fwatf\n+ZR+mgIU90d8Wj8HaQ1RdapI+QnmqwAbRKfAvSDbvpQKINAfctRHmfCa/AdL\nyzQhyG7ZVPFkc0yMKsjsV3GHda6jYgpFVWGEx7wfB9mbp7CM4Ay4T6k5Rc8A\nxALNg/toTJ0uEYwDqKEq4aYPmMK2xTVGdqlI5dUjR0Q94+Pf7F67xY1xtMSz\n/zrsAWV7X/JbXuHFlhshsgfA/jk58keY6G3WbzRE+3doKRF4aYHAF96URvJq\ngBGNnBf0gg5Pngly27MMOOXXH4ZlDu//Y5YB/jn1Hyc0YTl2+rkcqT7RS7zV\n5iBh4Nnu3/XSQVTBuxPE3/fEqa8EGyBQ3bZWkYo/1myk+4EGw+xz6uMIyxLL\nIMK8fS47F6rhmYYmKSCsmgTzK8qCEnOE+aCE2mdvZpmMiqR+51EzSQnWGEDq\nAkFbY2FoK5HCOYY1hVKGeWWnGCyjVSaUmouXhwJ4PMRTb8ryTwi+NsmWwpz/\ncLL7g7Bj0RT7i8lVcCzexIMnUWDEMwbwDI1n0HxnkCQoxG0kdwewr6ysW5QX\nG+7S\r\n=aUWX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7af33ab403ec926dc92778580dd5211c3fc4630f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.5"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.34-lint-staged-add-readme-7af33ab403ec926dc92778580dd5211c3fc4630f_1610600276525_0.32699349489045004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.34":{"name":"@balena/jellyfish-sync","version":"4.0.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93ffc14113621cdd21e48471677ab39a44d5e286","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.34.tgz","fileCount":19,"integrity":"sha512-VxbFrRKWcnOwllvczpTBVEjy7ih1//0tIMenhH2Tsrl7jF3R51WL8FA1PA+e1FXGWsBFb539e2LcocTIvOE9+g==","signatures":[{"sig":"MEYCIQCKiknK6JP7MqWoKKox0jb11v0LiRElQIOsWl4Rw5dDhQIhAMfRES57MH213fRTfRtnPc2l3iTuTwf4S6HoMudcY8uf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109119,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/9C3CRA9TVsSAnZWagAARToP/0WQL4OTyruiQZQBvJLh\nP2f4HBXSkValDkLaD0GsQfUXcEiEN4gyZXWh4+04i4f6NsOtjGht8P6/Dq+h\nS6Vh9LcJIdAWwKbwOaEbCNwfLYark0VoX/HuzFex58r294oVZAkP8ZnCZbXf\nIMKM74NeGu9z5uBjBA4/1yH864p0LqQ/Xwvqv57pXx7OzHqc8AC1a8CEej+k\ng/S7zT1CEnth57aXy5f0dzLnwRqx0hOr8ROLSf0FW8rmCT1fST7erglc5IGt\n7LmaTMLjaHZIrffBkOwMiLbl+edBmFEpCzb6tdgANnrQSO6Yo24SD+x2S5rR\njHTpLhYLV0L6ZoAlCExTZYdg2VVg7ZxAg+XaNZEDdJQg81vXMZkPwF4aSNMI\n4qL1XuCYSZqsD42g+fiFxRZqx5ueN9Y6lXEqgNoqt8F5IHXcEBTYq+K0UMpU\nhgWUma+iV52aaDSTXZvtjt9xbCNNZ69JBNC8H7DxElvG4Zzd/9bU6d1gg70f\nzIaE0+ZK9MDvoZ7o8AiKO+wy6oRyjwqGvjPmqjRNlwLQqhs7edv+XaIwB7k+\nMAB/Az3h7YqQBsRXAU+R5gFtoFVf0nlD21aZBBqR2OTLoYVSzv9B5qTGVvIa\nh4Ro1lP4Lv/ZoycYgMQp9Qms/deb5Q2Pe4bmSqOZvN2R29RcjJKvS84uMHTG\numdj\r\n=0S8R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ce3e0e09129ab2180bdeb35c37c732f19c016755","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.5"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.34_1610600631164_0.0650269911089203","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.35-renovate-non-major-28e5e17418248f0a88a54c0829c9138333d426a1":{"name":"@balena/jellyfish-sync","version":"4.0.35-renovate-non-major-28e5e17418248f0a88a54c0829c9138333d426a1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.35-renovate-non-major-28e5e17418248f0a88a54c0829c9138333d426a1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"86497bd41cc632d4823e1e8d180c86e04791a55a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.35-renovate-non-major-28e5e17418248f0a88a54c0829c9138333d426a1.tgz","fileCount":19,"integrity":"sha512-kaSxj23Pf3m9wqRw+uCWQVOrBQM0Of0rY3WpVujJh+R8zsM5HFJMLnrmCojXBlkO2XBtLSlh7cs93yMcpx708A==","signatures":[{"sig":"MEYCIQCaVka0uQTcKNo9njcbKVYHpc2mykxdBdsF3ZO49OQb4wIhAMNiG28gmuGmioSq3RIYDAjxQJOMLigK9nXe5KgPM4lO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/+gvCRA9TVsSAnZWagAAAw8P/3F+lUSqf/CiwuktNz27\nRx2vNsRQGJhaCf6AoBA6Cs/bwEpKGjUqIRpBWfwMswbtlZwbvKPWmawdKFF9\nDBE4LnQNendjA2T5n/KR1vF2Ct2ZmrI5l2t2cnxWvQmQUrMypZO4jvHv1R5W\nLMMTWkKEB8JdFFDrxdFQ8Te4OiJGPIin3ZDoO48dOA9tNCUM+HtiAD1/qVNf\npGjRDf9uHHqp2X+AZi177wmnb3UOzYMrTpr+sU24/P9uhDJaJuC0Zjfo9US3\niYGJMvjdkM0YIM8NzCT/XbBaCr2RcJy2vM+3qRimVKeFGzfn4xyK6rrQFcoz\niV80VlMhk1iVS3cAsGnJlBOPu1L6cuRQam86b8e9THuGwLK4k/PXCBdrFMWK\nNPU7sj4+aPgZ2w/5Jczb/qW6V+kw48DRv1fRVUcV9EWDtBKKG0OrX3LEggHz\n01N7vQ3O+wXwL3An0+ESmX0UKjd99jNPEi1NeAzFvrHjUZv9SpKWMBX1Dnjg\nKfR2dl+hCUB1n19gOe4LMBmjrSf9tDSehM7/VGH2Ew/+th+ACG5c5XQIbGKK\nlUgAOQFsJ+/peEMxOrEkx7BFdY6he4HWtGHJ5nnudIrBMZXnog41CD+RXaJF\nqVINzmdFwZpqGkfEgVciHopTap5wkX22v3yioDjnIk+xSrqTqETjWZNymrQA\nnL2G\r\n=7XGU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"28e5e17418248f0a88a54c0829c9138333d426a1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.35-renovate-non-major-28e5e17418248f0a88a54c0829c9138333d426a1_1610606639317_0.2918383263919393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.35":{"name":"@balena/jellyfish-sync","version":"4.0.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"311ba1af334d60d1012fe69990b2cb9c06c2dadf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.35.tgz","fileCount":19,"integrity":"sha512-h2QpPpe7uHKG+TmJHeGPLH5E1qemSrgitA3SiDfvpLFBoPflcFfMdmUqgJrcH+4yVjjJ1unPOZyfn3N/7VKAmw==","signatures":[{"sig":"MEUCIQDbs1kwPYxPvuPVA5Frzf0WAevFIUs6uB/2pfNLmMSjNQIgGMoIoS0jvc/Ko5JujyDLGgUF8qX6TUJlm+wJOAsqVDo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf/+jXCRA9TVsSAnZWagAAk6EP/0ybcvJXqStq7jAkpxRk\nxbuP71lfUeAcyVIuqoBfsS9xGmZpYm6gETHyPHg2ResEfjeEWD5VFI+fFp3g\n9wcKtZDhmweNK3W1PLD9HHhSk+yx0xGrV3qk4tFHKGCo4s4Y4ZJqoM2DDBCP\nkLm/b0qX+WOFLQRBKBgqn5r8fFqzHBIAnzt4kwwkCu5kqqzndWggC33hhwHV\n0maw2U1jEjSSLXP6ry5Cmm4qTte7UoUMuIl6+w6j8ygHOjGrnMfcj02ckjh3\nHSGjb19XOlDvWXelX5+ThYUCjJhKc4+O7aLhbCEgKzYjlXw5T2NFNRq9dMnA\njLjP7bVk11R7p5kgIfMKawD6Z2dE07B/Psgyd7Tsm3vNFFqudvUKsh/LDVVh\nensBEky6WOwioqfF9ib+T0tY64eVKGNsGgOUQmZstuOi5jI3CuYtIpaJXabv\nJsh5w6xzS8XGFua9sB2YrHGC82wsG2fak5hp2MYur+R2ekibWUlG3jgZIYiO\n9ORjNpf+HWYmWQbnMgV2GxcSFINz51u+25ThRpsP3LuMiWUDdt5XrEwaoOCK\ntB082jYUhep81wTiw2AHqHwV3N26HR8Wt7PvoT7r/xkMWAPhn378Kf5bB4ec\n3R37SoHteLmpkAj457I7SGtgsSLPlBDwOfHnK+G4FX4//g8HCtZ1SJhcPDGn\nZBY6\r\n=ciwb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3d3f412aa606f9376461e6b74c69b1de48e1e648","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.6"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.35_1610606807401_0.9528449265538312","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.36-renovate-non-major-2eeac1af5aab5833bab88d299aa6084c2589a419":{"name":"@balena/jellyfish-sync","version":"4.0.36-renovate-non-major-2eeac1af5aab5833bab88d299aa6084c2589a419","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.36-renovate-non-major-2eeac1af5aab5833bab88d299aa6084c2589a419","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca527f21c523c15d12fcfd149a9e4cba53989ce5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.36-renovate-non-major-2eeac1af5aab5833bab88d299aa6084c2589a419.tgz","fileCount":19,"integrity":"sha512-BDeUUiaGKnC230zRoTucdpcjBJ3d12eS4fOqoFOMx7SRHsGpT8nhlqKJxwuSkqhUaWOHZCJzfiAeaEUe9lFzNg==","signatures":[{"sig":"MEYCIQCrMFSvX70/Uog94YWVwXx7HHz7LvJc3G0AeJzxp3+pegIhAJFQXQbdGA63AcNliZ+iN1HbMOk1RAAGa8nCoVR8sAq7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109354,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAICCCRA9TVsSAnZWagAAY/gP/1qleObmxY1MUN9fxN8+\nF+DgHvuf+T1+P9qxlSGrEdEO7jHcfuKywUY9nqdUs9heyIHmd382JfHtu/ps\n4r7yV+msWC6bbqz187BmeZBUiLreA7Ax9Z0/As8pQ13ivo+TeFlTl4lLQkDU\nxPSgeIYx9xn6GhJzAMcH6XNE4tZqsxR29N23xvPgv3S+63Lcwrp9MTyvGcM2\nhm/1zDRFXPhUgcjDCjOb2XS3BR9eMsOWyi62MVxZWicCXYujiiYBW/liBdpj\n/BqiL9Av4wBr7EiBf0hdnQthiUnPwM71MAnsrekijj6AOPaGWOsFETjhNGQY\n0Aw5OdYSl+2qPsO+ARYJAO2Z/qwNuZiHXEN2KUoEhnd2rcEGHlz0HXYNoasx\nzLwFMDDKqD1T28tTKKfVH2QKQLbDl++9n3phML2HBmRWfjEBzAlfeNFgn6j7\nr8sGESii8QpimRlJDF7o7VKd1lcKiaGg1XfvVYJUP2CjmStBgGktYQ5isqwO\nnf/q2aR0DLT08XekBVhU3ay2CKkzFz/Y5f5Zm52GWMjfDskcqsp9lQz2yvM9\nkq1VK9zTSvWLhUoechu3VFvWVBv2QttUiEVZgfI/LNtpO+//YZgzVdUCU7Fq\n/gn125tIAcayY0i18NSFS7I41JUfQCEF/m3I3BmkSfuqGL/si70Gvro3ouo4\n1AZT\r\n=YlYu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2eeac1af5aab5833bab88d299aa6084c2589a419","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.36-renovate-non-major-2eeac1af5aab5833bab88d299aa6084c2589a419_1610645633637_0.5152980428851974","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.36":{"name":"@balena/jellyfish-sync","version":"4.0.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"591b858a0fb7d9cf1cce38ed5ca9284a09d986e0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.36.tgz","fileCount":19,"integrity":"sha512-+SvEbj087EW6K8oaHXxxNvenUSB2Tw3PoNkRX/84E4uDYrKn4pa7PY4TLxiHojAQj6loRJaXqLOxaQ/c5NbS8w==","signatures":[{"sig":"MEUCIQDwAIFs0h5fOqGuQ+smMosBLZwTAtt7x4Yo9+xzLW3zngIgeC1kdT4Jc9QzsHeoS7TrGBd43FLY/4S1J1//4PaLfF0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAIFCCRA9TVsSAnZWagAAyH8P/3rgjXwdGkbYlIXJOcyX\now6L+L5D/d4Y7JUcmq/Pn3xma+v0EPdsDgu/WqRwA46o/RYYXLGMZSPIk29+\nKTUGDDl6UKakjXOWz51P7QwhkrusXEDUfsrK3flRz+acqoMjjc+90gjFdCMU\n8SPeutgJGjCrgQR4ilmV+8DCqUxzphZhVVJ6hlWMNXbLIg6pC7rmNa37rpxI\npNHHgn1ZiIsZ5qe0NSqVTdDZgd0HDnZVJ92AYFksCK6sHL6m/j2esZbIX/Rp\nj6RvRDVd88RmCfU3OXiz8idvdqH30k+IEQQwhZ1noLIzcp5U/mVkLs8IuCdL\nhUX1p3LDPtEgMHAfuJYJjDok/5yydmskD57OLqLErhdkI0RlG5jK1pBsS0BW\nzV8J7zdaBA86IctMg/jtNkQ+Sz/HS0LkRndyKATePA6+3INw0TE0hhSfNaKs\nP+YLaP71Iq4m87jGTXUnIPaOmGFJwT6RZWTemcfjFu+FksxGZF3wrpUzfe1L\nBQoCI6ki5FegmszefUYN93Ngwit68pLcGaBp9Q3FSIPDQlLSPLOkF+/rHVxO\nDUwiFW7egC8D/G9eI1mkz2LPBG9ywuBL0JQWCeVtMkFENPnyf6phQUHgN11Y\nLycyDF7sTf8KdUcmibsDplrUx0LhMSHNpVtGGoSwXpP8gqtWOY9Vn0MmK7nm\nFqSI\r\n=vrdV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"57fa1ac5919d0d1ae7b182af938a2fb9cd07c45a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.7"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.36_1610645825804_0.6380188411320802","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.37-renovate-non-major-5b79fcef25c7df3a6b1746606b2cba21375f4123":{"name":"@balena/jellyfish-sync","version":"4.0.37-renovate-non-major-5b79fcef25c7df3a6b1746606b2cba21375f4123","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.37-renovate-non-major-5b79fcef25c7df3a6b1746606b2cba21375f4123","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ed0666c87d44b745ff94597ca22239efe196977","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.37-renovate-non-major-5b79fcef25c7df3a6b1746606b2cba21375f4123.tgz","fileCount":19,"integrity":"sha512-ZwhnrOfzQPb0sOI1XVgJqnZbNziiZlp0ttTOc9KpUQBaj/32xV59FG4aJu132RXAUA8akRkCk4EiwNtj8QkpeQ==","signatures":[{"sig":"MEUCIGW/DrTvRUZYo+xhbDjNz/fW2eKBzm740FmHSwI4+5c7AiEAo2d18IjwRFX3r2o4LUUdIpkuQBP0IrPNIXglZqjGg+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAJchCRA9TVsSAnZWagAAXywP/RO6ZS+NMQ84mpOFHvYT\nRQU+hJCNAIAqIqUa3hm3Fe5Wq4nxeR7rFDOEWNRzXzDf/ND0AOIr7/VCyvuo\nQAoiyTI9vZ4iraNuq7MtkSlcRLzYorP7G56wrcbz+Ny+11snFt+FSFlNeUuQ\nL5WgjwwyZaP9wuJ7aujWIwExc43rYL7eLLxOM5yhcSx6r9V2B7uGwy30MDsi\nnIWi/uaZq+5ynEDi0ck6fI9L1a4acp+QtGPwh7UNbITkRbZ94rg/OQQ3g8pz\nzIi21JZrAaq4x/iTa/O5bwiWzmOd/RZjXk+JSKfXl5X/iOKw2E+HggaA+Jqi\nL30EHKl01ZGGEWMJi7hSpU8/OUiXKHlns3idl9Rd0BxRYx3NPf6kZM3D27Li\nGPEfiL/Dbvegi1TInq/f+qZ98S3daAXVkKgNhEO4U1K5FkeSjlOPWMgjVNkr\np7e3AM8pHRbbpCj/t181nHeLMEdYyxIwNX8ZADRXLnnJ7mecZXmT3hE4hxYb\n7XGgR6x10JIAZA8ZoinIQksH+mdWGHWeNgfVfZVK6NRjdgmiCAfXJtOzSHlm\nLCvJA910VTGnw8o7z5/pQmqQ9kfBEMdmJVv7DyCh5CxHrj4LpsBndjMxyHs6\nsbK/kOJXiQCgaW1bUkXqtmhFScQ2ScNTHsJ9n8lCyW43GLnG87NcV/9bfERz\nGcQm\r\n=IDfM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5b79fcef25c7df3a6b1746606b2cba21375f4123","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.37-renovate-non-major-5b79fcef25c7df3a6b1746606b2cba21375f4123_1610651424716_0.9068165224281757","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.37":{"name":"@balena/jellyfish-sync","version":"4.0.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e4f5af7d12930a7bbcae4a666538d4a7e68a6a69","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.37.tgz","fileCount":19,"integrity":"sha512-PZ2AgecVs+FPuTac11REkTByLUNA8BXJDq5LqSZcL4zpXLIK2QCrLA7raZWQxh6RKJP8PZVzZxo3UOxPNe0t/w==","signatures":[{"sig":"MEQCIH5JZV8tGeh5XquAsCEUebPSRZqfXnn2xwj1Ti3ifCPyAiAQeCELV5YUzyiJk713CrTpPiM9tpjB4jhkTUnl7fZa1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAJfZCRA9TVsSAnZWagAAFewQAJFAPI/LLWPWXSq82Edl\nBnwsJo0iQ26ktWjvXxX/dZ3kCk7DEZCebu7n9ac6GVZRoHM6ua4J5w9vpPD5\n6VBoZt/s0SoX4G3us3O3IaWa+5DLlbQ7YJ2MguWqPWla5JnJNAry0Si0kjzj\n+amolgkexBj3QQ504se5jj0HLsbaFl2hnAFKQDPDqa4uQkU+C5xd4i16WFGh\nS5avefbitGIqSjXD1IhsTDPCgs+oNvV6ppL8QCEJ+58EL0llJ7kdpDmrgWrc\nNN6MPmBXBht3hj7yosCc6ISImGE6MU06NADruLOZoWKUb4iz4awZlB5iyTn1\nTCefNTD98EL/33N5A8NMh7Gk7wULzq0H4N1FJ/p06YuIHiLi7GVCKd/dX1k1\nyBx9kVJIhFSLVAro6pxaSxlskCFHQp2bH1V+E9VMTi98Sfhg8OhmbywAk/c1\nQgH4p6ZmLkenVI5E3KAiWNsxlIl3XFLRpRaLY63cN9LEYNkQFDEklOM8CIUf\nLtpAWaIIESIh2fxMwRwXJt0d1bnRk+u2mC3mX93ZzROqztDxGal7RbvUILtL\noLvID37nA/WLLacBRnoLBGal/Qndg790l8/OHcVArDMbI/48jH0vLF9MCCt/\n1DC+/p1XWWYb61yoSc8imFG4VZ6PlfJspgA4GjdKgQPDWSKnPIWtgVKhvGB4\nOWUK\r\n=gwrb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"30d0d9b718895ff25e8491465a4c2d041d5da3f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.8"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.4","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.37_1610651609017_0.7656919745157642","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.38-renovate-non-major-f7c13fd639fd9e36c6477c00d7795b1eabf1e63a":{"name":"@balena/jellyfish-sync","version":"4.0.38-renovate-non-major-f7c13fd639fd9e36c6477c00d7795b1eabf1e63a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.38-renovate-non-major-f7c13fd639fd9e36c6477c00d7795b1eabf1e63a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"47a53a7ee7a902d7d6ebfe3eff90cc8f053989b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.38-renovate-non-major-f7c13fd639fd9e36c6477c00d7795b1eabf1e63a.tgz","fileCount":19,"integrity":"sha512-q7Ay7kToziKSgpStcWV56Qo4NkX/IdzJFZduimByRU06V2y08ct1dBAntOyEZWV2MMFBw4ZZ2/6sNiBS6pK/EQ==","signatures":[{"sig":"MEUCIDSiI/hNXqGDyIPoCx2SFEF3YHVIzmxkhFj/MEj2i2ktAiEAqv6/6QFyxImMkHLc4iytUu35lfZW3wCbFRo86QJdUvI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109530,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAOFxCRA9TVsSAnZWagAAAJgP/j/JzLOtMd2+fEgeFObC\n1/7mvvxZXo6i9hOGUUguJXxf56W4fvk0X2shh2khmPZpy6nNTx+ucgSQbLSU\nxksgBB9Yl0c+0m/nFpPxOe+7N/7VipG2vMB/HqsLUGfW/ZDyhYg07kkoXY8M\ntW1nKN+H8lF2sjnXdRxlMfmUS4AGt1Dk9/YPqSWZlVNhjKEJZ9/fwAtXh/lo\ncN4ZIyYpH4kGM74m5vA11vTefr1LMU4z1YxiwuJHAlDJGlwE+GjdWpC6lIbK\nScnA3K7PsZ+LufDZMhXCOiuzhBWo79GJrtw/+eSsAsh8TUeozjI8Mr+ANMca\nCjJ7+74S7uXvsqb38H2zoH7jyYgkDfN4zNUrMNy4fkVWQlIFBTheXaoQga8n\nuf89W+vgzrK7zzGJrpk4eGSNlnnBLcO0oj3UvIAv3FaX1HLRsL/QuT7QYZhd\n9un+zYXqx2Fgsu++E39mwqN9Vu+HUtMbEr6hWbYrLSDsjSHVHaNXgH6A1o07\nqB80zOwgbYQ/KpIxRaB/ASscdIggltma//jYNNWN/RLVNjI6u82uFjXKLWjv\nQqiZvw1tQyaqZZd7fp2Zw2CLLv1ZxWhbdc/x5aoUUILaFDEnXJ07Jm3/pdZO\nItFAgGiFVDAYEc96CYAOe5kZVf5XRb79Dx0wRCiCdbsLv3zthLRkTWGIzHWa\nnne7\r\n=pswr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f7c13fd639fd9e36c6477c00d7795b1eabf1e63a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.38-renovate-non-major-f7c13fd639fd9e36c6477c00d7795b1eabf1e63a_1610670449365_0.843411533009091","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.38":{"name":"@balena/jellyfish-sync","version":"4.0.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7295120bc1ef9fca871ec151804994b3133fc3b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.38.tgz","fileCount":19,"integrity":"sha512-fFRxkpin6hhhLaAZVew4HgChK/CNt4duTsMsAJqpFIvR4Xt2a2fSxsKfk07psYysvP/AFX4KFjCa62dFP8hNog==","signatures":[{"sig":"MEUCIQDN1G/hia3ihbgqahNDAQkIIHUSu5WkX6lZbL9re+t+jgIgWiDalBnO4H4jCNA5/FxfGq0RMfeBqFxMcUrdEdybdfA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAOIzCRA9TVsSAnZWagAAmMoP/3kvaJ1go1w4lBB+OYSB\n1/ksQI7Yj/w11SSMULbOYThnOgW0agf4mHWrkw/Dt7iKfVGMRDutN60SZ5iw\nVa4sllIOae/ydFF8o2Ax/l3k68/Cco4DGvDavJZ8ryv/vmrbvOZ3Hw57II+v\nCtQRRbCThNt6HANV976I7evPZWQ6gWjuALtFCRRpObaOnBnD8TLvDj4lSkGa\nh8cjiBeYSe11mM6PjkyVsYTTz9yVszjQ8Ud8yJ/Ou0zzP6bOaU3sfnLpnrlu\nl7Divi8TEnL46oSOjkFQ2DDZnD3iAZlOVpDm205DTpemOyTmdIUe5QyyVTf+\n4oDVvm1Rd9M8fIQlXPJ0whA+rYot5UGzRQ8Bl5Ka+/VWWmT8BV1O5eWwmXa3\nIIVvtJtRwmcn9JNl64sribL1H/Gdvxsw2/D97Uvbp66n+0+9XC+PG/jSDOfz\n2uwnt7991EMQkZ8F4ngBjC4GGEUqGt8NqufRtlzmEtTEPjxiptD/11YCuuEh\nMDVSeYK2VH0IgW9ypEg38uiS/Jxr9Cn5sI/VXHvdneQFTLCLgwSfw/fE0oa/\nMaG3oi7rn3xb8m6QcHw+jF2AR8KB1Qq6nA+Z96xIN18UJmOcLQCLEOx8WWcH\nRzBgRlys3hdyaZ8N0hHufUPKYWNYjFAQqT8hVTFVZiZvp96bBPk7QhkoaJBd\n3FYe\r\n=wY7F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"02c1d98c22a9b09ed7d8e5a24f01c04e01eb7478","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.10"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.38_1610670643378_0.28275694595112943","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.39-renovate-non-major-cdea7b1d07b0e016a7f81834397e82a15c92aa1d":{"name":"@balena/jellyfish-sync","version":"4.0.39-renovate-non-major-cdea7b1d07b0e016a7f81834397e82a15c92aa1d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.39-renovate-non-major-cdea7b1d07b0e016a7f81834397e82a15c92aa1d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a6c75863580dda95899d2236f53718c6c7d65c48","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.39-renovate-non-major-cdea7b1d07b0e016a7f81834397e82a15c92aa1d.tgz","fileCount":19,"integrity":"sha512-VZnj8NkegCAwdPy98j2hB4rSA1KiqIlp5BzicT3YYwRcXfn2ePRdx2fJYm/mnyUWLJsgT37KnUoRF9WrJtj61g==","signatures":[{"sig":"MEUCIE55gXAO4d6a6HdBb8hGqWEtCHIr9K308PNZt0VUjoiUAiEAhyGZaCW5fmDY0oUaypHaWIWccrcimBJLb6AYA9+cM3g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAQjgCRA9TVsSAnZWagAA8vcP/iLlU52NoqMhoNQKbwlb\natNYYi3r/O5rBdM15dHsumVYmLkifgz5Pih4QY5UAvIHSbl2ueaTQT7F5v5R\n/+tfHsPYMH/X/nJVK6Mh2rIdbS87XEIHTxI82yxS2cZG1lOuEqCyBURMM+Dh\nL1DViWWO7aNPchl3U5a1cPZnLquEkvLDAJ5NDJ3eKK2OD6+Of3BJHiyFZTAV\nyGbh244bTvrYN5wPANvDGWfcFstJ64IlEV3tLbtWfmQIJdEbSgUe/hLYplWu\nflOg6L9uj7vqJhtWM8aXlNcBsmVTKi8dhqInXVDyzcJF4O3+w5RJE4f13++0\nAjRpSjD7Cf6EqCq8OvKOi1z2hVxgqYUB7VQPExW4cw59cUrwEf+/6KVB3CxN\nqHlgkfblCOJcvnBDu2Rn1UjzAFyTLA+FCduAisPhuHJYLWpc3W814aCae3La\nlen3yZ5t2g9b0xe0qq1fG8VHe7Tppo7BxXjgdDH6jNvrWefPhy+a8gpZOYn+\nZRYqCtMmyoud/Ue2LF6+QZxowXThS82qJIY8hlhQk0Mm6NRUAl1Di9jjOy2I\nVphnlGAcEFHOrIax5NAUlTwNwS6qJCvl6wDpr6JVZQvkuLoEudu6mdBS0e0K\n9xjP6VM7iM7R4yjNXF0JPg3d6Afv+UXX/GKG2NPoUsnlSHxDHhQAae2ee21w\nfTe1\r\n=P9Vz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cdea7b1d07b0e016a7f81834397e82a15c92aa1d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.39-renovate-non-major-cdea7b1d07b0e016a7f81834397e82a15c92aa1d_1610680543807_0.8193317043322275","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.39":{"name":"@balena/jellyfish-sync","version":"4.0.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f6b7b9d6ad8d13f5a7cd674c3e02da5d194ac09d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.39.tgz","fileCount":19,"integrity":"sha512-xBmuDDi8BCnDuDkAbljgdKTnrZe5fq+0P6xuAcDeiafkfUB7CvfFaKC3IjPrmW00EOMru1y1ubNLwOPim7Vm0w==","signatures":[{"sig":"MEQCIH4kNdgo9Q869asn1okWakRyHdvt1L1qnTV4JYbTe3b0AiAX4INEezDUDoz4SG1GYPA0T/jQzxlFMbMbdhgTdPGeKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAQmmCRA9TVsSAnZWagAAbgMP/iee4cKjf5cFfBDsFdjS\n3IpkRJhHLuG7gzL+EAOwCxb+xve7eLZWXZKbuSBuRbiM1P26jy9vJef83cwj\n7C+dbk+rrB1/cYBQPQJYX9+GIZgqWiaQm+PV7/MmpXDkBXGcZdN1QVqfKIUL\nOOz2gGztcX/FPN8Ju8QHSlv+kSL4dYvYjocQwMtjs12MYJkrIqHICXTZ4UgL\nh6sBpiyllTri+nAcT0tVnyUYj6H3QRtnHbgYL4RiE5DoozKsVIYCFnAinga9\nlADHkqB+pVfEySGyKNtWuSkKNTy0qHejVU48hUWgVuALbdddC60ZcnZIJaI9\nhhOwafWCgz2LSpdNNlS4ZpLhkPzkGly+XlP5ommClpEDCJ/KUX8D3l0V3TjV\nPcnlvKOCEQthJksFLTeuyQ5cMymV2ctC8JoxSoYyNg7er0GY0yJYJnHX3ZEp\npCYZfhwTTXwZy8JqIV68ImYwIhbMY4idnIqQ9Y8ZDpqitiwkiw0GkQLw7QiO\nrUzjgbq3JfpVP7szsJX/12igTMpQkSM5U73J+nUkFH9D6p4lf55aQ/YTxUGC\nxrtxOh+jhmtzXPYTLhDTNQhZGr0W9BUrpawktcQg18ivdQT8dW4WAPRmAREN\nKwYfJovNQCyI4c5Xx7EhzqvBq/FBXR7Q+NjB5k1qUWe+2w1SxHV0z+eHT1JL\nhiIp\r\n=Bj5q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a90200632e794043043431b3b81107984f3fec09","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.49","@balena/jellyfish-metrics":"^0.1.11"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.17.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.39_1610680741497_0.4674398012928711","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.40-renovate-non-major-abe8ed779767640abc5b52d00fadac28c9336760":{"name":"@balena/jellyfish-sync","version":"4.0.40-renovate-non-major-abe8ed779767640abc5b52d00fadac28c9336760","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.40-renovate-non-major-abe8ed779767640abc5b52d00fadac28c9336760","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c2f39cdf82d1625e02ca30880de74c0f69f326e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.40-renovate-non-major-abe8ed779767640abc5b52d00fadac28c9336760.tgz","fileCount":19,"integrity":"sha512-doA1KazLo0YkqH/bMzJv9LXqGKooqmY+d+R8Pl/nBqAWeOR0Lv7w0jef9akeXQQeD76r3tQXG+MU2gXTgJkpaw==","signatures":[{"sig":"MEUCIEnryMC/OLobIxjmmySv/hL2X0CGg5+dxLMm1l/uf3g9AiEAnhMblFjYMEy/CV4VpfjWG+gau5qD2OaL1wegjFeWB/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAjH5CRA9TVsSAnZWagAAaw8P/2DVF++E5sQgDBbKnOgj\nsxEqD1wE/xK5Q6yMY3ohLZM2iigk/8TA4CJHiKs0b2RuIv2WrVfo52armLWK\nHXdZ6oqMgd3i3ThzkZ51EoO8qgMhStMi17GIdGHo1f7xG/hNKxdhTo3FPord\nrtIWhXucIiTsYfD5HKHT785lLK9UuFlXbEDh/15UGWB3fBsi34irOf69cY3I\n9/7Z0JOoUeGhqf5zj4SoyX7+T43g9eN1dovcVjaOSue3VgqLTR7TZofKZ3j8\nru6OrX9E43oxmEiLWDXiL3Bzv7oJFt+tUOy4t6j2nD7DbgCZsMdsTwOH9obN\nQtMZNFkgBia0jIf4Uty7WzHws7grPBBOy2Sby1QViz86cmdkXU/LGcrJ2qz8\nfYP+7cI04GzLmMSWPSi6kepHn1aJJmGWKu1X9WdERBLCVKrrJgftv/hoKDTd\nyEQWVx8HfBvcPlSW+5DAUndzV3qzDBsede1g0iiqJ2TOOaPsxpDLS2RcyBM6\nV6JKHxlSFM/9h0aee6qwhiUQBWZjamIxYETc0v54h3YCP2PEAcpDXrBnUfNb\nQvIxoN4RqMrhOBVjOHSW/9FnxmgNJJ1DxiSBwqv5g2pDhYkM4U7Cmr5wnYA8\ncd6MXbXasbCiuRwoPC6GjXx9kqSWihzlgbPrmmmnRyiwZ1+c+x/aOOEEHx02\nJEHL\r\n=8Nhr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"abe8ed779767640abc5b52d00fadac28c9336760","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.50","@balena/jellyfish-metrics":"^0.1.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.40-renovate-non-major-abe8ed779767640abc5b52d00fadac28c9336760_1610756600477_0.5543757476316873","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.40":{"name":"@balena/jellyfish-sync","version":"4.0.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae5c4f5c06e11a4421ada9d63b53d392ad5b0d5b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.40.tgz","fileCount":19,"integrity":"sha512-XV1uiqyISo9DBzyphMtt5Y3SGo475KIkXKkmokpAFhXfCd0QE+xApOCgI19W3c8O65N6dDLaMCCx3hdJXVMlLw==","signatures":[{"sig":"MEUCIB3cXGXerdNzjSiBwy937dLJ2rolyoeSmras33kl3ww4AiEA3zxmoguxUvwjN5JIrlqqHHpTiLBsavZaJNJ0KVnpZYA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgAjK1CRA9TVsSAnZWagAAVZMP/3Fuv5QN75QMXsWW8bSG\nSUqdyk1CEDRg9zZSHDNJQBhUwYVjavh2Op2WThjm4Pfhvyi9qaff0wnyuCC6\nIDH6y0a0yARkgYf5opTmAXMIvgm3sLbrdraOnTG2p16bZ6UCTVhB0MiiWNxW\nIfC3eA6Q2Yh1i/u3+K/L54qitDp92CRVpyEKN+13afGsNgYTnX7S7S6ZbXr0\nwZ+OujOI1yUSVYQ1EiVmDiIcj4tSjiH9WuOe7vX3iWPtd5rIh5dPl+wNJj4d\nBtftu9S0eyL2XxHTu0MBhOfb3EEStKbZ2DOIuFfM9R35wmYwC3Aprh+auTWm\nRgZgJaBh0M4aqZlHvmJpZxbTyajAkDOnCoVVn1rpJj5NeeTGpyViHcJFfNiP\nYMBMjkxRO9zB7a81oW3DUNqadFvb1zN7NCffVfI9sbJR1L6rD4tMNoKtwOE5\n+h9D6yuTbSF9Vm5VLsZXSuuJIr7zmKTpUS/+R/fhj2jQCOkItqdKJs7Iy52N\nhdnTEpDOndWtcJROh3ttUPaehGy/2iyAnxN5GsSbVyV6qSWRdn8am+EnN0bQ\nabg4JkuizHg0yKhNS+PCxTSYu7vDCy0LgOATw3yVAHfHsVjgwTwwkBr82Jma\nDnoDch4UwyJSNeIj54GnHhRtwnVy2mvQNwQYZumy3bLozQk6B3sGvd+j8q+W\nV7ON\r\n=h9/o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bef861d62c51db0794afdf84221ded338c974361","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.50","@balena/jellyfish-metrics":"^0.1.12"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.5","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.40_1610756789020_0.6743249092077237","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.41-renovate-non-major-ab09e6d7f41845fc8f195e2f2d80907d32b4e64a":{"name":"@balena/jellyfish-sync","version":"4.0.41-renovate-non-major-ab09e6d7f41845fc8f195e2f2d80907d32b4e64a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.41-renovate-non-major-ab09e6d7f41845fc8f195e2f2d80907d32b4e64a","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6656e9f20a2adab1112de76f461b8c35be5b781e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.41-renovate-non-major-ab09e6d7f41845fc8f195e2f2d80907d32b4e64a.tgz","fileCount":19,"integrity":"sha512-+jL4Rab17eh0E4SJ7eg9TuW4l+P2kGafsV5lak0HsFNmmxBre5KL8Ds+KORuOd/riAqKYLd/esN2yaCro+NZKQ==","signatures":[{"sig":"MEUCIQCwzIKo+1ZSDfu+exoBVevmBGnGyrRtxtWaxCLN/pUrnwIgNGw9pdAbj+L6MEfaGuCoAkT4wort7aNWxnuTmBxOfaw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBDCwCRA9TVsSAnZWagAAYCMP/R6ojX6yNabtY4YYkN6S\nTCeoNuApdrzPSTEhSzI85BHd83C6YAZOSnRo3G/xkM40wVbxHXfD3Qf2y9T3\n2p0imekTS9lK4KcnH8qc8va1gAkvLzHCEi1kdA/4X2dtCP+frivr9gy2MG0V\nbFys+xjIKYKgD0mw0tZuZFMhD7GsxdOdTxUZYW8zPnE2sylXCTWl0KnMCKDR\nFEyus2wIyP9xtfivKKChZsyq36cmkiLzRJfbfZHfz0aHhCDEwKiFVUWo8JiC\nke9QjFEm0P1js/xce6suCc/z7+jIHPsRarIMOolBT7cF16DU/b6Pcdd9bQsU\n1XyTfVvUyYGQrds3y4CJ3/HpIKM/DRzXSy7wU0+ovJ9tyIrW/QOBWG10Gu95\nyrmbYZ1OwNNefvyIfd7CQ8ho4Ki0VdSvlaihfdwolN1BBBZEThFIbUxnN80x\nBq76hWKLwTW/OJx3FK4IcLKibTtvDzFlyOd3aBO1/AG1DHnOfD8qTN6MV70h\nINMBjWqNuOMBu/cYIdWS6L+SgKZAP8QJGCeRQloMTlOaO+3pqJduHGE5kV1Q\n2/iBQJScn+/06Bg5xI7IRgGh4OPfzQ5OoBpnlTrXzsT10gca8syAJFhVbwOM\n4aGDJuQsOUJKMYWMaocHmKitaQ8cF4qvJgEnzsacGHdh2z4p2EUE2OwHRebI\ntdoN\r\n=dFdP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ab09e6d7f41845fc8f195e2f2d80907d32b4e64a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.50","@balena/jellyfish-metrics":"^0.1.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.41-renovate-non-major-ab09e6d7f41845fc8f195e2f2d80907d32b4e64a_1610887344210_0.6488358384212498","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.41":{"name":"@balena/jellyfish-sync","version":"4.0.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.41","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"064b24b7ec2d64a2973db70b30ec14c172f02449","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.41.tgz","fileCount":19,"integrity":"sha512-G+kDoT1PBhAZ3iVTjRHy1weA/Lci6hyJtmAEqhmH9DpKxbjaJuoAUM9zfcLhC1p6OWWnagsmXUJyOjwhPzptjg==","signatures":[{"sig":"MEYCIQDj8TBV8OjbwATF1RNAZnZU3iE9nTvxve6FTbm/mYhfQAIhAKSoNaMFwId88sL+wZuhrRuVtAEFjqH9VDUzTq8DVG+E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBDFeCRA9TVsSAnZWagAA3RsP/jj0ntRBB9IN9GF84KHp\nl3y20a+3SlauyBDseUDvTfHo2cJZSaCqZBwfNldMYx7fXxUbE7dq302cZk2G\n/uD7E7Ee3NfrWDV7zotGAeBtk9Fpq4LStgNgLJJdP87JNt3BoR5PGvQqx38W\nK60G2xaqHXUng09KlCsRjLmVvuxwPMO7PUByfnTxIF59Q941zpMMCnK5CT0z\nPqOwOR21XaSlQBY345UcEvt3EP9NWF2hEuVSN8jzp6ZZVguFsnTqZTBEa2/1\nyytb+u/5VSdjubMEHLsASlxlgnaQH7RW0J2txfsV1uAWT8kaKvmStnzYdoW3\nGjQa3hVpgUHZs9T9exNRdsliYtkElvxZlWkPnd1ovEYS1dVw2Jioh7NJJZ5Y\nlo7XGSmPLH97s4Bth0dDMso2sY45ZTA8kKbbwP9lpOpNprFa0qhcDwsYiCgM\nRFrzTKYO8wFFjpgbZ6QzLhEBSwSNXzoJEoJl4CqHu6+GN0An/FI3O61aWd5A\nSg7LIibOQqM6cpnmlbu45FOiGkOozJYHh89rTraIddc8KAORph3kH5r4kmXk\n+k/9cTemhhGVbe9bBUPRj/Cd3TdBLX6cFAXjRWmBKgw5krXUPHOQPcE5NapK\ndp6fcJ6t25xCbFVQIdCFZo/jdt82JPP675LTj/gYrDPb+9UgClYBEqPZiQh6\nUIjW\r\n=tQDo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5b814a7e60a82d71760bfe8e7456ce060eb402d7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.50","@balena/jellyfish-metrics":"^0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.41_1610887518449_0.5418064536622105","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.42-renovate-non-major-3619c28bf2deffa31e29d662e141b29fcb33ce1d":{"name":"@balena/jellyfish-sync","version":"4.0.42-renovate-non-major-3619c28bf2deffa31e29d662e141b29fcb33ce1d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.42-renovate-non-major-3619c28bf2deffa31e29d662e141b29fcb33ce1d","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a703c9d921ed4c23e8afca9c57ccb847ed524342","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.42-renovate-non-major-3619c28bf2deffa31e29d662e141b29fcb33ce1d.tgz","fileCount":19,"integrity":"sha512-bKfR58WjgAdFk7lh1TYAz6eF4vT5+ibMHQ3BjjUy5LwBSnrFa2uWjMpcSnCGR04i8m3J/hRqAkHPjwpreRua8g==","signatures":[{"sig":"MEQCIB3xIFbiuC8L3iyN8spe6uNL3CWz5ylTVTR9Qy6RxGCaAiA4D1na6odm2FpglJMXLhUmLVwPwsUcerlSonH2HS0ooA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBE8uCRA9TVsSAnZWagAAWuYP/AwEci4IGGo3dENp2P+z\nRIH0/3qYOyBs776n682bpNhcfoDcSdVyuPPtl/UCWfwmi22IsM5n4+96YwkH\nXO+7T4CpwThlANMQNXFuAVhaDESIXiDByo7ZZjcpV+lhVQXjfV61WcxVWUFT\nioryxDvTeV18T0By9XzYGNsIDSvyNQf4RXeVCrhQ5yU+ym9VM2eTi+EOYzU9\nTpQeLoYGIwoi8tryG1gp37lJtosNHVBqUsvxJmGF/xplic6+bu5GvR/HCHV+\nQbbXgv5BpUoMvVaHfHz79wYTWQdshITN4giS/gHA/y6zoSDO/eq8ERCQBt9F\nFhA+XdryNm/YWTI6CGkyl1m0yFIALwEURtZkICjs38BU7qCq4OlkbPbp2qzM\n1ApkrEFZlDVZPJSUzGQHjQLvjpUTcdqpW0h9lB/9UgBgUjC6oT/AK4h4QqV6\nk2fB9se3tUqnv2I+g2M5ysqSRyI9PGXRH17mT+If67G6apEiHdMn0BemOq9C\nE9zLDWqA+USX78wCIDVckV5cPIrb0Rd7F6CFSfhJxRpdYiHIxSzmslxp9QX6\n8kyU3UkGd0owu+dk21lp+rqRhrajlX/M2ZhRS79itzreEm+d/MCHfBZ5D11n\n0ZUIftkTBwxnORFz8zc6pXIEgpeEbFYLm5aTg2oizpwgnXXUJHiKU5PBhlNF\nFffB\r\n=y5wL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3619c28bf2deffa31e29d662e141b29fcb33ce1d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.50","@balena/jellyfish-metrics":"^0.1.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.42-renovate-non-major-3619c28bf2deffa31e29d662e141b29fcb33ce1d_1610895150232_0.9506442183305526","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.42":{"name":"@balena/jellyfish-sync","version":"4.0.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.42","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"691ae3e808c1fcdd4f76535c94b6dce7597b4eeb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.42.tgz","fileCount":19,"integrity":"sha512-+yNNWhTMqw3YAxYBstBQ9/BK1EKmGqUaM5uzoWwIeGVvDZ/X/c3VjhwzdoB7ecQI3tX/+lO7Vb1BLiC2J5DTQQ==","signatures":[{"sig":"MEYCIQCXisfx8bUO1Z+7uVLyw1wgxYiJ4WH3HiJVwDlNeuNF2gIhAN7jUp6pMn8RaotC1kvKUrp5ZGo4l0XMvc/j3t3pqoGJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBE/vCRA9TVsSAnZWagAAT7AP/2f/DES6RHpskgOocYPH\nx47J2t010AYLpbzadwCNVNUNvzXa9olYsODkSE1UptQ23uQ26mLkzSZ/utpa\na4kxb9BEN4cUMPFAdHhqJUZkpL2sp91o/qrPDoi5FZuzJnt7SRJDRNLsyb8S\nAIk9r2uF5F0Wr746auHeN6NqIgUdBoxAGtTIgHdvyM+Jt7wyQ71GIQ/l77Jf\nOaLDmzwtrzCCvMtn95aMIJX7Bwwa4Ln8IxRKigBKUWZiFGYnkwVI5lVIsyiO\neZdh1vIM34y9HTR0We/AZCWl7aytp2UqRVDGREybW2N4MOB61YZCr6L6+WzL\n2/ZDtamNpAWVZgI12nEnW9UDg6XFA0AE/oAxRUjuE53/1M4jc/3tiILmR7c5\n5LmMKbdvEQOKnTxbZRcn8gWEVzOtJlsOXD72HOYmxPmyQ2gyX2oSw5uB76m8\nk/kc1LoGlBdC+/VcPiTIRyxw2cqdn7v1XNBp6ciNSY3QTT8dd+ftrDXo/hh1\n9xNCogpjeaCiyk0GazH1SLqml7nRUl+U7O3uk33TwMkbIgX8ao1EhZMtN5bZ\n2Ik4JAmFWVkpKX/ZN/R3IW+QMs+zx82P24wmfqteJgHVOrKO8cVsXGMqhdTG\n1DhDJQMpzD49h/xNcaQCACeCr+X/PmJaDRw+ZGW2s7Y2ylD8x3crvYslHnAI\nPf1i\r\n=LqvL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"50ae9db475ce8e50840964a61be7b642ea0250f7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.50","@balena/jellyfish-metrics":"^0.1.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.6","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.42_1610895343093_0.838418529192072","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.43-renovate-non-major-db67940ac558c84a8a742159ead748464e2c1118":{"name":"@balena/jellyfish-sync","version":"4.0.43-renovate-non-major-db67940ac558c84a8a742159ead748464e2c1118","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.43-renovate-non-major-db67940ac558c84a8a742159ead748464e2c1118","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ed9fd2460aa5d3fcdc0447c87b1ef250c959d575","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.43-renovate-non-major-db67940ac558c84a8a742159ead748464e2c1118.tgz","fileCount":19,"integrity":"sha512-Puc+0HDCTiLMnHYfZn5BUGawPwO3IDUuksvL5Eljy/GXobTTomd0djGPcA5uZ3ATHn3KzGDyD68k1vwsaqYQGw==","signatures":[{"sig":"MEYCIQDwksFlhgNLG8VMIskdOf4tBqsR6VkkvslcCa8ADND/fwIhAOLAYniHGVyG+q9kBjuK5Sg7zEQ6C7xYOYleu0+VEgMV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBUocCRA9TVsSAnZWagAAfVsP/2sjnnyuKSTfO0nZLqEc\n03dr0g61gmpRD7giDgfUgP+3a9NuNmS3R3NYDaLQ96kCVLJv41GujMsdCk5a\nYEcVouF74Lekdqc96i7PoVAwtSNDOdU3ILhnpEY/gn6ITCTIxPavzLXD1G9H\nRXehTEN75xv8eKT1fp/pNJklhp6rrogl+f/LSSmId/+yyz4dyhccGtWEYsO+\nwozs9oMEbwXeha8Fyflkla4u6QWCayCkXqkqeTHUaUCmV98DmCm2We6QiHEU\nep0dFgx/cAchMxh5dAElkBKzvGT7VpByBILMOa+hybShx6FdP7CDTNAJxukG\nIb9Js4Jt5uj9uZZ29tc5bsGlrdTmvB4X78+SNSDk8zVrRPU1uIGaqlllcu9B\nrQDe0Kl9kWvYz80ivOB7eBxxDyHANy7MP0Am3tqhAl6DbR2ajXh/nD/rJWLQ\nsfaRU6eYrkiPVGaCY8jaEvIdFYJIpfpzPs4bn3r7gKW8gZkqvaM7dgb4Fqj7\nq/OUwxwGwvpS2dheOF7j4OaXMpXCmeU6QtIXtNKqJ3zphtvsboZc03nJ9fRA\nxtYKU1hSWmYP+SE5zbWyJrt/VTcpNdBpMmcNtxM8jXrHHnd1EPxJlnxp6H+t\ng1yvGVBnRUDljb0lb+wiiHJiU3Rl2MaBJeYUoJDW2cvZ9otW+VyX+9yK5spI\nbp5Z\r\n=ri7x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"db67940ac558c84a8a742159ead748464e2c1118","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.43-renovate-non-major-db67940ac558c84a8a742159ead748464e2c1118_1610959388187_0.04455168355465422","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.43":{"name":"@balena/jellyfish-sync","version":"4.0.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.43","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d59647955a0a75160981bc211ddbebecca75c03","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.43.tgz","fileCount":19,"integrity":"sha512-I3hlZ0hMTvhZ79KbFfO6rKL479dB5V4S5SdNt13lVCxgOa9cNHbIPElSo7XTxHrgIDbe57BQVAS7m0O+5AxvHw==","signatures":[{"sig":"MEUCIQCworzyI2+y3+Ba4re9wvNX3okFdy7cUK5JNGqog4q6LwIgdT5APvvDTAdJTa8aUGLZjvmd3s1i+QuuD+qhqKVRrCo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBUrqCRA9TVsSAnZWagAAR5IP/iGmqS6Gvb0GAKnfLBuy\nYyAjqH1vKoX2pU+6ZRSqddiWC1O6In3ZZBlW9NwmG9sOrc+aJph+hILWevxn\nXKTdR80A2NkeFIt12/wwUTZQ5o3frd7qJaIpqMF1G7NLqWl7v4cuL170xFdb\nM3fj61MlXRMM2HgK+GV5/CFuUeJN6mFnnYxRVNUycUqf1uo12l/pyAyfVaGy\nTcuQzCkOkSrNW9EULdwOgm1y4J5Mrxs0fxOgm7vERvabdugxPPihRLTQv+xe\nSx6t/ZuY0Bg1t2TTy3p/DDTo3vv8W3iQBa6Y0TINssVhzt2hQOmXDiG7XMih\nHiWN/xXiFwxINs4hMInGwKPoqgMTH7tLqrxsYQcxGCyOMbZlRKAw8cXqbK+J\nJbJ+KkyMzrVp3MXCzT/hhRTjNeweYO1i2pWJubPtkLz1mp+rD+bZmu7kdNrz\nypixNewxsSy1iOPU7s8I8cuumk6Ruu+1UivAR+Tqsc3CZaMu/NmeC1cQ8ZB8\nsu9fek277b+D3KxiBR6v7q8hbBZu1H/BrPouctpDmkdkkBB9CooHIYXd8C8i\nM4hVhUZUEC0P0zbzLBC8MssVGXNmfqxDs/LvCwF02TCBQaEKc3ePXXVftueB\nuUJ9eSiu7/CftVhcmrc1iVhXdEovzO0U6OLG5kSOpoGWlEB0BRqXMyFIT22P\npYQa\r\n=CriJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b1e29f1e9b378a3097beca6b66fba30682d3098","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.16"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.43_1610959594371_0.5776010871964619","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.44-renovate-non-major-608c44685ac2c5315406d44ba45e32404833c10d":{"name":"@balena/jellyfish-sync","version":"4.0.44-renovate-non-major-608c44685ac2c5315406d44ba45e32404833c10d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.44-renovate-non-major-608c44685ac2c5315406d44ba45e32404833c10d","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8aac542d2e113c74167bb9c1cc8aa818a9776b12","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.44-renovate-non-major-608c44685ac2c5315406d44ba45e32404833c10d.tgz","fileCount":19,"integrity":"sha512-YyVSUg63i53O5KGsF3hF/1pXKnR7jIuaPILD67FPSvrKGdWjwI8y27m50OdAoZQH9xKfHMuIlRsCKtFyHEpXmA==","signatures":[{"sig":"MEUCICpKZ9vWlGxqcoYlvg74bR5wLuw4gi/chRwGqxaOTn26AiEAuhum4mA2Q63hm48oBdmnO/deEEAOjBxMbEkWTwuvDyc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBWpSCRA9TVsSAnZWagAAo1gP/jIYCrw6LAoU3cOeXVhZ\nwVQoeb5r8S7Rp8iPWK4rj5QAEuHqXBmr4RVKbpm3qUvK4EgVyToiUs5h2qig\nO9PM5115kUzHKNW2v4l6A2aiEHIupIMuEWoN3TtbU0MPO9u2kii8GgkaI3V5\nOlHmOKQK+F5JItvjFrcvs+Hm9FNA32kwqaeW0d6Jp4Papd1vU/COQT3WxiOy\nMjOpEQDnoZJYeN2p73OsjiA43yJxeo1IIUPWa55oJdGdqHdsBU4E6hTDKjhQ\nW9ltZxk0bGbVTno5vUk4G9ZDKI6OM6+Gx5uVEJq4OLM5BRn5dBNN/TVJWzg+\ndnG+lvjQKyhLGJkhricAN1uLwZ/U8CSdldntd0k1UCsBu6rh+JTz5D5E+j9k\nE5Q12qO0c8TVZJxmoxK5KrEdFVBS+aF4v3VMv0Rt3F8ET1RoQcmSOwjJRXom\nvS0fw67+Jto5CB4U6lpaml55kjBObx80uNKDRf1KnEPQe9LICQpiDfKXL+U2\nmkpBk8OWp/vun11gG7mYTFXuKOo2guw/3Q4jd2kj8YSTvSY2WRwb23xDUvyn\nUNYqQefZpCfpr0OiACvXl4e/FoA53mXXUiQ9t3Lg2DciPUCfE2gCMUmWWW1w\nDcq5+AaJmQJLFANrT75CJk2MHdKmfyHZr3qtQDC18t6Cr/HWpv+6Y9JcREek\niOXC\r\n=zICQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"608c44685ac2c5315406d44ba45e32404833c10d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.44-renovate-non-major-608c44685ac2c5315406d44ba45e32404833c10d_1610967633886_0.32389469070039034","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.44":{"name":"@balena/jellyfish-sync","version":"4.0.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.44","maintainers":[{"name":"toochevere","email":"pj@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b77ea93c77b6e8edefd04d42dab229a380aaed9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.44.tgz","fileCount":19,"integrity":"sha512-eZZ+fX5F8I225Gfh50qiGZW3ZWb3+ZIFnHuoJNCAN7ZwirAS9CAuG7UyO2SZt+/cM3GYkbWtP0zWzpl6QzG3tw==","signatures":[{"sig":"MEUCIH97e5d3A1umjrbPKITces1oZxNpUnbfHT9gZYIz0U50AiEAo3Zt0uXFUyZSLHL6HBd5HVKh1BsIg24DuaOTIwqeVco=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":109998,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBWsICRA9TVsSAnZWagAAF7wQAKUFGJw2Q4cb51s3PWor\nM5TRUMzZkfY+yPRDw5Rgd7oRfe11OHGvfHbP/yqVuKmAxgM2BDaHMh1tbI86\n48/W82+JJkEwb+A+v+YgNkIl5FafVrG1AMtoudJYCIfvOmElmEckWlhUQD2M\nqHdoGkEXFwtN/rhJG6519Ty6CO56ufSHPriG3We6C4Vths98RoaCYEwRJoDv\npJJ+ylX1r0BcbxggwywlmGKC6tCW+lGP2fdBUz3QmMotn99sy5ktdyI6A4Rz\nQZxfw0cIy8xmWeml9Guj78J3omeDMeNlqGb81JNhrr57lMnOexDuLJXg0cUP\ng94/4qFJMk3NqU5tv7VBWy9RfxCzvNaHuTDbJ+cDca2aRyS29aVAnzQ7YX4S\ndUoaZUsLoZuZY6o+UGXWWMtqBWA1kiiw/HYv8tNA4BiQ/j5f69TKks33inhf\nv8EgRL7P3xZTXUiBUr9vCedm7RsZU7MJ1fCT6d7gJwd/eSjwm73xK4X0faOZ\ncZJjr1PJbXf69dWiba0pDOpWQcVG8MdA4vprB5B/2jKkIAZoFVQruX8pX6Gs\n059XG4j5neDSkHuXVn/cmjig1vRM/44HqjFMTcZQR2qa2qAI6PhxXr/Y0e1s\njvqzH89Ms3Hlj0u1fa9XNggmdUR6YYNL4WIePEcuGacUyCU0m0Xz4Q/Hd5p6\nGOV9\r\n=0Whl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7280233fbb60d85bd43983e02b5947e0b59d9b27","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.18"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.44_1610967815718_0.19857420323030062","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.45-renovate-non-major-afb946fe8454764577fc5a3c9532942b2610343e":{"name":"@balena/jellyfish-sync","version":"4.0.45-renovate-non-major-afb946fe8454764577fc5a3c9532942b2610343e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.45-renovate-non-major-afb946fe8454764577fc5a3c9532942b2610343e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"228c43594f6840f14d64a3e40a17af517e02cf9a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.45-renovate-non-major-afb946fe8454764577fc5a3c9532942b2610343e.tgz","fileCount":19,"integrity":"sha512-QJBp4y/wWN7vKKZDNwJXb+9y6A1mtbETKwRu/c4o0dFlt4wEkecL89tn2+V7BlzWxLOY1reGvVfxEUzPZV9XaQ==","signatures":[{"sig":"MEQCIHrpVG7Cf4jLrWkKJU4wEnA7B/VvU3XVv1NUJNnojmjBAiAnef+t1rq7FZwJvRJXXMw2XCKrRa7gHAyqUShp6jushA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110165,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB74GCRA9TVsSAnZWagAAAy8P/0ijIlGxJXkG4UwtCRrN\nP/dV8HSUXVmdKxr92lStvajHqAnraqbbQi3lFrADJ9FCmZ/ykuZ6oRvOza82\nVB1RH7ZpoAVc4on2GAqVcaQthodok9c7PcNxQt+OqpWchXRoWQl+J6SB8M8V\nZ6w+lCFsSF/8FaG8vJalgFgxCx8lKiUHYlfn/nzmhWu+1YjaVwqXmO1sVFGQ\nzD/nuFMN7wDWPdHcJdyMnm2AAc8NAODVapBsDWtvrC2j4m/PlWJA1/XStBbq\nzI69FTOiwYqyyEHz6cyKxO3tEJGWyBGI+0b/0wLXIjsutTT7ZdwcWtcwSx3L\naoofZZUVwDUgmCSsxPLXkQxAA9riUyk5OxQpwIOHe1Zh75prymik9jvxVqLF\nUT6KkuYlkCciuZSijDcmdCRsW/WCPgZLdX60bxzqbfREFEWL6FvACrbiI3Of\ntm0NvA0bwc6yDdDNzEbLznfFDdPfhlW28D+Mz9z93BPtXip+oA3nGEC8V2e+\nihTrCKJJCXbdfAwN8k+cAJ0ZrsIBs3ef4k8i1sLC0UdBw8r/B//rPZb5oJ6R\ncEYcPex8rQihubgJ0xTYQakhqQwUzG0Ma1KkrDmf8pmaVDMwa5X/RGPU4cXl\n+8lnlLk2YFs3/9dBEqi6iI//gUgykUKQkGX3jIijJwmsS5uoR30a6lSXLP7T\nLWGh\r\n=5bVR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"afb946fe8454764577fc5a3c9532942b2610343e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.45-renovate-non-major-afb946fe8454764577fc5a3c9532942b2610343e_1611120133572_0.16611130259778983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.45":{"name":"@balena/jellyfish-sync","version":"4.0.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e240c92d2d5d5467ecf928e3006651e42ac906d8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.45.tgz","fileCount":19,"integrity":"sha512-swwZEejV711I1awtyp8CGqdkqKP/aTpHayExKyXDkk6WutgA4hgIjWHArRp/OpfV9XkTGTpkfqw+Xy+m0TNLAg==","signatures":[{"sig":"MEUCIB2l1GD/1Za4lSqN6WYtwTu+BhwnpYhLq7rlOJFqoOKPAiEAzLjgZVP+p2ZLG6TmHpTlGYAYD6058L+YwPzlJjRBjn0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB77sCRA9TVsSAnZWagAATD8QAJnOc5VMTk7DyQBudgu/\nFPIWQIlhRuhiHi5RKDV5ye1PRGH3zhStFy4ij5YnlRimotzBH9AdxYDL80VC\nHhNLCIH437duyMuasoK4oQY1HqkUp6QpWVe2uoEoJ96gpX3xM2groXTkDR7b\nH+DdaGEGM2Y5sE5r2YntzUQ1k7mTfKHLmDRjvP4GCbs89I7SRgNyoRYMQKkc\nLTXHLS6EAUEctSNcExqPRDxR4k3TRQZzy3rUnHPLJpuxO1ASFcKy3bmABXS9\n/QmVYki60Deahnfr1pegBaHEESc5bpwK4NNPGS7sM9gfJC8+uoncFCkrCzND\n/AWi4cgvKzcdmPyRVSQAnAi3tWQFfu/kAO98H2qlGCxVFNfQiYj/BDsZvaQE\nnicMh8P8DiAbehYQ/d8vt+jAicOUX16iJizsYFiyZ6VC2AWl/ERbzcxp0wpY\nImPRD+MB8I3q8vVvtkZV7/Q0La4xphjKMaU8C1YHj45mxUUYdPkZX5g+3JM4\nrnQ8BhaRRzmM6i3X+BSPVo40REq4zgo1wO9bXJ2zhS9pAUr369jCjXy1a9ZE\nL2j3g4/B+YU8S9566lB6J5TfsPSEG6t+jT52FYMBTv0QIK1I++Zs3/ZE5xl8\ngOCJ2bZugzZvMoDZfzA0wJ6C75R7DrbETXRsjIK2D+GfRrhTUZT15bTthVw/\nqhEp\r\n=v9Rp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"abf97411fe4e17fb464d1b5b6ce4509f965dc746","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.19"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.7","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.45_1611120364446_0.8726047890290269","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.46-renovate-non-major-9bc8ef7848578277cf15285b430ae397ff7c00b7":{"name":"@balena/jellyfish-sync","version":"4.0.46-renovate-non-major-9bc8ef7848578277cf15285b430ae397ff7c00b7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.46-renovate-non-major-9bc8ef7848578277cf15285b430ae397ff7c00b7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0151b3c605ce9ca3396bf8907b0a2c8fd51dcb8a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.46-renovate-non-major-9bc8ef7848578277cf15285b430ae397ff7c00b7.tgz","fileCount":19,"integrity":"sha512-1M2jWJpWcs+5cNnd9FFqQ36XuvGyTeob9/zrh4oMihzNeGFQoPkmUuYgPte3rRMW+XU7xdt2jzOYz3pPCGfJog==","signatures":[{"sig":"MEUCICVTp7Zt25JTC440GGl6ga1mQzblRBAgE3JXLSZG1OEWAiEAmGu+2m5TOxJCaPAjHp/1Rb7+vQQPx/EKiXHQ7n5C3PE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB9W9CRA9TVsSAnZWagAAAM8P/0gIZRlhpNhXmrWykMVc\n4JJ/GaNU8Zqlo16VbQgi283JWY+GiAmp3heE4nFAzjK6l32ka0jkOL6qQaMp\nIyRufdwaLnIRu4yHctN3PB4PldZyZY0R8CKlxvyUwzb2gxs5ElNCmf0m3F8i\ntIzx//wvyohw1GhRt3n/0r9C1EwcVQZsevDnjAhi21nuGK3BfK0+t/Cm/6Lh\nb/kkYjT3X4Leod2IwIxU3hMexkPHdXIUVIVHL5sqUj8WuCqQGoAbhEs03R9c\n8uCQsWdjpNMsl2FnTgUFC61cCauSLQqIjzs/tH/ywf3GXQPIAZxyqj1kubOZ\nZ60Rg9C/vrJI9Py8gav5H7sVXK2jpXxxDPpdBOokHisXlUL3Ebz09mWwlDjC\nrjKmodd3LfgOp3MLGUo7I7B5CwDIXSDJonNFKjde4rLrBdJT1OWNcLGwIJxL\nl4dOGUTCI8r0FAvctTGs2dzCb8PBg6p0qX2nZhEaIW3LpmvoCZMm8+hBGzTo\ne/wg0MwsqJAOyG0a3O4IlWJ/EMjUkhdJyr74sgmg2N/ZEqDrwMCBLt2BNCN1\nPZ+YxKiedNszXjLmu+82M49zcmVpgIpSD13jWGjlEcmn4kNYqvWiRm9lIYxJ\nsAAl3FJoRx6f5yPhakofPpMjyuSasR3bz3oIs/gtGg7UwHvJbSD7KKZMc48o\nfxSe\r\n=h5Tw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9bc8ef7848578277cf15285b430ae397ff7c00b7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.46-renovate-non-major-9bc8ef7848578277cf15285b430ae397ff7c00b7_1611126204980_0.7996319527164757","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.46":{"name":"@balena/jellyfish-sync","version":"4.0.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.46","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0b9018beaec5847e41a8ec069a8d18e697fc882b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.46.tgz","fileCount":19,"integrity":"sha512-9DbjxOYu5xloFDr1W4VPNA9sIpy7KA//OzZjwJrappzyTFuC1ZtPakwZBhobXsWJhtxtQMH6kFu5b7fXKwBp6g==","signatures":[{"sig":"MEMCHxcZLVqFHDVD2pgLtFLwa5npMqR6BVV+VV8jjI6zOPwCIAUMA74xiq+lVic0AfKsKLuj5sFYkz4WWhdUA6/wshmk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB9ZwCRA9TVsSAnZWagAALsYP/0waD3QfKMevzg4zJdq6\niDe3IJzhdZNGYmCKdM1Rc03dNja87qOaEu67b5cG9COPgZo4WYfqM4bJJOXv\nxu0dn67nU5NDMOvA04wWrZRRZSESNYe7LONie43eoKOya6b/43d5bujoxOvp\nkwUUk7WondvrimKMNzFZTAeY1jCEcivM0ANNKWsa4UlJJIE1Cyjysm8bWe0e\nSVSYtzCjaSmP8/Z29QZnfH6UYzbfZK2cFd2DMDtZeZ4iinUcnh0rdoUZKo9i\nNW9F5Fv3c0kQ/rPZSdVmkUkSpZhMknBGE9Y0WmJCiuXtDB/xaO7tP7CmFZpb\n+u8r78rSBGC2Zu3qnb2YZoRUHcECAsVTTmdnEcsw9apq0/ftATPUuYBbYVI3\nMCninz+ff1E7deQKWezvFwIr4wMdhQs5eG7JDujCtsckV/PG3THfSwOtyVmx\nMzPrYbdzbPj1gDXmMOIZoQV/r1Mf+qrAi+RnivsnDOJLO494TwHd9x85mfPW\nGa5at6yo73f8DqrZWt3gJY4HdhBE3uQQoyoemliOEcAifA5LsiZdoKjqgnil\nGSj0e00eyWMyqE/vExrX1X2gpbRJOnad1MWWDISl/BdHkE3myeD1yH2D9Iqb\nmhj0AqhATeAiV7JtH0wCqm+ys17T9Z7xLXBmt4FrqjhY2vKG9oZRYbjsmNqx\netjh\r\n=ONYA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b96b38106f7d951b622e6e2371b1b478447aa38c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.20"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.46_1611126383782_0.7781714849875898","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.47-renovate-non-major-4390fbcd7dc21d9a317820973011057b96f66ddb":{"name":"@balena/jellyfish-sync","version":"4.0.47-renovate-non-major-4390fbcd7dc21d9a317820973011057b96f66ddb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.47-renovate-non-major-4390fbcd7dc21d9a317820973011057b96f66ddb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4446b9cd69e088e8ee4319864ff115664c8f9e74","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.47-renovate-non-major-4390fbcd7dc21d9a317820973011057b96f66ddb.tgz","fileCount":19,"integrity":"sha512-Hm6nf9BVeTYDLiU13Mha2hwfisPcZbUB2w7CXeE0YsjO/lYs+ORqRElU7woBAIzmTxRS2QRMt/1k8nmYGXgvLw==","signatures":[{"sig":"MEYCIQDQFWVyrUplMga2n3Qpjy/YkgtmlW82KiF/QcNb0OCIIQIhAPlnFd/9oKCg4dCfGTfDWSaKMru10wXEcsoSWAMbYo/Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB++zCRA9TVsSAnZWagAAxAEQAItoBKKIJ+u3vS1uFToF\nUL2rr411ZG0ZdZJmMGUsRY0KyqfcoK2NaF9XtzWbeqeA0W9E++iVAgchPLmE\n6Xy/WBTnOVH5qCUnLniFprT8luxNvA6jnP80VfaPK4Ge+5H1ZzNgcPut7+GD\nC/pkf68hTbju/RaUxDzxiYEpajI162ryR2JQ6BHm56Br3sfxtV/ZHcpt6ete\nIsrh5/19emPrxmDxgnUINvQNipus6gi7E7NTSxfkD1aDtJPP/O0SLCebhagy\nJws6qS8rye3NEnozwYbCb0EqOzmQcOM4BF7J0u1Ori1mSAWrP2eB2ZwkbEIw\npz1GMrSXZopSqm75h1/qZVuUtSGkpLH4Xy4gscwCEmUtfA2xq2cerPIQ29CQ\n4xaSYpvyH0OQjgT+0B0N6AFki8T3rVXw4ynQsn+brNNkzmLP95ASYTI0UGeK\n/P7j5YFvNDdZKNNzXNu72YPjvpxmN7T7S9TXjNBbuJm8J8E1K+x2xDaCq//z\nI7E+VrJzxAvL3VcApwkicen++G2V5+nLvU0upq6lNhp4CrAKaMR1PRoE6l/W\nQ9s4+884t5B0YWkDpW0OYGbMR4eWiwGAK+XQilE49Q4uUNpllTSGh6p71H2H\nOE0F+OjuQ7xb3kxAy3X7rBjZEsY07xTS7iAwTeb9iSt/TZZ/4og405qZjNeh\n3R2N\r\n=AZZ2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4390fbcd7dc21d9a317820973011057b96f66ddb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.47-renovate-non-major-4390fbcd7dc21d9a317820973011057b96f66ddb_1611132850813_0.16638356614327732","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.47":{"name":"@balena/jellyfish-sync","version":"4.0.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"db48efc81d77157ee40d250618e94ec5578d6deb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.47.tgz","fileCount":19,"integrity":"sha512-8J9X5cIK5/D2C0jsqiW4KmmPWYSkt4ZWIV7N6LGPIz85NVitQQGJpExtzAtZOTNmWJFFTTWzUDIDFyJ6tAJT7Q==","signatures":[{"sig":"MEUCIBF6JGnUuSv5vPyieQEcUy7DkhASDA83LZiJajc+oyarAiEA9I1nYXQmre0ctg6vsIohT6JsZn/kcAQ5HpH27H3135A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgB/C2CRA9TVsSAnZWagAALwsP/3ICk88ge3HgBaQqJKIj\nSq0xYrVTj9itF73pccgvVMIZkjupSuE/234Mwb9TAwVVm15aEiEm66CppTTT\niHx+4Po1WSsfRpGsmMN8lgoUo11UQOIcbSGyuFH6nL6hzVsb6/9mwI8P5/0L\nIl/l+/8OhBldS3GqmJtBSD0W2aXRrJSjsBb3UR3LkAaBK6UoiFzFD+7EnNF4\nslVYkTYcSFcLj/elt4ELh3PosUH0Ar7M3y9SikkdWXf9UWo/3uvlGfP1+ogD\nIKvl31IuHO6GT4Wtx3utoetWliH0WUbPwnvMsSOSyZIsKMGiW0R4RVX1XLsv\nAT+C5RZHyTpJiFPqmApT9rwK228SuA02Z04lvDCtu32+fUyCwyZaYC5YoPuC\ngfSmdxR/76l6M9/VnerZuNbmDNiW4LKI5zyIKMgnWF2s0I8iiSl0DDKm0hVY\n68WKTnKqApz7BImiC5NxdScyRr9HLwmNXGeP5TpquLQEadoJ0v0Nt7eXhhBn\nSDYfsagJTU+ahDulnHNkYIeDzXx9zk+rajwXROXAgv9uCbmDsiZaEkUn253v\n4xoOYaawYGeQtohM42sLBocN/GUhsgKwXQyMnUEAEvtdawGZ+CDpCaA5vNKZ\nMg59dX6lTBQvi+FQWYs+NxmedmvUvPqV7lMW9pC0AT3BZ0CZmJXmFNT1c2Xj\nigSp\r\n=Vh6p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7291c9ed801b6516692b55ed659e3db1604a0985","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.5","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.47_1611133109852_0.04163344809859959","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.48-renovate-non-major-697911df1794519d5b7cb8a85a19b003c7f77804":{"name":"@balena/jellyfish-sync","version":"4.0.48-renovate-non-major-697911df1794519d5b7cb8a85a19b003c7f77804","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.48-renovate-non-major-697911df1794519d5b7cb8a85a19b003c7f77804","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cf6d2fe46b9dabd6a2beed0b3f87cb4f3deab8c7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.48-renovate-non-major-697911df1794519d5b7cb8a85a19b003c7f77804.tgz","fileCount":19,"integrity":"sha512-MVEr9F8m8/TxVkVzLdDbUupTo7cZ6VLs1dThR2I5ke4o1mFhjL1zxHDAKp0WPK6akyfn4tSPJrBUWVX4c/DKkA==","signatures":[{"sig":"MEYCIQDMA4oXzb4JEsolnDtBHRbS1drQWCz7tJk0d7O4itmNFwIhANHezM7RhRHTx80YMzqurx3aQ/5h+L6v6pJtsDcH2cNF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCKTACRA9TVsSAnZWagAAA8MQAIKpqjWOaJEfATvtjLPY\nb18MmqaoyMGO8WcjSVo9PgxsGtHnuMIpdSwegJNJH31mwzVmNad53smmdB4O\n5iLBY0EwI1V2LbVK/x9RNbZmlwbsUyvQ0+Ai9M2aaO3/mFAktTq72nY4xZf8\naTZlUtMeTf9mDQdd+5wpsgf7Rv9PvJ4EankmV5X7GWE6DyxuLNglI375L/ec\nStDToAN8LnM96YCOYr6NQknEcwSfj0hXdD9NNI58bKjueNnK3+FG6pA2iqW/\nc1QmDcmo86JC7eOO7CcKYAvZSu8xZfSrfemFqGH7jTRN8S9T8mxutjG9o4C5\nYUh1w+flHDDzvFxqpa7a0R+DG+oQJK/MTVR9jYccMl8suxNlRgdrS0qAmX8q\nwXd1dXAsEvt6PcmtkVtsN6SUpUbt7xRP0NBdi1hJB3x1BOdPNb2WspLDeSob\n/GgTvoJ+ba6btz+R/emdQt5Bf8zcXxMuOAriHgt+a0j2AJV71uttd+JyDpSf\nWCDuLwjA17QfUHdZ/Q7Y8cmi3laRILWTORRlXWCoGSEDHXzgg/oH6ZDvA1om\niXsYcv57umW+oElPj7fBYEHTe45dfLvqn20eV9Hc6jshB1oDImQsyhAlTAX+\n998UdJpQtpvReeZbRedr3HWu7NOwDvjjS4xln/oLrjKmXvyjQFH2VO1KG6qp\njMhg\r\n=3heE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"697911df1794519d5b7cb8a85a19b003c7f77804","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.48-renovate-non-major-697911df1794519d5b7cb8a85a19b003c7f77804_1611179200372_0.8991352014624487","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.48":{"name":"@balena/jellyfish-sync","version":"4.0.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29fb7319c1745a456f260d5368881d8191a68811","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.48.tgz","fileCount":19,"integrity":"sha512-qx3+oifFt+PAgSTt/tBzx0OLS14gXsDNVQ2bzIMK+ZlsFrNyIg8PdW6nkDpMe9Mp2J9oCxRwRGIn6R/sAoezrg==","signatures":[{"sig":"MEQCIHmE34KVtp0vncP++QzLsjYqreCAfBx+zRH4/V6PGEliAiBDpYCxvEuXqLebu+OK6zFt4GWglNwDGp+zKPM8yhtoKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCKV4CRA9TVsSAnZWagAArVIP/1aDNGW2yPTik6EO8bTV\nBigRi3JROZmi3Ew0EqtMkj8IUQ+0q+h/Ajm6Jssmvz7d+q//XcDd/c1nBWXY\nGTZAQQ/JHjci3YYDjeZ3zlcXRK8JBhxQBSHESGy4YE9aQR4aqGYWS+0mQ+DD\n+sEb0fqg95pNeJF17NyL1p7Ywj1+LBNnYjW1Xzguxu/GaKx7Xh/C8fGuxg6z\nA2vr2NDHQa+aW62VTCufgIiQdP+ZNOh9WHC0WyErYJnT3CZ6x7kAE0bteNcm\nR2edos1K6zqyOA9BK+P0UZsppAJZ13JFRNI1uOQJnWbXo/JABVayJlVvPJnB\nciuBWCPm6PiCd1ZBUDGUumN1K9WFh70LYKyx4fWknuSp8uYJMB/7GHsqu07b\nrMbn29lbrzo+A4UHLlEE6UaLweiTiBqWGla9h6EiqOATW70x9pD1w64JHY7e\nAjt0L8LAg5wRyFPc27d9gpEKB9sZemQpfN1rM6qEUl3L0kmdFdyo0q9WRmYU\ndU6NCxvkQiIOY4Jmy9KTdHAE0m181rY7ac6/BZ6Gtemh06PiZfSu4x/l4CAu\na7dKfAqPVCOomBj9DSCHMRiT7NMr4G8ReR21Z8lYNA3zGZgBvnQC6munVjJl\nOW5/7Td7BNnUxl8PLJyny2KqoUUtNTyIG+v2nO67OyHHaMHidt6krJarduVJ\n+B9f\r\n=R1d8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"47f8fad79b78b921bc1928b2889c1c3ea7db1ae6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.48_1611179384207_0.648922065159341","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.49-renovate-non-major-0ca614987c211e79e5a66843638c902a1c260153":{"name":"@balena/jellyfish-sync","version":"4.0.49-renovate-non-major-0ca614987c211e79e5a66843638c902a1c260153","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.49-renovate-non-major-0ca614987c211e79e5a66843638c902a1c260153","maintainers":[{"name":"srlowe","email":"sl@atiklabs.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"efd78d455a78c82acf05c6ae33683082c04e9993","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.49-renovate-non-major-0ca614987c211e79e5a66843638c902a1c260153.tgz","fileCount":19,"integrity":"sha512-CUqsTMo1nq0eg10FWFVsM9Xpor2Jv46C503ksHf4iolykKYJ5Upvj592/uWdp0KTj56SJQnz+OI/ODVoqT/Zsw==","signatures":[{"sig":"MEYCIQC2OnA5Kd052v+k7VPAU0GTfn4CT0VVbp2xNVYHn5mitwIhAPG7el4Ub6xGpUQ0iiLpb/ISCEBU1Q9R4lpmJCzMCZQi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110534,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCaFJCRA9TVsSAnZWagAABmIP/2KFE9l+9euCO8Wlos4g\nNZpLHA4Mxl+dG9hnUc713wnpoE7KWjcpF6zrAYvqGsDgpdfKL7bY2toyT+C2\ngjeQozRXitsf0U/ICvzWb55clpPzywuRGrPSvDh9frUDGDWTDuEd0blOZVH7\nYVzOPp/dv3z7fSPl0Sp8tNacsNYAzI2WH+SQK4FU6HGs2rLUmWy3Rp0Uzujd\nt/giVP4uzuD/G3WR6y56jh1+nS4oFEGt/1XburASoLt1QBXlADz4/8IkYJ79\npt9LeRjfrDRoYaShx+z9guwKi75Fi9clwx2Ilwnh2izgoUmqSFbySIzu90/H\n9H6VJ+18Sw9mrSWO8T6dgJtT5YDVPn/ZKbiIrO634JRD8NZP31GziLDb/4ur\ngAXKkQsMyGYBAHsw289QJurSf3ad4zDVC8ZhMrBABAXQjZyZNFnzR3OCnj8e\nsJgCwvrWAdUbHGzfKKnJxX0id/lmudUkd65w6hJRR02TUaP0TZVBHukPOzMk\n6D864EzW/v0h6wRetcywHHcGCaQBi9NrwUvNHugtQVAMzavZoDDT7a4UUnVF\n7sKaelbNp1rgOlTwFsLyjwyelcBH+Rwri6rLWp+RDbyvit4P4/xEM46A+ly8\noi9zA8I5hB721wkmYY3SVk+HtnRJoIW5fW2C3+6pAk2JyN1w8uJE9nUxSLlg\neFn6\r\n=WYiG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0ca614987c211e79e5a66843638c902a1c260153","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.49-renovate-non-major-0ca614987c211e79e5a66843638c902a1c260153_1611243849481_0.856016103177407","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.49":{"name":"@balena/jellyfish-sync","version":"4.0.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.49","maintainers":[{"name":"srlowe","email":"sl@atiklabs.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6aafb180fc2131450bf377836aff9528d6dc5b58","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.49.tgz","fileCount":19,"integrity":"sha512-n8jWvDZJb5Wtjak4Te0DCWm0q31ytcApjwmcyRgFVKXdEGYXoDLRKKjUsT9VeL85+8Gbhf+GtL3IR6P1qZ9cYQ==","signatures":[{"sig":"MEUCIATeBP+Bnkh+3k9IqWueX7BMjzxHXYVjZVIuxscg1wZQAiEAptZ/byEpFm2sts+UgC2cs7FOq+Oc+K/YnWXFLhKh7Rs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgCaIOCRA9TVsSAnZWagAAHYYP/3ho6q3phqlLTlN2onm9\nUTPH8UfZ4tRIhdX114eHdtCDWyCgyWAgBAlM07EE59aWoD4x1dxFtSVQJTT1\nt65a7a+WBL2xz3vyLIZ1XsXRjrVgmH4Bp9vUj2CN5gpyrVQaUIdXA6hLcwYj\n5PKvJsLqTW2GwJBtM8++qCC3uxO9ljhJdRlJiofAf1N0Spb7rs6Hi4bjluGO\n8GZPSYcye99Kjt1QI3LFwwCTO0e3yfwSEQc6/hzVYumXfpeiRSN065udCBcb\n3b5SvQhSqmTAlLciBj5y0ea3BF9IPO6oZOh37eeAjj/3QuLdENz1Mc2KqOJW\ny6aGgQ/6ZXjFywE2/YVQWiUrVkRq80y765dPHCJggum1O8PMjuog8juSA62y\nMYKdGlX5mljJ4z4iCE7oPttAruShPIK2Lem4GPnQ0SOfQyxsNo6LGj7gs79K\nNCrk6du73PeuXMiTdmVYNJHfnK/YB0sk8mr4SuqjZlncTpxYxLjDpUD4KvA/\n92RMAjd2hAH1uFKXB7RsVGvSeBKZ8K/7VC04SZtRhwM1Rgp/kLuTevXQ3W58\nyKdHsp/SYVM3Mclzj053Jzy2jy1UNkBN8lAp3415zq2ozUZLJlUJRYz+Vlay\nXakNWU/UkMSM+8XZGN0RrsFtHzaUnZrzv1DX//M6IJTZ9OASezT7deMeGuES\noQae\r\n=Q6PE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"775140779bb5c845850d45c4f66282f1d2e6fea6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.22"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.0.8","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.49_1611244045652_0.5020381354486383","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.50-renovate-non-major-74d7692f8167c2a990da156eb25cc6958d0a4379":{"name":"@balena/jellyfish-sync","version":"4.0.50-renovate-non-major-74d7692f8167c2a990da156eb25cc6958d0a4379","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.50-renovate-non-major-74d7692f8167c2a990da156eb25cc6958d0a4379","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53eb4ba2e902db35d132b3ecea87530935c5fa06","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.50-renovate-non-major-74d7692f8167c2a990da156eb25cc6958d0a4379.tgz","fileCount":19,"integrity":"sha512-MHte4qnMlXYLkcpjzCm8fMrBqz287htCEgWX/KQJNWhwy3UYEbeTeLux/DkTadJK1EDIm4ghRM53VRsV9AboPQ==","signatures":[{"sig":"MEUCIQDd0O2B+Dj+1umDlXn3DUVYN/xpbo6q6HmAN0aC3UdoxgIgPEXLUWnMfzx13wM7lh77eQ4x5/1Uya+0heY5wdRwTNw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC60RCRA9TVsSAnZWagAAbEEP/jOOPYskKJHPrbzz+VEH\n9/nSlLE6w86UcRZmyrOn8R7qJO8n0dMpKziA/St9H7jJT8d2edQTIe4cyoR8\nFhddWux+bBmI5CuKDb0q5Rt7BUYd3xG9RXXTBog9IcaXI//Kf9vHXLvh8kB1\n9eZGPJYJBUJGPdzkdiki1aP9ltZjzj86xfzoAV4pxzUUzrEfenOyC5U+xmM7\niVmMVuQCv7r3qCrrC1ibWhvFPOweRFYMpyvmEioRIqlPR+8k36qdEmQQVmc3\nIkc4SHc8NhoR57/3qxLOu8f6bL39OU+YQVn7+bnu/Bh69/hf19VTEU9NsADw\nixVjDa4VvjeDQ615g9UWLEqUoVV9dHoB19ePeR6H9zc/ZMQKLEfW/oVcBT5p\nG6cf2+au+kwx58DHnY8XNBXFKrGw4Aa2YkQwtmCkQWNnSe7aDTcfbfjWCOEz\n5DH/OgYcTI6pqqXxBHmaLW2bq3EURMrQneSicHkTNTjE/SpipoSrkEs9dYFk\nIialFRE4WQ0aywt4dRpAeNgY8ihi0fUt9gur1zjlUwXuz+Jvug8E2pcLd15b\nkEnZJHP52hLFtwEvIC3f9wRaeecKwIeH81OfVhQJpJaEuILfTk1NCmOWBnqj\nqgJrzI2KQEivj1J5TcTL0XbjOsWs/tyNEea7BwOhGsur0zX3GvwD0caK+NPx\nb1i5\r\n=yWaz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"74d7692f8167c2a990da156eb25cc6958d0a4379","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.50-renovate-non-major-74d7692f8167c2a990da156eb25cc6958d0a4379_1611377936495_0.5767127936020047","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.50-renovate-non-major-99b1b4f4b47b3c68d917505a2b18c18ab5f8124c":{"name":"@balena/jellyfish-sync","version":"4.0.50-renovate-non-major-99b1b4f4b47b3c68d917505a2b18c18ab5f8124c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.50-renovate-non-major-99b1b4f4b47b3c68d917505a2b18c18ab5f8124c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fdbb5d7e0ba3818c6472ca72a66236f19324242d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.50-renovate-non-major-99b1b4f4b47b3c68d917505a2b18c18ab5f8124c.tgz","fileCount":19,"integrity":"sha512-SPOSl4fTlnQkW513AOr7Yv7VFBy5IA9MM4SNheHZTQw4piI7bYJ8L89Y3xRGzfJLTTkIn+Cyo53qUGWfF8w6Ww==","signatures":[{"sig":"MEYCIQDvt4LFmP2qKaJ3LzmDV0wmkIPJ9lICI1Xiq0907sTGYgIhALCYztR03LPIiCgJj3O+YrYfF6EElQgbuKs2mCuz4C8R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC64NCRA9TVsSAnZWagAAldEP/ioU40PdCHbDBXG6w4Zn\n9Fjc4lFFtpw+21A3EaDIOopCyzpDBhoz03tIjPtWJt7/7Ic6XkqeIDsJiXa0\nVrKQ/4myPcTa7w21vIGinDZsnCK4DutxkXhQDRG/QgQlGiclSF5LqZuilwAr\n5RhrQcf1qYqALN6qLAOcCSwNCnzLcOdYia4y1OQlboZZhpeGwdwwEbWYlTlW\nbkodzPUNAh6eZfYHOhESmtNFZJAPr8PjSsIbmRZlLMmbCNZ1Narvj5+r90Ua\ngGp3LAPz0wsFV3Z6ZKN83LMzaevh8jatcjIpUFk/jcc5V7lJwyVtzcYtyqhf\n5lzapXNFKtmTbmKuc7Xroxr0fnc1hQ5OzsNVh82CLbjU/dj0HSX9A3mlbug4\nkNtgvOdapL85VJBdSBB+edV2l0yc3Rj4xzk2blrU0DK4H7rR7YxBDRIcFaRP\no/c10pplTro91GGlOduJ5KsD78xOESpyIxER0n0/auTc5ghc0H2FlJSzNrsV\nk7THARGz8d0KDhXG+0JuCldNBoNr9YOW/4Q/pohvMM5ohGZJRvCYL8gWuHu/\nRQWwhnXoMe85NCTY6izL1XrZDMMy4kLtu7KN6+jPXle9M+0JprPeIwm4Y9tP\nN5iZWUdaSD+9Sq5RdPidLsJ1UGcfs+LttATaQf7VKIXV1SS2WlIaujy4LgtU\n6QFw\r\n=kNeq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"99b1b4f4b47b3c68d917505a2b18c18ab5f8124c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.50-renovate-non-major-99b1b4f4b47b3c68d917505a2b18c18ab5f8124c_1611378189155_0.7196503180755083","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.50":{"name":"@balena/jellyfish-sync","version":"4.0.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.50","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d05657ca2d886d975d4ff3815e1c15b3769a7216","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.50.tgz","fileCount":19,"integrity":"sha512-QLsVM3wRwVh5/MYBeuhPX8h+zEIDbniH8iChMufaAYvnd7OMibJjOXYid+zQ3FWH2hfJ1I6IEq4Or8HAxzOfAg==","signatures":[{"sig":"MEUCICOiRdppcJ1ptUJf/DY5l5nRFtr13c0eHVLkXKXMzJzOAiEAnjYcmCnC/BQUzw/qEImenTjd2kfK7X6GBwRMLBOFs3c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC67PCRA9TVsSAnZWagAAWz8P/0YLgzlxzEJtYSbhmLLz\ncz2GfibbnH8VKC55qStMcPeRjUr3bhkDFmv+SuvdAq6O7TKD6t/PdSjOjytW\n8oj09KaU4+Tvwp/FZ5RCPLzpv9kE6Ww3Pub0hYdPIP624UreUhnao4fivMVM\nhArhpYF/3nEd5qO/AlP5Nr7F6dBajidxIDejdNV6Fqoqwrp3iZvw79sfTRwN\nZ8N1AmaUQBdyhZJ3Ns8N2QQNrlMMRpQ3vtOY7r+nQHXUC478JaHZ3V2ORsBI\ncy9XU4Dy475Oj33OHkLlxLaiRw5HVxOfyOVQyUts47ORK7pG/mm9T7TpimuL\n5T6cCUQjkp+FV2YHlsEUz+IHVubK5VfEWhjzjtv34eZpm89lWd9RRehHXe2a\nrPvI5ReaTkJ5M2ERhN75FQh4VeLd6tvfCyod0BuKid1ZQx3ZVe1t9yFLHaDi\nDxtangpGTnVyUiIjIrDwEIJrRUx/IGLeaa2JeFYtQOPZfRPsOA2k9BSxexdU\nTP8DsdOI6lRIluHkUEYdeM7A7FbiT4S5Iojz2BYVwDfBBwDE3tK/Be0TsXML\nHfbuVwl7vzOKS7bt+gL3ryR5mJQ7ccve0HAKOX9l5cQ+mscD5H5RPDM7YkqU\nI5YxpI4lzrebsIL5LCcukvPcA90dmCUIDegIxUOOOsQtl5F5a8W+92Qr05rK\n460r\r\n=7zGZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bef19aef0ac67046971ad7649ce61c7d135dc52d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.50_1611378382486_0.9095766208346552","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.51-renovate-non-major-042a618782482a4c428d446e3537e87b5c7448b1":{"name":"@balena/jellyfish-sync","version":"4.0.51-renovate-non-major-042a618782482a4c428d446e3537e87b5c7448b1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.51-renovate-non-major-042a618782482a4c428d446e3537e87b5c7448b1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"637dda56691b539543840af0bdc73e7003632704","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.51-renovate-non-major-042a618782482a4c428d446e3537e87b5c7448b1.tgz","fileCount":19,"integrity":"sha512-8cggn60T/fM6JOJi3bX+0NX1kJhzq6HpDz6Ol0kNo+4tVokl51qtYX+D10FvVsCS5o0hHGnYiAG8ZvThw+xI/Q==","signatures":[{"sig":"MEUCIGPC/TnoTsEH+weeSw0duZPW6aW9Kcb3TOEo9cYEpTiKAiEA8b8goTiISHtOIO7/3i6wbBWo41QcaO1I+BpWCpUU//o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110672,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC8KyCRA9TVsSAnZWagAARlcQAJsHHtihrTRX5yuDgM56\nqhDg7rGy00GU0zxWjCnYi2l10Z2j/4rfMEVn7YBi2Khlz0chxhvT5IobGC2J\n1+MfpSKCFQ/bEO63QUacMfE/pu0cSSr5jLFbTY11vlMyOEmZm2AyTIO7xeWQ\ny/AGaKw/ldt1uITUv82aMN+UwQwfa9NA4NYr5M2k0xoxx2Q1sObKS1gDLFwi\nvPopUOYq8Sl1Lo/QekxYqkZKMf2pU5XhnVJhAOupV4oBhmpcSZIlNsfelvRi\nbzmPAiEf29IxY6WxGV/QQuUmkzDC13ae0WCrFD1EE/T6b+5h6dEgIQAZYK5S\njw+ct4AuyGCZOgDt384RTpQdBtYiDrA38Nvc1ryoL/2YCh2oufNt9CicGRJ/\nA/c6C7MCaqpF923Z8wUom/PeFJMl4ReeEZ4Xa8jUsi8XNZvWre7/DVE3cOWm\nH5ubzDbxFGTgNQGT0Ac9Sacw4+X/bthEKvi5GlPrftOOBqkfDHdGNmkNPC5S\nRBoqexYqs5Wa0v5dXP+xgWnt/X8NwYmVi6bqWwznBAc4Kvpa7tHOFF1MELo5\nX2yJ4+SQfxNShajIyVm4GBv85pg+ceFP6htwnEVkg9QvhbDOjRJGKJKAovXw\nIXy8qusJyJQ7jSrYzzn1N1E1J4cjRv4KmOf8tjmtw8GBP+COO9lDz0WkT/Sb\njCL3\r\n=2+5o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"042a618782482a4c428d446e3537e87b5c7448b1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.51-renovate-non-major-042a618782482a4c428d446e3537e87b5c7448b1_1611383473668_0.453363565324721","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.51":{"name":"@balena/jellyfish-sync","version":"4.0.51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1af28bafd9989a449309b931fd12395ff4a4a59c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.51.tgz","fileCount":19,"integrity":"sha512-9EJCIZZlscdOS+2fwyRBIhH3A2L8D10U/1iM6sbYgWwQT67V0zEUpsCmuN2vYM+kU/Priy1PfJas9NJlwjBL7A==","signatures":[{"sig":"MEQCICfVrc6wAmE32o9f1SfIPpRnRMQlkAkLpkpPIVvrhHAwAiAlyY0/WcTfojhQpfOkkYkVRZggf7FDyiPXgpCSSlMmQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC8NiCRA9TVsSAnZWagAAjVcP/2Sf7knVDNLvjfShHeQj\njvLRzIlrjn+z5nNh/RXvSrPIhFL6DRaNzZLrfsvSe5XI2uxxan2LnwwftfdR\nIl2lvR8ygjNkHy2JYBcSqgs4tGA53T8ows17KDGXIYLx85DhuPk9sdTeORTS\n50nz/RaWh+9oKkSke+gEKqY6TH11+DWAWeM05tuwzrQLPA7Akyck45meua5g\nuZdbVg9WOsN4fMISjeiPNs4elPsx6xY3xD33k2wqltSAPEwPc6ktIR7X46h0\nIX7vIqfojyWpKWpHTxurO2kiNDH3HF+LpvKz6/Ejq/dCugWfcR0HGMbcO05W\nCauBsaKj39dzXT870DWYpD16ejCGruwPZrr6+QeXVQspj/SK2S5nfvxBo9Af\nt062gz0u6mTaxO0zNwkSfXITGK0Hlf+k+m78YXJ/bMRq+S1/0CPN7mckcOUL\nweZz3Hr2Xy/8wfJaHEkaQgmHltVC6ZsWHDl+uL1MaetnXSUwBtQAq9Ttrwq6\nF6DftEPaHtTaoDWku0LqeGhXa2ZdMJrPiocDb5+e0rwqfvU+F9ssx2FaxjiN\nFtthzADgyf0iZlglMg7IEhOUCHeDyIgh9wK9UoOfIRt0wldtAfetIPrMqlvm\nUu1K7XeH+1pApcHsVE9m112gKxMRMb8TxiZnUgLJ1+mDB/jNKO3lG70CXp9r\n7t0J\r\n=QQ/8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8e62c1077bfd6db471565730ec93c8af19aa4f93","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.24"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.51_1611383650177_0.32405066935181326","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.52-renovate-non-major-4609b91cba975c5346c181a2a585638f65a05b1b":{"name":"@balena/jellyfish-sync","version":"4.0.52-renovate-non-major-4609b91cba975c5346c181a2a585638f65a05b1b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.52-renovate-non-major-4609b91cba975c5346c181a2a585638f65a05b1b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29a565c53c6e418a386ee6fd065ed4224961a314","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.52-renovate-non-major-4609b91cba975c5346c181a2a585638f65a05b1b.tgz","fileCount":19,"integrity":"sha512-mZla/BfotHMtFeWBokKDFT4bfBZiOpuFjV/M0p1cd4Z84xUi8Y6Srhf6NI2T0psZw5RvNW0sg+T4kUr9u95O7w==","signatures":[{"sig":"MEUCIC9rQ7FeDy2nnOC7VJvNLZrTKdvTGP1d67E4fN5F755/AiEAvbI+d+zMke3ug8rSivjl4xnuImcUBDs66Kp1T4tvzF4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC8SWCRA9TVsSAnZWagAAiigP/j7OXI6dVT3AYRXC0Ld3\n/EkyHsTvt0ckj9bFQm2COHprZ6vhTSh05lAPtT/wwPqAX5GMQ3zPImgIBs6v\nVtzDfZZwjl7Y/MSnNUlyQNEl34EVbaPjYNI9rKqE/RrSNC5fKhvR+GeJc9le\n2sIJqv8Q331irOcMlhASaFQUBmVmUiTa+BZLv29nwvQtbq49qwp5SVo8cmVv\n9h3vglqJkob0qBqDdgQEtG39OwXTC7HuHSN7VHT0qySUD8l+N3+IPVfqUC7r\ns9LZM60BWpETQl4NJIFMxeKn/mge4lzkdcSGPN+r4r88LN9IeGDBsh3O5ZP3\nAV3nDPnlIXkp29AUj+aNom3TN9d/3s98pameIuDx2676WtTOJ9XV9KHEKLsG\n59B6fnpdQfjT+JMKtR891L7QPKL5i5CPE3prJgiDny8acLkdLQMMroGLZsbV\n5u/aJPp1XPrJd/tcV40KPjC6f0S0PQuxfZqNecRi2+5+7NpJDnSVnOGdRAXa\nzJuNQ0ve/pE/3H1v0N/Ych5CFvEV4SpGxznCP95luX3z3aL42/8HKSQZs/GA\nVTUM7l9sj/8XD8OPIVVsQPGw8lfG7N3I/GhlZWdUrpImkJPIaOH+bvg0bv5E\ndZwGtDRmEjFGQhPtJy3HtaXCLXb/R9bPoYZuxxgMopgnfnUPJnjivTRFcon2\npc5I\r\n=UBOI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4609b91cba975c5346c181a2a585638f65a05b1b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.52-renovate-non-major-4609b91cba975c5346c181a2a585638f65a05b1b_1611383957563_0.8715707341942769","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.52":{"name":"@balena/jellyfish-sync","version":"4.0.52","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.52","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e3860574d0ec77114cce6530e8cd74616030ca5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.52.tgz","fileCount":19,"integrity":"sha512-y8wOVHog1BbAhevtSGJMfrP1npr6fkXF1OxGxAsl01J28uXyLHK+cgPxnk3WF/N3UYVbHb8bhfrzEU4wN1NXag==","signatures":[{"sig":"MEQCIFAvFmziKJbk9XbkJmOvW+FMLbH4PYfVtxlHCe0kj/rNAiAkHdjRIPwrPIdQkVHyL9cDqSqPBArG4BL0TJZfIb053A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC8U6CRA9TVsSAnZWagAAvogQAJpzHFK+dpDIynmxeSpf\n7CXlVRu5Y+LpiX4Mc3DaFXb0eVHOCxAFatOtWqkgKAHq25U6ubu2dKYU3ToU\nrmwqIknwbkzFbTCKiAv8nIi35+qu72+XVNzasmxbZ4kC299OGh78qoYav9OZ\nTuk9lXgqy1y0u3zy+5Mz8NN1eT6EDlf1bTmoOkljtuSRkZs/FK54ZKKDWIy7\n6ddoXIFZbyY8w1QPAgO9MsdGZpsJtMwPPogFKEORIBgpamxp4oT0yOIXi8vj\nCpzYagE6D94A3btI8zCpxF9LejFsZvq7g4LfuWYGkq0FeWy2xkf57eXEVOYF\n+S0ozlhm+Zpwh4RJEDAgxAv0+kPi9h2e8nF+U0WynphOZ18EJYP9nlQLLjAj\noZr86i2j+V3WbWIxtcGgrBRdhuAfwpsyvjJsZZzXDSoovI67O+F4lXyM8xfB\nwlgHv6gWjcWed2JPZj8+S0++eWaR9ppuij+Jqb4jIHDj4saAu8M5roEDCYCh\nVEuwcwdu0wPJNPK14dkkc1IR1imiTCEAOZCVuHRCfzuq3dUv2ylBPP15GDB+\nYG1yBOUnXl2Od2miWifziw8nzAlY8jBbWPt7wLXgmVa8h7SkmfuZTwKzm/bi\nv0LYClLTYbAs5okiVEN9bm+rvKIouwSOjKU/PZ1Ae2/t9NiXMdiLQ3kWwB+H\nCoqR\r\n=j6wW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"28f88955df4649fa92e06754deb687cea2b89de8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.24"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.52_1611384121801_0.4859523750301393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.53-renovate-non-major-bc988b4a78c400f2f1a608e4fdb0fc3255c68d31":{"name":"@balena/jellyfish-sync","version":"4.0.53-renovate-non-major-bc988b4a78c400f2f1a608e4fdb0fc3255c68d31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.53-renovate-non-major-bc988b4a78c400f2f1a608e4fdb0fc3255c68d31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b56164236acd60b9ba709f5c5d43e658661c436d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.53-renovate-non-major-bc988b4a78c400f2f1a608e4fdb0fc3255c68d31.tgz","fileCount":19,"integrity":"sha512-hvPqQ/ChTMoEIug5CRAxla5L/FlwY7AKKX7x74PPg9uboBOTWZD7GGaSG+8Gt6nCqob1gTYBxM6jGf3cjqQjIg==","signatures":[{"sig":"MEYCIQCXX5lLoEX/LaeI9DK6KgUQFWUiABSSD4o8mbDtYCgglwIhAJ2WWbWvO39qfYetb1oZeaDSsPvJH/yz+BG5uQC3opVz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC9pJCRA9TVsSAnZWagAAUw8P/1y2FZufKoAEaAN6CRo0\nx5AifWUrkv+LF3HLgRu5ZYII+ftrDnJPVmibo7cuWBwbkhHD8UrMPcwqVnQi\nV2GOB2ONXB4+KfKOguvDhisAwz9/DfEcUhBJn7rM7LTTX1hkZVc0Jb8IY4AO\nvEQC8/E3FHmwT8Qwa9rmKD0/O7tR5oKMO2W8TFCMULTSYVStM9dPP5uZH20B\n7jrt3Z8f0fwDkily7YeYPEPnsaKp3lm6pJ1enm6UVJ45zTmmM5cTIM62Z00A\nMI4ItRAL2EN6n/8/pSGq0T/3UW65kHRddNXxr3DROhJgqw1BMtg3G+IDxrtk\n6ehydChuYoa5ZbScWwXc5hP7ji9zttDhXWOucZPrPGu+/989hrBBTqHOyZdf\n3GH+KozT6rNrvjcyeaiqWhZG24qsDEUWL+bQ0fZrnYHY1VvD/+RdoXB4MKGi\nIM8pP8bKsgKDIDE/8N44KfjAL0C1N2xbFNHAziP3tg8trZALcBJOIpLUuXEe\nndZl6c21PX+YMK0Je50a7v9OlrNWF9rtkH+j551uj0djSM9Xu0NcTwXhqY8d\nswgN3cB4TeDhu4c+XP6nqyg5NywC2+0mBWTZI7P76dEfgfikAflhoLuxGwgm\nBQ5Pf2xUPLOs0t80cc+8wGlp/+0I46LEGGfUrn79OPAsm1MCWwR2g/HTAmzc\nEXwz\r\n=SInO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bc988b4a78c400f2f1a608e4fdb0fc3255c68d31","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.53-renovate-non-major-bc988b4a78c400f2f1a608e4fdb0fc3255c68d31_1611389512160_0.3291982525483932","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.53-renovate-non-major-9ca795682ca3a1f137d4fa2c711ee34781b52c98":{"name":"@balena/jellyfish-sync","version":"4.0.53-renovate-non-major-9ca795682ca3a1f137d4fa2c711ee34781b52c98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.53-renovate-non-major-9ca795682ca3a1f137d4fa2c711ee34781b52c98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"431ac1a5fe31e42319559a6401481e34b5d984d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.53-renovate-non-major-9ca795682ca3a1f137d4fa2c711ee34781b52c98.tgz","fileCount":19,"integrity":"sha512-ebsiZhuYFBI9/fXrMjhVSBCgeM6MQAxhkQ5Mx+6gsC0xxHwkDO3tvmGpppgcbEqHNQwvqk8oyiN4i5GmgIRLHA==","signatures":[{"sig":"MEYCIQC3VT8ScQnTRFKcTkc4qH6h7IZ0bd28QmEIn7qp3M8m+QIhAL3Cq4WsPSOuaOb+77OcF1KFY6yRYi4EMKQ+VRU0KoXf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC+tXCRA9TVsSAnZWagAAZMwP/3e3rtEpmw/SvLP1adrl\nJ+P+85yQ+7ACNI9trwQad0+UJHG9NcngYFmG4ylJ9JFcwoPM70qy/OKOpBpr\nn8fjTSr3s+6eHbEkz/dT1UwPVNkDEH7JzxQn8kjl6147V7CVxmxKk6XWaHpr\nPIaIYXPNffEduP4zA2TstFG8xLKYmF1b2QTsdirO47JTPeGevKzuNHYTgQQF\nElWK05P8E0S9aOSCKRMnHJTp+ZhRU074+FzUmM5qCKCWggz3XW4GiIbHIDcG\nZTncdW0no6adqlXi/C7eTUQpl6QLuPa8BbJsdOIkO9mdZAS8TBNf7puqWQjG\nKmcmJ/uxlejKYEO0w9NOsQwt8gt+Lti3EPmQwatN2qYFQ41vZ0rT3Y2j+6gn\nuw1IRw1zroDMxPTohWti1woyuJUJrvlbuOfE1vIVAkuP4gC5DanzILaVTSOO\n9QfCFIhXvHXxFM/JHhYegGU1wvm+TucNV0z4y0tUT7wrsIpN79zi0PShWqgv\nCVH6RTFCm9EcpZE97ABBUE1mjXrFefh0IdLzJnN58WVjVp6Sfeg0UidKZhBY\nTBZXmlezGPotK/o2xe/BDA2XGflxcEkXZuBBo1fhsvul3AO14EARpZ4ehwvl\nQueQ+nDoUQI3QPKX8x+GJrOxZ/jYZI0wT/hUeJxM2OXEgTyo2mEx1/S0qo4X\n0BWt\r\n=HcJO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9ca795682ca3a1f137d4fa2c711ee34781b52c98","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.53-renovate-non-major-9ca795682ca3a1f137d4fa2c711ee34781b52c98_1611393879340_0.9273293069211492","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.53":{"name":"@balena/jellyfish-sync","version":"4.0.53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c1177598829a6eb72d97cb56e35cf3c200433b67","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.53.tgz","fileCount":19,"integrity":"sha512-oSrIGU6NH7m6bXSAH87O4TSEcsSIAv8RwJuTqxdVqacYO4OnZUGF16ZhG0zq7cthYpH91oOfMUKZfVTGAklrhw==","signatures":[{"sig":"MEUCIQCEzLVgVubUXacMd52eHianYrtYp3T95MJXihJdsHeHUgIgautBrT8jiJlOAWgVNsutHSbCThlQoy7JQ0g5dwFeVxs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgC+wiCRA9TVsSAnZWagAAPy8P/32GgmDW55m5Wt7wIPD1\nY8sMhYqERKGAdWw1H0atOHZIRFAWkoF7bT1d9RxSgsixVHmfnpJ7FuDFW3UX\nGscAVdd5TBkjboX90I+Md15ZED7Q6dPDVFu6XIQ+sZWkpHxT5qL5lohoD1dS\nOxiCNUEA7jruqg/uT2nb8lYg+bbv1OZ1fjg0CQqXeAR0wFB+916j8S+9qEPW\naERdrSZaYhyGGGmbLqpjubzrOiJvMn9YTTifCvWxqFgutXnAyiQ0dFmCMfSO\nY9OgiyI3HKoI85KQFYAyuKDYfRscIyQs7iZyzAFsjDKDmnY7Y6miRVT3KRk8\nbFfA1PQkgP8G6E2E3z9kYUBMrAJvCj8aZwJiaF2iLzNSmsZrXlXxeExcGFpq\ncyX1KBFyevwPw78ZAX/sp/YhEetkeedej/thBM9tJZWjzsVASojWUvtEgzch\nVEEm9P08IJyT9R9Q8Wy1sm8++5dz1vMspnCmNMymPkZUMmlOp4L3fFwElpIs\nE81vV73c1AU/D5Y4sGsj+z0eMNmyH1sJMWPSgLxvxgCmdkchOMUj6MohF2nr\n43jjpmwR3Thnh9RDFGcxBBJmKLiz2XfM9QOEsMwwNwL34yjhXmaaqYQsW2j3\nOBK4zRK/AT4xBKoJNvQJ3iUnnCTZSVrjg5MLrPoQPGmdWMLZzMrlvQwVs2SB\nWZg/\r\n=rlyF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9309e498c479fecb1a341bc90eca30e5c04cb68c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.26"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.53_1611394081975_0.01463354120851501","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.54-renovate-non-major-6b40e06a61596dd92f02217290a103fadac85991":{"name":"@balena/jellyfish-sync","version":"4.0.54-renovate-non-major-6b40e06a61596dd92f02217290a103fadac85991","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.54-renovate-non-major-6b40e06a61596dd92f02217290a103fadac85991","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba87565c933e38a45e17acb8730481bdf6bc9c73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.54-renovate-non-major-6b40e06a61596dd92f02217290a103fadac85991.tgz","fileCount":19,"integrity":"sha512-PjtHFih3iQZTIFo+JtKDMxbDan7utZ9t4fq5Z56Iw/TB7V1h61jHgMZ4lQFMjmykBol4dtCDwUHXzzteZeliCw==","signatures":[{"sig":"MEYCIQDgRqOOS1IQD8rp8sCjuN5uqQ4QxlbByJrLHAsmJPp+TgIhAKLiOm35/0YKyJyvXuRPQFN7tBZVC4RvP1u3Pjqht8hE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDE0oCRA9TVsSAnZWagAA8GAP/A2LIxCLxr/45XsLxQwV\n0Vb4ZEavWXofKzE9Lnv46mrjSXbu1nvbxA/zoqe4zkyNnON8ZHXiQnhuIe7/\nttXGuOVSnWjp6NSKlbu4wYDuDshD4bJ9fwkok45cWe8VmnBU4Jdh5cITYbGn\nn0tgUwrAbSkd5S8e8ousyR8ZibLbcanM6vDErR4UChm+GekSRNy9+ICXK8Gv\n3bXUkZgyAlcmqKWFASYqLxHWIlSR+rxeQy8ndg0quOnAhLiZYQeXfqAO0tzR\nHJVCMziqSgX3Ak/DUUPZIu2l5n3YZZWNoW/9G7pcGQgkVy1jG9ylU0Dvbe8S\nHzV67iNJz0s6WtAx300Hv2z+HSA792cyXdjjodW5rmCHIhHGYUiuAS6poExi\nC0DwdoXeCANmgQUVTc2xWFxyKkf7l1xbsZRpOQHZg741zZB2JsL5BUtsExRn\n67R0H2Zt6nSvZJA5r8h9yPEk0apRDgIIDwwJS0rGSUNtyQ4OcN2d+N9HE7LT\nCEMQCBpm4raCNuLSofSvypjWN1dmwIoT1jQ83lj6rIy0zvFtyo5iAjndEggz\nmu1xDNCx0WglHHDAOdWpx/H1nI6feXxqwlViXUKC12jt+Qe9VPpxd886L4AI\nsGYd1akFUMATzM5rqBSC0iowVLvkmE2E4LW6phQZKQTyMmJiqMlLT2BhBnIV\nX1a/\r\n=alj/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6b40e06a61596dd92f02217290a103fadac85991","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.54-renovate-non-major-6b40e06a61596dd92f02217290a103fadac85991_1611418919886_0.6511469521743467","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.54":{"name":"@balena/jellyfish-sync","version":"4.0.54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.54","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"37cbe5d3ee29b2ff5242b08001beabec874802a1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.54.tgz","fileCount":19,"integrity":"sha512-G2j9FiNeK88aXcyHYafDoxTRIZPli1a0TD7oeyHzF+KX3CEp4Slq4/eaviWNVJbVj5xmWgEbe79KnB/czaVR3A==","signatures":[{"sig":"MEYCIQCTKCteStCPjejTOyEZz4iloozuwHCE4hRKeE//Qor/8QIhAIMPxkibpgD60B11q0XMN90U8X4sTNi/LaXS4IsihDKT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDE3fCRA9TVsSAnZWagAAlTAP/RPEzPqjM6PU5oQR++js\nPZ30ARkSYnaJqHo+ckPKTS/oA4jLvxFQ44icfHp/OBXLHddxMFf+g4XaVV4O\nw0eo5UPgUEsnvJaolWHlXsu1Dgpw71MsmuwhjtsWSuw7/LhsIcJpxTkMFTY7\nExv3HfBQq08iIcPk/4+zU0OSS2hekBGFkCn8rCgWIV+DyDe+Xaju9aahjeQA\nF8NQuHHc4Z/ra80n0VwyMeuaOiNmUMw8YFqmFXU9IVT6dNbEZXa3p2BFrDcb\nNmp+pUCRm1E6ErDagcvDEjLWT0AdccPsHd7IFjER8leCSuJd/wnPkx7sEC2C\nZpUivBeoPIfl6XQHL5679nqXrDjcJ2zhkT2YhI2aYjpa+ckW9AQOyevm05wc\nqnu4G/oVl9U7Grtkx0gq2Q1JiU65CZA+YnQQb99nUXqGGYL0xRnobhm9SSWt\nzalkVbQkrW6RRyhM0fPtvsSLYlEbij2tHJSW6/Aejcz9FZoZ1IBwk9hY3ll9\nXNoNZNbNvM+bazslwzQ8I3qTVhdSJvtUvwzN0WHSr02oOWWH3F0Dse+hQA3H\nUnMFqW0cwq5FBz/GGAJQHBjBwnrOHus1cEOgzZaoeUmozuJwrIhlipDgSWTz\nrsey+u/Y0S/1NPssXRn9vbxb+P0OQCYyrm0G7T2x+6gfems2KhOOSqUFpAkH\n4hBd\r\n=Kq2G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f108d93da02db81e6596928fe0a12d50970f0515","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.54_1611419103153_0.47509000434524484","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.55-renovate-non-major-a22f4b21ccb08a2c35d366051c99d083434e8d51":{"name":"@balena/jellyfish-sync","version":"4.0.55-renovate-non-major-a22f4b21ccb08a2c35d366051c99d083434e8d51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.55-renovate-non-major-a22f4b21ccb08a2c35d366051c99d083434e8d51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab397499fcf4c27e6c0f1ae5a6dc96a7ebfc4b57","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.55-renovate-non-major-a22f4b21ccb08a2c35d366051c99d083434e8d51.tgz","fileCount":19,"integrity":"sha512-Xd5PBeaXE6aZi8JxP/6VhDLXRHVqxVRfjXGtyDlBRlElwkG5AuZPEdOuB6vlXMauPXvgg0Dy4kPPZxh0odOZ/Q==","signatures":[{"sig":"MEQCIGNFP8A+z/oF94Z5wf7iUmATx49wUzgBMx5KwYmClDz0AiABxr7WCXKjP4HSwH5QoCp43bN6A+9JbEctaNo9gSOLQA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDFuXCRA9TVsSAnZWagAA/6cQAI2qDbvmDCJukYm9bKSS\nP7P3QEMmSPPJKVCHw7mAlkWMz+gEp+60XNocc3aph0hf/ZOfEMsTMxAgL+uw\nQlkklkrJJE15cGgJNUIM5VM1kjmHgLbPHSiQFeFl1S8wGiCOYThJTcDi47xH\nhO2cJ1kGJk0oPoUZTocgv/ytawOtZGzgA6+lvAzp+HxA6aGeDUaaq+DFXTIe\nicJoIwLo6Wx4LIX5MuQ6OUzg7rGH68To7juY0ILk1o8PIPSKtE2zBUCeMn08\nHmV2VQCYQOqCH0ol1btz3JzuU8Mj6FiAAz6cBXW8lJ9skzg6SUifN9b4myeL\n2NLs+32V4ATeGADLIv4puIqcxhy9UydNl9UFK04pX1JxkEfJp6YY61zUUgLA\nrtLnw3brEjRcRiGMz+ZAeMolbGy8lxK+fxAmH7MynqxnYCWu87Quw4HmGYN9\nmDSv4Gv9MciWmsfJERz/jWAQ/WSPtiUvzozxvVI1kjSg9T9GMQxQfY9BP9Tc\nlBg6YAWQ/sNehwHxllb0EJwkLtT3jFEcQP5HQOSKwM/t1YyoUajBTYOLgT/N\ny3Npdb3fA3hY8BOJw2wjBC17al7htqZNg9wlu/J4uKsVgJtqY4sctms5DE92\nRvUVmQXlMc/O8rdUr3nF7gMYecQlmXReZayyY0CK48DDdwSo/+AFgyxnnf+p\nWLiN\r\n=+zq9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a22f4b21ccb08a2c35d366051c99d083434e8d51","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.55-renovate-non-major-a22f4b21ccb08a2c35d366051c99d083434e8d51_1611422615298_0.477487722659798","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.55":{"name":"@balena/jellyfish-sync","version":"4.0.55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.55","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dad71f54e21a82d418b086b9a43a0ad9bdfab369","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.55.tgz","fileCount":19,"integrity":"sha512-jCfkzs+W7QFdvg0krHGNfsWrEC/44xGq/YWfuAjud+bErGlpmOWIp3PgRhLddjZpDaCokjjIF36lV4/urSIBCA==","signatures":[{"sig":"MEQCICCcmMUOXiBqlNbegDY8cViqVsQaTmRXWsbM4vLSTQUTAiByRWjOEOEBjXW2Rq70g1RqlNdbuD4dEnZar34yuSApQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":110996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDGtzCRA9TVsSAnZWagAA/ZwQAJ2hpg4IW9RgudG3blmL\nwT5lrC+Uwunss7+J3nDOKGWhE78CcdPyw0oEzr9m8UlwbTaM1iJP3BRAdqko\ngW0PO20FdYPzSww/u8qhHf53i+U1PEMfi3hYRIZCdc51EAs3/7xROD0TBkTR\nXsG4KYTtqitzGiBGQkqSx8X13VWHt+yQHYzynxqkuAy64nMFnpcVLMHj2z7F\ni0cwLk3OGZ4Ei7fZ3g2EtBCH/ooddoYLmCmAtYs7TJ1L0ysYA105CbQy+HZZ\nNoxgZWuT48H/PeaXqbcEMRKEqQ8HhkqsdiiPhCXP9PwGmJaZvknr4vS5PMZ4\n8TyJOD/Kzjm4jjOGXXEQndEavp2mmb0EDQBJGQ8iyCpRDiRO+EXEIDAZ/IFV\nZaKHXs1qpewTk7yklN/Wlh57zEr3cHWbvmGyqs5R1XJaCo27wxS4NK+KiNMm\nThjs9ltpzY4XYX751Fiw0OXbC8SAmyfuf1MrNRjWHQiAu61F+a01IAIU5H3w\n1eyEBZN9/rSYig1ZUYCovnxXP82sVc0r9XBBrzr0QUvT5uDmGdlq8C98mbkP\n3m/7WWqbyJIXKzqooYhyr1zA08/J+lw0Hai1pWc6eoHzh9vCC87BCPJXJxBX\nyZt+bkX2/PyJWw5+NqdfYjNPBkOVsLT7BucDoij8xXUk6z/XAFZ/AK7cU/rl\njWU6\r\n=7eyZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e2cefd5e64f2a4235c995c72954a783bfd0dbfa4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.28"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.55_1611426674517_0.8118172700853681","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.56-renovate-non-major-d630dbedd1a9262175fc3b18a4349776cb762a4d":{"name":"@balena/jellyfish-sync","version":"4.0.56-renovate-non-major-d630dbedd1a9262175fc3b18a4349776cb762a4d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.56-renovate-non-major-d630dbedd1a9262175fc3b18a4349776cb762a4d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"396090fb8f4f4324dc65b7d0089693533693647f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.56-renovate-non-major-d630dbedd1a9262175fc3b18a4349776cb762a4d.tgz","fileCount":19,"integrity":"sha512-fgZIFfJ6mj/EIjyDdcu5eSTElY56U6AZSRgtlpZ+yT2ZbwtPEFRpyhgXcXc5KGeaUaLfnqM3HQ9NuMTHWP+Zlg==","signatures":[{"sig":"MEUCIQC9ImCOFmZaSDtas16ZkuJazrnnqjzZN5011JCdx2eFVwIgSmpNpRzHIebtWR1minuY3mBJf79+pb86QUIuxJS6Sac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDXyECRA9TVsSAnZWagAA5ckP+wSKf753GH8ZTiH1cse0\nk9/ikk5E3/ydMZtKDRxYTNlZparp8ob2Yh7E0h3rZqihqsSnbTc/gyV9fRAB\nzxIfgYoQoOdrRj/6iuQUXPNNFCSJQj283enRXulkw8v4tvw94jgS2k9WAY/n\n/523Ns7uIYR60npiK447DvHX+cG+baxavW3DOv44vBpmm0/w6rl+sUETm1+v\nz0eyqyITf7Q2QEGi+YKELfO2dsa6FFsL3qC8O7hLBU2uOFJ29NKKJRm1O8hZ\nvAuDiPxrz4SE4rgygNsFFTdnuaRVkpi7PO2anF0h4uzn/jkOJjBtEAJk4zXC\nt4PxgVIo8hNUAaMIy+qS9IWSq+C8oa7a6jRhVE67aSED5H4OGkyErw6u2HzY\narh2iUAHP8GaZgOvH2JA2XnE575XKBLBBFsCVYYQJfc9PTKVBFORWbAo3NIS\nTF1DIUWxm2GUtJw0Wyr3OtlaLt63YaFIppZjJS2lKRT4Xz0padeB2G7DIOQ6\nYw+ta3RDBbcUQK7Ki+ujMhb4SgVRlZc22bbBvRsADmPPiPyeBG0y1r1siWBc\n2aWpXpQThO6dvykhG5rdh7m6YCvELXETuZyMkllQigyk5mWa0VZ1bH2PwB0d\naS0CvoL2cu0IDZAQeuggKWUZrR0JQH/0TYc9mBrnzMBiGd6AOf9V+qvIUGL1\nYaBa\r\n=r5+4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d630dbedd1a9262175fc3b18a4349776cb762a4d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.56-renovate-non-major-d630dbedd1a9262175fc3b18a4349776cb762a4d_1611496579501_0.3648810443553019","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.56":{"name":"@balena/jellyfish-sync","version":"4.0.56","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.56","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1954f0263a4bd8325b08b8e83140aa10c31cc20e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.56.tgz","fileCount":19,"integrity":"sha512-/2wQJ3MqDwZagRGTM9Krsejlnch++H6QVwOlSI/HJEk5Be9HthSRFyQSx4ntxENEWrdkZ2aiLEcIRFHkc2Wt2w==","signatures":[{"sig":"MEUCIEBCPZzn8Ui6pVFmVL3koRrQC13zWUiv1QC6XgcyBf2KAiEA/qiogE46tmviN+5150EUH99W/gxcFkpYXDY8+Ufywis=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDX0hCRA9TVsSAnZWagAAhhIQAI6vHfkaj1II7U6OILCX\nMXPFpTJyS0JXeQZ40FF+GR+QDNrJyX9WVWdjOfSxri2X/mbG0DYBVaw1Nafk\njxIgcoicgAB3vw90nVcP7RCTwdcZsdfKOfy7LVn42H0UbntudXACvIqBf+Rw\n7Blzk1wyPZXilb3a9r7H4xmI6x7CzkYWQ4TPHBOVyUziHW20A3V/3S/9VjAI\ndbgCPfNVpNmN1uCT1IqKOALoKtHkG92AhZ5ht9GCChAcBbv1EOney7NFSj1q\nCTIh6+vJFYPtk47VN93IkUC5GYPlOnuTbrOePCotAM6vZ7AL3xpwP8qndz24\nuRWJIhm3LNW7K9oNA9E2GXAkyBlWB6Ofd6MJxlyQ2wI16C4tOGutl+GPsacO\nHLqWYhgSjY9n962TYUezWOQZ5ESntNy/rHqEvtHRneRwUeHoIaQ7ZgxNz5EZ\nU/kI31WYiXzJuX9VrBR0xdY11zOKUII3z0PKzbXcullusTaoV4cROMJXrOvJ\nppC4aGLqBoWE9nD4p3bFmwypsFeTYvNdSaNnzfQKzT/UP8lemOi8F2zNWOMT\njoMhMYKSrDFd5yIhzt7lpeoK9uz/EPMlkQ+qTj2JHIcH0IIHqahEQHm79+Q2\nrsFOBAOUhepEzY7kizyTlwZqiAyx5qLcb+4JQiTpwQvslpAacGbIRMd2E3vq\nuP9g\r\n=24zo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"11bf5a2a3ad90b5b74af73359a1e86f0781022c0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.29"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.2.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.56_1611496737098_0.32087440325264294","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.57-renovate-non-major-6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793":{"name":"@balena/jellyfish-sync","version":"4.0.57-renovate-non-major-6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.57-renovate-non-major-6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2947e158165af98c265d8ff2f435cdda7bc02053","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.57-renovate-non-major-6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793.tgz","fileCount":19,"integrity":"sha512-jTyvmOP/GKTTZidRTXz/rja6H69ISBa7aZ+d0LAiM9tSdZaNhPntfO/Cm6SkOTrXYtZtcQsyctShkuV62zu5eg==","signatures":[{"sig":"MEUCIEDbjPQVxk58KYRMNIpOPQ9x65ecv/2XkISht0CvDZDOAiEAtEMPeEXeyB3R0zesxteClY6HrhAS4VI2TuL95g54HLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDYgwCRA9TVsSAnZWagAAYBwQAIPZp3cpQFjZpdgPBb+9\nFJZ2LdC1h8iAkx9Lx1J3vr4nIuQywog0mfU4U1wgIxG5q5m/7N9cUboeP/8x\nb9j+Yg5BiyVceAA+ddWPE9IzaXUXKT6RYVq07JDsv+9IyRJC9Na7Y5yPaA5e\nAOmFQNNgP9eaZehAfxF0PMe48iSVMVl0acledr/n5ko4o6fHcA8203caDGyo\nWPlZGiliJo+8CAkCBou3LRWGBtgLYEzL0l0OOHIVDN/pl8YVbrwRKOqRfbW1\ngXMON6vEFiJdIgFHJbLsMhEwmy0lj8hyEMyZ8F8rd++qzRlnPhCO5KEMiGAx\nr1pQiUWTW9UcJKdwpcz+QDdFzeMRav5LQrDH9waM7kBnpuSiwqbOzDr+8jhL\nW+oqhkSUzMyUyuUbs9iI8AqFcriz8tSj2jYaUZOJ62bJg/dpX16LhvfAlVO5\nIZeNW71KHpkwFYAl/RhTra1YtElwCOxVDlrgDnF/wjNCTNB4nYZfSj944COw\nCHPy1xkn8e9P/9+k7LLIQwhxoFH+qjC8r5rakfDQ4fWcJqQJBuX7v86rSA07\ncLL21vRtGLAJHGkhYTSwOqsDoPxsUOYA3xEeRUBzb1SPxDNBRnljHXyQ++Is\nUOkeDd+kTdYw1tux8eUrvKl+08xmmveBF8uQEXZ5OO6NyEvdTK82ncLq35RU\n5hb/\r\n=ZPIW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.57-renovate-non-major-6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793_1611499567461_0.47818463557766666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.57":{"name":"@balena/jellyfish-sync","version":"4.0.57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dc23bec08ea4e46882a100b0f06e33ea1792cc4f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.57.tgz","fileCount":19,"integrity":"sha512-A7E0ZrZQXcPs+EBC5ZtFaFJTQ9q4W+9ylhgfF2m489Nb0hsqIi2V89U5y3mFSHAHwuLXh4RzFY7+Q+6PT7z90g==","signatures":[{"sig":"MEMCIFiblrm5rspJVm36q+pAhiFgzWHPqGm3dMWGM4fjCPFVAh8Y1MNjuRqgP410cyE6ZLsjjcv2G+kOIuY67fAcwP7H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDYjcCRA9TVsSAnZWagAAdWwP+gJfjH5UMZlXp9+ffkyP\nl62NOYGoqLelxslMN3GVPDsmU7ZuO1V7twLcc90rysx6sJb6k6Pw/jh64m0S\ntoreLrKEIVbsTvFhVshBH33+WxFbhLCzgylLFSk04OIGi+aM22soGJ+alaeO\nnXIzcWnkPKWkZD86iNqU4NpaFMXkiozxGjGZ2sl+l36yPE13CJy1TM3D1xcc\nRyPbqu9XS4r7gPAfALISebyM1YprMYGQlX8ufNr9PgA06lwLXwfnGBVeiOaq\nC9qLQscSIplR+9loojXHUr1jsY/+xgAk+REqT3OtXRMBvDqk9DWR13RPpJcr\nDu/97z7oozDCUwuIaA5pQv7r3dHag0J82rqcLMj5vlVzDFH5/dnka1gQh4KV\nLTiCxruk/lWEQNt6ONBE0mCiS04Y/armnuZdeB5F/j0OKAPQyfdnVNKXfhpD\nydOcCZVLLFd9s0auaQtPl0EDQp/GeqF3yxTKJHCOJGC2XEj7pql47vc9UMky\nvAag6Alhx0qYIL1b9q/PPVm/L/bxP+l/fs1OC7uCWd8xn9lnJ4vusw61uTno\npMUu+M5SVBFNKkRipQaVqfMoETgkSuoynJS2xFPcGQd2BWN/6PH+vmcfg8d8\nM4JYXdbOdmsUty+i7bczp0hERazbbtjzhqwfl3NWn1HV4y8wBqrJr4hOf/y4\nNxEK\r\n=3OUk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d6ddb2b70497f0435fbd4a6b2db8a3a2126ab230","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.29"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.57_1611499739776_0.664827270540667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.58-renovate-non-major-f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8":{"name":"@balena/jellyfish-sync","version":"4.0.58-renovate-non-major-f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.58-renovate-non-major-f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc25d2fd88ccafb183813f7f739cf211a2345663","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.58-renovate-non-major-f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8.tgz","fileCount":19,"integrity":"sha512-BjQNthCYz8ZpT+m7FSZOZcnBidyXcWY2SVc1udxQius+zd2UOwS3u95Ep3O7lOR4q2fzTmSj820G8eudu3ON7g==","signatures":[{"sig":"MEUCIDCu+ASwBhxS/tVeU+sDHbHD9c/g1XqYTgR7twKXsTuFAiEAqW+Oowss//1tw/sf5uoLVkOx21ie9XVF4CFolJ0I2VM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111295,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDY3fCRA9TVsSAnZWagAAHvwP/AxB8hGm8wdMgW/DeVEf\nNsNG2QHQ76Xpl4YHHXwxqja+iRenVLcvkgujUno4NWhvm/UT8hK8Sl2p+Vcp\n0LeTTW8f+QHXUquP/exgdeLOVeh2PMVVnhmy1ywBgp1hXVAOqSDw3sijbO3P\nEmMQwzIiizA1D8NR3S6O9SK9FVnjn/XVH8BsC6QrxnPxpmnFtlE/idUjYFlX\nUk0eCuSuOUbo6nLQh8aGYi+UhR6yTsI1p0Ov1HMfTTDiQfVQXfpAAFPocV+f\ngR71rGcbIgjZiEYPGJoz7Sd2bExbnY7ADP7Ip/L4v5iyQkGwZjdsgyNMpIi2\nGB63bMXzOIHJa4r6couoZaAMPcEO7LppyM+MzJwUAnwXYUuDKkcGF+V5403X\nrNCFZJlZ7mfa2q/qD/U6R8fgRc8DSdlEHUvfgj8SVo+W+Zh4pyGhy0Ih7Ats\nWNFNMkGEjn2CBjit2ScnvPwN3jCt8lW7xZreAPtG/Rcp6aJn7EY5m0onvFg7\n5AB4pY/7sqgohlGl/fhylnsMsYbDwPz5RHJEqB9DYmq5iroO9xyWm8xrBr8Y\nnSbbjyTPrSC9EhMkti3nVTZYc9aLm0JPCZYGqLBUSIWlmSFRPkFY67MO7Qjl\n2qYsBQ4VnFixqy/cXDMwAb0adPIBdGqEwkHJ2rOAMwCXBAMPwBtqf7/adcAS\nhfms\r\n=AZhp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.30"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.58-renovate-non-major-f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8_1611501023189_0.5636309507711805","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.58":{"name":"@balena/jellyfish-sync","version":"4.0.58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.58","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"62f0cff6747225bc6185ffa0f794c444e23b2120","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.58.tgz","fileCount":19,"integrity":"sha512-6hzvu30BwP74GYopGX4DZK1eC5HMP5FeKo4NECoU00jq0Bzb+AkJrJssDVYHpShmwVU3UNbhFJDyGOT6idih9A==","signatures":[{"sig":"MEYCIQCmjdra5iihQv1rkgZe7ZPoj12hMY657q1Hn2a2aQqCrwIhAK2LhxM3sTPp3BAgUmX7zi5Ls28RMIiy1KU9KLQ3lzHi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDY6TCRA9TVsSAnZWagAAm00P/RODod/1BWKA2UIE0rFu\nQR7cUjl44JFIpwLCgFY/XuCOiV5disT0oAX4DLUWH0QH9NzGHq2ZNBizfDJO\nVenB572hi8TbZJuSA4/Ft/sgJY6n7CgT5Z3iO1Cejrb4Xi3IkvcUSoioWXdr\nfk8zbkbiTHiAxBY/5gwOkAiM/vJYmMlgynrLT8r9QsNR5MY8TUtwQsYohDwS\n5xhVIQl8AYOyTTbWGJkL4TYRTrf75Cx0XQSls/CDIhdbpjYCH7b+JIRpTM6t\nKgb5xj8O18iViPEcuAQ9prergAOHo+to0eNi1OGNfLF08bjqwx5HZ3lVeI1c\nnlR4Sf3iIOG+M7gvh55ZJgi6XyxW3ToyYUGfAzjHpqopm310yEvc+NGy0Voe\nUErElVFcVd/PrVy2LZkCfo4Anb8fSaIZQrNpmghjM/ItYXfqZ6PwcC++b1yB\npvVMlx8Mf53NusEavrlzoW4z2hzmIekRqV0KQtJAmuBgkUwETY1xcNeWZ6KU\ng/Ms5OiAT1oTgq9syNd+zL9mJ5HS/MhiOwWh2GGL5NRiT8Ns9tnIgjTob749\nlbJI6OKjQUTIbStTrBH7wtnoeCW05dD1gy77GGmss21d0fkKCavqtGC7En9c\nereIxqzwTRlw/Jvk9v0h5Z9pvKSpyEo0SMxYtXVE6FSNnc+L44/2SKsckxgY\nRHST\r\n=N3er\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2abb2621a357495f9b8de599c5f68a0caefee9b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.30"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.58_1611501203307_0.5567804246918933","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.59-renovate-non-major-1b9717cd869e2972f3c48d739a78787eb456a92c":{"name":"@balena/jellyfish-sync","version":"4.0.59-renovate-non-major-1b9717cd869e2972f3c48d739a78787eb456a92c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.59-renovate-non-major-1b9717cd869e2972f3c48d739a78787eb456a92c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5cd937a5bcb1aafe59f4423bfe4b8eb059cccf68","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.59-renovate-non-major-1b9717cd869e2972f3c48d739a78787eb456a92c.tgz","fileCount":19,"integrity":"sha512-WEFtX1rPlMIILqfF8gWekYiEiBUoOg8wwdytSCW9y9+mYNGMUHjbCoP0kZG4z/FxoKYZaxp2wnBIJn4AXAeuFQ==","signatures":[{"sig":"MEYCIQDeTx7D4H0e3R1QA6uqXpIjKRHS3cYmsZn3jnV2zTehFAIhAPKHNtaEypglW7+PjJ+dHCDCBpjyEdZaWQU89qiRhwKh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDZ/YCRA9TVsSAnZWagAAEGYP/1jOgZo46C1k5CPoRT5Q\nlvoceR/usPD6fVbpmp0NkmkOXFUx/4SUztSV2SvKgvgvLTauUNa2G3eAp2MW\nyW6rxLt8o54KqirS1MaesZqFyfPzKD5ySqgJZsR1RDNKFNsdbd46fV3dDMxh\nU+sWdi7/8alIOcXl4NOgEf6UXzDd5T72j831SnyW5Zlf6sltOAfpGcr4JtB5\nxaoPpqD+k3IdEHNzjaEyW1H/lUhjbplyb48Q0zE0VwBj8FuDlk8wCnMPF2tB\n0Ql0FiSu1I0qklPtujXzVoW9RKDaJDuhzpeWrpWtpcv/qERofQmcrZWKj83G\njWMVEpvmiJAehbLQKSvioH8zZmnviz7N5VPRQ+CkE8iQoGo0BdaBEcX/jvaf\n7Fu9BaYvb06+d0xyA6RNtmJxDI0eGs1n3OZGsQZSJSKo3SWH0NMOZwkQavKH\n6z0VK+SWp+FmzygMf+nK9RQboInX+54eOSG7hJeLZVGTba/UdgwIeWjFxCKQ\n70OIA/ge6O50SVrry/6N8vZU1y83GrtnufndJ4MqaP4DaZsq8kE4vl/BXc2r\nvvzPTRXffrO1BRKdSumZWHJJF7cYQEhKL5IRMfmohziWLU+CgKJ2W42yB/H2\nDiz5cQpw8MR2l2yVw85IuiZfD9h8O4oceNXhZvW0CHD6/5axaCaXYHTMY6YB\nu1O3\r\n=MFw5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1b9717cd869e2972f3c48d739a78787eb456a92c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.31"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.59-renovate-non-major-1b9717cd869e2972f3c48d739a78787eb456a92c_1611505624320_0.9342112895882815","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.59":{"name":"@balena/jellyfish-sync","version":"4.0.59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d7ffd2f584af6057b77ec7549e23c1825f9bbf8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.59.tgz","fileCount":19,"integrity":"sha512-QoO7nZR/fpnMyDvBtChEFEJKZ4uyrwlLvVgNWmrZXrO1Kb9pUctu/pw+RIgHujuEApKONnSWbYkJoTCOJb0N3A==","signatures":[{"sig":"MEQCIF2jNVcmWE+4CGbp5DTV07AvY0G9VuAagYmw7HGi3wqcAiArgBXpsb42mMSET34SYo4EMRIkMPItGkRnaN9VSocp/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111342,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDaCNCRA9TVsSAnZWagAAqBgP/3EAsm1xpIc4jZ4MJR0s\n0fAwTBx6TM8FsNwyCEXzFWPLou1YyfR3gQV7SgAPjEYbTANRyUwYwu+l3R4k\nLCWJ0BK8E6xbvJA5ecsMcMWLD+8lNTBtX7uvAQTwL9nexYzkZk710tkWzUqv\nQ3egmN8bq4KZcjmeoUbj6BBY6k7QS6ATW/VtlLBpTr8Xc6DKEOZa/jaLJefq\nnE1A3KjrMhbcKQiZW2dtJYmNPwY8ODangi33KQvclopMNv5sWCNcbfMqOAiQ\nYU6e6cuD5lo4Vry7w03NcNg/YEwktg2Px0ov0NZy3bey+Q1bzOUhZla7yZQl\nLrYiPWY9bie5Evq1fc/QN18jafzZvt8UaUN+RzEIIcQn2AIM8blnFPNOMHhu\nBOSrDYGN5IxW1neHQQnp7bsOdNO4yVy13NwFdz63k/s8+naxZhcwg8vF6oso\n9RGMlzqH3DweYGRbLbfqqVM7a2z0lN+F6fTxN0SJMy6Xah1evt7XsrKCgGm/\n/PWbbeT9JgZAlVcr2e6opzQva1o58LJSty3tTlGgrVSnAaLk5XNU+Sb7YRHb\nW42Z/MUoJrElMjCMyXmHfhqrzHA+NSe6PYk+8ay3tooldb4xSLpt3rkJsTJE\nzDO+z6yC97SlSYwjJaj+DF5+ZOwqJRCnBWZIvmM8Ehck/LI+xUpMV1l4PGBj\nISbr\r\n=FUfm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c8bce091d6f28c13f49ba61aa2356d64523ef225","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.31"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.59_1611505804749_0.7772612191632229","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.60-renovate-non-major-babe746e8eb6610acb7f5197069e4e24f419e53a":{"name":"@balena/jellyfish-sync","version":"4.0.60-renovate-non-major-babe746e8eb6610acb7f5197069e4e24f419e53a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.60-renovate-non-major-babe746e8eb6610acb7f5197069e4e24f419e53a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0494919a4fdb176201475b00d80d0e91d8ae1754","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.60-renovate-non-major-babe746e8eb6610acb7f5197069e4e24f419e53a.tgz","fileCount":19,"integrity":"sha512-JBm66iH2cDCSioLdjxOdruak4I9VO5F4/GyNfrbx/r7Y4MDlp9av206Vu2EkDJN1KqiL1YwlnEJSbER3tMTDbw==","signatures":[{"sig":"MEQCIAU9oWNL1uQFAbdV1OekE+Y+ZzOUkhbxHTHzuCC+9NkIAiB5ptc54o/+hJlUCaOVDE+1BmSWPFN2qxQceKk2xNWsUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDbPbCRA9TVsSAnZWagAAH0oP/3qGrl0yY97Swxa1itEL\nXSCJt8gUGMoQ8cjSscF2jgeVdI3YoXwfvT9R5UXLVu7UBZusygdOlZvlaNQp\nzaQ4vqEOkM2X///LWVC25SrXTzzCi+o8rW5SedU3yM9ZtGhcm72mnH7ncQtX\nNpfeoP2KYn+5XFDcAC7wU2FU+++rYO0gI2WdcdLnK4pcCCTz/t+KYw/V3PAP\nU6tYqly6pxOoI7keFLteF5iRiUMFiJLasX4iFzsm+307oQdCiQgUM9Nk0c/J\nvuOgb97SCFlWAuxt/LvHFdo6b76Od+cFpEwrM7x/fc4TEYruoLnMqzSHniBN\naIJ1QDfEewBECTnLB4gaQXl9rJpwTfomTV0rJh0y5BtJGbRiX9bb1FqJS2XG\nSscLc3h82lcdpdxdweSutbL4AdS/kdUWKCo7wMFtNtmBSSzHg0fR1wtksS/H\nD1cjbrVac2NlviC0Eb7g87ZadbTBvbQeHDJV6jvuw+9b0KOyGQC+90DNsb64\niSiYdupYMxbQIxTsw8ITyANSWy25dGXD/nq6I4GbUuzIXznrHKbdrKiaPlG0\nQcs16EddH6oBdgWR6ntRiuZcL1wMz2Os6Aa5LUaqeuuvFhZeLZbJAXVS181M\nK7tSmDC80023C5/T+bvc9eadUNa9tJcyhSKWNvZN83zbzDr4yLGLI4jmH80W\nn4rd\r\n=IRX5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"babe746e8eb6610acb7f5197069e4e24f419e53a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.60-renovate-non-major-babe746e8eb6610acb7f5197069e4e24f419e53a_1611510746875_0.4560045804227273","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.60":{"name":"@balena/jellyfish-sync","version":"4.0.60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.60","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9498d404efe1267671bbe1c78504951d147b308f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.60.tgz","fileCount":19,"integrity":"sha512-8NkT6t9PRggqmjs/ZS96NlMAg/8WDt75v2gXOl059CG1H5eMNwZIEZ2C68md8vmMnbVmBULHgNPuoRxlULnKcw==","signatures":[{"sig":"MEQCIE/RNaE7AUXfAUq4MoqCiQ+at+N59XzHoeg5RIoOvljgAiAx2AbC134DVKkCecQ6zsn6NlgC6wBoxntAlsLdk43gvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDbSHCRA9TVsSAnZWagAAxigQAIMV79yHIBqsf2lee5ZB\nPzAobuo1/jdHPaxRPakcLHwn1DiPXu5SnF0FwR2fF4XWh+8Sc30jboHbZ6du\ndcs86DMRxQNrM2hObUi58B0+CtXUfcIezCXfwOAG6ten8po3PnWbE0poWhCm\nrl2RNP1tvj4+nTsviYpfvEgidwqfpYtWd09+i4RTt1seXABYck+6yrnJpCX/\nSZ//cyQVKkTU3UMhljxyj5KyhiTSfhRZNgyfXP/wiCXOxD8zRs3dAFlS/XnI\nD8ABFp60Saz0eINmuFwaH9yWTqWMqc5B9w3lkU4uYYY3efXECLYrY9RKEl8v\n4wZkxbKNR3sKcmfmKl1BN44EbeHCBbdhycCy9nIX4CWrJZBS4denZbi5Ue5U\n58QJWqg5M1WSPWyWK8M0AOnyDxKIKdnUi9fl4OW0UEktaBUeYQJEfzJuSfhZ\nQFO3PN5ac6HhUCRUOKscMxLSXPJAsX3KPPeMy6BFBxOhFrWf9+JGqiolbl0x\n3ThHDcMUyJBdFC8bmiaNedXFLxJeJWWw/hp6oIplkNQXfSlYkHnrJuzG1Bh7\n79xDwT7Lk3fZXClbWZAbRpsStxGn4b8F+twVZFxvMMma8UmcAK11PNMio+B2\nfBvAG01QO1m9/Y7UeHvBmZZYCR48vhVIClQboFnvKVXRiqBwQ0PEvpzzX4QO\ntlqP\r\n=rAdh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"069163472a2722c113b6da3e4bd3cd6a87b25e2a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.32"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.60_1611510918722_0.2119577905100669","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.61-renovate-non-major-c1aa5cf59b960b45d2d69501e9aa09603f81dae5":{"name":"@balena/jellyfish-sync","version":"4.0.61-renovate-non-major-c1aa5cf59b960b45d2d69501e9aa09603f81dae5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.61-renovate-non-major-c1aa5cf59b960b45d2d69501e9aa09603f81dae5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2bb2f0617e7ba45cb9b9d688c02fe54c26d55fd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.61-renovate-non-major-c1aa5cf59b960b45d2d69501e9aa09603f81dae5.tgz","fileCount":19,"integrity":"sha512-H/8q069q7oRj9Bepn33WswlOMNh81fU84u04Kz9FURw5ECTckYPO3NkBtJlLNLUJ0wOnvuvspj9zqKXLrwc4Ag==","signatures":[{"sig":"MEYCIQDFxskAhL5b7W/LQ/mvhrfpxDHMdbAitGYVs2LJVlg9lgIhAL2WaJ5/uXoNkUqELl9EyaywzMcuu/693JsfmY6k5Ntq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDn/lCRA9TVsSAnZWagAAWAYP/AyM3NfatjMVy8Y9+cZk\nSkZmphVq5t+0TTgmFqr2x83VhegL83LVPxwIBqQnp5AVoKdrBIJzEu5rYBE7\nanAp9jvNWMewFPE32G89L/l3xqTh5Q61i/rarTeUNQ7NowPT8Jr2t/DraI2L\n0xN9JnVTP3EjlkGBl4Fojr9tJ2MgKNrQbqWCsPfabw9Jk8RkCQH3cSCGN+QE\nanLslTY/0oJeBwGUT17/HOBlzaMyhRbqs/vtg8l9wOT/48h9N1qc2ESJBkgl\nmxTM/bQjdcaX7N9VDLp2bCtSBX9bbkjku6wZjxIKq+Qu+j+z4gYtWCZ4FBVr\nnmUlCtuPG9JbFQWapj7ZN0toNQou7/lppcVB8sfiYj72GBxtrJ9e7dyv461w\n0nJGQdMFvys0G3NkwoRyJtG0FTQ7FvtbtEaG+PoXwQBoBN8exPpBVwBbLssF\nShNDm8y3PPffySovGVpT+cijKrMsOl1HvNe70m6TKWQyAPEHnIrKEdCilfw+\n3lFA/97P0yPgNmMF7IaYhV+TApnAWLkFc3umeHMzhx11KCO2buLdIhFQoQCy\nmaIbZCYXgNZoTtdOdCcm4IjEXx+Q98Mc21S8PxQE3AEBayAwqsu/hpeZ/Lii\n0lsa3xeA+co0EyaQYs+tlTa8rgrcjFFC1ttlFTdvkq5oLxCYA3nd7r9Uk3/X\nAEHw\r\n=LL8N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c1aa5cf59b960b45d2d69501e9aa09603f81dae5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.61-renovate-non-major-c1aa5cf59b960b45d2d69501e9aa09603f81dae5_1611562980656_0.1801393957564219","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.61-renovate-non-major-43a5247969eb607c3acbf02f744f17d533a2af90":{"name":"@balena/jellyfish-sync","version":"4.0.61-renovate-non-major-43a5247969eb607c3acbf02f744f17d533a2af90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.61-renovate-non-major-43a5247969eb607c3acbf02f744f17d533a2af90","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a42d661e0db19005a9dd96d0fc4b8a8105e2069c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.61-renovate-non-major-43a5247969eb607c3acbf02f744f17d533a2af90.tgz","fileCount":19,"integrity":"sha512-P/Wh6Kkp01gX7xLAlEvMaRzy3HJNlPyHxYBQf+epZcWvpoWElCqc0Xu/j4Vt0xJUg/O47ANVm6QibNxNn0yuCA==","signatures":[{"sig":"MEUCIQDC8KBpYVTB+Eyp1rafkN0mzt4TRcNvTDWS/RCZfeDBWQIgIjNlHZOzOGyzHrBFksAqZ4UbjIZ+j1TLoobkdoxANHE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111578,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDpEDCRA9TVsSAnZWagAARwEP/jQniPpRgVC4jXFNXAwr\nFoYsxX28J9mf8spBC8I39FXRCWXnwaSDvcC655ZWw8HSuaUtYBvRPnaERAI+\nDnW11ONbssnwadXQgBh1KMoY2wKlSKvHdkIP2/6URIsud0+CTX/++I5D3DGG\nIEB1sRS88gx6uz3AZGRxFvkIT89nc9EZ3SrdNh3xNwr5/Du+qYNKV2t57sOw\n72HckOm1kt1Kgu/norI7u09D34ylevRDiffewvnQA7aUqvAIpvUqwnjEuzl7\n85YhdrJsTa2tA6f9Rd4n++3CJwyASKv9OPrhEUEpgXCD81TLRtf4AluvjzC9\niFrWkSQRtTq5tKPu8AOtZ+8m8tFkkUY5QuQD1mzd+cG8nOEtW6oicuZ1w+Ye\nCcDK8jWmPgXovePoHGVb1qaB/dKZ/4vYqldzMKtMkiRjfqC3wcXBCQTSnkSn\nsTG0s7EWEFmuSVJlUanok6QwvplhxWvzooPzTTCwB8nDrx09Sw404UGo4VNr\n8c9YHMhBYRoLP8lanZ6b67EjxjzoE2DwILXyIvP2MGromLWPyrkNhSROhEJK\nxDw/C/PR+bPmrM/gij8fdVDZUQC2kYieHsUXw9BQJE+x6edTxLpALef0WC8m\n/L6FLobjKzklUVr2ZG7NJGgpm040yEUbZfACEh/EWTtqez+NKEZ8vSudoQsP\n8mhB\r\n=H8EX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"43a5247969eb607c3acbf02f744f17d533a2af90","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.34"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.61-renovate-non-major-43a5247969eb607c3acbf02f744f17d533a2af90_1611567363168_0.8154156555246781","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.61":{"name":"@balena/jellyfish-sync","version":"4.0.61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a49f743ff431f4c109cd4ddfdfe16102954c22f8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.61.tgz","fileCount":19,"integrity":"sha512-PFN3cfa75dClR8HEXc5yT9qKXQRGe/ZgAPEQTcGYadxFBJnbVLjTyKIxS3iwiBOBWTEdw26dDNnkfuBNPq/bTA==","signatures":[{"sig":"MEQCIAE6sp3Qyf+7O7OA7VBrPLaZdKQ8l5nXNbHtDi4o6Zs6AiAdsLZRXVX9ElcUQzAX4K7YUI+DVE1qyLFPwbN5aRKE8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDpG4CRA9TVsSAnZWagAA8+kP/1oLGoHcA481wjJ00FcD\n7EDOrjGu0tM/FbS/yZo7OS+ykaGV1KiHJNX2XqH8YiBaIslblIUn98oyaR15\ntpwNDcgBVbXYN859zfT9rIdbZocNW0WeRnTTCeTlbgwEyVPmJ15OiZUqezr0\n37NJRk+A675ZNyLKWIvycumjEfEjnwpSgCrkstsf2gci5I59J5xk72XyLQiS\nkd+UoSIruJj0nwTHoHLuAJ1Jl8F9W7i09T2bakNuL0sKAJlK5DFrVSVkyoDA\nM7a2P/a2iW7Di2zx5QLOnlca6ILBFoWnhituk5awx4GMftkRvICgvmPItfYD\nyl8WYNSPApBKTGc38cGISFflFLQV9noPk0OVktlRVKTDAqx3a6yDeEBXrMCu\ndKeK31d1xc77WTKBMMN9E5UAxIhBbwNWg9bJ/jJ82JZJzALCrPHRoavXm46t\nxBHdaQDy8VjQ4efC+L7uvSD9Q9rdV9kHlb4Gju9UiFPZLoPs1wH4FO4z7mQu\nl6TLn1hQTZs/LSPxZtirgm1cHQqz0uMYOxCh15dxkpdCXcB6IjqqrmSbsZSZ\nGElm9HHIj/phimw/6tzUC3HLdBrMjtTrrVSlFMEm7h+vzAWSKJ4N8f70p52n\njpJkoM2TTDeKdfDYhj/xWsMM7JBVOVjw6xt6BArz95vyqNgwc3Z09m2J/3Lb\nWZnk\r\n=7jE6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"45578fc485f1991124fede9dd3f98af06da07dd4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.34"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.61_1611567544390_0.10634474297282459","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.62-renovate-non-major-113618e6585ba335ea14e87e4d1604f2454a9d93":{"name":"@balena/jellyfish-sync","version":"4.0.62-renovate-non-major-113618e6585ba335ea14e87e4d1604f2454a9d93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.62-renovate-non-major-113618e6585ba335ea14e87e4d1604f2454a9d93","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6c52af0ea9377c29172fd42731e93a17bd82c668","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.62-renovate-non-major-113618e6585ba335ea14e87e4d1604f2454a9d93.tgz","fileCount":19,"integrity":"sha512-oC/yuJenZ/Ey48Ng+x5LeZoXlBQdmzy/eZ7Jxb+qBhEdqYRW7TZzm5gfTakSsVysQi90holyss3xEdVC8tx8Xw==","signatures":[{"sig":"MEUCIQCJsHDj4BW9B5OzVlPuppxi5cphMUFRikuQNJ9erEkOpAIgfE1bxLDwWAWG6dyuoyY10NZzmfeiF0RsLXDBMSTNb1k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDqkfCRA9TVsSAnZWagAAwyMP/2gVk4xQ6BtQlHsd26mx\nTZnVG1y8mEN+G+6PmTp4Bj39gNytauUSfOyFwhVZj6kgig5tWEF/rCiG8E0s\nPJKVGLhQ5foknshBck0f6P55GSN5ryGS4ihWhUJGFTuwoTSLJ01xDNUmCr8y\n6FXlMZ5H0RtTJxHAVnWNbxJk/6nFHRqTpduCnDWZ4DgzNlCqw/SPN4ZernuJ\nojRhQLuGc/iORtqUHHnyHqaZh2ucmHAOwdjbjSlyr2PNkdKYtfepGOLbm2z3\n0VQIDCT02zhJMGpD/aksNzf+UIcYflA+DynFseo2139kHnefDscE0yLXgOyR\nSPzWfKyMplSe2be9CGZ0ikQlwFFMS4WddjkDIK5nOFrZAN+PJJbCJwNLgZlb\nvqmW+Fokz6+wVgwhnr2l4tO+35BeXAUbNThQ/e/acKfC/D451ay5eIgW9f0I\nh66dXu1CJ3mq0RVVVw69Unl0IuhQyLpVkFIeddfVMvfzKQd/nl6ulh8jCIY4\n+yhNcOm6qj9/uqwUzKfzeMW4Ju+iHYUMgHkJpx487htASxFmqYHM8PNJ//oJ\nCqna8LsBsTJk9IzdepYFKUy5cafaqGmQFsi9iMiyf0Tg6dPavKYG+fHftXKn\n2EGY4orW3oIu53RGoWh/1SXz1iFhl6m0TWwSXHCLu4mkcfGQZywyPjrGJrIE\no7Ej\r\n=fbHv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"113618e6585ba335ea14e87e4d1604f2454a9d93","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.35"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.62-renovate-non-major-113618e6585ba335ea14e87e4d1604f2454a9d93_1611573535005_0.3241378157987993","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.62":{"name":"@balena/jellyfish-sync","version":"4.0.62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.62","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"07e1e704d1547a58056170c5c1cd60f3e1e1feef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.62.tgz","fileCount":19,"integrity":"sha512-Ts5Eaxs4z9oVLYPgXVWpx13p8WcGzKc1y8EYiYPp0MzaKN+MIBswLj7+YQRhH4GD+p+ZtRvnv0OUb6BbekArGw==","signatures":[{"sig":"MEQCIDqBqCpD/1E5VDQSi9aTMQHp+E3o2iMObdPtNwPkbzksAiBO+JpioLYMvJxHp+BoRgm+OdBPbL58ZkoeOQzivoPvPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111625,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDqnpCRA9TVsSAnZWagAAKvQP/043ICAIVFVO+YiZr6LQ\n07wxdhLRdZbuDJulsKrIdsVtBVrA7OWJ7IZ9wz+h77xQ4kVxr0lW5LSsYRVg\nvOquG2bn5O52zu8a8V4EmS8Re1GuO6gMd6pPWZlYJRNkbuBDvyhtD5elarW7\nb8BaZgs3XGddM7qbAs7DtkerTaM5z/hgNdDsK6z6UrtSQ5Mii2istIpCuTzI\nKsCUERGB5FHVsQPyEPPpumr4MCppp67sWdsisHvN3JcEQnAr6mLy/Fnex/Jy\neCZ8vFHKpP6X8xmStboP/n8cibM1SggGYk/Ain/KKP9XC7TCREYFZFy8eqsV\nVDk8fj+RW4fQcpAQhpQm5gUvhplb++O0+3+ryXvI0ll0iweMPc1YgoJurGRp\nQz20wPQ/PWl4AgZqPiIaj6wS54EQmUS+decyuZnK9O1+bFdzI+S3NJm5f/Gc\nK3Flvf4hrkHReshsn6h1iskGkzwzpD8kk11scIu4h6SC9L4Z/KDRO7+U49iK\n4Zg4gQIpmrfEVZLD8e4S1HDS1Yp7SV7L//Pnr1lJsli85Do8gqgNm0dDUJqs\n6K4Elp/R0Qs610dUJqhvJkS0jcuDRfOgSBYGmzWPK9NRzrWceHKZBiRSaxDO\n5XZOZf3FFCirKrw6pxvdvybhln6GKZtx9iMRPXC0HJsIiYx5f2aaKw8JU/vu\n9Ps2\r\n=8RW5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"16aa50bcc6c0d0870461e550d52101231e7d0fae","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.35"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.62_1611573736646_0.8991153033511752","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.63-renovate-non-major-92f506bbf572c953c09052bfcaf133f976e597a5":{"name":"@balena/jellyfish-sync","version":"4.0.63-renovate-non-major-92f506bbf572c953c09052bfcaf133f976e597a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.63-renovate-non-major-92f506bbf572c953c09052bfcaf133f976e597a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b70926cf3d0909e63d746e26a381532c1a8e61fd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.63-renovate-non-major-92f506bbf572c953c09052bfcaf133f976e597a5.tgz","fileCount":19,"integrity":"sha512-8JAI7npY6CVH9+iN3KVaTM8v5NfHaTZhvGAbeWfojoJdlmqijQPALsHuoPfkOIBV+dYLe5MFpShCA8cQBi9ZBQ==","signatures":[{"sig":"MEQCIGHSFoPltz3Tqg7vooU+5vSorsthuWruNnH+VbY9gvzkAiAK2hV0vysAQIp3Oh3KLyII9xQoJ3WhjIkWXVpoHk4btQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDtX6CRA9TVsSAnZWagAAw7IP/1xomhu4shyVPp2s67AH\n0QtnflPI+wbVGssw/KURzrR8GjaBDRA+cjUnYL8Lc6ezibOF7VClhYntCYmn\n5wvcCRbCTP6IYfQET6ES/KVsOEcjnFSlADBm/PwA/wElksGDM7fAxpy5O26s\nfpWAG6Y0adEZ2e5gYlmsDNsVCLXAhetBRK+WLKZ/gYAISlbvENC6V5N8QAgq\n5gc2ykaxOTEjaBpCIQcsOTIF1vACE1FjxfCoSZyQp6u0R64T1fsZsw29oAbL\nNcejiLXzcCaemLz++yfT2Gxj0AZYIbWbKilvS870+nzyAmnqeV0+xUQjqjmS\njZJJXfC3Eydm8HvnhrEmmapUEWQKuuDeDYr+UzDJtSGkfS6bt6EiHi7GcADw\nY0PEiH8/3hrOwjN1uGXD3pRI12LGfk57dX7ZIaTKmrijOYAkJQy14+8rcWiD\nIAJ1o7lEm5RXZDNT5vb0iE5eesdSZ7EobeVKuBD0GsDysz59O3KsWQuMDxL5\n1gbL9s7xJTB+cZB0v0RRSpW7O2vzGi1ufZBkmJdQnK49F4FNFg9+tPaxr+nu\nyim8lns1KrWW0ZFgSl64WH1LnLVbraQqOMQ4t+yV+fhCSBXMlLwic5J6B1ak\nUJpUaUXiBzRR1FYdRNS9MAFitowZ1cS5hLWcjmLVvl/6vHwr0pHBlSQoH9hn\ngprj\r\n=j3cV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"92f506bbf572c953c09052bfcaf133f976e597a5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.63-renovate-non-major-92f506bbf572c953c09052bfcaf133f976e597a5_1611585017380_0.4240404145973138","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.0.63":{"name":"@balena/jellyfish-sync","version":"4.0.63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.0.63","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"kaisoz","email":"tomast@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0600e1e86226cd32f1f0e0a442a8c05f777f803d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.0.63.tgz","fileCount":19,"integrity":"sha512-BFb4PdSepUvtlUd+/6sp2PooSCDU3LMga9/AuXERXfQQcVj09LqreufXjr5bo18FhtlI27+wZ9FYpY0Xj/zIpQ==","signatures":[{"sig":"MEQCIFls0AcyYmgj0jE+obSkNJKpL/ugKVnZkoX21d5hYlfxAiAubSg4P8J0WfK2IE/em4RjAz3x2n2so8rrLexTmBNuvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":111732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDuGmCRA9TVsSAnZWagAAt1AP/1UwRh8xtEkUZ3atuJ49\nRsUojw1WJXTNHeZDOd+KOjSZtOiMpvpg14Cpfl3fMz7b4JOfQkEHijzQSa8W\n8WG6heSd8SkeEOwM2iJYs/qU87iTLWGNP4APtbvKqjgIyYM3Muy+51PQGIRB\nVJt/K/gUoEZEfhxUz8V37gMcceEIVNTS4/oBwoBDpz9Yh8UYLVm7KfmkdPxL\nC+enestxKH19xASfB+EKyb2nXzMIuLtVcMr3pjH9r9om8xZxd2dSq6QIa0yT\nyr+60BaCxE+LWp/KMtRhrwDVWzoJSDDKUQ/DcWqbPLQvVC5msrlyU1/ESOXm\nGSKGgj9eQ39mTF/cgjV+1UHRL6UBtyPwr946KPbtu47RlccRoJWyZRzjt0QH\n6n8HuDJEZDxL3rARWpDSpI1alqTueL2S6PJ4qkwP75i1woFOgvXduF8IfJM3\n080VlQCCJU21hqz4KaOTZFkC4H/pNvw1wMfDIxO/PlgdWbtbldq0izdU3WKC\n63llJWL0ZHtGu1PLvAnuWGn5SyCLKYC+KGYFzvzCIhIsefTPnS8M4PVyE2Mt\nfWGJXptRODmFSQZkFFImy+p6jkIIxF4CCgdwuNdyCSEnuj5gx2FXtVQ1bpzB\nDyammyW2H0nGoaN/7s3fXJ+IqXiAgadMHwaIId2n+cEDDCdf5+iDlyGes/m6\nlwy+\r\n=lGyX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"66e9a003cdd4230cdaab080577fafdef9f38c51b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.0.63_1611588005993_0.0538549799935053","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.0-action-context-d4c8edfaee75b560ce87d469cdc18034302b89c2":{"name":"@balena/jellyfish-sync","version":"4.1.0-action-context-d4c8edfaee75b560ce87d469cdc18034302b89c2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.0-action-context-d4c8edfaee75b560ce87d469cdc18034302b89c2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f7170bdcf375861eb07ed92a2305efccb519c7fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.0-action-context-d4c8edfaee75b560ce87d469cdc18034302b89c2.tgz","fileCount":21,"integrity":"sha512-CHgZ/mOqrlq7ZT8jXghbJgaffvGvChOhj95YBk5M94ppwHiq/fk+hgQlkloATnzlifq6FQKOa4sGUbfu/pe0PQ==","signatures":[{"sig":"MEQCIFmhx+3Q7kJpDvMooe58bUKaidbYYv4Mh96X75dBKuWbAiAG3QS8R2fsuQ7Atg4EICX5g0MF+ReweIbBivDrZhH8Jw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDwQSCRA9TVsSAnZWagAAnXcP/i2SMt2JRE2iPFc1BCFE\n2sUfUlEFNYjJIkJFVVOA+46SzUE58npVZ4XWYy76s1jFct0OhDQrbmV5X3t4\nTUfpbU0nB7iCKz4FnOIoSK+SdQ3sGnN26q+xt8n5U1qkHO7RfJaCJcQR/r8o\neOzHr/kf/AydsABTotmGbyarr8rrNnaMPeQSC4C08pBgq6u/U6BId4umvAhW\nxDS/7NokECsLI00qLofUVQ5lNniUyiRVEIzMMNO4Q9frVPN6IvjoECWk6rB0\nNucjULmxrU8YRGAvnR6R2ytkbPAPe0rSXR8zvbgibjvEzeVZvBci+an8f4nR\nJt0ZWJrj+hJo37JltAjzMjCG9i/g4W01pRxrJmOrwEvfadTYzdZAqgzcfeBA\nwpCMVstxPvuXHM36ghbHsV8czJPK7USaS4TKRVAoFU2NMK9q0XKRarvy7G+K\nxanRlIse9EYjoAGZD7DX4mzAZLmUJbaIw7s31DoQsKHe96I8/SQYzwROZwvi\n3oTL5cTVf8BioFAm9utlbjjXeJJ0wUFBxzJHY1iH41RD4vCv+KgcGPXn+zh8\n+vdC00m2X50BhR2TA/gYhaMYowYEvlPgXOCq+sXgVqqkTDXUlD7d14fyqJ1V\nZ8XKDUhjiPcCVkoMkYUVyE1MTjzfJq8IRng1muXBpx1C5mjMx3DB8zyjiax1\nrGZI\r\n=nJMS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d4c8edfaee75b560ce87d469cdc18034302b89c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.216","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.0-action-context-d4c8edfaee75b560ce87d469cdc18034302b89c2_1611596818008_0.8516962316304715","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.0-action-context-5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161":{"name":"@balena/jellyfish-sync","version":"4.1.0-action-context-5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.0-action-context-5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d75c977d40efcf0367ad33dd7166631f7fdb0511","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.0-action-context-5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161.tgz","fileCount":21,"integrity":"sha512-6lJcuM7ps4VmKMX7mwxjnObSq+cGNangMsLPrtlTWuKvw3X8HtQCioV/JLXo5V+gVjzGrS7nQCMNqyt03RUFmQ==","signatures":[{"sig":"MEYCIQDoSouWplvBlqOAzOT0ntaV1zv8UapTo9m6RFVRn8rqtQIhALnd/0GwRO5ZR8cchMQyTjCV/xy2D5BVjNNso6/yDYyn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD67BCRA9TVsSAnZWagAAi4gP/jGaHp4sUSkFYimhLgt2\nvIhjX3YdgXopzA4NQgcTmap23Vs3kSnwjrZCteFIQZTjlSnqq88s8D56wrS1\nAbX0lK4wIe3STB7iHeOf5iHA6zVubiwB5CnTQrJictRIVVXizesfiCeL/gke\nprPURk2jmYyX1RI+sMN7/rL85hg24BNVpuX9QEcuG5naDMKizx7xh+3z/yzz\nD5ei8PUGrloAXsq42iYCxLIvy8xKOMhnHOPEHY43iJSdZzT7GaOVr4LdAG7P\nxQif4DEgI6hwU9IyMIkjY7XjSeHwngsPQIhF90ltpIg6+Nj0AJYQM64WolM7\ngL3m7xfUaWSQavVbpzJj5V2b7nmJjwIfpNmvEUL2EpU1/A7UWwvhmyyNLVth\nvtQdKd5P0+eg8Ztg6b8b2Rxor8l9orvnnHjODFBvW0Pu/cmTdr7zCFxb498M\nbAWBSvObpKNAqUneUPANkBysIrwttUf6ZxAmVbiQLh662aLVNGE0tZVWhJ0u\nfFUxDJlHXK6tp7TfNO/BQxlvKlXk8WF8TA7oTifvxHz0YU1JFERjGV4wOU+m\n4UDxcX1asao9/2LU4ZvDn7dZ01cByeftjmA/QDVX6O2885OKuAOXqTMrj0mP\n0bnjbBm1aumpXGM5cwA83CDB0MwHKcdAPFRTy5Z5p3DxuTH+x3K3+db8yowC\nrORh\r\n=FtZj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","skhema":"^5.3.3","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.216","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.0-action-context-5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161_1611640513180_0.05935882298888817","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.0-action-context-33e30fcc57f23a5c4616d78c6884f92d17a7fa5a":{"name":"@balena/jellyfish-sync","version":"4.1.0-action-context-33e30fcc57f23a5c4616d78c6884f92d17a7fa5a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.0-action-context-33e30fcc57f23a5c4616d78c6884f92d17a7fa5a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2508286d44af83fea772ea57cbdd8df1c45a606b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.0-action-context-33e30fcc57f23a5c4616d78c6884f92d17a7fa5a.tgz","fileCount":21,"integrity":"sha512-DlZN6WLWowYYwbvtj70ue+C+8C0R0hO5JKBwm2D8q3amIc+SSZ5F6y9naK9wydFCCmPUOFhCcRsm/8iTKIbjCQ==","signatures":[{"sig":"MEUCIEIvViXHmFodZdY0wmy2GctbUpvGvpFgxSwrDlXMlg9zAiEAsWGKwET8UnBxpx+le9eMQOmsShlb4qaQqZ0pGnjYkWY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD7BQCRA9TVsSAnZWagAAtw0QAIWwJfsUueVhyImVgDC5\nflUbBtJ/gBtD99c+t2co1LS4LmMsyJCLDUEfXC92kGK5XpInhf6APHHDIDEx\nzGHKr6wSDkGaNsdJuUUNoh1dZ2WstleE+pcoHuc27pZD1lf/EbfheiC+GzuI\nygY7f6JC7qjnzsBsvfBjlovFU00X8OCcDZQEQdn876/XtThRI3BSfQNSfvIb\nVYPq79JD3y490JvNi9TQVn6b1TF132Z+2ANv3FWQOlG1vPnnQD/UQioSCzix\nacO6IfyQQ2uICIgTGYwEZwzFc9V4RKw0OOS+fZltnVrHlHSOt/qCxgrZ1qRA\nv35evHNinjXY41C3XjRO5UqhYGy/UUAOm472HwdHPbQT2TV6+k2UlGenvCG6\n8HJzbNia0T579T7qAJZ1S0VMJIzWP9BNL/BnX0jwN4qqlOl8LZP52F6+q+Sd\n+fvIj43JRqAbnHEMr1J/YA44jXlowswmmzikJ+lsCUKYhGcitae3EHXeZbOn\nUZKbM84JVG4d42brkvqbgyXuiNRGUfNDthl2f+DVSxbYErQL9D+AZGvazb5v\n2vAswogjcm65/GaFMptvBUbks6QBC2HzeEXguMt50Dnwxaf2XGxT+cwNw/aU\niw4dC3Mb7iXga7mtPMWHMcG+c3+TnXJfB9GKsUqGVVDeitW3f5J0aGlDDwy4\n/+9U\r\n=IO3x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"33e30fcc57f23a5c4616d78c6884f92d17a7fa5a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.216","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.0-action-context-33e30fcc57f23a5c4616d78c6884f92d17a7fa5a_1611640912118_0.24827576581220434","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.0":{"name":"@balena/jellyfish-sync","version":"4.1.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f81d2e0b8d787eafa29050714da10606de8f7d40","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.0.tgz","fileCount":21,"integrity":"sha512-UPEZeUPzk/Xho7cdvU4ibu9TBnrky714uru/lGaKPj+LUwuAMHF4ywRZlhsTkTa/Sejaoqx15AESXU79tj98Cw==","signatures":[{"sig":"MEQCIEmuXZyEuziUtjlVcc/lXNZRU7MgdtOTsN7LcLh2PRb0AiA55TdnEj1jEQUNGRZw86n2EIqal0JFX/98O1/RUy9XYw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD7ZnCRA9TVsSAnZWagAAD3AP/2D6Wn0jp/p/+v4GZrR4\nUz/BySQsc/jyO8j8UOiWTvLC6EjDqo/8weO/kkGW3CkWvGodxIUh2pzXXWC7\nbhSNVJOsQjbP42466aDYFPLv8m5jXjU5UHrQaKhM+6ujB7fUvak1UPA37DRv\n5aEU8lVJ2j4xs+1iWMgJiOi+6tWBVnRcnOFIurdP9Z30ibRY5tL1R9WvtoDu\nbvCWJwvIXf+No/9Ck6Kmzkc6qPQDkBgLWTQD95ZDOAIaLCCFvLW/oZ/hTeWb\n/m1aJOUf7O2caxcDnBl1HahniNNKmo8IswYloifIi5mMaQgVaCi0QQlbqKcb\n0NrOZWJr3ivuDeflWGdAIumbl1DJMFewxr3B3rn6uX3P4qB1GpEj2sYfOze4\n4UpBnHJjWZihvcVlX02JWHaSLcoyTDMD3GGkYwG6f1JlKZGincBAbBRHbxhd\n2BTQBEnncDmeQ6dFdqFbxzIkvGYzt29GURce+4L3zBazDivgT/2tzmF3rI6k\nfj18hLsLOZP3+YsITRMU1emSh0Dnn5nLTlC+V9WKHLc6OaJOH2q/Ru61ZhMh\n7LEuFCzvbPEBoexXGbuYUnDzTdvPN2yFF7heyLaYWHppy3vZVOdUH+3QaC95\nOXkFjOCG/5z8HAyRlTey3VaBx8CG0iOHdndr9e0eKrnTmjMCceY3Sk6bfD1m\naGqH\r\n=ljdM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9d535ef7de24c60a8027a149ba88f2ed183c9745","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.216","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.0_1611642471371_0.3327077530110669","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.1-renovate-non-major-e0b36ee3499a55d89a0b06e418b20d4bddb4cd21":{"name":"@balena/jellyfish-sync","version":"4.1.1-renovate-non-major-e0b36ee3499a55d89a0b06e418b20d4bddb4cd21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.1-renovate-non-major-e0b36ee3499a55d89a0b06e418b20d4bddb4cd21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"77a91cbb0ffe50c4a39927f3a0fbac589326437f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.1-renovate-non-major-e0b36ee3499a55d89a0b06e418b20d4bddb4cd21.tgz","fileCount":21,"integrity":"sha512-WSoQTeYG6wTh/y/bx4OdY/NhPZi/yrsijJmvnq2GH7r5UchJ49J6TYwJo5tZ7b8YAXjdMXkz/jTk5MSp6M9EsA==","signatures":[{"sig":"MEUCICw+8K+dlHat1KY5L5tcwN41IEdmRQBERRWmhacz1tNFAiEA7NuotpRNyVJ77RrkbM0iDFjh4zOSSf7UFYOL5dFFEk4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD7c1CRA9TVsSAnZWagAA2yIP+gKlWHsRfxSlxnWwTc6V\nEXLjrng4stdvLXZcj6E72TFluqBRac3aywfZ/p5hs2bzsJsCNgJC52Sc6dni\nfCBvnjplCPye6kzOXb+0haCZQnMIM+lOr4q9muF3gbqZzd1URpnsiwUmk/R0\nQoAIar4mP4KvF08Jt1sDNojherfXvNY0JcfrZ6C8Yo3Q99Ifb4bRw5ztDZhb\nZQeig41vYZvZgNRHZnNpt9gngk5/crGHofwRLe3S1Xuh6f5l5mIyxmL6H5ml\nr2YIyjcBoBledyD69W21M8QSwA0IsQe0E4RlNBQdkbsmI4WEdnGDLhZWX7/D\nONCAb/GfYiyOUa0XCLmUz6Cbr3wJ/s0G6vPQgqAzDv/JLPZtEbn51U1mP2na\n8aA1ohSvTpl9NpaWuk2XUIFupOiD4W9BwVh/ruarTOLhdM9sbIObibm1Kozk\nh9AkmmUl6rTGylFFjHycf8h5rBhZPFM3hRiwKXJN5r5wCRGO0ZF0Kbc2hGMJ\n0I40cLVR9wXYRbY4iom8BIBsLDesh/4aEDlAE/Jn5ZYdLkgvR3DBJCnE41ai\npX5sIpP5QO7S1M1upWKxPLLGo6dRcUP4qNYhd4eICiRSV4SN7GF1GwWZwEqM\nkHoB5MATykLTOxXKQRrLRUEeaLDNx2ELRWP4mm9ZfoxAHlgjdS2nhWIVTulP\nJQZy\r\n=w4mq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e0b36ee3499a55d89a0b06e418b20d4bddb4cd21","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.1-renovate-non-major-e0b36ee3499a55d89a0b06e418b20d4bddb4cd21_1611642677027_0.07473477250975069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.1":{"name":"@balena/jellyfish-sync","version":"4.1.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e7fdbfdb2afdf3f5909492b8f4a0031e0687140","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.1.tgz","fileCount":21,"integrity":"sha512-sE3YgCP3KRQ2bwuADheqi8nniYDCfB9pPsVYUkQZ0FLGBelw/s+IWQjfl+cVCciiWCYFaR8pdSS1rKNFncLOhg==","signatures":[{"sig":"MEYCIQCoyYuVGLFT384VevTTIb/b8f5MJL/SSbrVdIACYWpYrgIhAIB2xhLmZyHfbvJ7MFFERFkDCR8IGd99hYWc3qJacpDW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119890,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgD7g+CRA9TVsSAnZWagAAB5sQAJ/NYdkvEr/oPH7aanCy\n47Z95VJ/IiiaFCVycR9c0499MshhL212Lf/Z9hd1jf4SepVgl0+WMQPGm0Jy\n4beBCTC4NLt49SKrGAWHQAOs1ns3Q3v/vlyqhQ6Pi+HZgnDbfwLDK7QSnnNw\n2eRuWwWMO71tKZyCsp2Crola2qSZ+qXFYjHebtAbNKS3FTFZ1eJDCv3ZmymT\nTDNngpcqHT0Sp+Bm51hueh16OXuEq3v/aFspHgGcvWfMphdjidKs3c/un4eD\nPPxb42vZH8HLA0JtyklCO7mQs5ccXLHiQWl4GV8nUaBMITDMIjtjNfPryH4d\nXCRTGTCfFlU1nN6mGY94Z122KMXkW7dkbtpl+FYYx+cbXEavakRG8sDodJ8Z\nZXZzRu6QxYt5Tb8Wl3GH8uletop/Nh5jG/cG1djwbICFKPjDRpWPgN/VA33r\nVnQByJ+6s0Jx//h/wckp52WBDeKNlEdDr5RejK5QIeQK8fyjlQWXcDeGHW0w\nldkIFSQChm+AfPJ5y5cRdC26J6z1xQ6LfftmKgLyN1dwsVXY+mwQEBjhJSz8\nqzVHpoT6/u1yhfUjaxPzXcw6Y5h3wFhFekrsOpZ4v00po8Dj2a0X4vtuFvX4\noFnOZzMFNZFgZtS3HzNEd6t75QQMGamq90z24SaKPcvnq8C2gf6VwXGnkQ97\nC17w\r\n=L3Vv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"26a3ebc4ed116251cdd8d7ee8fbeab49046acb36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.7","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.1_1611642942127_0.25762847173121073","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.2-renovate-non-major-f8e67fe013ccd0196a7cbd4ad4cfd7934662c064":{"name":"@balena/jellyfish-sync","version":"4.1.2-renovate-non-major-f8e67fe013ccd0196a7cbd4ad4cfd7934662c064","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.2-renovate-non-major-f8e67fe013ccd0196a7cbd4ad4cfd7934662c064","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f1b6160dcef4576579ab7e3880939ec1c6af2a07","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.2-renovate-non-major-f8e67fe013ccd0196a7cbd4ad4cfd7934662c064.tgz","fileCount":21,"integrity":"sha512-doLRH8HsCT3wdc++lkC1jdqRNIg5qaF1R/jkKJVnBvxsTZWM9d9uelUQeNdqZeWcxD0j9EaHYjKd+0uOYGDmSQ==","signatures":[{"sig":"MEUCIHdkyLBXASCGO0vAlG0iLPl2YO0PtPQAjcs/H+Z0smpqAiEApN9mqNpw4TEhLaIZFHYYT2gbfQ4OI0A8Vp7+3a1pf6M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgECxBCRA9TVsSAnZWagAAIMsP/jy3Bv7u2rvvqt3LwB/V\nC/YtUaOrroHgWGUFYf4+beW3EqAQo0QTuOwtsICybHPChWvOaE31POrrLt2+\nNc7ScRIWi3yWXQb5mxCykq1/d+xOI0A/7kiZSeA2UAQIU6YdRXUJKqvX1mdM\n7Njwjz561+rx6RZbkZwg7uIpF4KrUCCcAiJngmRcNF2vv9P7S8C8r3fX7rpL\nRYGrxg3+3HC5qHUC4K62F9PaYzwCI1W/Mpt4Qjt+v7SHku5UAoINCn6iB/ll\nfcDgPHG2NKSjhogOkx1WQ+maLZEH5LUB9H3nfLtGW/rbkZg8xU8f3EOVHmIP\n/nE7E4zI9izo1XDnxkFh/vjLd4ERlhJx+wBatfhYFyLaJ/6NHF8Bv2PJekZA\nFI0GMCZnW7t+VWO49EjzofpUysOjGZ3DOg8fTcbQtmLtvY1d+3++cGNxNriG\nwvnP3kEVzeCklWb7JDIKxdoCpyIR3fSVhPJvBN+FRiPTrXRtnvcn/FJZu4a4\nroMpJImUVk+71Lgxh7U4bT/3clqm8S1ueY+y9eNDGnEPOuaO/X/7p38Fclpf\n50ZYNF1zocJsQQ2E/KZsUstoHL+atwIFG8NEwamrMDr8B3Qnb1+OxszsEBIL\nnjaz5+Pg5mN3omsxTRGRncKbtcVQ+qHF/ey3ROyJ7EdeVHMsFXrxJNiZIeOo\nMNDb\r\n=HS6i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f8e67fe013ccd0196a7cbd4ad4cfd7934662c064","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.2-renovate-non-major-f8e67fe013ccd0196a7cbd4ad4cfd7934662c064_1611672641058_0.4200110525315348","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.2":{"name":"@balena/jellyfish-sync","version":"4.1.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2391cbda0f5c49b27f166292ff9dff38359a91b6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.2.tgz","fileCount":21,"integrity":"sha512-j6tZ2szsbdU3Jj2gwPoKCSvLUKb5tsl9dwAvnm477v9F57jhgnlGqBuIHw7mgUF6I51SldglhfM0H6GJy7qOSQ==","signatures":[{"sig":"MEUCIQDULlCEAm92ZL77PRNaCewGQYGSw30jopHCxf2q2RvBSgIgZVekgYt/BnXq+trAhWlFsKz8rwXGXNCrY8OrYY+Ft80=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":119976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEC0FCRA9TVsSAnZWagAAUpcP/jJsg1pxqDBhYL+tXSV8\nyVKonB1WiH8IpF0IuBIPdL/W99qRJ6FCUWzo3ZQCTS91FSY/dczqEvCCJKd2\nnIZbIfdSJzhHUPfBQw0x0d/3NKI3NpwKs2/6R385Nnlu6cRqviWZfoCpPJE6\ne4AyiO7ic9NgzMb/7qu3Pe4suHuIyXY0QLbJjD8ikQ75U8zdMALlkP2GFb4C\naGiSA1SRrhc9UOHZt/fj0JMXxnL/sJRgjsqZXuQcuOvkBN2fvFBpQ1rdhgHY\ngCfuZoDizRyRQFaScspjQiZ2JQ2K/Fmqvfw7I1MqoC+dPjNTQOlmHkxOLU1e\nzV/wpME3CkHFh2LVPaV2vATRQQ+h98AD12um9MW/JIP2MwxpmIbCB20sxGr7\nXbPMfT39WNFMo3xQJgCSlqIeerSTrTc7LB4DQBIRs1JlTI0FQ+hC59KXt0qC\nb4XHNWIg5iulgBf9t8YSCeknBINkr26ezIJuI6uwVDeIetfqPzLtyoByTkSL\n/KTy8T81y7V6nFOU5nKWWNOdfZP/iufIey62DUp9my5nsHErQDff9Dc8C9jJ\no9s6WV7d5ngAKcqxwoQyQe04brWRWA/PsReAs9qHr07VytWYQ3o/V+BeR3/Z\nzVRrMVzXAR2T4111hXKYn2UzgB1CQwX1RoHRIkQfLdpoZITwluI5ocmvQSPJ\nC88C\r\n=O39E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ec4f87722298f67e9e6678acd878ae240b940d93","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.2_1611672836981_0.34718398467580647","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.0-check-id-on-upsert-813feb5f44273e1ecc022c6385b177570c3288ca":{"name":"@balena/jellyfish-sync","version":"5.0.0-check-id-on-upsert-813feb5f44273e1ecc022c6385b177570c3288ca","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.0-check-id-on-upsert-813feb5f44273e1ecc022c6385b177570c3288ca","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"798f65de5b24bce7269e7bcb1030919048b21994","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.0-check-id-on-upsert-813feb5f44273e1ecc022c6385b177570c3288ca.tgz","fileCount":21,"integrity":"sha512-dvMMfY3+b/tHNJPTVmmJz6NT9UcYkCZ7+JubxY7zukkWtoTX8Z9ukYGsP2QWuZjVLAHjgc9jSwIXmncEWOpv4A==","signatures":[{"sig":"MEQCIGhRrBDbk+/iq6qRrfoXvocEheqObfbnKooNSuNiZMXTAiAPmSmwET2bcu8OT6bLWXL3GkAux59lNa7WSVbyaUbOzw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123361,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEFMACRA9TVsSAnZWagAAxhwP/Al2q+UTUh0CVV5EKNNZ\nceInFm6T9UdrsvA0MrSNju4N4xoT1TizJOVAhhRYEuAv1M+o2WEEDXbsMHIO\nnkwgw21Q99zO9qbGk+yd/oy8pFmG+6tEeE9FL9ChA7c4ueEQe5kLHWjtp3DF\npgUmvJW9E8Ls2/nY5vghHaP34LwRQ63AXaKn7fqQNbySh88qA8ANHe0JoA5f\noPYE/gh39Icfoa34bCZnVVEBGWQ68H1PxAJn85A2N9rUOdLrw2FxIC5S3lya\nmwtfpD/gyRqRBsc57DKz8+w6ByJDClt2oRfpZS1iLaveEzFGIGniWhrvPomL\nZ/i7Id5kjoU4uM8DtMDoYGUr26+hVSN2S0FwHYmOFwUxL893hlJEheQRB2CD\n7857H58xARvMoSBDkOGCFkH43hofm50GhGXmEb5oWM5uMPJsQ5/mu7QKaWZj\nKxdjD+rwhioU/s07Fgm321Oxvdw3By40lH2en1ZwekNrTTOXVtuYsBSDR4u9\npbj1EDV3PUWKhuT3f76J92Kupcw9cMBhIwWurJRaWS72jUytkY3yCA1fRmHZ\nMz+iGgZLZpzex0zj0BrobCJaCgWNKP5deYqCFr2bxpvxhiiAtP+LZE6a/ER2\n/wpB+WkRTEQG+TKeUELwFAQ3NNypILcmR31gf+yQ2T0eiJ+kQgjtyn/bqpuO\n5pLh\r\n=LFC0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"813feb5f44273e1ecc022c6385b177570c3288ca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"sinon":"^9.2.4","json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.6","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.0-check-id-on-upsert-813feb5f44273e1ecc022c6385b177570c3288ca_1611682559398_0.8898749389727383","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.3-renovate-non-major-ac97f126c0985eb99ea82d4e207e62fe96299765":{"name":"@balena/jellyfish-sync","version":"4.1.3-renovate-non-major-ac97f126c0985eb99ea82d4e207e62fe96299765","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.3-renovate-non-major-ac97f126c0985eb99ea82d4e207e62fe96299765","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5fdb4c3a25a08ce9a349b49c8f59ab69a18b0bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.3-renovate-non-major-ac97f126c0985eb99ea82d4e207e62fe96299765.tgz","fileCount":21,"integrity":"sha512-sXhts6GrqS5i5OblMieYjeYkd7trDp2fPchWZMKE59dVq8UN6+rGUG0UhQziPSyBFheBBWDahUIx9OA2FQtEyw==","signatures":[{"sig":"MEUCIQDcy/KSDTbtzUHWJzxJ8Eb7o8J+ApLmSqmEJ43P2rVpNwIgEXlU7xgX49MG6C8jBUAUEq1s3RHr7fp9x6IeoIDebhA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120121,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEPPcCRA9TVsSAnZWagAAHOUP/juif7ILx5WFcnRQBZEI\n5AI5zm+9sTRvLv7LqSVVHyU1Hm7Otn2lQLJz3HT/+gbp7ya0VSTWw/qcxkcg\npfSZwwNmC/SK8mJE8TMatsy23e7MLkQVnN343bLDZ6qKMSr8ZNyS+4x9duUH\nRCvUQpPwnwoThVOIN4atIlWUtjsbLpaWeUEgNgdLveco/jzsjwKO1yateZJg\nq98jVPvIbXAIv8kwmTju57gchx8t067nWieqL51tywjbhlRLYwfyu40OnuHA\nB+6WR3GwtpKFYaimp7FkK8Daq9XUtHvu2tlS06MvqBsrbDOz0/LrB7HwCDWt\nW1motrdeAnhhhRDbkhIC1vCpmZzB+peQ+La/0nE4HRSTUKszgrsINZSLKyaC\nVH4ojZexyxd+h4qk0DCF/wm8RzqdGVMq4eRFFukOYtXH8VDwYcrrspwbog4E\ntu/0ZuF7BYmRqyc/hQLCBmdl4cE+nX5uI2M+ujclaBjV9efdn0RdcgWltVsE\neGMDm1AjcczlRYEjPRKz7kriTdh8/GGPXRp2Hny8nlgj+PnHEXNFs0rjJCvs\n3BTX9FQoWvOPAUX85carFJdgtOiuu8V+lNPuIg5aKZiBe7vTKb3MCcqLevd7\npMovQxTTyeISiUBLOpeyie7hl63gLIW7UoU2yNVML3v9S8uDp1PZ6Sgbe5Ou\nnLih\r\n=niqV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ac97f126c0985eb99ea82d4e207e62fe96299765","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.3-renovate-non-major-ac97f126c0985eb99ea82d4e207e62fe96299765_1611723739599_0.14005226311459285","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.3":{"name":"@balena/jellyfish-sync","version":"4.1.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2b7548a7ac3be715357946fa427f51c4c1a68f01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.3.tgz","fileCount":21,"integrity":"sha512-EzyRXXBlXwT3C+FkdNGc+aY427/bo5iZKsc/sucInijkFIMyHA6O6QlYjPs+au8eiloRgoJ3HTqxhnHLF9Un3A==","signatures":[{"sig":"MEQCIHrqjhEvAgpM5SCvMEFh4AHrARmR+Puhqki1s/ZVTZVLAiAanAkoI4LGAell8pzJR+tc4uhvOzTIhPDuTDDyqe8+Hw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEPSECRA9TVsSAnZWagAA9vUQAIlaYuTJ+L71s6MGZRJi\n3HiMaI0D5ppFX5VaQ7UZHaQRF20mKIG7o365mUt0kfQ7etagLhQ67B1peRyK\nax6AoqTDGhrvopVqPRMjwCKDe0ZyE7t4K3bEa/SRz2gOAnPxC+G/vzOBjOkC\nvZGEZeGTTfJ5FeQC6DYsttmYEVq8S2v9LHGnh6lU5dXdqWdDZSIAutJprZii\nRiqgLcYwQcNn8v+N5WRmHfiHHgszYJTungpyXcGbpGWmU+xjC+/beuFwYUpd\nOB7WkKSdHByQCfsZlXjn5MQMrnpuCRy0Q2LnaAjh1+0YhEZAP3yanGV9GjHE\nShBFNW1Sd/B6e+QWdyvMEMU/Hdsm3x4ktxNMYFtdpe//jwZp/8fxpyNQjKV8\njehN1vQZIE6/EhbIGhaOvdzDvAS7JhD0Qx37uHgMdpDJKIR2p8YiecV/3QKt\nn0BuCmdje17ux+aP5veIGN5137Yr0oR/UlvTFqmwFP/dNzj6LolgDTKb+SOl\naB2vPwL/fzJIcCq+PexzMaFgpE0IbTriG0wjAG3tK6wqurOC4e2g+iZLG2rr\nWkkYWeJaVGzhy7sLjlCuqlA/RROiF29Qle+pZJcYDm8jBMhzqQGz1Ps7lp2j\n6wX3WkksDeVRgGWuI3Xc9S4lLn3KgXKnJ0dewvU/Zkvi4XnGnSyZKtj7lVh1\n9kEP\r\n=92Vs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d6946d23fedcba6d18c39c0f4fb2e185f08183b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.217","@balena/jellyfish-metrics":"^0.1.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.3_1611723908152_0.4750662651960482","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.4-renovate-non-major-287a265159716327ed0687e7ec046773a6565f7f":{"name":"@balena/jellyfish-sync","version":"4.1.4-renovate-non-major-287a265159716327ed0687e7ec046773a6565f7f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.4-renovate-non-major-287a265159716327ed0687e7ec046773a6565f7f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5e28f881cbc90eeb2ceef802887e06d09b694f17","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.4-renovate-non-major-287a265159716327ed0687e7ec046773a6565f7f.tgz","fileCount":21,"integrity":"sha512-7WyBzO2VgVY8op56ja/dv11ZTW6UDVFOtpCGnPdWD5K30kDWYsNgzAHydM23rKbJUMswk10I88bsCvvlRQrsQQ==","signatures":[{"sig":"MEQCIDVXIe1K6KlMpq9EClKhi8sEHM+zgh3qoVmrmtg3QSJtAiBT0lvB/YsIETmwdmRBkxi3Bn3YG4O9lw8mY6WyaILetA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEQW1CRA9TVsSAnZWagAAhgYP/A8U6a1T5dToVojJpAsi\noxF5HctkjL1FTWAleF7tL+WDqrxfoKrvezi0ohu1hhw68DzL3AHsVe40y+VE\nALpOoJTMAyH3UlWpAN770RhpwGMiYq4lBV6mcoI9sC4bTFiFgdISm/l96LpK\npRJcnvD6D1eHdiUP0SXGlqeo0SoAGpF8PVUDoJWTTsXE2fz2XDRVnrrV/Vo9\nBgTHqIlGTmXMAxc5hyYZ1lFP4dOJzKuCRsfGodk3d77x405cr67WNCAUpOB+\nw/0pNCshAy3Z+OkuPAQ6KZ5i6Y9PErKPJrYjW4QtRb3661hmYAFh9zeJLSF4\n92eMxZTjWIwFvtEJGNXwxy7/aObO0tnzU2h/SGQWCyBktd8ld76M2HHFpfVK\nG8d8BxWe6cvn4hbhwXnUU0aTitGfcck3O8k2RdqB0pKH2jBpwm++XPO8/oL6\nHuVuT+C8du4qpi8ifKhRip38RkTx3d/37LYqVOlVpidSBMmx9NUTt8zaI6XF\n0qLF8uL6yll5ApFL+y2FVDZSGSKHg/cTI+nQApYVT3ZG+HsWIP8RZsBUa36V\nNu+FsuRwK/jkAjTg9OzRaGQFGonn+qOTKDQ4t/FZD6LS9MByjC/AeHLgEoMy\nQgyk23+xmkXL84u7LgMvye80xW1iIWR46tgjoajiETGa2/SvIzxVaea8ai3I\nO3If\r\n=OEgl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"287a265159716327ed0687e7ec046773a6565f7f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.218","@balena/jellyfish-metrics":"^0.1.37"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.4-renovate-non-major-287a265159716327ed0687e7ec046773a6565f7f_1611728309384_0.9991047356140379","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.4":{"name":"@balena/jellyfish-sync","version":"4.1.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10b130fc6959733d5bd867f40499c119f457a2ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.4.tgz","fileCount":21,"integrity":"sha512-1y060KP4Qv42m/pg+JNctEkBGmKJCIwQrBWEM+TFnEvs70e9dKywYQnlOF2TBDXo7t41bYbD3eA86fDYG7NisQ==","signatures":[{"sig":"MEQCIFq/HDzTOpVmHGGbYt9vrKj28xMG9G1XQ1zBC2my4tsbAiASqkjngDr8qugv1rzrybNnJrovn5E+7PWAIAxRlwE+Iw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEQZWCRA9TVsSAnZWagAAZYsQAKQE/XDT/2xQ3mbRafGk\n3hGzTLZPMUa/abmNgbYEJLdYX8oI7Y89NLqsmPBEkCv4h2/OYI5YRlUcEmCd\n9+bxw1u3IOG2VcYYONSELmr0qGIU8wv8n836nKynt20jC5UvXxxGlDU9jFEP\nJ0FXWqyI/QTSXnAvmzN2ff2rse2TQCtCzN5lgJb0oPc6dmtreBRNkJWnUp09\n+XhBcaqS2YumaYk6+QM24NvHpKxdqx9BbvKRfu21nV6CDLKdQd8CXv0+CrUw\no8NV1OvaPqiASgnou0auCbyBsjkVNVHj7uKLEkmHBm08C8bs2wtcZeUKa6cN\nqJNXUn4MUqv76YikALQy4tJ4WSaUkVHXOojpypT4pBhXwB4Rfx2iF/Vr+WWV\nlN51IcF1nYnL+22F1dA/wERa7FGYtuWieFUtXf/HXwG6RwFT0XenNSulJ0WZ\nGcFcLr+7B+O5HD5GxPjGPoJCKZKV/bXW9gbYBwDAlfUGGvW1Gv7fL5XN6cFj\njwW9rUsLKd+JdFyG2nuopBubHIPVd9GwcpjqUi6X9fAvW3rbxo5h2EKFGC0k\nXVcJmBNkJ+kDyoQic2mCwQhpz2tMVuUIsYjjwXiEgXUbOn6addrHZSKFsBdZ\nR8rHcYXGf1i9grP+Lrdx00qOMaSHbVYabmdPOJSCHBnlA2SB4hM/t1NLlCkH\nDABI\r\n=kUpi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c4674196868c4e192a6eb263c1c4d320a6cbe8e7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.218","@balena/jellyfish-metrics":"^0.1.37"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.3.3","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.4_1611728470239_0.5194077613549226","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.5-renovate-non-major-331faeb29386de92b77c1b97fc9f49282b7fb1ff":{"name":"@balena/jellyfish-sync","version":"4.1.5-renovate-non-major-331faeb29386de92b77c1b97fc9f49282b7fb1ff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.5-renovate-non-major-331faeb29386de92b77c1b97fc9f49282b7fb1ff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"614befd7b581c160355a2b911992bede71f38bc1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.5-renovate-non-major-331faeb29386de92b77c1b97fc9f49282b7fb1ff.tgz","fileCount":21,"integrity":"sha512-bkd3O+upRPpG6RY8UufEC1M6/ToknbxKqh2jWqagJSrnzAnI8Q2vDe3TMVVN+EVv7vOWW22nxrsZs+PQJyf1KQ==","signatures":[{"sig":"MEUCIQCae+53H/nUEtd2nwU4kPWsekwT64bDPeUjLz7oYwU2igIgfwC5EqrajialPHoqWBhNopHk+kZ622UGcyIzf45O/wo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEUw+CRA9TVsSAnZWagAA8GEP/2JQyoHb0XL012smDpiq\n/+awjzGaR/huuWVsbmtsUEGuRCf1Uq5Pcb3Q17Kt9kJXrD8k4s50dL4pUcV9\nMj+yoJS6JOaFz3seU1gbdQY8S6kauBmxd1AKmPMrxLaB5M++5+lVJ9RnDpkv\nNIh+nqgYQYot5F4LVSbfHPImUhO3ke8AGfMdCdk2o2EWzzDYKaCBbW9ieN2r\nkJwloqpONupU7DAbvSOA9Xd1GcmH03dv/d4Gr9ocp1rN+p+InnPqjeml+PFt\n6DGcUHB8S0Hqd7rsSDODhT4hSt3w3pkaHxNEk7YtlQYDC+X+H1GTS1a7fuqK\nJMhtogzM5WOEgt02T0E/hio5hAlAl822PgTtTvE10ywMB4/U0eL/oLRdFpeU\nmNTGfSpdtrA4dM+AHGWiVc508pcQjyQF7Ygcy4cU7TEBcNOyZytQHFU3TaOg\nKnW+gP0dYwY0xLTj2V/LpDGNznd/L4SgUiKMK0+U4nD18H80uL6iAGXC9G2l\napcNkKkJl8biE+dVI9hOeirKZM7fQ0ndsSUdBOoRtCa/sYiGudg9/1YtpBMS\nyo6RVstYleoq028wPIGAQaMiRcTw7crDtLHbtyt5IGLO0+07d8qpAwzvNxlO\nHqFYZpPX5bsGslZPKgqKkd3W+lLw+y2Zn8mGz3C7bIs+ozJXBC7hcTkpzwaE\n/HmS\r\n=WcBW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"331faeb29386de92b77c1b97fc9f49282b7fb1ff","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.218","@balena/jellyfish-metrics":"^0.1.38"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.5-renovate-non-major-331faeb29386de92b77c1b97fc9f49282b7fb1ff_1611746365561_0.10262110295713178","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.5":{"name":"@balena/jellyfish-sync","version":"4.1.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"daa29b6f3b93bbdf3cc230d2d4c9d8d9153b302e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.5.tgz","fileCount":21,"integrity":"sha512-krE7i1jbvIpObO1PzvUeNmevh6kcTpNXZs+NAvpqgl/hWFj5A1qAfxLAwo/Ie1bn5NHwez4jiXH9RgfZf65nXw==","signatures":[{"sig":"MEQCIEq/2ytiUCbYqj9pQvf1LdCkvTS1ucXIEJ2ReaU+2p9cAiAHygkKKqZt/HxPf9C8pIwbQjmEaPa7LH75q5JuaaclcQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEU0GCRA9TVsSAnZWagAA03cP/Ak5I0ILvsbrwGePWqf3\nT3HI9J9kntjTknaG7vj0CM3xOeD4fOBRE2kHgJm/kl6v7PtmFORQiMgV/3cG\ngmroyi2Ojvhg0tEVpK+ZE4m6obSNDTaBhqzjWB5WkS5NDchcP7hu9t36EAlm\nRnJA0o4g7iJ8EMkbIuBdfo4NQdQGFdQNrYYAkYgF//cfoE88GswKUeh3h/iZ\nf6NdYymlRDirnqISdLGiovMkhgM/bTP4Zj4U6g3R/JErW/iVXaeeUofx/tD4\nK+UUPBCaQAtTt1E8hQCvmPASLyZsIxBRIO+y/ftR9BRIx5avnT1gTtZ97TJw\n0pLbAuFMDxU74IZqM6tutF9VQMJ6rUvkp0ZSxFzGkLaJfAKQjHKAJHYwi2a0\ncjAHgcpAeKz3PAh5C/qVO4YV292K05Dsx6VJZiAtYkBgvvXR26hi//ylI8Pg\nmjE8hghBUEYRZoitDdtqK9DNhjizcRZAMYnw+uMT/98l7q7JB9vCWYT+IV+d\nGZ8AV8jpCHubWZDD7B5loDTPV5YOGYtOOLqfcnCBZd/a1wsnn5h0/8Aapw1j\nrPG5LcZyAha3Y78p+84ECsLX7uBnWNfQJRl01fTl9jIS32askpaP/Kq2kKJD\nmUWhqD+YwrjIBlC4xjzWQp3s6H08eNLPmG1+vZqZkXtmH+6iOHK03DPc97ZF\nEYJS\r\n=yjsY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"832f9c3e03bc4dac1436bb7e5f503d0474d53a5f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.218","@balena/jellyfish-metrics":"^0.1.38"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.5_1611746566348_0.039619131514589956","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.6-renovate-non-major-0c9cf0f07f209f038dde17396e1533b9ad6c91bd":{"name":"@balena/jellyfish-sync","version":"4.1.6-renovate-non-major-0c9cf0f07f209f038dde17396e1533b9ad6c91bd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.6-renovate-non-major-0c9cf0f07f209f038dde17396e1533b9ad6c91bd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0b1ba9b64364553405f7e7f0f07b64af64c151a2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.6-renovate-non-major-0c9cf0f07f209f038dde17396e1533b9ad6c91bd.tgz","fileCount":21,"integrity":"sha512-gzvUHqWg2Y83jPRcQckljwKhxG7Oa/EICfc2xhc8AX5WM5J3jiZBqG7/CQAiAasxH6NjOhQHyXI+ENWqXE1IUw==","signatures":[{"sig":"MEYCIQDdTd6iSDJKSe8jyMa/mIaKdIzxB2kxfCOSkHPFlDnjtwIhAPU0Pf9pBxZsuLcDqY3lZh5Z6v3Tjz0Y+ucCPtAHh+oq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEV9ZCRA9TVsSAnZWagAA/DwP/3Y9r5bc0+dxDdyOvjy5\nYeoE0zNo/B8o1LAnMokwx7QR7XSeQymBUGeWEYaF2AbPJZqXR8FtvwtUM2eA\nEDxIYgEO5d0Lk0qAiHqx4BDXpFwqtKtqQslYEvSF+J709Bg6pLj9SX98Z4rO\nAnl4qdhynmgGpQxquO4tnwpUMp+Ui0IVp4UDThJsJBlLe2GLKWT2BkzGjTO9\nkaEBolmJCY9Z8a5ceQZDsK39vNZ3W7/SjHFtGzOJJF2gRxQgcZjmM7lQ+Kg7\nwMzZ2oYVwIjfkrb9xWQGRpQkS8lKAGMKhcPxO2aS4XhTK5WiEPhpYP9PIBQb\np7VpCQcA86qLBmAaMXsAtaneKR1Zpo4d7RdDspq9dtLICWG6EMctpRCnCXxX\n5Oyy+qKRIW8MWP1ojrmo9u0dGZehu8N2AZp5GVLNYIV3VAkbx0BsOLutiwz1\nJm3DQdLmVAZzaMJSBFl57neAPizHps6BmNl+J1Xu7BVXZiMuXUaAXUjX/AhB\nGUPewHYBaVAzurAQAEYfhn7uAvL9kNwslmfMNwBu3Bz3tAyZeq9lIaMHbLFt\n5TYDdu8HSz3prx2NSPWJpnS/XjlBUnTG0jsAn9aWBzLY2b55jzchSXEmdsj6\n7Ova1LopW0wq46Bs9+Tp8YL4UCQ+kK51/mom4h2ij4HbAYok3MY896wO8Vbp\nzqpH\r\n=HCIx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0c9cf0f07f209f038dde17396e1533b9ad6c91bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.220","@balena/jellyfish-metrics":"^0.1.38"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.6-renovate-non-major-0c9cf0f07f209f038dde17396e1533b9ad6c91bd_1611751257468_0.9294979654219666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.6":{"name":"@balena/jellyfish-sync","version":"4.1.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f381586a3985fd47eec61e193d68c19c874da25","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.6.tgz","fileCount":21,"integrity":"sha512-gMvj6UWuADiT/2N4lL9QaULOIykQwokWTWyAWvg1E9olupDQsMwWj72krK2cZhY+4/QxPMy4tQ9KODref4ZX5A==","signatures":[{"sig":"MEUCIDmFqmQzEsE6I3SIzh6Z0zH5t5TiShzYBvyskvhR2SIdAiEA1vOyePrcwhbf4cfI5B1i8WlOSQd4A1HWLeP86QXypKM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEWAiCRA9TVsSAnZWagAApWcP/RFHOJVGQAGPyxbkKtoz\nFiR392+2QNG3n7qeY2ODWbssYafaZ9/1Rv8ZnmicxPSWPXsGM1ZOvYBFcNMc\n6xR/355hnpg7YOMoq2JvQIeO69DH2ULL3PvC7iZ9VcGalSk6dVImSahOeNq2\nOoVgAR/TAkKp5y+5oxwUyrI3EYp4mQaOu62YCqsVNfP5BU8abTrq/kLF+SRo\nrqkk09xTQrHnXTUdm0UtDA0H9OlZQ/eCF4o8EKBO5WQ7Rf+0Ny3GopbaK/Fb\nCoTBwgUqxbgtnWbTfpQS2A8gAHxcJKFYtnlbdcnlvwgYCVppXZ/AmRSmhNdz\n9xvPj1UkdNavM+yWo9ljSrvsfvQyjPE7dVTL8BsIdHDPigtjsfvfWORofhaB\nC56uyeT55eSj2Wg3nURTzeFG7xGnx77jlgJ5EyXWfdV6zp/aSboycL+Q9vKM\nj5lCW2UKSX0SKHot19o85ggluBVA3Q7t4MqOSOSuEZIXf1x2BKfsWlDdF04k\nQxu1pP9DYuMJ74TKdas22NDEp42dWq5qDOnlQj6m4JEE71wyfczKoq0NzGLx\n5W8Dgzv/DGED0LJ1JC9j+2HRY/NHpfDaydKso3OYRDGpHJudPrJwcHyyqleJ\n0/gQIUGkvtmQGW5/17Ca6+C/8GJHBpY+F+0xLglXY3HlpuWS8k6v4T7zdSjL\n1zsS\r\n=Hby5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"de62e05f77351a404de36ece8300582d736a127f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.220","@balena/jellyfish-metrics":"^0.1.38"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.7","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.6_1611751457944_0.9466024601840979","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.7-renovate-non-major-9f017712f53feea7d2f9fbc7047ce8f4b96111b8":{"name":"@balena/jellyfish-sync","version":"4.1.7-renovate-non-major-9f017712f53feea7d2f9fbc7047ce8f4b96111b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.7-renovate-non-major-9f017712f53feea7d2f9fbc7047ce8f4b96111b8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"818a0e4aeb0f9fb259781afbe6412ff8baabf3b2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.7-renovate-non-major-9f017712f53feea7d2f9fbc7047ce8f4b96111b8.tgz","fileCount":21,"integrity":"sha512-Q5w+PU6xJDQbwnCPdv0l/Vkx3cxoA6Kx6C6sHyVMvCiby+fsbPHQsNkwVQQyTF9un7/Sqq2M+nA6DknuUKkALQ==","signatures":[{"sig":"MEYCIQD8lqzmbsMxojvCjcEdzbDwAsWXDpQT6C7Nkh9nkdzlmgIhAOaF4pqflPwLuKjZvIhQwNdmlJjXAT+5UtLBnSUD4ff4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEhpQCRA9TVsSAnZWagAA36EP/Rthf4av46fa8r6zRH4s\npj6LYfFOCR5dPxiOMlcNy42C4hA2WP1YCKPRsCFlQweSKzQnZhAh/1gtUvp1\nB+HELvUYANYGPIBx2IV/kdbPFMzk1O9P46wL1nDzfwN8mVVqHo3uX9Q8U3Hq\npXWc8C1mizoM/+J8EnxnSpeEB65IdYfUeCgwp2QZwHttSOdGm7NjLSSemyUo\npqjOgj4UhZ9z3BkvrXWV/aI+XF0MHx042S+LquF9yaivfi1GCAJmzHdYF9F+\ngpd8W4Lf/73WGnEVSKSgo4JWQKdBrcxKXXJZNpyHs4PIE1NAkWkk7Xd2reEQ\n2bVnTMGL5e4YwlMyZkuHAePOz07e/eLpqio4uqyJIJnRbPUVJwgs9WAjs2iL\nKi/vEFoRt9gHfbG3wjbzyOo7oe0LRsmPsWUD6Kg1OaJ3t4sFUVmIISkzNvW6\no40RnnmRHKT1P2CFYGuY50nCKslJWNgxE+M8B+pz3qJD74tGwcoQcbnbHBQ2\n10evmclWV5gsRNTQatsAWjkwY5ywCVfDOMAxdVzmWDW4Uk2qWnBp1gjBWCB0\nS+Rl2LRb5QSMn8jylXAtkILORQdsvsuvJabaVJzCwiX7RayHaV0FF54k1YlS\nAVg87NXu36D4nYbT9dgtEZLnLkvJO0wlEuSm/7bj9jBk0BK5rD5z2xZbIihy\nyQxX\r\n=Z4ae\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9f017712f53feea7d2f9fbc7047ce8f4b96111b8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.220","@balena/jellyfish-metrics":"^0.1.40"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.7-renovate-non-major-9f017712f53feea7d2f9fbc7047ce8f4b96111b8_1611799119190_0.07899986396417469","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.7":{"name":"@balena/jellyfish-sync","version":"4.1.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22cf4217c28b6402e2456f6b4432f9776dc4881f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.7.tgz","fileCount":21,"integrity":"sha512-eW81Zj+7WtoKwQLCyy+qFu6RixAZYqyZOvGpHBh0kXAHuyVz6Euai4VHqE4ewb+FvFTal/wGJfr8GuyKTYmnhg==","signatures":[{"sig":"MEYCIQCQ7MY03xIZYN9LLzBbbKkR1wGTk0xzw5du+9pLYaWydAIhAOwIWdaTU73TNmNcjUewD+d6S5Mp9FUmF7gxaw8qaIBc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEhr3CRA9TVsSAnZWagAAKf4P+wdaSFLSnrzLt6ahhkpx\nO18YAAMtgy1TeqAyJ+lhqCSp/v/NAUzTBhYSyeVOPEVLrf8/IuEXSjKTgEEo\nUcl45Ow6CmmvwHOWex7kG7CqyzzlbUxOkyjWyTlR8unlbkgdYsM90ptfbF26\nPGo/k2gsWyA8fBq6UM/5PGZAXv0eH9A9WGGD0NnB86abNjqQHohXeUuSif0+\nriN4dGGWwuH0mGrn1nVMIfxS84KNn7B/CKZt/ZfkTHHy5fsENpF1xQzS5HP6\nB8rOtCPjuHTGdBDXyS462tW+BuFLJMejDCh2nJzTh+iNtnFWCR9T6JdLDebf\nrCxgobEO3gw0z3Dlko73BMp0za/n71EpIEuSPIbZldCNJhtzBAeuOlhHo6uy\nWwmGVvZapYhITFVu7Gfg21VsE51vHJAvDEugNArfHfLyf9LYx79dv24Acs4E\nvryQmFXsD0KeP3IUmdGwYfe2OMW6e1Oe2b6jwJ1KObfKDmBsiwK3TkWqT2s6\nOKxgU/42By0N3k6lzl/jMNaZdW8LVpAsSriUB9YDSLisT32IAkhhcSzUWfbi\nciFSBvE8+AJ4vpcm8E5oqfXz3mX8/BiGd2WV5pLESz5FKoBPxvmwEA5VNXfr\nB87vjuqfVo0dj5k1jU0AkMrTJIPSVmZx9XsVDVbrvJwV3vB4hrRWFfdz34Gh\nhXpx\r\n=qiOB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"33d684f7718af5c8c178bc2df13484b19617d546","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.220","@balena/jellyfish-metrics":"^0.1.40"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.7_1611799286805_0.6643867340943013","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.8-renovate-non-major-8c54f5dd169557f33be0d20887e8a30ee7e46be3":{"name":"@balena/jellyfish-sync","version":"4.1.8-renovate-non-major-8c54f5dd169557f33be0d20887e8a30ee7e46be3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.8-renovate-non-major-8c54f5dd169557f33be0d20887e8a30ee7e46be3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c12cb470b5a30a71330e23c373a200b61ef1d3aa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.8-renovate-non-major-8c54f5dd169557f33be0d20887e8a30ee7e46be3.tgz","fileCount":21,"integrity":"sha512-fc5l71PKCcNDu/MhwhUhVOIr+R7xtqg6SnFWZWlDX4fvdWEwreKClIlAOf1TkXrqa0TcwmG2ekg8fDZq59/qJw==","signatures":[{"sig":"MEUCIQCYtECVK4WB/I+Ppwy0WIluFRN2OueVsHal+eVV+ncMnwIgNrrUZcVWeWjgNAXvUdDUoya1NNdYhGZbp/A+rDMUnsI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEkMiCRA9TVsSAnZWagAAbacP/i5b6Dln840MGghbzz84\n1jEw2jyHx6xZx1dus2HBx1BOoVVpjt48mZ7s/qjn1EE8cDAN70/H/rwJ1XhN\nBALaSZ4Vz2TVn9rK5C0wDbP5CQK2C9IwlX8wdDZfHOeJK3pJNXJXv9d/qkFc\nWkmUixjR/XzpRMc64UY/Y/pqnRwGsRWVgY4zQrrHGA62sAbneF+Nu75HFGnJ\npp3kryta96q8E+f48XMBOgHhguIER166ybPBU8bh2LwyyiN/0wfN0IGzYbFy\nv+07R41mWDsrs7A2c1NYzhNkupk7culDIU/CoF50W8htBXqmOzNMMB2IBjDZ\nK/Re0mks9Y+d9HYgQp4EvAXfmZ51wRVYz4dSDHb6AxJyrfUMRDqmYPZDctmr\n9JCMxEphHnzsOAFVkgSVd1FPBA5nHRtn0T5pZHnl79hxzslJf2bx7fKfwxH9\nV/C/L5wYmHU0CYPrY3ed1YlFN4uaC7n5Pyrw6vXI2Wf1dxZagR9ZoQNjWGXM\nPpg9dpdLXWyh4q4iGj2pTbqUW/86WM3tN76Jikn24o5iypqPxdUyRaEvhDaX\n8wRSx8TldsXm+xBwxMBCrSffjATrjNBXl/mNP0oJhRXL0hVPnXoNdFPa/Znj\nKA7ghHxTKY+7m2il1xN0+a3hGJYrsj1Mi7rFhzUiFc+IlYz8fl+6CAXJ5cdH\nkaHf\r\n=xmja\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8c54f5dd169557f33be0d20887e8a30ee7e46be3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.221","@balena/jellyfish-metrics":"^0.1.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.8-renovate-non-major-8c54f5dd169557f33be0d20887e8a30ee7e46be3_1611809570025_0.23995694912735743","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.8":{"name":"@balena/jellyfish-sync","version":"4.1.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bba88d9be070a7d14dc240d4b783590be0c5bdb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.8.tgz","fileCount":21,"integrity":"sha512-jv4f25MaeV8/M3qT3klfJyVTKFoNbkFJ+hG8i9ycvVBoM3+g7vJDsX1hMqpfrtL/rmnQ79a9FKA3Kc5kcOGZdw==","signatures":[{"sig":"MEUCIFqPEg2/67UQq+18NwXx37kWIF7sItP25IdkXUYJYkyyAiEAwK2rf3z+a9YfdFLPg+PvmTTVj61DzZNrngR5faUH9+E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgEkPaCRA9TVsSAnZWagAArhgP/2YcqZZr4oCLynIN5TOu\n6inM6DojC4Pzbb+wL6Lu+Asec2U52ECacFgjWiOV5rRzFg/ocuq4chXs7YVP\nXj1RRwvyCqouySnkNn4RMEw+BvUr/miHyeW5t4KdDuLBpibKgPnti1X+h9UT\n3wJLuhnyyteMyEb1edOOccc7nONlqduEYTmJJW0KXD8gj6diIT1EVhBjx6lk\ngGGPQ8GuhIk82qUTfffpCDg2OcLqpCNLPJMTfQy+X2QNsTy/2Q753+XAiOcV\nY6aLhXG5pBaTBQFykxR1tRpN52ZVXmPhmQGLRLYhqDndCY+6S9JgSu1P8Xuv\nngvJo5tBAIS397dmYbKfuxISyYxocoNJo2fhxFhQCEwu766yAJXHBvu7zDjd\nNBwsLPpw9SHxlUQSVN1Bq5Wsxtzkubzwqt2sqGLNk3DOOo/0wNuGJ5X0OjFQ\nx3XqRquJ36JpMEUc3wKac+kqV+05lEsJCgDzNUWlurgQsedqrXG/jXGgbu+5\nuPCk1Pnqx5FoRRq2yTMsBbaX27icVOdOcmoUm1e/mq0Lr5w0zoD0MQN3Gi0i\n8Gsy3Mu9CD8SkGB408GlHnPFnDOL8BIXsXSFPUx8MIWxBqhdFrCPnA6f1fhW\nlcLy7/AIrftGHGqpwXhYYjzt3Jpff6wtQYgmcxy0uz2OZcNR6dOS2vUUkO+7\noTgP\r\n=J515\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"015940427d3109b59e96e8f98f6d5fd2eb1f732f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.51","@balena/jellyfish-logger":"0.0.221","@balena/jellyfish-metrics":"^0.1.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.8_1611809754024_0.32502133379207865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.9-renovate-non-major-28ed5db9fdabe0b0432d51b29994233ef3fa4dc5":{"name":"@balena/jellyfish-sync","version":"4.1.9-renovate-non-major-28ed5db9fdabe0b0432d51b29994233ef3fa4dc5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.9-renovate-non-major-28ed5db9fdabe0b0432d51b29994233ef3fa4dc5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4dba686b7acc42812906eb72ffa81d9b81480288","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.9-renovate-non-major-28ed5db9fdabe0b0432d51b29994233ef3fa4dc5.tgz","fileCount":21,"integrity":"sha512-2a2SmWqabBki1z8ptsXmw7jjNGkG33nknduWj07RP8Fa4UtHFUIHnPHwA9AEdrP+ivdNw4Ybr1ja9N6d3Lr7EQ==","signatures":[{"sig":"MEUCIQC7GL4+24gNapdU9rtoKTpgJHBfU5LmNoiFzWX3hHjIkwIgKF2NJCSRaM+M+DvRmt+I+HwoFCWDSxgpWP878OC/yps=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120604,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE5uaCRA9TVsSAnZWagAAGIgP/A53KExiY+2sKGoK+wDB\nXvXqVJLjEHujt0HkYq0tP5WXMuPfgM6D0lq2Kk/g5kqBtfl4b74Gz8GO6pgZ\nYaSdB385BiKK4DiVNrci3AlZ8MpCFEY4SKseIwS+uqzhEHeHayZoioJ9Cc7i\nQFkLysdPd8J7LRUj7tChZ6nX0hO+QAu3FmFO/ucT6frvQV54x82c14V41T5z\nMY+Bin/EME5MxzgSydb0YA4yoKqc/R1xayjlq4AdglClxQO/p9qTuSIuWrNX\n3S0Z6bkBtS2bbHJWnZLMJmXOA10QRT+Rn5LdTqOmGtoYw07oCFbVGC3Zz2bh\nOhl76SaQTMvFzjzf7QbfNhXLa6PcNQpQbdPMLfeOmFvpr3eskP2rCfGDzJm/\nKpF4xFGq/mcKKWEsEvk7v/0SXeaZxc11PawCi9x5rPFnwseREfPQkltbeY4P\nVHlL4O0CJMc5Y266ZkDXsYTgxQzhAHvW1L20X66tZ7SUWnz8WqnT0W2uEUNw\nwQdxRST5sVUgVIJUwiQEJB+j4d+wqWsRzmxxd+B0y6IlIWKOhAWhq4zWU/1p\nHhXUnC3Wlci3MIl83g3+lQjMC/GghkNDPU1LZIi8+BoMgknYvzKpFYSeQZDl\nQAwVLFU/Qf0/qLS2b5+bfeo9qeRfOa8YI/atgi0OVYpZOPCD+iPS3SnQ8/DZ\n92el\r\n=+cYj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"28ed5db9fdabe0b0432d51b29994233ef3fa4dc5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.221","@balena/jellyfish-metrics":"^0.1.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.9-renovate-non-major-28ed5db9fdabe0b0432d51b29994233ef3fa4dc5_1611897753823_0.1681811436450067","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.9":{"name":"@balena/jellyfish-sync","version":"4.1.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1918ae70924cc19ec8e3b770bcc72aa2ce7b04a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.9.tgz","fileCount":21,"integrity":"sha512-CUIZ3lElpqHzIl9LZgXlwIGOYzn/3X3QwE0zuTwYFQ1mhiT9t8mSJYzJ294qKoujsdytqpQgF34KMMqHC35JFQ==","signatures":[{"sig":"MEQCIFgMgPI9RkplRCR1kQiaF+2TMYoOBu7HK48e5DCGpCryAiBGdVhXx67k6sMqOYEUJmRQA6nCbmeHSEUgSohY5VjdiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120544,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgE6yRCRA9TVsSAnZWagAA0awP/3NdXf7eWt2jwIvObVJx\n21KfA56I2hvkHxl+IRYLhrkXTqq1V+k1SVcoIUaQfZwweVSczc8Q2/BDvoje\naxTgdNCL5tmy/3bvJwFnYZPLOGqZ8ar3fPlKbjvCBRInEMPQKE1roraqPsbd\nfVbF7jg3FR1ePbnmIh0kqHBtMIgeyi0vq0jPAJl25TwLxO0t4fUmTDHD0Obh\nK+wxZAZcPjg7CMP4xXDKDdpyQQxie9ROKhxFqfOQFlzZtb18K22HjV9Rk5MV\n2ZsDeZ4Qb9E5W4e8MmEv4+nbRfFq8XuaPcCk/pdzJzGe4jlitTNAWqNBaO5y\nKhK6i6sIELwfL4IWTNXo1wX37vz0uMEsmwZ9lKo1AX5YZwKHSdJtgB0xJl57\njKlvyjQbgN/hFT4yJTUgWSswtHeAUwdRsqDb+l4w3I4e9uSXYhD9DLce5Qd3\nt5yVPs63R3g/moF4+cF0Ytom/Ny1aTHv0bwE60YUHLkDAk+pmOgCpb/8c0y+\nyeyfJJWtOoYZ8Vo31sXj3evKlHXwtpprfTU3w8vT/AOeXRLUOA+BRW74wzJy\nqToNmjrgCjjUS5z5+x3rvx6g3msayTYorHPYb1typ6JnEKPzIhYL/SOlY5Bk\nOxKeA6/YEBx8X71ncHQWriZTFZnu/PrXuKLVi3p6KOqFCSeIFTlrSpRKE1EC\n2QUg\r\n=rwNL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e8d29fcd72613aaebaa2acc45abecba18bf6b1fc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.221","@balena/jellyfish-metrics":"^0.1.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.9_1611902096628_0.10619269053310232","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.10-renovate-non-major-4af34434f026a6aeb101b4be8ec9c471c2b0d8b7":{"name":"@balena/jellyfish-sync","version":"4.1.10-renovate-non-major-4af34434f026a6aeb101b4be8ec9c471c2b0d8b7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.10-renovate-non-major-4af34434f026a6aeb101b4be8ec9c471c2b0d8b7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0cd37f15a767a62563e3a2d8e490f188fa2aa082","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.10-renovate-non-major-4af34434f026a6aeb101b4be8ec9c471c2b0d8b7.tgz","fileCount":21,"integrity":"sha512-erf7BLE+LrjOeJNtw8O47mHKmRSA88SB2kdlCWHm0phiUycvB5AJ1DwAUboYGR7HxzL3A43spqmotM9mNZKmIw==","signatures":[{"sig":"MEUCIG76bWO2Nv0oLh6iY4B0CUUWOpjvltKm7mqjrqFa0rRtAiEAwrxKvUZG1gWXjR1fui/I+Bmfybt6TRLgp8PSNiCQjQ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFEY/CRA9TVsSAnZWagAAojQP/3C620NQS35Tn00gaWAq\nGnJ4r/8yRjW1dzXWBMmOMFvZQF+UE6oJlRdgG5BCx+pwXvNtaAVGAky3NZne\n/nhwG0R4GTtXb4ZHuebrbGfJB4cjVMvj6PRGHimbUDFASpqcpQ/A+h9le0XU\nmU6mlQ0HOeOmOcd0+j/3gtwRbYw+8VisiGrewhmaCiX4tSDL1e7dF2r3/bgf\njFpcZr+YKn3JaqCI1h0JV/NV4YGAjdRrStTukOXwWPT1rL6mCmHiqU1XOWnM\nHKsun3CmKtv1i+fdggjnSV0G8Xg00XJGpSoAgSok9Euo6JjwLwPx5gwS8Q5f\n2rFJ0gX8Ured672gSgqxZMkm9taecd8GmrOr7LzYi7jdL3jGIBJK2aV+dDcc\n5mh4OTYLneQCvXPw+gvTb3m1ZCcF2muCHSImg2XfTZE6YilKX2K4BhIQyTPJ\nhoggQApV5gsFuvnx7mYKkv9IRJTZXsaITqe7WKq3gmdSnuqTRv4MxhqIcyJh\nyxVTsz/0K1r0K7SC1p4poRKbUVa46yGJm197vh5rTMItiPVvNyaZr4Xr1Sqp\nsVw/JczJVEYEKiWO0BQdSNZZ7k3VOUo2qkiRqjWQzVyyZamcbp/d5psvJZr7\nQbKwhEisPbumTEtd3gFPUjTCcfze7cB6N047CpWslm0s4HGuId/izAyP5qjg\nZVq0\r\n=bGeU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4af34434f026a6aeb101b4be8ec9c471c2b0d8b7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.10-renovate-non-major-4af34434f026a6aeb101b4be8ec9c471c2b0d8b7_1611941438521_0.29031189859567585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.10":{"name":"@balena/jellyfish-sync","version":"4.1.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1cfb03d06194b9ab3bd62b9710035b7daaf4c004","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.10.tgz","fileCount":21,"integrity":"sha512-BGvbr9LNq+n3srDkjpclRGF4eFZ2AXPoFTXIswx8VpsWib6XYt6TrUws2mzp78AvJYKhChUiYNUqsesrI8khrg==","signatures":[{"sig":"MEQCIEN932sJmMTLSUDYG8lGAn0SHFvUgSo62f9COvf4oThSAiAPSBm/2+xkw0PaXWQvj92NvzLTUJ9N0Tk/B0Rg2wb/qA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFEb5CRA9TVsSAnZWagAAUOoP/3hFoOyTXP0jEPheTZ47\nKbc0zI980OWcikIc9HTufz7teFKEO19bI03vRoNcNYk5ImOwLQBMzVC92tPc\nRFnC+MRT93G3t7oZjhV+j8bhb6lHFTp+RPRhsWnf9AikjxCKmeKHAvXoXnUX\nMaOJ+i1vID2Y+0TuDLiIilxYMXcrYJFE/UUBoVTcFBzYLu0eG1X8Bf50BaqF\ndIp682Pork53PePvYD99AJqrPbqKptEDnsdkw4UCFBH2NMD1rmtLaQKvkBvt\nOwb3P9hl3yi3GLMKTey186fsTmV8dZbhTF08X69BIUaHG8tf+mKOd4eS76pT\n1Cw47gE18fHvg7AQ2jzVK8V1sf0cib550Ns+I6xJwGstcBCwgySF7453Zu5Z\naKtDkzS/9AJqTemqpJxVVfqyXY8kFAL+UjMYQGBAlU5mCC5UV0QDrFXaDKff\nj0jYj9AcNqeQIJK6jCbfbt5eFKsKh9IR/sMUoVqryhAs+EOuBQnrIptZQufC\ntjzHypcpCxSK6+cdbLQL5TQj4/62IIwgz2y/3omioLwFpp6srvvaLItjnvq4\nLVqqkU29y/O8znjCrVsSZ4L77YyDsDMgLt/s4/lrRTqs3hsDM/lJVY3QdqEe\nSEZx1A0jLqg1y7bgWRxYvMGtyFtDtjSyRuo3w8VbM7ZXkNjQ4e06RSV+kR2p\nVJBU\r\n=WLRm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ea4ff9475a14ea8035a6c3e16d2bafb79df2e990","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.10_1611941624456_0.33389862562967587","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.11-renovate-non-major-24e7e19b5b4eda21e237a9d2d90013a91960d839":{"name":"@balena/jellyfish-sync","version":"4.1.11-renovate-non-major-24e7e19b5b4eda21e237a9d2d90013a91960d839","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.11-renovate-non-major-24e7e19b5b4eda21e237a9d2d90013a91960d839","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"413038626747277a1212b05a80016809f1ae99b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.11-renovate-non-major-24e7e19b5b4eda21e237a9d2d90013a91960d839.tgz","fileCount":21,"integrity":"sha512-Bfonn4rjo8okITbkD5xe4Sd8sGkoQ2150Vymg6V1V1bRhzd8DJnMqjk94+dqQUv0Jhs+1WaYpQxRBm12l1knTA==","signatures":[{"sig":"MEUCIQCvFoyEob/ypDvowqrdpiji8MtmN4pjZ0TAJR9yRuS7xAIgXHawb9Z4tt1lAppGl2GpWN82jxPrAf1ktCAns7C3zqM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFFStCRA9TVsSAnZWagAAYa8P/3syCxzXWLtt2tv1fIuq\n/39KDqW7XIvCBAabVD2PE3GzDlJy6CjNhRijFACueWjk/zyt6UxW+Fxv68O1\ny7GcD4Q2T5iarrYYAm4n8yWfNnfBeemQGU6Nmr3lUBvSHFHPiNYpQCQt1DzN\nI9gdyxIaTPmq52mVqVIWg0z0589+MyFqmmnLTeWIZX632c1ZwLwS33kIcMGK\n5Jk7xumHYNoZMwW7FVnOcqQeoQJXWXhxPDL0bATLcpaGUt6E00jil2a7aAAI\nULfKOMtSu4LiYmZvB3CxDaB+5tuGY/qE8Bw4xOjXyFfirxTQSwgb/WiTGa0j\nPQwAXx3hr+AaLqHxlsEF+paRj9aNsajoLhjc2OZPOoPATv4X8JYuwUBno4w+\nslflx1qGYtKg4u+xP3RlhaIyUDF7ZpK2IyvyhazE2ye3eWSnj0uoOa8GWxj6\n4pGeK0XL/QcK51iOYTkLWIKs+MLpHx0U6z58aBbsBbCEqVF7WfTiVSi+Npq6\ngNqWWAsODRpSX7MCtgrhCDG8oM0jxdoZItEkbBJdSEFHT4Ch8s69GkO8hfXq\nLpuk/xSzE8/MBcUJNoYbDDr4gk8paYddIhqFItqySCs7AV3+XIaXqEJSYscp\n3+QsYgijsagmKT9nXOkmUt3ElDTFxdji6iXNkMJI/vFEUg6baqn2OzpU4PDU\nB3cJ\r\n=0nGv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"24e7e19b5b4eda21e237a9d2d90013a91960d839","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.11-renovate-non-major-24e7e19b5b4eda21e237a9d2d90013a91960d839_1611945132997_0.03533534700371188","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.11":{"name":"@balena/jellyfish-sync","version":"4.1.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5460e28f4dabef5f0389637486db5b40db92be73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.11.tgz","fileCount":21,"integrity":"sha512-s0/GkKP0JQIKcwDVc2iZlyQGkaaYfXdrhyRTRW0O5lgyA+eyA6PyKGbTEuIFpo0Li/y80xPHbh2InNDdFCdGJw==","signatures":[{"sig":"MEUCIQCSrUsZMCSI8lQDoeh1ec2zlSS6sAZeSTnjoLvVRMKtGgIgANB8Eqj4ysZtUsy49cvK29BfLLzx2wFKu542PGSoqlg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFGOzCRA9TVsSAnZWagAAkdQP/3JGc5qqGmc/lczKQp1V\nkm4NyRQFVVCfoAQtbGuTduyuGq47hDsyNIk4p71kd9B3nvTzE2JwqMD3UlUB\n0SoWtJ8fd/+ZW2AIhjUJBd7cZyf5zOwMV9xcF3e3qjhD48DgVrLVG8G+TYEl\nektyd0NZCd1jAHnYr+91RJDJ8iJB4A/G1l60I6KFTYEMux7lg4j3m/zqdrrW\nFv9YRNSelwmzLxM9fjKGqEltRu11/jzP2kDmSc1OpJnH7Jnxj5ICQU6SHiaQ\nK7oNQVPC8Jp0RO389oyLK7WvAfB5f3AH2Dz+MCEc3vwBlqgGvctIGB5eLv/D\nu5xN+iBOQ7y6s62NkSQw0TjSQHJVl2zYmI4/nN8phbFHpNHqUtXbY/umOSZk\nYCj5aD8rX+xHeeySVR0044AuCe+tKnainId27nwpmtx8CgRgwzkenM9ZSiTh\nqyvEUGFvCJCUhd4GngryhjE5ocOclCFE3MA2QJnA5JrAVn9L7IFc9Q4mYvws\niBodkcWY2KJJrJ/c9Qzft2AAW2DJjQvVcsPqTdsTQzz8kFCb4p67FtK3IHGc\nnEG7v2MxQqPAa3mlniNbrG1HofFcTOdeG8u4H9kxtBmgjOzEjQC9m/qyUx13\noGubpjbit9PB6/5HlOWhSxyaxyIyx1RQQt6urH1NWr/sy5Q/PkjuHVqaE60L\ndZPd\r\n=nlIK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"91e515844abf56054c72d6311b62d9535cb61946","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.6","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.11_1611948978985_0.6386004891331067","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.12-renovate-non-major-38659715aea130666ce3c7a5ed18c90eabf0285a":{"name":"@balena/jellyfish-sync","version":"4.1.12-renovate-non-major-38659715aea130666ce3c7a5ed18c90eabf0285a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.12-renovate-non-major-38659715aea130666ce3c7a5ed18c90eabf0285a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"03f2f5ff0e842a860bd00b7d4eff85fd8bb56991","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.12-renovate-non-major-38659715aea130666ce3c7a5ed18c90eabf0285a.tgz","fileCount":21,"integrity":"sha512-tcWLm1PrKuQTC5eGtq/WO8hnAwSVVSlRIiVoiw5QlmIqzU0dSAqIjYfMpT0dlRhHNwctL9JhxfGHVBtT1zw3Kg==","signatures":[{"sig":"MEYCIQD39rMRmqvBLA1K8TlT3jwSsOImZioUW84uIXgL8n+VGQIhALaWPoX1t/LQqpSxNiHMSRR4JupUlKGYMhA9uh19pn+H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFOhNCRA9TVsSAnZWagAAgtsP+wfsCGVN6lI3LapzamOZ\nlKE8/qDXCdF/BUypYB9drt9azEZfUnJRTmm8lQsg9iASyqa0thbtgrSx8pZG\nU4DnynFBpfAwu5aRNA+X4JiUmrTAxP2LdPISbUesck2R8CWoQEkKlNl8o0cR\nQInGZOz9fRaC2RjxoyQuq2tDoOa/FfNhuN8utCYUKdg3oAVW4yW/+iSK5XAj\nB2yxt3NG+Fti5BKhMS91OXeEOL4nqa9N5j1S+Yto2RifU3vlUpxHX5ptE0o2\n946tS6qQ+iTsHmw9Hm4E0vS6OjEw7H/w0mngIfKudST7oFLrFMoyplDdofLM\nacjjVvIL63r7Yl/gM9oZu9njVD0LzZAfait0tjFI2t52RuLfsUKQ9OF9ZHzs\n+TfznSX/eK7zTk3WQpzi9RMRxTcsmVJKgPGyPq8uHy989Bi3F/uTpB12pMCn\nDFK0PQDV73OyVcd/G4ExfXUMby2IEpYA4TabS6Ovsj04PKLo+ownTEu+CC1D\nz7KXlHVf2eNY9glHrJo0LeaKKiBHmghPEaZmuE9DRZlUAX0ve6BvR1pMWKIU\n/e5H6B4v3jW+P29VXdNRjHCADENgabXhGEs8OXir4zJcclGnHJTQyC38ZHXt\nWPzHA0C78btq5ecwD4jArD87xiw2MBmbNfig80C0HI7kkP6tehXXFUER27M6\nmWTQ\r\n=fdoV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"38659715aea130666ce3c7a5ed18c90eabf0285a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.12-renovate-non-major-38659715aea130666ce3c7a5ed18c90eabf0285a_1611982925351_0.6636962433794455","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.12":{"name":"@balena/jellyfish-sync","version":"4.1.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"16aa2cfcc7b93df98cb64da43f26eea68726aed6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.12.tgz","fileCount":21,"integrity":"sha512-lCef9AjPeh0I4OTM8Sc6m8K6ep3mwjgyUaSsCS7co8tKyFv/k7yaN9hLxBkRDcY0b/J5w4CW7TVRV3pdwgQmfA==","signatures":[{"sig":"MEQCIB6hNq46Nydmo0SrPMXn46x7FCmXe60oAaeHOBj/n4FlAiAZI2WaIrEgMMb27Z7X3OegKjRqaD+52X3rPGhVh1kCag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFOjsCRA9TVsSAnZWagAAyq0P/08IgUrdY7dEXmatjw4P\n9PvTarFszBCdhkjhVG0OgHf97qp/TNRR42FlP+igL1pq16wUCPbJJ4MvGcEJ\n+/kIeOrLYYL2ZVXsdkZDR/aVDIRmoHixr12FOCRsBlkUZnirW+5M+u0ria0D\nuuTJVK6jbfyFFs22y/xUz3RNXuorOI0vaH8w0knTMM/i0fEYJ8uIDG81FcRv\nCx8bA4ezc8dOLlePLw392wNrMxPvWapMllqFEc5MC8VKodjZiSWLZYcpapKd\nBw80+oICajKDj516OFPLfDppuuYoS9zwPVkgAldXjf7sHXH0OJbwaSknfQel\n0j8/Uo9v3I2sS7VHcCYxaoWBAiaMyRYlLeBRS81UfEW2XYlwD79226cGV6MQ\nqiuM6sBN2zH3FamyBndfNoVauVlVxuE8MDmFVo47JM1S/+rXMxLLal6ECck1\nBl1LlH858mbdBZ+GCbFCfKpg/x4DKD5jejfzKQLc9/jSwx/WoRK5jBYJ+nnt\ntpPkn8s5C0JGFcqpN39MJHIp4Zkjhe/zbV1Du+3u4BDlunm1Ddl21N/wMFps\nIehhB7XrAf0BrBN+y5OBCgrRD050jkrV8ixy914zH3p5ACEsT8CfK+Sz7ZlS\nXwY0Rz1ZR+Umg5sMlMebOR2L4eQxo5BG3p7JUsBJePKp97jhIx1whd59fAJ8\nfIuX\r\n=r1v1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8704c92cfde5d06a93e626ef73304a97d14423a3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.18.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.12_1611983084080_0.6568944174970639","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.13-renovate-non-major-95743791ce69211dce9b2a804733317822a6f706":{"name":"@balena/jellyfish-sync","version":"4.1.13-renovate-non-major-95743791ce69211dce9b2a804733317822a6f706","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.13-renovate-non-major-95743791ce69211dce9b2a804733317822a6f706","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"45669f67f381d21b1326ed98bdfc8b133c85fe6f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.13-renovate-non-major-95743791ce69211dce9b2a804733317822a6f706.tgz","fileCount":21,"integrity":"sha512-SkvNKsWPyktrA4ahSst4tSKXDWdIlei3ChjaLDzXSv94hvLAuzU5XpxdZ2bYaxoSIiPN5JNuriWlxLVIwizqHQ==","signatures":[{"sig":"MEUCIQDUCNSpXf3de9/LLsRIk8HkehVk+MCORh/Hnv6ahnT4iwIgcW1I18wod68Dw6DjVEJo9FYVSm2EmuBMpurC6b36AY4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFkP4CRA9TVsSAnZWagAA2fEP/0EnuBEubxZcVea9rCTj\nS8k1XeaiaMIcOv33gJkx8nqXW9vBoHV5e9aFToxn4ksLLBG5y6EaNDPuwhsh\nMGV37OtIwPXcllSsAL3cnvwBpabFM/3Y7+JYZHnYg8T2im67DQdWTAqJXvsv\nBVuf4tM3thHQJUHjSFYef0xix+/+BHbJaEfBE8yogRdIAIZndHcbdNN7Y9UH\nABY+81iWh+r4ZvWrxbgtKVtfrzah/PO3ettX/QAslCk3e70+kJ1nIwl2SOpH\nsUFvHgi2SUr7bUAs07Xwgk/7h7FDmp6/ms3USNHICWnWGGmLevVKolH7Urs8\nisa9TCmT9l+K4djFJyBT4Bp3pr667RKjQ4oZQmwp4N+HDVbW+9TrmqEZh+QT\nRXF9mz1onqZ3Z7kFLMnSz35WGQfUK9ka0+wAkvd4Ht4YfT1PhoKe/raD9bWi\nOAdFIjdCQLJSxPqnY8X2jwxQKhu025sFV+99PKC6XbqcPvj681cUF9Pdf7fp\nIB+SiuUBh3CYHA7gbhZ4lttaQupy88GhyXDZu5GUxoKdQ/OqNnpl1GwZOzXn\nKzPSFCunWG+398GbHkF+gDBMn/81aon0lT5fdcojBuEO60cWA4HfIIf62aSG\nvdmuov7UqyMv3r/MkeKOAbtlesTJIzibVQmBNsKqtOb1EUWM75DbXiCWJ4bF\nNwH1\r\n=XPUD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"95743791ce69211dce9b2a804733317822a6f706","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.13-renovate-non-major-95743791ce69211dce9b2a804733317822a6f706_1612071927970_0.8899555948293139","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.13":{"name":"@balena/jellyfish-sync","version":"4.1.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4aadacee21ccf09b0f6a8eacb4e883ed4c5e8ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.13.tgz","fileCount":21,"integrity":"sha512-VlP9FfPAHrkS40PKBjiuSuaWdY8cQ8OedfgPknk62NixaSinHaevbN1mZNxAKXfp9Mc0NWhKy/wArqefnVjukQ==","signatures":[{"sig":"MEUCIQDft6Uvr+JPsx0X9Ws5doZ7+0wkWT4QSgoLOfeXt6IO3wIgXiYHUpucmtyYPPdn7X1XGtG5tZEDreZ7nauDEJHun4E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":120933,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFkSoCRA9TVsSAnZWagAAsHIP/0Tr0Sce8uSqXq6c/XfK\nQbGOBJiBXycNnl1VMPP4xZHw+KJauHWfkrYHDixMyUK1kOMjhbLn/iVG+bsk\nwvSdgIXLL9Hp+NCphQ+RKMXkCiPGz+tGb3iWdHlpEA0fMTY/uNwP/pRfl+xf\nOTZyRsp1iu9bBy/1gNjMCEMUf+pm37P73iCMQGqwWoFwAmgTb+n8HWIU1i3o\na0ZjTjpITe2rmUwtxO1Q+Xgf7J1+N1N4XIKvF8/iJza8EJsrHZxfDyg2zbSQ\nBCU466T0V+CJkqH83HXkoO2mKJC0HkMGKyFOR4p3oEm7UJHlAZKJ0jCbD7mF\nmdQdaR0ZUTAZGt/YRiK4XxbdQ3oOz7z+iK/piKfzufQWfUHtMDhAARsgoAVa\nDR+37La6aYBZ8u0AxfsGs5AyqPZtLqM0JvJGnBuPwpn4hBbtlyoodfA6RLz9\ndbiPYcroHHUmUPTEac5Taz7W0kcbTe70dTnLMz3FHtnYiG3uwVDv2pk1jAwa\n+7xOb/ZpEkW+juSEI2H2wpc1BFUwmCqCOYQtE21jf8rcSDw0LjhGq/1U0BAM\ntPwUNGBzvMbZmpaZiLJd2RcoinWwmTRVqo+I6rK6QCncejAx3Sqw5/2TNy2o\nt7BFIlXIrxdL0YOgLI5t+K6u3Mxn4ozb2y4te6NuXwV3suiISEisUB7Bj/gC\ndf5P\r\n=En6A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"212634084138a0baaef7293ca6f901e116c0398e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.222","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.13_1612072103432_0.40482976738696497","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.14-renovate-non-major-ab63726a85349434ce627f8d60df7110d9d1c378":{"name":"@balena/jellyfish-sync","version":"4.1.14-renovate-non-major-ab63726a85349434ce627f8d60df7110d9d1c378","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.14-renovate-non-major-ab63726a85349434ce627f8d60df7110d9d1c378","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"558de9cc52dfedebe381409c3d8b8ff54e915970","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.14-renovate-non-major-ab63726a85349434ce627f8d60df7110d9d1c378.tgz","fileCount":21,"integrity":"sha512-b3XWSViqMhqNEsOvXCH+znGXqduHrR4Zw9aHLeVB4CmAtercAOs+DnjG0XKcHNhql223UnncALpSlCishh4Y6g==","signatures":[{"sig":"MEUCIQCIMwtYCiwq6ApIuePgoEfQQ20e+hufoQqctPG+ZNF+IgIgGw5Y3g68x62yk5HQldnewNhiVj2yt0x9YqTEMH5p2rQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFlUMCRA9TVsSAnZWagAAlvYQAJIS58/GsOFy+X7iA3tK\nAk0i/ln2F5n1hzw5WkZMyrUz373IAaE4nIOpQEZ8hPjjMEVwJJ1YEbbYGQnf\n5GrdpKaDPW7uU6cENz63aJHpZj5WjGIDGwS46I1/ZFETuUE0Z0TZvNZ8BbvM\n4n0SdL1Zgj/aHeYCHBjSyd9L2kcqS/HEDYq5ungW0al4WfHknaNrkElIw69B\nlqKXJLQNaIRL6a5ggFizHQWVBcJqqi/W5c3oaga+5NOb5lmJobtRSyipG3X7\ntxpka8SvdT/rfoqIj3qM0CZ4e/ICGyAETMsAEfiBidYNd/84aHjHOShUe2eR\nGwaIIu5D3N7yDMyK32YMryuPx2eTn8XMrn1Q9FrYvT7vmRK2vXkZm7ononsE\ndtWFxJe7WDW+5QcHaQBCG9o68Y+Oz0nt58zf22DMHX252GXHcjlCGyvjnnLS\nJdnLIa2x/Ab5i8t2ng/j9OlzoDSTO8eOsObOw5tkGQytxhb0rFxWeRMAsuIC\nlFkA0gz33b3IeKHHhpLlk5v+QXLWHxvxWrPYhrBtD3i2CAdct2+woVTzPPjE\nob5CTlByJl/nWy8QKzLWhsjLC0xJu9QYCOMCoC1V2F7SBOdrVriMdnHmpNG2\nRufNR22CgQ8kwq36yw8fwroQCMt3GlrEVYSKrjEVYs4jENMMOp2elfE+KnWi\n9hGv\r\n=bcSL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ab63726a85349434ce627f8d60df7110d9d1c378","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.223","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.14-renovate-non-major-ab63726a85349434ce627f8d60df7110d9d1c378_1612076299680_0.7463090985418042","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.14":{"name":"@balena/jellyfish-sync","version":"4.1.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"126d4f999ca83ffc7a03079c8b52077119c95296","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.14.tgz","fileCount":21,"integrity":"sha512-Dur5QvxR4pCqPo5Ob/s+J+0w1r/1pJUXZ0zm5FiwUvVMoorKRupcPhw3TjTjNoqDg3yssUyFVYJ3AJi48p7mLg==","signatures":[{"sig":"MEUCIGLhHy6IopMmLMgX90EyQi/x0Ov1JZ+spBq+Nxdn9UMDAiEA0zMfT2FPvAqUGSaxsB564lB0pyVjUX7e9FaNhRrGF2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFlXDCRA9TVsSAnZWagAAVrcP/0xvJvWtTJJLJAxJQHak\nHb71WapPWI1iVoiy0DOGfXLJEcMcH1SJeN91t98KoOgks88rw98GHqAbNSFV\nznHzLtNzFnA9yOtBXOCJg5k32er2joPfhK1re+F8MvV9aULz3n9zYTwyZ+cW\nSaE7GRhQOGb6yrkqCVBLhVmUYekmBS09IQSWTl0uwB/mn7COa1cKJJmwTl9S\nbQNKkwWynidR4ZyccI2q5tJWCUt0qUD8HbxqwPM/v0WZhzeq/ukyQ1X/Nd4F\nLavAPSCCbFSk9d12769JE7s6C1CbUn3zwJXYUTZM2kxQRlntjliIFVLCYVik\nCyc+TuA0KUXNpj7mVKOWsm85HuGBWpJSDS9dBu8mWKmaNyyvF5XScZcbkIRK\ndelx8u8qtys/euQuLMrBz22gcWbpcjSKdu4XEja9T9F9+0w9ch1Lii5zRu1C\nSHSVODpaEXu+lTUIC6EjKOo9sIlKEOTnJ1LBl+0tlyccsO6Rfe4P6rq2OOAD\nLuv5drsfPBFk8HkYEqbzBv4mbIUBJIk/997VOEv2i8haqruMe/M1LCmGZoXH\nLJS8HA3twhZvwEb4Kx5GNa2CaUFSfHIUnRVULHvLuYPTpnBYTqeJ1NN2w9Wi\nKLmwDGiU/ZCSiysUuvfi0GM8dIBrpFA9GVffMarqigkYt1qGzqavN0dcgcgG\nMR5H\r\n=VuOb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c4fc6b5cad707f6f86430a5a9cb9c24b46aa18f8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.223","@balena/jellyfish-metrics":"^0.1.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.14_1612076482595_0.24004628506116887","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.15-renovate-non-major-6e6b15075ec821d3ed28a614779a6be0f35f5184":{"name":"@balena/jellyfish-sync","version":"4.1.15-renovate-non-major-6e6b15075ec821d3ed28a614779a6be0f35f5184","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.15-renovate-non-major-6e6b15075ec821d3ed28a614779a6be0f35f5184","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b46d259291ab025c1dcbb1ffad4b6e900ec894c5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.15-renovate-non-major-6e6b15075ec821d3ed28a614779a6be0f35f5184.tgz","fileCount":21,"integrity":"sha512-ZiufCowjkvtug+najeHkkFaPBZtCz2k2duwC87IkjibzpgomM1Rb5poG6Yl/2ogvS75ntQa2xrU/QjhzPAZyHA==","signatures":[{"sig":"MEQCIFzzo3o8TfVO2WGfNJejXZia4cAVgRhisHC+VPVrzPhAAiAjH6RrliQRr8MeCrWPcpYjaXtXyZM2d+iSizwG3FiCTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFm4xCRA9TVsSAnZWagAAfX0P/3EyumizyaVSEmtAbWiU\nFCxVjbJmC9YSlJsImAVVAtdXI72oS/9jNAe3O4AZASZxGwz+MEIlr9gcq4b2\nBp2sQ8H0H0cVS+/SkRozNjb8fawZweJgtoIEdr/nMtLGWqCWr+rqkfujo08s\nHn2zINYvJTk9DmSpM7cjEEygTf66MY02P0wfDDN1e/oFgrSFhyJW0kUl7nF9\nxyqVAyTOot35HutdzhtDidCZVgLojbYs+G1slUe0FVCjedIhAY7nZzMR/z61\n8m+QhZf7YoGZszWeK3tN27YWg6UgYU/Yt26W0OxQ0xNWN0Rr/KEaixeJnkaR\nAAxr/bV9U2dnBnXHvugb0980b5YVtudtMIJVw4wVbg+V6pmRpzIyHUwIGKSu\n99cz1uMAEcee0Q3H9E008/gItaIHyDd97HzN43tdndnbJL3G9ar3MMkYkdiG\nLSanO+GPqUONVnfGqfLxABIwk/qS5rCxdob4alISiA1mSrwtWw2wUiF0D6Ia\nh40qal2S3ZUBaCouRjz4fxm61JRgM+NhVUo4ynmk2mnr1AFGUrWzFZtByJaz\nssm8eHedg/M81Gj7v/52XjH79UngFx8gZXCkOQceiTodRgh6HgdOfNl1G7VC\nPrynctHizRXLVpHmwG5sw6kTMi6ARaZ6XedDBOmmohfiZdq8nVc1HxLt5Zs+\nYn6j\r\n=MGIN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6e6b15075ec821d3ed28a614779a6be0f35f5184","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.223","@balena/jellyfish-metrics":"^0.1.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.15-renovate-non-major-6e6b15075ec821d3ed28a614779a6be0f35f5184_1612082736651_0.8539616520228115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.15":{"name":"@balena/jellyfish-sync","version":"4.1.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d719ee6e2b19c9a99c36d3d36718177f1e62d6a2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.15.tgz","fileCount":21,"integrity":"sha512-zpfMkoqPeMSZMb+YdZXoCckSEXYYGDikHNyACt3241hBvZCSIoj+er4EvLc9Q+LXnYCP/Qu6FnBSCLRVav47IQ==","signatures":[{"sig":"MEUCIQCJbwKhnrxzWKhnCOM0YOWF2ByXKURpFzJk+eY3YcLR1QIgRuqmf0hOkYt/G1K+4RUORdZuBSc122ihey/60I1iWZY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFm8oCRA9TVsSAnZWagAAIdYQAI0prYg4vBUt+B5SaHAE\nVs+zcV6Tbs15CGIEdwGDLxxJFkg7pH+U/jiZG85j4TCmbbV3pAFUyJ70XDTt\nLzH4fQolrICFyWmrTIm0kS0lkd0AyAmh5k0XiujA5Krm3452xzwjNGrVlsNz\nF1XJzc66/oRWx0q2ZOnA3C2sIH1x9fB/25/MrhtRnmRFEwtsz74Vv3Qoi9YH\nAxaUZLpfJrXPLjAcIbm281IRvjPT+W87hckr/UQIx50fVy1x+/U1656HupZ0\nRuxavla9L8Q1H+KVUvPGwq82kRairYQSVenJ65zbov9VxArK157SLzTK09gU\n0/R+Oauf0XdOIXl+UiBre8sev3lUArL61HIlmNJVxtP2/GeyMGiPawiIMw+c\nZH7+Gpwfqg0n344MpsKZAgHRfkk50jO2ZFrh9Z+/YHN+8BKQy5rlu5id2ccd\n2onKyQgz3RzOgu+Jn8AdUirXKuXwnXqxWsqcHlMobMnPBbGaTgj+O+37f2OV\nr81+Ircl75UDtfW8te11KMgmOBglMMb4Qs/6vvZLa5bJGE5sL3xh+0I3snq+\nQrilKSiHVpeDZSxtWwJaDpDvgm5L84kDCggi2N89mT4pRP55p+vpqC1/6Bs+\ngSNnfvew0muMvdYlvYdBu708CMqlLriufZ7d1iVIx0RekHHJ2z3zDCTuaLJw\nLeWS\r\n=ZtRG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f34537b6d144911b408e9d3de4aaf802ceff9b70","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.223","@balena/jellyfish-metrics":"^0.1.44"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.4.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.15_1612082983574_0.4425776395462635","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.16-renovate-non-major-b64bd18828d444c25d7e4c1693738c9a42fe62ad":{"name":"@balena/jellyfish-sync","version":"4.1.16-renovate-non-major-b64bd18828d444c25d7e4c1693738c9a42fe62ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.16-renovate-non-major-b64bd18828d444c25d7e4c1693738c9a42fe62ad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc50b72f0bc0cb253c8711dad6c56a373adf0362","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.16-renovate-non-major-b64bd18828d444c25d7e4c1693738c9a42fe62ad.tgz","fileCount":21,"integrity":"sha512-F+BE3RBxRz5/h4o1jrODGDjHlQg9dYV07CZ3UwYokn3bGZJy7/Tikk8Sx9iyCGD9ktFdQXygSgU9m3ri6ndFHg==","signatures":[{"sig":"MEUCIQCOm7tjeMCDWiBxs9k+w1Q36QLCwGwBGhbEAXrNrCl4oQIgMPvnICILtl/uW/kRzCeqBEV4WRrsLOqgPIb9/fUmFEM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFoctCRA9TVsSAnZWagAASUcP/1EUoyh7zUd16t5BeiZL\nZ60BCcODR0W/aWHkQuWMkVG/sCRqIpIfV2isvPOjOv8DBwhTG2oOESRU5dZd\nBQVwNoyCwCubv3Ql5MmIh93Sk5ygTXbIZyoB1pPf7RNeaZ+4bwKVhDoQHqPq\nVjUkoeIcJW1iaJDP6tEcbridzGorPWLc1pfddE+ORIwu7SIUN3dFZ/czFe3B\nL0bqxbMR0WnLlxLPlKb8dA4mOuLXUX3Z4s5hG8xliSmuhrpGd6FQ693Lmv4d\ntBgVThaCfmUBpadTMK/CD+BJn5A5OfU2TgcQn/pS+DWoy6stuD6mUssH/oV1\nKK6FZPvZh3TR7Dp04RP0Grm9qS0EW19kPAUb07pFOHiDAL0STg9DNkW1gFC8\nwSWcrz4mqOiH9NAg6bHLH6FgG6yw2tub1Umtom1G8gJNSQNrAydm4jvUydzS\n5o1tOLAEwHtKgL5zNWEB5iuMMqFXtdoKeuheZxZbbBnp83+hIhhMFN6ad0PV\nTrExVMujjZ/82xXdXJ5HXIeUTjjjyoWBzu6WKkzakhI6Y6XMIGDZnVk0phEU\nztyF3ow5nNap/nflrHmS+UjG8TH5pKZpjNX9h9eQUHwbhaUemew8G/Ze2I6P\nayybNmQtqI2o8G05HvJ1+oJUUA770JT5yYj2XS787xqvNXD2DV+UbmCXsh3b\nRZYG\r\n=6N0g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b64bd18828d444c25d7e4c1693738c9a42fe62ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.223","@balena/jellyfish-metrics":"^0.1.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.5.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.16-renovate-non-major-b64bd18828d444c25d7e4c1693738c9a42fe62ad_1612089133182_0.14182962056163206","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.16":{"name":"@balena/jellyfish-sync","version":"4.1.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d5b1fe9d9cefb614943bdd4197b9dde50575cbfb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.16.tgz","fileCount":21,"integrity":"sha512-Tg7FkzER0vX2u/btrvwmWKTX0KtAlS10uo9QSeQtfyHjjdCwzhwKSj5qCBC05nuzrTWerZQojKtdwgJtAH04bw==","signatures":[{"sig":"MEUCIQDMdTcgMzfsqIDHR/0s9NpMXs/nSxbSISATaHDbsXfKngIgZmOJo1bGN3fjGAzCKa22Hbb8PAhJAHuw0pMdANz/Odc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFo9qCRA9TVsSAnZWagAAcWkP/2OyTNyRvypfD6Mkl/6E\ntLcjdXbh2KdWQEnQrcDDkk40V55sg+uPBEDom44JY8MW/VMJwHZ/rKniETgU\niajyjTPKVqj4bksiMaWuzPMAh3ydxqB7TPwINhukoaN9uZeHcmB8LBIxlwkN\nuTcGRCgAjh57rBSZhA8VDptmjZYyjrFO1QuICsvQ9fspqMPN5cXWKZ7nS3Mm\n/6AO9LhcugsYCSNJPyYUUjsLhlz0y68kZNA4nLbsWeteChZ5InP62HHeccur\nuGvpj3adlShvMbgBhARTyFTwBdiEwEra7vacofUC8Y+2v2Zr5kBFSU+wMvrh\nD/wonN4Mfl0QUUrNFfuMZV0HDuAQk/qeg1M4SRe+q86ZLYCvnQpgLKPdbGJY\nK+9AHnltTzxoIlBnhNb0m3Kei+YxfM7q97GEcHik8FExhykh3dohJtDctcGj\nEp3w1KqAeVDu1CCxwZY6AbkN0nPIOFc++opsuF23KvRNaeWqjgGDfWCtG80k\nTHfwLzys7Zh0DfnCpiNedCc2h+1ung5SH+NQxWzhP4VMIWRvZO9sNBUXINgr\ndJr7KmBZzSg3y1jcVUDrSoO82mO/MmTdogWTORJM/3dbouALZEi3dLlPWC5V\nPsfp+QjU19Oi/c98PVjU7b804nRXEjdjOdzVda1rFJogx1Ebgf8jJDHA7SL4\nb6NQ\r\n=wMQ7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c734ca42ed54fe88687565b4e7de7bdef9085dc1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.223","@balena/jellyfish-metrics":"^0.1.44"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.5.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.16_1612091242273_0.9426201213562191","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.17-renovate-non-major-c7e8cc71ed68445c88d3f66a4c5fb328765347a5":{"name":"@balena/jellyfish-sync","version":"4.1.17-renovate-non-major-c7e8cc71ed68445c88d3f66a4c5fb328765347a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.17-renovate-non-major-c7e8cc71ed68445c88d3f66a4c5fb328765347a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a683986e26dcec1b560578f691ee9bbd8d5d633f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.17-renovate-non-major-c7e8cc71ed68445c88d3f66a4c5fb328765347a5.tgz","fileCount":21,"integrity":"sha512-YyRQm8Ok8YIusD5e9cVKQ/zlrvAxyKn7dQ2mwHVAtF3PGcC5vsOq5lQd/OKcyhoUKS5UsyXY9WxrDgfy0dhBxw==","signatures":[{"sig":"MEUCIC+0HCX6rxDDEbbraPb5QruKNcacwhU9bbPOXlb4+FgSAiEA1cODPRRxbvCU648yw/KkbcTmIwb7pD6L0YjIQ1Eg9lU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFqLLCRA9TVsSAnZWagAACDsP/3oFi28DYbOtDDLxsn6x\nlJ8If6uOxml9BMB9J7Ew6deHIZk3eD5H20eA1lC8Xw6q+qf6cX0tX7yx3R3H\nxVE2MyECql6yTJHs4u6IT+k8GyiUXYXF905MAcwteKoiztnv8wxoDMXhWa88\n5TVzfRtVNe84KMEQcYgNMxJofjbnEbGCNvUr3yoBRNN99zzww0sncfj/Vg8b\nUq4zVNg8o+oUj8UHSxwsQd0rIQi6zC2XqyqYzqHosnJDpI+Kb6vGLCF1IzGI\nRe9asp+5tu9CLbBkyXUMbiRqnMrbbVa4iUeqTo6rfPHWlt/ipbyah+0DAWXI\nmpOE1Hg8m89A6QrnaZ//syxnU4hAcp28LKSkxEbBlx+uFGetwIfYRGHvtC7+\n8ndInYUDeAtyVJSmlftQM+gXi226ppO8nsA7kSEdG7/bvFBc1bZVudZ9p3xd\n5AzwExSKiKFGCVhdr7+sUjWGKmrXZrJ9FYZC+c9FqKfhHOLQ4IJflrY3NT44\nIVdARw6Xlrn6xBnh7k/xAeL5lJ/D2QbDYei8D+tteo+7iklBjSWTAGe29FFn\neb62bM7Fph3OVKRzDCskV9PhRVQix3qPfsZ4tzhY2YwiCbYcMkbGfJnjgYby\n5oEalDBpKwU5BM9PVP6XHEe8KcAYh/vJxCvDMb8ScNo8qEpY91+iG1asJv6c\n4pkH\r\n=qGic\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c7e8cc71ed68445c88d3f66a4c5fb328765347a5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.224","@balena/jellyfish-metrics":"^0.1.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.5.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.17-renovate-non-major-c7e8cc71ed68445c88d3f66a4c5fb328765347a5_1612096203429_0.6150514364626041","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.17":{"name":"@balena/jellyfish-sync","version":"4.1.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7f15eec95f29a52d0cdd4b95208d6d3ac4387f55","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.17.tgz","fileCount":21,"integrity":"sha512-17LimnNsXbDgc2JbFTuf3/tQUtBKmB+P/yV6CWRJGQACk7SY/Xhtc9ql/BVNiersK8j39KVBdWQJmVxpOYjWwQ==","signatures":[{"sig":"MEUCIQDs9TSCSUsfwB2CTsOfND3HbPnZw4yQXilsiJaEJJcHpgIgLp3EeFcf7DUeDrFJ9Vhjfz6zZYJWuEwzF0+7ZhBRMdE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFqN4CRA9TVsSAnZWagAA85AP/3Gnlz+YOmOdnODcHxmo\nKpFum1HXQY5y6P5AhsT/RADiyP+TvkCZNiuMNnpSb8DTR6dsIdLzHlKNCNxl\nkD0MuOAWjJ1W6B3CabDBP/oFJ7ui7bZH1+XMEMiIXZdHFgQdOkzUOeC9+Dzj\nRWSoyAsY97/C8oltwBIpAJHQOlACP+KnnypB1fggdU1VmbHNBW7RAtik6Bve\nr5FY64g5V71iwSBFSQfNh7vvjTWT70rNBekPqRo+7WSPvduhNL3GX9aBnILH\nfNv2BuBpz6xA93Dm7kouR8K5jOv/dk8lSNd+lkaKC43RKObX9sXA6pS04ror\nSirOuDFRmF6MpUHBbQPJxsayHCCZzFm1btW6AcUD1I5B9Amm4BSQDRCvlW45\nh5eoh2jCAWO9Rl1pEJn/CR0YIf3r6LgflvK34ORMgCVltapdEY89m3ESEVlU\nVLPu176MBKIby653dvzTGZhA5Yq0f7XHN3sTTxKCm4ScQSCf65UQXobLeGQ+\nOP2Teypg2nrx2ZZ2fcjJ/8Eh7/A+lKtzaXsFSeEEWGscTceARdL4Uj0nFVg4\n/Qfbv0W1oTxM7jHM6uzSNgbn4ngu3xp05MkRBIvThYFDlgG8+lclMoswORd9\ncensi4tPT1MAByAWXDzGE1m0yTsANveMOoTyO4bRrnXGFNz3Ffzhz9fdsxpp\nyaEk\r\n=Lyk2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8b4067fe34d979cb2a6b290b7f619d44d22d2df4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.224","@balena/jellyfish-metrics":"^0.1.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.5.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.17_1612096376044_0.008270097313697766","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.18-renovate-non-major-30cac8c1c0e21c1670aad821f90a30dac3580ad3":{"name":"@balena/jellyfish-sync","version":"4.1.18-renovate-non-major-30cac8c1c0e21c1670aad821f90a30dac3580ad3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.18-renovate-non-major-30cac8c1c0e21c1670aad821f90a30dac3580ad3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"25a549b1458b609368568dddd9423b35cd3fe23f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.18-renovate-non-major-30cac8c1c0e21c1670aad821f90a30dac3580ad3.tgz","fileCount":21,"integrity":"sha512-IJupTczjdPO2gBi9yONROH/lHvW/nhIoHRVpjrWN6y00dELAB6cmcPFVOxTqHq/ZZXYgwx6yK7c4zGXwpedFgw==","signatures":[{"sig":"MEUCIQDBmCc2g16NHnahmrns0WUgx73IQMQ2E76NGnwN59PDyAIgM3zV3Jo+fTlsJcpPYLiIpYpDTg2kjAua1mG7HDggZvY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFtxyCRA9TVsSAnZWagAAYKwQAKHc9ExazRIhgBRKTebR\n6BSqt5anCXSZPASarUDEH9rkkCAtdnxWSORe9+Z72SNO9tJmvNW7ryfrvDDm\nDK1Z0l9HViUG8ixT5tcz4B5R/Ils1cG71TMyIRik/+aGKrVkNEQGvZtf7PmO\nJLmIPK9gTL1GbNyGpjd4Ugt2rU1PrJG+KMvK8/DMwjwGxtxZNK9YJp5GG6X4\nDzh8UpyMxR2OXx+Ks0uyfaKFoNWoAY2IqOh95BAurhU1T7xJCQWrB/vVSkEu\nRiRz5OsNOqr8Pzq3GaZQgPM0hIdVJZ3scpQZd4LvGm8dOXHmhnOU77QTF7yv\nJG2giFR38Fw4smyC8CPUMxZuvVBrfSDnh1Ng4ay2MMKyGJJuSxg/At8Gw5KS\nUk6I+rv1lbVddA4QorzmPTtHU0LM+wBaptTL0rr9qgHQykxTZs4uWqmI6vn0\nnl/qg8bMJdANRnLeZGwJPg50ypzrkex7u6ggewlS5O5ea+b/J9gTtGbwdRjj\nO2wr1Jj3cqdNQT7jFLCUB0cWkK6ib17nemDfM41xVnmOswpIw7bejeYkoLak\nCJX5lW9JvTvxLivcBd6eNsAIxBp6B2Dhj6uvjqltuBIkGZlHcOR1dmhEaK2X\nOGIuLXRUnN+JNyeekJYr7Ugm48Y9GGLdq4q2c0uCksSQM9xuh6KStz1jtuJo\ndiBa\r\n=psoC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"30cac8c1c0e21c1670aad821f90a30dac3580ad3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.224","@balena/jellyfish-metrics":"^0.1.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.18-renovate-non-major-30cac8c1c0e21c1670aad821f90a30dac3580ad3_1612110961752_0.2865352448169718","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.18":{"name":"@balena/jellyfish-sync","version":"4.1.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1dcf898a2b572094a75e18691c8524ae518fd286","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.18.tgz","fileCount":21,"integrity":"sha512-RnF0eY7xU6yKGlGbEinm7FdjiCshG8deMSPCocg01bxN5a1yvyXtRMTeLumzG6ZVrnwtAYYp0sBBHkRGtigEUg==","signatures":[{"sig":"MEUCIQCpNC7M+EtLA4tp24RNhM8xSmHMl+Twn/ojG6BeItXQUwIgbDvbx+Yt4jafR5irkEJwQxbX4+qZj8J0+tB0oGigD8c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFt0ZCRA9TVsSAnZWagAApQEP/RqXbY/GFj52MZpdjzeB\nyCxJk56C7J2lHC/Gn0sdDdJIPm7aVJla+Wq+Ch5rtJw5aStdGkPkcj1pjzlk\nCemPJlPAfzhWCuPKoXTaMJ0Grb9aZG0JzxMlimh9yZ3QnYulXcs7u5ViQkex\nJlPeiVsWUpDTPyNrAb3xKAjRELAPCft2qkZBtePXocabSSGHWklSJOCUAV9q\nrjQV+5PlYNVZYPLjRqIALt8Z9/pBNwUzyzgceFLAQdRtMCwOHFk7y91C6Td2\nsbcbi61hpCRvWv1qD/L5lSWHe4CkVgjeL12Tb+kjkReRatepBrhPxHOMJoXM\nMm8b0mAajjPUGkGxqcPsotps2zwocYUyYfXPYw8pGgvPR16iM3YiTunGyneX\n2xupJtVaiK7zO+xRz/SsvKLsS5dQjDn/SKUdh9i+mICX3xH1/QVaNe5FPHH2\nbcKETP3CldVmBZUxV5gtlUC/QK7T1+NarCB1LYFhoUwSOBvrBs5qo5C00O92\n5MxIhBf2S46ynd3O3Os/ReAtX7j3oMjqDZfnfqQG3jONpD28lowLTu2zlbrU\nD12dAyAKjXTJXVauk7JDmdPwGXTLc9Q6YQsG9zcShjMlUFwwfTdRM5OLhh4/\n25PrmlL5LNO+ul2D3LFgubWVDvgCUSbHhIrtS0Qh72DVhgDPKBWEkvbcHi4o\nSx60\r\n=99vi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3ede6c3664ac5da2e17698c8fea4ea886b9e0422","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.224","@balena/jellyfish-metrics":"^0.1.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.18_1612111128528_0.7819446027119874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.19-renovate-non-major-6e3012fea297d7208c8dbb1c5075020fa43c9add":{"name":"@balena/jellyfish-sync","version":"4.1.19-renovate-non-major-6e3012fea297d7208c8dbb1c5075020fa43c9add","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.19-renovate-non-major-6e3012fea297d7208c8dbb1c5075020fa43c9add","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"194d0d76be75d01f0db7cba847b091ccb65160c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.19-renovate-non-major-6e3012fea297d7208c8dbb1c5075020fa43c9add.tgz","fileCount":21,"integrity":"sha512-Sa42wVsQVn2sPWf/ZE5CSAA4W2y0pzi50XiYE9gv7N3BEmfYM8yYLmUEVpkcty7IKl5kmGukbzwROWw7fneS6w==","signatures":[{"sig":"MEUCIQCt0Q/Zejic24Fc8qaY1mi/091E1eMsAM8fpcHPvNINkgIgR0ntfqLoBgVx0ZOGLP3cGa4lmLPTsmpAy5DhTKmlxlM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFwJ4CRA9TVsSAnZWagAAiNYP/RvlCEKbD1R6GFbBemjW\np7cRxsPIFNpye1lUSqmWS0rHRUZpSZnTNpzW7hExZAvTPH0EaH6KP88VLRl8\noZONVIn17gGSLDYPAdU/jmc5L5PZY3T/Djc8im+aHYrwA2LHnIZxukXXkX4+\nO7T8v3U3BxmwGzu11jVClaagqCemN87deYk3H4S+COQAxtzhUxAcbGBMAjah\nyZV/Ur7yrzhv9UfVkhAuT3fEZZeWDaACxd8iI/anh9qVhwmSpxBB6xHEAPJf\ntleiBgZlK3M26x0Ys4gPb0lKGBoHT+OoPeicRTfd86bQ+wKV+3lRSWnsCIQD\n1X6AzSaqIf/fEqT7O2Os4teCXkcbLcOrpDgUwI7mgLH0G1f7o8Hw9jLpt1a/\nWEWTTl4KjcWJvbd6jIOYQhXb9XXQZmDnYjRIkkrl+SZm5NU9w3UWaNO5XCCP\nd7vgtWuCT0Eg8Fu4B7mrC5BTM7o5luQyVP95S3PxewYvsMEOuCNsmRtNt7H3\n7pugsMAvUqZi98fa4egBDXT9tWJJcA7zwlYLNyYjfrsMRN0iDw1R3K+c6XOI\nBTZ0pGfyRzmRtOopAYCRzfsQdjKovB1a/tgetf+cUaegHa+8wMEWEtQiAjdI\nAb6oTEZfHJYJv521yXksjfuaxKoAnN368tkFv023jpFFcF6VKb7O0km+WPNl\nQF72\r\n=wqIZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6e3012fea297d7208c8dbb1c5075020fa43c9add","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.225","@balena/jellyfish-metrics":"^0.1.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.19-renovate-non-major-6e3012fea297d7208c8dbb1c5075020fa43c9add_1612120695680_0.22736342668345522","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.19":{"name":"@balena/jellyfish-sync","version":"4.1.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f8532d7fdd3b2ee8832ad00b6c2f8aeea5556d8c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.19.tgz","fileCount":21,"integrity":"sha512-aRvr2ufSC/xx14Va44XXf09yDln1Gs/N1Bnh8Qj/a8jqQ/pEy8a9nM25Z+VIH418LApHCWplKLC8I/vaDCHzQg==","signatures":[{"sig":"MEUCICHH5lbNTIVHR6fEHmc/7GNAdr9RN7dXzKiXyOHTzjwfAiEAxSK1lPfx7ihN2c1f7YGhfM56fYJPVUNCJueRsJpOLmY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121487,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgFwMmCRA9TVsSAnZWagAAsGIP/3p/KbKZvjTnnw0ZLzfh\nSvnXHpqnx98ww0rIgXCi+RO3WTD6xhwjlhefJUMKBfpJIgTAKpdTcPG5zSAJ\nV/Q1wl5YT80rVzW5PW2IFy3rrQ0OhbLUX+SQnR1fMu9ibHie8Dtsv2CSBlSW\nI2S68rjXin+wtBhZ+HUxtIaf0vRjpi30K0tOXkHt8fnNCe8vCcISSI+cdyvs\nrsesubIND5AlztOe9u/g7xgS3nTB0kpXpWRAZmJeh2oZuKlYYr4ZopblOQmD\nLx8xEH01P1Kqg59/ovrmz5uj7ycvAerKRgSRvg2MiIJbs7vj2X0ofFMe44ko\nPADCKLoJ7cFH6jkQ2nKsqbM5GRhgozth+3ycA3ekW4WvW3osmST8xjZoRMRr\nSQLa27wr5hzidh5P8OOiKc2pRrL3a+RftoMGU/w8jeU+Nkg48+NEBweMUh7s\nmGbqcCE8Jnd4mCI5j67peWlrmvmotrwSrxcxNxXVeSeWvBdqHbqA4rWf2juw\n7jmRLG6oMRssRWP6IHrfP0pzbVevd+Gu1YWGmv/rYdNKYxzB8tINmd+5Uc7M\nazJ/w6jNDcDl7qTWnXO4jngutrFJ+rYtyVG+R0/98F5S173YIv5EJkL7KrV3\n2XIAqDXOGCl5gAo9f0nw/C65oQAXqAdf1iKSrF5eBFVlwPtKCGJQDvw/zI8/\nCVDa\r\n=i6pg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e3d58e8fc06f18deffe7e2b89343a2ced3975d82","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.225","@balena/jellyfish-metrics":"^0.1.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.2","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.19_1612120869638_0.528927973548815","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.20-renovate-non-major-8b828abe292117886a52155c02756fbde53d8728":{"name":"@balena/jellyfish-sync","version":"4.1.20-renovate-non-major-8b828abe292117886a52155c02756fbde53d8728","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.20-renovate-non-major-8b828abe292117886a52155c02756fbde53d8728","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae979e9e8645bbe929ba2e65a72cee35f50e6711","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.20-renovate-non-major-8b828abe292117886a52155c02756fbde53d8728.tgz","fileCount":21,"integrity":"sha512-+Lf4ZByKVa/hMGID5u4izsKOTicTdh6ePiPdbatwZnfN2j8wzWmlVzLNr+2OBQza+3Okugr6+qoz+N+M50gIfg==","signatures":[{"sig":"MEYCIQCpr5bw3TcbTTpZQj/TvS2+pWo0os7Y/gW2aMpgcrH9XAIhAJCORpwZVLGw7fGsEw+SPcE5uWTh0bRISlwyQ8SdUesY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGBPgCRA9TVsSAnZWagAAjJUP+gOLdXTJKVm4zARXtB+v\n1jOAd+8dBkNZXVW7aRO8uSZ0wfPTtYmlikTo6JtbT3SpvHGiDVB+fGmsp8lf\nh4D4+blIjldge6rj8y6VUkUhucBcQm5rJ9F35a8y2kcLVK3MAaKmCulazb5M\nZTTUmQEoNGoz4NEy7M9rrXM+c4Lkd96fMNvcyYbziT0uDixt4ofnTltbGU6O\ngkJfZZXytuUh00p6l6qdYSUVUhqB1o28Wd9FdpUIpMKarW8Aopu+SdaevSnx\nKW+lkST0JlD2egL6KIskEkdC81L86P0m3WPfs3uZ0rrxknPhBXAX2JBGeUva\nJrvl2L5BT+tiE/kLSS3dHwHLgw8JNMPXFOQyJz7NYDUxylm3FfjQYTKWqdAd\n+evr48lcpnDEs8Fyx2F25hG1USn6azFEDJBSvDiK13iLVaMouKKfivsFU8Cw\nbDDGXgZjFPdswecm+zBLRzAQareWnXyvAgdzwDNPbRAqvRXkO91WxlrzKRxu\n5n+MsFCpVffZ9ea8kM0aQp+9AoHKJb54cMv04WGXdjChQljSecYXX2i8SjrZ\n1iIsFZCbS6cHIIX5OQYSFaR5nDkzVlI/chukzEHSZZ+VfuJ4II5caNgCHYtz\n3TO3fGhnu8mJuTdMATfr8emyBQjVNTSCzKtSIqJlv5W9CyLMgBkoIxUX+6M4\n6/81\r\n=gO+l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8b828abe292117886a52155c02756fbde53d8728","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.225","@balena/jellyfish-metrics":"^0.1.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.20-renovate-non-major-8b828abe292117886a52155c02756fbde53d8728_1612190687701_0.06414881400821648","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.20":{"name":"@balena/jellyfish-sync","version":"4.1.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"34e866f917ff7a9f524b131448a817ee2a4b5212","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.20.tgz","fileCount":21,"integrity":"sha512-ziqQ7AfUPYkgX5ej7swS1DPag+8wOVpsMjlXAxNLeOcfmiw2/nFQUfFQlPGmSNoQFC09cHzvcY8dhbCmCCyKUw==","signatures":[{"sig":"MEUCICwGppMcq3J7/6+9lkKKd0IKyNvk5PxdGFZYdJ7r5ctlAiEAySpaAek7kwi/+Hl7iu6Q44AV0BDlgfWmIxDtKUHd0xY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGBSZCRA9TVsSAnZWagAA1G4P/ixaCH9+qIfbFa4fFucy\n6/1ZowCpLGSNXWQyn/H2hiVEyWA7OXxAp5qLpYXh45Fy8/j6sxgMl/oR43Lb\nScyYJC/fjgp4UL6kTEp0Z6kgL82ECE/2HRIkLacymXhijOwbfKjofL+N25vQ\neclHlf/NhVBASMnA2AP2QNidbujyr9LyisxuU3uZi8lg2kiZS/c0tEfq+WOj\nL3W6dVCSmoCmyRBHA53uR5tUGrlxJzuK6CHsMx1QA2naAs3tFQ217bMr5ZfC\nzYFGzUeiBCikbCCaqNGD1Jk/enGgw8eBQhE7367v8q3J7CsT7BcDoHV+ZHMt\nDzzBOeZAqf62gJNL4oLHydYmqZ4hqTMerHroqkf+ygE6u1k7AdE/NfL2HTv8\nJb4JKnLrU6FlDvcd6eyQyot4HU27Ur8DEvuWCm7CJOVBZ1YjsuIt2a+pgBNr\nVns9BJaoCiRRhlJ0ewNGnYfl0PxBxlIt1QY7y1pp8zVsXt674cdVkEqtfnk+\n7zPrkLIr0uCNO6bxc+oO1IVWmXhGW8OlLVRdVCkgAM7yz/BTWb3/zsbmJ5mE\nl3432BRkg6eTo3+AspMmxQ7FjxEUhuAKmUdmAFg+XPfnQSTd9o6Lt2IrMIs+\neNiUhlLsU5x/EQ4UM2jc0t11nynhxwENV/Mmqu40eSB9AAmnkVkWp7gUh7pm\na3Ab\r\n=7D08\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"41969d4e60e1cedc286d7d373ac22d1f1d2c914d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.225","@balena/jellyfish-metrics":"^0.1.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.20_1612190873146_0.6406248082631794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.21-renovate-non-major-c49125cb6a4ee810192b6b3bec8b362316f0cb21":{"name":"@balena/jellyfish-sync","version":"4.1.21-renovate-non-major-c49125cb6a4ee810192b6b3bec8b362316f0cb21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.21-renovate-non-major-c49125cb6a4ee810192b6b3bec8b362316f0cb21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a287f8453b6c849a4c0c29afa210da394150d766","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.21-renovate-non-major-c49125cb6a4ee810192b6b3bec8b362316f0cb21.tgz","fileCount":21,"integrity":"sha512-PUx4a07wE5X7We1Fn+JrMyWplMwW9NGA7PJ+dPJxgVktgWI2mADGgIqNqiQtbQhcn1jsEeNIr8BXaYAkr7bKuw==","signatures":[{"sig":"MEUCIAUJ1xN4VHb3DHeOqZysSn51e5e7gtQ14zt7cS261h8DAiEAl3yUJNhhnMrq5fBxEV2Y9w1LGojDUd9bXozRf/xuwTQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121704,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGB2UCRA9TVsSAnZWagAAdPcP/2SH7KHYKOZyLY1lX5Op\n0Wzy6KInlvnX9GReukLECTlfCYrT8q+Psga6HBTCcdXAAudBWCdaiEnp3h9l\namPp+QhVR0hg/tRPVHUDmaruwZX44LorTwgx6cjrTY+dKXmZyG3ACqkR8DjI\n7uivm30KJT9lA3cGTynkFyeZR17RaIWNTlEvUROKhpUM5rxe7VZT9wWZ/IBz\n1A7/2xUGTSJYhDllOvAJZZyfjIZI32d673upJlXGplC2i7iJBUclGMXa83YI\nAqMLJOa5J/PQoWMAiSKQEimfrUQS6LW9TZ2mTwtLJe6+71XvyjAA73mylDF/\nyyMDNv+gKLVwd0UqfisVLZbgu3JU7UR4WteNwO5wR1H6pEiQXGCOe0fCt8Pp\nHPci0Gy7KgiiXmRkfx8iXkrFk4O8liYEukhUzS/oEiNinqkkBR5zznQAuNfj\nCjPUba7dpzAktmeNUVqBvD3osvWp9WGOkd+Z+j7RIHXyPF3O9OzFN6xu090F\nOd+A3XGlH7q7GTyB7jjBccryWcq/7QP8EKIjrhrdxUvSh1YVSKrcx8Y8Xneg\noyBy1QajbjA6AsMP9nsHSQl2oqOBSflq9AK9JNthjM7esI51kcdRX+rVv3lH\nVnyMi4FJ7D6L6MZY37NB37Su9KLdjVVddMtjUznXZHPZVLpqB08Wl/FAMy4j\nlfHl\r\n=GIOK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c49125cb6a4ee810192b6b3bec8b362316f0cb21","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.226","@balena/jellyfish-metrics":"^0.1.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.21-renovate-non-major-c49125cb6a4ee810192b6b3bec8b362316f0cb21_1612193171280_0.4995703595588592","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.21":{"name":"@balena/jellyfish-sync","version":"4.1.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a38860e9651f0eb236604b2e42557531030e3a44","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.21.tgz","fileCount":21,"integrity":"sha512-RWphUmFlY7T+8nFqNO6oT58WeYa2w62g7syb24HvmJ53qrSw1ugXgdV9ltM2tdt8orTzmck15GxiMuUXTp/OUQ==","signatures":[{"sig":"MEQCIDv6xv3+PZOPpD+jP4aLG2AzCgdQe0svNvzghAndikzkAiBJJD6qUAE9bs7MZ4WbscBwoky86cASIm212vMD+Yc51Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGB5XCRA9TVsSAnZWagAA/yIP/iJDBTjUhhEFynGbU09E\nh7IAfv6BP/18SpKsqZ0j7v77lHtI2jnJT38uldeWM+B6DKtv9ESoySxXASnH\nQKrktJbKZZBxHoPpIC8QVm6Kuxg1Mp8QLRp7OLKuv8NU1fDX3FJo0Gw6gWHE\nT0+Y9e0BOGpsYKCoxJuQqZDEvtUuNyV14xcloGNfQuMnONWtF1QkNgRWeARD\nn4jqnnt9TJY5Qi+mYxhE4D91iDah9ZvhOR8Htb5X8sai/HmBgKxyG3EiJ6w2\nOJ/L0i/h7eFCKu4n9eYx6yxXxewa29Ot8+SoGTPDIHoIo1qn65WmWJCQOzOp\nXIcZeQui6VzD67z1+4bbBwflGXgsNUXuncclFXjjQGiSJPVNOhZZyFjHA/j+\n1M4oDanikiQmjHHvw+Dr+t5l7tZGLD4bbINASMlL/bLYxT/wAibFNBP5l8lD\nn9CZaNUbCGAnUMbXalxMB1uDwYKjZZMiU+KBM8Wc3TQd2OWgl1rb7B4dE9pA\nDVNjzwJmMsOudVwmHMG5CS1HCKXZARiEPj+6VZ43/UYisu24RHyy+ppCGx0t\n9G1t5L1tADzWT0cwi60/y+oO3NS5BX7TOj27/FvOUAFvo4/18jVGrkIaOOv2\nDAYf/LUL159AwaLtJ+HdcNoSaAfIe8dc4ovmoznd9gXaLwVU/FlKgpt6VqHY\nDaq7\r\n=j2jq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6fa388f2f2a3dba7345b15546fcc2f06d2292f9f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.226","@balena/jellyfish-metrics":"^0.1.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.21_1612193366438_0.32586102140289963","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.22-renovate-non-major-36589fdabce6e5c9a77ab1c1caabfbb72347c61c":{"name":"@balena/jellyfish-sync","version":"4.1.22-renovate-non-major-36589fdabce6e5c9a77ab1c1caabfbb72347c61c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.22-renovate-non-major-36589fdabce6e5c9a77ab1c1caabfbb72347c61c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca6eade7cded5e6ac7a0afcf913dc4e76b146446","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.22-renovate-non-major-36589fdabce6e5c9a77ab1c1caabfbb72347c61c.tgz","fileCount":21,"integrity":"sha512-T04ESHdwKPuucRI7w736muT+8vqarMSk5iENdnCowl2RBQW5EpRai5FO8Y57Drf+es1r8ZsKqAMSjSS5LVzUPA==","signatures":[{"sig":"MEQCIHTsUj9ur1GEn39xyV00xaCmvZRDtS77TZoDhrIaUpN9AiA6eJuRm1/tqSHO0DBA2cQwBVlo0IEWiWOwZEOETBTWGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGDJGCRA9TVsSAnZWagAAsCEP/3G28cXR/lWzC+uFZGi/\naqyUXqe/ie5zmkXm0SVsmhv+QfR8dMPTt3tPd/9cbtN2xpfw7isC1/cIhpBG\nC3HW+uus5AwTBMMwRxumfdFcxPUJE5+2vmPlp01+VFDTCjAQQxj35xw7mLBc\nm3xXONEgPvMMXxav8LRXL8ZjbkoosHwZtoUHHmP/VwI9FnA9ozFHxN6HArY1\n73YCH6pxOCILFdEK2SbB/tX7uP/6493KQCtEOW6yEpD/tnlLE4d7JeI0416o\nSRZF16zqPF5Ae6uIAjwETPlonGFlz9mG8LdQTWoFiri0MRjpH+UHs/wadNAa\n6vu8JdGnPZEGwSLV8/togsnQ2ueG2dAFoyQvrH6yrSia9GABeKti5Hcd7nlQ\njoUCzEbnYEuQRzn0fRd+q2vW9Gck1gTVZdwLyatDpbmvebV0iXfzLTFV3+PT\n9gUSrNTlkO5UIamMD3BsQ6v9+wOSPsSlBMSbIGYwFpNtP+DNo6734iYvb3k6\niRxB4k/Ecyd0j4GkkVS8BgPibBEeK5x2FiLJau3H4Cr//0aw3C0bo5fot8c6\n1JUVKTQGzAGqFvl4jrjX/ABpCkd8afOC0M4JY9unhKs/dUjTuZwR5cGnbVT9\nc+vxNmLrHs2gePUbV+ckIWMXJtmR2XqvNiSDhRK2n8RW2za5DrC2iwzGK1zX\nfyCS\r\n=5GrA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"36589fdabce6e5c9a77ab1c1caabfbb72347c61c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.227","@balena/jellyfish-metrics":"^0.1.49"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.22-renovate-non-major-36589fdabce6e5c9a77ab1c1caabfbb72347c61c_1612198469629_0.548799436631479","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.22":{"name":"@balena/jellyfish-sync","version":"4.1.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"24543e9b1a5a27bc88567e105db31a530305e209","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.22.tgz","fileCount":21,"integrity":"sha512-t0NeEjn8tC2S7oWOOQ7dE7qds4hXKF3B5AoY1dhQnOUc0uvQbBiwAzfO/aGapWpw70i5Gk3iYE5CaVhKhSf2vA==","signatures":[{"sig":"MEUCIFUL81y1a7MxKeARfesYaOEQ97Gzi1bJoRkumIxx9HnjAiEAsjFuJ8kOYHLfpXOWOz4W+Uf6QuWQ3lWqdM/LG/Zprf8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGDMfCRA9TVsSAnZWagAAqZkP/0KhdsbECipHVjZgrtb6\nsm/kIqawB6akBrFPJbEWfL1vidDNse7kSZBBxMNUA3xRiuPV++GSE3MnAc2u\nIpXxVtLE2B/UTpZL6XKfQKXw7u9PDuW1MEu+wf58N/2wlgwxxtUpp/BHYpzt\nhenzHS4LmJ0uOtbV7LHGNF0IDoe3GC+lXBhU507l23LEi2Ag5YS7vKeA/6BY\ne7hwtGboSEwYSAZQu8v32Y/CEcb7lK1N+p8KSGniehy0ggCzjfwo0AWktxag\nZYfm7rCT0mm/HdQsl9AuE5bGYLBNzbNGjPNNSxP+NjHbWJ/YRsBTFkoV37Se\nc8HA0IiLiIBJbbfBobLCwsSF73iZWGHL4pdsZ01e0zXuVvaxYvjr/tqHSR+V\nHwnYkdMyixPdjBMfR77eG2TNE03/0/YZxQnvjb5nrzyWJwPo9Y+uzo9zFBVH\n/jY+T5drrprtHu5TlTj4e1l9N8ZJvlgZDuI5JUMSoUuNfZOyrdDH6jFgz91B\nIL1f8X9H3bBnq9mjIGvjCo6d9sRVZhju7m8lb1vexIG+XRlVqeUBlMT7s19/\nvz768mPfhbPGnZ+0qdoWo3VcF0ewQOqQqT8GSCscT3jcfTzRaRluDyi3dU1I\ncIf2CJZsy0mcfNo4o/ooD7eHNUhTiT3LB0FRJRHXi7OoMrb+FW3zzM/WpfBF\njJRb\r\n=QPz4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"82b9e57f1d18f3d230e17580d75826b3fc6a4f09","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.227","@balena/jellyfish-metrics":"^0.1.49"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.22_1612198686984_0.7480113458344673","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.23-renovate-non-major-78ca6db6e29391da766ad05eab24dd7f90617530":{"name":"@balena/jellyfish-sync","version":"4.1.23-renovate-non-major-78ca6db6e29391da766ad05eab24dd7f90617530","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.23-renovate-non-major-78ca6db6e29391da766ad05eab24dd7f90617530","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"03fba0ece73d7709d3b7c2cc55232025b55931cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.23-renovate-non-major-78ca6db6e29391da766ad05eab24dd7f90617530.tgz","fileCount":21,"integrity":"sha512-3j3/DbK37S/2ihPo7MjaxA2ocbsYLgKHMCpQpUzIDAP8Q6zymlxbo4JpkZW1QthcUy7Up7rdr/DB1YldfrFQyw==","signatures":[{"sig":"MEQCIEt3TWEyE+quce9RZWwkdjLss4gk7VH37XPerQEqvsZ+AiAbKIEo4UPGhYQ82Ixkb+QGcmI/X8epxvDRXog9youSiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGEoeCRA9TVsSAnZWagAA68cP/j6OslQ06pTEuwJIcLzO\nYox41QSX2jBcpXPLYUgFfX4A4ufbE+r8HrHnqWdp8QwM2n/zwe6j4PMKwXKf\nsepEutTWPBItxK8hHdAORTFSHIsJV3wNnbVJxiQCv5wjUNOjkzF4ZvQDmRgA\nyC/YB4Itgvm1/TsEVJRLnPp0VY1IeWpbpYuug0bdFa82qI7hICeIERmYzzsK\nIqNiDLA/qiBdCdVtkgKQQv9qdGirndrZCrxKKj3y9tM58AYi9m4t7uHQK4xt\nvl4eg6N6Cs0Ibbq5tlhMm9eyg12a6DnpfVz+1ZLbQU6/h3vSDzMKjUj7/58v\nc9Og9TFJL1qlGSZjNTDpRnQFpr/l65Ldxa4DJLrk4JgN/Lehu+9ebTO5FZMa\nksQzhh+Aw8w2g4K6IDYGgx68Ox1gxYBjvoASbS9wcHy9oSAkZIixHdi56SyW\nQ+NT7wJ4OvMxaGKN8GPpmLGfnqdgMsQb76tMUJD9kv8rJcy1Q6cDqIDGJV66\n6W0afj1Kx6qSAjBO5CFLq/4VMax6V5RngJcrb8LOwj3q7REQUjwJqrgji02l\n6icc3g5hOrsOChZuMhr4njb3/fBVveshhniNZMRDTy2xchlsaC9pPv/jknYU\nE44LwkyPdGjtJ6tywFcGy/lW1oMJLxGeskJqENpEgGYW+XwdWBKhsufhWkwb\np1Sy\r\n=/HOL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"78ca6db6e29391da766ad05eab24dd7f90617530","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.227","@balena/jellyfish-metrics":"^0.1.50"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.23-renovate-non-major-78ca6db6e29391da766ad05eab24dd7f90617530_1612204573549_0.11199976280220802","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.23":{"name":"@balena/jellyfish-sync","version":"4.1.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"06232198a895f25d147c98858ca486bb2b8dd082","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.23.tgz","fileCount":21,"integrity":"sha512-Pq4Q4RDYLL74x7bCJDHMtV/JwqJby97vcPqonxR+DYHaIRzlq9BAj8bpyoeflDrcmTzsHL+7YTRDjh8HCmsydQ==","signatures":[{"sig":"MEYCIQDLDX83BiMCQEZAYu6wVRpAbxgMObc2RVTwat5RsPDCzwIhAO4/RfV7DUO7usaWaiVaSHhbziSSs6gZW36g1ceKuFoi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGEq/CRA9TVsSAnZWagAAyLQP/A7vqkfOuuMmxxEYIIq/\nIcXLaOss1TL2cQkVbgOhMMH4mUYp/VF5F0UhKNoQGEM9ztXdpy1H9HgZWVZy\nbs3BAzmPs7I3JtkhSHngxhhUHWK14F4dQhJOsYVbUj2dB8BjJij0lq+NxcSe\nT9hMVjsQi/RHAe8E6ZK+U+WKqmyefJWdXNmDrWQAnrDEm6rYbXVAuklR2NeE\nCkt7ftbv+ou8IH42awJaWF2QHUlj6u2nlzcXXdqPqSVgbzr43mzbRB/aAikE\naiCJpd/Y4ztNUcppEcZ+P/UsiR29DTrxoOeDF59TW4D8RqdRiCVTh/h/0OSu\nWuYNMJoLsq8oKCHW5AxCD737+wWhGNrFAaJxzktPljZfGqkrpt0T40ABQrCj\nmg6BRZjR4pK3Uh3CzworKgUsB3uU1ee2LIRSYpfEJDUrr8jpdn0gKQw/s1sR\nrGMAxnRyotQ2KvBWyEz83KNAeoUzbY5yhohJEZQMuNV8qkbHFKdJe1sYRwaT\nyXczW5sg+uFRJMhTHoPI/uTnMjNonExbMtIwQZLeaP7Ev64qZN7C84KacNW1\nUOPJY8cDCLZDfDEUK2ZVkq25egyCqAYu+c5yXfgMBah3LaQPuEo1Bn5z4fPR\nDVg63lqZGsIv+HnD/bbNkA5FwhZUISujJqKetxguoIs2/+sWai6JAp2vbDCf\nIHzZ\r\n=HXUF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d8884642ccd4c1cb8d35b64946f21c53c7744f01","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.227","@balena/jellyfish-metrics":"^0.1.50"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.23_1612204735049_0.9785023521627976","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.24-renovate-non-major-1c5a9540239a6734e18a47d5131a75445daff202":{"name":"@balena/jellyfish-sync","version":"4.1.24-renovate-non-major-1c5a9540239a6734e18a47d5131a75445daff202","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.24-renovate-non-major-1c5a9540239a6734e18a47d5131a75445daff202","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1309ce965ee90c96b75ac6d1d51e3178af4f4cb8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.24-renovate-non-major-1c5a9540239a6734e18a47d5131a75445daff202.tgz","fileCount":21,"integrity":"sha512-sHHjVGcG8RrxqBYAowBMIfm6tzcBLlpKrkYHrRYOjsMfvuXSJmlY90U0lohhSiibYOWRSK+df5yyLL2yac5KNQ==","signatures":[{"sig":"MEQCIH5uy32rLGe1gRVp3HAOnNJSgn1HcIS+WDNBzpNlp6YBAiA0IoiqcltN0r4clHuvM785NQk0ESeYTFk5iPs28cJsng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGG9zCRA9TVsSAnZWagAAhhkQAJbmkgdXjIZS9yGPX/ou\ndyEj+tBccuPxFdaY2JTTjwLT2h08+krsKm9xUQTo780/drNp4QtiHF1Q2LHG\ngvfSKVZ9PRACJhXo3lBjDIDK+1aR4AGhM892YiHofviLJQ2C2nnVTtbm2TSE\n+Cd/c+x/ZOpvIuDdqC3W7yAFEy/WqKcinndLWIb3fmaSmK/c9bWcfdlHdt6i\nxHZ2gGjN1oOeq0o39jcgbmoAssYgIfK8Y1GqDcFaub7YqT6IH5aDu47B6uIi\nb6ZdlxIEwt4NBwrTzGnnGgAckpquu6xV14RcNmHS5Nu8BilMeYR0pHpGL/pn\nWvSUq+aoazat8+1S8OrEHiYl1EEJbQCS1FEN0gNlIHAy9QmmFRbGA/Z0q+M0\nrLX4enMX4ZwZVgphZub7iZq8EnaglPIUJxOMRXeig6SeWfUDe0rSjQ4TyTWs\nZCSxGCw/gZNE3/b250Td9vwcOjLXjmsCr2Jyow192LXX+2IVfV8OSnccV5/1\nMqVpcAoJ1G4KXTe98lktW+fw0UqoaP22aN9ZHSbTMOKh9ApYd+lrYVo9HLyH\n91vOcAMo4xa5ubfW0JRfuDTMrMDamzojYfhE7BFEUQZc4oUcpO5EkfQ9I3JQ\nF1ZB4nO/ECvMhsd5VN6xF3EKaqYX2Nu/awmW/VhpAoQc8m/xguZXy14Y0zWg\n3Oys\r\n=5IXO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1c5a9540239a6734e18a47d5131a75445daff202","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.228","@balena/jellyfish-metrics":"^0.1.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.24-renovate-non-major-1c5a9540239a6734e18a47d5131a75445daff202_1612214131334_0.4978713212581909","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.24":{"name":"@balena/jellyfish-sync","version":"4.1.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e39c341826bada928cc4064538956a90b4377f8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.24.tgz","fileCount":21,"integrity":"sha512-buZp0MROKxO8Mu+l+kzH1CsdwSx09+I+sSGkgBFmXvPSch950Z7LMwPIfAVi0VAzqtzQhycGjCnotA2s9l8+Dg==","signatures":[{"sig":"MEUCIHFMXc18cPgCoaWm8sj115lfBndKUiWpWhu8RN+JYaZfAiEAwy0JDvRlBfvYM83x2JX1VdA7/dbE1gHY9eHFvWQmCDA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":121889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGHAnCRA9TVsSAnZWagAAr2MQAIJhcYhecvBjvexiWrG0\nFKMO+t7ifFDLsZZ0zfpOuKLP2AWwd1MU6WUJCz5Sj4lKrrVo1jL0ruysYxVo\nVIKKQovNVh/knSpKgyiVSz/MrP9n9FTUEPK7gUhJ1BSWpYB6VwNC+b7v3arq\nUOtBpS5JaUiApFATXBcmj8hJjKJ5EfViDxUO4pGNR4B/TM4XFIxpTuQhk5BB\n1782lIVV5uw3bWtWL6WQkY2hMd292jCuaLpAH821jtpWKlp5Ggks1LEKQw52\n9z77yJegqeNGLGRmv3flz36bDWZAMR/xe8jjmVgkcuszGU58oxJLquUviAXq\nn8sEr34JZ4LHVl491FtFnQxahYXwd0nAn/8BM3WcG7KaLt9FRHzSEwUXZcXN\nuOyZfo6r4G14lCTXwOM2OyWOYaWKlYGDYH0TmjSZcZSeaSh/A8J6UHlIedRM\nGmoHRaS16OMTEKx+CuvHVjAyUebl8U+BH8IDQYNGGDG6MftoQOgDeXYV6YZq\nTDZ4ac8zV5MSB0+TfQj+SQGlidaid42WCnJ+N6CW9bOflvdzvJ2sSYgXpLQ1\nQSmIjeEwsLTbUA6s5Gr42WXX4J54OUR4BGPUu7JjlZZpatWNICeEOP32PNcl\ntSW0lv38jvaN08CJWPIi7GfH45DjGnUD573bQ6Q7j68xb9q4ARu1KxDBnrZc\nhq6f\r\n=x8s2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"79edefeb5e21a7106db2a921a6c3f992db16523d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.228","@balena/jellyfish-metrics":"^0.1.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.24_1612214311399_0.733846392465987","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.25-whitesource-configure-82d1d9683cc43d7c261bf1b47b056dca6ac4c40a":{"name":"@balena/jellyfish-sync","version":"4.1.25-whitesource-configure-82d1d9683cc43d7c261bf1b47b056dca6ac4c40a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.25-whitesource-configure-82d1d9683cc43d7c261bf1b47b056dca6ac4c40a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"14a3a5ba2f8e2f43b46318a39e6750246ecf89bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.25-whitesource-configure-82d1d9683cc43d7c261bf1b47b056dca6ac4c40a.tgz","fileCount":22,"integrity":"sha512-+0Esr70wJOfbtI/Cu/OTekxcsHFvEf/PUuGuaFk+rGQskJuiAn49M5m1WWSssfrJLxOvDLWr2H/97/B/3GcADA==","signatures":[{"sig":"MEUCIFN4C4273uFxsp7UXDqcpykN0zFLbtdKkwOa1xxERKlWAiEAlA1fpyu4d11gzAVEKT4iXteXeS+jr+r8ErxcMnjkBkQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGKaJCRA9TVsSAnZWagAAyXsP/1J2ks8m3yAFfu8fulHg\nwwbbhnUp5JvWaI+40L97ZcC2/MT+AM5PsIE6BDHZIuRspFnXAfm2hST15HyY\nGWCW6b3Zm5oZ/DlqQ3KvTwe1rXlqBGJGqO0Ep+WhmY5dkYJAlLrql1XJbz7J\ngas6tbrUHuJ/XXFLSzxOG7e3q3DsilAxrvTvdUEwX/oQLF5eUuDG06hXjNAI\nq9gtxU7GgQQLdp0qJA47MJN2RoAt6iRnVru1QJdKw2Hi5WB+VgTy3/SyqPU+\nLQMZcQAeh6E1bFt6Bgb28bDDIhlHc9AWdj/tnvgA+/RBSIhhhbqyrQmxEekG\nRZZ39naAt1nGUhnrcxH8b89tasMla8RLLeauOuNH1aod7/AzpC4kMpf8awyq\nuZy5wvxGHkWNlpxmTStFM0IS61oTGSbnCH1gOMBJK12WJ0MFKZWdOX9owXtW\n9SifQJY4m1XLEHiPw01JQES28sY77XyTHm4PQvTNJH7Bt2Xl/lxYdJsWmXYk\n/53ObBLSRWMTlCLGdemZx1hMVcuzGCsma9vq/XcYsgHztop8eMFUtiGTEhz1\nkfLlX3aeM7fsSHZ5zq8WcQDxOj1dxQ8+cENAjZcPQF+Kre3sZIgntAsiak4M\nXy2PtiR4G6XSaFu/R7OZWcTEjH0BOQ7Mp5yCprr43eb+DE/xnfN8LnR4bVMK\npwFy\r\n=LjbF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"82d1d9683cc43d7c261bf1b47b056dca6ac4c40a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.228","@balena/jellyfish-metrics":"^0.1.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.25-whitesource-configure-82d1d9683cc43d7c261bf1b47b056dca6ac4c40a_1612228232553_0.6482757465361975","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.25":{"name":"@balena/jellyfish-sync","version":"4.1.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3248ef4e59d03a1dae6f6a6a0bfc1bff68ebda21","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.25.tgz","fileCount":22,"integrity":"sha512-+l8h+ZVJcsG7mUjqGNqJj/G+AFB8nhtPhLeBVMp5zVEsZZvVzfIvlPEf4cRergXgrcwlPOcdComQHYLqmLBumw==","signatures":[{"sig":"MEUCID/25utUlqf3PVCCebYn3qBM5/fRl5SUqdHOLQS0dadVAiEArz82gjC2r+51ncfHgPsXUpb/MjxAxVIPsL5HUsI9Bs0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGKdECRA9TVsSAnZWagAAjSMP/jZxq8HijkqyAzweJNpv\nRkcF+V5K/koCA7xCpy5N4JpEUIS9yzZep2HCXv+XBwkj8QK2sY8wFpyUqwA9\nl42I07BcNzGllbFngc2LMiCNDwGBhg4SZw12cClNPg0ECd2l4JVkwx2JvKrA\ndWxnlAQV4pJfqDlfSEp4LJP24x53RR0oI8RY2coY6xad37gCtDEv0CiK1y2N\ntZCwLBZaxIDeQ++MUq8xzuz9x7hXZ9LC7WlauqpmddTLhfcTM3IZjbHVkEPt\nQDeg58Ja1RQ6Y24s1JLJ+fW5U8e+QYW1PzXVKZPJJzw+H9sDfj1brgZ7RX/5\nMTVP+wPPalYI+ub02lACUy1C9BqGUAEWoG2NU933jqnQjlmGJ0GEHY/kntVr\nFBhata2Gzl/p1mywcCr+P8+7nsRLQKhQfTPu+IfiYVCE8SfrlBXtcE/L1wx3\n4carYSWYkS9bbKf9qqfkMb3zfjl29mvFWnGeWcPZfZGzBJKbhGgBrf36TP4G\nSlixlwD76EoLHSaPyDAZrufx8bB0jhL7dYC5nnzGgwZ2JsHvs7KkxGRZZTxS\nYoQvD+BzEKByAzZGp2ccPAk51MQ87VPfdAUFb2oQ6GL/UhEKNC+Eu17YFNcw\npv2JvPXM+jyoQfcJMfeqZLMuQhF3qGjUxuAkSwx5gMvgvtuLukP71O9/b5nZ\n8cBt\r\n=8wGK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6e198bb69f2eecdce5892583a5df8ea1f9ad1c67","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.52","@balena/jellyfish-logger":"0.0.228","@balena/jellyfish-metrics":"^0.1.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.25_1612228420137_0.8827914319512054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.26-renovate-non-major-1fa75699fc4b328c104be1b8e449c4944742d423":{"name":"@balena/jellyfish-sync","version":"4.1.26-renovate-non-major-1fa75699fc4b328c104be1b8e449c4944742d423","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.26-renovate-non-major-1fa75699fc4b328c104be1b8e449c4944742d423","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39929e2bf632f9889b92f29642d3092689338d08","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.26-renovate-non-major-1fa75699fc4b328c104be1b8e449c4944742d423.tgz","fileCount":22,"integrity":"sha512-AnzKt+f32Z35z6vnNk9dGwcNLn8ujLpmiq8KnT+zw28uZhOU3+bTgV6qlVybp7htoYFJtNGwb+o5phm8RlSHYA==","signatures":[{"sig":"MEQCIBuXYVj0TxFiHfn4T7mSLcodxtzmUgh0dCkim54odqhVAiA/+6fWrA2J+Ly/shObhQ3zanK0RMRkD3c6dADuDvCGlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGKiaCRA9TVsSAnZWagAAhUAP/idMPnWTaWKiM5nwmfpy\n9apHzhdinpz5XiLifpcJV+TJYKspj1ufyiOzbOE/Kp3nwVfRhseBPQtyOj3Y\nFScHIItXBvD1i56jT5FoMmsknxPNNj5WEipOedo/qutdTYrUCaCiNjkZaBH/\nWBLqtSZCJ2BomdnKpZP3Jlt1bFfrjo6sXRuIzGJ8UL1+2XR1bD0sFyxYHq0R\nTu4mwEwEnt71TWITq5Kj/XGbDkNlHrVoXYjNw/GKNRMsr6R/OUADI2syk0Vo\nPzoZ32+ukdyQGSvX8bk6GX11XsakW9m0Orbyhpez5VG1NhrkUhXzesjjhPdW\n+i0PhWpIE7TPJ9mCwQtrCSRwurEn5iKF6TemSyu4FPgR+5/iC/7KiKe6auN/\nAD2BDz3bsd2hLluwQVXB1S6e6UC6zGIx16fai2Wv3NedHSHo8gqQWzcRWt+d\ntDCDZZ5tDzVKb40VyBpd2u3c4HZFz5CMKcXJm11SeXSpKncx5Y0KOsw9cM9D\niyvJNEFOp59DEV0zIRZzDswZnNz7Dg8dywTFZjYvhS+ShmmwDfcxcjoa5+Wm\nAu/8TA11G1iJK1jeQwABRAwzjKwU95dXetvfsjvFIduwOeg5fPhBqlbHjKzb\n3hzl0SesqEGqyiES6mhzjmZ/OUC+O5UtwifQZ+cjwRy6KlIKxHNIfSs4s1iE\nQMls\r\n=D8Kl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1fa75699fc4b328c104be1b8e449c4944742d423","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.229","@balena/jellyfish-metrics":"^0.1.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.26-renovate-non-major-1fa75699fc4b328c104be1b8e449c4944742d423_1612228762054_0.48407651173673494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.26-renovate-non-major-4cd9bea4537f49e6a68ccd7ac7debe4238077bd9":{"name":"@balena/jellyfish-sync","version":"4.1.26-renovate-non-major-4cd9bea4537f49e6a68ccd7ac7debe4238077bd9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.26-renovate-non-major-4cd9bea4537f49e6a68ccd7ac7debe4238077bd9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aa6f2eb112798bba259c5263f18402569bf4e7e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.26-renovate-non-major-4cd9bea4537f49e6a68ccd7ac7debe4238077bd9.tgz","fileCount":22,"integrity":"sha512-MlpDU2t/A8bvu3ndRAAW27Yx8hFAA9qS7vSBrdRvFLsRvB6uQhlukrvnqVsGK19Q5RWs6EHe259Tyj6j8u48yA==","signatures":[{"sig":"MEYCIQCb09iVIMX/0RzMd82Ta7O8QlQLmyfx87qRhpqnWrpWEAIhAOuSv9De9cSHiaJ9fJJQ/qZ+1mfMYrjBGnSV9I+tQWN4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGKoaCRA9TVsSAnZWagAAxRsP/0UmXolyhraqBiwk7uSx\nDhYNTaaYqwX0dZQufBOiSWR2RYIdLnxIP4dLUfudoGjjzIt3umtZv/PPqgus\nnn/G9EZetc6JnRnQRu5O/xwLP8YpcafHiGk4ru0IxDEbXB2KnRBiuT+IyIEf\n8Zu4G5XfSZL/HYJFRJ2F/9Y7mHydvMXRfQog2sZaR8vA4dPAfUMBtfIvuMdI\nqglkredrW4OwSwmm0teEpnJ5QCV7QnlVDppcKSpLsn1uESkb4CKT11R22Pw+\nT+bYv8tP507dZGLSIP0VtBxFaxkDslTz4dzXw3i4bE8pUSdOyIbsK7DHeG/r\n968bBRhHrMZzPKS1hygr1tE5xgaDg7+ElYaXffaxwja9X+tqvtTr6JZ6b/BM\nk/3mjzAcw8JLw3Aq+EYaBqKrOwslHQzCeihQzt0x6pngafq7hqGRq+LabIOO\ndEuel+e4fGF7VjFYIB/lhuateUjhd0L9i1n840dCPtZjtJQA1QPRqOU1SjOd\nhQzfWItqxCkIGluaYDUSxrHwKoIaKPBs4h/pevAz8fkw3N6BbwAoTHBq/PO3\n1DyNxHWMJY2JNMcu9nVSTzPKfx4ZYFfBk059QOTWv33Z/vVpDu3OdYIyhg65\nrhtPai3KAg9+pLUdkqbTDRq1iEEE2GgHF9s6RXfFPD/AWFfrGFcLd1Vs/Z7l\nUcKR\r\n=ZOIC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4cd9bea4537f49e6a68ccd7ac7debe4238077bd9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.229","@balena/jellyfish-metrics":"^0.1.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.26-renovate-non-major-4cd9bea4537f49e6a68ccd7ac7debe4238077bd9_1612229146326_0.6527452091320838","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.26-renovate-non-major-7ad084388c3df5000546abf2f6ed12d9fda4eb39":{"name":"@balena/jellyfish-sync","version":"4.1.26-renovate-non-major-7ad084388c3df5000546abf2f6ed12d9fda4eb39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.26-renovate-non-major-7ad084388c3df5000546abf2f6ed12d9fda4eb39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d86012c2ba79b52dd80c2777607d946a809898db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.26-renovate-non-major-7ad084388c3df5000546abf2f6ed12d9fda4eb39.tgz","fileCount":22,"integrity":"sha512-hCbztZD4dguEDdGZNF5E8hm8T0rwYwtVviOYFj4QtF7t3/GwHW50SN99HKz8UfQBCDazKg1sv8ZB/DB1BeWqMg==","signatures":[{"sig":"MEQCIDtI1O7EA9mzG0Ct5ygRkUym59/mLv5X0/19X+XnlZTOAiBg1oyeeDqQZDG0VrCHbAswXOWtxnsVmQi64SKg1/kwHA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGKsoCRA9TVsSAnZWagAAutoQAIhAPVAtuFiH6aULq5Iq\n1Unt5NdYdqwDytOPz2WaSSKAIGVyvHDpkZmfvfOmzpfrFsYosnu4oEEs8ALH\nQTby6/1tXz4JZ9iGZZyC54Bq5Fzd4XW9lJglBYq/HX5JEMyPQ43ZeWBOp5e4\noRe4POBv7ZAWoPP9KIHyBTIpYjK/0jqC2GLtPI5uWY4/DzHLn65EGU/793qi\nCm00ZmEvET0A6E5N06ZN6gu7OcvI4zbVvr8Y1eFJr7PEDjfpDPhiVdAoqeQY\nVCgtzuOQ0hbo2hzMeiCXW+9INaZ8vaa8OPuSZ1nIe4egwzM8ew5EXPwdTVBh\nqzyXLJE5smiHxflaFMZd2toKuPeowix7bX/yFztk1zHMSN5oKpF12j4MKBRr\nd4aaUyyTpTMv8BYBK2qAwStoVn8268cUGpsC3hJfGS16eQFcdQyyjbbmi5Mn\nIn++PifCLNfcSiRkYe5G2HbomMKJtir9gK909thrc7Mufsx4BLNTcz78DjU8\n992atBRd2pPrwkXBhwfyd8rdvG3UnOr5mJv+Zep0BD0DFF3CNH0wXP7i2sey\nKnNv411SFBIptGeDEgSiIx4ClWLygY1v8Yoj0xrxSTHLqPJElFPq4OcRIFtz\nOvw5ltlkj8V3GxYmHd+SVvoZX7r/i3pzE1gEAKriiQNS0zVw5wRNGw2L3zsV\nD5eF\r\n=+6bj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7ad084388c3df5000546abf2f6ed12d9fda4eb39","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.230","@balena/jellyfish-metrics":"^0.1.52"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.26-renovate-non-major-7ad084388c3df5000546abf2f6ed12d9fda4eb39_1612229415918_0.32638737619244895","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.26-renovate-non-major-1d72da13eeb672d46d66be26ce6704ab0b6802c8":{"name":"@balena/jellyfish-sync","version":"4.1.26-renovate-non-major-1d72da13eeb672d46d66be26ce6704ab0b6802c8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.26-renovate-non-major-1d72da13eeb672d46d66be26ce6704ab0b6802c8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0a263ce0af3ae4b9ee774fdbbf4c976a111e5c16","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.26-renovate-non-major-1d72da13eeb672d46d66be26ce6704ab0b6802c8.tgz","fileCount":22,"integrity":"sha512-SZDTYK35lks3qndJ/RbbViiB6vXV8AYsVgomxskbdA1GxjWkS0UTGRVvQu5z8j/mJBm4Ie+wBTN0p9RnSNCMKQ==","signatures":[{"sig":"MEUCICcebmK+9LO5To0mzQzws4ii2kkiSS4NSK2g9dLDEwVZAiEAllzJ4CPgLuLRukbywezJR//J+yT5sjbtlslOSyj6boU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGKxpCRA9TVsSAnZWagAAzm4QAJyE09Ydsj47zFtyzfcW\nuWIpRQU+LrHTUS45dwe7ha8X987wViqJOa2AtqfOZkDpy7zq6t/FltfX2+k3\nXa8GuUbEcJdxDg5GdCF8vFYKYrPhFzQI5biPiWrvCfEO/M51Z9chB2wViSj5\nd5pC8+qyZWUMWYcnGk87JEyJYiFvkCq5832RIjATLZVJOQKWn5xe4e6vqdOd\n5HgubrR9b7i7hCTGT4zsaKyFmV67qsa3tUhrbqjN+LFGioSDkJBVbKwBvBdv\n2exc2KJXc6WmUmT+50yEbY/jzsLCH3AGtFFX/iUMGxD2OpYgg+0JlxOs7NjW\nVbdjKT6/N1590NSGQvefDosuvjL0SR3gR3vGhU4ZgLEBjFc7uNObLB6kI0X9\n55gWMU3d446I0DIgCTB6LRo4sKP8/sddCLEicmAHJu5yQnI7wIcvYDwvNvJ0\n6jmpNxJXn2PM4AlBag74nZY6YwQBA66OQcirm4vlUvuEhwmVYZy5qE+cZ53Z\nDd8UeMRpXqutKbw/d6xE1ju0yab89a+uRyVmPTITbl0az73epDEhHXsI5yn3\ng7i8lmy/fxK1txqqGVbWLc0sWKBjC1C1eBhYgcochmaY1WbxI2SCeTWLGjwQ\nWzA+PGTVs4vFZKkPfqLtwSDYgK5n3uAySmkLQX7tYbpAcodJVIl8rqTeFZKV\nQ18x\r\n=Zjs2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1d72da13eeb672d46d66be26ce6704ab0b6802c8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.230","@balena/jellyfish-metrics":"^0.1.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.26-renovate-non-major-1d72da13eeb672d46d66be26ce6704ab0b6802c8_1612229736425_0.871530696977086","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.26":{"name":"@balena/jellyfish-sync","version":"4.1.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"589a9ae57658c8b82eb5261703844e90f78aebb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.26.tgz","fileCount":22,"integrity":"sha512-X+gRO9a6cyhEOH2cXPove/0rJ2eS+MNQeIpHJx3MuJDejx7faLOWT1XLRcNKQeuvy9H8fnaTIyC9yZUO88XWWQ==","signatures":[{"sig":"MEQCIGPT4HWl4o77uR2vZdrPrUyuS4WxjjY/w2fQxcD2sWVhAiAUCuih6pNfr7B1AYs1kQTMe6U9t7mb6yATERVMW3qYdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGK06CRA9TVsSAnZWagAAr4EQAI5xWUVPaq+iRlGKAQuU\ncL8+N3+1z+a3XAp8GIhmcvLa+s7wXpVZKa04IxzZKPVb6frXd48QCQGGZvIq\n1obCO2+xbRazQ7gMhO7Kf7l49QETQZN9BhuHV+PxGxlMVJpnsYjDXtP/S5c8\ndhqtwWJKQ3azHCayIXMCKWUNvc7BRYakoDAHtSBDyRr3awY1ZG5RfFurd0qp\nFPIpjynzYCrSinBPEvF155r4TdQ2wiBnXuPxq8nKjrJwDYBr+hxdPWpxNYDo\n8o6vtwHRUB/yp1DpARV/m16336w+4lx5szGuasriaRgsJXM3GW/D+iTsE8Ir\nBlavHWMoZVj/qHETr8M8noDDrGRbD1fbhYAuvLj5RK2bnqkrATRTMdNzB1vS\nK4YTQoa2Fcn4Febl/d5nZAoLy7AT+/eJZuFH7ac5K2xjTqSDHJ+hght2jRQW\nbM9cUqOljhWeg0J0ORQrhEz1l1Q7ojwdtfxuQexng4YkOsryNni/1zg132iQ\nVyNNhNDVoJc/wqzt+WZoCxhRAjo1pQO/Ri1j4i9LVcqRTya/AGrwUuT/SIWQ\niP/HerrKKaEIQYsyQNcrLgn8JXUKpZ0OCBJc3Agmgpwut3MLsiqvOuTyrJx0\nyhdr0pZLcIv8v/R+Wd0ZHuadA2xF+5aMYuoo7Kg2JRsnw+5hFwLgTtgcQq9g\n8Rew\r\n=DBaR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"983ff5030ff351b0242b1339a825d7b993dcc918","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.230","@balena/jellyfish-metrics":"^0.1.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.26_1612229945925_0.570673882790721","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.27-renovate-non-major-e145e8117fd7b274044b0cb0ce900482556a9714":{"name":"@balena/jellyfish-sync","version":"4.1.27-renovate-non-major-e145e8117fd7b274044b0cb0ce900482556a9714","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.27-renovate-non-major-e145e8117fd7b274044b0cb0ce900482556a9714","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ffbe74f2ff041a5e09a20a179d139d1b93dcae4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.27-renovate-non-major-e145e8117fd7b274044b0cb0ce900482556a9714.tgz","fileCount":22,"integrity":"sha512-9MxiSaGFsoJlTt6r75Atl240oxIBzgKv/sgTiDGLsjbSOBmsDIh0iJ/oFO0oa1Dh/pgR6M0AofGiSH4GFZ24qg==","signatures":[{"sig":"MEUCIQCn8Oik556ckDXvwjJFDJJbDLKvLWIORk7FWRsAoGcvBwIgGYG2fmWlW2hIY4tbsWK3a7j+CTSiVdUyntOGJqTsvo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGK5fCRA9TVsSAnZWagAAn0wP/0EA00pLI2W79qtHMSyd\nsIzdvrR56g1U6pofPgw4bxINYPDRa4FzrhWd791kRFdwFTujOTT/8Hzl037j\nm4+yiSPROVkdGmGIbk8pvJrjfoKFm0dwvg6jRERxzxAXC+h8QrTDh59gxe4Z\nD/OU56ImKDc7kCQ9ps1FG6E/PlsqaDvYQLFDRWMaPUMGw/8KXYpArfyzvuy2\nudkZGPa356irA98zcWxMc4TOyIHFjvJi4ouinKPPvLwGLr7Cl/Eh6PEs9sRi\nlxdHROILm0olxsNXCrDYXM2QZ6uYPVfxDO4qF8Ry826Cjr8nCHth+T+KVrAd\nnBjQ6g3fnsq+CIcsnQnb+E7zWOG8Lx9f9SIOQitTnrMMqFKVssA7v1egW7K3\nHSa/V6ubYnepaBaKspK0XLTAaW2Y2E3W6K8SO9Apc8HuNuesQn68h/T6dUOZ\nGoo2ISrG/TwILV4N0+89v8UfFo6oO/xhDR/J0vJ2qab9wn1CfvCFa7/hmar1\nEndQTmW/AlScSkWchX6fUbUspZ3eml+3VhWqSNdvFw6BzO6ZKHlN9HiI+Rkf\n2/+bvQ9Kbr6o6y0cqv/TxSQV5nKIDklvAE6TOaAFDF2PFGn8Rgov3qT0o2AA\nLSgxWTq+pK3FCxOQdal5ogtHAJQpm6gBu6G+r8GsVHtMcdhi3367luq6EKov\nav0j\r\n=VM3R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e145e8117fd7b274044b0cb0ce900482556a9714","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.230","@balena/jellyfish-metrics":"^0.1.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.27-renovate-non-major-e145e8117fd7b274044b0cb0ce900482556a9714_1612230239336_0.12597365365334667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.27":{"name":"@balena/jellyfish-sync","version":"4.1.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e697afca23056b3227882a2f88bdd25498d115b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.27.tgz","fileCount":22,"integrity":"sha512-ebxaRUFqzGFPpKxwAjb8OPNSHzj6lsnN8bcKF/Z3F5kZmpF6v04v0yESpKneVkqwoZyebBvzFoAhVYNkNGxtAA==","signatures":[{"sig":"MEUCIBm+FhhRtuKYfgJJM5+evPA8xB3Rhm9PsOsqWUtLQVKmAiEAsSvFZrGM8WnO4EIq/tOxZaoFoCU2eto9XigIg0e9tX0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGK8pCRA9TVsSAnZWagAAyesP/2YwUVZkAwe9tpnADOjK\nAjERPK9OJT9pS/CMK4/T7+07sExI0w5EFvr9vFaXey7QlZcoy5Duve3jm0Jp\nV6loZOOKMNbByRzHW9QQm+dewfF8iwbM0TIWIe3p+KvuuF9XRXo1jnhv5y5j\n/aJQNd/Q3dgYKNKmzL4MWbJYfVvSKASDCxhYi9wiClkZF0rwJv+ALJ/3NEKt\nrqllapf/1dhpA+n37LESBwKUIaVywDFRAYWOjxKqqhghHAzdseQlyzVKONYK\n8sJTquf/QTfRa7WNikKSSBlTf/7IdIQfpFmlCJRUuvx0nS3lqkRbAw5BPG5n\n5z5bBdIXt92tPxO0nvsth50qyEFV2DmMybmzySiU+G9fdcmhF93LhQJtF+E/\nciv2P+S89zKKloxWYkeVcwey4zZYA8n5HX4dQUKtrm2z9pkUktE4koX788T4\ng1hEenrRrfX57vNNQP0KSp9W4HrGYDzUVmkBiVNVwkCsO3ck2AoXnAVc8OG5\nL7oJnE94h0JPa1y3//HjlEi7DuwLe9hNwaJFsANEy7H7VO2wKwcHedj+NZFe\naH8gjGv5UHCYROBXJP68iniAgul2q7avuu3CNE/f+7IIJ19+T2Tv5aNbkNul\n93Pk1ObLWcVz9XI63r4PqDnI/WWsbw9DA8hZfFrgEEZmyRGCc9PuUgpfoIDw\nBASW\r\n=Iz8H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ca6afbb0c9aeb7decdc6b31b2e53b2bebe3edca2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.230","@balena/jellyfish-metrics":"^0.1.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.27_1612230440903_0.44424350945772995","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.28-renovate-non-major-ad2546c05ea57490aaf8c8fe501eada1f412e657":{"name":"@balena/jellyfish-sync","version":"4.1.28-renovate-non-major-ad2546c05ea57490aaf8c8fe501eada1f412e657","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.28-renovate-non-major-ad2546c05ea57490aaf8c8fe501eada1f412e657","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1a9b1d0965ec437fb28df0415f1753a22537d36","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.28-renovate-non-major-ad2546c05ea57490aaf8c8fe501eada1f412e657.tgz","fileCount":22,"integrity":"sha512-0IkN4ovPdW4OQjNsxr6GEUqCA4u73gyOOgxb9Ry9ytyIl8UjqLNZFi4/itrGAPC6Dpd2RE9ujdofP3GFLsoG7g==","signatures":[{"sig":"MEQCID8FqpbR1Chl1ERriXmkCUKwKHs0zRfkPuY4GjEw4nqoAiAg5geFS/pWxF2F4t0S65anwMMMniZV2ygDlogE5J5Ycw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGL5wCRA9TVsSAnZWagAAFUUP/3MWkeya0dmgPz/R3Aoi\n6gODLpoMc2EEBhxPjwuzciksLrYvQOJe8nP07bCSZIenByy3sYZonl078vem\n45TxiVJxyCxTL554ZYVLVXHM6Htqzce4w5NbHFeixwYnN4OkbrZcxHJtCdS0\nt4bWGYoP1eGLc+a3Cqvd7/jujG7b6RCo76sfX7vA/VCgM+XKdY9KjL97Br7P\nHA56IVM4K4QKx8mR+fbGgfFneeECfFDgOKA/NaF813ldhfgEUH1QKSCLf7+E\n8WggLUO4DH4HYDfBv0t1ATyNOhP9b7+lb7eP3xjF8+ISGJkyu/gO6r5DZhqx\neGcHni43d3Y5JU9oyHGo2UfPH7kBX89qsgIe8DW3mF9UTi4XW0x+uhjNIOy6\n3PIQryOm9J45GKJ/6OGYkBY2v7Fr9OnLKg9Y/ncQpZrNTNh8bVYRdq/1R3zW\nzJPTG4c4KDusI85HM3Wx+HI1WiyYkrAxibT7h55p5XFqNQ6uRUt6xk87UT9V\nAV7g6Yb/pM0eu+7puUxy9CRZvPke3tYRUStT+jtJgkpgxvJIlx3Tn8L9pXBV\nmmpFzs+p4358NYMKLQ4nNWQWBaegQU0N21p/vtWSDnz665N7J7pqwpVM+b11\n95umRAwXx5yuie2REf/NPDzMye6I5wJyU7b99nG7kDwyUAhD70Uo25hJkQmH\n2aVh\r\n=3fh0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ad2546c05ea57490aaf8c8fe501eada1f412e657","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.231","@balena/jellyfish-metrics":"^0.1.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.28-renovate-non-major-ad2546c05ea57490aaf8c8fe501eada1f412e657_1612234351953_0.7776484628308593","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.28":{"name":"@balena/jellyfish-sync","version":"4.1.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cdc6ac5c80585d71ab75161622b0f6c7c5a2a694","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.28.tgz","fileCount":22,"integrity":"sha512-utjj5TY2wUb2elFS2Y7xFEEUAlftiP0cBiryl2/knSSFR1rOab43mQi43kieMIUQSBuA0bMGH18h7QvU/Ooe4w==","signatures":[{"sig":"MEQCIA1L/aFHmTTuxp5ItWs/t/oNLybodpFbTmeYUrjTjVPwAiAelFoLRP5shoG2W2EJ9Qq15DBpreVCxLb3LZKuug+utw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGL8tCRA9TVsSAnZWagAAAYEP/AmGaouewUeyxCUqhZtf\nyVG5tevfvfcFhHEhOQByJwpy0PQKMCyjMxFAzlwwo3AenJrkfR9LXZvbNfhx\nI3m5Pr3imPywKPN54G5AQ4of6J4HXuxFNiHN7gPP9ArxNLoQiTkDYeZFmZPK\nNk2ffYkliyWJZlLLzNiz4XDSQWjjwkP8hzyX3w7obFlwShbYGLo5d8J+sstq\nQ0efsTbfWtLEC7Qo51EhRR+CjkD4fVE2/0haZlCyKZ+AeCnZCzLMN7Pat+EH\nDDKTZ03sEdZl/AVqM3CJ20+aQhV9EGVl0QAZzngyrcvv3Dx4MZze0sBidVsK\nS2pOdNh57ITZqsKhyo5erxn3ezSkRKsXjJTcpSvJbAaYW0GvRQ11eCVZ4BvI\n0S4hFGz+2P9+LHAXCh5K1+D4Vegj77vIvsSr/bK9h+kW6GALMHb/8DhYpp1j\nQk6L9ihG/PbejmiucMgftrEFrCY1Br0L+mNwVFwm8DjcstOJj+195YLcFFEk\nk2u1kQ7PoynY+qpfFAd7tWmoNBh4iYV2lvtZejVCo0QxTLLjk52ONghZnkYL\nYc3ZugprBZ8Csrr7k0X2GnvCKyO25XGgi3wXiwQPJOaWBaJbdzfzq4SnspKm\nDOfO1zARbQ/mtT1/vHSWxs1wJ0QOGnjmAlaCXHF9uodbkvg5V3UhQccKZ1iP\nPEqf\r\n=sEvh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f594f3419533ba8d20f8fa67bca272a7027f5cca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.231","@balena/jellyfish-metrics":"^0.1.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.28_1612234540829_0.2578598909359393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.29-renovate-non-major-13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc":{"name":"@balena/jellyfish-sync","version":"4.1.29-renovate-non-major-13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.29-renovate-non-major-13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a58942da52766f2d32e769df4a067514b0eed2d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.29-renovate-non-major-13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc.tgz","fileCount":22,"integrity":"sha512-/Z/HYr305jBrD3lpSHOaUJAIgdAQAGqhEK+oaKOtiJKni6yWZyLDnGLcRZnOj1Lql2Yf8XetnqRkFyDq63ET/g==","signatures":[{"sig":"MEQCIDWwN7JNHhe7KI3WsBrduxHOwr91yLjWsITZL9tz4owfAiBAoIauTG0eQhvONtoLG12Dd0r9GoQqPbG31UhYg76WLA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGNJ9CRA9TVsSAnZWagAACgwP/0hYdGnaa7Qe+oIHrXXF\nbTyruRoAxU+U/ifTHdKcws0EmPG2QKkAjbinWQGHhf/+0hgALDvdfOYLpdfB\nCNbNc+UJi76qbNhh3mKsNb8u58bsX/tFADGd61n4SxfqqErA6md8vGjz+9ys\nGMaBwcqb+hT75abF/UEjZXNW2tyMAzwYszLZ+jqvm3xpvJAXnY82il3F56Fl\nHZ4OOLy6VM6C8tvR4z4ifrS8l4xZnV8+IXWUJb45d8tMpR39hWZXRSOe0TuH\n3Kf2bLryxkVed/3WXJL1A9b5Zj14dFetXpIaj8Jm8fHeJBzA72we+HZLpOkQ\n1BUxDDgzlbN1DXB7Ihjk4c4r5Na5JQU4FT0+r4woepxKm+qdA3s9x+P8CXVu\nPDRNPccrOJNQV3qSx6yMFjBaxQuPIA+RNCBwtHJnBAW5cgXfMAbbqa66yMcN\ntibtCeQT+XG8ioNFdyjHkDnH8Ren59Ico0CrCvMheb86DJ2LtIrNUUPtveP5\nWFvweHNqJoDBUHvnksCr4h7laqh7MpA4opMay5RZg5yaSgePk7YIkCpUwxRE\nddGwKpVNibglQxoz/lbBQCmglMsmFnQR18tPcEZ0goni4j3GIlMhzXuNZqIO\nQEgjEA+u8mEbKUC6WiiyQ647wXjLxEmR0GJlMh5ftim9BSBjNboBSy21OJsc\nafcn\r\n=ehJB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.231","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.29-renovate-non-major-13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc_1612239484864_0.634502770522062","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.29":{"name":"@balena/jellyfish-sync","version":"4.1.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3104ff8b423694dc6f2b4149b4d2296f6cd5c38e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.29.tgz","fileCount":22,"integrity":"sha512-tM9LO2JIe2iITYkcRV7zBC6G7mgVXyugSyxZi9Dc8CYZ6VojutClENWjdUgItx/74N2QOvWtTJLv1j0wczleuw==","signatures":[{"sig":"MEQCIGps5PP2knsM6eF74grRX34Pupl4nw6w7Fjq2j/bp/ngAiBWw1SbbxVNCkE5Y2YErcrjxj2X3q2n4v548ZjAX8zIAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGOkqCRA9TVsSAnZWagAAqYEP/AoL9ioO/1YqxDmX1A/x\nq4ToBdo0N8B72cP0S9hoipzZqjKqLoUKf0OVARe+BKTB3hB/4rX0Ci485dhe\nAUdHnG1SjEreUsw/+rS15xBFrakIhk2F/C0qMFK1zzDOvXlWz7YwEdNvuwID\nE9y/Y/JiHcHG/vL8ukEcIlZXSl/+8b4y0EsrB+w4i1nv2U0ko+Il8+M85wpC\nS4mkbrAj+K86uIJkavaxZ8Z6USLbKFATD8rCn4egGj7G5hd8QzxR94CNXPDz\nJxg7yuUI+FBd5PRH1QS7zYhdZq9DLlEZEmghyQtWBITjyx+Avck14cnhOXX4\nr+3N9mqv+luIx0d5sFawKMqtmkY37KJpSeJn7ny/M7Yjp1Ec8mxBK9UpL21I\nhH8qkAAqZrK3Qk0Bh+npk7xf0PSQE6Qoa8Tsiw5xtXB9WPHV8YM1P9+uFSO6\nSp1W5Xt0A/0WVISmetVEaC/RsB7oOpJ/ZUMvHXUwRHepJ4pGRHBURoIFBDVa\nT2yg4/6wRpcm9Wotn0Qy8YWxfNFEZ/xTPwp1tSNdzX3fNzjA9GQ7R7VmnP8R\n4mbibiOqHZAUFkTLzYq0gG13U7D+pXAg+OS9moXE6nU8H8fi9GBqKGnrs36R\nvb675CatpbFarKbN8tBkuEfEw4Yn0Z/IJpeZBiqvh5hBYpnfsEFk+SlcF4B4\nrlwm\r\n=MUKb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1cbebee8277f57533145748222d9eaaec7b9657e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"0.0.231","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.29_1612245290216_0.10045595688970543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.30-renovate-balena-jellyfish-logger-1-x-c67ea5bf2baea7879fdc41046bfad01f5def2842":{"name":"@balena/jellyfish-sync","version":"4.1.30-renovate-balena-jellyfish-logger-1-x-c67ea5bf2baea7879fdc41046bfad01f5def2842","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.30-renovate-balena-jellyfish-logger-1-x-c67ea5bf2baea7879fdc41046bfad01f5def2842","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f92e491479bd06604838815aa77cd8f9ef48bdf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.30-renovate-balena-jellyfish-logger-1-x-c67ea5bf2baea7879fdc41046bfad01f5def2842.tgz","fileCount":22,"integrity":"sha512-kuCjkgppdJPur2rmHbYJ2xYHx3UiWz2UXmojIOhRRGwK9Zo5NxEHQhW7ONwMbGF6brjFDuxRNroKCJcK2pu+Aw==","signatures":[{"sig":"MEUCIQDS+Th27wyTAEP9FYjrontgXAEg84c/ph2umpsrFQ1tZQIgE53ZvzceGBlZlRl+4SPkuhxQXvZd+0j3SLMM1OGQWgA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122770,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGhp1CRA9TVsSAnZWagAA0ckP/361wQlStyhnB45DjHGe\nO0IRmHT5N7Et8Ny4WI2QzI0jX6I4K6luKzjQW8Q/3XWnc+YReZDShb1Z8MS8\nluA6RYo9etspaGfkIGPuSknuHpQM3uFe0J6CJgRdHSRGWF5+x1EVwo1t/yPp\nmpJa9QZquIj7MkI0ekr10c438nZaeNPDKK4zVafedWn5HPdt058KNNxvIbQo\nlPswPWiC1SaBd8oNPvPhhoRcnbczj4tx3SKII7rodSBGmgEV0V8gu/QnBDd2\nva2mcT9APue2V4GzZYvJ6kUbAOdPeiUcmNrbRnzZSujRuLXdztSIT1yXazmw\nbhtS3CxHFYaS6vt9qMEv/8/v12Du1HZxIGazuwFPylV6otCYai41+Z/p+wWB\noCXaRHbXPVnNtDvupmqKl0oQf3b/My/Wb36HjbeCVfR2ADkx60gxChWt1Fji\nS/NPy4S51ao11ShSsQjIPBtU2MBIIDtb/QMfIaddbie/ztitLftYGMyJ/qXT\nBo5hs+d6AQ/lHL/DWHlwVwfi/iSdvXn46CNg9CLrF3KMPXdCk3m85MKbkkHj\nJN9pAJxVgnh7qzR9RdUpD4aGB88ufFObEm9KmuliHsWNoV802Uy3D72aXsN5\nhWG40z323KMi1javu+Ng/vvgs2oI0Ay5pf6+rxvRPP3We4uiCslfztzrQ/MG\nIhC3\r\n=jyen\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c67ea5bf2baea7879fdc41046bfad01f5def2842","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.53","@balena/jellyfish-logger":"1.0.0","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.30-renovate-balena-jellyfish-logger-1-x-c67ea5bf2baea7879fdc41046bfad01f5def2842_1612323445265_0.7559865858036015","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.30-renovate-non-major-5356496e1d890ad56ef939a0a6a77b7159b67c27":{"name":"@balena/jellyfish-sync","version":"4.1.30-renovate-non-major-5356496e1d890ad56ef939a0a6a77b7159b67c27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.30-renovate-non-major-5356496e1d890ad56ef939a0a6a77b7159b67c27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e682bd825263537ebdc870aa319b8490b7335fc8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.30-renovate-non-major-5356496e1d890ad56ef939a0a6a77b7159b67c27.tgz","fileCount":22,"integrity":"sha512-I7S1TkrOmVyQAiEupqmlRLVAjIKVUe+G6gvnlPU70M0E43z0auEEAutLiG+5DNZjnD1eJ5ZiXGGNh+1ealSIZw==","signatures":[{"sig":"MEUCIQCH/MUQFTKG1SXbu/NwJyU8rXyUqaioMk/14cA7/KL5QQIgGVBLD7xvWmRL7lPq1Y348k9M7uq9a/ynzuwX9mtNe30=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGjCFCRA9TVsSAnZWagAAD4EP/iZB6EVIFlFKpzJBJHnk\niD6JT3hisic4pOwS7wAXhJNPWEc64OsbvEkUD+/o6wPHXtzVom33JDQtOOok\nvsuCTZodUEAMEIsQNzF+cFij9OTcCkfG8t0DQMgcckqs4MilGLaN3FNlliLr\nhju4g7TLRfNDTquikrM2y6cGvfz2XxNHelozsJkyM9PLfu+cO62SeY7bpHy5\ndMTJtgtdN/e2aqzzq219VVg/iUCuX0q4pNMH8TxeBUz20hADs4pgUvIE3+8u\neZMZ+NobwPBkXyOjQFktRmUHITfu8hsDwI0iDFk/ZLSKFSRfO/nEFSDqeHkq\nJx3YqxxILruFGr3IC0KB/z5RY5VVDpoUiFT/oTgxfyhybW/hE2kViKAXeM7Y\n5P1Za19T8JBZGVndj7HWul97oPMv3hLOLSUzjPOoZjrjgujOtZjeONltyc7I\n1x1mO9vcGsbkPkoqvKfWsHQUiFpqlT7ZShzqff8pQ4n/BGjYYGyxGLYI8AX2\nBXCLa1zTfu1sP8H9g702j1vYZGTmVRt16+SBOEFmoj8DsxvB1dV028NZDuFi\nercSn4+jYaFIcMps6GaN0/egFO60dbJfITmnc8isVe0TKtCcJHYzKTpkOQP9\ne5TXr2ThWH+dzQyMYd6/C4omSHAPpFMTkSCmGxFuQtiMOuWqSq89wnZdZRJF\nE/mC\r\n=P7+7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5356496e1d890ad56ef939a0a6a77b7159b67c27","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"0.0.231","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.30-renovate-non-major-5356496e1d890ad56ef939a0a6a77b7159b67c27_1612329092682_0.8923249235480883","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.30":{"name":"@balena/jellyfish-sync","version":"4.1.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6af393a7494480b7683f975da65710d022caa445","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.30.tgz","fileCount":22,"integrity":"sha512-KCrCbli4d7CPtRvggiBOE0IWdNDJegTKqBbS3mOo+flA1S+x2KxwkPSxGJbr8c7DeS5db6/N8+Kyrh45CRt3Fw==","signatures":[{"sig":"MEUCIQDHQVwEr+Rcpm6yneopwqMmqcMft91ZWAbNRuIiTkXwFgIgZQekUBZGRLkxh4o6ERHyIskxtchDp3VVeacp45ar2/o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122699,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGjE4CRA9TVsSAnZWagAAxF4P/0NFx7YybhlYl00ltfkJ\nE07XU/NL3VTa8vSO451J9fH4ASczCFxamNd0JeL276f2+m6z1OGfjYCzJYfi\n4EuI59r5axr31EBoGJVCCsWGPfYPhGbZqriv4O70v0w83Q+M9HH6GX08wATG\nVepUAfCgP+6Uqzgi/kU7o3byRnntWeGcRLAJdolgqGmyZEQneoTog/MaDPsP\ncGfaunltvJCI9DcQwelDFxyAm4HTs+1prriK91NVGwqdadA0wVu+/17L8s+h\ngrwWcgiZ4s4wx45LN1E7JzPwZ8HRQgtgV9FHvuu6D1jca6HqnxWSlZqhwPvd\ndbM9oN+MhwxEJp72LdSHPgPR+vYSfN9O/DkmvTzSvMoYAhIwtp5AhYoBI+ZS\n8eENXbiJ70Ae2gQCNQX9rayPAlJPFHiRyrAlkAY4pi5B9O4YyyhfC5vnSzNp\nndF5nK70J9ChjtqOTHPP3hLppn3Av5PUyti6TyK/8N7Yf0dGRBCHeJxoIADq\nmpNTijJOomeFkZAk6jtS1VCOEvnexNen032tmliN36gx4M79XJ6t9qNu1SPj\nrwFdXWmQ7bR72lEKFLX2IumfuXMLVutQ36+QjsMcK17ZBCKFBHlDDtjQ51w3\nJF6i8JcQWqcTZMEWiQwI+dwIyI8vKaZizK7QGkuy5R4irODZQ881jJMh96x2\nUwoR\r\n=j8lG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e4011ddc3743249aca07d17880692f385b7b0aaf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"0.0.231","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.30_1612329272006_0.441295325487828","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.31-renovate-balena-jellyfish-logger-1-x-18097af27fae32f34d5caff965ebf6b90a4a7e57":{"name":"@balena/jellyfish-sync","version":"4.1.31-renovate-balena-jellyfish-logger-1-x-18097af27fae32f34d5caff965ebf6b90a4a7e57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.31-renovate-balena-jellyfish-logger-1-x-18097af27fae32f34d5caff965ebf6b90a4a7e57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f37192dfe635b12d8c75e78c3ece3b5c7a9fe2ac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.31-renovate-balena-jellyfish-logger-1-x-18097af27fae32f34d5caff965ebf6b90a4a7e57.tgz","fileCount":22,"integrity":"sha512-wFA0d30reEEu3eni5bB8ppA+BSpodeLtuD0EDCWB32xFvXwBHcClc+r2Ey/yuhqcXejH0Qmn7JqXuI25CwtXCg==","signatures":[{"sig":"MEYCIQCO6Ljm0T5+w4qGINJRNmpL0qgxVqk2YMAbcCdT3UlgGgIhAPwbKS5UMvi6dVNVsT5W5rP+CdqeeYjn0XXdNFBFAu2D","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122876,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGjIRCRA9TVsSAnZWagAAqCoP/2gE+GQuXz7kpxZhKBHV\n78TB/mM26Wu7vCBxrAVWMm0yz9zPiSIr0aDe0+TpoXFDYNTDnTvpqaPNZG2I\nrmSVwYWWlZN2RT1/8Q9ykBUmeIMusKXgF5Ey78MeEwhFS2etOV/onyArpFDU\n/0GNnruxIoqZCCrPOU/uoIOEOqoZiA3EHbMqCn8YD634WHp4SLS0mzhJAkUh\nIGGvB6ZxLeUI/sRP16EDCUBBeZI8MInVnlGqDoDB/NbvlUXi8Q1wPaXPXiYI\ndEe0qdAhebzcfYBgot8LDMxhMKr8xYhYPJv4EuiDpLOMvUKE+NCe1kKv9g9j\nSg6i5e0q6BcKwLXB3RMFjyUBSyxwd99GUBgeTRbonY8nsXy1IP1ePgjFAf3O\nX5/XddRQjpfcfVwucEzXbNuYorZifvw4kxgyr6/qkS6F0jgmZ11weV1FqHt7\nisAYYjnUQ+fPLSaL/SOMVhQP8Xklbyr+xWb6iTVwzwRVMSgXUs/RdVh2BxCS\nzsiul70vpxYqGv2mX0U+Ap4wJeOqyvFenAFc52QKiPI0ypDzp20AUVP2FmTx\n5YYh+Cb6J12do4pBnzmIsrGYtUSh4kVaCRgpWfcVkRJLf7effd0JvM4dOsSi\nrGq27W1xaNWLUrCqe3/TaVrQJdhBmAWLghAXvGT9VhuhHG4xJz3PmXgNawp+\nhn95\r\n=Ll4j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"18097af27fae32f34d5caff965ebf6b90a4a7e57","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.1","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.31-renovate-balena-jellyfish-logger-1-x-18097af27fae32f34d5caff965ebf6b90a4a7e57_1612329489182_0.44332985562648775","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.31":{"name":"@balena/jellyfish-sync","version":"4.1.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72f1485ec8f4b210019712116dffebe706dc8730","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.31.tgz","fileCount":22,"integrity":"sha512-nwXLj/8fCynOc7NnKLAEPUxUoRCQHEiJMYC9VhAY+QV1hZsBx9W3nlEZDO4GbAac41ANDJa7VFmwPPnROBlUXA==","signatures":[{"sig":"MEQCICewYHFNikN9o/Kec0pRNZKRbhJGpjiCLRHrjpMKuI6YAiAqe7raQe1VWK72dkg2Z2iR1naQo/oZXajju3/zsIu60g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG2OnCRA9TVsSAnZWagAAWpMP/0suHRAY8phe30xkoZfD\nakew62gKPcItXjY/N2POFHFYSve6562DRsl8l/yBsncZSpTghLnFmuY3jrq+\nK2rQxrtbGCndVVAZVGrW6y176jTnzmKBnoNnJHp1pkbIwX9CwLBozG3QUBD3\nSxHuHOaK/E0kDtZElFs3dltOLEdToRK1AWatoxJj+TrCVJ/YaA5jxUletLro\nfECYFbm1WcKdThblQEffmovd4mBVSX/wmuRPVcAzK7zrvXVGpLOO7XFEZcdF\nGVN3AypBOfgpa9ZnhdxqoKYa8h/6/r5nURQF5lbiSLgJeS9xUI7TJ9wi3CD1\nrfKQJtmJi7qcXFj7zb0weG9uao90i4tCIj2o/iUfAT995/IwfjuZ6OXbTVzV\nXdeIaJTYoiJbeCWV9wXFU6UsUZ7M+y9MpuuR1xKIl3MjNun8KeEHZJzqDX+k\n5SxWLhg1x+HGgAP+b0KXTCrhMjwKcsiMn+9TwMcUoDS1N7827aEyziG69cV0\nlfDzJ146QiqiXGsNYyfQOE/2jjDmAoitLkQ1gITFpIGVRHmtq+p0iPHb8viY\nRYRk236ZdNWrHoC3M6Fhbbv3S1x5BilsawTP/RpQpzS8+fliyJFC+MPXpm0v\nMB/IRTxiVpVw6u/AX0sC/C67W2LMjzOVP/mLqNzulH7z4jyfW0s65croZPYn\nh9ow\r\n=u3ar\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5f520e4bcfb24504d452b42d0fa31d43df2ae9ca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.8","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.1","@balena/jellyfish-metrics":"^0.1.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.31_1612407718383_0.85327710074077","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.32-renovate-non-major-973d46ce7a10f8187bfd0670d71415d16ac824cf":{"name":"@balena/jellyfish-sync","version":"4.1.32-renovate-non-major-973d46ce7a10f8187bfd0670d71415d16ac824cf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.32-renovate-non-major-973d46ce7a10f8187bfd0670d71415d16ac824cf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0fae41942349cfd90ffd2ccc7ab5065bea3c1d20","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.32-renovate-non-major-973d46ce7a10f8187bfd0670d71415d16ac824cf.tgz","fileCount":22,"integrity":"sha512-FFmsCALNRFmmZXnODlyfz6/hznnZwvkVcBH8DUNvGTlfZ6whPSD8FxPiBxKG6FujqDFchszbAxGXn5RSOs4XPQ==","signatures":[{"sig":"MEUCIFg5dG/Zpg7nr+ynsz992t4z2/IkqTj+02dUFD8fTstUAiEAijxI928Wws6LZ8l2ryx9embudmtaL4p+euOT2UlUd6w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG6i7CRA9TVsSAnZWagAAVOoQAJv5bLN329F0+TROLHRP\nRAFkLEYUFTOQ+N5O4uEa7rrlMIbLEH1Bk3XUTPC3qxx+lmtfvvrR2CaRJodU\nJPz+WEofzObF3odLjdt51D79UJBuIgzBYFANsgdaAJB1BE0hsGkkMNeDDjE7\ne2bYlTCzb821LmlJwal3o+Ef3z2xW88c0wlKtWnC2sXff5mXy/7ysNp8dVOp\nYLrplp9OUfFKGtn57qvER0o5nv4hD0HS/B3au5eLVpj8GfxhHAc/fs1rjkWG\nJS35oSmV/5dRGtpYmawYoG0XhRusUksKqE2EIJNgLshlkDMAcA7XiH8wLh8a\nrT8FXF66fTcxqSv2atf5kZrfbIkf624PnE+IGfEfWLXynkiUBWGqxxOexcsS\nEwK4/WHD31YCSpEDi2eEtn+gqDaY9ncTUlnZaH2phLTBXcgmMn4zdEwU5qph\ncsrJ05LjaFeuj6uxq+IjxIcq9CceJyZ3EaixCo2eew99lU0PMs7B8gSvUIOd\nT6PLAZpk0kdk8XCcS5kEbpXOjO9dR3762zvD4X3DydXrer2nOCUJA4Oi1UrC\nde6XZkfYOm2n3ZXsKGUBv/F9o/MZaP1BV9A2sjSxpjK6nn7NUkV5PBCcdiGm\nDQxrpwIiLMIdu+MtdE/UdeLDqEpLkT4mZy/YGOq+g50vOhHjrdpp2sXhgSJv\noS9y\r\n=eRlx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"973d46ce7a10f8187bfd0670d71415d16ac824cf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.1","@balena/jellyfish-metrics":"^0.1.56"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.32-renovate-non-major-973d46ce7a10f8187bfd0670d71415d16ac824cf_1612425402688_0.12258051797379288","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.32":{"name":"@balena/jellyfish-sync","version":"4.1.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"281371821cc259a0b58bc868ab131e012120186f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.32.tgz","fileCount":22,"integrity":"sha512-uhIsrQysQqGL/ljo8b16fd21SkTNe95L9szrSwa7HoVKD6JkrdAzE6n7OUBLj/n6/qTmpYda2rxST2RGiY7Weg==","signatures":[{"sig":"MEYCIQDdi+PrgFK544JaarZtXFC5ENkLZtSzNGhP7tMK+9rgOgIhAICTtZ2NJrytKURx83u19w3eGBYjx95b2Jx3+waL2n3c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgG6lpCRA9TVsSAnZWagAADRgP/1ZiPcCAA2ksEWlMsNRC\n+awo7f84FqhZztOXNh8CPNvH/rDubJnLiY1uZiq/2eiw9DF5Uu1/DnpEA6vF\nKrEigjJ7LDW1ObIq5x9C4UnPKHOpqa1s2CwlUtGD5yqqTlNXfgm/2MWO5hfl\ntAcXNN0OppAIPJ/EACzQUUt62KlmKgzXB+yHgV8E8omOUKaRu8PNNi08AzIc\n/CRJ9FQQorBIpIjh8ibvB6vaVyggFg2sxYOXD4M4JHG0M9xI0n2OKdhMJFgR\nGxc5s4QBqFapV5WyNAERwNqwqhcD6X4Z+xlChRPjq1cK1++jmGY3BQZRHdIo\njNdmCrORUSQaK/AxhQa2k2bi9WC6/GUb+h/6rLgV+mkL5kwHfHBvsFc7TcrS\n9Al3LJAmrN2dAo3dyOCjZURpbw1+G2r/YNjjqk3ySN5jIPm2jghNac4xzmIw\nr1BNP/r0fYYaf9hg7wdx1ShZAV7WWPCZMv11j20q3H8cuId7LWL+u6cmwflo\n/8i7yF1Xks4xFrfpxygPfE4PAtaMLduKMCPYyEQHo3u3UVuBsUmOsLFqzkEU\ny11TfUDtrK4AOUESRGEDU+vavvAFj9ir5LlElmO83gloNuCXXrvmxB9GXhKv\n5ENfuG3xX0byqq0ig3+4qSVHdIsj9amhGKJwBQ3ZgbBZsLUaSLgyNEhw4xlK\nncJg\r\n=l2+4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2433517260fc5eb33e2cac13ec5dd9f57347f6dc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.1","@balena/jellyfish-metrics":"^0.1.56"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.32_1612425576863_0.6903009230548627","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.33-renovate-non-major-64be709e53b6a1b24cb18353272a7b0822a5613a":{"name":"@balena/jellyfish-sync","version":"4.1.33-renovate-non-major-64be709e53b6a1b24cb18353272a7b0822a5613a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.33-renovate-non-major-64be709e53b6a1b24cb18353272a7b0822a5613a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6618dbaeaa186515e84e9dbdcf65a24e33f8bac6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.33-renovate-non-major-64be709e53b6a1b24cb18353272a7b0822a5613a.tgz","fileCount":22,"integrity":"sha512-ONHUu/mshVG0sl89a3MKecufpMI5R7eiJPakfrr07XDRfdfoGlzJg1Gi9rqAqVnJ6f6tn05cxOr+qBh+z7+TZQ==","signatures":[{"sig":"MEUCIAuoQ5Hwd7SE7v6sDavFjtULTdP5NFsfaqZKq1iUWSsWAiEA3s796NISmPVxdMQQJoDraPY457D0zXDrix6knWKrMcg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHDTLCRA9TVsSAnZWagAA7MAP/iOseStFw8jUK7YIuzX9\nzpyATZCygthZF6Hd4i9y2dNeJGrbrOz19GAVCTIzLo83j8QgUqfLbyKgR3oN\nMLWKz0fcYDG+gNiMvwzHqWt1XfQNqywXZcK9Cow/AC16UeVCxqNhTXfpEuwg\nbEzXIkyuYED7cKeRhTU2PgRhJ7/o3i+/AA7v5BVYhi5bp9BGw5niqPRj2BqE\nSfTe1IKxR8/W0Fy5oSoLk7OsWKNY33q6FhZemxTHQI/ljKfg4OBzQWmMDSNN\nTXL0hjVSG2jaS8Lz/rtPGoB7yhqYB+0BMv/k2CEWjyRENn1Fleq+KtXlWHda\nyBILBZyOhy2wioeXFmJPVzgoMz3nuRqHPLt6JzU09h5ArTd3go17Bo//lhLf\nuZLBRqJMYUN30p13NAQ7AP3RGVbF9xVYeWjfey++aFvuxXNxskqtSZ+sYnAj\netqdP5NT2ICCih40/blqhZsgvBnX7KwmsGRLkMaIvdW93RcBCYxQ/age9mEe\n5gMuunO8cFUpmyFPWmvKe7PtGqW+azscTl5HaeocCGvR2fUf5aDXl2GS+Q7D\n0mTx5HFeemPGtz3LytRXtX+Hpnwan5ZpNPmOn4woXA47rF/YqZaBo853Hg/e\nPMWegY5bXSbokNGWD77wQu/w2Yms4o3Jj3O5ja2TLGl8Q4Yy4cU/dbT1m/Uw\nZ379\r\n=3omK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"64be709e53b6a1b24cb18353272a7b0822a5613a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.2","@balena/jellyfish-metrics":"^0.1.57"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.33-renovate-non-major-64be709e53b6a1b24cb18353272a7b0822a5613a_1612461258546_0.06277932508395478","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.33":{"name":"@balena/jellyfish-sync","version":"4.1.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a118226f65d326846977754a298d8a68ed2ee134","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.33.tgz","fileCount":22,"integrity":"sha512-3/OXv0i8D1slU82h5cqU9FD06lax9+h8mse15iAVqhkQccEDkWRxoqhyqCnI0npuvNpVgUexgSMPrEUG2dZ5kw==","signatures":[{"sig":"MEQCIDuRIeaVRrPe3NuXBu/kCZ+nexvLgK6hZjsWgBQvCKJ6AiASMclrjHRN+T1RjlOtZvVkm+/TQfI9NKHvrYv0sfxS2w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHDWhCRA9TVsSAnZWagAAgb4P/0+sbUbC6oEnPl4KiU9U\nn/9bKWiF5rDXESX53WiRQuV2vdZN3zdvCO2hKBKc1OTP9GAz4FXkfjXpRn2l\nAMyd/xZ+y62uljGE6a7H4kbC2UPiE0yCa7SjTQJhG0SBkRrhFyhCV/bjRUTC\nmkPn8O8ke5TDGsin4A+QHm786SYUnE/v/4NxdQPzyP28Yt7XlbYgp/vYesJ8\n/LE0Lsf/RxPfCe5yzd3m+1SkZakkWvm0gNj978hCPCDIcMYPhpzs0HOEIibu\nQZyYLyMCAlpddB+GjRHEyexB8mNwuG9cLd8s++znKoy3ZZu4qDChyelUK+jF\nfH/er+rDVKmnoK2kx+JVH1SdNiemGl2hcdqI3CBf5HluUi/QuKdRP3tFnvwr\nlSWZ7IohJNMFUzPaNoBk85FE6GUxur7WdI6viZzMCp+CLPryVUoazbUayv50\n+1UTqhN9FU+Q0FVmIxSMD6vn4imV0hVuKRmbKNkXpEe+MgTVf1wAEZ9IGaUJ\nYD11kzFty8K3pzvxux/tC0yMkalIjA+q+b8Q1fo7KpP8fq4fDIDIIlWh9aH0\nnFPA6iUL4YwvrNaD2lrU3dJVqGKZ9dWfnkEuLpLFvp1VejbUh4SjA9V5h/AR\nU29v+GnGHH92ObUMGEafsiAcgwjUQvy11dxZxJim/m664TVPKM6gjYKp8Q31\nsWO6\r\n=bbFN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b1643b9a6ed377bff8861e2672a1e957621e266","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.2","@balena/jellyfish-metrics":"^0.1.57"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.33_1612461473328_0.43103498493753634","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.34-renovate-npm-version-2ac15e2c68cf56414252d83925f13c5f4ef7e0c2":{"name":"@balena/jellyfish-sync","version":"4.1.34-renovate-npm-version-2ac15e2c68cf56414252d83925f13c5f4ef7e0c2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.34-renovate-npm-version-2ac15e2c68cf56414252d83925f13c5f4ef7e0c2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"52d20b0980847e0497c2a959d77002c24b4610f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.34-renovate-npm-version-2ac15e2c68cf56414252d83925f13c5f4ef7e0c2.tgz","fileCount":22,"integrity":"sha512-L5QNblzvReTfgwtFw3i3horr7cVhEEG+GyAKJR05a/z/J8R2AF9n0voyJzAPrp15GcG8WkopqYaMG/PGW2d+Ig==","signatures":[{"sig":"MEUCIQC20Mt72hiOVHvEov4ShBtJyX5LkqDSXkIk2AQwX2OPLgIgF3jYP8oNSMI3devJRUkx+PQZXx7y43552cBJ1+lTMyU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHNP3CRA9TVsSAnZWagAA+goP/3dmpc480bXVvubHpYV6\n59Uh9YMCXb/U6kxVXVo8IUqQ3DqQ+W8FUBCmT9iwwmr6R5ycVfMgddZyC2xP\nsKACyNKKJj0Qg/A3fpHF8MYDtJnSYsAfYa/lvjQXwBcbfaUWHojgYhZ3HUfz\nWQhFy8yOCQmJywdE4iA/9A3vA5K3jXfc4qP0GG2KuGm0Mb9WLEP8y+0k/oy9\ndILgtl1zuP3f+FJCGp5dhgdQ2EyCI8kRbrWdJD559r1V7ax/MK6dHLgxLuxc\n6gMFRiHoXBa1RIxkIj7Ka1hRPBowS3HNmnpe4Wq6qnSXSsVILPLtklFC8sg/\nhlDEBZsjCfB4gmoNXV02wia/lFArLil9zlFr2w4KNq5mujXaqHAkOdVjSRNU\ncTG24kXnEfepeYgWRYcu6AXGF14lJL3MTNy0jJfSHHZnL18KR35k1u8JMcPy\nHGTP/wWaHaugcKHhq0xBjjIOkQ2JhzUvNfHieTi5ZqVrNYwSC9L1cvpnBdPL\nkVEb6q8EaBu+CJFPY2gWOIt3vGRQd7EnUBwnvXgBjUDUOdmknt9Cu4nrJqSn\n8ErPhkBW7yQkEV0EU/Lm+MKrDH21Wj3j7j3CeF0+5U5RFoKNUbyJ8NppoboH\nXilMktmg4K8qE76oPVDqP8AOaX1tCvlxADYJ6G2TNArUVPgDnV/LA07fkH1c\nnLGr\r\n=33Xx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2ac15e2c68cf56414252d83925f13c5f4ef7e0c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.2","@balena/jellyfish-metrics":"^0.1.57"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.34-renovate-npm-version-2ac15e2c68cf56414252d83925f13c5f4ef7e0c2_1612502007088_0.08629397515288662","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.34":{"name":"@balena/jellyfish-sync","version":"4.1.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"80911967b724a98dc7fdac2a9fac0dbd1ff27685","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.34.tgz","fileCount":22,"integrity":"sha512-XICbtQ+4YuV1Ryjkrqi5YsqmX4XKaCe8XqX08TwAEhG6PuuaFKiLGezzfIBRT6NuZ5J6CvevRSrbagMelCGp5A==","signatures":[{"sig":"MEQCIG8VXZRMWKOSkSMyEAJyd4uXHqSMLdnEED/CNEiJUXT2AiAaIGOt6U9mVbkTCaLzUg/t+sGaMRRP94Q4EFyTKKp7rw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHNTGCRA9TVsSAnZWagAAjEkP/3WsvCJQJUv2KPUSv6XT\n8l1IHVAoMQDTx3CoaO/Zkfp4A5YDEi4umo9+FyICEOEWVDnMGFsuoXpOUATE\nplWQ6fiiFjtz/mGRuus21La0rM+ZfKcKx5bf+dbhoGL44iuPo8LGxXojlbJV\nT/4WsJMoUnPiL9XwvcQwX2Km+MVLPV4fz4oK/goxh3zh39L2ciGP7XUWI2X+\nrt+G0AGjuOj81MKjk8o+5zk/ROhWXTPmVezUfZf//AzXQxQwTx3Z6nH4WNQ8\nXIVqczgbXmwYnHjbAcGA4dPrZ2Uv9YRMoN6qiwFnCIBfAYMLjrOGj3wQtObz\nOx2ZhInVQuz0hKmM/gxklQm991lgQLUEY5NUBhvR3H6CUrZZ64bPKCvgYLb7\nmxeIeli8avCf9T2Sz4nsur0KGEptCKTnFsBdrhSbxBkidepCSKVmpfYTTnfC\nNRkj02FSLxKhiOjr8oRAJxxRM1KJPhmMv1t2Frjd65Plt4i1vBmE7E6+7jbX\nGZFnt6Uvzy6gSgC2Bh1ICMB2pjmoXhxTRwVl89iRciAvh1haRUfFa5LzREPc\n7WCA27MxNm7bLAWyj+AMg0UgAi2AWmsNAQ8jVvmHKgkxHuOgLBUoPlDUlVtn\nl4j9Pa+t0r57BRipfQ98DaEIOsjPP53Z3dtqwG1OwBXM2KTJStCuPpZWMjBw\nkl6q\r\n=e9zK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7bfa903827f7cbbe46b2bec19606395c80442059","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.54","@balena/jellyfish-logger":"1.0.2","@balena/jellyfish-metrics":"^0.1.57"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.34_1612502214118_0.3025218566841452","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.34-renovate-non-major-abb704dbe55560949aa4cf3647e105956637cfaa":{"name":"@balena/jellyfish-sync","version":"4.1.34-renovate-non-major-abb704dbe55560949aa4cf3647e105956637cfaa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.34-renovate-non-major-abb704dbe55560949aa4cf3647e105956637cfaa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fe5a01fbc255da8b620ec09003b92ac750c0260c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.34-renovate-non-major-abb704dbe55560949aa4cf3647e105956637cfaa.tgz","fileCount":22,"integrity":"sha512-LVyf9G/hEA8i2I8309ECc1orXhWJF12N+bLg4Tt3is9jsk0LWYZktW2Pa5hw3azCXEqID9gyeIVdLJeXemsZKQ==","signatures":[{"sig":"MEUCIH0FyJ3pfHLG7Xwy+VooRpmYeRlaGNn7pyhnv4XqrRMVAiEAm9tIlXAzbeg2BbbcArdPbj7E2NYgOpsK4i2dV0l/OyE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHNWPCRA9TVsSAnZWagAAKBcP/2rL0uYe03lSA6OuHsKA\nm63o5+MTG1AJDev4fC46QMOFLxgmtly0p/pQBbKdPtCWjQCfKWG0NJh3l30x\noBWEDINv5YtUCt76kyMfsG81/W1TTW/a8wEM3Y8jXJOLmU3buE0WaYyl82UP\nKJvojDCzoJi8IsVqawleW8cNzv/wuvWQb4A3NyYltZjw57D+n1VVqLMsAwYq\ng80poPCHNtQ//8/+O+Pidysq66LhTmFXBVZLatn3LZbqgy1YbNKNfRzYW+wq\n77OVttDogUZ3Tr0LGc5z+/IT4GLMsl0B5TLQuz6mRXuwegtASaZHDxcjS7jZ\nJDHTVE2MNFGXXSZMWnlNdsRttMGAeUKYvEHdsTWysTt0lNhCoXmzoUdeCpLL\nKjTuQaf21gVz1WHbsC1oy53BSmo0VrXD0RA1pBuphvVW4LE2aBE27hffdHf4\nBu99f5PQIxiwk7xvfcvo0l9Iy9PjvzDiYE4JbBg/BuNoFx0QfvH4+LgqqUXy\nSWpRsyqo+xH1B88ZOg+T4d0m7lRDwk/pMgIg7NnSgQJUuT9f4KzaJopNFoom\nf2jB2LzUtp//iWoUSSg+voX7j3Ic9QFmjjaNv7Kxo8x4QNsTrP0eTXXs0PN0\nlLCxEXcQptT4jpT1ckCLBctGnqOJr/XwQIYUjY8r1Q+uuDp6mJNk9ppXzRqA\nUecL\r\n=rl13\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"abb704dbe55560949aa4cf3647e105956637cfaa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.4","@balena/jellyfish-metrics":"^0.1.58"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.34-renovate-non-major-abb704dbe55560949aa4cf3647e105956637cfaa_1612502415491_0.9467037511200023","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.35-renovate-non-major-d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe":{"name":"@balena/jellyfish-sync","version":"4.1.35-renovate-non-major-d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.35-renovate-non-major-d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d1088096d39fd8685c701f80b89c0e2039b595f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.35-renovate-non-major-d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe.tgz","fileCount":22,"integrity":"sha512-Err3Q9/vLaLK1z1TxQsEMfL9u68ajlT2L+L8mCcaSR18pPmMpb567ESqni5XzcjvO3x/nNFah3HjBfOThMzmpw==","signatures":[{"sig":"MEUCIHlkdAsGg1JnyCsLbhbZ4FpejHtcT+oGei3BIR9ixzoOAiEA4FaeSwjHjaXXmjQP8cAGg1epy1OpYOI51si2+KWurZU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHOk5CRA9TVsSAnZWagAAGE0P/2JC7LvFscQPBVwAm/cb\njMrBlzMA6qYxGgn1whtZN+PIZz0RVOpbnwFChwLCYr2DfVRPqgckCtVWZW8i\nL5upe40nMrOfmED/YVjU+HEZKSL0atRzYL61wOx/Qc9vK0ok16CrrEMj4EyG\nYLbn8YsGmaCztIzzER+Cr6uZUAq5CpAy1sZYxXrsZPc9Fe+IPaVLsm+Vrt18\nFa02RCSPj+pMnDow/sKouNPqRQSFkdYPFVCgYUlgCUNFyCcsxuF07pLLhl8X\nJifklOQSMhn1xbGpA1zCoctDNZyRDGJ0UoVM4t7pFt1yl4sbRtPt8kBMYHhj\nK3KXprmibqh8+vgWQaScvcuA0QJx7U2XG1TTL2huuhj560sHHsOE8vKBMip/\ndDpPtEXM15YCZ56Qri+3gJAR98q0ehw/LRjLJ6udJE6irUXOfIjRQg7pnSbi\nU+JACfdFfWoN0E1f2cy/RQNuDzm8Zs0NyqpPvZSPTN2V7ln3V7mXX6+lxfD7\nctRw0bMdDAIbUoPEe1ci3T/S0weYKGTWOZwDwS2v07YmvNcbVIefWXUkwpYS\nx3/B9M1HwUU3+bsaWMwH+X3gE3InJXbjpmS6lEU4MObDNgk+8H4PYMHWhei9\n3l+i0A19aEaeVvwvPOaWw/OOcglevPPDaFhxmcWM7sCvDss26VhMxE0Wpjsz\n4kuk\r\n=bJfr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.4","@balena/jellyfish-metrics":"^0.1.59"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.35-renovate-non-major-d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe_1612507449266_0.9566573004543233","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.35":{"name":"@balena/jellyfish-sync","version":"4.1.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b247af36478a37bc732c80d687fee0fd694dbc8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.35.tgz","fileCount":22,"integrity":"sha512-NpjyL5gelPTphWu9v9cA2a/1ArF5xqVU6K4CQraeM30aOmTHnp7kWZO+GbQLyACtJ9FC8RtHPsOvXqrwKMpl/g==","signatures":[{"sig":"MEYCIQDsO4uxOtvy3WtGQKlAeuhiwmFdqsx2utqSmoVfMnw4SQIhAL7oA8gMFJzA2AJ3MGS+OSe+L40//Q+Ib6RoHK/Tfjh+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123104,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHOoMCRA9TVsSAnZWagAA4V4QAJ2R/r4Z66cJRNMjNyoX\nLfG8Mvr0cFic78yWJpsFjZKJnHTH1OTmX2M5h+RJhKPkelECIhCMiGnzMgiL\nLYJRRvzPkBYhTo7dXo3Bl8IMwRXcS8ffXTdwQrzt1wKjilFymVYbbOp0EcJe\nH7CSSQ4Jucgs7aoIaec5EtgOq4JXK8wpVhd1J4esQrrKUUfSVqG+KovvRKvh\nAnv/ygO1VXuIFblxB7BJt18dzL379ynrI7No7RLzql2QE9HmAW45FF6an1l2\nIw8i8O33hJAwISX+p3IYUDyPdEqhljSfRYdXuSa1IZJq/3Zqi2EVvDaCF1SS\nH0qafeu9r41+FjygJhB8D4R8FdD29bcyAuoARny0B97On2MRuZoDIrUV9l5F\nJYUqYG+8pWO7d/O7PHnxQXqvD4LEAhagcwwdZVymrBaLwZcBTQUeMCU9xX+7\npXPGjdMZu+z0hwfxDStkO3AQP+U0WSNIACnmihychvGVf8rd/uZ3jXiIaypX\nas56AcUHHm2RPxH3Y7xiaWKE1G4d2DFAcdc9JMHY7gZdSfW1aPcqJhpwEYZd\nS88gWjx381R+8wu7MoRboOcb0mlTN1AdcVhTLpkK+kXfLafuTtX53C7DuwNk\nRRTygWiLXoUfTSDN6OxYcRjzDhLixP0/3flK52p/C4xIzMzfUoq6DfP8/coL\n5LwD\r\n=+Wo8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fd12b58e84f902d5d27a125cc316ad2180d05b36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.4","@balena/jellyfish-metrics":"^0.1.59"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.3","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.35_1612507660387_0.2718943493873125","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.36-renovate-non-major-884f05d6e6437705050c113c7a5f45d19866e247":{"name":"@balena/jellyfish-sync","version":"4.1.36-renovate-non-major-884f05d6e6437705050c113c7a5f45d19866e247","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.36-renovate-non-major-884f05d6e6437705050c113c7a5f45d19866e247","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"06819fdefc7daa31383b452a04286a191d29bae9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.36-renovate-non-major-884f05d6e6437705050c113c7a5f45d19866e247.tgz","fileCount":22,"integrity":"sha512-n5oCdu9ytV34g/D7caaJHfIH2f9oV0vtFXAvO8FOZwKav3x+u3IZgPZVLfXiLylCHKUP4fyUvwkCoJxmV5oZ8Q==","signatures":[{"sig":"MEUCIQDyxeM2ClyFIMHx0vy1bGiXI4Ni7WNf/Hod1yOKY4GMNAIgWWN/S0MLbcsughXzzftf1mk45ycqezx2MoTvuK5aLl0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHX9PCRA9TVsSAnZWagAAPo4P/2DZ3FljijlYPC3YpGrN\nosfiKUjISVXVt/kIekg5/1afCoodGEBe+13spnSRlyq93ScDvSTeMsTgC/Za\n0CX/UOd9JxtLrROrRcAw0hN1SLxP/GM7GFmRMh4PSagEgz1HbhdrH0GruwgZ\nGi+zVpOgv/UlWhvNdqBkML7OZJalw9GhdDyS9AHw7E0OkR26y0dydrd+nwWx\ngf6MVL6mcn7c32+RWOLvaApkRc1SjLEa9kvuhNez8rCkfz+8py5OR5Sb4dJf\nLqGgBJR868cFIehsv5RnoP8QG9JyZJv3U3i9mKnDfnoew34uuJ8cMOe2dOix\nOkFLvierBggkDlz9WAfZSnui9yqYeuGHZ5/7q/FyfjxZ9ISYi/b2kbCWgVos\nKM2/qrEOmkwb0LcoHYv97zaVGT5QCAbwAfnLVM9/je/OLxIrp9YrBGihqfL0\nWfpRHQIu6t3QOojXS0ZViPjUdYUDIURSRcfEzL6nIhjnJHxYFdJHsPvK815w\nQEGeTz+Uz81jm25grqpXzw9VcM1yNKZ1fpcQ4VnfBJi7vfou12Nd1Bb+f+Oe\nyvGGO/1op27Oxs/xuD3doL9fvMb8PKui4EMifnKRnLX9P9R98O/VEF0eHhO7\n1fF19jiRZMbcJ71WK5hgqc9qoTSHjDwvIO9Aa16D9e5C4/jUgRMbYyMqcHbX\nQ1rN\r\n=nhmI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"884f05d6e6437705050c113c7a5f45d19866e247","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.4","@balena/jellyfish-metrics":"^0.1.59"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.36-renovate-non-major-884f05d6e6437705050c113c7a5f45d19866e247_1612545870606_0.4895919280245904","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.36":{"name":"@balena/jellyfish-sync","version":"4.1.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3068c67fe5cf0b38b512a66c2be32882073bdf5a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.36.tgz","fileCount":22,"integrity":"sha512-IEVd3NDuEZk2Jojh+H+YXIRGzpHDRF2LvWXcwsNnbjK4n1P4HXPV11u5qVX7F/lxdyF1uaY5cx8QbnMrXs+7Lg==","signatures":[{"sig":"MEYCIQCzKULO+W+Gd5ygG6Obdf2v1hGKufOE4dOQMWhIO+hLpAIhAI1jP2csp2qCslZfWm0MEPMqv6E4Or24WT5loX2xW8b7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHYBjCRA9TVsSAnZWagAAQyUP/irrBio8Sp+Ru4TxkRr/\nsB43vTKde/j8EDEcFWbISRvJd5MuObWynw/Sg2wpJKmp8s+XHMuwpCZ0B8xG\n0cKvH0Z77hAXB2VDaUGRC/XGVpUp26HeY+ILPgAdeIgGNXcswqbLgVd2NsHP\nYUwEf4Q4GJicVNWVrOaXG5FIcc+OaHOKemwNMpSNxyEs30Alq40kR/vGp4Wz\nS1GeMD9lmDp59BRexfTZnCVPopNIPv5L7uRwvnzOfpH6NChTBuEQbozeJXsZ\n4RAzO5lcmL/cAODdvOXU8p2jqB7eop6YpglovYiiavcbLI90Kn763GTbkKc+\nNUokynDB0W0/C4APIrD7cekxbKGd57/q2oj6HvMWkMS6Q3HN4FRePEQHLc4v\nYBx2FNk3Sxa2mjjqkhdJo1g2i53eLUF4W06QVnjsTn00esAPPIs0RCneWaBS\nJEhntGt99EJ0HV3YDEQF6DNrP1Ev9jKClg1y/ap8h426ubLu7si6qXDju8YP\nwzFAFybcqznxvZAvIp3jEXDtAelu39E4BqT0WHfJ1mE+XJlz3cDVM3xYi+bK\nhvFbigP2Fg6rexExrvBu7FtInt5Fp32iV29H7uCteWFeX/DXvb7/PLMB29Gp\npe0ye5YbeQ8Fr/lcd0oYhHAH2KK8g0BZfwp8Uqea/X5I/PmX+aWSXSzN8mgo\n6k+W\r\n=/hvb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"142ec7a045cd1bac6cb74cf9761c140c235a7959","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.4","@balena/jellyfish-metrics":"^0.1.59"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.36_1612546147212_0.7939449249020836","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.37-renovate-non-major-38ce267d85553d3247f8a418efcc8861dacf38a9":{"name":"@balena/jellyfish-sync","version":"4.1.37-renovate-non-major-38ce267d85553d3247f8a418efcc8861dacf38a9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.37-renovate-non-major-38ce267d85553d3247f8a418efcc8861dacf38a9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bed13f8deb0b80ab69e512f2be1aa731df3c0106","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.37-renovate-non-major-38ce267d85553d3247f8a418efcc8861dacf38a9.tgz","fileCount":22,"integrity":"sha512-IUDU3Tm2lAs+2hiZ8ODBIudZFQ/C8m3r3g/YuN9C1xCqNEcsxErFBvEx7Rj1rCLnl7nV03weKJGrzmkP9qevYg==","signatures":[{"sig":"MEUCIQCUG+DoJflRhNcIr9HAaqXel6+Qw2RvAy42MbxWOlww2AIgSW1Jht6Fow5ldqgftXl4WRUkVUPn4V4bWlcFPZSi40E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123326,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHZbGCRA9TVsSAnZWagAAxusP/327EW5Hzf4z1mTSNL+h\n/yAKyc/EuUXWYxrsFo04Uh1fDTdvwt4nNpS3CEs0hBRwVkncFzuWRWbIpV5m\nuXbLSuXtqBshUHsxd1jDz6BVuUtW7CkwZqeK126Z9ofPq1AI3pEhVA1n6gfF\n3FCv2vk42zNSwJ5zJe1QB/JeNFGiZlfkBmO0zoTf6mxzzixP02DHxSnfnCCm\nFdvZ5DVM4/2Vu+422YM6ToeVprLHu0zw+71ct1FpaHhO7cykobhG0SXo6SDp\nRFb2RZrc+PhYwIrPvx/oMyp0mVYdfO1HfHgcrDBoTcaMkCAB1T6nvj8dqyiT\nsrAi7fsFLV9qXJrFA17Qz6Coa5UGbV5gJ5x+/QaUvTdvUVAZjcNs7atH51fU\nxshhnsRV2actEQi0DQNlgdnlaRt9kSU4NWJbrOk0asPu0TyFBBsL7UCcqDVJ\nglrLfi5c4iCHjkDOKV++ppYdA8xNjoPC5/AI2b5BX8QBmZDKSEVCZ9e6PhZp\nNSK56OUXU3//JdmLiDNM6BGaelkpEX02ScZXP+wQuSiTRdgLGjn+c75yWIUY\nvtH+ZntchIAIMMahD/2blnCJtuI4BhX2JnwHjH5b7UN3MkTNQiX2ghuDWGe4\nhByUKmJ48m1Zo5I7dLgczszWh8LnZdt1uma6MyN5P8K9bdXRBtPF7yMAdwA9\nBh7J\r\n=KzB3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"38ce267d85553d3247f8a418efcc8861dacf38a9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.5","@balena/jellyfish-metrics":"^0.1.61"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.37-renovate-non-major-38ce267d85553d3247f8a418efcc8861dacf38a9_1612551877937_0.7822328307516324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.37":{"name":"@balena/jellyfish-sync","version":"4.1.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"90ebc0ad7b5b3b470f7d92a10a5cb96bd1bac108","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.37.tgz","fileCount":22,"integrity":"sha512-jLFsHj8eAN78qwihexzHdTZau6xdmE3LtXclJHqCs7wmP8uv6y6oCr4yJ10BZ1BvWl0H9E9zSe5lGahtxwdcHw==","signatures":[{"sig":"MEUCIQCFmBI+AOcWgqyEXRoj79ap5AVLe3Jm8GMKvzUk9IuZ6wIgebijar5XRcsl+ao9k04LpMpGB3YA2Lz+hLhD1GutiH4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHZeaCRA9TVsSAnZWagAADtEP/j9bPLF0jZu9ofWbM7/1\nW+CpcnUqsVX8hL7Xhn1OD1/L48M0Bx2f/rNjLByW5ahgTqFUcjVrNPEHErla\ni/Nm6G++nzReXhX6pftAed717tB2+VAHVtJ1CSlRs7ytA7+haGYEHaV4U7Ik\nXiPnZWi32p5wd1PrwQ0nisTsMU/U0rFoVOF/I1JTHKu+TZXVOuPnKxKTyXqs\ni1lDoj4GIHRwCYNtM/EmGmXJPQF8PLtoS/D9DDZLMae8AwU1IRgQbrYEiSaI\nnNmhriSexG4S49tVzO7byLl5XjIe1a5C9KcQocgBnWpr/eeud1eG5EuZIUZt\nqQCjVOPIdTPi55OmmZjl0nivBGQN4NGTiBh5Y4hjxxo0wSUKd5ZjgLhyPxYh\nDO+DuLpt0xiif9vbdjSDtRAUM2aUY+RbMVx6PECFhj8jrGJ9EdCGnxchUl3F\nI+eaAdwP9Mqo/4QdZmpehl/BdBpQ5J5qhNrstzegMAjUfur4zdyk4YrDoP54\nUMe2YuRaE+gYuS+R/sMfiT7l4DvGLdyMRdEYuGOMeEK1WcZoVR++qHxtK5HK\n2bUjl7h3WgoG8aJX0opWO7u4XxojypH53+1muacxlMeo5AEc7L92Hj6YNHXa\nFha8aJh9sUdB/NHEoTX0Sw9yW60VdL4YKfhJ1Ung5HCBT7mtC2Qzle2HB/na\nu97x\r\n=WzDW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4601a67e4578a8f32acaa83b15d83d950033f257","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.5","@balena/jellyfish-metrics":"^0.1.61"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.37_1612552089613_0.4341361985046601","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.38-renovate-non-major-62fd3224a12974b1b7412986dbf4ddc62ae52980":{"name":"@balena/jellyfish-sync","version":"4.1.38-renovate-non-major-62fd3224a12974b1b7412986dbf4ddc62ae52980","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.38-renovate-non-major-62fd3224a12974b1b7412986dbf4ddc62ae52980","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"42e716251020fad75b7c6dc0ef493eb6b646c09b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.38-renovate-non-major-62fd3224a12974b1b7412986dbf4ddc62ae52980.tgz","fileCount":22,"integrity":"sha512-sysFzzQT7GvxdlTOUsDfLNR/AbY0XbEwo5gj0QpCF+hzNdiLsCOoe3w9NGnAHZgebZkCGy4usENOTP67LvGLfg==","signatures":[{"sig":"MEQCIBE60RFmlorqXAzH46b6kEovVy52hGXAt8ywtJqNweoXAiAs6DZOZKFsRWqUfwPYXrp9XIMrlojyOn+z87uGBxjyLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123433,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHlItCRA9TVsSAnZWagAAPhIP/jr9arJ2SqmDw3fLUAVN\nzyyviRSa8JacNFZobeggLD6hKxxXpP09pWTRwTYMAVjvTntIRDLqdL1/jXj4\nK1U+tz+uwy1F9eRrrWMzPL7PZM3v+vbaHlD+Wyd4pe7qFyObY0SKYJBeu5BP\naz/P+rgkXb/x+0wMagsoZjaQaah7utOv6NIYHhwwzSF2hPVUJtxj9BrCj8Ki\nZZpQlb3SLvT8sTfj+uwJlUx/ffLGbMamRoIOXyNtDPnpt5Ujr1ks/7y+b3pk\nWSFz+StXbQy+NENyM90iLxJAcUcCBZje0c7/UrCRYlKmaj1mr/PoLicQplZd\nOgYLdIHLdDtielRwjTK8/lXSAztF+T+yqruXgbpMwjqOmLGtetTBAOgy0/lu\ng9aXwYrNN3qfNP9tQ1psAmH6C7dBMkGbhyj5YVJHb1yquTUkhJz9pJPwx4Hp\nCrgx7RMthR3oTb1fBm/2oBAKtxxV7adbq5jJoDQJRLaQ9md5YJsiNAislOjq\ngIurOs5W60cdwtWp0Wx4LjrcgYnxAFt+rhbcfjwpgzdBuqlenKIDBAy9Ug+d\n3HNDpnZakaSHpMRwpP4FHZ2/NV1n0YQiWZjLsYOyh0aeWKxODOHpVOAhQDzC\nnStPdgXzXPzDyuNrg2MJ36iEtmfPI1Ay8skAGKtojAzfXvSXd1hP8LHOqNu0\nCGaF\r\n=DahU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"62fd3224a12974b1b7412986dbf4ddc62ae52980","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.5","@balena/jellyfish-metrics":"^0.1.62"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.38-renovate-non-major-62fd3224a12974b1b7412986dbf4ddc62ae52980_1612599853155_0.4182533181006092","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.38":{"name":"@balena/jellyfish-sync","version":"4.1.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"623269812aafb237fe184cf5a39b2d24e9baba9b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.38.tgz","fileCount":22,"integrity":"sha512-WKb6TcTWVwnh/Nyz9OnDnROBi84v1tocBrOfXhbs2FTp5C4LXKa3UVtBWsLGRM8IWqc7Ddsz9kRK0r3GKBxLPg==","signatures":[{"sig":"MEUCIAjnzBY8MiZLo7d/DIKOJ3uyrtDwEp/gwS6/v2yATlMjAiEA/n5a/8uEap7qQ3a5z+K0nAfuXLecbHLrgZXfdw4Fl5A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123373,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHmNmCRA9TVsSAnZWagAAqTQP/R88IfrlLNAWrh2sF6kr\nCViC23SeIxD/oatZYst4hXiyAUGM//VX4Uj+dmxqAUHse/U858Xkq3SRvSFn\nwOpzJA5NQrD/fLLStCXvUN6+f8Bw74vjRKq5AnzR3frnuPMyk+FdndE9o2xD\nwQ+c5whi5rLsmNG7rFCm4fbl+68OtQej6FP4PkBEzTwiRNz93CAmRlGAYLLB\n0IoOkMEo25HQVkF6QuhvsvD1LrXLTahd9e8AJjXZfkUgg3tWuaG+GN78PFYI\nhaifRtMTJVe2yLnrzeOyqV9i+2hadmAmQx8U6v2jRmETw1otkfZaUBJazS1R\nIhmJAVrxyeg0w40y8zyA403d8/NeJPDuafwbXeyqMRYK5IgnXVoBY2LFQw87\n4hPujvNmi/Jsj1Pln33VlGqV9Gh8oNWP67NH9v3LRyQJcMqL48L7ZJi43Grs\nLNU3PtvU2fLjItgg7JtROPiGGtRDX5gOn3BRNs9eD73kpa2cnfH7sEbVPqzK\nuHCl1deGYgXTmfOxgrZDUdELgt5o+GplDfBn+DTeqI8+eSTW7TG3D/24xKqg\nJTAo3f1Rdbpu7SpajtEF7DSVR+jm6MWOuEeRM+GO7DdXYLyz17sbE42rpZj7\nML9HGuvRaEWJsoGTIdEzTuUuqYSH2AMjRaZuL84yEDqJuiU7cSZ+0bKLYn4u\nFf9Y\r\n=NT/y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0037b3c532975e652bb40093f632aafd782943e4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.5","@balena/jellyfish-metrics":"^0.1.62"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.38_1612604262051_0.8144695929683554","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.39-use-shared-renovate-config-560d9ebe5ddfa63383221d7c9ef05e75809fa647":{"name":"@balena/jellyfish-sync","version":"4.1.39-use-shared-renovate-config-560d9ebe5ddfa63383221d7c9ef05e75809fa647","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.39-use-shared-renovate-config-560d9ebe5ddfa63383221d7c9ef05e75809fa647","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"413ad9631c3477c340ba4a5743109b00465d8290","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.39-use-shared-renovate-config-560d9ebe5ddfa63383221d7c9ef05e75809fa647.tgz","fileCount":22,"integrity":"sha512-/ZUwhhFjq3RbP0MyIUjy8zVX/kNiVRUykaqMnE/qI81nB+iXVBpywh8nerXMVYuvXfc20f9eqgeJGqMf+j41Vg==","signatures":[{"sig":"MEUCIQDX4tU+qErEnv9xdjl3iO0G1WTDeHla3zr2OuImXKJx8gIgaSjejlHv6sKFIsd/OHD4F+9ccZz24hz9dNQPBaDEa0o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHmsUCRA9TVsSAnZWagAAOvwP/2FToX1lJxQvG6MsYrFw\nZXBR6tP48U0ozAwGEsWyAADPxqIRdFcFO6/g7uohQh1v37RZH0kruxeEwXgk\n9LIR8xrrcFkvBRggODrVzMAQFhbxIvCeP3wboScdj+uMpLQTPv5fH+eiMJVZ\n7bLz2rrdi3LNqT2TeoEGP+a7hBY7nEIOZDZlG1ls3M3IBcMChTRxYNubnO8H\nhqI42822ScU8eKlAlj+hfbGsxd2vmSyAcD2KSEoYJtG42Zd22a9BiPsvHyae\noAUldVPlN2LOI5PoVgkNWK77JOnHH3KZMTAX0xathUlRb3nSkUyrlsLHOO6H\nBLEkTM0pKk2lXbs1Cgstdb/FH6pJ4Gsq5YFoHNUC2xx6DOd2UWyV0tCC2Hwo\nC+rTuFUxjXM/Oj3pziluwrVZegrjp0NUYqyeL5pb9A3QN8nwZ8KJOql6u3zA\nEe7T25OUEwDOipKp9O0NLXphr4LQD1yEqk5DSscFhQuRbZk/Jbx7b5Lzgrf7\nUUwca64995BvOC+lG7Tp3iyXq5uMWnjpLBoilk6bFEdjSpw01u52onxxNjMi\nh2dQpl3kO3BYJ82ICOJV9RwZ0221oc+pTVQ2sx3Xfo6B5UhSfIVojCvTq2wb\nHO1/tsaK1HUGdjcHd3vKBBIWoKjMY2Tx+ogRRRzmZwWTX1oK6u8mPDnP9Ghl\nQth3\r\n=B/12\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"560d9ebe5ddfa63383221d7c9ef05e75809fa647","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.5","@balena/jellyfish-metrics":"^0.1.62"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.39-use-shared-renovate-config-560d9ebe5ddfa63383221d7c9ef05e75809fa647_1612606227762_0.6530503182518475","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.39":{"name":"@balena/jellyfish-sync","version":"4.1.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eab71a97e8366446187f96996e6e69b7c7165dc3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.39.tgz","fileCount":22,"integrity":"sha512-NUAmPRMtFn+4EkXcaHorL6K+MBZqtRkQyK+fJ+jYXl9BcKvB+R3UiFLtJbVeGzGNVqGDJlRWdTvUhC65RIsGzA==","signatures":[{"sig":"MEQCIFSXPjCMSbH3eKiFkPMKo3mzP7BIIu1OJh7k/DCLO86PAiASs1xBe3T9oA+Q/YOYjgyKwBQ8rhxizZArFGDOh4uUcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHmvTCRA9TVsSAnZWagAAt1YP/0bpi3mI85VYKvOjx+qD\n4EHUoyzo3t7767MDgfL27JBE6oDFhCJAXE7WLCjUNFrH9rIP7MaqQYnHbZNp\niulkGTUfKb1nmgMWLbXPJ/u7jZ9ow9X/xmOdKdv4n1zyDix2DjBYnf/wQWo1\nc9fxOC7WZupdd71BaAfC3Jh112B3dL3hiUV6JAaAzpAUhbteFGg3VBU4dxeu\n++6p0bi6JRZaFy9I94l1XZ2cZojiKSf83Tk6MyoE8eMw1lFOd90Ni4H1MjpH\nTKUD1goPLCtkDsys2Dr7LcVH//qEmPZ/Ix+Dj/VV4fg70CU7/4DkHIssWnMl\n6y3fXuQuhjJTenRaHIUQDXdJWkkUK+vgt+mjqPAezpr6HAtS1e8ZWpXpSIlr\ngmmVYv5ULFOv1xum4r9IFublYpUX2IIFGHZKgH7235x7Ypj4nS9RFf3Jza7i\nSeOg36f8vtagktbEgFtkB1xvcvPRXQNjzQDRHF6gl7VtvjgdMm8k1vli01bH\nUdwTRp6UtteV+wO5YlWjWnFJEryakMHcQhQRrC6DOHCZj3X+VcmwsKxsN7Gj\nb1eB+0YxPBRcW0HV6535vxRpbGYD83wqlG5pTumMcwIu1zWNtQrx9hAWdjbE\n+JsRh2CxfzxBayRnougDHiDgpWivALj8+o8SWJpKn4LixRlwW1DosAp4Ber+\nov/f\r\n=okFm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9528fe34d88dd4e1e75c729cc9c392277e15ddc7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.55","@balena/jellyfish-logger":"1.0.5","@balena/jellyfish-metrics":"^0.1.62"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.39_1612606418853_0.7404621643304747","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.40-renovate-non-major-bb883b0b1e7278f4f1b54042c4fc190ee33022b9":{"name":"@balena/jellyfish-sync","version":"4.1.40-renovate-non-major-bb883b0b1e7278f4f1b54042c4fc190ee33022b9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.40-renovate-non-major-bb883b0b1e7278f4f1b54042c4fc190ee33022b9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a0a0af3bf73f0b844f48c9a58b9cf5494891e9a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.40-renovate-non-major-bb883b0b1e7278f4f1b54042c4fc190ee33022b9.tgz","fileCount":22,"integrity":"sha512-ZF+S6cSAVeIWww3Q7++JMSWYT6KD8gMpVEI9qccsSJrNxWdm7Ioh2RHHgcZpfew2BibAT/Ibz0jihaiMBbQ+VQ==","signatures":[{"sig":"MEQCIBSt0S3Cpxjq5q7tO6pOBg/A8Pj0/dUTdyCj+rTRCkUCAiAp1cJb/E/rp4vfCGnYuCHQSFytS43LbRkml+ixsfCs5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHm0MCRA9TVsSAnZWagAAmBsQAJHMWnxicAQFQiL9Jdis\n3RCVYTp6ogkJCstXfFtEiBVTWR2M9iPZbKRYvHKFLCOaAqO9IJSQvuq5U/tG\n+YHju752vsOwR08vdn2nFMGOMCTKJauwg9J7zGadwku8VzF4v1mvFlOgs+Ys\njFYGF9s97apGH2oZOUITWh6r3XM6zFeY22g/dA8/KirT7mDNQ1p3mqYafDc2\n7WGrkWuVeAI/1djdqy9BXn4MuT57V19nNLVEcsh3hN1/FLJk770TZ6beyLiz\nIdgqCHSvRHxgsRq/bqcu3jKc7Gpis69BCgFxRXKC0oP/7zcZpeTnc1H9VhoQ\n115w7644L82yNpVV3hPlXklQjf+8MxfoAPD3W4tvm1s0fria7qXA+cTBPxmh\n6YheE+IS+AkZemtsOFeWgAzYNaBAcndRkto+lvvG5IqL3NzNe875rM/gSpKo\nIAu3F7XujmrrQZnntMjR99kujKRqszP3qIEB/zrYdKCrGKjKR13bIaTv7pd9\nPy8AfrCzVNnh/WWwY+A+lQOW2lhd3GsnEUal1kSxczJ0iKALt7DkixGfYdk2\n040znit087QWwSKi7H10tHzaUp2IXdnKjQoe+tWuy2qgHQjgjNHjoCVLukxf\nRIJ7xlAm9CXCcCes0CWHLdTXpRKa7HslLhyqEway3z+e4T6kLL0d+sLKBv7C\nVvYl\r\n=z8Nc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bb883b0b1e7278f4f1b54042c4fc190ee33022b9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.6","@balena/jellyfish-metrics":"^0.1.63"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.40-renovate-non-major-bb883b0b1e7278f4f1b54042c4fc190ee33022b9_1612606731577_0.6589654950196906","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.40":{"name":"@balena/jellyfish-sync","version":"4.1.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"239d6b49bfea465bb4e58cd79a84bc25ce6e6b30","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.40.tgz","fileCount":22,"integrity":"sha512-BCVjYS/YMB1G86X96twkZknZluy8xE4T7ZYVqkF9BEXj9vQ/7ZQfpOwVOc9HBDDe6xvMoYn/GkBjjioPkl6VzQ==","signatures":[{"sig":"MEYCIQCf8CTBpfFPOogD8sRhuHjljug0Azwesp5Xdao8BckUQwIhAOp9cbo8CcgYUrvgzSLCoMNn78CS7WGP85ttLwCb01Hv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHm3WCRA9TVsSAnZWagAAZhYP/joZlAjN0B7jP+6qBRTs\nLZVQ8WmynGUJMB6LaOdOULG5FuPCUZ7eykyBdHZRuF2ZuIBB2gGuXgRmKgzU\ntLhdOY3ypKhnmMXqOBbARwKOp3Nxl0HobFL6Kejmm6zIMiwsAhDKcHziO/SB\n9IjLgCXRgs+sqW0Hz9A11jGArurDoG1QFljZU+YeWkCJHx0X/TW8siGZP3Tr\nyh/9WOxMZrdhTpUWbSxv/KneCpPt7/RMZPITSQNPrA5I++dA4vzFVDl6ie86\nXEyAMj11v+fUTQq1p4w3qv5C7vSNKzbRN5RVSOypeUKqHXULV6BeY7H7cFaW\nlqGCwBqVi+hYQ+xeUtChF+Uw5uprUvWURwKV9cw4aCHYaEObAuxh5d0JIaFJ\nSUUDu3iIiatopMq6XY5CUT8ixF9xQ0DEYuqBiFjznQOwjRbif+JR3EqRmXsS\nKhwmiYGJirGEw2OfIfe0uGRoXlpMcTIkjirpZXraxGCbE5Q+T9ry+aARnc+j\nf/SvbyRyHkZPH3MS+G+KY4euUBBIWuUSiNb2kjo63NUI0ZRXXsq1ostgSZgh\n1NHPXo8rHys3cqTV1lG2GkaW0J393QvXmz2u7uRwGi+wjGM/6k+AZ3oM1hMs\nSYyzKxakELoUAWalp278+BKWM+Q2MOhyc0LT3D6H4vD+xf7cksLBiT0U90jw\nvyG+\r\n=8C4U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7aaa22315dd4c7b080141c6a5aecc6b3b22abafe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.6","@balena/jellyfish-metrics":"^0.1.63"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.40_1612606934366_0.9154989599054899","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.41-renovate-non-major-3faf20da0b73af21a714bd5a214cadbccf6f4918":{"name":"@balena/jellyfish-sync","version":"4.1.41-renovate-non-major-3faf20da0b73af21a714bd5a214cadbccf6f4918","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.41-renovate-non-major-3faf20da0b73af21a714bd5a214cadbccf6f4918","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"97725c08beeed94798a6d1d55a4d8963b3148253","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.41-renovate-non-major-3faf20da0b73af21a714bd5a214cadbccf6f4918.tgz","fileCount":22,"integrity":"sha512-u/Vex7+qkHwpb8r4Et2i80xIoOgZ+XjlpMTkntquBw+YaND2XJG4CH0CK51lx8jShIhYap1VWZXIHzXw0vkm7g==","signatures":[{"sig":"MEYCIQDjmJ8NlqGISpXk9wrvVxxiPqycy013iy3ZXQe2Rh4hpwIhAJ6ZI0ICUhJpAfr4cctE5rDj044+uxXC2gFx5+WvLssX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHniICRA9TVsSAnZWagAAuOMQAJi4C6zou+aPmdgYMiyD\niruxGV8i9Q5h2XEULz5qOtHdw01dvyFp65GDLQmspVAqZpGeSCrFg3+W8iHB\nOpypzq+fMIu0ZwKKrREAV7okrhfuMgR8Bg6HsWFlv6EZ7KiFj6W2HpDr3i3X\nZ6twwILwGi0IpKRqt8CFS7FNKVf4tvnqUuKjHWkI+d9pzVC+zFDuk7/jxJgi\ngkqMfTj5yo4UQ2YgPIaHCPHOfkbCxPKmMfGb7sYEyK7cMASloUTmbgajKJ1r\n1uNb1vrd8XrWXnIxyMCJ1C1Zebp30fV8nUY94jkBi/RHP+v+y7z42wwP1HFV\nV6gnFwKAUahG828T8NHLvjgVqirTBuwK+MQ+UJ1a0Dqfy3m2VIwCG4DcbWhA\neGU6j4jPNoPzl+d2BE+5/+ACdS3A53ZTXq9ZFQKkocfLOgbDMXhEarPoq1w7\ncvIerbdGgn9EZ5b+9BJ8tgmjB4E1wOTOGxS5tVRl8ahVJ2TBs/HwE17+UqgW\n/0XNCsKYxMP/aMpKd0rIpe3I0MpCkpMfninjDWgQmKlKgj8Z/xBXd8pCJtVT\nzQg3452fw35vlOJe6/8r3MgDqqcUaffvT1mAbPmqvZ60G4f2m8rK7EFZBWiE\nYo9Zo480+guLeqZBqHP03SJgYLPC8a9rtfcvPFJihxo9F8wo0v5od8f0xy1B\n+ZcF\r\n=s1Hu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3faf20da0b73af21a714bd5a214cadbccf6f4918","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.6","@balena/jellyfish-metrics":"^0.1.64"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.41-renovate-non-major-3faf20da0b73af21a714bd5a214cadbccf6f4918_1612609672117_0.3842253132503046","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.41":{"name":"@balena/jellyfish-sync","version":"4.1.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b6f48501fa9b94d7c95c55900bbcc6bb1b0b28b2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.41.tgz","fileCount":22,"integrity":"sha512-hL0u3JFDyZPb02ZsnH8MCI7iO5rbzO633rlwZQHPrKmXjpa4Pgj7aVzcnbMjONKniHcBD1kjXvxOOIDAtQLsPA==","signatures":[{"sig":"MEQCIBNWDiZ9ds9l5fVmgHHpu4QACFtxfuNM3h1eVfE9fGtbAiBPvXQMqaFtyzZ68igob3y/viDoll7rU0keB9hSwynSDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHnlOCRA9TVsSAnZWagAAKNgP/jxcvWD4qRciVa5kx4n4\nJl7o0/mBU2MBpwrdudjx6entY0s49piT/EOxMYyZWCaTpvX6GiPz5L8MV1Ql\nL1jCTEgPJIzSINiuf52oVegM5RniCjMjkcKm4u6ElSeiTuXZ88TCo8oIniyf\n0woG7OLR+mrwrO0dkYKCoscNlzJRBePCChME0q7In472oc38mer0UPOqk2Wr\nixEGwS1BiEFGoz7Ep6UHnJb7968o7RKvr2+QD75IN8l/ZXZHA11EiYPoTect\nPIH3vRICDWm3mrEdU+TqcoyNnwr/PAc7AuRL96S+aTJcf5oLZFDywqy7wIZv\n2bOF4Z25rM5AKbmQm+mJc0qUrQfKS93EQ6qI/YTLSNu2raxtNPX4/wzsoAYT\nyxTk+hwkekTdypMQ/KsnuGEG/6pcQG9TujEAC/YU9pnNC7AuD8nEGB/sezNt\nI1ygj4YO/qgqhhDhN2Puce33PQ3E9QzIxMdxnnfjvkjATm2B+CdiqwW6pt9l\ns5UoY5pQJOk8BtS0Qqi88vPb5NgEhR/VVQ0Folu2G8D9O9dljrAgwUGsdPgi\n9AzGuZz4FKaKEyqeKleelAOCrZKK46IIeOZiqLSjNec/MFgSMnDitbBd+J75\nVxCtBsEGVDFrHMg4bdsBKiiVaWkozvulzH2LFbiNGyOptGI0LdfWTmB78WML\nh3pL\r\n=mCIr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e52a473ae749039a220df65c7237bd5ecadfb917","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.6","@balena/jellyfish-metrics":"^0.1.64"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.41_1612609869863_0.14724120609504365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.42-renovate-non-major-39b51979809229d41bdabe74d63b3260e3e52019":{"name":"@balena/jellyfish-sync","version":"4.1.42-renovate-non-major-39b51979809229d41bdabe74d63b3260e3e52019","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.42-renovate-non-major-39b51979809229d41bdabe74d63b3260e3e52019","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59c21dbd455a17d931bde9b0998b7b4862466a70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.42-renovate-non-major-39b51979809229d41bdabe74d63b3260e3e52019.tgz","fileCount":22,"integrity":"sha512-w5PTdlkyTmrE6/AekxuG6XStp5BwSkEnN1GKl+ZBN4Mhwo848iEv70WEeRUvEHIR++veutVMn5K+qVCKq2Z0+Q==","signatures":[{"sig":"MEQCIB40MfR5rYgUFUPjkjJJPBx7rwusjlRLWF6l6Bw6uNJJAiBv0qNPgFY17Sieuwsrv66jltWm2RN6TrYHarrBGVfaNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH6xmCRA9TVsSAnZWagAARycP/ifqpdZGuzAjV3/sR5cT\n3enBScvkowYqmGR2vycsOKTQwMQOBmfoCwRaXEs6AUGLgAFQFbqKGzqbZeDb\nYf9ZFXpipp+TWw5sYeFf1VZpVjgh2LkJZM/K0sYwRv8edgCJtcpdijcUFEcy\naHWMebIKvMj4/nCOS41IGVqkebhsF0V8CmwxKOF2vkPbSeYnFnBl3Q+brYWM\nHsoiV7tybjnSZ7gZz6HerjjYWrDg/3O3GpQiDxquHCvH6nshGVfALMhoSMbp\nHuv8ci1z7wOarowHt9/OtKGtRgfmLhx2KuXX40ceNsuT6ZR7tIzGMRb8bSoH\nXTKXvUGu3d/ESYeXrK2ZaepgsizoldNBSGctnMB+91N6fRZ0wVqvztfdi1xB\nF6Ej4XWtj15Lq2CamA/26NKRzwXslAqnU46sJRvRb0wJv4mEd7KRYBZHdxHj\n289VPDQmzjZCC1GgRvxM49tBHPNqeDbZGHLwa4dlrxf+TdHLatxQ8c3/sdrh\nMqcXio2heNeK1/NxNbxjHlAGpTHRkIfYgbygNtb/u8Oq5W50/9+bjbN3SZak\n5TtI99/yxMM0okGarC+wqsc32juFjnCzygiS1Qx/tqDn3/DN88HjpUIZLQxf\nijnFPqDoFGrKmbHZdFYu97gCqq8x+/gve/zv+nyYYvTpmUbI/JVednPVXjiq\n1x6A\r\n=ai1H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"39b51979809229d41bdabe74d63b3260e3e52019","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.7","@balena/jellyfish-metrics":"^0.1.64"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.42-renovate-non-major-39b51979809229d41bdabe74d63b3260e3e52019_1612688485876_0.7659151868701748","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.42":{"name":"@balena/jellyfish-sync","version":"4.1.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef474011b5f0a4d1b605bc376ab8a3404dcfcd90","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.42.tgz","fileCount":22,"integrity":"sha512-kptm5AC6cJcdTNKt2VUb+7NQamqxr+bKw0yd6ERbk0LDxc7Kv2HKBCSB7A7MhNgN4n/UZjR2r2QZi2GladhpWA==","signatures":[{"sig":"MEQCID8pqob3Gk/0XRPzJqHTA+s6hun1wsGQuZ+vrPfeqNGHAiBR7VCO4cd62a98nthQmc8GKlpjG0TgbS2ColVMPgFgZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122858,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH7HFCRA9TVsSAnZWagAAm6sP/1qTIuNdUxEtthKMjuGa\njWhU9fwbsrG12tQmS1IO7nSphQGN75Q1HdLIdt5460bpT4qzve6q3GPSQ3rg\nuijdh3AKZ98qaGBZDgHkIrDv5xj4YwpTidDB/S33eQJJGbJnRTASyc94KcQg\n1mzBmMebIeVBg0ZJXf0Zq08cSddd0/d9pecQ0398wQAxiksEkgjvvfBmEoDQ\nvfxoaKy0Bw0/VEN1919BMcGd21IYutD3YmFi+56g6c3DQef6XlH9nsho001J\nf2p9igwNsdab/rl0xa/GXYy5RTrge+7OPVXRJvPifn6Nj+XyQ2aHXeo9OyeW\nMYbjFwzGC/vpKlnJs7Y5Q4ZT+L8uJVXVBzAzQwE8XkeBNah+RAMr8tbXmwhr\nb0+rqqAbBZVQ1LXS1Ti7m3ZN9VwnNKO47e1irzpJosPioCRcu5eWNB0W+TR8\nJZS4BQbO1TNX4zXyPpjZgNPaPiGWyUKi7JM7+nQCtTOeqmJyPPMT/5Km7hQF\nnQI7+0k1LKgG/1uhV5jwlZl6gEaRDUUhoVlompAecky5ZC+7zUyuxVP7MLYX\nKH/BGfKv2AxPpAQiFJzrVvBmyltV3UH7F+CxvIT8uFRaax+w1R3EzbaalUJ3\nf43De6S478vaTcQyAlgiERG4Cg0ceY2W3ZhnU7sR9cWYBTWn7noHAFE0I+SI\nniPX\r\n=C2Qe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bfa31098e453ac90b5a3b017088090162565826c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.7","@balena/jellyfish-metrics":"^0.1.64"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.42_1612689860602_0.5860603758593292","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.43-renovate-non-major-790b95499ebcbc16b58217e639a4878e6637b7f5":{"name":"@balena/jellyfish-sync","version":"4.1.43-renovate-non-major-790b95499ebcbc16b58217e639a4878e6637b7f5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.43-renovate-non-major-790b95499ebcbc16b58217e639a4878e6637b7f5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"79c9a4851c710cd825aa66705fb3e55b53559b7b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.43-renovate-non-major-790b95499ebcbc16b58217e639a4878e6637b7f5.tgz","fileCount":22,"integrity":"sha512-jwNRgmILSh+9z+LjI/g3pI9ByicDTG9+uYBgMLqjXnW0baY4BCqE+7N+iEtMrbyPR6kmYQrHk6w8OqTPUwRekQ==","signatures":[{"sig":"MEUCIFuTDQg94ilfV9NMkvcpQVeRwxGucIzfT1viRJYN+ifFAiEA4tF+x1Is05CvcqdUuPHIp+7GGg7bCuqElrCm9K2oirY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH8PUCRA9TVsSAnZWagAAK+MP/0GKj45UolGN+VDyAkQE\nqWBnJUfPAPCscn5YP0PSQ+NUQOqbh6vJNXwBlPDUX+vtKNyncbT8oifFw429\nxWiAyAGLZMuzZy59kT2L++xbZ9FSRqcPDg/wpxATXTvWFKxpqYj9Qw0yDRhA\np06xBWJw4rHkTGWMOOh+P53G9xN8M3q5XZkiWMZ2EaU6WCSSH4zobUnEouJ+\n5wUhDUrJq5lJqS/xLwct67eGVS6WSMli0TSqkzhOb5x0rzEKD3SNQeUHnTvV\nwz7bEdXsc0PmVKaxn4Sx5yYh3h+TaVN/Xj2RYmPrR5qXsncuwKI5MylYViBC\nd0NXyg7CnSbL+QAFHH9ylmP9ReNF7ql8XVFgskhURktBfecS0N2vOaemy2V9\nQX28X3lbf8+t4hDmrKbnpnO3Y6BZdJl5egT8exYqRMZ1eBrK+/QtZJa3NTSF\nkXT6bbYFlnylRDsPm7/u1E/KFdCRr67YElu5QUNQi0ukokwVIf53ehiSkHio\n+0fH6LJwBhKckBCXxHbRORVkKT3Hrkq6f012PJE6roUlbCxRaQHPwvv4Vc3Z\nbkpncKA1VPzNzq7e1nRpBLUium85WdbKs1iTweU/utaf9qMEWTFzGjLjTdaM\nXDEIiwIW3G3wulkrEcCwmoR3Iqg+cjTCZ6FiounNva+9BFMMJC4zWTxAYior\nVQWt\r\n=u55L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"790b95499ebcbc16b58217e639a4878e6637b7f5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.7","@balena/jellyfish-metrics":"^0.1.65"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.43-renovate-non-major-790b95499ebcbc16b58217e639a4878e6637b7f5_1612694484379_0.11829232943978929","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.43":{"name":"@balena/jellyfish-sync","version":"4.1.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dfbbf88e968f1917c85cda217d4661dcf21868ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.43.tgz","fileCount":22,"integrity":"sha512-apbam/aL5vEi6UR/AJpkOAfN0MoHXcUewDJzFvZtokEqLdQhU/KzI0WwGGQpFv+jbY94k6500rCgmAu/AHbB9w==","signatures":[{"sig":"MEUCICsCJTpF5IWedrx9NsVdlHpIbzMHG0rVqWEYMVHSJ3+1AiEAxM3G36tk/VPSUaQTZd2ZVeULPR+TJRtZQp0XQxculJQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":122965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH8SOCRA9TVsSAnZWagAASkQP/0XCAfUKMVYoBFAnOOVg\n61hepq5ergbolowQG6mvCLLJTJQ7j7DwvQHATdJTbM6d4i04UhCrMv5glPvl\nZkZQGblcXo0eDa6IxMuaPUJdMFqjyBkHQLrspsW4qMwsX5iGM1vC2on7iO+R\n+vTX/iCXU0y8CjjYQVzVGPFrVxyz+nqxYA1aL9N/XrECEI+lcvwWKv6uMFfp\nfqjwW788aCfL3qF3avpB+Y6rjf+k21kPCMkWNt1KZPXNNDeF5cTneuNf8IWb\n+S4dCvpSkiX4U9SinNykGX8lY6RzPHiW0FlepYhziZw/mPxvSohtf1zciOfR\nwMlQC4+UrfxxoHIjOAlX+QU1QJSXZeqlVxN7MDabM6VkH1ZTHAuh4XB4Kngh\nsf5vQdmn47Nw+AoMNEbGjOvYL0sfvi1APSnM6X3zQCEZnsHeI/WjMSeJ2UFP\nYcuqUl7/qVbuEOHA9HZqDboHyvbWlWELSu2jH1BTV1Ls91kmKAGVoY3h7ijh\n5FAqG/XFfZL6eNwLeZnUx7VLmLQa+y5e9X6cB2bP1hQPA3ZrkcfFR9YAzpHG\nsRUfb6ppf+b3uTQgq6j0vA9wxgr5A5FHslN8uehd61HPFcVvBaYuPdVz6l1H\nFXz1NPvqOgNWjuSccpzgSfS0VWy+IG/xAKPjVxDTKZBix9jEAKZz+LD8RR7I\n5hDw\r\n=FF3o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3409b0d59e548c33d6bddc12b55a6f13c6f2c94d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.7","@balena/jellyfish-metrics":"^0.1.65"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.43_1612694670091_0.8600553741223742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.44-renovate-non-major-592520fef958979069a63c93e0f587551a6cedfe":{"name":"@balena/jellyfish-sync","version":"4.1.44-renovate-non-major-592520fef958979069a63c93e0f587551a6cedfe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.44-renovate-non-major-592520fef958979069a63c93e0f587551a6cedfe","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fed49fc64abffe3827579baa758febea46ea826a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.44-renovate-non-major-592520fef958979069a63c93e0f587551a6cedfe.tgz","fileCount":22,"integrity":"sha512-u76KdLbLMWLnCqaTf89BVu5z4zoXK0Z5elBMTpFaKYvmMMpdE65phgUkz5BoH04PFHkmKnEnscS8PzK1rVb8mg==","signatures":[{"sig":"MEUCIQCZe25nODhe7B7dzX3c6YynYMQ4DgmqB9XA3HRXj3wSPwIgDd00RFVlCtuN3v0KIWrOZ1bP5fF3R1Y+WrePV0otcFs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH8q9CRA9TVsSAnZWagAAxHwP/A/4816bCzWoAQH/aiz+\nm9tFzw5KM12KUsbeYpV9XYunbHAMG+agzQLhVUQzXBP114hrpksrA25LVnj3\n0cFhv864eUBZ54W1NeEQ7tPbs45s9bEGvTNEqp5su/rHo6qOCBkAANHoBYF4\nT29yJcwoaeQMESUvMlR97Zz2SQICAXDP6KmiE4vPJ7moWkiS4LTEImMjN/6t\nMuvf7RGZy/N3vgZUzSrwJfJKS/rDIvF0mHaPLbHjgtygBuUmHzndOWnbhQi/\nRrq2eVeTJr8TGruaujrhzSryorVtJt/8fu1JtSv+g8Hq8ut1N2gCI23UjZGx\njkJ7Rx4aV+7Ztv3oMNGU59x5a9fJDKQtji8rUK/yOFXkrST3jm2IaiGKJjGx\nTc5lCRhgUnkOFwV/Xol/zXN9peRkT1aryvm1MIYhbPlekOBrvKKfKLI/riPR\naefR7qX9kqv9oE5l3F6vgSevuORsRdFmfKg6hvrhwIGemS3LB2lNjdeBv3uy\nERm/+R8ApnzaP/6RENfmLJfM8Tj/gDT0u09ZnSAx4lXrTkovTBuhHuYytXtf\nUdx9fxH6N/eP6TbjC9D/f+PrieH2jboefW64eWsQ3k9nmS/z4ZXxya7ARZbP\njszNmNlZgjZfyhWKvYw4jojrSJ59FbDY8GSa8WqcN/WrY1S6ZN8RouUL0fgo\nCurQ\r\n=7ni6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"592520fef958979069a63c93e0f587551a6cedfe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.7","@balena/jellyfish-metrics":"^0.1.65"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.44-renovate-non-major-592520fef958979069a63c93e0f587551a6cedfe_1612696252715_0.6367807281236393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.44":{"name":"@balena/jellyfish-sync","version":"4.1.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e4b147b0a6db1a0113beb122f33e979ec68a6b08","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.44.tgz","fileCount":22,"integrity":"sha512-U9D8ZgPc7iR/N/IFi66yTlDnE27w1Pm22UqAfJwr+eCCFOsXdYR4rDcdPCSoHKQjioD2eUtG4kXGBzm6uQ6Olg==","signatures":[{"sig":"MEUCIHFbC8uuT+LjY1SB/6cFDAxMsoYJ5hhxhY1Uizf3xc4zAiEAkJQ5U2qv/uP4VxVX/RGd6agZfGZv4RQ2eQ1nJnlKPOs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH8tiCRA9TVsSAnZWagAAc4IQAJYuR+uDCvdy9Wua4X/F\n1hhjP5cErnb+5wBCDhVOeFfqx+bJNXQ9AMlUWmYAP0NxlCRYSQB5K+4+Tbvw\nxgy9n/cGlByuGGIgusN1uF+xXCTAX6i5qRLWjI+aM+AyEuYd0jBfmqYYgJW7\norqn9zQoBfGSoOKW5gZR9uAQHdITg/a3SvX4sPQ2RrLxEQxglDJmUNxlwMec\nMM+6UZoyjkS09XFbNnh35/CfByQfd/dCXl3cBas/gL6PtSuSGBZJWYJ/worW\nVogjAEbEe1lfiP+963/pTafO0GvZQ7q52wz3spdPcoMr8h+v34FLmXUo5Wu7\nyAsTemIql4fJBi9L0OPU3r4GPLrrq6B2G1IE7+2L1vjAuv+NW5AENxtGkl0c\nITx7QiS2FwZB1AcojHp3UNaIGrohi1r59Bhp7BFf8qUhicrlYMIDXbAcSffT\nCW53eexuQXia7+ZpXmWay9NjmIJbx2rxXZiRr1/4I1Wi4K2rjdbrbGpMcF76\nHDAd/aAuVUUUdDADFWZ9XCA7gazPnacD/dkViaih+nFxsp5HJTYIe0ltxkaf\nbGLcFqbWyGt2SHcN2Bz+bOE7vjpDLByNg/WHxd98bEQXFJc7GBy3z45vw0Ta\nGNSj4UX00dDsfsdbJrgJE9if9GAPoPaPEInvl8DQ4Hf/lCyRwmoDlMW+8Kcu\nJL0w\r\n=SuDU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"265f2135f536e3f7e2e2f6b0f40e228e2b7670c3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.7","@balena/jellyfish-metrics":"^0.1.65"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.44_1612696418361_0.4257406625919147","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.45-renovate-non-major-9d14d3a1ebd53d6c1741579856b8118f825f6123":{"name":"@balena/jellyfish-sync","version":"4.1.45-renovate-non-major-9d14d3a1ebd53d6c1741579856b8118f825f6123","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.45-renovate-non-major-9d14d3a1ebd53d6c1741579856b8118f825f6123","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2f0b36fac58be09230413fdc93a4ea74805d4154","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.45-renovate-non-major-9d14d3a1ebd53d6c1741579856b8118f825f6123.tgz","fileCount":22,"integrity":"sha512-/oPPraTq+qXnsLeNDF1Pz/nIXLCClMMH0ba/g9vsp1ZzvFSt1TQGMLb5wsyTDOFT7G7SvsOnV2i/2Z/nIbsIgQ==","signatures":[{"sig":"MEQCIGTaaS3ehhqKV1wzZpWOtp7hTsP6y9JHXY6Shk53F4JrAiAiv015O0BFRJjKB29bt5gbB0D2oiLLO+g5xDYkxMla8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH9vfCRA9TVsSAnZWagAA1GwP/0wk2FB786CQGDT49+oN\nIZbJVU3UNcNx2Rhk56Iz6VRoJqGgZtyYeyApXmFLuTpJL9JHQaPqYeiGoWtA\nGl7BnLMOS/M63KsL6vJ7nGlW/Sddk7ZGibO5BGRHtdbumNqzH8W/NtySbORw\n0qZumxkAnt5A/3OMlC0r2AODjeLa6jbBvYdeCENZ13ZLXGsIn0NPWQosvBHy\nTf84+GqxBoDiB7ONM27VoNz0BjsNgNNjANR0pG0HTVoEaMTGYjOSUIs1ingh\n17hWfsumg1qnrX1OAmu2XvDBMzuo+PORfFx3Q9IhLvXbZEPVTbxf8ixybHQm\nKhzQkl8hdilW+70m+0EpkfB4S9pMBgLkSlKVz2b3/uUogd55abRndyQjd8sw\n5v26T2f+DE6GcEhTM0adJgv2zPKaTLZ+qm+RmNhmM720hUTmEt86Imk9dxjc\nRsqxPW9HzbdqwX7Injl3npFpYuABvLX1uGiIUMUxJ94g2KyWepm92G4kTkV9\nCVEeqhlp3766iwqhbE6p7LeXhsjuD4lOPiuGGgTAjddc2QDW9xbbTOovLv8W\n0AnaAHvdfthqD623MutlfCfwFJ8c5HybCdDVNHSXZqPVHLglfrtB2juoKnmE\nlpayT+WthiCNR4GHz8Rl/HJHTO3dc9ziL5WXjC1zAtp5tvM8TdNs0a7HZDmX\n3lqx\r\n=x8I6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9d14d3a1ebd53d6c1741579856b8118f825f6123","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.8","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.45-renovate-non-major-9d14d3a1ebd53d6c1741579856b8118f825f6123_1612700638936_0.49746942207359024","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.45":{"name":"@balena/jellyfish-sync","version":"4.1.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dadfb72a0b5493f4591f88ebcfcb5281a7ccbab8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.45.tgz","fileCount":22,"integrity":"sha512-hFSx6j4bVq1pqB91NjBiCZxEzSjI8CxPJKRwNPQRiZvroLk5+n/sPhQklXX7h4kG5BzlVGrsjnEie+2nqko7lg==","signatures":[{"sig":"MEYCIQCYL1l9aoU2X/AuipN8DJFI9SnFb7oOxqfrN4cUqc8LogIhAMjMH2F/YiWZda/qYnwLpakScqyhSzUinmouWmOOe1LK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgH9yUCRA9TVsSAnZWagAADKwP/itvPiEi316CDwYc5Mis\nlqFl21rThXplgboB0OX5vsnMNqehgVL/Q/S7gFhMdrOvZQ5pY/dYhOI5Mmf3\nJUiI33o4yehcuSkdDUgSNGnqDwacAtRb8lILJmw8UBFy88T/hWDyFgOMqvQo\nitbrglpLOYSSfrBHtD7UVA8wPlrkznK/dMkU+1Isoyrhv6YFyPiox6fD1gJk\nLogLUuFakROEmojRMkVDl1ojb8I3n3cBUi9rF8FVWVZ9LAMjki1uXTQMdJJl\npvmAnatL4aQgCOi8dD78xVvw/HVHN7tDKF2yhdXHyhDzWJdgTschkF6Ouei8\n+21NZB1Kl9AIKeGnx/rPyiRqQ8DHbkxTk0h4WrVH/ihZdpOfL+LTr7OCbdKH\npufojvnIixuc1f5OA7WRWDP8cyVWUvg7WoxmjCx5AlUkeWVVrjia+uZAfr1H\nxBVJoslls0AYbnVML3AQ6SOngZhTktnWxnS0Y5v5/U5e15ZKKk9j/WV5cphN\nq0WJKM7Tj/4A6CxOifVOkh2OlfZ/owflXXhpHhEsNTOKeTQjV8jN7LUiXQdd\njp+eBuHC+15Gu1Zh6Ojwd3ybtllZtR9qUzJqCAGPT040+2mYGSw3o8i8D2L9\n9H6gSUOXp32kH+s1UCNgOZFSFmwLIS0skOa+/qOk+SEANWpm5Z6xYavkY+Wg\nxKqQ\r\n=V++p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f8fcd6694d2b197d109259080ea1ea3233403a5e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.8","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.45_1612700819619_0.6421426682151816","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.46-renovate-marked-2-x-1f1cb2d400fa215f75f12ded39a4e5496802feb3":{"name":"@balena/jellyfish-sync","version":"4.1.46-renovate-marked-2-x-1f1cb2d400fa215f75f12ded39a4e5496802feb3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.46-renovate-marked-2-x-1f1cb2d400fa215f75f12ded39a4e5496802feb3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"84f3240af9fe56b92de821061bdbb9d0826e385b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.46-renovate-marked-2-x-1f1cb2d400fa215f75f12ded39a4e5496802feb3.tgz","fileCount":22,"integrity":"sha512-rhsFRNjwoqgQ3Wj4FZ5APk/nE7ksiPfu5LWELcNOyiN1cpgTkAtXloPX5TBoEAs4cZLbK1/9PFyS4W//2D8AQg==","signatures":[{"sig":"MEUCIQDMMZcZlOFld7gdTjFvfYfknSzjDmwlqlW1g7aMRH4gvAIgNUd8DayAk6NB1TNylYqKi6rBu2tMTW+yrNOiRD1mA6M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123279,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIHLUCRA9TVsSAnZWagAAKBEQAIWPvve/LzcRQzaiCj4c\nasO6pK67E9KDHm88aQP9VM3POzh3BY3T6Ftbcx4/XEvegBk0kYbx7bv5J7Ts\n/WDh1T+TRDEPp+WtBqzfGO5Lz/LfA0D674puRYF4AOaX3JZMMA58oTZn+FP6\nyK9sKJXs5Ss2Xf51cLmgRUJe4T9/ehIyyr+3pq0sjFySzj4fj0D7QJfdOnmB\nAL8d9JqZ0i22oSFdRqpBO5VYfJxodgp2Rhx9dwTiTX4F5P7R4YJrtYjVWQUl\nTn0k3SR7P+blkUXGBj+FSSKlD8L1j3qK5XMoehTY5zRBb1sm+Y8WUKZ5BfeA\nmOcr/K/X+NSKhVAFOPw4CHP4DgJsRelwYarGrTIVJzVhr67S4uJifgE1U4H5\nU1V1DkYMCcetVRVBw0ESX0EJWCCl+qNCtHnnPFwP5qPsvdyOQh+z5hWVTOLF\nDVBd1gNgwn5QB7ynF9K3H/d6l459if6Irgm+ei+FS0+baNPanEQ/sMegKmX1\nr8f9WSCDIuF34sWx1cuprWWjGuZrEbGvFaZ52jOAjWNa7eNYXDcDTxhO2d6V\nuLROtS/gGZIQMRBMSUTVKXZvfjrPes6XNsxIWET4+Uo3aW6d+aD5iAdsLH3D\nQ6Nt7iY8Sl3QU61q0FEHK39847ebH5vm4e3rtSd8UOTJkk53UcGHciRhMzih\nY0RE\r\n=H7As\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1f1cb2d400fa215f75f12ded39a4e5496802feb3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^2.0.0","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.8","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.8","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.46-renovate-marked-2-x-1f1cb2d400fa215f75f12ded39a4e5496802feb3_1612739283706_0.8865676946362322","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.46-renovate-non-major-0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0":{"name":"@balena/jellyfish-sync","version":"4.1.46-renovate-non-major-0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.46-renovate-non-major-0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1179c817b3046247e01af61130c646fda69fd4b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.46-renovate-non-major-0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0.tgz","fileCount":22,"integrity":"sha512-mKJYhiCay7MYF+inL4ArPdWStOwNSJnVZvX+5krDH5sx/LJajddq9lkeRFYSaJG1jk56YuxxZ2iSulY50AlTYQ==","signatures":[{"sig":"MEUCIQC/Tabnw0yXrB+Ssl3p94WulGFrWVh1b6fSMSoV7VJ00QIgZIa+rGfGhOEWaHhpt8tBGQmi3XkDduRspFIVho7Giug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIYWlCRA9TVsSAnZWagAA66cP/0bHAOq0XgvkKs2K/UdZ\nwT6NbebWYRibntErl1FayNUnP7zNW46sxVCRGx3nsiWliljRnESSydMoXqNN\na3iCtpzEyUwQ5knj4WzuNKYqmAEyIILrZ0Kp8xllttYtF/ZMnrWLwQZEP998\nokbqq+ypdPvfkmrGMlmAq0RaQtNjngA+YTlrODSWh1W6VFNVNeiTEk8fmgyX\ngthBV84WK34fCHLTaD5TDFr/a2Nn4rvIpN5pjTYlRYtAYezhQoDq90dcbB6j\nckVR7v0yREV3nK2oHIVyHBo1Pyo5Ey8r5iGRzP//PAVv2JF0Qy5brmG15cSh\noEivWELR1NGQtgPWC4Rl8zDjqWRIKeGwkLT3DnX9Yo3JYMxQ/++YRPO8M5FE\neEOwRbfkIuNDQgh9F73Dtr3JadNJiQEUoro9nkqFyisHW/uVE6OnGK5WWeRk\nXH29a+aGjLEVzFBediNCdyfvF7Ba+1N3JaRVJ1ugvD68OvTNPCqtWfWF9x8h\nMXc66DEBJ/cDrPI8fE/nUmM/C05IlitcQQWcrrKlGtvwR2j8LVbFOOa1gqZG\na6RvKOP7/K+Je8Wx8dhPGXrjQKrv1vNOWXiK+b4YPFAAuZ0TARPxk5ERv3kA\nSuFqS+HwiiIakPn6E450iNHBmuzF1m84LBr50cSI0EmhaZIV2+qVEt3mcsMc\nRnXF\r\n=bWAA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.8","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.46-renovate-non-major-0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0_1612809636669_0.9369732389561378","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.46":{"name":"@balena/jellyfish-sync","version":"4.1.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.46","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53b858181f190e1ef84f444f3e20d1b29bae0be4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.46.tgz","fileCount":22,"integrity":"sha512-4Xd0joBajcEpA5vs/+TFFhnQb/PFZ6QIQAtuXVLpvLXjZZFw0uO4+idI0dAvx7apFESjJGQCb7z8qtyjPhBMvQ==","signatures":[{"sig":"MEUCIBzNN2CPqzU1Gw+sgTPro6hh3l7NEgZVjf1A5zSABMdhAiEAiSVfkx5W+7B8cnX7ddNw65GeBsVn5lIUgxQMZU3uiyc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123221,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIYZzCRA9TVsSAnZWagAA6EQP/Avs5ek3i8IzsawxgMdo\n87FpTLB00Yh5mUV71A3HN/QAAqYErR5jnTFUyeMnWwYCB7e7Gsk9wnO2Z/wS\nEKeHniQ7T3rKd19iOyMmLQ2xIPAJT1skkyHAdBdW1YShLH4n+jQgl8IaLYIU\nMMhfY2ddsCGCskca3UioiMRB5ekELGwA40p1L1KYKvYeEpNlRGkaZIBfg2Y6\n0evrB3NKoHANAjyMf5HiTvyXM/+cT+qvSKqAfDLeAmlbYbjDc6w8gglxQB0j\nBdnlgqqb25t5cTuhjOrtkClwNqyI9/VMwS8L+qBw1BsS8+XuZS8Jk3q+ton9\nhygeqPwUtKRmmo67kY+xE/mVF/jwx7PjfMVC5NM3sHPpC30Jl0voW9/U+SYt\nOnpAji3vfRU2hUL9kaulPqLDARAaEoUYq44LhWlzUMhePHGNBoqdU1aXlYgK\nE0+QZEHOkOQP6rMEfhOEDUBmbPNFLRILM2i7G/KfKGVf7Cqjc/Fgdz+oekFN\n0eLvr7jAQXIlrGSOWqxHJyStpcNrQx/iCwwd40r4nvphQw6lGc+Ncgng4D1p\ncj67wh6cf/1IyFYVbxS1h1gKoB2d5/H7TKb4zCYXebs9KJh77nKzPghfkGks\nrnEwOhrYRa+r7JAOy0tamcjU8QYGy1tmn5ua8QcUede4isNLJJA9PQJSQ0zl\no7ih\r\n=Ab8n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c33646ea09d987d058a905a6a1e60fe0ca9c80f3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.8","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.46_1612809842740_0.6496449728223674","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.47-renovate-marked-2-x-d5731085edd9aa489a29b7b24f921c6f65a8354f":{"name":"@balena/jellyfish-sync","version":"4.1.47-renovate-marked-2-x-d5731085edd9aa489a29b7b24f921c6f65a8354f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.47-renovate-marked-2-x-d5731085edd9aa489a29b7b24f921c6f65a8354f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ddc161035ae9f2fa644e0ccb63427187cb3e3ba8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.47-renovate-marked-2-x-d5731085edd9aa489a29b7b24f921c6f65a8354f.tgz","fileCount":22,"integrity":"sha512-3DWaWIJyz+uU2zZ5iDKUljDakjWzRmYU5swxYMTJl5nXqAOvl3G8pJc2WhlUC0qHtzgEa2iKRNki82bhgdr+qQ==","signatures":[{"sig":"MEUCIBZtS7TosbNSjudCrkX+pWE+727t8Xh9ihkkClMJkml0AiEAjFCaqW7azGEFuv9ChljzaeOeD0RY+8WwLFIWHYcBUHQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIYcKCRA9TVsSAnZWagAAum4P/ivcsP72w9pPWIBYdwLR\n5Upso1mqU6WtvZJJoLPC5in/u2Sg74hrv/gDxT6kztUlHUWDY4VcV/BTt7cm\n7SjW1PLkUurDwPbmXG/PUAkwf2wiVkz9K5C0IXTNpDDoLALuIte7LAZD7HiP\nA46MXPMA7XF0FadzO2pi7Oy500+hO+mdQfLweJtYkcVjLRTCqMzcFmhNm68K\nIAXaWIbbzsvXxkTPLRL8IVXyEAcIwyKPBnJ5011uv1Cz6pXb/iBq2RzkZXLz\nqGjYhDSym/07t0EoUPqfZofDe+J//XzpBRpNpFw/sLUgywXc7YSCiiffBmPS\nVn+r/+JC4MfLOL2aY4IZyFwTWza2CnnM4wi9ALU4IN6GCJN/Fy/rtOXtMXT1\npBlkDD95ftAWA8+1Spf5cOi/V3QstOFCRL9UwGU6LiuJAfc7aW2ExN8VAX7c\nFEDEqIL1ptqDXahEcdd1/go60t9OZ2EkHWjXxD5n5hGqbquykpcRQpun5xri\nGHXk0UC8TJ7hkqAOWkM6z7ysRnNaTgxst0TQRJDF0mmt648kkiy4Kn8HDvjS\ncUy77pnSZViwotPAvLAj4xxdez8nsvDLAvzCpFeVbD1rYjjz2kX5wFqK+xil\nBtkDksEQWm1AHs73Oh1HHsjiI1RYW8gLP+ALBB1zanHBtRNe0Pfd+LSlDxKS\nxr9h\r\n=WIMq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d5731085edd9aa489a29b7b24f921c6f65a8354f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^2.0.0","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.8","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.47-renovate-marked-2-x-d5731085edd9aa489a29b7b24f921c6f65a8354f_1612809993960_0.7276162921585028","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.47-renovate-non-major-a0b665b866ee88a590eaf3da8db1f9df3c5aa281":{"name":"@balena/jellyfish-sync","version":"4.1.47-renovate-non-major-a0b665b866ee88a590eaf3da8db1f9df3c5aa281","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.47-renovate-non-major-a0b665b866ee88a590eaf3da8db1f9df3c5aa281","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3cef9d6430268025fbb43507864d27bea88c9e74","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.47-renovate-non-major-a0b665b866ee88a590eaf3da8db1f9df3c5aa281.tgz","fileCount":22,"integrity":"sha512-CQAQSlqtTXDyRG7MwjntLsk/0qqsLs/Hvy4ty8OKVyW9TqT1pzFVr8jt2sHuEFffSFjbL1V9Oen7fBlyy3RWmQ==","signatures":[{"sig":"MEQCIAWmDbmoHmmVMk4Em0z6RpvdB2jLYdpyyT8UnCF9/Ka9AiAPFv/jr6ur1pbLGlw4TGwRp+n9+IMtrjsiTOGOd3xfjg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIZmGCRA9TVsSAnZWagAAzTEP/jXPEOVhw7eHad1W+BR5\nIgN4NMecXE6va+TAF+1O5xYogh8/CAfkUTxqkbZR7VbXfU/Gy77VaFVfWVG6\nZKtm58tGtpko9Lwo3VaSfW88VdPcilv701UFgxpsi9B+FhNpQ+RIDVFfCvMp\nxEOfpMMf/2RhjIb1FcLC+N4p8lHYHIEFR7GTyqQSoWERubylOYlivPF2aZ4W\nn7CTDfVz+HH08PL33bz+0nhClGtMi8V0cibPcV7KkgcaRYPEC3mRVC21Sl7b\nY5r3YrtJbLlVyB95hmgVxfrMvebwYq0N/mYE+vdXPux5wVvUJI4xOaiNqmFb\n+ajx7niQ0rh2XMJGwQC+OKrKwb/rAlNEKMUn/tPXfvQdPoMbftYE7O0HYdN0\nxNj3wtrEGzN5YEGwm8Vj2wMXMCkr0wl0seK+1l+EXgULVG0Rb/+0jOAYiDcG\namLuhx1krpF8cTAJBuGByIZm2s2rY0fvsAhS2mGmiuoPFUKxogtNJ2W+zN7/\nDf+CdM5+6Q31ij08gGGC6jVvocriOsPn1iyuGVAXkTGwDXyZduXFyyo6nw0k\nxYoBBVo7FLVfVmWF0vRK4xkUfUgId9E6RjBXvQX94l3yyvkYQmm58zQpI+SN\nj7kJzR5IQ1G2hW8zMHDLQh4+asKsXNgbmxD5cAowMc5D1XLoQyshVflsyd8z\neQZP\r\n=2TVZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a0b665b866ee88a590eaf3da8db1f9df3c5aa281","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.9","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.47-renovate-non-major-a0b665b866ee88a590eaf3da8db1f9df3c5aa281_1612814726221_0.7388476745621406","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.47":{"name":"@balena/jellyfish-sync","version":"4.1.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"376df2d2003c73b31caa46559d7d31bdd1420d81","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.47.tgz","fileCount":22,"integrity":"sha512-rPTFuj9JvG5kqgq4hqVtVOd1ClKFo+rNpaFbmkftCtgCl7GSD61nXXA440L5WVBoAW+F9SPIJJ1gy7jL/weUDg==","signatures":[{"sig":"MEQCIHmGlcuH3OyNIF9kml2WlOM1BN497ddouZ4fweqZwcw+AiBxZyQSF8hUoBb63mBK/EF6+Onz0OkFC3cMvd3u2bVmKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123326,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIaeKCRA9TVsSAnZWagAAStUP+QG58NfmP2skMKqjGJJK\nuWAlWMimoCVr//niBi8i8mBbw3ozEjGcqKDsMdtw/xAj7dkE9T7PzxyBVzbE\nPDloPK8OlzGL/JbGbSyFXP5PUgpaQZ9fcfToQg61VCfLPBVnCdZf277gGcDX\nMm6ZuoOT+CxFjEPnlRKGCKWxoMrROajj+P+8xVtSiMAvRwhzKCVBlXAKEwFp\nn84imTiBps2ABVhbZrsvIiMwC7Tra++oboEX7D0cLXpLkyONN/aBmx3Zfmq8\nLMT2dSCyEE9P/oLq3pRZ1vBN4zylcn/kJmrkADipoyI7xG1mChbtMHa8zIN1\nD64NIpiLe+rObMnMPfQu8hvg6cd3dLCjrEs+85M9PB47C1zR0EJFQftg01Bg\n1tr6zTiLTQMjR3YpT4EAX6WG8mO9t9f/v+JOQmqOx0/lJis5A/s7ptzC+84m\n32K1JccLhOoBevNs7RSTbZmO/qvOC7ybPfYrs/Ek4Llkgzsngd+YCIg6rDQb\n91/ouYNAG+i0VpZt48jSyXb5WSb+iLHj4INHK5o0E4+erCupBKN71o4hu3jV\nQkiUSW3luSEaQCfeJv3IvnIYKUcaJURnojQMdxfUZkghOyY0HxM4vaOYdzSo\nIO4jXlKyvmKwitL2sOXLtr7CwDAm4GbFrvZpJBh4KHcaR2OSbLqKYcuHm0mW\nlrts\r\n=kS/Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cdf9c09e297a4dc31ad0d3d2b448236acf25828d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.9","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.47_1612818314167_0.7553926792787293","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.48-renovate-marked-2-x-cb3df193de51a8a1e68f734e788d45ccec62b812":{"name":"@balena/jellyfish-sync","version":"4.1.48-renovate-marked-2-x-cb3df193de51a8a1e68f734e788d45ccec62b812","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.48-renovate-marked-2-x-cb3df193de51a8a1e68f734e788d45ccec62b812","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f47d98df692d838d9a6ae5c23707d6e9bf37c990","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.48-renovate-marked-2-x-cb3df193de51a8a1e68f734e788d45ccec62b812.tgz","fileCount":22,"integrity":"sha512-7ROEf1aA8lPEdQpK8sbm5oA4yGXGL1FO1nFIJgEgLAZaZ+BkL/KxAkSOBdr0pI2EX8vPiQpuH29EMGgidW0HIw==","signatures":[{"sig":"MEUCIGAh0u4VbwMDUKJ5OcMazCwH2VL3ldBDBy00zcSygfv2AiEAsMF6WFdm+qCxeGJNpjDw0pI5qLfKZuHEN6iEvdL0evU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIagvCRA9TVsSAnZWagAAU4kP/1vC/+cg7NH6BDAHRMDD\n1qYf+99x+Uat3FdiPPy80voiqAX0FEBw1TKaWT5p5DY/Q7sxR9bwJJMAL1OI\nI5+zoxIBDo85j9/PwHaiJXM3UupnGN7FfIwc/soMKiaCsw7HcWxuOhUo1OWG\ntHj0fTzWqrX88l768lPWcdV8I9OuHmHKzLDbxVRj8MNxR8hHuISEB8O2xO9e\nZF2p5+phkLkCxOXKGRVvZHG5VUlLzoIVW3f+2+CszkDvVeaWGW+GeqWsHTsK\n6NYHHNfl6uoWnKT8BqKz5ZWEAETl+W7xwsfRJLKtLlGZg81HmDgpK0g89N+8\nOFjcCEQ5J8adrnSczWzWXIjpcDQcDevnIk3NAPoatqyadg67T59utjNq7aZJ\nQmzUJif7uEPnZmPm4fzDwTpIpUjVuvdt74TbxPEGFAyGu3O9n+McxlJ9CSz/\nGiHh5rAs06cwNYWyLXOtCNOXvXxXk1O2imuZC7hwAtEFeOktaw2PLW22gUl7\nff5m7EaFHY0Ciwp5ExRfXBSTXfzsg/ADTB1P7t0WHNV+vArf5dmRd9p3xumQ\n1ZytCBQHs7EnEkgMHG8B+3F1DmY54NOiVjl14pk3/SULVV5snySDERgLDtcQ\nO90X23bedbN0M5BN00pEhPrfkPr2HuGH34IJhJUbKz1pXzN7FWcdqieEQ+Oj\ni7Ga\r\n=2ePv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cb3df193de51a8a1e68f734e788d45ccec62b812","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^2.0.0","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.9","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.48-renovate-marked-2-x-cb3df193de51a8a1e68f734e788d45ccec62b812_1612818479458_0.9292701408476025","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.48-renovate-npm-marked-vulnerability-b1aeb25b7da3a5d394aed961a973afefac546dbc":{"name":"@balena/jellyfish-sync","version":"4.1.48-renovate-npm-marked-vulnerability-b1aeb25b7da3a5d394aed961a973afefac546dbc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.48-renovate-npm-marked-vulnerability-b1aeb25b7da3a5d394aed961a973afefac546dbc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f53c70765e6a3307e8e09c1d4d9b3ef7fc32f329","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.48-renovate-npm-marked-vulnerability-b1aeb25b7da3a5d394aed961a973afefac546dbc.tgz","fileCount":22,"integrity":"sha512-xGFuwP/pEIhqDDfC78Dyj5SUIMesOoL3L1ehlZinIrEZQtyptXkSYl1Fyn040B/9Gjcq1oQi2q048TXHugbziw==","signatures":[{"sig":"MEUCIGBgBSTnuLEqlYvMWCPp95xK4Z/h38214yOvKH51SgiaAiEAmc0wIlAHwx5oM5lY40319kgCuIlalf089eo2LeRa0Zk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIb7bCRA9TVsSAnZWagAAibMP/1EFcP4HA12PriHT8jwr\nWv4fPPlDDe14YaVt4XoRE4zlMBJ8dhiZTe0DHudZIxJtd6bB/3Y+ULNq+2HG\n4QXQLQZGxH+AOemHY+V0mTt+/Xp767aXzZrMUmOvXWal25sEla7R1aZ5Fx/g\nlHCeyzQsgwiadgZ+3p6BvlgvxsKS7leW4qwVZdC90T4hRmKVWyqH/+Bs8QU0\nXYrVSyjF7vUgakXi519ZhNwbltWzygkgWoJYN3/2r/0MFsRmq7eWYj5uuDeS\nBS4mfDkurifS2SC4788DmZ5hBp9ZJso9/X/Y+kQra4SfhcbJKvrM+RmoQ2gO\nJ+AXVQ6wMwSQjYAR9g753PLp63pDXUOYlf7NbnzniJHSj15wVuExZ45V8hP5\ntAFvWCcP6Lvr6qzGyCwxjtXYLoVsD1lFSR3/W5g+ehE6CxESuOUBUOT8Ze4D\nVI3iFKdH7jRLcO/EHfWsqaX7zVMu4gsmt2xJWiQFwEsATskpgNKrll7BuLIo\n8r+ix5CG6nQD4aEiiqnOgG9ivHn4QYBhDT7F5vfa+s6tQ+q2N2tczgXkqqYi\naKcOLISTl9C9P8faTl1zOqqtIB9n0Uq4uefW6EgWCn4ZkcN/37rq9T5pzhGf\nHiETRdt7+vr6g7Eo4QP4EvVPTJr/w++v+jyaMnybNf40EjWGxcqmhyr/M9zB\nooAO\r\n=f24f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b1aeb25b7da3a5d394aed961a973afefac546dbc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^2.0.0","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.56","@balena/jellyfish-logger":"1.0.9","@balena/jellyfish-metrics":"^0.1.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.48-renovate-npm-marked-vulnerability-b1aeb25b7da3a5d394aed961a973afefac546dbc_1612824283269_0.6135113320595911","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.48-renovate-non-major-0dbce9865d11c7d48bd6cf6067dcb709d8651016":{"name":"@balena/jellyfish-sync","version":"4.1.48-renovate-non-major-0dbce9865d11c7d48bd6cf6067dcb709d8651016","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.48-renovate-non-major-0dbce9865d11c7d48bd6cf6067dcb709d8651016","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a43cafc4ee460547b00a3c1521afb527683411d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.48-renovate-non-major-0dbce9865d11c7d48bd6cf6067dcb709d8651016.tgz","fileCount":22,"integrity":"sha512-xtaQRbv1grN2e/KIAzsiSRG+lBJHlGNX0ZOo4c4BkDh6zTSCsIbsWzFGOZgHaXXVj6HvQKvIA4y2CJ0fjrDtEQ==","signatures":[{"sig":"MEQCIBwBzL7nQXI4zyv5KjKkfzjMZJVSHerl32KfdgWcw/8WAiBIX5PmgxBjMsHqMlyYCxyBlgoxutXL7RJAeJgvWJLgcA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIeEdCRA9TVsSAnZWagAAQW4QAIuEHBQYXqt3V1R+ej5e\naHC2votUQvfxK34wH/0NL7ZMZ2L5BSZuQBB9eq91UAWi7YYkDYSLFkNIopKo\nQTLpsWiaCaEuI+n6EmFsFkOEPDdCsV58+E/ArZ92hwBxKJHYLSsnFHLlid9i\n/ZJSsgGhqBEqLrfVhz9y/iHX2T1xZTnhUMgk3sLX+7xvWoV43li+9vd80P1z\n9HWphMn4C94pDlNBpTThCCB7o2iNwyt3oQT5rb8KWYrWxC02DcaTp5Oi72i2\nipXYacRvBG2vasnFhtYHYX8tLwBI3txYYVT5WNloIi+76HOXG9noGOO8qpUf\naZgRhh9EpYooaRjLcRulhy/gCBc6Ax0WvMRcy8ZfW8vSfDofBXQNWIX2TTPx\neIZttPKme+JkSJuBI+3BmhW5tHHxUcuWWJ/5hZQjVe/EAKtfjyxZ4I6vcdri\nbrIxBszs4dK9VVvsudzbSTDdKAu2yuwVFe2XFf79tQNK5bzA4hzLEhCjOeWw\nnvzNZlAFvesghxXGjJHT1xMSHOYSLNLyK3+HhzWMSY/gmCy8NRcDGgUoas0m\n4rbbOOQMhVHxM9PGV5/WEpAVRMLgnILrR9HtD3jJyIh2PuheL/SjgqJS6eAU\nL7fB1dYKIOJwLzkVMKX3hymPFPRD8QjIW5ZEG83Hg0dK5l0nyiOXBDFqrr2q\nMhil\r\n=vmhf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0dbce9865d11c7d48bd6cf6067dcb709d8651016","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.10","@balena/jellyfish-metrics":"^0.1.68"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.48-renovate-non-major-0dbce9865d11c7d48bd6cf6067dcb709d8651016_1612833052861_0.4550313855739019","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.48":{"name":"@balena/jellyfish-sync","version":"4.1.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72314b7631d3b033c073f944186f9587f489e287","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.48.tgz","fileCount":22,"integrity":"sha512-Gv1W/iNsLs2uF7C2QTm+P3amv5zHcYp+4+mJ8OMK+LaljA1lwRev2DSxxjub9OopHKMGpdNpmiflPQR+LUDcuw==","signatures":[{"sig":"MEYCIQCBJRGhF7rHq5ZYSvtRrJBgQl8t/sbmiYuLoLOfsViMMQIhALzd8NUuWqygE9q1dqgxsTEtROazU3wYWtzT2sqqS0rX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIeHaCRA9TVsSAnZWagAAASUQAJzCcGp3JFGljLhllLc5\nE8i9wCLKJbLTr2LPEwcj8lJt3Y6zuQmKDSrVv7XXeFuv2QKjkkKyGM7N8Dtq\nm2NKUtVvFg0tYmPXO0eFo8Mu3X+6wospsqVwR241gL9PsXjdG9+csD71BC1c\nb3JhxXLdU0anCduTD4gysj8TCQKh0A7i/rCAKasZBmGL/6LJeVb5Ho69EOAH\nx3HBecebGQgGuq4seKJ5IlSqvshIdEQ2woLD3y0W+V2o7a3tmAw1endrkoFS\nCzeO9b0Yfnl7F31pRrJyFfdXr5yy43S/E8VvG2gfIv0pcooRsBtlDwa33jHU\nglDdULijGxTevxz8oZpB19ljgXXU4j8i6pk8qU4OxXUoGevMjZNGjRvBRk89\ns1NnIEHDR9rbM2tc3VA+M6hn2dxv1qUM/0xmTcmamymiFCdiv0I3FMGtDb5W\n/sfCxTNP+s+sLE0xUQ36SwMVjn7x7dCmxhJs8FsQnKZjBO2d8LPllmQRQwP5\n5xyDuuysYTRpg/Ta2mpyxjnPWRAcFxk6X9bdEopnmbpX9gFZTl3ZoDShA9Nd\n7n2GMmz2Fl8CzBP5CpilyEtLTWFDma3VURxCL4tV7B7G2UtkdStiKLS2nSFe\nKmPSe4wAD0hgMH8FpJp+xqeMmq83MIgJn0iUL3kVaNGiKRBsgDAWkh8Xfrts\nTEor\r\n=vorS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d6c31080c8dbbf07168f427db35c34e845d4b1e0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.10","@balena/jellyfish-metrics":"^0.1.68"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.48_1612833241824_0.35071057368234504","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.49-renovate-npm-marked-vulnerability-7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9":{"name":"@balena/jellyfish-sync","version":"4.1.49-renovate-npm-marked-vulnerability-7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.49-renovate-npm-marked-vulnerability-7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61b9ee87fdb8ce1fbe42a11b743eb8e5fe6913db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.49-renovate-npm-marked-vulnerability-7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9.tgz","fileCount":22,"integrity":"sha512-DhWx9GK3vHyUxQiq2IfOT+jWVeja/tgzEgsvxccbvnQ5EKzw5wkva/avqKQEMn/ggE8b7IoMMgZPqzpQyDey9Q==","signatures":[{"sig":"MEUCIE99ReC8yqKZvXTVMmcAJar5DcvKTtpDk4ugxlYmNMtBAiEA6FlDrJyA82vPXM8msKqUAxMOqHiJoTtT6tGUFku5Iu0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIeKfCRA9TVsSAnZWagAAAYYQAJqYCQezBUnht6oCTywJ\npfwjGoBVdb2gz4KzJxraF50CUKwxISuDdhKXbpOk+/yEQdlZk8qQlf4fEPX9\nEn1P7IZR/gzVVB6g37xtn84hFbuEmmpFxdqCgpmIarL4sFUTPBy25QUXc/KS\nwrt05XJ14vwAKeDa33H5gq0uhaRU7KdQZDOSUH6go8VwyB5NIfVoFeQrOUre\ny8xiXIdrdBPGi+B2hE/Amesl22bg7JuSusNoxPuKgPc2Y1m31vFYinu9cin2\n8A47RrcroWGaqd8HWDs+qrlkd/XxcBET5AuCkkzUT87ljK8quGX6PkxSR4GS\n0U4rJXt8v9tzIyB++atuA4g/XtbNuZINpgBghCB7CkG/LoHBDI30kS1Ag6/G\niA8Xf0/6nfMu/munUK0++fMC7XKN7uELlgY6FLrtiKJlBptJFtSmqk7vStnk\n9Y8inV+xbF+VhMyFft6OO0UyUwnMPwjP5JiTLvJK0W+lkiv1H/cLa7QdatmZ\nkIjpvQcotLX0zOk0pBcm5+iUKh1Jw0/9uOTzhpIz2L39a9h9ipQYyfnds9Bv\nO3h94fs3TrD2eKzd9QhQqYNJB5VdppVw+hW1Gpg51BJaYTdHKr2fIzNMZlD2\noB9y9TmcQe2ASNXkm3QbWz/xsAQNxD5osNsy7mvkzWe0GIJzLUWKCS8beVRN\nx5ep\r\n=AJi2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^2.0.0","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.10","@balena/jellyfish-metrics":"^0.1.68"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.49-renovate-npm-marked-vulnerability-7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9_1612833438525_0.16401028144507834","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.49-renovate-non-major-35fbe1646ec968b8e9a947f0f75e0954305f17b9":{"name":"@balena/jellyfish-sync","version":"4.1.49-renovate-non-major-35fbe1646ec968b8e9a947f0f75e0954305f17b9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.49-renovate-non-major-35fbe1646ec968b8e9a947f0f75e0954305f17b9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ecb32f03653ff8f1d0bf28c61b8ac57c55430eb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.49-renovate-non-major-35fbe1646ec968b8e9a947f0f75e0954305f17b9.tgz","fileCount":22,"integrity":"sha512-uMbYz5YBAsjTH2bomMhuVeoVi77E6OQ+BHUzSFDvrHCCOkkhjeg3JxUg3AykcnXqZVNKQS0Mmb1fIOxLSSIwsg==","signatures":[{"sig":"MEUCIQCDF2SN2ttLchFKuxaVVBE4kABNHyrYPsX5y7jlxSFesgIgEo5Gc8BGwNC8i1kSgOYorwlTkCNxl/wJzkLVVLwkSO0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIfQ1CRA9TVsSAnZWagAAULwP/iCzwaGS+pOBoUvF9isc\nk3CW7FcmKTnu/5f9l0TF+cLJtV80+ks6EipGAJcvfATPQVcLKFKxqRKA09+n\nRRZEq7C2NdlWPa+Kx8Hg17q1A9s/LcKHGvBhAQ6pJuTHdGjMgydFwvjSyeRw\nMxcVSqvNHzEf6PGTxJ1XrnlXzWqC3lvO80EeU0f+AQs4Ll+pHmNdNF/UbQOO\nEsXzIEY4MN68nWIkMXWvc5/8cCLkDw7XD5VVxUMIsraQX4fAqq6pN56HI8YG\nSMhhWt2MIAz7jZV6MW9/ECyv+dvNWIL5R3fCU1KsuwtB6CymtG5w9vRtzlyA\nlsR4a7G1XZ7CEGIjO8I580EHKBkrNZZWqqYAxAUhzn6KhfHzs06gaJVp7xwO\nS0eOffYAfuVn62aJCl3qZPwfXKcDM8n1m1XHnXBq3fU0w6cA7fTEna1NjCap\ngiFEeCl5vci/IbH0jwHj53Kft9ko+/aKlqJBWdg2GUrOsRZpLTMbUUCpojb6\nxKY3WF8c9T8EawJx7IXcSpOfBfxApMzXgqwjuQtHyXzqQfSKKiyNu2lj8xkJ\nw0pMe0fe1kWAbNZUae3cPU7SPTQXcH20fup8XNr/BuOVkdJIcTOmPNKdwLRu\nf3ar3SR4tP8gkuGk1JWqur2Y4GaL4y0egY4gExC0n73ZKriozWXHBLIHkCiy\nCjfW\r\n=AnUQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"35fbe1646ec968b8e9a947f0f75e0954305f17b9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.49-renovate-non-major-35fbe1646ec968b8e9a947f0f75e0954305f17b9_1612837940641_0.3291739112472185","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.49":{"name":"@balena/jellyfish-sync","version":"4.1.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a4702ef84f483a02ad42b5cab526f1721faab88c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.49.tgz","fileCount":22,"integrity":"sha512-65aNteRJCFOszSvuYfBs/qTniJE5Ga/3+cY5wVeRmuQAESsrPBlqO47UNBH0xh6gRRdfBT0zSeMHjwj8lNPO2Q==","signatures":[{"sig":"MEUCIFdFbriPdqonPqCIuYlQgEpMBcoINnsvZFXiW7PfwBezAiEAhGVIHzz5ifNfu+n7MO2wpu2/x+rsXv5yGLeKACdHUvo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123465,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIfUfCRA9TVsSAnZWagAAeO8P/3UwHSusO5hFo06xMBdR\nYI2n/CEXgh1PnjWG3npU6sFA/GDLLY6QYk6qZKo9cYwRjwD29RSke1NWKd3i\nin0cvia34fLPMx2GboNDhYNfNjrAUlKaloRzDgMnbmrE9YKzQ9n79CYkt9Ab\nhZwaLi7gUXreG4fAnxCrK9FRFyfECyBfU1/JdzSenndIuV3yVIG/3pFwk00L\n6vjI+7jWrL5JYAZT63mARg2Ls3RVdbeRa/2GHF2zF1dvkhvAbuJliiQjnoHU\nQBI0IxgNuF+T5aCsdJOzWDtoMKalBMJEzbCmWcAAfbfhFi/33Qt9CKG8A2Jr\np73DBcAwrdXLti4xHAttViFCf4K2dFwpotmNad1Yp3JYlPYhNaeiKfE7/zsy\nhdmcGCEkxZLAzhuxwMATZaao/zUQw3rmtexVXZMOgnTiTGP/EUQPoazUbZ0u\nQwXy47dZITLvwRTV/0bRdzG4cH2cmSuKXhuuSJJDpo9nR+Ke1cMRh+4rJD1O\n8MHxEfaBsXIAT7GyItYV1U2n9OMv7TWMLcKKBlPDdInrFtY0D0+F5Wd/m2eO\nWOItk96qdANEHn734/R9jA4BFIQL+pU4S/D2CZqBQ1CZNR2V4PyoLum5BR5r\nSYOgUsdhqehu0utVKtN3obh7vtyXhzdY0PWPomv5P0hOfIqVEREW9WZUBN9Q\nJ3Un\r\n=//5r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f0c784178c15bb7ed1cbd97d0c1e22a784fcc608","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^1.2.9","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.49_1612838175141_0.5354448423535447","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.50-renovate-npm-marked-vulnerability-3424ab8d849f2f96a56787835cc8d380b5505ddb":{"name":"@balena/jellyfish-sync","version":"4.1.50-renovate-npm-marked-vulnerability-3424ab8d849f2f96a56787835cc8d380b5505ddb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.50-renovate-npm-marked-vulnerability-3424ab8d849f2f96a56787835cc8d380b5505ddb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a4e757c21453d8abc2f9ed07a92dc7e8a5bbd625","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.50-renovate-npm-marked-vulnerability-3424ab8d849f2f96a56787835cc8d380b5505ddb.tgz","fileCount":22,"integrity":"sha512-azlQNnD5e0bnHM9lhLzLzhuqK8aoD+9xgnsoZ1LFFI+BX7l770hZTGvFCezoL2l3PbUlUaVWMwcOkRzkOEFxmw==","signatures":[{"sig":"MEQCIBVxmPMjgde/sm5kERDPt6M19vKUhZ4CPkwglmW1fQmxAiBfJBbBJTUax6pTFImdlGCMbjGNI22sl+BC8f3otzYTtw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgIfXCCRA9TVsSAnZWagAAuUkP/3H7ae3YE7hjbOgcBd7+\ngxYsJUwNdnQKHRe8YOvvUv01q9EBm1mDoCXwC635eQKhmkBL8HzddlofgbUA\n+tJT2Dhlgm6x+c1W3lGHjW+20dMfKRNfZgVuXBk7YIxhEt6N2Z0JH88Lz8mN\nzGPCcKIXbaaPShkxOJV2LP21t2Qgl8/BymXD+LApsBEKtALSY0o648YqZLTK\npnBojVaO7P58sfRsmyX5MXFzbTACiT0glm+zoCmMfuO0QDUcZcHLC7wuOl9h\nqTMnVdOPEEsJzXdWlWQD/G1/BAtCV28+EAGeEcYAQ1CqMIPrwBMZOJ+yt3hB\nyJFRB/r419S3LJoPSyWKwPACbfYZCBvHnLk6MeN0sqEUb+gTl3A/cYHcbbAX\ndghahPDkcr0ApEZsIjfDIWJd1/CccdFlfh1+jrnXEyoh+ZnTjYLf7d5tH7hK\nYFLjSIScPH6RvAH+HsBDZYgf9QsneyL2vOcz3wy8LoW5Q81gO1AZC4bfvViH\n6pVddj+ckN8eS1sdhIAeYeZEUlJSy4NDfJpCOpyVjuIXtAY4MSwoLMzUmZxM\nV6PI2OIbTBr8WbeC+MZfYElZuHC1uvYRCD6dqzTH0vX27zBMr1sDZsosE0W6\n/415Ik0rK4dFpAJaWiU0UZaDJhwVquAtjnA7Kww/8yFFf88ivAAsDybZt1Pm\nC+V9\r\n=YVg5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3424ab8d849f2f96a56787835cc8d380b5505ddb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","marked":"^2.0.0","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.50-renovate-npm-marked-vulnerability-3424ab8d849f2f96a56787835cc8d380b5505ddb_1612838337980_0.4593715093730768","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.50-drop-marked-dependency-35ff092ac7529aa198277abdde75c32ff0c40398":{"name":"@balena/jellyfish-sync","version":"4.1.50-drop-marked-dependency-35ff092ac7529aa198277abdde75c32ff0c40398","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.50-drop-marked-dependency-35ff092ac7529aa198277abdde75c32ff0c40398","maintainers":[{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6030120aa04b95e6072fb4628ede64f73b766fff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.50-drop-marked-dependency-35ff092ac7529aa198277abdde75c32ff0c40398.tgz","fileCount":22,"integrity":"sha512-5Nz497Wf7C4FtP3J0yYYEcD7b9MbUeaExecudsNjMF+we6AnWCT0wnQzWUcxy5X4d9NakbyxzgULZ0FfN2/6Ag==","signatures":[{"sig":"MEYCIQCvefS8PBbY1qU3wWN2u0e8zAN6EB162/9vwOiPu654UgIhALLjzrdYhgQ+gYpJ8gxFVeUzL2MzNFN1cNL4l5ETzfe9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI12hCRA9TVsSAnZWagAAUjQP/1yWbZPrrYGoMycUfS1o\nlJx8W4gSINNLM5KwXwLJ7Qvj3FGtTDNyt03I5K7magYkKOu52Eq+XlgbvpqO\nJ/fVwEEdSrMsm33JjnbYtdLy8ep+ddd7J5tV5s6yQdth1MURhia2Nj0r637c\nEiKh9QcPXDY0hF1pVvNDt5GFJ8PB09ZzW6Xnpm4inJe8fqezX1eXKHknzv4t\nmzw0qHAligIbI7m1CjivRJhnG91UP1SFbXIgeg+kxYcP36Xuj2g/NPe7KZ4l\nR2UA2Tej+2n2k47zXCoQe2ZBQOH0zbHOClO3tdIoKwKFKaWjWMHUDipNIdTy\nuvST2pfGD5x9o0XeQ9BVJOpS9tSAdAZUGekCoucaGx3yROi+y9h4O8Epwvqn\n0WM3EU4DZyPeIe57N1p1ulFDsOWQHzI3KwEhyIQlcjBn1b7ccLca0J9n+Ogk\ncXyQPt8PbPa0gxgXWU7RyHbzJPpZ5CTLMfn7mdaZggq3FZe2G3JelGiCXDrB\n/g1/9XK0vf4yLcx7ZXiF7tr2HeeM7tNYxobVdj0NrE4xkY4hKBtaG5DOu1/Y\nPpee62M/BZsl0Vl8zGiZeKsBj6x9LvhdTBYmob8Si91WEb55gKNEWBRVv4E4\nhsHJi6qegmkfYGewZJHM/nFmrlUqo0b4LAYRNow0HfnUch5FZ21n1yq8N/kZ\nCi+/\r\n=bPuX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"35ff092ac7529aa198277abdde75c32ff0c40398","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.50-drop-marked-dependency-35ff092ac7529aa198277abdde75c32ff0c40398_1612930464378_0.6940152400398087","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.1.50":{"name":"@balena/jellyfish-sync","version":"4.1.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.1.50","maintainers":[{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef6a0cb9c34722bb03440e9ec7abb8727e6a77df","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.1.50.tgz","fileCount":22,"integrity":"sha512-z7jhHUQQJf7rtSfMQG2edCtQ814hYW/9YzvKB/hyVb/y5zMHNzBD1kdFXZJp8d8HVE1j15fc5Tl2CaZZ3979Kg==","signatures":[{"sig":"MEUCIGRZYvV/RiKIDgygGTQes/auPyirXDHM+ussTUvPRo7ZAiEAnMidC/lS1ehK9eBboUtmOJ2+biwff5ru+hN7aJYeuls=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123525,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI3pHCRA9TVsSAnZWagAAsg8P/iVPDWyLCYrY2qpU1zHK\nyDBGTxrVUFvTySl2Y5NNa7+tIPH3mbhpUFmJz37H1Ag8e5jHYwavQAd05ph8\nwavafWP5w0lNj1mG7HkNb9iQ7MBFaJr9zDJIT9UVlIZZFkP2X/cMBQTVjlXa\nLchJNNHx+Gm50eG6JuWwNcNqCAISsR9ahBM6ZIeM6zmhxNKhDr+fYIm2fjXh\nVl40Yr15kNV1KVCNZspxhQWqW/cpueH7gEemg5LjVogvVY1mjb03eZ1LZgGt\nJJ4bCdWxGptp2XMkNawPZlvvZ1L6ELM0PS+gY4li1rqx7WibZHLAWpakj1XQ\nFtDmJ5mvALAR/4lazpoLFW8jnxYNM78DZBDHqnZ+TpPjZKAGYadZ/pN6w7g2\nDsZ6rb+otdku+cLZl9sJhwYH/bE88JoyjrSYlCSvSkF5rpppfwvNEPkwhmh+\n2eVzfnJAaKao9aOzUN0noVH5VRwZl95mtIfPoHrK3S6t0ED2x+h5lYBs0y7i\nzI9mo1wyJ/4NJ6U3Ez75o4hh9G6QtXj5BXrNI/M3QfZxq8DLLBzvaSc7mbAx\nlvkak5ZSjupVw259KM1fRJT/t1frFd9pJrYjh0gdNL0PpITg7JxhFbNI5To3\n7rcS6Z/w/uhxdDn/yV2lYleTrsZNzkVQlGv10spC0i2Um6FV/v+B9SHfxPo3\n0fpq\r\n=Pf+g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"96d363051485404e4369498b1bdc1d258fc297bf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.1.50_1612937799024_0.7478663560167669","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.0-add-exception-to-context-418ed6461e79713a81923395af53e2b94e3f4c83":{"name":"@balena/jellyfish-sync","version":"4.2.0-add-exception-to-context-418ed6461e79713a81923395af53e2b94e3f4c83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.0-add-exception-to-context-418ed6461e79713a81923395af53e2b94e3f4c83","maintainers":[{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c023e1f80d7472d2a1a19b8bdd348b003cd80109","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.0-add-exception-to-context-418ed6461e79713a81923395af53e2b94e3f4c83.tgz","fileCount":22,"integrity":"sha512-W6+bzBg98yhAq8hiHUmq6t4+O9GDmOKd7VYumivFofcyyrgBk1WOcoXFCcq5y3pI4ajGj8rZAju48YtoxET3EQ==","signatures":[{"sig":"MEYCIQC7SQD1Dtj17KG/4554ob7Hv7kpeJKZTwKLThfQGX2lsAIhAODrxgR7VLkpRh0Emc8YWJ/Nrf8QehqPcfO6sqZj8gKH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123813,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI6k+CRA9TVsSAnZWagAAv+8QAJLp/2I02gQ0Jwp9OxKz\n++pzsqUZDwRpQQfwmxcjvm/SjAdgjIwdcq30CbNDYCBwHPP1SLHnkpxras+S\nJWrDcDq3L/Ufa+dJ31eljArG8pEaBPVRV4WmP0HGCD7GhviGc8QB1d44Sdal\nq3hH3ReoXWy+r5ByC77tGLrDW7xQkY07dOL7ByQ9zkAgWloWGdmhmiLOjkNP\niNJ44tI3nTzuj0BcfYWGIbMzkMdCn07QXJbWtK+uiB9/YmrMYin9+qpO1PhR\n/Yu6ehe8FPIDMkAYw7qdrgEo4DLbRGGAN+57RQTIAxCoaAb3Q/wbV77Pej7O\nQY9BTi8si74NG8+4n+9AxIU4up1DqwwRI1N3BWBf8Q9JinXnA2gBRnkI6o5R\nzIoxk7arMRVuB5Uej6PTK99sGra0oNMrFJh7YRGaCy32zsc1arJH1G25ZAr0\nQP3K0zhwb66eREvP/HQF3TC1/9BFs3ji/sOJB0wNCJ3yCPzax2OxLDJM8C9P\nlEUWLeABlO/OTdFasIm+t8gv5inaGYKDZyuI99hkKnzpbH+54y9B8gaMC+cg\nmu5GEQnrsEdnPhx5/wjhdlz6bj+zOUVZrZEDCtE9EA80Epxzh5OhT3mpBtSW\n1fpW6matvyV/4+zwAq9PTwerfRQBiO4YMocvLl+NLT4TT6xu0wOVjwV/NjiI\nZXYY\r\n=bujt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"418ed6461e79713a81923395af53e2b94e3f4c83","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.0-add-exception-to-context-418ed6461e79713a81923395af53e2b94e3f4c83_1612949821690_0.07269558132620846","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.0":{"name":"@balena/jellyfish-sync","version":"4.2.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.0","maintainers":[{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8fe93d7885ea0bf8b64d48f5b995830292f30784","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.0.tgz","fileCount":22,"integrity":"sha512-XyYcsRwRejKXXZRMy3OEbEEhMuqEKN7Sq1qycDm8/8o0/faa5GaR9wPC02qE8FxFj/fcPMWlGIdMrbmDrtAPrQ==","signatures":[{"sig":"MEYCIQDqBMuhpSPHIn9PPu+Hi6QudC3WkzNGLKU/r2mdkBrPwQIhAL/VPLajn8+Kdr9SN5zwOmO//QNGmVex1FwDUNX7NNSi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":123747,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI6qWCRA9TVsSAnZWagAA/YEQAI6CVd7nCzAxkccB0d69\nDVbahyVindMQXGfac6a3/bFpkP8UJxEfTTKerODhyGOtZOwTGRx2s27ZC41z\nCty111xB65S17+r7lss53SJc7akUASncJbel2l/+CxbWdvw8AlzwDtf4bDfQ\nQRysHwVqDD3N6AL4pAnCqVvkDSNlYHXTocm33/oRXNcmxX2rkNQgQdY5Gcbp\nViZaryTVFJvCQBABOv8nMw/sZlEV2MvYnGfaOeoxVs2Zi36r31sjcOUSvhJM\ng1PL2QQIudF1KEQmLCjHpEPqlJhWGIPOBYLXrJCsMV0vQ0nR25pKk3VlaXS2\nI6AZFl4z1B+C/zZLH8t3bQdadmN8iGUldPwYEBamNRuBX7OUE89fTNbh3nEY\nbqn5JQH40xBl7VtuBM+4MHn11LQtO4wuYIFT5PVs8dvCAWoLcED2Qp7staWx\nm3kG8d6Uo7fmmSp59aSUrenY9LjLLlwIkA9Gx18Kzsz2zPHqew11dydVfbcu\n+pFWjw4VmZ+/7QzWsEXLNzFBQRheTNirpPnfspS9eO1iseuhqfpuOJfA5MkT\nvWxReW9kqRyo9QvKsPbAn6n9wlkAEnvG6i8FpIZDTRrwxU1i4PCQEKg59qe5\nw13wf4mzVzzu29fCfzKRgtTT1ejQzmmhyf1jFqrJ4Xv9Ru3BtskznQtPucdH\n7zaY\r\n=Wvhc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9c3295d87e2cdc04131abfeff4d7cb48d6ded6fb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.0_1612950166141_0.9814540437303718","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.1-patch-by-id-on-upsert-288d31985c50d242f24ac9913be6264b62857bec":{"name":"@balena/jellyfish-sync","version":"4.2.1-patch-by-id-on-upsert-288d31985c50d242f24ac9913be6264b62857bec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.1-patch-by-id-on-upsert-288d31985c50d242f24ac9913be6264b62857bec","maintainers":[{"name":"lucianbuzzo","email":"lucian.buzzo@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"df50525862984074ac606e3c874a772f6f84d999","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.1-patch-by-id-on-upsert-288d31985c50d242f24ac9913be6264b62857bec.tgz","fileCount":22,"integrity":"sha512-9qBf+r8JCwOkldsKz2EIJCPux6oGwc69t6/EiL/vlx/C1lOD/pwWhhiUBpgNIEVHtsySIoQG6CpJnzvRjNM/pg==","signatures":[{"sig":"MEUCIQDtLi3OmuuJIaU3vs/HYfYrbf5DT1hivZX22x7zl3FfUgIgYS8GM6qAI4Im6kSERRJqXQnvuEruNTivH/9Eh3UCaY8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":128215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgI8hoCRA9TVsSAnZWagAAFKQP/1qsa42Um7GfjdcKnl0u\nlC6TMNDcuM69JKJgjU1dr6iqzwAGnIjsNW7gMy8rI4LF1DBhp+t/Tg2+k1Zg\nyH9HMoECDQ6caPIf8/YwB8jcDTtzcDs1H6YLOj2OhppPjnBD6FdaXd8uVBRe\naiSoyzSzDy5la4zppx3P1OKSRA9XsQK37mC+k+12J/v/XBIdECjjM0lHecUM\nS9gJ7nWEdnr755olE0sYlw1Jz6GLUNipQFbbwF2535qTT6sfueXkGXl31LYa\nh0cBJ0KO4K43AnVigfszr7IBr4wN04bNN+pH2adDOQdndcO56SsCoP4WxYuU\nv5Y3M6M+y6ThGyhkgvKyl2EdLi2xOZiHZw/DT73FVb/sROu1bokT8EJ9a3HI\nSntnAr1O2v6P1usmq+/IPB1a8jnkdyVI1++ZJ3EdoIyReUFA378VIm+UM7if\ne1lXz7qjaWiDkH5MNC8/0rnwyXARdrfKIFx9o/m6k+TvogJH8hVfF7HSK80X\nQeuOZWQIlfFs9HR1uPUwMAKq7N1RrHehPnj1rRT3kDCc/70rHgt9hEb6DtWq\nAiXxg+f60JCI2uXzuo/HaxuNJ9HbfPUfBADdMNTSQ/lgfq1JgXmWtNIOy8bi\nMQdsSXpJfs7/wngfoio0okAwWBYSUnBLH0rXYoWRvTmS6qcdsz25mX/saFR+\nsxk2\r\n=djWI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"288d31985c50d242f24ac9913be6264b62857bec","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"sinon":"^9.2.4","json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","fast-json-patch":"^3.0.0-1","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","husky":"^5.0.9","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.1-patch-by-id-on-upsert-288d31985c50d242f24ac9913be6264b62857bec_1612957800440_0.6465871802567942","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.1-patch-by-id-on-upsert-2fa04ba90f7f16b76edd941e4543ce264eaf64e3":{"name":"@balena/jellyfish-sync","version":"4.2.1-patch-by-id-on-upsert-2fa04ba90f7f16b76edd941e4543ce264eaf64e3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.1-patch-by-id-on-upsert-2fa04ba90f7f16b76edd941e4543ce264eaf64e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b9060263e477f59ec73201033cb1c66f9bd2d33d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.1-patch-by-id-on-upsert-2fa04ba90f7f16b76edd941e4543ce264eaf64e3.tgz","fileCount":22,"integrity":"sha512-SKEd1HCnwpK1gTZEzdgNrn4Vv/eo/P2v3tkPsKWDt+CmeMkbJ6WqdH+QrJCQRgOC3ghEyP/D/KhdvAkBdrOQ0Q==","signatures":[{"sig":"MEUCIQC8xTbMooMjHpmqUse/06RZLTzYE2XVoIDRJjl2ptY/HwIgbFeHYI/mCUE7zTNBdAMbeTYY7Fv2bJg6j7SZqYrfZas=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJCQjCRA9TVsSAnZWagAAzksQAI12oWtWou0CJ/QAxS3K\noYT32dqLf24IWJO+3nQ9WNq39i+z4DAvf+TSYrvdZEvnNAjt/mmWa48KM42w\n1DSem5TJrhIiOngX3/efQ9ho4I2Hhmo+JPXdHfwxREIaPWr4H1Jr9ju6f0gZ\nt/kp8nwjlC2ytELtl6THk3zvPK9vWbc+Fx+AMHGEVTbdvezT1gf+nSZELBAe\nnY4IGfhkoVT5uXIHfDMOsrL7fBRWT2MSIiv2s5wq83+PU1pNF8RV/IQVY8Gt\n1EapiYrYiIjxQKbA1uA5CVgKW7y+Onz9r+i9D6VfD7hcE+uHnG9xmBCRJIvp\ntYd4KGoECI56Z9GiyvP1lmzbgnRvskzIzYbKXBTlxDBhwo9ADWKC6jb0LXTh\nDyhcTayJai4zy/iiUWZBOIiU3UAeYcB6f3Wi1jdPh0AQ3icWHctdUNhqs2OS\n4Xc1ZnLws+fr3TYYgHLfpVxNLIgyMevnZ9QXzsjo4TJHCEeqLC5+g+lHz8sp\nNxcj0O/slkvz3aMFFDmRu6qz5bO7RFmbEh1XhhlWCtD24m9rIxb8NUBeiMLX\n0mSvLJhnLGKmpXtdP2N8fw+qpl7id14KptSFTinoocyo/S/wAZAeg9+o6nCT\niQMLDW8SIU2iZ1ePekZOpcOMMl0J08lUC4aI5CG3C44WZR7YrwEpGAtXFsEw\nV8b+\r\n=Blv9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2fa04ba90f7f16b76edd941e4543ce264eaf64e3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.1-patch-by-id-on-upsert-2fa04ba90f7f16b76edd941e4543ce264eaf64e3_1612981282520_0.6388896684872363","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.1":{"name":"@balena/jellyfish-sync","version":"4.2.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7affcaccdac436a23dd00c5865636ce5937afcce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.1.tgz","fileCount":22,"integrity":"sha512-euf2t1+hrSgnp7Ia4WlwWIfObc3Vq4Ol5Fghv+qPkb8FkYxx/QYQOSpipR7Jn3ozd62lMTgR7VTDrVmdpVGMug==","signatures":[{"sig":"MEQCIAai2iWKqgqOMrekgWxVJuNvvrqEYElcWrYuKKnIXj8VAiAfMMz1SdyNYe1CdHkJFBQN9XeivL6V1P/ce19XvLIhSw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJCezCRA9TVsSAnZWagAAnkIQAJdKR8k/vicu06ogARyr\ng14K20FFSRUrExHGYbhugdNoQ+X3bgp/hHUkdYpIxllirqUpssPfCF01H+3b\nfoNSJk+buJYben1zkmqRKzZ15MRhQEvOxoaBxfOgA246O3dLtXe8N9ADN+bb\nzo/5HqzG6S4XyWJYDtRXNxTm3gunu8geKOURs8I6wz5wMZlbtcv92KmPrS2z\nEKGttIomRTvN2Uwy05reiGmaDuB8FMIsHmjcPUOFTuDWO2Sf4O9jV95ITL+s\n1fOq5KNBd70i3l4B6hDoPkloD0aPAeDs2cXHihtiSDJ/9C1Xy7kDDnfdj3km\nI9YxpRQymNiOuJ9es6zsx8Ezqac/VKyj36n7air+PO6UoX8z3iJoOHBjs2RX\nwHJ5spGWFzF+9THHaJB7c+cVS36vpcumFIafEBdcGolhcJR+3LFpolv1ASdL\nYUosHeBsINmLJbcy+a/X/DJOKj+lqbVth38NnVtOw2Rq5pedoQ9tEoanKhbg\nVKXgKfXzwyN6h9c+r5il4z9Lcx3uWXj+tBH+LhJxuzXZm6LEkOBYl9HVPNXc\nxlyezP+8KzXcPL88VApGBYZmyNi8MOOJVLMkI9h949su+guVKhsRal3mD0Gc\n251T54rEOh7sxpYBAtCg+oQjGyFjZ7gLN5PDtBVI/UCc5EUHLMmWhzu1tsHb\nI9QR\r\n=POOt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b3ea647103763ce3d6f56c49b47111f7e06a8cd2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.69"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.2.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.1_1612982194945_0.9028699829588267","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.2-renovate-non-major-bc90f3a351640cca6cde6303aee48554e3fd5ca8":{"name":"@balena/jellyfish-sync","version":"4.2.2-renovate-non-major-bc90f3a351640cca6cde6303aee48554e3fd5ca8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.2-renovate-non-major-bc90f3a351640cca6cde6303aee48554e3fd5ca8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d3cfcb5da1747ef13bdcf9342e958b7db88b3e40","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.2-renovate-non-major-bc90f3a351640cca6cde6303aee48554e3fd5ca8.tgz","fileCount":22,"integrity":"sha512-qt1fctGC5GtWObuFmEIEcVn//lrqIFSoql8OE3Et599xykCJ0JVEVTqjK512ldo+8d9e8VVVzaK6CDXQW+F6yA==","signatures":[{"sig":"MEYCIQDGGCaWy7LfN2RTXrnLKbIJpjA+zIZhmfnwSj01uaxzUwIhALCFZf6reT8BLYNyfeWv+AMDSlUwUdUGLucVq+ta7q3Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJPHCCRA9TVsSAnZWagAA2NkP/3mxBNnD49RXiKQkwQmz\nCcLUr0jRbdu1nwt6LjHLZ2toHYpggDW6fVXBggfTBTMUftyp6+XHYIpiSs77\nNi8HUykzlR36Z43BoH+VE+2eAO2uYhGnbuCBzq+a6wfF0OhKwS2JNJo9ZXiQ\nVIhDeIrCGqPffY28qcfsdwPCYwaVp5tFlzs/CVqPxGipt+RDqIB9Ywshpm3f\n1af20UIZzeRHlUCe3iV+AsNdEg/rAEnn5g0MLa+5ltg2ruuOckz+0zUYCCNN\npcyBS7Fuzbw7Gm3nIdUlkqlir/bjbjJxEW8ZVgMS0e126nKHRubocPRlvrGA\nMMNh5QfMA+FOQWk5vvMDp+vUfMmgXhFukxunhRKvGbZQtiJqcbHZSqbQvg+T\nUEUECprXquKiMGYtZdFT2XMweg8is/ez+My6UW7cRuEdwQ0u+xmyMufG7NeP\nuW/fd1ni1UR4aR+82Ezc4CEY2Q9/A1tj5AxjopfPT5OWoTmAuEHno1iuBUxH\nE+QNweXlp0f9GKo8eLYwty2JemEFNpJSPfStWVYvS9s64RinF2hJGWPzRH6y\nhMEGzsc9KCVhAmRuhUO45Q1XM3A5D4mP+gv1+uVabxd07L8DhSwBwpnZtcqj\ntTsv9ySh8UJfYP3eJQm4mDjaRtknDk2fWuiTFEGJBkfHY0mwNPUIpE8RaJ99\nRSyE\r\n=8tA1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bc90f3a351640cca6cde6303aee48554e3fd5ca8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.11","@balena/jellyfish-metrics":"^0.1.70"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.2-renovate-non-major-bc90f3a351640cca6cde6303aee48554e3fd5ca8_1613033921793_0.6362204981716859","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.2-renovate-non-major-80d63b745d6eaadccf85c6df55d03ef3b252f23d":{"name":"@balena/jellyfish-sync","version":"4.2.2-renovate-non-major-80d63b745d6eaadccf85c6df55d03ef3b252f23d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.2-renovate-non-major-80d63b745d6eaadccf85c6df55d03ef3b252f23d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d9d21f0ea2670e4a7e66200b372b00a9c3dcef97","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.2-renovate-non-major-80d63b745d6eaadccf85c6df55d03ef3b252f23d.tgz","fileCount":22,"integrity":"sha512-0Hiw4pltGoVvHU4PbZlHt5F5H1ErJBTy/t9ttQdN+t9CR1PsYWuvM61aB2mh19HWrhg4ppqvcDsuVaAJDxnLoA==","signatures":[{"sig":"MEYCIQCwb6mn7pKCKv7AZnizZGVE1nEFJZ7NKgMFtmJeAyo4dQIhAMkm20OioJLytnuc56p1Hz2kKiyvgB3PMONSsbMICIRh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129491,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJPMQCRA9TVsSAnZWagAAZNAP/jMyxev4VDz2CHhconJN\n2cdOC7dsqqn4fNVp6UmjYN2HhfmCMwMFv8wdllEovswNdOZ2m4EqkdbstQM6\nbDWlQtDKF1dwMMfqezJypfw1atH9c/FCKC+Mu1MS/nH+NO7QusrlxWNwOXo2\nvJZ5S6q1tT3+QF1eYD1GJY8WUZWg8XB8UC/DAXZjW2YdKuzcU62AJ0kBpZRh\n61TJSUx1N79NkCjf6wNVM5Y317NwCqpz7n8DlWxBJuBLwxHVuvDS5OU1aPqZ\n6dTX6aXhT8Q/p+R/c/Hb7XumoZI0k2lQ0epZSHjDw/p1u6LEqble6GNZ65x3\n0YCdoPcfhhIP6nQTNoJ524eSg2PNrS4lVXq4hdc2y/YyXhEfgISJunrbAgDG\nthLLTVa+uT11HEkrv+FMDLn4aDSVSsJJpN9Ta7bGURwBGyBt10QhjzebkxiK\n+4Ce+RHANPmguVZUVmcNxeD3eRqX/U7idWPXSLTwYnuoQghIpRtKFNuilsFe\nbY1CJNQkPDRoPOezoixhGR/TXoyEyB1vhUZUNG2D+W0K1HzQhjjwkhL/jR7b\nmBCiVuQmwNcMQUAWHP5KkHoBodVPAzg6MJWfelHMHreDC+sH6VgmSuUBUybW\nuvCW2F8lTdUGKXsIe92WhOLADgnZjhQSPJ7FT80aEPwDXnxxAlQJGP/XDdys\nVrcF\r\n=9I6+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"80d63b745d6eaadccf85c6df55d03ef3b252f23d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.12","@balena/jellyfish-metrics":"^0.1.70"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.2-renovate-non-major-80d63b745d6eaadccf85c6df55d03ef3b252f23d_1613034256380_0.7921306142653233","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.2":{"name":"@balena/jellyfish-sync","version":"4.2.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dfbef0b98b0efdfc37059a0f3d722596df5e9243","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.2.tgz","fileCount":22,"integrity":"sha512-F9vZ3o5i582Ntf0mMGroniIwTg6kOdsEuDcmyeQYSYtCe0wmKfwU0y8TIEdEuXX8TMjgoeZly+TWKTBBZ3S0JA==","signatures":[{"sig":"MEUCIGNoqXPqBKYnzh47rTD10T4Jj6Z+ryE5MICbgsadjFv/AiEA7Cpe8jTzdqhdSYt7+IjHsjpllZqlqBwj8EpCo4moVBM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJPPVCRA9TVsSAnZWagAAzqoQAJN8tpVuGx86m1wb3djb\n9HbZQapB0l2tPwKTSzntE6mEaV6AisTADR7RWZcLzP31UMg9j1fkiDrUlJJy\n/ZYbEdYRHlkh6JJWiSTT/6cxEsQLFdsLI5IfaNSFzPyoWGFrmipjmOx5KBor\n4/3NirRmYQYb/1UtOfVXiKEwIs/HAVPTc9Qm4tipA+F490kZNKOVlZkHeZ1x\n67HeXOtV0BF/thgOvM0EBeiXLsTGhtuTtkYD+Q9+viz1tYoQ7pBz73rNTM9V\nhhxUiltqBSi9lCH3LCfmlj0RLljCk3e0liLPvjuPaFGa8HW7wwJ42tG1t+/q\nj/aIgA87Pnuc7ts7lgOyYR+zAZ2lXrHVRBSGIQ7laxJi3jxH/3+ptJVui5bD\nUscrzrSjvmy9POHRGOLhDOauvujFv91k5onz8Rd4e+MPG/Z3YnF93dOW6hU+\n3epa0cfBGZqnEZekSnko3p03tjiUS2ug9NsgTW9rBeMXdKxEqxeiE50CPUOh\nSkoe1kt9Fshtq0hcrynEhryApxswHO3lPWWUoiKcAvobBBbpvSvqhgjTVpZX\nXyDT0aMn811IjQ/qiubtPsSdzfjgJ6bskQeghFfCC5+g5dQGH6YGxDxctcvN\niIh6EvE3cSj19uLVTZhp0b292m0Eo8OiC9hQ22twvZeDL+FXABaY+D1iVsGg\nDGR7\r\n=E2Ak\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ebc6b5f9c6275a28f18b26da266052b1ff0304e4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.12","@balena/jellyfish-metrics":"^0.1.70"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.2_1613034452701_0.9778790942025308","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.3-renovate-non-major-77fbbd1e8863d5091db8b5b4819e5b4e275d78dd":{"name":"@balena/jellyfish-sync","version":"4.2.3-renovate-non-major-77fbbd1e8863d5091db8b5b4819e5b4e275d78dd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.3-renovate-non-major-77fbbd1e8863d5091db8b5b4819e5b4e275d78dd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"980e2da5b315216bf5af7dee558176a8241dc63f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.3-renovate-non-major-77fbbd1e8863d5091db8b5b4819e5b4e275d78dd.tgz","fileCount":22,"integrity":"sha512-MiPqTjRQbFqnpYcSGKveEIy9fcCZor9VrnX1ZooChlLT4jm1mPubdN7U4iGKpawlNX72sJAbGgW0VZCWC3Il6w==","signatures":[{"sig":"MEYCIQCukLb71US8eM0rfWwBzidRkvqs+KLGQCeTQp+xP+7/cwIhAMTr7CNKrl09398yte5qjr0N65deEP1ufOFfdXuFX5rW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129597,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJTplCRA9TVsSAnZWagAA7c8P/3QO9dQ1Ab9AKGw9tkE7\nM1Os5Rxwy/PuF2ufzz907WYDXkENCyVnQxm9FvtXOclNsc6CYz0WpJQzI7i9\nQ8XuXLyY4QMB8c3RIa+UQPqrXDA7sCyYUrzPpZGVuky5YMaZ0D9s6ZUr81OE\n/w67bKeRs67D5PMMXvsgvQLiTVEde822WE+2XzSBifyWFy2e099yC6QHF4rF\np78HstME4Tq0vzgXX7eUxWSs9671OfjolpqRPUnFNcnvEN51Hf2L7P3n/TXT\nHz5RLRreAUyTgCdVhC3c3melLHyD+oP9yYv60rKHQO1YgriVT+ksdwld09Je\nr3+dvE3sNOCwHHMHP5l7z65MVanPj1S1/mPkGj+1UN/48dki3Kogf3CgEoz2\nLfyM4ue1Roc1ntqHZ2fDkI8dDJSj2NrZkWHiJhj0oplLieUnOE8eB7GGqOEl\nW7koWLh+rY5ibaOh/A67mXUdjYx1DcqnqaodDw8mSXBfqoQOEu4jF+j+e/Yu\n0V3erTPbu8qiyNIRnYaCPlNhtBKjB+v2n+jI/SFavoUIzYAL4CWrD9Ap7puX\nlvKr2YjNBoCX88TEAkJ3Vy5WfCOUjkvB960YR1zUlcBJd5X/JTpZZ3L6EMKE\nlItiwkogevn/M0Kri5YWoQzolGpPvHdtJLZKDp5S5AevE4EoZaLRNUu7jQQ2\nmYap\r\n=iwT5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"77fbbd1e8863d5091db8b5b4819e5b4e275d78dd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.12","@balena/jellyfish-metrics":"^0.1.71"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.3-renovate-non-major-77fbbd1e8863d5091db8b5b4819e5b4e275d78dd_1613052517325_0.05482448821066366","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.3":{"name":"@balena/jellyfish-sync","version":"4.2.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59830f45f15278c765b03989366215615e262c68","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.3.tgz","fileCount":22,"integrity":"sha512-pIL0hH9UFVhu1EpwzyaFWie6MlnHqQoOKkjs0ibfFxX+I7dlqMwqKiXQnXkjRVVzrAuH14mPp/przlMBcCL6RA==","signatures":[{"sig":"MEQCIHZOfaISCz6BNgJh2R56GJKC/WywBayWfuh7WmahfM2cAiBhoHLhVSvFf7x2ESwLrRNH0vAJt96o+9lo4+BlGuxgGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJTsxCRA9TVsSAnZWagAAc7cQAJCd9+Lrzb6ZXJDgbZ58\n5fnPb77MyGh94jTKBbpCaqsgt/HxhuD89XcFkg/gRKbI2gAzp65I7Qcx5Bzs\n134xBP+3KcchRjTqlZTtNcqh38jztXzgSvsL0PHw+ZZuTwx4HEEp84ClZcdH\nz/9ZMzVcBYKnAWEJf4VDtF4GkqLAPLaRJ3d7Kt848BFUGE/45//nYqVMI66C\nJmMvGzmyLurta4LsW9g6vzWe1hkYbfXIRO3564ZWyhy/tm43xgwSJanjPyPK\nciVVhpUtPeeIqR40WY4AxthumxKLnqhy6nIN4VL4CMCG5ngM/dw9mCWTSoiJ\nEl7SCeJQ/TpK52v149fikvseYfatgY02EW1xxm7S9s0tsKniXCgmVqhrUgox\npD5OeezQGlEgn6cIYFRWllhg1Ee7ML8srrhmPAkUUmeY7FxAxAKad9cYVOHY\n6Op3QbR0xHRaJ/lsizZSJqmKyr1exF4vP7jDyKM0AB5HovGsfynaqavjBnKh\nnG34oAgm/kMYe6KVfiYXeF/q9nEYjSe8W+C9sifTMcbNOIOyJxyzqT/YKwWn\nARuTHqIqGdVZnZhbY+dkgMuzdALxbEg0Gy5YDxspLZfRPUbiUyobcb0kBidX\n5XxrBTaC5uaX87U6ci7Q16b/YDEqPP88aNnee7tZdWVLjdWwyb/mb2FoDw/X\nqoeM\r\n=WvgP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"765b02301de93bf27aee6697348745e4922f086a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.12","@balena/jellyfish-metrics":"^0.1.71"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.19.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.3_1613052720876_0.039516066503700875","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.4-renovate-non-major-f2ff87749b205fcc7017b6a9ea3c0b210133d655":{"name":"@balena/jellyfish-sync","version":"4.2.4-renovate-non-major-f2ff87749b205fcc7017b6a9ea3c0b210133d655","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.4-renovate-non-major-f2ff87749b205fcc7017b6a9ea3c0b210133d655","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"62e43b4defea6de4a02960dea02300cd4b5b1a06","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.4-renovate-non-major-f2ff87749b205fcc7017b6a9ea3c0b210133d655.tgz","fileCount":22,"integrity":"sha512-3/cL8lBYrUeOmju/FrrC2pUQwX9Z62jHGEJ/Ko1V6H4H60gIo2xFKPUXlmWYw/aj8YVsVWTPbMO93f/uC5xaLw==","signatures":[{"sig":"MEUCIQCSjp1or9LOipBtE7pCuBs4TuhE9HVbnyAEyHoegUncNwIgCw0xiNm4DktIhdawb4twNoLG4KdFroYZr2bQhXdJqC0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJyVUCRA9TVsSAnZWagAAMs0P/jL4PA1At602O0n4UpYZ\nqR7sSGerPZ3ZxZLZKEtRd90vvXLVXuJEXEVGRmZXVDwoXlAOr8+8INn6I1L7\nHecVK7L3GlxdFJEwhdZiMCcncwi+AjaP6s5EQFnw7yjwLTdVEMw0bPH75waH\n+398ZHdhL/yuYew1i7g2ez4+15uO8M3jmDsqb0Q6CdJMhmcSWD4nJd0MRgFI\n7YKK+IOJ64s+oItRq65HhQxMeNvBiTHTAbDa2uKNhEATLa2qqY/q2KaTvszk\noPxy53Kx8s2bXzibHVnP1Vedgh0QrpfSOILuIIOW2S9sGZMyGrWqodhqSK4c\njimpqs0cTxJ6hcmwU706y5FJwaPbk7126gp1ZxW384LVRc2eJC5WA+9YsxKF\n7nlwcSkLNVQ+chmN0L696zQdWAerP2u5eqemU+/ZcqdZKxa0U6ePEKPMNDwI\nSfc0WCYYt3EyFaqk9Ka0CcCDa8dL+om5rsyOAF4Pe/oN9HZnozOaGHoqOfCa\nI6n6ypFX9ASOvaf7rtzV8vF3wxM2aaJnBDYD22kvxnV4SEW3V5GHN8xc2huw\nIERE8AjcGPMs76YG+R3W0ElvGyUuyaLrv99uxJxPbEww6DfJdagPeL3lK6md\nEM38GkaJIoFYZAZVs/19G/AALY8WxuxU7Zq0o7fi6SHALPms/QqsIh/sUBrH\nNCEA\r\n=DZJ3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f2ff87749b205fcc7017b6a9ea3c0b210133d655","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.13","@balena/jellyfish-metrics":"^0.1.72"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.4-renovate-non-major-f2ff87749b205fcc7017b6a9ea3c0b210133d655_1613178195438_0.37778188840795934","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.4":{"name":"@balena/jellyfish-sync","version":"4.2.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1934782df49ea52d7095c41a565c222480a3863","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.4.tgz","fileCount":22,"integrity":"sha512-nsxNhFVWqXZpj9u5z5oPHeSwalviliour/jOHa1aPZGLLPSP9izROIY9sSIGyqYC1nzSGAFexlQHf6VPm3vdbQ==","signatures":[{"sig":"MEYCIQDqM20eHOtt6XF6/4n+LNJEdR53wRCkuvQ8q86C41EfUQIhAP7jz+RV2T+Qat43MwHPfsywRpIWPcl0U+AF8iLYb5Sb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJyYMCRA9TVsSAnZWagAAyN8P/2XB+k5h3t8AP6i6WBhV\nPqvVUbACs7PMJIkeRw39DYQxwC1175PTMjn2JZVInzm0ek2T8EqEzgs/PEoI\nL5Gbfd45oG9t8g8ZHWa5zzgXFEgl5SaN9fCr4ptCtAIMmD1nmlIPyKgJ6sLn\nUftD1dLYfn8OT0D275TIU1T0GLHcGwOPnly003/tXqUKtQw/z66Vks6zTG41\n/i//0MRlZp2xWS9z0OkwduimSlbrwxlt2yf8M0T54f3iVjeIuHFM70qJ8BDK\n7YSuBrHgGtl5GHu+k1rBMaq20iZElbNm+js4S8Jm5mwSibpiAut9jlCQkysr\nsU4ctQYRqH2XZtEQJh58kqjNUdj29fjDkpzXIj1yWO+1552hrGMMmyQeDxdb\naIp6ZCkfGmZpDT1SbrrLBnmoFAKU87ZqTyHgjvIAY4TYtcZGBElOHBEypA1+\nWdLqYuAtgcUBy/CcvyzDE6EstqcfU9ww5sF8yJ4TAnSBKOcq5bUWZiiDUr22\n+GDmT9g1mR8sfU6h5rJRG83048dQ4+Vi3GVhR2oH9q2PI1vN7V2LiOkioy95\nmLsHLNu9thaPRhL9IOQj/fp2CuRjOlBGkptmmsxq9eS5Ze88aavzb08AXo/e\nFiFyYR/u47DXgxHc2RLg09PF2RqiyBXG1VmAKVCPTxEYjtW3ykzKQhBu8ssQ\nNTzs\r\n=zJQS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ae5f98107408909dbaec50461c1645c79dbf18e4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.13","@balena/jellyfish-metrics":"^0.1.72"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.4_1613178380229_0.1464617120080649","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.5-renovate-non-major-a601866da35a73a3ef525fe66cb12e9e4aed2f23":{"name":"@balena/jellyfish-sync","version":"4.2.5-renovate-non-major-a601866da35a73a3ef525fe66cb12e9e4aed2f23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.5-renovate-non-major-a601866da35a73a3ef525fe66cb12e9e4aed2f23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7c4bb0f5e23c776be4bbc7a24a37bbe04280228a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.5-renovate-non-major-a601866da35a73a3ef525fe66cb12e9e4aed2f23.tgz","fileCount":22,"integrity":"sha512-/5L/l/XMbnO2WAW6RXFw7XcskCU2XdS9uVZWUgn2YWqUOb9lXYobN8YtcbYzqfl5r5DVCDWaGUlioW98YqwAAQ==","signatures":[{"sig":"MEQCIFVzNOtbLuR2NIQNnTi+u1P2cBRHyAh0/ZesXpvqu38NAiAMmrn2W9TgqARghd96w03P3yUvMl8jZGBeRO2x+MD5lA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJ12zCRA9TVsSAnZWagAAkPsQAIwPtTjRN8gIWnJAVObE\nXPCSzSFvhQlmFrY5Xm2vXRN48MSqJloJTt9o3vBPLpj10Za2RY4RfCPJxXB9\nUpdFYCOOJrvIqVFEPqjIbplxQO/acqALSn1D5Rnt6P8IfQHcE+5/4UafcXKv\nLIQ0/FaQtb49Ok6YGvdRtmw3pQFXjnih6lgGZBsxlCJ7P5/2PcR4/HVqgMFD\nJV/mmUoS0l+muBozm/SWQ4P1bIBB9w4bfC1gGa98SmtG50FffABtsajc7z6A\nFaU5tDYeQOxvENdG7Yh+4Pc22/dXmf4NMjTs70lo5F6HnkcA3c8KcmCwhkib\nIDkCbucfxjG8PPjKt3Gy743Ct5+TG6v9/a7mQWVQYt4vuU1Rg3nUfseC/Lzb\nSKI3wAPax+vTk2tozUG1eRYB0gPFeihcE6ksuMZtNDvBQwXOpOvfGsPDolNI\nDHh88z+HNO8TQKjX9hctElcRVymjGjBkAU54uT8uv746CNlL8oDXdBawiFtB\n2mXuX/7cQF1mHkVrFKd1flgb9B0Ha6cTV1HRbxgB98xJfXtVTG/Ix5NxW4Xa\n2CStsHlY1Y/yzSc8hmE4inmXLuHAIoBSmrQVcFllS0RyIvDX8VxxfHcrpFPO\n816olr8GoDLOal9a/Jure1+gUfo1fUzIIl9lXQPHrJGlq77uVVVcHVGt+W84\npfIF\r\n=XTQF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a601866da35a73a3ef525fe66cb12e9e4aed2f23","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.14","@balena/jellyfish-metrics":"^0.1.73"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.5-renovate-non-major-a601866da35a73a3ef525fe66cb12e9e4aed2f23_1613192626768_0.24890259902538658","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.5":{"name":"@balena/jellyfish-sync","version":"4.2.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b135cd5f78d1bec2c1735dda15c937c0418951b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.5.tgz","fileCount":22,"integrity":"sha512-FxPo2sWvgXRQWuoTUFEgsPP4dhVnb86aHdt4T8ne2sH3UkE+mcq5Gyq0KiVnODCPULhpdkD+XGRYjwO7zJNpAQ==","signatures":[{"sig":"MEUCIQDhx9qyWBLgBBjLbiUYlOj0BwSrctfsc7dAQjobreWaUgIgDZE1Afefveqj9DXqAC9P10ySc3U+WNTJ0KSFFs7muZI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJ15pCRA9TVsSAnZWagAA6DAP/At1Y0XB8uJ98wKz3yyy\n9QMdiZ5Z6KhWSZN8iIkP6zaDvh1wZCGEhToaMGvt/PU9r4a7M1eHwACHZocT\nEAUDiUzOmNQxOK+7+ZLYXi1m1x9pMK78848OseHpp+CKfuBSv/lH7ee49T4L\nEwqH+2wX1mdqouhXBJCVQZpfrwmsdK3mMceYkM6qKO93OgxO8gdrFcbQgo/s\nYQQgN6xrZQfea8zm8wAgmM7EiPJuOIQrGP7fL38GPdpbtAVfX2nlIWGvgF77\nnh6OvEt4RVOWQzQJVOhwXSVYHfPltLKn+H5Yu4nRKXOdQ3HGte8beIuu9o5X\ntWA6shoeIMWgdkRZZRVlaPrqFvjcBVDqAPz4xJYQ4yL4dduqU2UeW9WkCvsN\ntWfLD+BTom/gUEUV15Fx6j5ZTG3ocGzzoWWoOYl1KEbzr3aEZuS6/9oKm+81\nNYaOklVkXT7YqvNA4gihUNHzeAKR6mJhsAyyb8u4aFd/bS4uRC9CNo5TQntK\nRrv+LFJx97MrgUiYMXiCDCLZ3ag82/yBgd6DUbT7K5ZGvmLODe9+gTFtRLVm\n8jZyao4Vjn9TZo+kYkS//53cmcNpak6FgozGHoqi3kKPTXkilMCeb6YBaWmS\npsgUNtCrTrl11+X2dBwYe3K9NSx7sky9E2NxSnM6BLa/bHz9Kp1EbylxcFur\nk5+Z\r\n=XrH4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"36ceb572bcd3551adf96893e59c53594c067aafa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.14","@balena/jellyfish-metrics":"^0.1.73"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.5_1613192809375_0.40343663309791955","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.6-renovate-non-major-9096c26006e42608df51b94474c75928682c1a38":{"name":"@balena/jellyfish-sync","version":"4.2.6-renovate-non-major-9096c26006e42608df51b94474c75928682c1a38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.6-renovate-non-major-9096c26006e42608df51b94474c75928682c1a38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0810287f781277d74e06ced1c375d21cb80944e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.6-renovate-non-major-9096c26006e42608df51b94474c75928682c1a38.tgz","fileCount":22,"integrity":"sha512-omdSVtYJd64K9gk80QdvZAQJI0+xUWZ7kAUnvTmUYqpHoIDXSYsNe9MVWBvx2MjqWlQk4D41FcuKTP1NgaCchA==","signatures":[{"sig":"MEYCIQDRyQBm5JkWXLS/JI/k0HIiDmQc9YMpGldWhqsnknfw3gIhAJMYhoCxIgOGNEwZ3kvx108M50JhpjMTjNfoytxp+AoJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJ322CRA9TVsSAnZWagAA+2IP/A5hoVjiY2mjDhW4s1a1\nJfyqOTrUYm07aCvwt8NZQrTKEHney7ITKTGPqYvEiFBKvx5Nm9uHKV01s0NU\nzHKquix1LEwcWZ6HibdIzxbtyv4mYFRnM6gJ5cLmUPp4HAE+m6Tuu0vpDhuz\n99IHbrXvAKPD2ODij173fAhDnJVhnqxd5KKKDUE3fj/oh41ayFN7YmBE1bCD\nG/opzgrDr7xRRwOt2OMjau4MxPg9wKLzyrxwrPPCNSFxx/xrDzGpQw3opAOc\n0BhQP7rG1f0szUdIFw0DUt+FcsVC/C5NdZxUpm9SiuqtQOcQzpukeZObRzyU\n6SjJY33DiujA7P+C0/46Ezsh2VV0fDRQUSOk1KrxNXQJrGe5kgzYO3WlQbvr\nzq68HHhHIsubq8WcPskpEH9tlcujDBgPI+4U/6Hx/SLg4utCTHLg5u/p+MTL\nHUBnLXtWZNCPNAlSNPTonmtUSwOHVB9AWzZMTSHgZy9R3gwt9uCSt7Ogm+LD\nY/n7QsSG09d/nUNOWHIDJ/5U8Gb7RWNIY+B6vLjNAykvHAZAUkTbZnauFC22\n70QJvFLgmNv4H82nqc6gnLh332TiekAjG3otaknNi9LgGOYxlYCeTdORHgMV\ndEqZxtSDPf5iDg2W4mhdIeEQMiWVrBsxK8ByfU1Mc/vtJr1YOa+B3rJDMCu8\noFu5\r\n=two8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9096c26006e42608df51b94474c75928682c1a38","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.14","@balena/jellyfish-metrics":"^0.1.74"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.6-renovate-non-major-9096c26006e42608df51b94474c75928682c1a38_1613200821876_0.9021136111376356","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.6":{"name":"@balena/jellyfish-sync","version":"4.2.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a24b2dbdfadc15ca99709c46421179a8529d0e4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.6.tgz","fileCount":22,"integrity":"sha512-XLSrRNCS9is/LfD+QD4FSx9iaXEQfcAnHv/0ycxFdYKBBayFYCBBiU5zdtTc8KheMN+2DHzz5hNwg7//WUmKfA==","signatures":[{"sig":"MEQCIG84krayjRmOSOQcnuUTTueqSiJpN3LXaf/rb2auD/ljAiAT1HCBamq5X8d80N9YFYuvU9AbXaRpWy6hRWweHp9oXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgJ36MCRA9TVsSAnZWagAAkS4QAJ9oITbJPS/1YK0iKbN3\n9ST1DuJJOw2xaTcS/95WdU2DXMmhbLkZsyx+88KrO+cQVbl0Sd49M/GOPKko\nGzPkjLPdohi3Kc0ompUuBGuX9f2Y4jmYwO2EdHMxMw4JIB4LauIyt0fjDssc\ny/R0dYw+v5ygziQr73/dxORfgYo2oH9DO/oYmMOAS2IvBGwuTa8+orvNleTr\nXPNKaherrmIH5OWSuV/Z3XuI8X9JwiHxPikTXHhXe5lePgjoWSuVMBxj7y43\nVrRWaKD/UCAL4itpkeL/XWq/KrWAmLREyQ3whhqrDrPvAH/kiZQg4pHw8emD\n4HbnZFzhCEvhAM1xCEbguU7zPEufD2AT0g9BwX3gKSF4IPSVaH70HcEQ/uO1\nUnjZgVqECYl1zwPd8x0YhwWBY/2MDipynKCHE4ZyTv4Kn/hK6v69ge+dDE19\ng8h3UDiXsvZhDmTsgEG5y/5RQFkhl0Vpx+1q4tOVNoVwPNMYX8nrF6uYENRu\n5ihUZRC3Z8ulZcfnaaODePfIbDzcYqj+JLFBGQhWX6wm7QDHEJHZuCJEFbw1\n1L9kVRGGJTMAHioi/Rr6zcj/vNR866KrqHUkB6VuQsY/jjwrvT51E982ccyl\n2uei6alsdqEB+Z1ZBYj1BULM8VWrg/MD1l6YUAruS0CM+QdHTTYWHpkOiTr7\niKlD\r\n=Mj4t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"afada2535bd27ba04de69d805eedde445ee4c3a6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.14","@balena/jellyfish-metrics":"^0.1.74"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^31.6.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.6_1613201035967_0.6079089282778367","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.7-renovate-eslint-plugin-jsdoc-32-x-04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8":{"name":"@balena/jellyfish-sync","version":"4.2.7-renovate-eslint-plugin-jsdoc-32-x-04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.7-renovate-eslint-plugin-jsdoc-32-x-04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39373949f411f52190c0bce8b02c87e373fe51bb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.7-renovate-eslint-plugin-jsdoc-32-x-04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8.tgz","fileCount":22,"integrity":"sha512-juO1ShKfk1PBIiPGMjuvcXlEmSsBYgg2LcNBS4wRvIeelhgJ0AqFRCgHVbw9AIV2bWf9bhTtH78TbVK219/41g==","signatures":[{"sig":"MEYCIQCWZehQdvak9alRzyG++W+fOpNzVD076+MrXr1aU+a/YQIhAJCS7ivVAyYRMNuMi9AnndqjIgba5dD9LFBuiBth3e+V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKgYTCRA9TVsSAnZWagAAUYYQAIOVIaIF1nl6vxHkcb9w\neR6/ejBDUngN1HxJeBq5oPsqLv2WPPNjGiJMSvGaknV6A1i6Tvqig9VTAXST\nKCjrMFz41jNrGJYmLAwZ+PYzW9blZiEMFmlaTpP6SowpLRtc4nKmcfOhGGKn\n3i6bw1pfCrs78Y4R3AaXnOJfltoLg5+6zPch9bXO+RwxRyrr7fMR86S+QEJj\nV5io+yoO7QeCt1kcTPtCpj+D3zXMbyP4UszwxM8t9PxFb/Zr7qNRShVRdBKV\nsvrMcOwys1U1ECO/p4TNltR0ibpVBa9BiTobfYm5uE7Lg6CKJUggYEyvewNN\nfpg0d2WIdqdrXLhYJgSpbAsiEvgucLN+n4FBvCHMmpww1vwPkeXOIzhE6ld+\nulh3CHWZtGsh4EmUbjkyKYrxh1X3anHJQjTc29ag/sUIYem59d5f7VGqN209\nFVLNMkKXaDhPuaMar4rglEMR8F3zzpuU9J+rm/TkugZHvlUB8h3UxDomVqwq\np8wWmEj/jueiiZzZQdro7ZTjmzZkX5bhgLzHgc4BW1ds+7G2vYK5odgkfEs+\nwLwAb59NZfqpyaMGLaGrCNrP3X7V2sf9HlfzACfCZnhR7Bouv8uD8VrpND8k\nXQjdQvHhzxBGH1/1gxxvfUPUFm2qU1T5FvJhVKc3HlVGGN1zw3qe1qnfYLSL\nkQv5\r\n=sKGl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.14","@balena/jellyfish-metrics":"^0.1.74"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.7-renovate-eslint-plugin-jsdoc-32-x-04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8_1613366802774_0.14858609728404737","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.7":{"name":"@balena/jellyfish-sync","version":"4.2.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fb39872801b05392f2def87b4126c0b9ae24dbcd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.7.tgz","fileCount":22,"integrity":"sha512-oU5PASmSGUQpuJAQK79zUeVYH2G52t8aTIRL6UUHYbZv/2S76q0XT9cA9XJYM7JiFPx+5VfCYvcY48PJLbE/aw==","signatures":[{"sig":"MEUCIQCqVdg/Qv+gApM37lFtvRynhJkYC+179AUSqw2D/srtsgIgOyKAVTqbfTl8denaE8sqzJ25MBCKmb+YgLQkrA5XmTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKgnlCRA9TVsSAnZWagAASrsP/22ZFCrWAl9tGhjHud2A\nE3oNGmk6usr5MFTyb59JZBt5BxQTy8rLmI5c2JvvtEooYQuZxBI+5jiwPZfh\nuad98O0GB+I6NMmWWyX7dtHfgedlqA+bK3pFDkMkEuUeyiJ/rlPGUs9wIng0\nTQAf+gj9oL7NtjlwdOdDIX+h5IDAt9uvtRFMxQN+GDWbAEjUIOyDFo9FYs8h\nkoaXyezkdgZ+FMZN8O163ENc2IjEjPXQoNNlCvgl9BXYce3/+/Ao0OK4prJD\n2hh2PQIWIXilyJdxaWGxdn9Q1gc2UJqoHoY/CzchPwEWzCBNqXDocmpL+8LU\nAS+nfNZc3aJANYZaOkAYOOZPhL7xhXCZomGuQDEKAwmW4rvEaBt7uTMTWG5p\nArxB44adGbSt5mXmTaozgvt8WtD9tZ5KPuxiu8gjQAc4tjjviOdqIDSOSMBm\nUtahrL+jJdgOoTbryWHDsiHGRKy1tqrg3KxvX6YBwgeJ/OyGfOzh1qcyh+e3\nq/i0jTTcWjP8KBOc+Rj3Sy3hEkPLt0K6w8IGk74qNiBkop7r8/nk24zilxJR\nZd3IDZs3xFnav93O6nrEnn7o+ridyyjAQyaSTAVIV5Bm+z0JlR+KpJXF7ajY\nLsw0AyyQDtDPlBsziO7JlHCQr2mJ55L1sTFLbBQq6v/DeD4sVj5lce/jh76w\npAz4\r\n=Jsbk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e32ce73ee7afbbdc4b464aaa959ed0ef2e4e6f2e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.14","@balena/jellyfish-metrics":"^0.1.74"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.7_1613367780950_0.6048456835605862","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.8-renovate-non-major-b63fbba573b3cccbae26d670526a149b95a1ece4":{"name":"@balena/jellyfish-sync","version":"4.2.8-renovate-non-major-b63fbba573b3cccbae26d670526a149b95a1ece4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.8-renovate-non-major-b63fbba573b3cccbae26d670526a149b95a1ece4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1109d669c6bb4a2c432015a124bdae7242cb257e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.8-renovate-non-major-b63fbba573b3cccbae26d670526a149b95a1ece4.tgz","fileCount":22,"integrity":"sha512-Wmb3yIC3azqNMNmPM29WZsFBcVKHn8hi15B3b8UD70BOF9wS+lF1kR7NwzkGvn34AP5EJZAzvkF/GJ984mP5PQ==","signatures":[{"sig":"MEQCIF3GkxG8N+aa9YbCK9SPM6KPbigTLNxV8h8WWtbaRIScAiBoaL+2v4xAd26/GTlItmnMRTujtbeQlehnyn/J8UCnLA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKgtYCRA9TVsSAnZWagAAmYEP/2JnSeV62RaVgG4TYDMY\n2O5iwvQNf+iEUrscrxx4Z3Wo9v0HM2LLaCDRDCJ7+kmaYflm63GSGr59XXpX\nU6mYrw0hAiVm5nSPNJRHdUCavTSSRDxYaDOE4UCtuAOlgOf1MldoKUebqqkx\nfxh8HEXbFwHaSFn4YA0y3idnwyTtJI/7LGCn0ldZg7kLwCT6fqPtRtzUnA4S\ndBqNJeWQz/OdRZNWyaPouvRZpSErshZX1BFqAVfd514lp6WAxgAjxQvNmg6E\nKNsFBeARbi7bBhh3kYM5Ymc0KhqVaxguKY+wuOWe2ybWbe1EiCmsjXoUG45h\nogA5X+9O898jzRPUcXRhvSlin0aUxeJBE+Pp0vWe0yaNp+4lfRAYv8BEGjMh\nlrBrpJCxqaJznvjE2TkHJb7gYLTq0Sn6AX4wYZdC3ky8/DOqrtkklJ1bjOYc\nlcn0rxoLg6AcJq9ZruHnrUYNecH+qnfH6hfxLXN31YiPaFo3qO6qkR5kugAM\n+fjnsw7WCRWxLAztRkvwh+2FSwl8YYp3ZzC7QHIxgDnQlMbEvKtYY8xvGFsg\nM4xdisdTFUpOVC9/IbJUDn8mKZ5TMEoOPW81AR8ErBT9KWJNy1d+oRgNKIl9\nj5xDY/a4YpAclacfzK8YhRI8D5GMHdW4rGvGSAJSwMwI2aRW0jJgVXxX39/p\n9/6d\r\n=Ewvg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b63fbba573b3cccbae26d670526a149b95a1ece4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.15","@balena/jellyfish-metrics":"^0.1.74"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.8-renovate-non-major-b63fbba573b3cccbae26d670526a149b95a1ece4_1613368151743_0.12788858133386616","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.8-renovate-non-major-7bbc107858f92ad35490063598ed09efb414fa1a":{"name":"@balena/jellyfish-sync","version":"4.2.8-renovate-non-major-7bbc107858f92ad35490063598ed09efb414fa1a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.8-renovate-non-major-7bbc107858f92ad35490063598ed09efb414fa1a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c974981ca1b5a69c01e3f47b70a16990a41a6525","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.8-renovate-non-major-7bbc107858f92ad35490063598ed09efb414fa1a.tgz","fileCount":22,"integrity":"sha512-zgLMgkLInesKkHHYSOrazL4sue5ye4o//yYkGyfPZkF0DZcGcakJFfYDWeGf4A6M+1rj52c6XrAMli6BeFRBLw==","signatures":[{"sig":"MEUCIQCC+CKKrrYlDV8SEqBux5R9HyDuqPs07X7sX2Rh5u6O7AIgfi7/Xs2LEqW2RIRiDtFyX/HvlZZ9kaP803AYvRuOzQc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKgyeCRA9TVsSAnZWagAAEiIP/RUj008ktH2tWlkbl8Ft\neXCiqV74+M1bMlhKA24lmmKfW8HdOS2fLittC0yF6bQEiVA5A3hyAmqYtefd\nlHdN1CXoJJ1TYPTpe80pcNpzGV61tJeb25ScD18SWfXc3yh2/mIytNXsRibO\nQCs+4STJT1se8WXeYeFZL+pS4EY37LqMPQq1FYloNqY4736USlh5yr9TJsrr\nD87BbaxWhNti9dSHyxfOfMscWgUPzubC8xlgRrL3ZK9wo2cO1njGBnU+l4i1\nXBf3ju/dj4gSEety/TOv9JyrP4thUhuI3e7pwvZUi1FQTzSVk9+LytQ9WQtX\nm7TsujL5+wVtHL95CRrLfW6QkAGP3SfV1V04P28/wTkqwnSjgADXm0LJ643d\n5TqjDWy+lFY8/b4jdA2bdyDwourLx93SwDCPpRYKgZI6fHVyeERzujuoMF9w\n/9B/W9RpugJr+UyCfNDuy6kiHHJkDflJWh+Dq2WMLgnJa2NTpkxy3Bep9VK5\n0ScgkFBsqVTgif+C8VagrpBu7M7Bo/G5nJb7dwj7n5QU43qQp8NJaGOpuH8l\nfj4LSYbbLgFGqZNkAdoFhDBLrXcMmXZDFFnZm5+0LXNBNQtZXJ1rQ/OSNpgZ\nZ0DNZGeItc8nLMIcSgcj7ZfSTLteffDJw5F2UfGciqdaDZpIdO8bfvxOhoXC\nN3vE\r\n=NR0/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7bbc107858f92ad35490063598ed09efb414fa1a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.15","@balena/jellyfish-metrics":"^0.1.75"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.8-renovate-non-major-7bbc107858f92ad35490063598ed09efb414fa1a_1613368477949_0.2903570176609489","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.8":{"name":"@balena/jellyfish-sync","version":"4.2.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"649fb273bd8a36e9df4dbfd18db650007bc179ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.8.tgz","fileCount":22,"integrity":"sha512-U9dCpmFiBAVfkW0uBrAQbFNhgVjnQg6BCpqN7WdvDTEKFMEOUSo9GKbJT37m2NaA1hDUodPMzU5dDKNPNOxUtg==","signatures":[{"sig":"MEUCIQDK4+77c4N9Kd2GybNWBDM/s5DE/p/Z1lFnYoAil59+KAIgBYzjpYcIgDHmDv+iUbAjhHXTH/w/ITNuVE+ASR9dE40=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":129943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKg1gCRA9TVsSAnZWagAAMoEP/A92XXd8mOX4Q46WTryn\nSRqTaJw+b+N42CTi54NwjXiZcyyqo/FQHc0sQOOAKfhSFkxD6fomzO1+ph2q\na6Di6sNt4ys7shehQ0lDCLP6m/2cVprw8s8NkxQawTmHohRQjtssFeZmSxz0\n96AB6ryemIQE2yY9FqYZOW9vAo7SrFci68vMRm9M/q7gkP2U0Ex2sdjJJSrn\ntfYwijccvyG9b+GWZsR1dKkHi4hkmnZdQnzOkKkyL179qBVoWPxrb4liPs3V\nbX2r/zy1MR7LizsldZ7TOGu58CJbcqzQJYOcozVuj1WnIon1Tl+AgbkEzSPB\njOP3DQP5E8YIMLWdhrbYXallyFfdUa+Cmm3z6b/ua63QxNemuOuvIKicSY9U\nzKKmumRdJ0gn5qYKv7onL7umf3ID+sJ0x6L+Bjz1hmKqRrzmNKeBWMKjqSTo\nDv6DGWqg/uZ+vwuCZlE1UV1Mog8t8PrdWMUHsD601HbQlmfSVUKPsXBn81rW\nn5Tavvd9sjI5nrZix1H0uVIyO8g6VqZ4M/pU4PCrYViVWAeypSfHqKC7seQE\n2z2honZ6uCp6OcHqw/KhHa3dmvO2sN8+QsK8j/Jle20nECWMK+eVJYiZWD1V\nJ4uqn9Dlu4gA3jCj8kovFLI5o1yM0L6/6QelcjJBGTJcXoupjQJyWFYv9oYm\nsdpT\r\n=atNI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6e8529c37595dbdd503e15c7a57bcf7bb31f4ec9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.15","@balena/jellyfish-metrics":"^0.1.75"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.8_1613368672307_0.5076672769965072","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.9-renovate-non-major-b198f41d6d7f806a95d3b962f29f938f21468867":{"name":"@balena/jellyfish-sync","version":"4.2.9-renovate-non-major-b198f41d6d7f806a95d3b962f29f938f21468867","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.9-renovate-non-major-b198f41d6d7f806a95d3b962f29f938f21468867","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1087a43bd4a9786dc941917a91eff8c919ea745f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.9-renovate-non-major-b198f41d6d7f806a95d3b962f29f938f21468867.tgz","fileCount":22,"integrity":"sha512-onm9n0pa6jIRDzsMAm8Fn8WlOj2EuQOmj5YzJdlRFr6MuTczqwmbvZOYAGbqbMT1Dbbz3TfR2vbrquegjX+I2Q==","signatures":[{"sig":"MEUCIGDkyKhPe15ylvjPm4teD5XXOnRlJbURNQeipUGM4a1kAiEAt3PEELGPfsxroViY1Wcx4chku2m+ferF89TjrwppqTI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130109,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKg4pCRA9TVsSAnZWagAA9VAQAJV9sfbPs/7zPPXXmaGH\nUiLEr/uy7+q1LpZngyLWv+9KtTTlXrP9lYeIBEijx352uE/RMF2+jDos0Zka\nYaEmMUV1LuV7JrT2ZAS5Rfmh5g9F//U0skrCRXtUNYdHW/50gAqDF5juDF2p\nxS7lk7g/tn/wkuoo7wldpglJe+yiCj+dkw3T/ImWjJZ2tJ6HIuHPvFJRJ+uk\nSJQ9ji+R6+GO90JV4GFMXCV300AjO/pDphNw+RXRn136Vzol5MMSABy6Z2tS\nJXfUkB2IrtgCBlhapRZNzhsv4bPnwR/iiECRUoJmBk5Kb3NREAqUaYXzB3oy\nmtWG9PF4FENWEbh+QKADAGmtgP6UNv2YFTEBQxN58zO892igyOo7NE9r/wv9\nbZ0IBZrXJ6z3ZNrhWRFhfsaThxWDrnygMCLDpEUyMJBHUj12rm0jfC71PHRN\nB3pTkY81KSj0KeiOLnGgUlu8Ep1cYnTSsBVkJI2aiyhE7Z92pZ2QZmib9Oo9\nxT42lT/4StS7lPOPdzD473Mb0dB599dbdTQ0dCSfa9LkdDvWvVmSEFq38s1g\naSkxPRZh2k81zHELZc/W6qoVisZDtl7ZSk2LXbwny7tVrU18YA105RFqnYuU\nEylWpVlakgN43g60DNeGsCwj4sNNlHnRGsypKChuF0gt314g2OWJ0zZvgPIQ\nBa0s\r\n=mwFP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b198f41d6d7f806a95d3b962f29f938f21468867","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.15","@balena/jellyfish-metrics":"^0.1.76"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.9-renovate-non-major-b198f41d6d7f806a95d3b962f29f938f21468867_1613368872815_0.48025093812481456","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.9":{"name":"@balena/jellyfish-sync","version":"4.2.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fc7b60978edfaf6cf010132d536f0c928b7ef251","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.9.tgz","fileCount":22,"integrity":"sha512-Ow2s8InlfkqOtRkcAcMteh55T85HMn0+GW8VeHFEix3Buq3NJZCaXA6Q30OTyqqRyOFg0v08hsnm4J1ZVqBObQ==","signatures":[{"sig":"MEUCIQCMMN9fJ9C90ygvwJbLzdDetLjGKTcPQooCdRzVOn8DfgIgdJIEpYIvkUg6YShQbZwznmH0qGxrehy2mEtqHwooXeQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKg9+CRA9TVsSAnZWagAAXlsP/RqxxrRNH5yM7yJZmhGa\nyX7xLgcd9+/OPwqmyedkPvGJKnLRh2BBbdKR4+K5mWEtClS+u/zyX/IB8zmB\nGNcpwI963IIGWv43i9gMa9n+dqOIZxaSktU0Y9GobXaJeA1QtlSLmwGgCjuh\nZhKoCrL2lIxgMyQZmnM53dBKA6xbBTQmDNeuk/5iJI4OMadjIO+atwHABzQe\nPVlrFyNog0wki2G1jYyNFwHKzTkzmxiCpoJyVw/WEkc/r33QixY24Buq6jxw\nWqFzeTBcMv83XbLw4HcmY2NwAUdvbM4TOouGSkux1raoxihvpHZWxUd6VorZ\nf506SyYtWCQOS/YKoSH8k7BCq3M/HTWp6tvTl9sVPAUE1OH+f5MJMqnfyLDq\nECVZNcYLqd3vYqlHsa2glYwUT0f1MdeaI5/DOP/QoEvk0lq1DP57liLTH5IV\npmqXr5xQyTqJP+O/yFXfZJMbdYlzPTSuFxY3s4vdql7eq+jEo2tcD+My2Cmd\nqJPEFzacWWHG7Dp5qlcOic24G99RxsCz5GSnLpt1rv5uE3uQved+MayOtAOm\nBgIzPSE6I3bhGGsiCIhhNM1y4HpPhr/Zyc1c0lhQNS3wDtoRZhJZ8CTSUWLt\nKucGDzeilzcttdB5uoS3DK3TGg1BeMgb526/8XpQ5xmwO2JficugmGPSf3Vn\nCAS9\r\n=wZMs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5ccf84bce0a2dd883a0b666352933aff67678d18","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.57","@balena/jellyfish-logger":"1.0.15","@balena/jellyfish-metrics":"^0.1.76"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.9_1613369213718_0.21734102686880274","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.10-renovate-non-major-cc95c91dd1575c85a6d49818b78ea0b44d153dde":{"name":"@balena/jellyfish-sync","version":"4.2.10-renovate-non-major-cc95c91dd1575c85a6d49818b78ea0b44d153dde","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.10-renovate-non-major-cc95c91dd1575c85a6d49818b78ea0b44d153dde","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a8b0e5d67cd10cc64c147e859de38f8309e7a3e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.10-renovate-non-major-cc95c91dd1575c85a6d49818b78ea0b44d153dde.tgz","fileCount":22,"integrity":"sha512-hpykGtVz+Co5KguQXejjQVXVpq0vUkgxJbtJQ35NuY6LahWeyR+YOINEjEcqU6nUrGKgzzIyG/P/eSoMNsd/5A==","signatures":[{"sig":"MEQCICEDVh1PUcbprMadhRwcSZRQ7yZqHlIwwjdBjcACxp0tAiBi/mmJRY0dnZRuDUWyrrtwfQnvm5zzDPqmpGZedE2XQQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKin6CRA9TVsSAnZWagAAbKsP/AlPeiszInyx0EdLr4+n\nyUWRVYugu97lMDvTvg5NXLN7YwL2tDW9ZMWHigOEHPil2DTDSPiipgomjIsb\nKuJDMy0iMVBvUaHjC/SatmTKm621V/WDEC3VZDvl+zKaX2gZpbWyBMrQEvCU\nPRcmmQGW5itrA+PFU0X01JbMy7cJK1iTgW9vsWXm8uVzcb2kDJGbcIoMhdvj\nM+qxsvtk8MDGpky235n0cp/sNke6h35VSTWErVEVDkQCWkdEb9/3eWDKUV6v\nVQ5AJHA3X8FoMYEMeCycsKZI8Tl84gSdYA0RIBZq3ouZVXWMJYHIPV05U8JF\ncw80/n+FuZOObra4JW6YKP803IRrdr106WFaPxicSJpzqFaPquuSPMnYjh2/\nb+ZobwaFGHbaRQxnuFLxv7xu+iC8lOf4o8ecEgw2WxKLyaKMnzEOVO1vfAhb\nZiIZsF8oxdettuDGYVn4fu9KFYlHN5Gjg5iVwRiaG5HNHLLR6jAhlTFpqN2M\n3/7/JTAElYGvkYDi/PccSu2liWC40OfHctZ5f10iQ+uq7xKPFL8Hx7iTQ960\nGMkWXfDrFet+QLxAnM/08ES5hlgPUJnPhZE1kXNpeZnMGWASbDGF0R7WIOz0\nRon0aOfJoxSzZsXcX8EU28iZ9VFWuqY8s3oBARSJRPuoTlzzOTtpVKTvehM/\nJPDR\r\n=EEOb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cc95c91dd1575c85a6d49818b78ea0b44d153dde","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.16","@balena/jellyfish-metrics":"^0.1.77"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.10-renovate-non-major-cc95c91dd1575c85a6d49818b78ea0b44d153dde_1613375994196_0.9183254660459736","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.10":{"name":"@balena/jellyfish-sync","version":"4.2.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0111ee5ce49e914ea06972127feb6db4b8c023b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.10.tgz","fileCount":22,"integrity":"sha512-scIfduUvMwCYME0m6n2aujrxYiL6k58n+P/uFuAWQrgho+8t1eJvyZ+jHylHsCKMFYm4GKierIzlyZwAcCfYUg==","signatures":[{"sig":"MEUCIQDgersUE239GNQbHuFcs/Qde+INz39ab68bL0+qpbeKcwIgVjCJBY7sV9Fk3Hux5wdMlphF6yk0fRdmfv4yZbr3ncI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130119,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKiqkCRA9TVsSAnZWagAACLwP+QE9epZSddmk8k74tDzw\nS7EURghNkOAUrEGOmC1wSO+wrbqQZp7GYpdGdD84hG2GYtuGkk6y/TCn8y3X\nCpUyWk0SRT0zIMuwFOuQR4YobY46TKi0N+tsRO3dAUyhqh0rLoU6WQaG1FvU\n2SLlc2TzK3qBLDNcT2n95dtWZ1CovIWsz1j9CnjJeA5kp0qPIkB10rd2CaSX\nKi4b/IMXSUDTuSfg71eG7KGaWeV6QBq9ZHsNYhm8dY7dx+3EHLnKxomxrjpN\nt2y3HiD5NFTqrGathfvaQ5bKqbTI9SpbX1N0R8ceMPaERzqjM31rLOEW5jFp\nBUvVYvFvQyM6qBxFv09x1xEgEINMWtwsewNdEFX3xpVyoM9j+S3pGrLKIlrm\nSS8s5lkelpHxhm+a31NUyQ10bEiecfF982gmKGqW7iDj81oRFTkVSBHIcX/m\nP0FBeWVioem0O3TXvJ4b3TykYN5/DXYhWOo8wbNuE0+9bSVw1zXSqKbc8CCb\nK2XVbA1o7EuBG6ToHcZf72ciaZb5uHAq5LBPQVMzt5UIbzl4OGTa7LwseolT\nGIpFP+0tvkirrOWDwr7NAew89P12miMXOLWQSaCpWgaZyHtogPnJ5r0muZy7\nHm998qd87aEJ25NMrUHkGQXUaB5vkLKAz7V+5B1xpQiL0weyYn5blf/2OYxc\n435K\r\n=Uj5T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8e0f249f0699d7ddcf85810cef1343fd4e87df48","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.16","@balena/jellyfish-metrics":"^0.1.77"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.10_1613376164345_0.9326517421227369","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.11-renovate-non-major-f5f5438b165cbe1bfc1398d615034e2e5510c962":{"name":"@balena/jellyfish-sync","version":"4.2.11-renovate-non-major-f5f5438b165cbe1bfc1398d615034e2e5510c962","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.11-renovate-non-major-f5f5438b165cbe1bfc1398d615034e2e5510c962","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d98bab8340de4fe07ac0909a94992bfb7c1cf658","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.11-renovate-non-major-f5f5438b165cbe1bfc1398d615034e2e5510c962.tgz","fileCount":22,"integrity":"sha512-4vphj+rlCb86xEm2yXBc5jUu1ZtrCyddeYCicKc2K/LEA1kG62es8/dO0DrWUzZ99X1M47R85mA9sejm1qwlSg==","signatures":[{"sig":"MEYCIQCwVaOjFbaySsABMChL4g2KIDBYtdFvs3HO9L9KccN0QAIhAPRw2fOjehGiWcTpcENDQ+/kV2t7nfy4AcUulVKS1rMa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKkxyCRA9TVsSAnZWagAAmkwQAKMEASiXXBfSqKKVBCcu\n7RgSm8U/r7wHdRDdCOxjpM0YTeHJr9SZHqISaULCPP5pGN7y1A0MCpxJ+IJ6\nV4W8xtjDpmVcrbu/vnCFc24Sq7sVGiUlT/6MInmDS8AeDLFpfr7/u513oWog\n8PSgn7vAKctQnpqeNOJqT05KiYWQ2m4F3qqWx8WEWNKhSGwBjIIwrqMmKsXi\n8bVFX9t/P3FkWbemn2k8WZTArna2gKfbwiaklxbrckbHvzXRxoCfZdWEYddv\nu/a6mKmRExnrcc0YjT9fdAIUSt2YtNNhw7Fj+Y1xhM2Ryw+MOa6GIzy4tMsY\nIS6HK95aRVjhK2TwxwoZWaqPbKq0YRo2p7yHkPVKUxo/SkEHx6kGCPFrYYjW\nHkvTtAtoHQ/SAeqDCKNCTfIT1tlYoWmCyZ1T7bv71eZ8nExxyhK518xucBsJ\nhG9OuKHHwXxvU90eO7YUB0tc9n7LldD/hpFBA0JLSsfiKBsPRpMYPIVPnYuc\nvNydhRZOvTmwr1RmbiY52YZUnl2oEjckzbBpiFB3YfL0fhgJXKI737ht3pX/\nRmdlw+WGNcMMbOIJPbzb8T68KhwZAsa1F6nVg4PxsMVYZIPsS2CKHVD5Zn1U\nIWzHOMUmrAttHwNj2T/p1s5W9ixjodqxd7tcbjnt7/NprX4bhv2MVVlkAA0h\n7xua\r\n=JY4p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f5f5438b165cbe1bfc1398d615034e2e5510c962","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.17","@balena/jellyfish-metrics":"^0.1.77"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.11-renovate-non-major-f5f5438b165cbe1bfc1398d615034e2e5510c962_1613384817526_0.23416881512237575","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.11":{"name":"@balena/jellyfish-sync","version":"4.2.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eea2085365f24bef59019a89291db535c5ce82ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.11.tgz","fileCount":22,"integrity":"sha512-MdJfm7P146mNGtdLGSScUFdZuaQQz1gdKIdbcj72TR8EAaRKpuZsWYgfR3A+HmYa45EwnY1z9a9Hx5FvPeWwLQ==","signatures":[{"sig":"MEUCIGe2av/EV5WchXqaIigtGhsbnIlF4TgvBnRctF0QtjIFAiEAmlUX2IPtNRYCKAIt3pOe3nvK/Bpkr+jnqIZ2sn/XvVA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130225,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKk0VCRA9TVsSAnZWagAAWKsP/3f8MudJg6CrEBp3UwGU\nkzQ4AUylEfEpTA5kXvpucph2xMKkHKvKMDPzfQPe7ccW/Y4GFDaTk2Wo9+3Z\nft7XGf6mF9m5HMioJpVg0HS4vZAjnq9G0Cx0HRLi69Ja5CNPF7dJjl7yL8l3\notoBcQ+v39BX6O3MoBKXyEmmdK+KN46HTJk7sgETqzIzN6WjNJYgaJKgIgXz\niWbmdstDqcDs8FIucRNapEVnx0xdeSeii3IIQ3es12qX8PXoU0WeQTSsf+0W\n11dmOeUBoiCI2LT5G0oO2QP9kIQd1Ht5E0qwGwweTCNZRd/LVc++93o0YUHk\ni8whdSc1PC/Q3O6vpmkxCaFRJ1MaG8jywltuICpMhOMkctKVEheVB6t8o+dV\nvf9kX6bCuKeYN1sVI2MfUmoBVBBMOkll/xWK+RZk8lYxT5q5aFjqjmoCU5mN\nlnyRZ1YbZZ00mBajpS0j2J3gdLIgDPSYQ0XKqVD5WKnLfjVqELgz3PkDJZM9\n1wpHk52sRn6AGPzYFy5nvmw9chYU1NFXFDLXtL4cTJImXjroW1xTde5RrVFP\nzMogcOdxB+efQvrVm0IxRGYFSWMb55VDh9/Pi1o6cYVpNX/zFsLvHlajQzg+\nqrqfMVrBnTTisPXXKA2j+XmaPF8IB3AyYnMT0oLAPIDr7CiL3dHDPF6QToJS\n89dx\r\n=Ibyn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fc4dd743f533570f975542019956ad9d5a54ea4c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.17","@balena/jellyfish-metrics":"^0.1.77"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.11_1613384980952_0.23299111310188425","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.12-renovate-non-major-24ab9188d02e948edd054355c1cffb4d2f038050":{"name":"@balena/jellyfish-sync","version":"4.2.12-renovate-non-major-24ab9188d02e948edd054355c1cffb4d2f038050","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.12-renovate-non-major-24ab9188d02e948edd054355c1cffb4d2f038050","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c0ea8eb5eeb743ce54b3b63380ba04e9e52283e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.12-renovate-non-major-24ab9188d02e948edd054355c1cffb4d2f038050.tgz","fileCount":22,"integrity":"sha512-GmyJ0vjR5G49DPgjbsVRuiVZZUU2yS8W0Z+eTLBo0zDjVMv02Y2QoikigXgplAoSbDGNGdGXZ3r1PdvRade1qQ==","signatures":[{"sig":"MEUCIQDVsaLqGou2ETmeYaDKNgbC5WFqdaOfW2IOk5s4hOARUAIgFJbY324L2mJWufyUbPWFs68FhwCwYjAZqKWo8+2PAX8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKna5CRA9TVsSAnZWagAAhi4P/AugOGo5yYFEGgCPsDr1\nWiLRxmSsDTt9g82aDUVPtE/z2Jh13sC2cKSj6GW21WrFJVmJag8t4lKt5Mgk\n6IeTBA0nEjJA0bTQsT/U4RGtO4LXrlMLwRyxG3MlVzQlSCNIZ0mOwoZ+SDLC\ncJnbPYXeNCJaLkippUpijJL48pXlq86NkTZbBwvX154fj5mZ9AFhwo5vx3NT\nqMeC2qu4HCUzQYZmmyuNL4dL4cgBUMWtvEM+otI+BVWVwwx7eicuHB4XslS0\nuKxNOdtqdnPNk2GYAqrT5CDUAqx1rFisqTNtw7F1LnPFkQ59EKjyUHd3cguu\nrKhYbqTsCLNfJ8XS7ovjAZUCBWSVxkrlUsHV2XxERRFoYFx/5Gd9l+OYRD72\nYVYBdECh6ZQseEolyDO9965goVhLXWRhFfuCGXPx03hR36XpX5iNyEtpXSSn\nZ44qrU9RJHMPwzgswfItK9CSKBgzcJEHBr4PXeVz9uwLe/wqcMgO9OcmDLie\nPQaD/Xm3kPBErOLSNf8EY9aIy71qOUL3xgIgDustNN15nw7mAEBArbvmkqWU\nAVkdV3zqUSsa85KkXPPkAFtwgs0pnNuFdR0+joF3RlYL0KyEv2gHzEyeqOa6\nwmBQnXh5QTFvAHqhMh55enqeQZbdurFexAwdxxIBPWTiLom0P9Qtiu8xe7zS\n9Q2c\r\n=V913\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"24ab9188d02e948edd054355c1cffb4d2f038050","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.17","@balena/jellyfish-metrics":"^0.1.78"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.12-renovate-non-major-24ab9188d02e948edd054355c1cffb4d2f038050_1613395640630_0.8502663775766657","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.12":{"name":"@balena/jellyfish-sync","version":"4.2.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b772fb072dc7f30d2b1a520592003e64c3a984f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.12.tgz","fileCount":22,"integrity":"sha512-WL0//4M3+dfJtDZZj90tJ/l5gPjoC7RqUZBgir89rE13LZ50qrjLOqAirWASDejZs7O1ipmkfysD/ZMIcwnCIQ==","signatures":[{"sig":"MEQCIFRtnfCvUP1xYsQepP4xU5HpZQRKPWA45aRdHhi0tKdEAiATAXGUAZ9DtVvfKqUxgxnflW/VCvH1ifMiMgmXMv09ug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgKndtCRA9TVsSAnZWagAAlZsQAKBYs1lunJBWP4WydTyX\nqjLFsR9PA1kz3WulxcNcip5sq3JqOHZZVYFpFdLZQB2DVC/tszgt4Uhp4+2y\nwEAiti9oaU0HBQLZROzeCKeXoFfkLQuLwRr/V8Jl6caapTuM0Iz1h9A2Ik47\n0qi63rPwetOzmJC/v2fzsFu0N04YvUPmN9a2ZDDlLnEyLfovfwFYJO4dvAIl\nlxrJ1pyatvSDHgdy/EgT8xP3Dkm+Alvq+ALGOLWdcP4dkfP10yh177zQDQF1\nfGlEjaLQUWRxYF6QdAaC4X8CTMS7j5FPAAV8lh769q0mvw1DK5ykx+L+C5hz\nTAYoThz3HMh++Qz62pyJMVGsYtfhrUCisbVLbWtA00wO3PJj4iO70D7eYrOz\neH/iA63oTZTdGz6nYGK9cC3Ft4qDXhMOjqG6sihye7CnFxWOC4EQPOYHwekx\nfhRAgvRR6RVn59BPMmt/yh3MLqBbWSnE9qog4ciD1d6kzdF4VBhRjJwqIezL\n1Jz9g4F5qGJyxRcqqMCy5ZYjHDIN03lSRLMeUvkwQ90SxZkIdfeOD6gO4R+V\nlW15F5GckL5kc89AXFavCJSehSMJyy5CB+iYmg1pd3KeKmCa6oRnq+DNfi+s\nqlIVxV0tzxDGEMzZ2rMEJzLLaVQZI6fXB2liwypzUWQqVkUB3vMCJnpRX7ki\nw+l4\r\n=r9lJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bb8270dcfdb2a9344cab1e1ecff2af2bfe1bc860","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.17","@balena/jellyfish-metrics":"^0.1.78"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.12_1613395820895_0.07663106810759746","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.13-renovate-non-major-f7edfeeea2f8481ade5b246af174000cd2bdee42":{"name":"@balena/jellyfish-sync","version":"4.2.13-renovate-non-major-f7edfeeea2f8481ade5b246af174000cd2bdee42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.13-renovate-non-major-f7edfeeea2f8481ade5b246af174000cd2bdee42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"999522cca14d7353c28c2f15e6f9a833f46a97c5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.13-renovate-non-major-f7edfeeea2f8481ade5b246af174000cd2bdee42.tgz","fileCount":22,"integrity":"sha512-UU+RoYArDgVopEO5Vns3aCkw1lBLN6ZVHN8lURI8cNYW/PVdqqZ1MhK7lhcRGrZgkYxtC81pEmEfXkzL8+hGaA==","signatures":[{"sig":"MEYCIQC5KQKanOgdFsQNi/tlSyaFK7KkVElXFZ0jaL+sIBB9xQIhAKZqldetLXNQYYVVTHwjvbBrefJnBkFc1ZvL5LWqF8Eg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK2EACRA9TVsSAnZWagAA+JAP/1S1Grga0fa1AWfXX6n+\n9QN0P3JXAqYxHn3ZTyJ4FjLuvBU6aqJN6NlK26ukiLBRpq13YQGcD8J9D2zV\nZm97oO98rDFyhGPU22cPjOIrbcu0tZ9GmO1GFjEexC/uXPnXd25AwLTnxMFo\nP3VEhCjWNfzH50L5PwOt79AfI5In/uJateFBQGje+52mPyo3fZ8126jvjhrp\nbNn5s7iFgKy2Asn8r/CAPST0hKhL8IZ+vGduEUTdwokSTgPsJCKlOj1eEbNi\noAqFOPCR1Z13Gn52PAeJN31gIIdaBA971TUjGenXlKUXF88TnLzFqNtKYE7A\nrfOfbAutukul3FOMNHOk9FlAW9QVo+FD8BwyvAvH4aBskElKeb3yGX3OMdAn\nFZ0+o/7N24pn0BiIoH5y3+GHlpX3LZmBVTKJ+j7c5/pgnUyU6QSqVYbqQxJz\nF0HADUzFAC4y3WowoUQF/rat+0GGF0psBLh0+WXucpUdZAIjWDNhPlRFTazy\nY87+m4RimrmKVMB7dBXes/wFmzqaZc6Ylw+LQmDt/p2GxBWGO3YhxMUuc9i9\ngxkg5isBgM1baOgjgT7n36hLckwQmEXm6dgMP3J2f172oSYGJHK2zDb+Ntxm\nZ8ldk2zE/LDZr0o22ElEbukEZdd42pKA06Gv3GgxiKxI5IuRaROHDlU2sYul\nfJWP\r\n=oiYw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f7edfeeea2f8481ade5b246af174000cd2bdee42","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.18","@balena/jellyfish-metrics":"^0.1.79"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.13-renovate-non-major-f7edfeeea2f8481ade5b246af174000cd2bdee42_1613455615741_0.5282608246317919","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.13":{"name":"@balena/jellyfish-sync","version":"4.2.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"70e22af81e690edd35383d8200c1b24008ff22a6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.13.tgz","fileCount":22,"integrity":"sha512-2HsW+S5zvmZtg66HLBDN2r/GVjzeIyUxgLqY2LHb5B7VYQ0v/9+jXa3BPz9HXVJWx/Fb3Y17yyjg5Pj70WMgCw==","signatures":[{"sig":"MEQCIGYJ/sVf8p1dT1b0d0tNwR+QY14hsDkIi7WqkbR8dc0UAiBjFk8Xz4z68FRULm2DOwDs2QQesUCAAMAEOFIDT3HSCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130401,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK2GtCRA9TVsSAnZWagAAQl4QAIUqmvf3IDWOPawJuc4F\nYF2CfhGJUV+RJNuQtJB3XI65Pgzkk4WYGTvFukcQweAalaP+48zXakwxBL3U\n5rU+NgR+n5yhq+9xFzKr+jy0aJ19kTexfo2MdsA9aBhgmdKcFqKjfTT1oaW/\nwpdYJOzVJQDrrP5EHK4jnjAZ//jkIb5nlsWGDhIq761GDowiE1hlYrpaiwr/\nBV/IJqAH+GxcD9wm9PxQ3btmkGRYGh1BqDqtEqcegTLiYUbEtrQJ4mA1a6yy\n4JC6nUa2LYELYhCdhd/lBwmaK7VXdqzgC1gPv4h+nF9eAsx27I0ObvyNA0eF\nCLKwrgWNoibr1N+L8Ma9g2InwiV956WlisuiXX344HpcIWnMaICNpz0H7Rgi\n17DurjxgWZvZOsd3eqqmAmoQlvi/4LefKE+p6QMLfTmNt1tDh4VIkzOpjBZH\nCe7HKlfzn3AT/SQiKbgjF77oAVBzNkqlSUn1MmRLkFVIkXWuwBNcsrRFPY3l\nzFMB1cRlXznMq42FxxOdhItX7Nds0AVlsI1nNtTL5YN16DJ/oGZIRMvAiwQF\nhxRH2JctrkxWmm5DdG3V0SLzBsio0tsNKwVztivCWpY/PGw/ci995Dsd9p8u\n7H7VppwAfY/bSkw0k9W0/VOlhVdgMKvFVuZA/obO6BcCNuqdUApByVmpP9PZ\nrKgh\r\n=qXRy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eabe2a9ba9bf2b3e82267882bcee00a2da4d6ad5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.18","@balena/jellyfish-metrics":"^0.1.79"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.13_1613455789306_0.7206684903771408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.14-renovate-non-major-19c5db2c9bb59148dd64bad7fe389d5ec2a7a457":{"name":"@balena/jellyfish-sync","version":"4.2.14-renovate-non-major-19c5db2c9bb59148dd64bad7fe389d5ec2a7a457","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.14-renovate-non-major-19c5db2c9bb59148dd64bad7fe389d5ec2a7a457","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d6da1412812c3396d9396c7a653d2e96f9952b4d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.14-renovate-non-major-19c5db2c9bb59148dd64bad7fe389d5ec2a7a457.tgz","fileCount":22,"integrity":"sha512-A885/gx4NYIPOyeAgEspPYY8nm5EAPwsZEfdAOwuLDRyO+bizDWyy0PlKQ4chKln7HSvbfvB5nqAmxFTzVJ3Dg==","signatures":[{"sig":"MEUCIQCcajDZv0AieYBKiBktWa3GbCVWo8PKoMjxZYeUH+QH6wIgOKFd2au/A+/A3JfM98Hr1IG/JeKxHQwCLiFXabvDf5A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK4PCCRA9TVsSAnZWagAA/9wP/1ZYC99inbRV4t+cD4qc\ng2B2a+f6UKUWqNcVJOePdUBUU/aFngPymKsyMkeDGmmp4Iyh9vPhzWFqVVIU\nN65nU1Ck3cafVeXrogWyjon4JBNxdoNXLH/WIzLmB/Dm9IQT/3B8PlpRrirt\neLObEJpTJaMkDNR69r3o5NvfemKgX1oOlS4UP/u3BNmRQE5kN1S3m4A9r1YF\nmuhhWJjZxxgpC2W1uRioDVyApa7AHG+yxu8oKoT/VKkp5wFidnvkvMiA+bxF\nVFvmbOsP5akWHuw5N/0mXxDFcL5zt4aS8vb+TUTT31XmRcx4fXvfNQGs34oR\ncRjT+f8cxOr51z5X3FCEZNx58VJMoa+j8J1Su7sslTdP+vDjeH69jwVxsKbp\njvtmurGGADS9sI0rZPwbaWlamo8mZoArHTtNlkoZMAIgx63rzE7H7s+KCJda\nZ8aJu5DFJ4qvRObA+zCvXv7NXQnzy7mTOBXz/OHEbqgLgEu7J3GuPmZtQ+vp\nlMvUcFrVXL27Cr8ICqcs0YwDBPlp6ln1oqAJcGuL9wysqrSqk4oNbq0EMfPr\nDsbTtfed/V7rapMGdDq6hWkEOrXu9dWuWHwx0U0qm+hTx2MkkS8LzdNstrrl\nySFeq1YUlDU8eDfIKATGcyFkFDBnnemloZxvCSatT9nmpRBDSBRC/c3d4xmt\nYXu5\r\n=7hmS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"19c5db2c9bb59148dd64bad7fe389d5ec2a7a457","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.18","@balena/jellyfish-metrics":"^0.1.80"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.14-renovate-non-major-19c5db2c9bb59148dd64bad7fe389d5ec2a7a457_1613464514308_0.05257200947802598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.14":{"name":"@balena/jellyfish-sync","version":"4.2.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8b0cfffbfe55e3b9bfbfab7cc70e4d0a595de514","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.14.tgz","fileCount":22,"integrity":"sha512-7yKQGlMghwslESaxAKJRI2kLq9RV9bQ60JLTGdxcjauHgXMpCBHFyln0P4weKoAWyzjqEhN48E3JfsucEbpojg==","signatures":[{"sig":"MEUCIA5TFUhvmr378hW9e5RjVA/GacJ458irLhCyEiyy0M2TAiEAriAwpzps8GkfB2Dlip6VcutHYjqdv6dHvbNHhA4G9BI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK4R8CRA9TVsSAnZWagAAogYP/0WkIfLV7yhBIL4CpLc+\nU6Q27u9qSnXvyCfrGBucTbY3/ot/0o/dUvZ47wMfABMHF6PeNFYXP/KF8mNl\nDWq8rGnzkVhd/bWsK26EaQUb/EllrzjqbWNLlanID/7FGnLv+l52CES6ihv9\nCGuQJcMzcsTWYuefg3corDgw4udj9uQS6TqSitLEqiZX8I3JYTrR5TnQ+FF9\nbIyXrV8CLSXdlGSQTw5eCRtxoHoOvhkNBKnvJt0NiC136Kyyq4AeNFZgFM9X\nUmQS/WNZciHkjZkcVRRD4jDoNravy8UKZmtjILEhaR7A+LZbSvC9qruu8Kpl\nUuVhi7h/AC7E61uL+KE/3FS4Lmihk+x6mTH1vR0hv/GpRxqf3cdHQjTACd//\nlB/ehrs/W9bgrfJfVhoMsF6I2sdS3DSuyHiXUmCfj8hXgLnusDpTwfUCgOp4\nB2D2Pho4M0FmNBUwJdT05w2122MKwDIq1JubC+mpBhtB/r5iXZR+5kqzhWwi\n9+M8nLvQH8va+KDmYfz6KWrDcEvcnYtFfCsPS/ZjlriHV0wXyS5ANnGPxoO2\nvATuFlesaQl50xIQ5PDpJJpH/5cB3SZd1ZDuoilEtaqp50oaRVqafO9JmMZg\njc2zpiOqy2v+YrNwRNQflt15jmdIVHzLCSQJes5spdpxANbCzPCwngx9YLc0\nJ2pD\r\n=P1FK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bf558426b9ed7c9918bfc113db8456933adcf6df","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.18","@balena/jellyfish-metrics":"^0.1.80"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.14_1613464699844_0.7720806399633127","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.15-renovate-non-major-9b540752f86f12be31895baba5affb0065dc74f4":{"name":"@balena/jellyfish-sync","version":"4.2.15-renovate-non-major-9b540752f86f12be31895baba5affb0065dc74f4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.15-renovate-non-major-9b540752f86f12be31895baba5affb0065dc74f4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"41945bc5afad9d6d26969439097ca79ed6b34937","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.15-renovate-non-major-9b540752f86f12be31895baba5affb0065dc74f4.tgz","fileCount":22,"integrity":"sha512-/ULfPPCPPeJXg9OqbcOYA/OQa25E5ddmbzipiPmNSs2uC4DUqG58hs5/9Djzn+dOmBp5xSsVhPpoQCpJUIOGDA==","signatures":[{"sig":"MEUCIBJUfraT3Slnjfw42bslgxW7df8yqcD/3YL1ZbmFKt2IAiEAsOo18xCxzHc7g0KscruMWkbIpr+GEfTrqQSQUjCy6fo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK7BnCRA9TVsSAnZWagAA9CYP/2uXVipgD32SGxBIPM4y\npu9yZuObWN6NTbzCNimxl4ZQXjnwscpV5nJsCVgn3DolopXVUKXX5gDHwZH9\ng2ybzzPlEk6eWTIEtqP4oK9Qb/qFQICLKxnAPVxTCX9a/LwU01Puf4zteoqa\nyA3uVEI8dhXURj6pR9lBCX6s/tOSU1bcv1qZNRTOj1ZnyhLFcDZvxUWG4S+s\nuenFmc5xFkSXmJIIQYCD0vvv/S2+g6U0TTb8k7sIMnK26r6h5O182fIZF27U\nNxcz0eiL2gyJNEFV2JBi010/vjx7AoAWIufqbcbSn7KYW7+3jUQeMANN2wtY\n9l1kICUS6lHYi95VkEvhCOisDOMmUyLiHqJuAF6GuBSSpB+gDZI+VkRsEgCW\nxUEeO5q26ZSpWDeY0mKtVehapDq/5lYvahBQBt6LK8Pk0kEY8FF9aFrVkhoi\nHzAmXK4efHhy/SXXy9/f5Umbxgksms3qAB3rxVym15F0IovxXpfbNIVvZ6z3\nsNva8RPlb9k/DXap0E/0DpUqGLxAEzDLq6rRGqjSiqafi1chLiXhXZkyftWW\nEJWlfnqtDeyoeYBRYhTDI6Lul6lHaJbEvV1eCPZe37Tu7j/zRjUiuDTGkkoh\nLxK2jSmjl24zxqYh7/kkKNr6G+I0vQyM+CABcLFaTDRqVAC/EuHrW39AYMbU\nMExQ\r\n=e2wH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b540752f86f12be31895baba5affb0065dc74f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.19","@balena/jellyfish-metrics":"^0.1.80"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.15-renovate-non-major-9b540752f86f12be31895baba5affb0065dc74f4_1613475942520_0.005883047913003203","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.15":{"name":"@balena/jellyfish-sync","version":"4.2.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29033914868bf3c116c976b6672d1576bb95c841","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.15.tgz","fileCount":22,"integrity":"sha512-wPyIP5srTPFY45HDt3mrgz1GovJkPd7F6P/Cvxv/b9kM1RKnsutUlomSj3ZrOa4oGDeCHX4bka9894nop5QVsw==","signatures":[{"sig":"MEUCIQCj6Xv0tZ6YF0WdHnHqjEStl/sHUCUvvhHvF6Pai/DNAAIgMZPLxs2fWJOcpGHZQ72BGaMvo3zgCWNSpCeBRPhPOjo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130614,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK7EECRA9TVsSAnZWagAABF8P/28gG9tTOMmzP6OpOltU\nMwh6OdKaBQ29X7iEILHhDzkGo6gvDuYi75BaYzZhkKKEJKLF567QyU+ZklYL\nC6p3MJDAiYF0irlvxzeUZK+0ApnhnGMGe3IgkD3+a2ze/MHwr+kbgkj2O48w\nMadkLY91oSsEpW21s19nWKBFEMaB7t3L09y1+mhJWy6eb8q9Gi8DmlswzZ1t\ngmK2vqAYeko96wDxGYH+AaJjVhHz0QTDRCPxUoVqtnuTbkvksWD41fnziwX4\nj2lD3TFtqf+7qvRSo6eWcyvTyLIiKmoBMmhUzF+IgShHCmt+DO/Hlhqb18IO\narWZVxAwl2LxWsfnddUjmnsk2FQQ6BFdJ1lxQhIM7w3uOfnA0gSbKAjV0CN4\n7qFM3JEsycC9jlkWmw5CRKmJ+A4QRinbRLdCyDNJWmmFR5ByqPOLYJcN0Wlg\n2E4QgxodM1sj5ZcGMPjx6KlQWFL3OtNgvyi6AnUMFa6kmx0LnHe2px5QKyEp\n2PXUXsf0h/83Iy/OcL5/ixEuyy1dq98F1W9FRrM5mx+Aiqe6DureXaIb939v\nfjWQ+R19zbVg/4vzS0ZYDS1VGXtJdjUOK3UgNLCmJ4Bm4axXJlJExt2psZWo\nDpq8unY/8PWfg+tGnLkD8v6xaGkSPDbdFJZ6LVcuQrdXxug2mera8yWKSmpg\no3N2\r\n=OwFF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8edf7c6a016e15db482f44062f68fa1b64367295","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.19","@balena/jellyfish-metrics":"^0.1.80"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.15_1613476100081_0.22868690921760004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.16-renovate-non-major-ef8777893b247c753dd303707cf6a5e70decfc27":{"name":"@balena/jellyfish-sync","version":"4.2.16-renovate-non-major-ef8777893b247c753dd303707cf6a5e70decfc27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.16-renovate-non-major-ef8777893b247c753dd303707cf6a5e70decfc27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7257b2d52dcdf778af6e35456c1076c239dde0ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.16-renovate-non-major-ef8777893b247c753dd303707cf6a5e70decfc27.tgz","fileCount":22,"integrity":"sha512-pE2I71M8DR9sBIZvE7/BoCsMZ/h/nGq19PNhfXuNH3n9Nl3p+FRu9qwsL7D+s/1FJMXEKgtH5u0oDkQiE/l6Gg==","signatures":[{"sig":"MEQCIHG9oHVQkyb4wzXr/vAgqCOh91bQTbk7uMZPhDEVIZ3MAiB1O49JSAsNDMV8uGwCImMIjJU/izpRx/zgC1GMKSHF6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK8OiCRA9TVsSAnZWagAA0hMP/1tPHo63nWLUZ7jxavVB\nef2JKjDRzD6clVq3aDXwXKHyoEUJvGi4Atei3ynQkwhDbI4rRx4ySjgLiBGt\nPuq2qlW9WKMZOSJ7tM9r5fQ4aiIWnBHhMXd4L3/rwrtNV0d/tXWvNnpCfNHc\nTJrXWG/xpsYpmz0Bp65Ru1GbVJNIjlDsEwhlZJ3t32RU65X8mnAo3mDRQcP9\nZPZbHAvyzIqftwYvogBHE685bs7s0OX2Br7wK3o8sX7RS3nmRQg+iMfMeVCm\ntlEV1XfYozVWApSKl7TOLS9WAktiMHZ/R9DhkgStFZGik1hEmXApQAvqfZ8i\nRruXjPztPOfhf0P83YrSEr6pQHinJHHM7yTEDYsySLyMLQl2aujoZywP6kgg\nHWDX5bqpb52hn0/zXZ0ocnmJZWQsdTdYUe3osmlDM7vz6n1jjLygQ9WwWs1h\nXa+d7cwDu411L5fc0HWOJdQ8as4I1MUfajcQotgSgYu7Ybx4JAQOagHc2m2h\nbtCX27SiwAarHl8rhsWVG1oDhOFG4rNyj9KACB6+pdf41M7DV8BeBJ6LSjlX\nX0yKhSYKWYZdT9WDA3vywwSa/MRyZwVlA9o53+2wH3zI5ozInE9/tRGMcmKo\nLNLz4oyKv0kOmr8YI8Js7ilWvteMgTUUMhYAnZMnb/RqUqfqOt6GVqWZezNK\nGavq\r\n=8Lft\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ef8777893b247c753dd303707cf6a5e70decfc27","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.19","@balena/jellyfish-metrics":"^0.1.81"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.16-renovate-non-major-ef8777893b247c753dd303707cf6a5e70decfc27_1613480866048_0.8945067656873524","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.16":{"name":"@balena/jellyfish-sync","version":"4.2.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce5afe651a2561859e31ddbe80f9309f91606de9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.16.tgz","fileCount":22,"integrity":"sha512-hfaTpq0iVW3l7URSjahlDDF2D1sOYZl5Ek6UpQrHMpFzJuodtS7l/gF3smCiHZe31hhonyy0Qil3ixCOAsGy+Q==","signatures":[{"sig":"MEUCIECOB3XgHhvnnzaPYuH1ZZzvyl9t7qqG1Vke+zfnknGPAiEA2qq4gP/OjlxP7CNRdCt6l/Mj3jOSa+fFU48uUnOfi+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK8RrCRA9TVsSAnZWagAA8L0P/1N47Gcougwe2fSIh5fl\nsIx2v3fqMufNwUpKlyxyDiTPUAEwMo4tuZ5yY70Z+GgaMu2AYekOyLityZnd\ndS9igEXW7mMKW4D4pJkX/giFRo9vIBIvi/6ujn2lLg4pbndVTgkZXXSvoRA0\n+v+5nIqa00mIzss5g/UhuINGa0r7Ry3OtEzwJe1aTDXr9v5+HCb68pJ3Wvme\nhpp2c6Gozn0LyEZoZXbRZnijOOPqYT/xIfcYLC3zuPpMIRYMcqpnBZY6Nr6f\nd6S/yBd9a+PcXu4PcwpIrC4rzdo4Ot2qaw8TRo8iQ66mD1pQ1fzS+E7zkXAO\nYJbaf+ne2zq84YARDDQub6gcUTe4dAw5oDHL2ahTKLZax+jsd2PMgG+km52Q\n6qPOWD5eVAB48zKhYnRGBWfk/zLpEebt7ppsxObbwcb4fiSG0Hc6FsjLdB2q\nbMG4jRz1q2FMWmfkHH4InO/M2xygDkUL3aDexmj4a99oPitO+Eb3t5Uhiqpz\nM47yM816cWg+JQLJPWSQN5Q5jjWOjM97+rhA2kqXkiTnPg7af2TW4pjz5ZGb\nnFZLyaq+8ymRfHjmQAQgGBIa5O4gyGOZr0e90k6MJj86Z95IvQwMaQk8k8Qd\nXR6ygBPTBPshNxfva5gtvX+5rjLifKyVyvE4igIsZ0+kGX6+TQigrIUgnRjQ\nxTIm\r\n=UwtX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eb8bf572613ee49be5e8eed57c492f2c25470234","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.19","@balena/jellyfish-metrics":"^0.1.81"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.3.1","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.16_1613481066864_0.9489224914624124","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.17-renovate-non-major-7eb8aab3d0765d4c6e50eaafd13153368531fbf8":{"name":"@balena/jellyfish-sync","version":"4.2.17-renovate-non-major-7eb8aab3d0765d4c6e50eaafd13153368531fbf8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.17-renovate-non-major-7eb8aab3d0765d4c6e50eaafd13153368531fbf8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1e7211f165f83e16a21ca0ec9ddacc8b8e49220","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.17-renovate-non-major-7eb8aab3d0765d4c6e50eaafd13153368531fbf8.tgz","fileCount":22,"integrity":"sha512-vKj2LmujSMWTFDgotyNdbEu5rrT+YxhpnnplQSKP2OUvXk6MlTLMJJJo8H16hfawjaQXXvp7Zk13n95c992NsA==","signatures":[{"sig":"MEUCIQCgYDguR22JUdXGR0b6cxmR1WqLjo9hBE+Y7crEx+t2MAIgacnyyZ0SmK6pm9UXbbY9a926n8wimExmNx7fMe5HyDY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgK/Q5CRA9TVsSAnZWagAAUYwP/1Kv6kYP/wKuyCE3fa6E\nTVViVUrqEe7pjU/C3iYHE/zej3FPqSNTlF07QEJG2lcj5AQUv1+/SOTGa1rR\n1HwGIzgMkiq5zspFjC8in6yvWbX4vnIG5ryZlRwsVPKEqK9gffZzrPVFcy2Z\nyXDtASsaOguAqFuJjV8tuaZAVjptfZpzFapP1PX4bLPYQMRu/BIkmEvf77OZ\nC8kAAuGUifZFQcF5ctvQkYjWr5WHDdsvrIbhJyOm80cyGiKLgFCBkGp9XW6r\nMXm1AdWh2Uq1byt8UiYtZ24O569smVd++8oPp5y4mQjLUgjnPIQrJnRdzBrg\nBT2XcZ7952zPL/82YAigeV/mBg15QyfW/PYbUgCI4jTAwfxTDfmv5sx95SSi\n2qQGLwGc2LXO4sWVwjWbA0PKaE4DOYGfIncmgFJJZQI036b7/Enec1a5EvZU\nTHfhLwIkSop0JoN7ZmSoW38vcgMCfjGiF39Cxk8tzgR7vU4uCOJluUMVY/QA\nwfY8sSZ6CVmGGpi96/np128uIyEYlarjBJ5zCKeZu+qPI57cFch3nP59bieo\ntjryk9FKCVngWF1ZdUQJjnw1tf0/dSiJuxhMUcClLgS/H9iExsebLTPSH07N\nTgbLBazYI2fh9JwxvsRVDmXLk25PS08yrUqF4mFlfZSQWGvT4yz5BlUFErPb\n6W+q\r\n=zLEC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7eb8aab3d0765d4c6e50eaafd13153368531fbf8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.20","@balena/jellyfish-metrics":"^0.1.82"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.17-renovate-non-major-7eb8aab3d0765d4c6e50eaafd13153368531fbf8_1613493304914_0.5544660720849126","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.17-renovate-non-major-81549da44b2e8c8fbff581537c673068fc4f4aeb":{"name":"@balena/jellyfish-sync","version":"4.2.17-renovate-non-major-81549da44b2e8c8fbff581537c673068fc4f4aeb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.17-renovate-non-major-81549da44b2e8c8fbff581537c673068fc4f4aeb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"28244e82bce594425711836521d60fb9ec3edc45","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.17-renovate-non-major-81549da44b2e8c8fbff581537c673068fc4f4aeb.tgz","fileCount":22,"integrity":"sha512-LjI9XfVjGSzKjfyA9EDd0ekJoUJj8gN87RYvMFRhostFeWLsrGjtgsAl7yizM5BTA1e2w7/fLTShCX3C2ZkWCg==","signatures":[{"sig":"MEQCIBjTarkrlF7zWSkE5nIp046N2Q/8PsPAUXRktSlGZVTVAiA/i1f51bbFEKWr9G2CBfhpVWd5sgAwSqvlJa75EwsGUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLCLLCRA9TVsSAnZWagAAOaEP/iDLmav8/AsbYFN4qgL+\noJnDYC8vvM8WFB8z0/tx2eeJQJ+y6SZTOgkf3D8/CkQb8lmGDvAEAx1pSyEv\nVSLVrMvPcU76e1geDGgGLtnLVUfIb3a9ChG8ym6/wzcHMsXvcqsPPzgEFtiM\n5U9adGa4/r/iTDBaaHe4Lrn97FPjoifuMIUzTMvkIrAU0h7fOMOKwRYUqQs/\n7PXgbDMk7BavY5IWbNaxOvjdlvQRCkCFs7wU/zhewdrqtpYi5Wv5zbH+B12X\ny+Gn2xqz4ksP5aPEWyYnjjatmiGh0F8EQn6uOIuKiDBfiHIVqZpmMN2Ou5jX\n3gvE0ogyUR3Q7hD+8wgn0UVfI5Kxl/eaEsoI/XY6FiIbMwJfeKONNRdVYzzu\nllCuV1XgjKDk9J1ZOS30w5aW+MrpQJyp8mgmfmpsD57xw/qO90SShBdd+Z4B\n+yr0AisrvwRVRXijdbyN9m0gY2WJQzxgXtP2fQE2wIFtTbJeACDi74nyj4gn\nyy5DV18+Uqnml+7Lh0cGBz9OWUDqL1WTDg/XV6lpZM2u5TDPEGifxFzYoEWa\nDVhpqyMzjfquhzEunM98aHXAqJtj3EBI06OVIb5GzaAqpKVuPwkJ8FErQuu0\nYmOCXn+j8GBWhgvEcC4yX4NTqfO8eOgGmWoqPxf2aOK1SSbwjy1qZTwTQLm9\nQYUQ\r\n=kAYG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"81549da44b2e8c8fbff581537c673068fc4f4aeb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.21","@balena/jellyfish-metrics":"^0.1.83"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.17-renovate-non-major-81549da44b2e8c8fbff581537c673068fc4f4aeb_1613505226664_0.16598130890428098","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.17":{"name":"@balena/jellyfish-sync","version":"4.2.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9c733490427c44d34a4a52b1b947dd01f102ecd4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.17.tgz","fileCount":22,"integrity":"sha512-fD/EnugpXiNbbg/7pFJR3daflTP9XTGDsLL+pNnIrqJ14XYHwNF37xnuTqBlPBj/PGhWSWi1+uiTGQwdkup1xQ==","signatures":[{"sig":"MEUCIQDNHEbl7lSdvkxbt45TZEB7JaEMgpS9ixCOiZ5C3sZbbQIgRYVURdV5xJKD5S76G5nRKdbQrrhwfaWNkPisvfOxXcY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLCPmCRA9TVsSAnZWagAApQQP/Rt+1McGaX4IXSFTvwEU\n/BfuJ5Xtfv3z1oo/vl7HJwWo/WBuaMLwJgyg9BkoX0hn25/ld7zoyZBdZ2VO\nEOoLpNRNxYbpLB/H/xbuNrU93bPrwmRYwJdPRbugey1hhFhmLjfDMTkNfGYQ\nX5uNqPk/xYibdr/rKGZnkRFlQ2YI1Foh9A/PJpTtUe8je3pUBvQdsu7Pz7HI\n4EnjvK8cBLZ1LLuxMGCqrcv5cCla9JUBhqD9oP17RGfe0ijZd6WkOVJvGuir\nHuyjjsp9AqeLEKoGPcGiq20abJJb8eowffuVRm1gBywPkHcqIvb2euN88INp\nOx0zrpnrTgfFlBsZxuu1yPcyXIGXVnS3xDY/IESMiwD0RAM8Vi/EPF8HFRjJ\nnYlr5/lPSXYdq6QOZQAjY2p0ntv8a8KKrz8Wb4WRgmmQe84Hhkmo6pdckCcH\nZDIdob5wjYME+RoLzybqv98iASBgdU78/YmoazatQWXnqdb0HB8c/sitwQ2i\nUKlkoyIfHPXnbYx3vLGnO5W5EAiGT7Ie207Z53I4+chCaen2S7ns2QoxFtVv\n6EK6q0wAdZwDTtZdSlaVvKBznP93NxuvJbNFhDqxToqqyL8pFY9on8a4aNKd\nQZaMK19mbtoLHPCrkz+BwxKgaJwQ0myMyAk8E8CGXlXlMmMgusdzuBJxjv8/\nd8/N\r\n=zVg+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5554cd7d22584bc7d02558e8b126696942c3321e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.21","@balena/jellyfish-metrics":"^0.1.83"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.17_1613505510407_0.9418948924241068","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.18-renovate-non-major-0f66dae3f7033ab522a363e2cd31c3a9189f4f97":{"name":"@balena/jellyfish-sync","version":"4.2.18-renovate-non-major-0f66dae3f7033ab522a363e2cd31c3a9189f4f97","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.18-renovate-non-major-0f66dae3f7033ab522a363e2cd31c3a9189f4f97","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7076d8786ab8fc22f2ce49603ef7f929be76d7d7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.18-renovate-non-major-0f66dae3f7033ab522a363e2cd31c3a9189f4f97.tgz","fileCount":22,"integrity":"sha512-U6XH6KZ7fO7PgnB2pA5FwAYvPN0o27TLdUG/RMPUhiCXH5lVmcZOXBBHdgk8WwodspfGiiV+3/08lK4iph7Jgg==","signatures":[{"sig":"MEUCIFPF+L8KL63Vmu+Thoxs99SrFfxyzJ3ILeDFkqMSPhnuAiEA8fI4X5k39cp+j6LGZ7GcjoeyAojNwP6CDQpVtW5aFEs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLIY8CRA9TVsSAnZWagAA77MP/06QNHvj0+wS/oA9ZF5C\nLI7+pQzRBa/hy6yx4ieHOEWOQ+rLvA2BDYX5CIVZZCEI61NoSe+1LtnPtFQu\nOAMXE1Zqiay6P0REKS8I8wTgHbolqYaJU2mQaTHZxqpJQTzsiKtKbrLOFLq3\nVNfdZh2fpcFKVfDGPed8EPh7wLeCzrS9kJO1kryx2pOClimULqhapKGBP/Q1\nDQnHzKI+ZDqwSa+zB+xgk/0r3Sc/MkPpLhOvBCWa5yT4sc+a0MuOnkcgWUod\n7r7Bbfu0S+xwq+8StpuIGAwn6ENetH7cFIYDx/cdLPrvK7IbEGN1ZoYGDo3M\n57iuycjUvZQCTwwaiw9Mn08R6x3jcYwwWJPhVKGHPKDphnc4PlFcTEupzUHi\nknFCdvTzH+TL6jxdgtUkaBmsu/4bXQ7ZtvFFCKRZGZYTKi0xyw1s6qpDl6sN\nUXgrzI0SYT4Y8jpeeVH75XpOGe3kHS0WKf9mr2KQVKR7W2eMXHesZxuhDDiQ\nsvtkJsVbo9WJc6c5fKD2vK063IhbjeMxBpvWatP3mGnLe7EGIAFiN84upGCG\njPmKFItb66mWDwDO4Blm5UW/ReA/P5tGsWIuGQ3Ybq26ZWKXlh3kkCv7Frwy\n3Rc58MsBu1vgCSNQ5kHJZKdzh9Vg1L7Wg1Nh4tdp8Ze45OcoRyck8P+eB/HW\n7v0I\r\n=r/tY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0f66dae3f7033ab522a363e2cd31c3a9189f4f97","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.83"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.18-renovate-non-major-0f66dae3f7033ab522a363e2cd31c3a9189f4f97_1613530684260_0.02905224837181586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.18":{"name":"@balena/jellyfish-sync","version":"4.2.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2cf85ba639029bc5a01cd92b6148bd3c8a6c0b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.18.tgz","fileCount":22,"integrity":"sha512-RwgOsOcMN3MLY0e0tRKEPU0WWdzYe4KNuid8sPV30MqC0RM3R7Iwwx6HrzlqIotKIlsDnf52+rfV7+nSSB1acg==","signatures":[{"sig":"MEYCIQCW/QgR/+ojtjtY9+02fI4h3wPUd4O5pbsaGGdfeekisAIhAPVKMZNSNeWKRTSBexkbJVssBqKCX06COp+mL8jRWmMi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":130900,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLIb4CRA9TVsSAnZWagAA/PgP+wandX34W6kDhL255an2\n8SNNYj/KTy2Xp/buBq3+rrQ/MNTeho6/8bou2gz/Kv3hO49Xf6JRJAlHPAKd\nbZ8W2u/cjuCK0oyLHyXlZE6iaSJ+ICXVnOMPlQm+HjOOtnqCAszsEnpV0fC0\nOJrteKzsjadbhsHiAqTV0Ga7y00+3G36ldKWOQwnlgmJCu4gZ9hEflvW14hr\nBqRuQqS2RUrkSCwIJgdnttOK7CuuS61jDbw5+HtOze6nQVhek1y3mdulBZ/N\nWfmGjyjaMosWJBMEkkedU2FJtdgzSApSAT9asMVScRRXLO2YD+THPdMW0Jev\nhEBBn9DddR1NxHP+GUOpqyQfCUcpqBrWTwngTJ+7hm4cS+vJVnPjarGQR1DX\nnyg9NG22ChsfRSEYfh1pkJ7uhMbM5FwFCjfRBVUwkGWQIFg7RbLyzcErrx8G\n8Ll4bidaj0RYqYVhulGzgoELSefydT5SLh2VqayWLNj4u1H9FCHDd9YeTREL\n14yPKQuMTyNkNjna2IC4pYjaMsu4LJhmidci0EEjpsJfVWn/AZnvEykHyFqg\nDcMycA/P28HW45CkjIN9Uox/61otQ2AoUTe2NjUCAnJ6N9rCvoL72dpNTEnm\nZmCH+7Q0wsqAw9I4V+P5XcceNiKwiGInhIOxZDrHZ6K2Mc9s5CnEx88pLvO7\n7yeS\r\n=fFhl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"611a4f79d9b6718a98251e682a1c6d14f685d32e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.83"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.18_1613530871699_0.01394420555840048","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.19-renovate-non-major-9bdd93b24fc029962e0a9ee1c2e053746b4273da":{"name":"@balena/jellyfish-sync","version":"4.2.19-renovate-non-major-9bdd93b24fc029962e0a9ee1c2e053746b4273da","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.19-renovate-non-major-9bdd93b24fc029962e0a9ee1c2e053746b4273da","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b9a5a7f6f240da59d9a0cd0da0383c918940dfd9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.19-renovate-non-major-9bdd93b24fc029962e0a9ee1c2e053746b4273da.tgz","fileCount":22,"integrity":"sha512-fzIDwdeNbGJNk/BRnpOemU/E2egkLCknIvHyeBIP7dJnhJzNLjyZW2WnAmV+ncX6n37QsKpRVNdK5CWcIfwuBA==","signatures":[{"sig":"MEUCIQCmYLKYZditRrJoYMLK5/H7Ky67M18iBbPn0KQz/R7dswIgYzRrzAb7ks9Iu40zDi9X1b9tel49G4aZKEHb0Q+ll0U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLKeUCRA9TVsSAnZWagAAkVcQAJa3ZK5Konttto6FZ86c\nZkQl4DaXe18S/Ed00c6+2yC39Z7sbGIc1TX5nal+oE24o0kfIrPoXCk42s9G\nEXUC42oNY/jatBP7ubn/oyKbk0bhhDpi6j8ou6XnGE7Wx78mAAUC4wiC/x5e\naMF6XjJB6aVsC6salTHazigxgm+54TScv3IoXacdTIs9Zo5PWPuMy5jbmp0a\njQWhhTD1BBsimABOCwhcZI1kG/NppvYRH/DdaD1MPYINXnB2fAg9qdqiovIJ\n4nHhePZIkWY1fq7hujJveI73ytfuYlf0YjfNjMe5P+CD7SoFygxFyokQ16H4\nAdexoH5TosdXDORtVmXA+z/0CCyGmhJ1znstre5DqhESTewvWS+TAzXGV2je\nxC2ZITcnxpMHLDHQ2rGeWBJk+moV0YRYseqynDrdQl4+oUN3SF1Lt+QAShPz\npxdk6ow1voCt0NnrR+3J6RzqK4efbEYpBYI7pi3B22YfZOKlevoITea440Nv\nRRGfXax9uP5lYmM37UTj6iRvIKCtVgJokAKO0X7J8cACm4gX+bU9N0j/22S1\nUJzNZc1ANpjsLBr74PC+S8gKeM8dTAw1cIZWmiyA72w8o81oBqzATTS3vF7Q\nh4p5EVygILdMyyjb/EZsps+pGHizpfaY/KnCKTT8JjP7LtZ5tNsyzy0hP0mN\ntMdO\r\n=0czy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9bdd93b24fc029962e0a9ee1c2e053746b4273da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.84"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.19-renovate-non-major-9bdd93b24fc029962e0a9ee1c2e053746b4273da_1613539219893_0.24600021905450986","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"4.2.19":{"name":"@balena/jellyfish-sync","version":"4.2.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@4.2.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2b182790cb12d6f7cfaea6622b3218e6717292ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-4.2.19.tgz","fileCount":22,"integrity":"sha512-4FLpX4RW3QhJCbPSTpOlexsgwk1D6QKMzuGMZpGi7MWTlkkQ1R7mCgvP3jsbr0kojGj2gPsEGd3NDd/Z+JSaGQ==","signatures":[{"sig":"MEUCIDHRD4mZwUTtWzpbi72BnOBOBMMCZAMHjolyH3vxXl7bAiEA6Ge732m1R95t5CwuUv5CCiZuEOBrLUID0q03m6mnT8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLKhDCRA9TVsSAnZWagAADx8P/2HyoO+mgNFXgISOu+vf\nAxCjhdftahwmr0WjLC1+spupOwlV/6m0LgiRAd0CYe3vE07X+g80oDj1eFkP\naHzg9AlOz4aeyXONJ55c9j1S0lPwwiRmcAteN/bM6zknr//gQl/Ytq3OpGwz\nR+zSPofmPmEKx0RdLK0z/aCNC1jSp7u5LJfeHv6frVYE2JePweaMaooaTSGc\nALexdT0lVBnWvB/kx88VEWGbAStDwPd+NPLl0NvH/4JCRV9lPqH1Xt3aBZP5\nh+APM4iq4gzQdIFfUkmSHoBkFHRyA+xSg4mkfazrMLGSCrJZGb6QnIQOzK3b\nuvo3x0vA2JEfokIbmEYfEInCx0XOGvoxgk5lMWeNDTg2CBlvSPyk9N2d9aLJ\n7PGl+T5CAsjlZHpwy0Kda/rlxOy+ca05VOLBwwVkOgOccXxGQ71DAcVHNuJi\nVbv0Ch+7yzUvQBrti7Dk7l5WpSfD4lkb0OptNVs1H2K2oXdi4IBEoDa7hfZA\n/RsH+OiRTtM6UfaKYfZXMRLl8iIiLL09G/ZUE4LS2V3naZiy6Escz4x4WQZU\nRaA/gLds9fzKOioudcZvymc8hKmDPeQWWcOVF2WMn4Z/x1yJe5BPYF6rpWoK\nKH8vp34VvIKKV45ItAORj5ltDvHBSQE4UuMQXDeeshKtKc9RJog3iI3hPuxZ\nMV+8\r\n=1LgT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6b747837894948f5a2fdb551e6f46b06b8fee58c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.84"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_4.2.19_1613539395284_0.8006888337144056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.0-valid-event-contexty-7302e1d143475410a7dc40698f7a7e51646b062d":{"name":"@balena/jellyfish-sync","version":"5.0.0-valid-event-contexty-7302e1d143475410a7dc40698f7a7e51646b062d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.0-valid-event-contexty-7302e1d143475410a7dc40698f7a7e51646b062d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7aef785450dc49b0426cec2e535d7a8e68057d09","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.0-valid-event-contexty-7302e1d143475410a7dc40698f7a7e51646b062d.tgz","fileCount":22,"integrity":"sha512-NLNX+VqfaVj2eKZ/nGQEDwMbfBq8U6DFsiPy6j5PdDLWQvMuXigexwPYRn+BgCEFpTwbbd7alap8NQdEGJBh+A==","signatures":[{"sig":"MEUCIFmbT+q2k3qs1hwPWgxJD/B01vf6zLAFMTxX7nc65kEbAiEA9JZUMzIDTZURPA/0fOwMIhhsl6qOH2gdAxT8vi56nPQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131228,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRheCRA9TVsSAnZWagAAKNcP/3qqy+5pI9bMcXM41XJr\nvxK0xLygpWCAkPjA6JkKkZFE4chc1gz2VywAGRSmQWh+jNOiP5zBG8CxB+B2\ntGdlhBygEZmjD8B2ejcwe6Rri8RS1Qu27NA7QxCxLgY/4UMZTK01oFkJxLE/\nJnnh+d36drol7r7475LIf7+C1vPSDpm1w5GIzsl6Nm79voLKhXoZtqkwUOHY\nEv8Rpzruz0Vm4oUlD1SfuZNmTNOIoJPzd8k3U08IIVYaJn7sCW9HIFXztBGg\nIqL/f2KFGIqOVTBEjnUfJu+PTylPiqlYutQUVXrqe+MQv8rzBs1sLWtaExKY\nmTjP2PQtRdS9Axugqul+9L7vEZ/7fY3AN/KQKT92BeNYrNLd1pk9x3MB7E5i\ntod8S93YGuJ3Q5Gu7oEa3CyhIjqWvqgxyQpgrCG1cehS60CeAH/zDSZxqmwO\nnToHXIJ/4jgj3wclRc652v1NhsdiVWGV1Eh2ljhtsFEEyWpRfQCuLQdWz7mK\nq5ugijCVDJNjT97H64Mlff9VNedVuv45bE5vTbt4jIbTYh/xzM+2vbfOZr/9\nnbQrjNWl8NARWZx0df/Wc0mGqIRWTEOlxeUTPukRpSUNnFuFHFzEBrDZ+3G5\nK72JIayt+7BKpvGHuXGMzFhkafW47WbzcMF8F9TyRSUb+PBbaj424SpM+Iqe\nWN9J\r\n=Ym+9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7302e1d143475410a7dc40698f7a7e51646b062d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.84"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.0-valid-event-contexty-7302e1d143475410a7dc40698f7a7e51646b062d_1613568093767_0.5497872562358679","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.0":{"name":"@balena/jellyfish-sync","version":"5.0.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a95963a6b695212b4172cd315a6f436b9e4351ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.0.tgz","fileCount":22,"integrity":"sha512-fu1DtSWqQ3jhOALloYgfrSMS8k2a3QzVKKnX+Cg83vKMrQHjbuijD5R46VeoqekMN3VpreK5Nu9wmnH7uRYv9w==","signatures":[{"sig":"MEYCIQCQzIKh9wq0AnanzOmTP5KK4+pF5E/qO/NKXoxePX/amgIhAKNn1B+/UVvDB7XB57OCB7G+0O3WFkix2sUaRcf1YpxI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLRndCRA9TVsSAnZWagAAbEUP/0ziWmoAGxoedQcCSypj\ncWKjH7va3vXOSIkfS8eFphs5YJxwQ+ofRbjaJnWJhn3aCyA7SCekuL2fMKP9\no1SQr4OzG53TmncMH8E8bo0DUFnciIhLFsz903tEeCRN+DfGeA2S13/0KzgP\nD2FZ3ZJdrnuYZifgfaCCOqRWPnoKzsTwYDrD9GEZ69LN1tpNTzP+fvvXtbi3\n0yHqcm42k0+Koe0QWP47jOo9iBMqgGuCWUI8lgBoN0P+GYnScNlLaXV9DIbr\nNNTb10vNq0w8ucbONDz4rud8yJ5LFiBJQkaRi4PYqs4CrGvi/2Yu0n3TxsCA\nX3Aiz7r1rmgWojJsOb0mJThRkH9URJv/OOPEPuIY+BA+8iHt8+WREzBZott6\nQ+rpqKMTXJCcV1W11bRNPoS8YT9y5dBpgtokhkjgr43j69bobtox4FTsqq9I\nTSFLP7XZV2ZX3K0l3SLi3l4zGgKZXYFP9w6Kp4svQSrOtVnWX6iIoD+zLrM0\nd5GtuiZmufUro5HhYVf+v/VqEBQaG9DNMEhWFMaWgj2rCjAcq7onxQbJwOtr\nMHywPz9RGzi/TBynOYN+WuUWEsX70hBPgUArfuwMjNCV1/hu8HHF6NcU5Jm7\nZxec20Z51ruIm5Wm0DpObDmcV/VIfPoZ3JlXEHBOUMHQdFihPKm7hkfFatgv\nT1IN\r\n=iyEI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c0c1cb396123dcda82f06c0004c4565a1ec9d597","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.84"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.0_1613568477037_0.855437311582691","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.1-renovate-non-major-9de4c728bf9aa2fd5c17316d096ae430811eeed6":{"name":"@balena/jellyfish-sync","version":"5.0.1-renovate-non-major-9de4c728bf9aa2fd5c17316d096ae430811eeed6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.1-renovate-non-major-9de4c728bf9aa2fd5c17316d096ae430811eeed6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"311037a15663e2ee8303da04019b549ca6d2e6f1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.1-renovate-non-major-9de4c728bf9aa2fd5c17316d096ae430811eeed6.tgz","fileCount":22,"integrity":"sha512-w/CGkqZLybHPu5gKS1fjst2n9oTU76qwJKul9Hk9QqXFx1hwuKigXTEqquvF7OiB9hHva3wzHZs2vQ3TJEL42w==","signatures":[{"sig":"MEQCIFiz5rxkIv9DLnBTn4xfjoxxLghiWQ26VnctpjO+AdkpAiAMJXWDY6T+kwNKOQHm5EsOJxHMd6KNJd9m0u3E6aQt5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLiszCRA9TVsSAnZWagAAmEMP/24KsGfZE92tGJk3y6dm\ny/sNrIXS61+XG/O2KUqqqTzjiE5sbvSbKVU1k95qRl/E0Fr47gDJG2O4Cnxa\nOjN7YhDQsnGLzcDlmZqSTxm9umOgNg46yQzEwxvD8GORvsivwn8H47piyfR5\nzxNmRw3OjKZgq3Dp//3/FuoGg6Hm/zyTCjvO6xU22hMtmti697AHSN0iJMW8\noKbh5Jq29H82NmQcWZPu2XxBSw1RDpEtgqYD9WqYl7CgPbyCbhAN+LxF05lL\nEDDGb8HQvcJ1Z/m2sIpMAqeF2i3I0u6uRrRVhAjQs7uw6b3pnneIkSs+Zjmj\nMg+AZPCx4KGhOb0nqSq1Qzr+rfcEh2fcJOws+DWoYXHUEyc/y+Gpz81DLbCW\nDdFmL8fjO4bEvT2pgYttfVo9HFzaHZ4mjNWhcJVDFbDau9GnO9USNJ7fqZRY\n40oodTm07gmVxv/a6KxfutOII/5c0vh/q28gfJitZB3JPfoEHT4gDACfdELN\nJoowdUN5hPTp6uwaPzKtur2ZGZwhZ7+/sb0HQj168eDeZJ2Yhg8/NO3axHdc\n1xkwvVli/TkqjD3pHv+EMUIugC/ueK5LdsRo6yf6ZKxGu1eRxdO7K4cHJGrD\nwBttNeMhli0Nm7M4XcyVnhDN7t0amIBBqbDUJGYrrQMvN62gLX8HB9/MaXi1\nFYg/\r\n=vT2X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9de4c728bf9aa2fd5c17316d096ae430811eeed6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.85"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.1-renovate-non-major-9de4c728bf9aa2fd5c17316d096ae430811eeed6_1613638450536_0.49861508450023373","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.1":{"name":"@balena/jellyfish-sync","version":"5.0.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"15963fc5dd90ad17beb1ecebdb4b9f7605450745","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.1.tgz","fileCount":22,"integrity":"sha512-9YD1W/tisq4PzOVcoYjb0tkMNto+LoUxZf4J9YwdeA/RnyYOh2JQ0QM9WigQ39i7LduIXIOa4MhXwWkkoB2fcQ==","signatures":[{"sig":"MEQCIHOxlIHqhG8R3sZQATXz5yO1JCJoFyPTSJrT5MJlx3V6AiAn6RSJ4yJ3tcZx48v0DWwIwfyPfxWQrwk6TnF6dHV7KA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLivtCRA9TVsSAnZWagAAhGIP/0i2j9mlWOy+JBFxF7cp\noRvwsOE6+ZmJB9QmTO9hq56a1sGqJdJkNQ5WSoIL7Z6BUUAeiRKGzIQ++K2I\nLdXbL8OomqQwWPmkalNa5HgNsjT4e9u764pi5HQvDp24CyvjY4NfXQ55qagM\npdqY5bMCuBTIkExgAAR2jjlxPmKn0iitV45UW1e2kL1tnY2xHZTXxPCg5z/Y\nVARCuXGYC7lmzT7wWusRwNNLpyQefZHAXGnItIcMUK9NO0FfYh8pGYfz27Nk\neVusAwGn76vaLIGMKOmyc+P4WTHtjrAZXjyNvfRNsk6YnUsm18pxNgULP9j5\nEqxp8jZ2hmWKus3K+ok4zakcdhwnIfGJmwJ67/fBMQJ+XstOr30pwPSU7F2P\nUHkkFy6kel9nZUzxqHKHRacLzYp6qG/+CPPPmK+RA3ZSJUEEXjdrJGFZTVWm\nPzdN/zVIqB8QtSHJufLmlXOATsqxOHyagLkamCASiGHLinX6YMPCF+MKGNp+\nsUkLtpZ6ER3eQzvSPnV6VEktnaBva0HM0hJvbP921ed08Uxy4HAqjgMdpSs9\nQ8sYf0idZ5XWk4OMvVEAenbp9X67htEQLQSNQosIpQzrvqYn/hJjAo0YEkHc\nmUbpq3dEHVmNr6o5gddlRecQi+IbIhziQmbrlYKajusbDPtZHSKMZvrSA1ZW\nxSRx\r\n=qP+L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9e535b04aff15b137fd8304824cb3e43973139d9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.22","@balena/jellyfish-metrics":"^0.1.85"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.1_1613638636480_0.7264776616273454","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.2-renovate-non-major-4c1a331f207453c2302c4e1b6980a86317cd9183":{"name":"@balena/jellyfish-sync","version":"5.0.2-renovate-non-major-4c1a331f207453c2302c4e1b6980a86317cd9183","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.2-renovate-non-major-4c1a331f207453c2302c4e1b6980a86317cd9183","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"624a57a1c6c462aa36bdf2854dc00944c1145a8d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.2-renovate-non-major-4c1a331f207453c2302c4e1b6980a86317cd9183.tgz","fileCount":22,"integrity":"sha512-3+H0z/mJ449d9x085Dlc32tbds22L9OUEtACHTgOCA9tEiuKS2dWjLhLoJ/3pcG59HHcYeCwomkk6Zu5qA0Q3A==","signatures":[{"sig":"MEYCIQC5B8PBdvwuL7NnQ6I4dPenN3+YImvet+FuvG3RA9sTmQIhANfh4uMph6zPbB5gRG0GpDHGrTHU7FhWMTXqmD5YG0OZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLmfACRA9TVsSAnZWagAANB0P/2OxLKgEuVJa/oxfPpCK\nC8BHwfG73t4GYx2eX/MHSWIhFxmVzccYtKGPFrl15nrPL4PwNso/nb4VmBfB\nHg0hBKcHpvPGyr0EpuHMRwlfOckho8rJyvaYBDKpTvHR6i68IEgknq3G1Bik\nxQEyLS88C9fPb8IbDFGCQRnft/Waov7C/XL0uHXaDvO3BrUHJfx86CZP7nj8\n5rZLEdpjxV6E8X/oBtmm4gcpMVEX6QHfM9tHna42z7QFTk68hMyiqKM0ddND\nzxVcizvm6i/Wt6OpSvje8q/VkBxu8TKgytQAK8cuX6lNQ+k4WuyFrFyob8fU\nqQnTYrdvON492l4hVEaBuBRjrYccj13OyWdWI5kxIPyPPyd4xIswT2FYZIvO\nSd7fxJ88qkl/eQVsmURehzMk3CKcYFAER7YL6gjjMDH0v4EaQ8UZkDnO6BF8\nMpBPHZxBfP87kJn9Ev7wEUg3p3MT7r4nnUUhI7whTgxQ1UpRXvlog//nIisU\nTpfBe7BAheMIKRlb8O561IOYaWks8/jp/IH4ZzLWvBdmjbB7J2C2bk1YnhRY\n6R8XDZbd8EP7xVDC9GSLyudZI6BwYuVA1eRyO7E/3+BPiei74cuxHa26uqtl\n2XO/kLBX0MwmcGezOv220Cr6JgH/d3yx45SUZ2fPL4IhC913Tr+M02CqqT1g\nBf1n\r\n=zuNc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4c1a331f207453c2302c4e1b6980a86317cd9183","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.23","@balena/jellyfish-metrics":"^0.1.86"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.2-renovate-non-major-4c1a331f207453c2302c4e1b6980a86317cd9183_1613653951368_0.1673511689309788","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.2":{"name":"@balena/jellyfish-sync","version":"5.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9f3a114b1c6fbb8ee7835152fa00b97373e8ba0b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.2.tgz","fileCount":22,"integrity":"sha512-xI82Ejlbclsczzi18VmPSBZ9oCfcDlyqmHa2fBfMFAU5aUZaIt4a/crfsmQJUDqYBIKPnp7/lDTtvW6qBItbYA==","signatures":[{"sig":"MEQCIBwi5rafQJ9U2EUYLE2T8+ouFjj8drVMdnbXRktfaWLOAiACeG6+HePYzh9b+iOSpG7YafhYFnQh+W5a9T2bOHRMzQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLmigCRA9TVsSAnZWagAAcd8P/3KRHo3xTBckkt3fkoIY\nd/yiUWz2V0sRj0/c+igIA62RdlN3L3MfWY5hMiRh53t9zitwsoIzKWOlJPOK\ndjgn+/jOFpM7a1gj3bq1BUvwApyUAGzPAlijdZ9C4SNQ7S7hvK9vsgYJjthR\nMB7Uz3rSsLrUsiSKomMcKXLLcDz0uGWVfxXE1czIB/sN/1//m99HHyxt/5hJ\nhLw6KCwaZ2gs+E0CmNYt4lGJygFaJeXcIrwfqif4REKTf8YmcX1I965n0Sys\nE7oiitnDW0OacD7Q0w/A/oPKXnQ+ulfneEbU62jVTNUtIOn5HoMA34TNvk8D\nI+6jJf2uoNwwDJUvB7luFJ3X6bbv9EfFuQQHDSb/VlgK2GAJhC3tXSLrz2O5\nJD1w9opq6xh791e5Xf2Xb2BVT4GNgirOW8cwGa6lTjiG08/jfcR4dEuqJpVG\nvLiV0hinV+oxuqdX+fRHFsCWEws5exaeBV3n7YOlT10TVrtmDsYhlHnk80w9\nZmqWvX7B7p7o25LfuDe6z/EQBHSb+wKRXfbNwctzxcEKbmYo4aN4cUgMMIR2\nRFxlU8gt7T4ErMD7g9jVjpdOgTz3vZw1VsugHi8VGdlIHarfMAFORNuy7qwb\nMzlWa4xIfmH+g2Jmn/4wjBrMnYjLiDM4RLpi7cksMdd5pXpmiuLjOYi3rDzD\nRTiW\r\n=3t8/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d5339c781e29f28490ba5c9f7357b7712e06a226","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.58","@balena/jellyfish-logger":"1.0.23","@balena/jellyfish-metrics":"^0.1.86"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.2_1613654175609_0.4120378999440777","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.3-renovate-non-major-2f79be137b46ceac8da975241f735a70799a3dae":{"name":"@balena/jellyfish-sync","version":"5.0.3-renovate-non-major-2f79be137b46ceac8da975241f735a70799a3dae","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.3-renovate-non-major-2f79be137b46ceac8da975241f735a70799a3dae","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea655bc6d7c5fae6428b032fff1acb0503cc6600","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.3-renovate-non-major-2f79be137b46ceac8da975241f735a70799a3dae.tgz","fileCount":22,"integrity":"sha512-yCELk+muQlgjfo91O0o3OBda91yXRw4kBnHMgLpg2DtZtJqEWihuI+E3TVKz/cTbs1rz2OnIOXLl6i2rUhH7cg==","signatures":[{"sig":"MEYCIQDOEQJb+d218TxH0Jy6E5UjLM7aAktis64PTa1hv3C3fQIhAJp4E5+/y9jZuTWc3xRaY+keLNw318NEutnLWzIy1YIG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMNYbCRA9TVsSAnZWagAAKbUP/RGvu1BwjNh8nMSswItR\nxuYC12kc31Y1+emmMqVsB6KVum3tMHKKMFx+A3bhtDfhmYiilaNRC0roaisF\nq8vx7rzJa9Cwz41HUsBWLvN5sKZi0toSQBy0yhn4A6rWpM9FYaDnMVhphsDA\nFaXHlbSNuCTNEbDgS7vQKql/z8PWc1MUex8GAaKhvRVrUyB6WYSgbvi4jnVG\n2A5jWM1XClQD8WL34WEwsxkdGZi3TX1WHKzD8iaxLSeA8Kb4zlmPrasJ7Z1c\noQzAxqUCSnF/jITqTRVl5qKwlXtEkvmLnITRlXpOpJZtpxuCqgmJRBLDvPKy\n+3n7T92J7okuvU07bHw64ossluEjgbGuijJlKSyezkcW7Ik82FA06/XrRw/E\nCbiTCctlT/quAbC3+hz8lzlrkB0/NL4KHNHje5kb3UfSZRa84RvRy/kEgUuX\nmaPT9Pnvd2EEMARhZ91ylrDCMIoDdu9eXwqmW6R4CaZrkprML//9VGcapVcm\nhyCJq1y3UEzSObFwRfoJLyGtxfX6hy2aPDoOnbR5mkYqpxVHr/5Epn3DdbFE\nOElf68s08QqNEHiznMOhzAT7qp6h5hOMBtdIw2WciyEOJuwCxQI022rhomse\nZTbWu/EeV+pypB7KBBB6GjU0Y00nQLMbHL7yLbFmXNlKTDkdWUkYXCEGFWkb\nlFdv\r\n=jra0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2f79be137b46ceac8da975241f735a70799a3dae","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.88"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.3-renovate-non-major-2f79be137b46ceac8da975241f735a70799a3dae_1613813275298_0.21138882568698936","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.3":{"name":"@balena/jellyfish-sync","version":"5.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b2ed4ac879e4fb17d55eddcb46ff60667f59c61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.3.tgz","fileCount":22,"integrity":"sha512-LL8t35QZkE6mnWIpVSq6BPQV6cR8FKEJXNjB3BUo8bkjiZF+wSMSxw5wC7pssb6p8WL/OacL1QXuNGmkbtsJww==","signatures":[{"sig":"MEQCID1/GUf3jnCVKGjCbEOe1nZgs1/ijciumzKKLx1BctQyAiBrs0PZ7yWH6DqA4/dliI+rt+YuP3R/LsaCw9Wdb56PFw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":131408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMNbmCRA9TVsSAnZWagAAFMIP/2au8xeayePPVPl2q2w9\nkws81O4wIJxk0NRd9ifPDJJPTB+alHwhQHAlgjaQXzHG471H9N8pl+2ZDFXo\nbmsHrDtePFGTQA8uRYQypw1v3YVqgJ+47RQgOMS3HLPr4opNRGmBBynyxkWt\ngCXlr14AbwjfNHTjmG6IC1RHVLAYyMAxcs490v0rTqqIO6YUDoGmDcrUpwwz\nQcKQN/8VQRNTyprDYOueLmEHOZXpSW1IQhZqAzHO+lVQoCxiy2Mbbm+wRMcc\nfZbi/1EwrF6b8HtmV4X+5ckjOdP7TiK5gD4CsZbm0MI9QVwDBHrXU5GjN1pv\n0B0BK0nUb8NxNCd/m33glys486VAm/q+J96RrbxyLbzh2gL66ePt3jX4qsbL\nJl1PBdGciKU8uRQaTC7b8hAokmBWsYxMdaPjO9+FwjFR5DvZy6S9TUbV7KHr\nTIP7llyb5d+FpOTFf2QUxK4DgKmE8T66dwHF4f0yNpe6AyKvTzmyZ/dGU7H6\ncPTy5QRDXSTxrc45R+OjIl+nWNVmiWza7T8vdeO28zpQ+blrCrTV0RR+ZPAU\nAKSqOBz43SrQ3DxTRHM+z6DwYh1PRGFlKTi13ifeo4jeOzXo7PekqSqx/20p\nh7eQtoIPkJnfr/pl8siC0Y7OHkZ8DKczcuP+gNPCAzdpLu6zf8rvuYEIM8PX\nZ7/s\r\n=p6xe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"259bac07692e95d1dbf342e347341b9bc2c64cb0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.88"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.3_1613813478213_0.7000422988490393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.4-add-changelog-yml-c378a5ec9beb2c227f151a76433b1b14c6d13aee":{"name":"@balena/jellyfish-sync","version":"5.0.4-add-changelog-yml-c378a5ec9beb2c227f151a76433b1b14c6d13aee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.4-add-changelog-yml-c378a5ec9beb2c227f151a76433b1b14c6d13aee","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b437e116aa6feaf86b976aca26dfb5a193e8ce23","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.4-add-changelog-yml-c378a5ec9beb2c227f151a76433b1b14c6d13aee.tgz","fileCount":24,"integrity":"sha512-7MrEHSPeIMEn1llVPQ4WPomtG2b+lQKofCcZYYyrQvNaRAz7LA3xN41AmWX2XU1XNZitlc+iz5cU0KtMeo9x4A==","signatures":[{"sig":"MEUCIQD98bBQisdbh1gVut0dshVkJpAjyO1ZWdaqkN0hCOj18wIgXwLFeSlw52f6c2UygN1e2/fQjD29IbMJ2kPTSIoq/M8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132289,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMNySCRA9TVsSAnZWagAAawEQAJm/ETrPs/Iyy/W4QdVs\n/1xrE2NPq8uUL8BBJZOK2PbCMfH/SBfXbGLOh0Ma12X3TUs8l4o9y7w4YQ6U\n5Sz2GbQ1NT66RKGk9LxgNqBrto5dGM7OHn6kaHch5cjRk56L1DmD+3+Ez3OY\nqLMbxmdW2UqGcIOlxVpxoJCWYYqTe1bVrOznF8R4MNx5Zk7/+e/soSY+Yq/6\nC1gWPQWdlcgFTLdBKUCFcDNEGG0/aHuyB+2Uru9S8+wAzM4sjPz+EiGuJ9Xz\nfS870a+Yr2/6QxCQyUl7V/M1eE/R9ojFqS7DM6QxU2Q7xpy6w19UXYIIpgG/\nogA8sbAGJLfQbUB9soHKwXrXCgsBwVKXbMHPAP8piGtu3KJ8P6h5imBHqvpM\n/DFPI8vYwcZ7kd6+pl6bKcOZ48PEyu5AwwVBSLvegSfGnJxxaRdqhDeB4fNq\nFlMB94kEpDSUvU1jYd/luI3RCMW7CvVUVD8oWTI5v9kP1PWeu3Dt+iEd9NNn\nv59/pU/Gh0K/2FVQ5z614LlUGV/01peEU0ovpxrgcGQG/qwFIBuc5bZgnExi\nZvD5+fwxxpO1k/b63KLDgjfKBeFiK+NHbbWjLdWlilWaK2Wa48IEmUlLEDCe\noCloHJiTFXTjjtPqnza1D6jpt0sYZDSRE7+q/aZzYf1XWVaTO1gvMyuz/2hJ\n3IB0\r\n=v7gq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c378a5ec9beb2c227f151a76433b1b14c6d13aee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.88"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.4-add-changelog-yml-c378a5ec9beb2c227f151a76433b1b14c6d13aee_1613814929714_0.003618335860668287","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.4":{"name":"@balena/jellyfish-sync","version":"5.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9218705dd0a4a3045ca590aec8eeb7267887446","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.4.tgz","fileCount":24,"integrity":"sha512-dzpxAjuP6H/sZUy5I9eguZCdy66g6F7AqrpZl8eEmgQcL/56RKJto5jLlSNjm9bgSxseQQEUoLcfj4iLRY1SPw==","signatures":[{"sig":"MEUCIQDI40c2GTCUi/M9NBDz5uBH68cH69KoCMf2JuI2vzo0GgIgCJpkF55T77Y06OUup6D2AOcvwDoblrLqSa97ayjM39s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMN1yCRA9TVsSAnZWagAAaZkP/016eNLdvt9VM9B6+MiY\nfvw4T7Dn583otmrcPypkqOf8hyIi3Yam+c+CtrYOIj60gLBAfTNPRQ4VoaOR\no7/ezy7GAp59hVK04XLNFfmrAnR9lNSkFAJhpeiJh7Smsa3pkiLHK2SKDK1F\nzIySMgLcy50VwZ+tyUEap7MTbYyGxXr8EK1kuf1Vw5zTVTSNuPsa3uwblRia\nQqjKuurHj8juiTX9VFx7+ZVWYkMLkxEnjSf0B0nBFAicEFDRIY3b1pL+qxbW\neTGG2lg8qmW7K0m9lbbAQnW6MUl7RV7l+QbmjqjqnhmJVkHDWwwNN3vvHmA6\nhseSvqC/rgwWVAAhGwa078suM+hEfnOGe8pyQJT1PeLBRShBfjsgas5sUYCH\nNOjhDVO4p5M8hmKoftJd8Ik5SCOG0T199F2dFvZlw9TlY1bqrciRr0b60qFg\nB5Xn7n1PckyKappIdPOwazWY9jIfjM7DCkh5/ftoHle/hO94iZ0vJ0HXdZlL\nn4zzqTP7de8NwOJNruI/Ih/HOWHIABjItXJbnEsTZnGxLtNlVpcw1dWKyJp3\nIKgyHxFLCpqXeRH3zzYtxqKrvWuQFP5N7wiCWcXTI1Wmzc8Y1WdZWC3oM8IF\nUCbhx2/FyBCNUWKfV9ww/taR8228DHjI1Bn82t7Undm1+Aaf72+oVHpdG1rF\nAnaY\r\n=NF+d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d9f62f49dc1c5220854401de86cc332f2b61cc41","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.88"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.4_1613815154336_0.5449330715023883","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.5-renovate-non-major-da6cf15edce3bb2b25adc3bf144f10584dc0560b":{"name":"@balena/jellyfish-sync","version":"5.0.5-renovate-non-major-da6cf15edce3bb2b25adc3bf144f10584dc0560b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.5-renovate-non-major-da6cf15edce3bb2b25adc3bf144f10584dc0560b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d9f6940d51ebb5e73646b5897a0a8b1ffbbb020","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.5-renovate-non-major-da6cf15edce3bb2b25adc3bf144f10584dc0560b.tgz","fileCount":24,"integrity":"sha512-+GrJ36uJ8nPpglcgMNE/YYc1haJUKzBCgyUSsp0zdZePUvzzpSGxYr43gWJyv7un4LZVJlV1Y/ESt0715vjBOQ==","signatures":[{"sig":"MEUCIDxnZr/7197TjbdjwZKDeXALRJeCTm+UEQ1Tlg5Zxs93AiEAoI5JLvX4ceiHa4e5yHmJrHRBjOXJn+hhjPQJ3ZWlfKI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMO19CRA9TVsSAnZWagAA1mYP/ikjh/mZYml40DsztoXA\nQnVgArfE8JHJgBhQcVL6+gV5SOsLrxy5bDIvAQfe4Ab/5UpsUBSrSj/tBMsG\nuzsYB2ake/um6TN+sdZN+nH4Mqgdu1FPnrap7bnzyD1LMhkMlPIIjttghjmL\nXIMNB3chTsLOJvXufpda8sJKkz0pG6LgN9dje8hFbabciEgUF9G8zgKKP4hU\n7gMyCwaI1OqIRfse6FDu0JSl6PEu4Th2l2LejOBV5sbI4/DeDbPfpd2W1wAh\nkxB/2KBhmPOxVoPW6CW5RgXKyVGs/zhxUR/WhM3fx28fSk0/9mrppYsNix3K\nfo30gbnIxA1q4qNspoXNKEl4lvJP+lduhQM/B6Oj0J0/fCUXSRjW6ZuOtnZ6\nbhY3cP6mfwLBPbmo2BnUJHNkgfyFKUETi8cXmtVTXsE/sKs8uXuNYeOGXVro\n/g6kcxpgKq2aZLlTwVUw/pZSGeJKvV0LaEuZMJ4/cf2QBj5X/91wV6T/DiW/\n9Yw9tZa/FY6ZMuc/vnTRIm/HR3aqOkF0hG2krrQ33U7JJSXVtdKGFKNdsoGS\nZICx9hKEyecgPdWic7n6zul+WVT4Zg2ilqdGmgMrPJiDlMg7of70yy9RoGey\ntWJqLF+WMvzE7zGCMwdeZOP9SM99+RSmKFhW0eQ31MDtIpOFyIGS/5BgTdzy\nCHhw\r\n=ZYdW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"da6cf15edce3bb2b25adc3bf144f10584dc0560b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.5-renovate-non-major-da6cf15edce3bb2b25adc3bf144f10584dc0560b_1613819261178_0.02258143332689433","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.5":{"name":"@balena/jellyfish-sync","version":"5.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"84e5bbdf480f3e070646381d619e79fa47f767f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.5.tgz","fileCount":24,"integrity":"sha512-C47VLwNOCoNKLFh8aTOr/5wU/cVeG318QaqKypRD5jAaO091Bi/pdIOtCfWVwAukW8N8fdiXQBQKmQ61ratvTg==","signatures":[{"sig":"MEYCIQDCmQgj5nLUearIxNZjDLUy2tJJnCTocpffLRrR7h2tXgIhAJ0Kj/JmXFlHvhJGQCECCBq5Beti7WHES+fok/HFwBVG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":132653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMO4yCRA9TVsSAnZWagAAXtMP/1txVyZQZ+DhFEHedq4Y\n4DVchr4IJ4nS8CVQRVvmfCaBZ5zq7uaiq/08kzjPvrXLmvrq5eV9db7TGjpd\ns1mbsmNpwyke1cEpDeNDma8Px/BzW4Gh63fw8B0HepVaFtBLPLSH7ivoWw6Y\naQ/WiJk3oTYuBmcmZkiL7PC+3GdodISS8GJsnS80DhNKaMkFD1aNrKyec5a1\naMk0LneXtBRnllQ0xky8YsQ5ArpJwKd4iwWsSrYfYkbclKhFLBDDeSqCMftz\n1LkP9WnwkjWVgjbjxYjVTWAfg0X6CoFBOHgdQh6bvwbDL0Mo2I16cHVjSUrg\nWgFQV8LbZhxmwOSRehkIrj8OvPj1vjQWNaFCESwBpvX7/dVEdZzm3GuCRhFd\nyRMY8PUlLb0VFtRF0qOS9PwkPcxMieD3a0MZ2UD6x8vdExgaZZVfsEQa1psN\nqkp9AtrbfRQgOz2D2FGWmUHFityohvwFPmAR2WNz7qiZKyf8flMMX5K/wuIV\nz0wXfMnco+2VoqG4QzQZgjZmXASn5xcZbzoCm/2xgamf5FpKWKHfoQ+wsej5\nXPN3QRG0KCIoEnDuNhSXoJDnhbk07EJiZy7wHcUcP4txBU/fuHXtRaVJK1vg\n3pdteekWieH42HPBE/D6rdtekmgajiVxWHY19enML+fnLI0W+f4YaGFNjs1g\n5wH8\r\n=/sGD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"43a787a4f174b24adb77f54db7bf6c913ae1b743","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.20","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.89"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.5_1613819442048_0.9469971191413138","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.6-renovate-non-major-454227751e05cf9b7463e4142f5f18ba2617dfaa":{"name":"@balena/jellyfish-sync","version":"5.0.6-renovate-non-major-454227751e05cf9b7463e4142f5f18ba2617dfaa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.6-renovate-non-major-454227751e05cf9b7463e4142f5f18ba2617dfaa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e42ab55faa2cc49ebbc10ae8dc001b98bda6ae90","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.6-renovate-non-major-454227751e05cf9b7463e4142f5f18ba2617dfaa.tgz","fileCount":24,"integrity":"sha512-rHLqwQzqJbmXvl6lVpbnZheaMh7D5cnAIf/30NsxfIkNiOcYMn2kV5VXoqlZHcpq8Y8wvIgbSKjBv7gE2kSekA==","signatures":[{"sig":"MEYCIQDXjGQ2efNQFRkvkN2g0OAuxGLUTLkl/Vt7s6mV4R7dPQIhAPUNNgY80RJWJpmpV8GwGF21S5ZFKOp1J+TsFV6ni1Xb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMTSTCRA9TVsSAnZWagAAZNMP/2V1CT+H5dkz/4h0nqk/\nu7Lp6I0EaK1ss+tdZISSnQ+nqdAqo9SryNMqKlDRXhbj486+/CDXmAHoSZ1y\n9+AXpLYTvjtA46O7OhbCATfWW8CIqxAW0XioHBvtmomww0oHsAc41fprC54X\nFNRbbR5SJkVr/eig2qXKp2A8vu6U/NnyQFPvYqV3NZWUqIOLkACl8TE0on7X\nvQUPJNJSCM3eRXLQ6Zsuwt57KudsYKtWoKF0N6/idcaP5akkd+IWJr46R9AX\nUrzWvl1XtjGBoee0CDkIWF0iTyd9nEbo+7sovYUM1NrnuAmmCpb6RiXF74Fd\nEiLeNqXuF+44mGzLGFILdax0JhFGl+QLO8WwQqWc8bWgCAsr+a0hUPrFg9JM\njMQhCi7uXw8Nr1AwJLWCq7kVJRWe2mhzFagjmkcbXok7pEC9yQcY2hOQNoqC\n2+2lVShgHyLYxzfY6VhSyJLrrxai1gLTM6oCEEqbABQEbdP1YSL2fyjyG5k6\neSYOjpZzYu9nsGk0u+MuC/66Cd0FOuN+epQdh275FxqG25/igt6tgMO6Y6Q5\nO6I7IsaR8AN2hHqJq3BUzxye2fIQoEYgpZePUc0F2Dd0s2vepAdJ5sU2T/Nr\naw+iXDz5ZU4498Tb+dBnq1bbCJiIBA8PFsh5JHPwcJ/6YZQZPEFfbrFtX8pn\nP0R3\r\n=wr24\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"454227751e05cf9b7463e4142f5f18ba2617dfaa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.6-renovate-non-major-454227751e05cf9b7463e4142f5f18ba2617dfaa_1613837458528_0.24485632313639005","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.6":{"name":"@balena/jellyfish-sync","version":"5.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"55fba4e1dcb4d4c842f5bb60a00631758937f3d8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.6.tgz","fileCount":24,"integrity":"sha512-w0XIU6+gWIFsItKOD0Y0kJIPOdNMCQEPff5wjbOETExdx+cn+WRjvbderCMHN90ccK3mjARU1US3aVSWqJQmfw==","signatures":[{"sig":"MEUCIDEtBMX6t6IzYV6GuBITTqufcPzbMg5UHY5ckiQx9ZhnAiEA8IBb5JfbCRl1vikVVlKJJBQcn8GFyuEw1U6Fl3e9KfU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMTU/CRA9TVsSAnZWagAAkfQP/RCYfrxvLBQDcnHGoahR\n5aP8nFB8Znux53KhTlnqSzpJRcD8oxirUNpS44UYcxStFs4XsdaHTbXpkKp0\ndf7sbgXsaQ+H5sZDZu2leg0Z9Bsl5OHVWIy0gL9byoZ7Ru+ZlUOyBCCZk9IB\nR1fXzoSGAwhLREJSeo5W3OopVRDe2igv/4Xw2i8bjqduXwhSF9i3jaljduGV\njzc7RziOkWpjlEIC6/ZrgzwluaKC9TFklFYeWo4KDLSGPWC9RAZHy6RlS3py\n+0wLMRKVw8Pp9IfbadsUPCYk5NutTJbZGfcnH3vBqDaqHvQ5lqnj0SKjUEO9\nljIchTOYn5sZ49xUSNwGQRyiAsfibvaQJaYXi0pmsNAPCohRYx9kRIxj4vlN\n7hxSy9esKTddAQrE65CxoFgd9YUc/3QXqap1FlNvhAgUjsKi8IDDng9mKem+\n9Ko9H98o34FFpPITpRtheLIP/9EnfS3nmRISiN9fzh5Oc11LGBDo7UBkYRUu\ne4BqVXM7IptUBH1jA3GSEILGpJ/yI/9g0zc8xfFqv1YMQe3bkoe2WdGpQHmK\nT3fCcPxsW2sjL5fBIfxyZu+imp90ZtDEAOW+cPQPRSX35C1Et7JVrJ/FWpwC\nVw3FN8tCuJCOo5zXdJAStEhhTIPeRJqIr5q9S+HXrjO3GxCXa87pIcT7OoPb\n6EMp\r\n=y+B5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4783742daaef8d170b52ca74a172fdddfd5d599e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.25","@balena/jellyfish-metrics":"^0.1.89"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.6_1613837630902_0.5454717946945109","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.7-renovate-non-major-b39adf7027bc07b38a2263500e362c69c5473bc2":{"name":"@balena/jellyfish-sync","version":"5.0.7-renovate-non-major-b39adf7027bc07b38a2263500e362c69c5473bc2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.7-renovate-non-major-b39adf7027bc07b38a2263500e362c69c5473bc2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ac96bf0f9990656aab79da30f92f8e9a484ca49e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.7-renovate-non-major-b39adf7027bc07b38a2263500e362c69c5473bc2.tgz","fileCount":24,"integrity":"sha512-10w9XaupD1OJ2qDIEmOiABH8FmH9jj/Yrd6KhtJIf/AciKPIdGN/O0etRf2/2Plga9eouMRrGc9zaCAdhdokCg==","signatures":[{"sig":"MEUCIQCgCAaZw1xy5YNqMLxV6NwBL0XGsceWmU7Ydx52fBwVXAIgZ/cB0ntJQs82pp73OGCqZXBzb/e6WvtQBOnAXyzrhMI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMUnACRA9TVsSAnZWagAA4VcP/0kfANB8SwSfnK6Tsio0\nGjk5pj/7AUGLsQpOcJbesEFta6Io8vzNg8rmHevX/RihP1SUBuVkOECpx4Xd\nonce91x7P9T2rxA5rpzo4JCtusFjCDLtF74nm5CEZEtqp7dE70buRR4u331q\nUoTYsMLgecqIRa+6x9YtkmNN8ERFwS+vYJQIxCZHjJCCZ8baFaaK+xeFbUUZ\ngIppLYZTSTVJXoBG2Y9mbP6PdNvB39XOPZ+GJfbMZ95AeQ5PJ7hKZd47JeBX\nq58GOCKSMo8Ydk7YgV1/Gvgq0HLq8yHt3zDU9gkDU7/6MmZnPYTyTLqM4ews\nAKRvRBM224433WT6lbKgtuddcOkjwH6Q2H9MAne1n6dwa2/+NMJbbMiGODHH\nJh0/Iw1mgCmbhkmTAieDDKomKUTt9GqUWiKIUcRIN7CIH3kF9VitKZROjCNh\nduyeKV4MOxoSj+QhodPEaQPBOD4qDI/YABDaapz/E/0ZEI6PHllmPtJcEtft\n7Rzwfn72EjnT/lKnjX3Pc1ZKdbkGrrg9B8xGPiGx5Pb5500PQEyVhwTQXG6A\n3tqF1eVX+CoxrbgoQDWO3kDDBczxLMHtTXjLh20AwMPP1rTXvqNuFyWKdKXy\nIWXQMUIOdOPS53WmyS9P/vNF+7U6dSn/mZKvM0APz5HuZ3qDH653ax6EYyVE\n/eTK\r\n=YTGH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b39adf7027bc07b38a2263500e362c69c5473bc2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.26","@balena/jellyfish-metrics":"^0.1.90"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.7-renovate-non-major-b39adf7027bc07b38a2263500e362c69c5473bc2_1613842879673_0.5510116232377384","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.7":{"name":"@balena/jellyfish-sync","version":"5.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3aab1fb88b9400e0a9825996ba3594106143093f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.7.tgz","fileCount":24,"integrity":"sha512-wLHQp55+NPBkZSE5RokOdE7Ucm87NXGBQYIcZ45FHXf0YR2SGvHSOuofEFLowihXJ/fUP42oEHMNNUYGIdcrhg==","signatures":[{"sig":"MEQCIGtqFdp2tqARkkixbxrfQrOndGPmXvqtqKrZIZ0VyssSAiAz8b55iUspTWRp19+II+zufDPAebWgZ7pq2BKqvSSKyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133387,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMUprCRA9TVsSAnZWagAA90oP+QCI00z8M127gGJ8JNuY\nCVLIN3FKTGXDcsykbE/Jg7Fwdax4rqrKC8Q7fRRvQNPaxRlxnxrILiHoqSJt\nglvN45kCeTQ0HgMiEriqH7L3jef+oC70lA8xgGXD50WiMoPshBwGvXLAMHGn\nWDuJFon5HfUDehauyxQainagIYxwykpGWfZUCDwRbE2JhwTdL4oYu5cLfVdJ\nBIv6HX7ezVecUjq7Q+zrqjCj1y+l+o6KybshiEkPfJMXb1tMicSo81o2HSC7\nAbbIaxX9SldqkpXjgnL9LY3kVyvqbPNjl+SawIebfgPRhVhL8fgaKGUCbvgG\nCAh8J7BN/szQcCkU5nMkXqMOxBHgD/XsIIhGX1teZwhfyGxY1ESKTKNgHZb/\nPQp699dXu62GMC7E4hjh0lIY2kcAO+j1QgXKingeOogbvMjQoqbKoXEdLZJz\ny8Fr/NDJzpbeq00STliio1nBkA2chshgzswDnP7qFYBH1MsDY+jvd+u48DJq\n8RwyUkivojaMjHotQVA/2XM9vIo0CGCXEvKvTyg5zbcghlpH9QpZUDArSVYF\nN37Zo0Xm2TnTtkARds0lhE0D6COwfZyKr/flhdeYQZGYs+gkIe3qIVbgIt4H\nIJh6DqyibZ2S4+DBcCpN/Eu6slV6OZVuAmPvcJKcsG7OpSyiiQjat8U8CRqM\n153v\r\n=0TKT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e8efd641e5fd8d193bff9641c87785c13ed72bf7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.26","@balena/jellyfish-metrics":"^0.1.90"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.7_1613843051341_0.9004307972568386","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.8-renovate-non-major-50b34fd4a0051072a87727f62f56fbaba89f52aa":{"name":"@balena/jellyfish-sync","version":"5.0.8-renovate-non-major-50b34fd4a0051072a87727f62f56fbaba89f52aa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.8-renovate-non-major-50b34fd4a0051072a87727f62f56fbaba89f52aa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2272db93a813574cc5daf2be9ef443762d22330b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.8-renovate-non-major-50b34fd4a0051072a87727f62f56fbaba89f52aa.tgz","fileCount":24,"integrity":"sha512-tY84APY62zv1+CHrx8cqaGHM6BdB0vW7mRwUT2ESoaSmC+SyDo+uupJUtiKYedZYSIxgw6GyXhXyx7rF0Qivrw==","signatures":[{"sig":"MEUCIQCz5JwM3aEeWMX2GG7+xOsLiCWc/1Kn+zL9SOFkto/21gIgU7f7oI9eLxWeP/9bNElGykjp6W1IptnYIr5jqg8RYDk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMVe1CRA9TVsSAnZWagAAPtcP/0nd5QnKduLcKjHS/dmM\nrlOPsjvC2N1BVLjpVvmMQOSRq67GIXFjHQU0+kN4zNvmHcbfG9ZGrm1br343\njpiZUnzJ7rzxL3ELp8Ya/yevp8Mluzp98v/E9Spf3RtyeBvK6E5CHBeCkmk5\nV4o1K0jjuQp3elwFYm2Y2EFH6ZLBqaFoBUw7ueHY0pqdN53nShgec+mm8hxY\nve3sH5x40f4BW9aPQb5zE+34MMUDwwmYQD4+UwwNDwLwJHOgDuj5TkSKQv56\n5G+L9xxuhZy708MPp7rbuoPtVRPURUi5P/rD9V7dkLklH8R9QlwlGsqDC2ST\nZEZZ+lbG6y/y2dcFMkAVO5P8scAXOoz75WyiLo0qJoLp7sYx4tAZ4NIDCxt1\nDaf14h5RrEzfn7IqVFrVV5d/xDNV0LMBhpstWsMu8xAvvwf2l9OVSIYuCEfk\ncWuIyfiQ5p+97FnjkFDuqTaVtqL+F17m/7q8hDHF32z6gwOrQjuMTdO06zME\nvs6N+oH/+y9LR5TXUK9o3/Xkp27ZreL/x/o1QBJmYmd0HxrsI3jYfVHhBbh0\nyaEjkkyP4LJgaDotU5tVfhLaBFGn3L8k7uUGtZ4Y7Afqaniezv43s0iKeyhK\nqWA/MzFQBeTPjefl1C62em/37J0JSFf2Yc85VyQFMqgh6H6QZ8/HX9EOOHKH\nUusH\r\n=/sf5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"50b34fd4a0051072a87727f62f56fbaba89f52aa","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.26","@balena/jellyfish-metrics":"^0.1.91"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.8-renovate-non-major-50b34fd4a0051072a87727f62f56fbaba89f52aa_1613846452950_0.310638675493492","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.8":{"name":"@balena/jellyfish-sync","version":"5.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ffb358286d8396963f4d2198d08d96826ccbd272","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.8.tgz","fileCount":24,"integrity":"sha512-B16/edag7Ys97Xo86UbfjSYehfKkJ47amm3ON9omi9fLX5eOZYyPFZpUQ2IEYgAHHRct1lrim9Hlg83k9UbedQ==","signatures":[{"sig":"MEUCIQDR6qc/BoOxEbRSoYbTSOjYwgBNWgsyYp5KJ8kBA7K6nAIgKs74vBOHBs4yeCXEdXu1GnCIz33L8rFL12sZpSdPYOc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMVh1CRA9TVsSAnZWagAAEuQQAJW5QK1JEMGX8zAu3Gff\n6jyi1HCTi7nbPTuUzZ5yiwcT5WY8x0egxRR9pAJvTPzaYWhItM7h3iBaLezI\nghmx0BFGUsGTV98m9JIj6F74Er9PXYiB0BaWmqjdfYbCe+6Go0r3V3IZoNNW\n0SL9k8zKuHuhTjDVtT3z+TKkRMS70Tjz31VvL+reCexMGX/FxY2qZ9z2l2tZ\nkveWFFwVNubKxq1ffY5/0ZU3upGI3ljVRBZw8ISUsb+fmeMA01cOajODSEwx\nJuTDuuEDu/szMzOnTCuyvuc/Iy/F4K5hBk+pABhiXj6CQ+rNW76uBEhSyhIP\npK2+o5pNfwYJaN0BvLjQkrB2/6mfKM0dBpRZLb0fdcEYgf6iuYyIDLDkb3zq\nNYrduWmDA/2IfRy6y0T0rPxXa5VwKCVM6ID2sjZSuOPCBh0tpiFDPfwOHtAO\neQcjC2Lbvb0fXd+IuMClX5tTjALC+hZqKyN0m1VWyZdVCX0DlMPLlHCdFMpX\n4lU/+2Sn0YWmw0hiHndCK05+S9DYarvFJuQ6bXtC66mMZbsz9Kjs9dIL3OHr\nwWyCOY1lAwwMP6CMeV+nO0rFERFbiyxDeDAhI/Vo6uW8AXQyOTQREC3T3akj\n9G/HVbx9ECJJuVd99gHa+x2mByeKUz7OeTd2uOe6GCAuUXwHWc8/uaJw17tb\n+1yb\r\n=yR6j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6e3bce4113159b4bc0d92f27b05e575ecf46b9b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.26","@balena/jellyfish-metrics":"^0.1.91"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.0.2","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.8_1613846644880_0.9205501216548446","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.9-renovate-non-major-a66bee22a6170b448cb5fa0a39aac950101a4a50":{"name":"@balena/jellyfish-sync","version":"5.0.9-renovate-non-major-a66bee22a6170b448cb5fa0a39aac950101a4a50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.9-renovate-non-major-a66bee22a6170b448cb5fa0a39aac950101a4a50","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fb9e34a7601143e3b0b4765733acc57c7e755751","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.9-renovate-non-major-a66bee22a6170b448cb5fa0a39aac950101a4a50.tgz","fileCount":24,"integrity":"sha512-bW9ymcsTF8m8I6zRdc53BO5AzaHvZ5ZpYI/eYEClMuruniHyeCLCa/tCcP6TURseXsMcvuldSjlzv45AMpNmLw==","signatures":[{"sig":"MEUCIEUafZ8d48akeMLnO0SKl1o8SJnZ1YOEeu0qk8hOWsHKAiEAnaDVhrd9huSg3dt8UbfyWCJSMSpfDF+VIx++kaI7jb8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134281,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMdgaCRA9TVsSAnZWagAAt0QQAJuR325dmB15UvAH7k2J\nTlx/q++OxGt2xLu2JX4VqGBZeJMbnEJzpY32a70QyQQ+7LutUrQ/1kBmOHHW\nWNKv5F9ug0W42rQYOxPXP3CLLFd1H4eUY9VbMepffxQCYFF7LdUtmOR8RGNc\nv227JXsKThPcz59gfTU6bZHbc0ApHVK4jEfNV7fvMyW0EW6cFW8f69ZEVVxm\n4twXVpc7lHNe7FJTUpTgivgh9x0vPrVPtRAotMv2wSJU784sNAnjukTFX+F1\nk3ObdQRIPTGwL6er9j13yL1kFudTmd+XPKr9fJdvAi/hZt9KplTiC8UTVvj4\nZnHiDqQJunHEtfvypRDRlCLXDQ573l57mZeqH3u8KdgfbVOCUCZOXv6TX/KS\nqKWfuyLD3Yi2cqwYoeyqYjRp9Z3WowHYKK9SiOVHdkYk/XkpgofXUePK1Pu9\nVLkh1CgYujdv/pGeVCVhnkMzT553dUq5uMd3Z7RxXbzHIsqDNxtoZZoKEjtN\n6ZLxBZhUY2T0HORfIEdPl3XCKBTmLeJ2uXj0xDWsxcbmhbfDA6cPhUil3fn5\nIaqpYzon5ueOZ++HnO0oFbbSdDhDZ0UcUwfx5zSZo7KjEd6HJuQXwHaSg2Nr\nyOBwnbm3x/fnJNFTW+JOiFAG5zV/dFVuQ5Xltqkd+e6P//iEs0bzSljq2I1I\n+aRt\r\n=7/tE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a66bee22a6170b448cb5fa0a39aac950101a4a50","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.26","@balena/jellyfish-metrics":"^0.1.91"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.9-renovate-non-major-a66bee22a6170b448cb5fa0a39aac950101a4a50_1613879322147_0.589576179922213","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.9":{"name":"@balena/jellyfish-sync","version":"5.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e914c70c27537590f4e8b99c9673f0abeeca336c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.9.tgz","fileCount":24,"integrity":"sha512-c0OvgROyUT47upFVpPrm3JIO4Ckc+U409fQrViu/9A5O++p5GZ/Xer5cI6mOuFT+Uzc5gxpizTR6EZ4YKN7mTg==","signatures":[{"sig":"MEYCIQCMHprmyrqrwcU25mfcKy+GOeYLI022jvNo/yXIh3nnAQIhAOosVoPwaLjJ+oAl2m3WZl74CG8DYvDOzQ+uKUdzVJmF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134221,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMdjWCRA9TVsSAnZWagAAgdgP/1GdvlMioEbJUxPPNgiD\nyRxJUGsAEVCtVYSJil4bPTWtbk4gRkOLSBdo9ss0uethn3FjKb8Dm8BZ52TN\nu/OPlXse4cOT4smpziyYXd+xt+H1haOWPI/ocY1ZDzdehpnmdD4ermb1uMGB\ntWGYGPn1sl6uaaVJhLMXFRNcWz6B+WWxcTCNGVQjltUkkaBF2vPKywX09RKH\nRq52z2nIMbTs1Er7W5Ao2MlASd/PaY4EpUBsZ0dO1bCnlk0B4b+ozvWeNECj\nsKe9kABiUHWRU4bwM7tMCvuUsJ4okcJYyZecQMmOLhTflZZdvEGLRJMn40Zd\nPyZPpq9X0baw/Q2DqOnyoaDq8qdagUjo7yI2xJHggELiF/fbcpnZYdctNSLx\nddeFr87wiPYqXjkfzaeNalz9BCWVSv3uAYqS/I3LYcszJLXP5j1Bcy+PBSjD\nUOLT84EkMt7jjQNDEvsMJUAEl9cn5gLG5i1giSUEkGEl9POxbl1dBocjl1Sy\nHwZHhhlAgMjIfdFGEfM3qb12rWtesqnq0HW+jQO2Nwm2+YAYCyE6eXOUbZ8G\n/MCjoQ3PIQyUI8+yi4gFKgJy+Kt+T5UpkdOOYF7l9yGgllv5/PK6BQ+crUTt\n+DygSKrzGWb/dHKKUnWqZV7iw1jtM97BmPIvkj4FBNElJaIRHVbaQwbJHWq+\nYXK0\r\n=kEAF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c0a9116137386f83ac417a9d67dfe7f62d27c5c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.26","@balena/jellyfish-metrics":"^0.1.91"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.9_1613879509915_0.38378674674539814","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.10-renovate-non-major-eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e":{"name":"@balena/jellyfish-sync","version":"5.0.10-renovate-non-major-eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.10-renovate-non-major-eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ff93cb25a8169c60f1a81a6982d0060818cfaea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.10-renovate-non-major-eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e.tgz","fileCount":24,"integrity":"sha512-mC93XC6qgpVqpK04J8eqasW+Q22tigzNvErsRlihZJ2tCE9LIMNccCBOFXw8w+CrdLRDR34PIPhiyaoaeguR3g==","signatures":[{"sig":"MEQCIDCXWlz+UvUdoiw+4cvLstGDOXAu/ntmD+Ge3FU8Iu7wAiBMjbLy+qulJZsRhxMAiVB0YJmWwHRzIgRz+h1W66Vj+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMe+ICRA9TVsSAnZWagAANdoQAKGIUaBu/BTJmt/6Y3PK\n/I3iSI8T0tz+BIjRr9mT1JgcPUS3rYjsbhgik+nmzr8CBnwz9Dmx5uyLRKol\nOkGT31sV11CjfgAkWnT0wnAmZmu1AYcaG5wzhfppSwefuNysrEnd4Oid3+0o\nrgL5L7s0n/zTrlRI2RSK0QUAiAahGs5uouiAilX2tNv3I/EHeGpbgajn7vcV\ngxY1RYcAi6Y4H70zcR6SaoY8mkrxMSx3AR0OjHMjLnTIkLoabIkRNhBgpYWt\nF1N3mVbPor2nGPKbwZcFiW/ClgFvL+PR+fHDTmt5RYpixsDAcTvK4rAtLQ2k\nQQuGQO76EqqVcgErr71LY9TQSglRxln8GtEac2hdTO6YRd1IcCW/dzJdCbU/\nr7TLIH1/bqKCgTJn7Oxu0Y7cpoa8UyfJSf2ErYuI/Ca0o8gEjHzofDr5wX/S\n9M7AqXZbkyW/9VezAVq9gpmU4KS/YUgDHcjrYGBDJMSOQzYg5q+kinfXLRkL\n0XtfHNOI+HqP7IIiAY1cN6b4f+1R25msdCi84M2QTLZJpSIYU61zsURDpJhv\nNsnkt/+1LSGifnsYvHfKS+Jensfh/wotvNmTvMsHtsI/CI1HcYZKPN56sheY\nr4imurhmMZ+T9pVCj9ud56yriYd9R58SZ3XF1oJbCitGT4H6JFxljQhQy4J+\nsFOr\r\n=19fp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.28","@balena/jellyfish-metrics":"^0.1.92"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.10-renovate-non-major-eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e_1613885320055_0.9733859743507911","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.10":{"name":"@balena/jellyfish-sync","version":"5.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a068baf21fe9cda85d0e8e319321cf65076a362b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.10.tgz","fileCount":24,"integrity":"sha512-8CsAE4rN+4n2vdrI/k/EQSJFUO2qhf6TDIDTMTDZSNepWbX0vK20uGPsAAZK7+VcctYKFROHhP6ShyrnWFj29g==","signatures":[{"sig":"MEUCIG9zlelWs1uBUsknyljyxi0lMYtSV/yz4X4Lm1PASgb2AiEAiLTLPnhlbL8SjWYOczATqTgjT1wHNJ77VbYaoqHCvXE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134571,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMfBhCRA9TVsSAnZWagAA2vcP/jbCzdXZLJauV9bjjPcI\n7oAnGOeh+OB0hqSiSOOSS5/TbMGW3gZrOmdGZaK7cf5b+HE5Ge0/AZr6wnI4\ndJ3WtDiOaUDKWXDnUEb06CD3now8pJI6O6LLbAOmomac9l0f+uzJWDliLte9\nw8nCB4jOAefSJ5zsA3gkSRDu2767vtUxs1Vz6idRWT0tn5j+jz5H3zdsJRzc\n6lyeeUueVli3j+lToB0jroM8lKuX2sSDm6NfhWEW+4SQTmLIr2N5GYc22s3D\nPTVImvKSrdWww2zXawAr6y0jREjtxLOjCMOK666iP5HTU5SrbbmtHVZdPtbK\nVLNhY+KHC/B3WuDp/FhQ1t8QJxWSv/qHORLrV5QSnns/D6m0AfR4x4LHrSEm\nI5DEohHCAuChIGzrVXuO2b0CexCONNdshdnpO8hT7UkLq3j1XeeOdxI5BQIB\nEFM0zDhyaBG42EBYQwizFDpCtORBLSUcpZvvUExka1oMShm7ftHcsHFuwoPe\np+aN+W5Li6E2xw4Kfr3nM2BGZ4p4tN0NpRe+FYFH7QAAM88dHI10dqTpZYzc\nBe7LGFJSDADpSTz4QQ0yx0BGglrsIQ+QaCRoDtdJ1NdTRwl/mQ28rxpCphCi\n3L0CNWGeqldnNBBGI8QuyV/kxNTOc3oO1kh3nCBEVsRCFqpGSWtKKsFi0uGY\nmi3h\r\n=fhfL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"94f4c2b434df13bd5d64899d51bf7f836cf4bda0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.28","@balena/jellyfish-metrics":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.0.9","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.10_1613885537433_0.526465865666881","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.11-renovate-non-major-1bb2d83527a3ff20e0c614f7e969bcc8e277a477":{"name":"@balena/jellyfish-sync","version":"5.0.11-renovate-non-major-1bb2d83527a3ff20e0c614f7e969bcc8e277a477","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.11-renovate-non-major-1bb2d83527a3ff20e0c614f7e969bcc8e277a477","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0f6eb9a75d3dd59e138d256bb13643f05759fcca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.11-renovate-non-major-1bb2d83527a3ff20e0c614f7e969bcc8e277a477.tgz","fileCount":24,"integrity":"sha512-IXpbwaLMbULjfgKL/QKNA3W6OS3dLxhpqSaKdWqve9edwNElt/P7mIcGinNnhLeTzlweKgldBxGs34jFWTizAw==","signatures":[{"sig":"MEUCIQCad41kidb8oJZz4N1ucfY9sfhZrLwK2mry9X8G9O1m1wIgI/BWp1KKDagl1aNFF7BG6fCJzEuWVRwhSJxutd955TE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135014,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMuRECRA9TVsSAnZWagAAqYwP/3TRx/GMlKLu/Uhd4Nx9\nFoNnxUaNPmrZbATDK4ANwEKG9nhIpvzDlzvDB1KtVUTFY0VlQOeiNB8TNqO/\nUf+FRo5f9/tZbX5+zBPPTiqLe2iKHhNAFE4ZVgcwIILpmbxliVfk3GiTl8Ob\n6T4TC3sP0zYhThBE2MeMq2zjBjg9EJ9C1ZuB5o/xdHr6OIBvwD8wHdIiZv9F\nF5qz+mUgB2inPgpytS9pGoCPEqJoh0dEMDPAWKyrb4sjmGaUHj+t7KlQ1rYl\n189Dn2r9lMWNsd3cqMr4DvvhO/CweTXgXCJCySmYF5OsTSTWELp5b1lPGuns\n1bs/oku7joadWrcRowlGBBT5V8q5uaSxgxkoR2UcEszc6GyPEx80czTV/ZuA\nm6gjT/UGIF8t8oxdXRrqReH7qb+/OVjeo6ZCUu7wRLMhRjHfxdEuugRj5eIZ\n/lexlhxf4tq4/QEG4PYJskpN+/7K+xWSH04u9XWz6SNZzIYfehrMY2+2zyeS\n3HjqrBqdZG1HcmqWvXH3RIfzq281ZcP/EAhka1UMLXbF3EwqpQCZ0kIZvmIA\n5FxBXRUMMGWSD8d+xCS24Ej/OIDigx/O9C4rkvjyhOA/2gHKSMR6PlLxQX+C\nrrOkfBofiywa60IfMAy6o5KY0olcvFDFP0nRuOyTbCzJDpH7kw97TP/z3tQE\nW77i\r\n=lWkV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1bb2d83527a3ff20e0c614f7e969bcc8e277a477","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.28","@balena/jellyfish-metrics":"^0.1.92"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.11-renovate-non-major-1bb2d83527a3ff20e0c614f7e969bcc8e277a477_1613947972224_0.4430310752797273","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.11":{"name":"@balena/jellyfish-sync","version":"5.0.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5c72d2edfdd94ea124693542d97e62556e65e219","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.11.tgz","fileCount":24,"integrity":"sha512-6ZJAUTvBWnpYrWsm5ahwLLRE5s3ojiH8UHRRL+MgNYNGEvetEIhUe+56CeIEfNzhkKDP50yQlfiXqd2jSICc4w==","signatures":[{"sig":"MEYCIQCN2EbT9xvSfpoAOD2ffL7Ewm9KN3QXNa8Z/UJFMzjpLAIhALjXpifubApjIaCHLjFidR8G9hOACMByuEo/igw6a5uD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":134954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMuT3CRA9TVsSAnZWagAA0uQP/R5Y0zVfmeCaLQuFysg0\nP0mP4FwG2a5ZAPAyq/A6khx51cbQv/NfqboP9an8BMcdQU1+QTED7OKVk7xl\nJ4dbqzZ9wbtBa+B6zOETYI2IvSilZ+J13KeO7PWYNGtNep3acG+2sLNnmq9f\nTZNE6m4JApzpneCi+akpJLUKCr++93AjEI8GGM1W+0l797+qVX1qcYHpDLbY\nYD+aEkS0Ow0ovk4Jug3yqTvA0y7w7qvEcKsgDMOoxuIZvgJGeXHU6O7h9+m6\nC6C6FrTS6Ko6jqO+tBhJ5Y3LHRVVRP/5yAgga0SLo8qyp0FcCcxCwA/tkRjA\nEHxDzbjiKqY0ZmEam4FtoToviIgbDGZ51dUr2Enhe2u51swXZm1KnHPuwmhk\nV1wxCy0BPVNEbu7mu2Uty26V52xvakEaWLfQAdAZ97WzXuprcWTGI1xP4Y2I\nf7wV/KaStpRKsfkvdplpS5XkbkNbRtlYLWQTLEVmyeXT2VTwfi1cZPybNpP0\n9uuWoEErzMQNHZjYq/ucdqW7/3JWIuIk4ssnDE4wCwYMD43awZKKsIaPL/rS\nbpYCgIAshbAMEHcXY66Mld9RvXjyYtZmw9BHHdLA8eWFk1xI36qEXgs7pB2M\nCVENW+u04u3CWIhsfqdZo2I7/NwaQp1vTF66ygDHzRa1Dx6hXeASga/gwzg/\nSGTc\r\n=cXAG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bc2e76ff2764326840b98876d02d7a0ce07db965","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.28","@balena/jellyfish-metrics":"^0.1.92"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.11_1613948151132_0.5967413652292703","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.12-renovate-non-major-f398fbfa7820d86503b5758e0dc71986f4fa3240":{"name":"@balena/jellyfish-sync","version":"5.0.12-renovate-non-major-f398fbfa7820d86503b5758e0dc71986f4fa3240","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.12-renovate-non-major-f398fbfa7820d86503b5758e0dc71986f4fa3240","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"161df98a1dd374ffebdd78e96564c3d9d69941b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.12-renovate-non-major-f398fbfa7820d86503b5758e0dc71986f4fa3240.tgz","fileCount":24,"integrity":"sha512-9kTxl1+CvQwWsfBNinz/YQKu42LR63du6tAbQpdDI7JdtS9wVYYce3fJUI06az5IyoJQ/9YPU4OPyIZm2SnGhg==","signatures":[{"sig":"MEYCIQCX9OP5bofbAzFjpNuIXeGZgPyD0eD57H5uwcJkZ/2CfwIhAO0WLkZr/ZR48d4+LFM3PMHj+asF3gPF0fINmf9SVnBU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135363,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMwkzCRA9TVsSAnZWagAA/nQP/0LQgsTDMdl1GRKFDeqG\n0K9gujf4GbOn4qQhLKj04dGKHX9YVH7hDo4y0d6QvbBv4iILRGYy8IhdY/8S\nKRkVSpUPhTgSA7OJZth8aSSA7zZdSjxsP0eJAHGyXcm+DV+quGEGQ9YBmHzu\nPh4J/zL7KkS7qukAk36jWg9GdTMrl1A0z1YPw28k3RGsKOPtbduIAUIkb5ME\nDYm5RGBx7+nVM1F72jdwjh5xY6wbvg/Brwiz8GG+0C1sVWc4PE5/4d2DlyyS\nG8mfm5eDFLg0+4MSFrCLk9HiLyLVN4UkD+aM2uZBOQS7qDIXNsX+jpE5HTxC\n3HQlqWyqceXaekYC4L0SA+PY3cg/XdaOeFbYLXGtqqRUG+AeVvFtvAH4uUvB\npeGuBB9Jospm6aONSAXGujhvpAKpISAVOh1CrkfOq9WbgSjwmNr5QwmJ3OO8\nl2smqQRH2l8Npsf06vbnJP39+cMeJHbxlV9iCZ8JbEQC9MHyHf/f0r22uEzX\nNc/Ns1+sKs8l9z83QSnxMnqo/rzKTUOaucWBvAow3UXmwSnVCorAig+jv9wM\nzbPZzb8OEi3eJGp2yGgYYCn0i0w8dG0U5AQgcKGaKzX2DiPhyntoyWokyTPU\nwnpBT0ITUHe5llKFAOHnsmhF36a15kqp/49R+vdMXhgqxiU8RPlAi0vcGzJg\n7UPp\r\n=aMlq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f398fbfa7820d86503b5758e0dc71986f4fa3240","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.29","@balena/jellyfish-metrics":"^0.1.93"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.12-renovate-non-major-f398fbfa7820d86503b5758e0dc71986f4fa3240_1613957426535_0.29611621219972184","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.12":{"name":"@balena/jellyfish-sync","version":"5.0.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b256760fccc95412cad2f1ba25fb17b613030c4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.12.tgz","fileCount":24,"integrity":"sha512-iFdXvLvIWtMpRbZO3hwMBI44i+0ZVl5964WAscuwXIVhRpnBCI/aEuwivEiwffBUecs5zRo2Q+2VscrkdjY5GA==","signatures":[{"sig":"MEUCIC7854pLqEb6H//Q+o2l3SDrDWKTY6RkzPN0621e6aYBAiEAqesqOykiANINtdHCo81qOBYSTMhxBshSe9gzOxAoKBM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgMwnkCRA9TVsSAnZWagAAj5gP/3V7fQCYqmKuLE2KrD+4\n6CMVg8qYuh/UpymvXyWTvVbAKybzrsPKFhviFcqXEXIMahSo68dPcmEypBOT\nf7R6CjdgJJ8aT1RHuQ1zI2ehXJzxW4eg6XjmwZXyHJJB/3/eDakFzSorcNOg\n2syImAQa13asumjt8PJBZGPdtZh58NuAd4Xwsu+/0SE+ZR2mSgRcnrGQCC0J\nfE2Ch/jGoWBnPz7Jw5tZG/IxyfDClldI9+P0WySiXrB+ksYZCipaShTWT5SE\nrV0SP4BVlAdG0l/BtplDWZv6JwHPncp1HfCCNYVHY2WQ1Y4As0BuFp0mh76a\nzGKF7OBCLaTRKHX7vKDSH1l9zk0gf8DGsuWrlPkyswXOibc4CXMN12xjU5+E\nqDtWTf5ZW62fTDbqfWkHt73f6vhPH/U4PoV3aM63hRUOJJYTO2RjJPchv9oj\nVDFsa8eaKehELGDbzBGYGCTspWjycoTJo0I2jcjUwFjih5RCICvHXDYSdt/e\n3qecYhBtwBxBrqNHjPKLU+420b2EI9BrQXMbexhFlgI37gTIU31PKs3tw5cV\nyXB2BuchGyEgN2xQ4o/mWXBhuwSw2zvI7uEFLAlP4wiQqlIBbrcxomCvtz19\nOcyzSdGEGfkIwXyLdqhTxsz6v/Dn8en8br+7HPKEattvvcMabB+wF/5Dz6Sm\nyrXn\r\n=g1Mh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ce9bbf792606722b9938c80514cb3174d34e83a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.29","@balena/jellyfish-metrics":"^0.1.93"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.12_1613957603800_0.09439873865170689","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.13-renovate-non-major-6ddd96cb3524ad4facc859a0201256efb0eb44da":{"name":"@balena/jellyfish-sync","version":"5.0.13-renovate-non-major-6ddd96cb3524ad4facc859a0201256efb0eb44da","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.13-renovate-non-major-6ddd96cb3524ad4facc859a0201256efb0eb44da","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef864bc309d6c7fb2f9e21ab68971a66c89712a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.13-renovate-non-major-6ddd96cb3524ad4facc859a0201256efb0eb44da.tgz","fileCount":24,"integrity":"sha512-hpoqfVbPWRzTcfmnT+6iUQ9K0kYtHbVecoxt4Lo3I9/5cSMtdOwW+gWPIChYACdd56NUnM5qfGzEmdZlikuPig==","signatures":[{"sig":"MEQCIF0IzVulyica18pf3sTClBgWsotrGPwc3ETFzlgYO1YKAiBpbAdcPdKmXUkSzq7l3L6W1Y5lrlFl0Y1x59x6imNMJQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM/X3CRA9TVsSAnZWagAAq6EP/R4bUBZh8h+Sp9kKRVgF\nWco3pgD94p7Fxn7+4qxUTL3Gdkzwqqm7DlpdOlU1ooU6DG9INhs5TNpBrvPZ\nAPFVoZDA/P90tNsJgdb2y6L9PY6g5QhMM961F1hy2NVCO5QvxyMRgMavl0Y/\nZ1KcXwJwStWuYIaDgaJxtvEWz1t3at+oY0KN3ZDQ5dHEXu9WBoye22tciI3K\nseT2yZhVGj5Xe5csMqc/oDsL5y3VqSanGZ953VRt4at8HK1eneqrAD84JczE\nURMCi7eX0tDfAuQePeCrAVVg+7n5dwoRA3lp+CMz8HGMjY8JItuf9CL925sr\nwuELoQ5M/C4MJsRVHErEBmgAJsJ2igR1Wtz/KjkLlp+8J7wfoOpqPjYLdi84\nGNWxRvxUR9FHp8Xe2m+vQ8vhYusXEPQr1XuymxdSAzLudKYAX6AIZ/uzyd9U\nx0vYmT3Z7hhXImRayqorkBQ4XBNZvDGr0nU0xnThelu/gQIErFwKevGFctEt\nla/Fx3GMpeWwLApZbWAWfolPYxuKks4lNmDJJC7reQFqAH7rO+AGY2h8USpw\nlvNb0acMReTqXD+WHeM/9mrkz3snr5mx2njql4o01nif8OygYEyr95XLMc+l\nkguOFyco3hc6Mves/NOq/+h4XqVGLcle7PXrA142cgOh2OX8RYNr4w9rBG5D\nKCDC\r\n=gYr+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ddd96cb3524ad4facc859a0201256efb0eb44da","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.29","@balena/jellyfish-metrics":"^0.1.94"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.13-renovate-non-major-6ddd96cb3524ad4facc859a0201256efb0eb44da_1614018039340_0.3580343478413033","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.13":{"name":"@balena/jellyfish-sync","version":"5.0.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d058828d5d7c93c94f164974e9fd41aba297275f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.13.tgz","fileCount":24,"integrity":"sha512-T3cQOmM7u9Sy3an+1qPuPGdSQ8QcRGXkjDwqNByuP17lN58gCMToQ4bxzyrUb0utuEoXZjgsVbfE2iafxZz7Wg==","signatures":[{"sig":"MEQCIFKih9ryDngg5F+fdpWEi/Shju5hNcl6pkKmmYHaI4hiAiAjdV1kPkM+gMHFq4nMWAPOwRn4sq7xv7ojuMJonlvnTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":135652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgM/avCRA9TVsSAnZWagAAwyIP/270JBNU7CsClutpPKvu\naFSjf5ZpPkSS3W345Ggb564M/bxt82YBFG0le3uczuAYmLGSQMoGjId9o4Nk\nwb/dSQ7VZ1ivpUCtOpMWFQTz77Z4iGJrm3+PhC65/z5s6t+aJiK4KruJBWCw\nOYgeUdGzZzt6DW3w/hbpVqe+MADR08tIqyMndqc0OcbRpIzlfoxOnbAQyjU9\nRPbsbbkUEbJ6Y4ectELdgBQamV3isNhVf1Ma7Fo6W4LLUj2agosLITFna62U\nG6wQ1laJXwskyJqYoUJKfi+5zQpqnw0faiDCqbEBsrV68RyugUipl2q3RL/4\nGuyLOJMM8PbtM92pchhIlruXxGLMJwARTlzK+jQzUDWoB/eC4B+2fPhL7j52\nlhfsD8ysJSGF6KIEJ1I3Bl7noEaOraM/ZoPpW3o9Y+CmX+98/7JaXuXWKr3l\nJ66LyOxL19B4tg0+TEtv1vGEYzcpH0Vl+cE7wUS8RIrbB8zsKq7aq345KEqV\nefp87dlnbJKAWe8Y1SvfxR7dolh2tam/SigxW9ALr/i/jz0Dkz0qAcirJfwD\nMQeNuqP679i9qIPHQZAR7bzHkYu3VvW+QTPMRWmgDeKWyjYtpgZbJUj4OzFr\nEF0wBbbg4ngSpWdeDQBjnQJzhPOQEt1V1T7WJuKFnz2wbUxmO3fdlR1Js1Zn\nDvmP\r\n=plae\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e898be9da6865b8672bcbc0834e8077da674ae6c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.29","@balena/jellyfish-metrics":"^0.1.94"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.13_1614018223190_0.12307205373359587","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.14-renovate-non-major-7c596ca55efac1d70df71c5d5605b17ba9848bf1":{"name":"@balena/jellyfish-sync","version":"5.0.14-renovate-non-major-7c596ca55efac1d70df71c5d5605b17ba9848bf1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.14-renovate-non-major-7c596ca55efac1d70df71c5d5605b17ba9848bf1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b1b7f6f5d6c5905ff9145d7e763890acab12a065","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.14-renovate-non-major-7c596ca55efac1d70df71c5d5605b17ba9848bf1.tgz","fileCount":24,"integrity":"sha512-MyrM8zoYZbEXSdMc9pJv6bLjMcca2CUOj1dkH7k3d8G4MRPDvYZbSXLrcFqKdsrynUOfpTT1ZK+PCZMb44KLfw==","signatures":[{"sig":"MEUCIQDtnV/SL/4xbH7JqgB4QdhO+Lm4snIseP52fVVyfu9QlAIgKeIIv3Hf5xoaGpY/x7DHmVEJEMiNFx5zOL+KGtpgDIo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNBfdCRA9TVsSAnZWagAAp+IP/3potWCDOS6qnWePKnqk\n5X/j+owhwQu+gNRCZ6kn9OAjhprWyhmo8VBb6uTq6QgID6tF25XFinQ5ueMi\nHilP6VW3fFiyj/1tg4g6UM0GF0eAvETyLGBEVL0YYW1LL3ZwXGR5RzZ2Lksh\ncscLnTlBbgQFaJM4R6hV/V15tg5E2jvIb/xGi+cMuqfzlGYel+oZeMBWQ5CX\nykzvtyB0cdAdeFThVkHidKxQspkrOszD9at6LAoOOJFq8HE3F5MDoc2PhNlY\njoixIT6nA9rmRiLOUDuaZINNJWGMd6ipPu1cXhpiMWqkJwACfzYWCnAXiuDw\n9U+hVBqK0Fndo/PAF9xAWRYtUXbofqrHdQJ/zR+l07gsWrHRB5upZhpff+2s\n6oQNViVvWgCp88k9PLtFNPDJTM5ivTsG/2H2APJUB73oVeIHMRnXwpXGBVwu\nIk1IEKFy0JgfI+H5MvtJLGnHFbM6hhaqPzJLSxfmwGdev/s3zuh0aznxXT6Y\nveVklY8d7B8wCgmvaoz78TF4MdV8/xz23wl1cIyuyhjKzkA7cptA+1+wSlu1\nbfqh70wT2RJxYTkndoN7PX6LEGMI2JgqZtBp2lPZvUwFg6JOBYYMlar+59HF\nZCb0OljEOwA8znOYlMVJKLa0z2zH6UD2+3YC1JC6/BiDKrOu47Ce+UzKbV9s\nwM4v\r\n=ahsj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7c596ca55efac1d70df71c5d5605b17ba9848bf1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.30","@balena/jellyfish-metrics":"^0.1.95"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.14-renovate-non-major-7c596ca55efac1d70df71c5d5605b17ba9848bf1_1614026716828_0.1907585105661116","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.14":{"name":"@balena/jellyfish-sync","version":"5.0.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"490d67f77748751450a94f95f166e0890aa46117","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.14.tgz","fileCount":24,"integrity":"sha512-pvDRnIXSjNyhnZbAvK9Za579+9QSj3QtBJL2yvpgfrdR4tEidabKLWXx29hl+Iam1hbzWdv5M4g2MepHo/xMpA==","signatures":[{"sig":"MEYCIQCBfysN7QZMC+/+ksc3QPQk8J5i1hFEy6sZoXpNMFeDEQIhAPC8I5JMbHewj0g8GAEden9rfGNgUqPPBHtNyQnywWV4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNBiYCRA9TVsSAnZWagAAoooP/1ph5MCmQ69v9vuZ3O7I\n90T3LbVzWl1QiG2lllVV7fqocFFiCNt1QMM2sRPNTUKPuHo2fNZH7UPSGjts\nAuIAUbRyc1YIdWErEBggBCWEfaie6Xv5tS9q8kYSKXWq1P96Z2Nlx8p9N1lt\nDO36uoWQt5NYW4EeUb4O1duxS7sWtP9SiICr11O17bg0gqpLHvtcS/3uDMxN\nPWZjV8GCLvsZZXa0GQ2ff1Dq8BnmGB6gqZUeu6QgxCRENPPrTX4Vio09+VqQ\nghotL+HjPcMf7TqJoMApADF+E7KhZ3FgrsaLttaKQLG9RYLKy3sPlDvhifLD\numjSZwHOe8THksJoaxAdUW05UglTj8K0qFV8m5wABTR1lyfpabSkXDoyo8NB\n2otv/a4BMJz5060D6sP2GoQIMSZ9ZrAQEYDEduPiZxIQcXlPCj8U3uAqRk6U\nrwt/0+LhYfatrqe9762lXXKMAKjfW6bMFx7h7BL9ep50YIHA7+oHS2AqRdYt\nIQRqZHCqFWUNPqyPCM29lEg6s2TjE9NDrtzQSrQJ1kHFBOxSKQiYfg8y/F1i\nkLr/do7WQgCL9FD/VD04ROl5aedaxaWPbvZXYXh/lAMFuUnC8mLzGyM7/6n5\nCG/8B+adMnPu4pi2a0mUnHuClKb5BeiiTgeLohGafTaRKT3hKUABjIzEWkBj\nxjsm\r\n=gpTI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a2da7ea819535acb1ceff43e06f9651f8a5b377c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.30","@balena/jellyfish-metrics":"^0.1.95"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.14_1614026903734_0.14306408106733426","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.15-renovate-non-major-3224bc81ceb227b2ed5e987381fa0dba8170a493":{"name":"@balena/jellyfish-sync","version":"5.0.15-renovate-non-major-3224bc81ceb227b2ed5e987381fa0dba8170a493","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.15-renovate-non-major-3224bc81ceb227b2ed5e987381fa0dba8170a493","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bddae4b3dbb9a613cd91dd6a22f5fba0524a779c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.15-renovate-non-major-3224bc81ceb227b2ed5e987381fa0dba8170a493.tgz","fileCount":24,"integrity":"sha512-N2p090EdBaLdepVe8RLduQL8QhbmacNF22h82lOKXSLV9LeK+ala1acB2kAHSnglcRVt0MyWDeYQ84bc9UByzg==","signatures":[{"sig":"MEQCIFBpjbBFBpyn+SoZ2qqxhO9eRPp4u315/qX9rEZLTdeuAiApdJ/877ph0eiOb2XNeAz3Eqlcb87Es+yUdd6aDgsCuQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNG3iCRA9TVsSAnZWagAAeGwP/0HRPOI7QNlG7NuoXddC\n4IzMmwJCuNwxiDh4XIMUUcfmta5tuzHC7ic0/du4WblHOzp+Rr7JVJes/Aiu\nAssEhna7GST8rmyqkFsUnHfLkerp8iajSev+IrrbysOXJLvfKtqtl+TfR6LT\n+7bPLIIjeZmtX+HEv8Q+sxncrGJyvXKpv25vVCim7XAL10taE2Hf4lqnPk2Y\nhuQLXqVvadpHInV4nlPQ1LN7HZUO5BMrIvfK8Kzb7Fn9/4zVjvDnregf06fe\nO7mt2mbcaTjOUAXVj5r+CrgO5EkAUC3fqElMDTgvm3zapx5rJCM78/shqEkS\nC4f7TU9MzygCegJmy60Zo3J7JNRK7vkbk4LjrvBZ74WA9XfAYW/I/c6QS3kv\nApjgI/el35FVyqYgF5orBzA4LDzo7kUktzGA4QnxP9JFhWPVDtv54y9l9uNF\nUgceiOyIQSTIPSftrfIHLSHw4GqM1wuIkb5reaHtmkgnXQ+lm8pogQtE3vVT\niqRlep6TqxiAJvi8whFZFPP5GdQnhxMgje8/hjQYcdrlqygg0OYzDJUOhzoF\nvPpZ2lB9tC/iDg2bkhUsfN4Btc5gjQxnKbzLV5vAxLPs1rU283McaeZZ4CJU\nOui6tq36HDZNNUbBQp+Yeu+cZER1nNRrK/D+wvSmk1y7r55MDHBkBpB6Zioe\n9jWx\r\n=U7cx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3224bc81ceb227b2ed5e987381fa0dba8170a493","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.95"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.15-renovate-non-major-3224bc81ceb227b2ed5e987381fa0dba8170a493_1614048737614_0.18563110415561046","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.15":{"name":"@balena/jellyfish-sync","version":"5.0.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10712c35c24e4815b46c6e3f55ba17d4b0537f73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.15.tgz","fileCount":24,"integrity":"sha512-LySRGtTrZir5uyhuI0yleqe7aHl8vbz3pezEj+gKSpUDn43iPpp8vBBM6cEqvW51udmGpfDRcIUFZfTatu3Y5Q==","signatures":[{"sig":"MEQCIH47TNXRWKqBHU8vcc0sB/CJLFwHAUDDUanYDTHauC0WAiAsq+yalQu07jo0ste6iODD6lJOBz26fWE0XI7tMSOl/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNG6aCRA9TVsSAnZWagAAO/IP/i5dD0BFCJF2gUuqPpVu\nDp0JJ+ZIlrCJ+RpgkGooghycVEVnyMKTcZcqxd3+KD7Fi9XPJtWnp15Jprqh\n0t4cJw88rufQy8n2/YifgqNKvm57HSHBovMzxVUosqWw3mwXF8BuzdBzyf2w\nuJVYU+9rCMtnSHE/c88UKRrSc/42x5JG41/EfqVRvzDjvdCR4BvldbMwzUOi\nGR3Pmq09YWE4uqjMW1n9fYwr1JY2s3DBpzkaH9VAXD6sFfWNayZqZFEormfa\nnkFLAyxvJgRtt0o9y49383tmnZhxMXb/mmm/CorIjd4fY2ah8DqFtnuJuPOX\nrTy8nl5pZcvwMrVZntaOgT1S915wr3Ca7P7HVizrlcdKCsy5VArVmZY9tyKh\nruMnMdJzQEm4ls4+zbny1Duh1hfVtG+vgPE99oinf15ahU+ob2HvzoHQZLJn\nfYNRwld6LfY16/zHbmaKx0ST00zxnUTmlRgKduExY+0YoI6PaMkkeeQu0IQi\nTHdG8/bgRYihdwC4UYWmTciFq8uQGE2nWmeEO0Fqy+gASq1XYmBZwcujOvV8\ny29miHPT0wpJCBmw56jkiUOe6pUYneT+71ybXOchor5N6YASBUD20hnDrIVq\nSF0QB7aUZUT777gW44mTPNvGBechxlejNqfMol40ou2hdx68U2g2JYd5ZJkN\njQjW\r\n=uXhB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"16005b53d55e9e780a3e5bdf7ae7bae9f1b9dfde","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.95"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.15_1614048921483_0.3061357596367955","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.16-renovate-non-major-74bc77323100398015e7b36d98118cb0bfe7ca9e":{"name":"@balena/jellyfish-sync","version":"5.0.16-renovate-non-major-74bc77323100398015e7b36d98118cb0bfe7ca9e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.16-renovate-non-major-74bc77323100398015e7b36d98118cb0bfe7ca9e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7228470236c6a1a4c1082e8584876f47f4d2d691","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.16-renovate-non-major-74bc77323100398015e7b36d98118cb0bfe7ca9e.tgz","fileCount":24,"integrity":"sha512-3xcGUUN2SKo10plGwKiG7Nl5sNDgvptr35C/iuiTgiR6FTUOFegbTD7gYqLbYld2CL2gVAzsh0HLfgd3GsahNw==","signatures":[{"sig":"MEQCIANqGM3AHhp05zMLtvqA1z4P30Hz8Ig0UeZFuslvhnQCAiAHBWOL/NixLxzs5s9F1dAwfbjcdJkgcofz7zdETc98Og==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNJATCRA9TVsSAnZWagAA3xYQAIJpyhKoKy+9iNi00XyH\ngx1HWMdSJgbT5m7SFoc39xClk1SXY5k/u1znn5bbfMDDObu1Pjd8hqghD2TJ\n5SgZ7f/hCw+TOHHNf+iWPrF5ORAjGo7fyPJe2rTJjk8Muk15vQK4T2psBzfc\nLbgtFl+K+WXD+X9ONd3WmywUgIEIGHD08mF9RPipJ9FNNpWbPsyVkFCTtVxI\nc4qbihoyriHW1yZZSeBqsNGE5VsjFHa8a39UyaERXVp2ISkiXq2ChpFmhyCQ\nDIoSbZtaqaXybMm7Be2T8Loq1L/4k4+moMCgeiCTRw3kL8UkscJe8CgF60R8\nbZIJs4VxRvdc9C91XZy/2lSH7L0UuTPM9zXpAn2RdxsMAoA5AXuELbFAXSkd\ntOw9rjycSLVY8J38GsgjARfg7W/eRPiIF2mpON/JygdTql8P8irxRRKxzpP2\nLb2OpoXdljwmEnsu5Pf5sSG1+0EpLnbhHjhHie6C7zgvdwZuTyK2ocBCX5e1\nBE6TqtaEZu0I1S27pz9YimHyc+o3YdwYXKxHHTRs45I9f5ZMtWYlpGiCL76u\nSVmTY9bXqKGb50KFRbRSxC1TiKTxdvEF8idQ64FQvAdQ7gMaD3nPFKwIgeTG\nRkEtQq2sIXLVQ1OglupbvlM2bDZmiU5wJTXQhkg8/yY/AiDR5eZaP2nL2gQ+\na6S+\r\n=be77\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"74bc77323100398015e7b36d98118cb0bfe7ca9e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.96"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.16-renovate-non-major-74bc77323100398015e7b36d98118cb0bfe7ca9e_1614057490895_0.11496453463740619","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.16":{"name":"@balena/jellyfish-sync","version":"5.0.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c73a667cb0e0ac95d8a91c2d93489cbc864c00e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.16.tgz","fileCount":24,"integrity":"sha512-Eh2samJfwgB/ECVQWTX8sImrleqHn7SBqtLhjHUrRndxxi5vvH57y2j7S+sKeavfyC4IJ6W+aTlLYTrpamBTaQ==","signatures":[{"sig":"MEQCIFx7+XzmXuSb1BvkwbgMrCnuDeuqASrjS5OfC5f7SMh7AiAe/eSR0PwqJyUSGAUXpnf2dEhe92+uo0veix/eT8G5CQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":136775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNJDTCRA9TVsSAnZWagAApOUQAJoHlqHa9Rei/llXaiPz\nLKdEFlD+npZ/2YujJ1iYvjyFg6hB/ncNqEfRrklFuSqS85G0DqFj0c93KwkZ\nQtiF2QI6hF3HAFBSOiM1oVO4nJZRTeKb4yh5WzNDr8jsosJjgsQbHOl4tplm\n5oAfaBy3yRll8ItGsymrK5CBSpm84KgRdGNLnmHyy3WuJwQpkvvBy8v8AN6b\nZq7+sotn/ShNDNc0jtSIOFIa8z4/T6qJqmD0e1AijcPWjzTo5HuOdTdbHB2+\n7pgtiOUK/G76QFuaCLH3k0lP8gGTkgznWkvzPyY171wAhTzTpSUsHTgBgvND\n77OKA0mxmx7FtmFn6hzgNMO052RyEXhLKRmtsnjXLMhNH4rRahBKIyBcvd+B\nleZUblZhNhjOquOgJE3bbPPIZGGaMEBoRkQ+bSao9/ROHk95LZGpcCEKMLHG\nqDoWFkhn3osq0a0JERlshMzJJDmbpLsrdK0uqr6qKoE8ftjkBVsNoJwbFILA\nJFPRp55iorJGorSRbeK3SMoa7EXjI4pEJo4TaN3QVqOPdhba+ozDce1DFHE8\nfZz0quKz4Xm8ZOK1q+PCmvr7oGQTxAVvpN3PYzD0wk6EIyQRblyHooOFYIpz\n3Ma/UFM96ODpdjxKA1l4nBxMfw0MC5xZT4p2CgeNShdOhRQk0BKpwM4Tep6R\nPcYA\r\n=8s4e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ed0a469c2cf19e55e8ac46f23a5c52ff3a5e031b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.96"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.1.1","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.16_1614057682999_0.12742337940453607","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.17-renovate-non-major-07227dc57142bf9507cbf1087cd2700f9c0e3aa3":{"name":"@balena/jellyfish-sync","version":"5.0.17-renovate-non-major-07227dc57142bf9507cbf1087cd2700f9c0e3aa3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.17-renovate-non-major-07227dc57142bf9507cbf1087cd2700f9c0e3aa3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7f9106f9060981b0ffc8456481e1c50abd7dcce9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.17-renovate-non-major-07227dc57142bf9507cbf1087cd2700f9c0e3aa3.tgz","fileCount":24,"integrity":"sha512-tewWlYdWeXWhQbtrfrcEX/GZXxnK5FL2vEsog0R/D/XX4TmxhQAdNwC7vlQVFhruKh+1mauH58Ad15EbkoIFrA==","signatures":[{"sig":"MEQCIBcoJM72xi/N0MaNFeF02wn5I2NKPv+JPastVuBA5macAiADnla81Ke2R5SAu0+/asKOJyG63fl7V4x9u0EGlAURng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNenCRA9TVsSAnZWagAABVsP/j5kAQxRb9Sg4vkiMhFS\noqPwC+MyS5aaC5WpI3RfwxRqgMMDoKSZ7NRaXuQZm+5r5suIpLHA5DQTuFR8\nBeda4KCog5scFv0xYEpEKbv78R551ALC/l54Ias+DZDclE3s6WVXRlhX3dGW\nBOWp+9tB/CmZq/dqrN/jnUlQtsQKBXf7G3rEyIfDRefEmfL0oKWKRABnz0C8\nF966ssQ295Jyk3fWLWncQ/4FWKlh00TZZrXoUDEOto3V/mkMH9w8pFuXMxij\nqSjYb8WvX7ACc7FNYciRZvTBQndXu48oJWUP5VtcO7MwYrgfuRe40o7VChD2\nfzdqfOEPETXUl5q/zerb30Et/BZZjqPo5u3J3/UTyFsb72bVj2aCSQOvS8FP\ndVa69WM1MWI1PIHy7orRKCBilP1ZpFwTS3HG3hQ4RLzXqSEgxi2+LTgkfbO6\nrMAUxAgGcSfzvjIBx3XtwiDN0rFrcWKNNxfWsHmzDdEXRo+cs/ZReYVL0QvY\nubqtxmPoHblIpsPHSnVV4k9vD8S80DK5Z2iHLDh5NIctcR+8wzw04fraydlZ\nYfLd/SrT8oBoJIDbU2G8xC/RwFXKuEUCM2btkxQpiIWv4OxqQhy8GnoRTrH4\n5AcKu03rT4XlzeYs4yqkYp+ZoVPc5MJdety3qqT2h2YAF+lEiyeEt+Ua8pGA\nTHH7\r\n=ZqlE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"07227dc57142bf9507cbf1087cd2700f9c0e3aa3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.96"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.17-renovate-non-major-07227dc57142bf9507cbf1087cd2700f9c0e3aa3_1614075814912_0.5656713853837458","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.17":{"name":"@balena/jellyfish-sync","version":"5.0.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ac2ac06ac551d7b2b0b05925059f7430476823ac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.17.tgz","fileCount":24,"integrity":"sha512-oFDM0xaQkPLLfilQIVYog9/sB4UDxtKQ5w+68hsjyBNIaGiXnnkQehbt0Q6B+IAsrHAVr+bHSV1PLMEt3hZsHA==","signatures":[{"sig":"MEUCIQConL8ZEyp+0fF7cus1D+3YdhCmsZc6DdHHGp+wgkP/TQIgF8VbuNxY5CxiJLrsXonazFZ0JnWWSoQCIbZtwcEO7Zc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNiYCRA9TVsSAnZWagAAbxgP/0gzHCSrDcXZH5bNMoFv\nFfsLdYrUVQQJFbltsMHzFJ4nkj04ACMq3EROGbQFQxc6CRu0qdbQzimx2eWy\nTq57Fft8OxtZws+R1bcP8aOVsSaMazupD33qbheLO5kWO13LpcVJnjG+ox0D\n02f7ZLrzSHiuyi6+NuzX9Eqaaku5eFVU7dOBV8d8YIOKNGV5jguf3IfSCcFe\nLz+99KO/PGeel+CPmjCzVoKN+eMeVbAfJvfv7t+NnysRvybmmGRRDGr9LIrB\nH19eBrMlieY4NO5VQ9D2GexHipetqAm1jM9eBqUTDJsC7JHAAcyw/lIDLfOs\nRFhAQt5BselnY3NSZ24+yHrkXLdAmeDYc+cRF6YkfdhOtM/3jjgajQZf+J1V\nlbwGvw7BMyw8T46S52jR1Pa4gJJ3GR0oNNGvteTkUJVKgJhzSvNHdZS/FqcC\n7Q0YGr749c8F4Lvd0coqo5szAUnjDeD/+882X+MgVcBJYNRqxTW9bHcnts6s\ndAte5xtpJp/gVhBcH61TZD4NDklQ54Ky912cBQLjpm+XY5XwSXAIsAswkJ4m\ntA+Rt2XUdbcDTafdagPo/cuSEaEJkt0ekkar11tL9BxnXmTlRobrc/GUkIkr\nbAuUnrPPGAd915YuuSfJs0QN7pK+iYEVse89BD58MVhc4kKJWYEWk/wmwVf3\n6V2j\r\n=FtmW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"608e28f595c0c9083135e058b30da7fefdc46321","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.96"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.17_1614076056319_0.26835532047272115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.18-renovate-non-major-81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f":{"name":"@balena/jellyfish-sync","version":"5.0.18-renovate-non-major-81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.18-renovate-non-major-81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6a824c84a44797dc5b7486c78ec6a6fb6c51ac89","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.18-renovate-non-major-81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f.tgz","fileCount":24,"integrity":"sha512-BbA7OqkuUZipMTwe7092F6k3F75vkLgNl6pIaBj49jfMJxcWV0xIrAPlagxlt6j2Q+u4zfF9JWhKAt2ty9crXg==","signatures":[{"sig":"MEUCIQCTyWKDK9xlDsRfl46dTtzSAN8y6J8NPketciXKQB3ZogIgW/bfhpQ0SyFy37KkNID5sov2VTtQmT2NADxGv2g6meU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNm5CRA9TVsSAnZWagAADEwQAKSaynWqxQjEObA1Iulb\niiZ/cxRNily2ruSAoWkaW/QgPZUMyL1X58Gxq9X7LKyuYx7n+U0QqYMjCKhl\n/Bcd7Ai7nJw1dzmCMgGP77tode5TFiNrvo0I9ZpmgcIUqRZq1JNSO8dFOxgg\nLN19YC7q+OddQ/CpILIvtHaRpon8y2mf6QHBxDZQvs/cTY6BN5+tmqotcWfv\nwI8uv45bOimW/2BnzAeJv3B3RpD6Po6RER402RsgbcpcoI6vVYxQRFsE+gVC\nmPVxcuOcPDrosRY4ArRjjcvN0lP9gJzdNpyGKplvUB9KgGhxTyPNy+mCkhJ6\nLwcld4UqAiSqgbAKUwwrirIPnqZKXAQ8AdwWPw7Dw1wDiwuEhFxndX9zm/VG\nQf53oVT47qoITkod+cqY5IgJsuAdPiJg1qfAtK0nEtT0L1RoI/sYQKJJnz82\nTByhoEF3wXKHY/LIJQDdU6tVdSospFVPod7V+X1/JZPM1Zp2qll1bro+1Zta\nHIrZJtSkgoSU3rzdmqM8uVfv1Sfze7mjoX1ryr/C9+J07jF3YxrGXApMnkbJ\nCpwmXn111wfVzrrnbXs8sBSBfiYeiTev1akcPAtcFY22E581wAqgvGCEIW0h\nN/Q0FbXwHFpWR91/2IMkCyUKLMwf26rFGEPWJMqEJuV44bDqFRZvmZyXCMrr\nKwse\r\n=bJB0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.97"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.18-renovate-non-major-81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f_1614076344936_0.176737581350904","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.18":{"name":"@balena/jellyfish-sync","version":"5.0.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a45b33d4e0a65a5d3d8e4192a882bd0d893e053e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.18.tgz","fileCount":24,"integrity":"sha512-Ue6j4Hpexk9VUS82OFgKLZM4/xSw0wGSheo4RtAtqjkNg40WRU0bxl6IfJv1FULGx5yyKUSqM0DzfOvL6wXl9w==","signatures":[{"sig":"MEUCIQC+MEvo+09yOUcd9MbSg19HbBY4zRO8Kqc6SqZlUyRWKAIgYAsd+oLxu8mE9+QE93NJJHk342vquDm7fJuDgvZax0w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNNqECRA9TVsSAnZWagAAGa0P/1pbyeKFtyfGD6AvECeS\nHAxoBUiM3Ex0TZUAbimGJsDernj7TAAkXs8JY9Ycw6X7FBtxV86QQ6+mu+BP\nRsmbTekJlQ/YHoOZrLHMMQ5Ezns9qRQ5xFBHJAWwX386QqnRX4WsCxHtCn8d\n4EPLGm57zLHeZA2npp8mnkZtGJUG1erMmBpT1KaSey7M1BpIW1I5jbNGC7/7\n05XAba0W+0A1km/5MLBnJaxf7Npe7265ZRxrrs61+uo0wpDeqyam+1uymi+t\nrlR4jQqTpzhl7H69fE9IVOOOz3jAIoqQwH8/cyJMqjVa3A+c2xLouGmECTDs\n/0rOyTFfgCsiDGOKMORNdZgxsT8kIwqEu+TVywH7F4Bx3EUS/0PqMI/Agjrm\nTA0u/RXjxNQDavu+8YnSDbFY4eBs2GuVrf256n14yw/jnj1dxJ6w2OvSLjsG\namYDQXrpinHHNmKXHsDlMJBszlPeK8QtJN0siggJ6o4t8b6IEdvSmE5CsjAF\ny4+pMCi1mANiPhf0vvicDlMPcC08d38EQuep6e/yU7oZSWLZH5RZsXqnEeK2\nmGOI1ayYVTW6nzn13cDbVOVUJv2qpZ81juqcyBQpR7pIv9wU+tRxprzmTbfm\n4vSeDk4KLDLTPWm4PoTfb+pCl+IDTnfqay1sRUfe6OFrcHyceVejGDD17RnY\nsLQu\r\n=FZop\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cd94b4d8fd72d9d04dfb8f00e9836c337e462e05","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.31","@balena/jellyfish-metrics":"^0.1.97"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.18_1614076547746_0.5788386833168251","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.19-renovate-non-major-0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6":{"name":"@balena/jellyfish-sync","version":"5.0.19-renovate-non-major-0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.19-renovate-non-major-0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5affd140a7c236defb1f1d594562453306ad7f49","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.19-renovate-non-major-0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6.tgz","fileCount":24,"integrity":"sha512-wNJe9Tvei2i1gHE2ekbv1ELrOgxn+k1B381kaXclZ/ahqzJ7CjvgnrdYRPHkP41Mk8pJPJ9L1+JWkz06iZaRQQ==","signatures":[{"sig":"MEYCIQCmvF7e0/fdWPyLeswAVyd7AYkb0pKU2xDOOfMUxqM0YgIhAIfuTDjdc8hWjyHk08nz6cf459O4zhX0NJMe8YFZQwJ4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNPajCRA9TVsSAnZWagAAsc8P/3UHADsNfoA56eudIXgZ\nS7Bi21kstURodn0SI2vbIvAXc58gft/R2AJ2ngz1oPwkOYbprHsNZJv8q14h\n2qR6Ld2/DGyO9mzki6IF2nOPqxVqR7eHtvH41BCD4bkgQIU2qpVSGRZc3mM5\nMTS5EPpvW8kuSlrf4ujoz9tb36QFfF/3XGxmhcbC7XA1AhwsoL4NTZyXmWPK\nPXQH7ihuXlax0OzBgcFFy0UpATDujlEDRTvj1uFr4OMaoNhApInXsT28i4EH\n4VcxgEgRABrxvRtDhJDCDzEud+O79Dbi/NCRr5LGN6kriEqa7pVr9iqFRJEh\nmKgGKXORRiQnDVQ9lInhEjCYbk1GTDtIFulfL82trp//UCfyBwTe4WqGYMkU\npGLq1L7tW0HscTarK33OsMPldv3DEdcIZ7EDVhe4VsOU1teslO6Yh+KKG32b\npJtHfDof7bmxvqkE7NpbZmoMXQ29gInoiLfrA8MYS4dh7Yesd4msUgNm/yzb\npGEUNTDJJSaXgA9lYcIQIl4nGoBDbA5yFrV/E9sGyaDcJGHYCFWhZ5AKCmfA\npzvYoVztAwjmtw4bz1F+Epvr1vAwj3UmbG1LmJbH+cWr1RnvCwmH4gwQybXy\nLAjHkAJdJqmEY9m8RG3e9M4fQJrdBB/IUJh6vPe4XhDEkTIAh7KRoEG4RsXZ\n6Qld\r\n=Ffvc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.32","@balena/jellyfish-metrics":"^0.1.98"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.19-renovate-non-major-0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6_1614083747053_0.06808547366735596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.19":{"name":"@balena/jellyfish-sync","version":"5.0.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"30204ce5ee501d6e07307c855c93d973be5bdb78","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.19.tgz","fileCount":24,"integrity":"sha512-ke6thASrYr+adQ5z3crgS99mGtHmocNbYU/MsoCFsStkpxd636sB4wgy9p7xWXX0uXGoVtBHncBaWZgmxuwHww==","signatures":[{"sig":"MEUCIHlpIYZMTBSNZLJ1X7fOYv+ojXCrUtcMw/KtwFmGCb3JAiEAmlkfG3CFLaZJa2Stf+5Ze25N5juHrY/DjpC2Iz47Bho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNPd0CRA9TVsSAnZWagAAkuEP/j/JLFDJNSf4roLzljRL\nk6uMzVAf8RwrdyiMcOm9ulwbWkm2mp9KrxB77ktnOX+GM361tO0qT1HjlE2+\nHt81Dr9w4QfKzqxRSpqJXgzexaAq5AXSK6edOmn2pg+rOrfbkg5l9GndG8sM\nPfXMFlJvv5RaFYX39OWeKb9HGZgGs+OquHCll+ayMGznPdmEk6q9NjO8LTb1\n+BvFBb/sZyX6DVxrIfcH3PWF1LWpuUN3zA0dcBCckrT9DbnZ24qZSqWWxx51\nXo7gNRfE/+7G15ZBrUcb0DP1mqpWMG5mrACPywSmsLxflJTd85NqSo8kQOBy\nkuCoNHxKERaX9PDsVZNBHObxuPnLv+7l5CHddeYrqF1mUOOQxNKLRDkW/NNL\noatLB5vbyE5LZZJSV6M9A5fu/0P7zhnczqjDKVo/6qtq6ivnmz3a5wEcSeNQ\nhuffo2aa7HSRqAxfRgW6Loi/H1Mlc7oPvURv7xqBxsFbIDKWi/uYlUQzhqZU\nndpSudGTbbyAgVHnJiXBr++8prKq3hER/sV73tFva97Y3T6YLuGBfWrBiTF7\n64IT5FnOO3A0PLPBtfcv9xTZJuiEzL1ZQTd3bpWBSr3E/z8KoY3/30KGUCDz\nraGgRqa0bpgkQN6JqwJgAI4OugdjU6+fCnFiILTcwNe9iqO6XJE8inAJKluF\nQ2vZ\r\n=ON3D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4102ea10eaabaf65fa9350b8bfd11b2041a88135","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.32","@balena/jellyfish-metrics":"^0.1.98"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.19_1614083956281_0.888678479080474","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.20-renovate-non-major-049ee28082485afe93cec5a6f85ac9470df07c4b":{"name":"@balena/jellyfish-sync","version":"5.0.20-renovate-non-major-049ee28082485afe93cec5a6f85ac9470df07c4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.20-renovate-non-major-049ee28082485afe93cec5a6f85ac9470df07c4b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"45e0e14abeb1aa8794833a1212f289b99b295c67","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.20-renovate-non-major-049ee28082485afe93cec5a6f85ac9470df07c4b.tgz","fileCount":24,"integrity":"sha512-hFjFPuvbzc/iZnKjOa1GR+nyIrWZquvIgu5ZsZK9THj9ITDAinjDjn2w7M2yffD6DN4MgpV2KylSwARmP04Pzg==","signatures":[{"sig":"MEUCIBQRvXQBsrDGaU0oM3vUOtyMqb4x/9qxu6p0q0E9Zk0HAiEAurtQJ1xFdFHRPiTGXeHVLu77znEqUbbdlVH05rklHnw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNRKhCRA9TVsSAnZWagAAn7gP/0WEMrWTwvYtL9QjFXDe\npMSlp3IAOqdLCoK+KTxh5ponj+h9EeW6oBftNxSTBrzpUjqbFvrazAo/fmeX\nCJZDJSsmLFQ6UiDMVs7nXFWk3Qzimq3MbNgz/BJrTGHGkVWvIJDJrdFXDaSL\nj3J+ugVUlVRtRm2UJ/z0aou5qkE6AI/Qy4pzp1a9E+X4mGEKDBhRIadyh6GO\nDqBMRD/2iVwVARw29IqDRCfxykQVEg35QVsqGoqjjwbWlrmHYjx6KOEZ7OMl\nse70vbP0ytSK8JPwFo0r1NwKoeoavmn1nNrNfrU+hf6dBnrUIdc3eF4vWErv\n6VFsUgDWYUyPai5RkDH3Cb9uAxXrUwT8o53fOYPuCsDRYh+eJa4SdMgJHwO/\nbvuMMBD42sLUwQKvL3Md2mJB7hyyHJZyzBWXam2OPmgGw9R7SkyrjC5u7AwK\nc5nxVoHkpk8WlvT3JiNgJ/7sc6BcdQ5guKurYiJso9GHqhCAiInylGF2qAQ7\nijMVg4Vtrn00UxJyCNFxtrg47fGBs9B7JSncLVA6OHWqzoyt/jtobyLHaMjl\nlIJ0Y7d/5PDuTqX5zSGEzEcEhYBN2xSCPYYwbjMiWWXHOmJD80ge7qfveQQ6\nXxaRmrjDHs7eEiyOVVv0Z35Us9fcyGjagEgAdBHOrhF0OBCBVnv6KfzIbZzR\n82yV\r\n=Xw5c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"049ee28082485afe93cec5a6f85ac9470df07c4b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.98"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.20-renovate-non-major-049ee28082485afe93cec5a6f85ac9470df07c4b_1614090913127_0.25874595183126714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.20":{"name":"@balena/jellyfish-sync","version":"5.0.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"900c1f08c69780b00f027cbdc7901e1a9507ffdb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.20.tgz","fileCount":24,"integrity":"sha512-Zvd7Gz1AjJ0hiMP6PkLJ8GL7SdG5IOr0WkM8Mql6H100opXneVTBmGPVxs/BRAIoR0imibgTZz7oiphv3WUzMg==","signatures":[{"sig":"MEQCIGLJszBAqRir1GtvvaFz6Oe2HCrXvN+JXDhn/fik92IgAiB/zjokYz3jmxkgI4bdtacaf7KHRYzQ3ln9bn99p8nuOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNRNXCRA9TVsSAnZWagAA9bgP/A+zwnd2Xx1Vxy0V378y\n2Ytj36h1IQOX3F7++tipGXLItZsXBDJTwQfWHvacyCcANGTgdkhVY9JZckEj\nZxo5VZgg9TwuayPnnEjLifOt6o82W6jnGyte9RQoP5Zkqm1CMyNY98xH6Q1L\nKsXa0YsKpY6KEv1AQgfZ38JgmoumaO07+PgAJXbSxcGE7tGXZobS4msD5PM0\nx+WG6Ievw1Q4E9Rk+v1INMzDdFEe9v0Sa+KZRKHqjwxdZ5yflkqaVqqgM9sn\nEvalyD/Dt+JVz3V5L1vn8/H245RzMliEXOIEenSZAAuK2FwysoSmSIKjq+Mr\niP+FoxFPLEIRKwbzvNRKqxf4LcLb23qkiBOonB4tDT9DLXVABbgxa5F7GdiC\n4B+rrYHPZadcTTXtXarsVNKGRpspOqigUkkH22nLwezCGU2f6LWS7WUtIy6e\nqdXo1z6Qf59g1OR3dm9JE8A24XigNK1SWISbCeS6oC0pbn1ZeKyEy7NZ8Brf\n6XZAHJredahegJpnKcLK9nSDsMMJ3UAOLib8Csp7kLU729r1YzyDMCuzjBvF\n9/Bnx7ne8WKaYafco2YQG31mK85zCJR10AL7spath0W8cOeSG4SWNuuY13s8\nyDqItjPJ0wWQLjNf5LV1o5coG3BKrG9uom7+Ag3TJuTERppFes4cAAxELE08\ny1X6\r\n=IJfR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cd91b115d8a1ef2708d89a2899a09bcc1c09d917","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.98"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.20_1614091094692_0.7037127141089414","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.21-renovate-non-major-ceb5209975c1fc88626af5f2019f2d2746f8d4d5":{"name":"@balena/jellyfish-sync","version":"5.0.21-renovate-non-major-ceb5209975c1fc88626af5f2019f2d2746f8d4d5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.21-renovate-non-major-ceb5209975c1fc88626af5f2019f2d2746f8d4d5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"573af6029e2f79f6f649a33e09f0c34a889618de","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.21-renovate-non-major-ceb5209975c1fc88626af5f2019f2d2746f8d4d5.tgz","fileCount":24,"integrity":"sha512-FFLUDD6huY+5cZkF7W3nQS0RJVhAKFIM4G3n5cksj2IT+lS+64TTYgfBRV4KNOjFxPdjKaVSGvXGq1b4sz9fPQ==","signatures":[{"sig":"MEQCIAQLuAL0+nnkvCzAHGYAXqjZ6G4dX9iDvNiC8xfGtpT9AiAXRS+hX583DitYzlKL4X6v4jZuOFHaMVVrmaRMxrFpTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNTXYCRA9TVsSAnZWagAA5ngP/3FxhTD3DjdqWoWlFOvF\nfZzqRUe5hYGzc2WzUxY8KEICrbnmxGGXcbrudsDYi33MjtSgH9l/CHsRWeAi\nhGUe4XIvYdW6W4/3zu1MT+e+6Ozf9pwnpVKwgVZRkEB68De1BSYu1SuvX2Xo\nZQjZQmwkh7yD40FXNM2ffb4b7waXZ3/xV0jueo0pUC06EZ3ZpFcpNwKnGzYi\nxXSFFmGfy78+V1X3aU86FJF5gjKm3hR1vAl4Ztz6O8fxyNwjqICcBagCtE8a\nSvyz1dlLb8wbG2zInFgLqGv/mr0xuy2VZisuRTwOfotYBBIQJUJpFkWha2Ee\n9HecJ630XM2p+6yMm+/0rmj3qVGGFHCtSLYkZHlhuelavvsU70RKjAFdlh3a\nDW9sBezxjAdVBmT7ood+h486MJiVBaSb/P8T7rezNc1qcu6mlVTJ2p8pYaiE\nAPruCxSHq36xwraw3hZfHQtx5EzYKiX+30pTTPZ4/NFhV8Id4iZLqXDlt6bW\nhd99RIotU254z96pHWMijTMnnwaR4L0roqs2XhuUS9K36G0jOgkluVZ4OS94\n1xAF3YYZEB8Bl+SMXIf0TOKQBzYmV2DuELRZGKisjmUIjNNQ3XDbpILwD0pu\njZmcg4XMTNv/sUNtoYIeibp2r4TvrzIrOjqOEY8cSRwaf4P/y7vvZifsyShr\nYZDS\r\n=QcEC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ceb5209975c1fc88626af5f2019f2d2746f8d4d5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.21-renovate-non-major-ceb5209975c1fc88626af5f2019f2d2746f8d4d5_1614099927606_0.13541780582162777","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.21":{"name":"@balena/jellyfish-sync","version":"5.0.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c68527d7f498445d9dca2dab2e6a6225c430f5d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.21.tgz","fileCount":24,"integrity":"sha512-BeNTriElHrMLLCp37JxqbeGCH6YMBxkEkAHF2Gzb2Rx37/pHJXx4y9eh1MvvXrg68GyZcPOSn/CgaiEn2D3GAQ==","signatures":[{"sig":"MEUCIQDV8BVobwo+AutbvikczmGEKzlPdbN+5NCU2g4pxHYn6gIgQybCsr3OsC88E0pCCEwRKNymV5zW7wGUiQWuQMHDNBY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":138810,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNTaGCRA9TVsSAnZWagAAbD0P/j5vSF2vR5jF0aansETw\n1p4KP8ISJZKd1dUmM2X2pLaEG1p+2gTNRbCUeG/s5H1VJ9+eEGmdqh6X4V75\n0rsgDQzgIZNez7MtS66aPuDnnLSQ5AJP7/afdwIbKjRoVjpMP4EUxyDj/Vc4\nTxfsCQuz85AtNFUiCZ8PYmh5tEfoRTVbMqZoQ4M8Eysr5V5kyVb2AimUGlaK\ncu/Hr+HXuIFmFxbnoh3hw6cOnwBqYVLdk7rlyg8vBnNqpc46YpdCKVSdGOWU\nUGR4xxZ6FwGEEbsGJ2xyI4xMHAHASpcwWEdyS+f6SmNOiE48g0HLP+gnxd8O\nRq0YXXDt5v3ZhbxdI9ttzRbTdYIHQ/aZwY75m1WgM7zrxv+jhF00IM0DSvyt\nativuRqdZq9pX5JUGaR2ZT6lH9lmX1mVM+k6XG+IRfbZFY29DgZbxoBCCaNC\ncdog2WG30uM5qPNCV4aBIHKFJYZ5rlp8EByxFrzcpn3BX7bZUFbwlw6LpSQO\nk2TViWw1/+4VE9DTmxGS2gGknTop/Is5vQkMWumrkS7tG7fHGzv/UtEa7Tp+\n8HErX+KcN3z2U9zjOKDObokAq+EaYUql7E43TfrQChC6HZyJ/BgYJwPY8nof\npbRm7zZSDShclI/QzTfdGS6YnY3CmB5PEE0NI+LBJVKJZTPisGffSAEHyVrr\n/3bS\r\n=oPzR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f9f9d22c296746d42596e237c23c64bf5ecc64d7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.7","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.21_1614100102368_0.06590040654400142","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.22-renovate-non-major-851ace2c20e9b36c07ad3782525b3445c0968d9a":{"name":"@balena/jellyfish-sync","version":"5.0.22-renovate-non-major-851ace2c20e9b36c07ad3782525b3445c0968d9a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.22-renovate-non-major-851ace2c20e9b36c07ad3782525b3445c0968d9a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f3eaa9a2985dbb930bfbc5bd065974db78d100b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.22-renovate-non-major-851ace2c20e9b36c07ad3782525b3445c0968d9a.tgz","fileCount":24,"integrity":"sha512-QPAa/jb8vLQB8kiBXbvy+6fNU+HvtjTV4uj3yWHQBnvrpIGV+QBuWqAIw5AVssMaOQtsh2FWN6/v39WYl5krBQ==","signatures":[{"sig":"MEYCIQCPcdiGhHtJJ4+LLOImZdHvd159bRu57JW+BAvPK/s/CwIhAOEB84OW13pvBPgEzOqznV8cCwtZfZH5c4Vv7HYwndHo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":139253,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNwuXCRA9TVsSAnZWagAAKWsQAI+M9yEI2ESZj3sq6NDU\nbAdEpnno/P05qHVtB4ezMuxGAL79wDQR0oL6aXsalZXUHpSEUfoI9+1XPVGT\nVrpjiF21T/ddIwik5BRpQSceC+NveRl5RkA9FFbpRVJJ0QGKeFM98OwKqIdo\nCWj8OB7plBRVwqxfj3apjgiJ/MrBNTpVhtn86ZKhqNUqyjUMbdmCszzU0y4P\nSn+Ewwi62SOII8afoJbceYnhaLNHh2pARu39aj4YyX6wOPZZMZX3TrN+vtV9\n/hpadjPdeSxYHh5eB5VhIoJVvPn0bT2/eP7NKWkhgWgpBB66ztHRBP2IUiVB\n8EcrFxKQwSArMokfBzZJG62JPEUszcFJXg4kI9BERJfdM1g3hA6xK9i1AQ4N\n9KjBpueUQidDfwt1uhorB1H9c/33TrMFlHnTGWIjwkX5ecL50a7rPYdvNCaF\n1i91Eu5zqWeNHXFSiLFE396GlS6sLJUJ1Useq+jhpPhyEdj0igBqmeNASqwk\nSGmdiYlpruRKDA0SEXQQNMEY4hntKY0Ha5O/VnKxUtrL7kTf8PcQDzjXZrom\nY88Ls3Zcf4y+W/0aEZ6b5sP5m3gweeS+fNaA1H/ykfD0YIMSN8giarD+ktmH\n7JmfcS9hcNTCLy9APr39joqPH8dqI4SEsD20NSMbjMST3t2QYumspK96dWAI\nRJj1\r\n=YWi5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"851ace2c20e9b36c07ad3782525b3445c0968d9a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.22-renovate-non-major-851ace2c20e9b36c07ad3782525b3445c0968d9a_1614220182264_0.6906596819542477","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.22":{"name":"@balena/jellyfish-sync","version":"5.0.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5a2ce58c9665b0125c7f09253ab4a18a7d290aa9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.22.tgz","fileCount":24,"integrity":"sha512-WYo8a1Toe1Svs4MWRVpg2XjSY58rz1+6g9kcT16zPF9KLCOApi+83SVg2kKvsRUry3MRNcGzm7LpeFLb7iREUg==","signatures":[{"sig":"MEYCIQC2mRXw8JcqYkFeqZ+0hgviCI98oBQh0CM/KFhEmOMocQIhAKY+8AWOTHIzbSHkSNxuLE+9/NtQuQDqvGybeRfEv0vd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":139193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNwxBCRA9TVsSAnZWagAAI6UP/1k6SM1wkauq+TAhk23+\neAVjSwIyqzAGKjsDJ51VOyxZOqGk9cF9mAOTkbJx+s2stLXHK23Lm0c2HqGs\nTry0tQYxM3wEh61BCDJoLDdTZSbwMeLLnmOXe5Xr4IFbVAfnqP9coysZppIk\ny0WigdLhesU1b9cT/g2JCna4q2KgwalFP8v3OsRaYlX7OUZTNL+hHmLvz7li\naWz8vnJoEERbWXO9rIL/pOxHB88S+b5Rv5hDVu7FfRFC9Kk5y1uxv0i0W19j\n50ncCb/pc6pGdc7cw9uUFPrvzcRSFLjT35Gwx6ih5Hb+slJISkH0fZCc+NN1\nAxwktMU2Z/0EcXsJZulBkkvTwyYAL5S/23dqQ4Dwr6vWta1McbrBaHn8V1PS\nyjxblz61LaJB8ZZwRbVSC6yL6+/78HSYSu2peRlL3am1Fo+WI0lwUHGClEvH\n7RPjgeUcMQN7DU4OoWEyUNMiCeLMPm3l8PytgsL4tf0kfl9y4m/Y/UF2p2uW\nhurfwpLmq0MmrCU008jMTvwvTJAuETJ56Lxnuza9vloc+yZkZ2qhToCQd4a7\nivgsC+ax/3dosq92ZxzCLIG0sJJHLJgzY/jNCNE91qtwL8x+6KzZzTAkvSud\nDOjaaFOpSi9XmszHTqdRdxZIQqvUa/IcqxzBnjln1LZxfLfTHciLBi1xffzm\nwqMB\r\n=GrFe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"06ce5cb023bea6a546b88663da31541f6c5beed8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.59","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.22_1614220352505_0.47962261792968497","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.23-renovate-non-major-933dd8fec8edc9386aa3c61741a17e83c7f5bf5a":{"name":"@balena/jellyfish-sync","version":"5.0.23-renovate-non-major-933dd8fec8edc9386aa3c61741a17e83c7f5bf5a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.23-renovate-non-major-933dd8fec8edc9386aa3c61741a17e83c7f5bf5a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a23ccfbe6b9f5b365c992e513b88815f675f1ffc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.23-renovate-non-major-933dd8fec8edc9386aa3c61741a17e83c7f5bf5a.tgz","fileCount":24,"integrity":"sha512-3I+p/PetiFAfRQpugsNjo9F9dERzBc88HVaWqy/WgNG5MBltu/irksXLq4gLUE+zbWinkbQD3bSTRJdAV49/FA==","signatures":[{"sig":"MEUCIFY35azYNbVaEaW0EJybWxlbzXYi3UnKSqALzF9RMsnXAiEAt0OBhW5H7PgR3H6z4+AN3sb6/1IGrZyKojRyM2ZCZ2A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":139676,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgONB6CRA9TVsSAnZWagAAw4IP/1pp5Nov4jytUbwIwprK\niqLp+zkXGwtYiW7SkUGc0LjzWIptTNfHKiMkWtq22R97BeiHLsCCS+QAwngj\nM1cVS8GDg9vgmjHpM1/cWOT4TvwanAu+mQ5OJ1YFEAKLmJRtm6vLhfg0LVt+\nW8YA01T6ZaPZ5ycdqWy094EHLYDJoRdazuHfA/YPjsJ5cawsVAwSbP77lE7B\nAAQ8yUVoV7/PU/1JpZK/b7gf0uODJNFMS+pOfxbc6C6gdygHJu5BV9LFSe1p\nKvB1BLPZcvNRfzR29+w+rqJRHCg+MyIASCHANUOKt+0Yv09KlBqHgGPJB3/v\noRNHMjTCoWIV8Wv1h0zKkFWHoSnvLaRuNoAWpiEwseRLWVH0HxbDqQ4ozJ4Y\nQh1Nb9c+ulcH5I+KHqgsPqWBMZA0YfnEOORl8Zmq4qPVccs293dvj6om5CQR\nTaywQDUyX3iCyjGESL6NJezMm2ptd2btT++i9UwuqOQbnFtfZkp1fKGpP9kF\nB0dS5+2P86s0JmkPGFqtMhcVpiR3ycyjHiBOd2KcVQuR0S7cYTGJb9iaQtlk\nkullOb4UMkzefq2AHgjRck9nEW5OXI0agqE7FF5JBZ3U+glXiSCNf+dGi6Nk\nWfKZ2BdrM/wIJU6zHxuToQ9Nr3qDlS8XhpmA+0FuGFBtFHtXOmpYTzbTmW1V\nntoO\r\n=YIwm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"933dd8fec8edc9386aa3c61741a17e83c7f5bf5a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.23-renovate-non-major-933dd8fec8edc9386aa3c61741a17e83c7f5bf5a_1614336122373_0.38588376637741684","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.23":{"name":"@balena/jellyfish-sync","version":"5.0.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ede9da1d918369f17b1f18d57199cf7709e7c3a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.23.tgz","fileCount":24,"integrity":"sha512-GMHwEMHcqP4m3Ze5/Kr1HKmhPzlFB1Nf35l4YAPo9OVI84iRR6WeFwlxET3WxzePXdFr0Z979a5bh86jdelOWA==","signatures":[{"sig":"MEUCIQC4w+xYJ1BUQCuekQR6qKe6Cy3xTJyaQ62u/N1knazn3AIgGA7LtmMgP0n9c+fK7LmsE+Yq5W1BgS/ebGYxutL+N7M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":139616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgONFJCRA9TVsSAnZWagAAm9MP/1cCAj2p4PtFOM38m4Ir\nvDpTyhZpyt0eewy3Vut0BdBuU1cXd+rGMuZsoLvSaY6B4V74lTHCdKqUwQ+Z\nLIkUEzCwuVrzo7DLNrt+FfWGmXu6Sq9fwWjKEeoIUzgBOEnWIhG5t7Hx5yZE\nbkrU3QBC/ViKehzYb1WUQh4jeiBN6yWis7IGnJsXsLQUkn/gIUkI/hFjc7VX\nLaPHxwojuWV1LTIXNVzQjuw7nv0f6+qhhsvRG2TYBdwf4YUfqnqqaidU/ftP\nLzpJQlnvcKv6OEPM4nUIloR553alvn+vz80x8M62JnjnISdg3+eS9XQOvh5a\nW8K5jckUPP+pMhJMO9oYE7CqRHSZJXWZaZzYkOz7cbzRh3UT7vpaIOltgheO\nbOspoeJpkvFrNyBsoY1bsILqK11QvOboB2YeUinxykRYc/CppHEf7Zr+uEad\n5h0YMthfxD3aAG80TBN6kXBDtzK6y1Na74VN4p7gL0TohQaAwa0Kvcg8fS/2\nwdRbatoTy6spzizOzMelaBsHHBF0MU4lbeU8waLoxnO200kSFp9swgtXD1uH\nlmCpUKG/y5O0exkoKMBu0W6PhqdsgAEyJSCz7idU4YHWv9a0h7ecAhOxHzDm\nZwCu+KWovwUuIGOY7KPEieRmIUWL2r1lS7c07v7JEx2wcK/o9Hjnn7n2HlSY\nRE9y\r\n=N+0Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ea3941c2058870fa21feaa876fbff53da98e2c63","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.33","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.23_1614336328557_0.0440659532803267","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.24-renovate-non-major-2812a1797af19522d75dd432dc226060aa9cc115":{"name":"@balena/jellyfish-sync","version":"5.0.24-renovate-non-major-2812a1797af19522d75dd432dc226060aa9cc115","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.24-renovate-non-major-2812a1797af19522d75dd432dc226060aa9cc115","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1370f6d58fae17c4da4cc5406d86c7dbeeb8831","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.24-renovate-non-major-2812a1797af19522d75dd432dc226060aa9cc115.tgz","fileCount":24,"integrity":"sha512-5PG9dA5+iFZpEjsUFYB9Hmrmi0e4z/ocx/WRd2iR/bC/xj2cXbIzYzWRMi6fPTyDjtUIEDzHnvK7yMFgwraAew==","signatures":[{"sig":"MEUCIQCyq0D50vh4rlSO0lC70LNK7SQt/uizuaoYkX84WIi41wIgIYzuTPil9mTBh9A9GxUjiG1bJiegW1ASaWGCpIQE+iw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOOfgCRA9TVsSAnZWagAApK0P+QACewa7ipplWmr1kaDb\nPj40mGiDSrOqsUUrKQnS8lGy8MsNe8BUbRyWT4b0B6L4St2argNJsJmcdnYq\nG38MZz6uCC1hNj+iqUpo5BM1WE1wDimHBlGD97oxF1hHekPDcRFrRwIpEyv+\nS7dhkEaHkXknLAueefaFv4f8kZbk0GA5VDczj5bM/KGADSg6eNfisZaTGL3+\nQDFDhxrheBN8qFAjoQuZJXW0Vv8mFnKLNC8jyK7eLlhN8L+DadJa/oietzBa\nI95hjcvzxkI/JIobX2Jh7b3tOPj1s0Q11xZOSIqXIBDP3tg+bTbA4VrhI+lu\nTsw5StITrwTu2yDi26OXgVH5PtYs3tNW6/ipdcixtjkw5NBSlgy5rhdYgEFa\nwgjXhGPL96w2RQ19J1PD+jVogTsxip5pkHmSo3kfjBwBuLDStjNyZx9psEWZ\n6rYC5ATg+pjE+VOibV2QCu261NllUx0w0IfXUOGpm67bUcNLtnJ8XOrnhTO5\nl7zRWN2ebuSW/8n6O7x2G+oMPkzzwfFOB2OF12EDmEOkiqBElY6DvbwJZQwn\n9hwIP0bqFOI9QqSkb3IlRM68e/wka+VUOJ1WgjlFJEK1fsDVn04CV6DPmwu/\nf6DVFk3jIBkaRdqU04kYlvcBSo9QYHvl7mQZdaA1ZsKhy3JX8LkfnVZysYJf\nVqRh\r\n=VpwJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2812a1797af19522d75dd432dc226060aa9cc115","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.24-renovate-non-major-2812a1797af19522d75dd432dc226060aa9cc115_1614342111509_0.9825237689767075","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.24":{"name":"@balena/jellyfish-sync","version":"5.0.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1656914a91edcdc0b66d7d3181ef61dbd912b50","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.24.tgz","fileCount":24,"integrity":"sha512-j0qOk+M7hvuDaAjgtZMc9YG7nBjNKGlJWZxgRF1Wddp5vi90XRr5mw8v1v/Rb4cUS4Dm+2x+8lQeMScjMUWKeQ==","signatures":[{"sig":"MEYCIQDQnzJK4beJPAhNqQhR2+hD8lJ5tQ/LQGRE7hoPf3ExWAIhAIvHSjvggI+vB9MvoW7pcwUUnDH6yFCnkp1guOsQhEKQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOOi4CRA9TVsSAnZWagAApTEP/0cNGjnv3bgvUNzFf1k6\n9ozN42ByV35xki7z8ncoyjgzacGafEJAEoI0TMQwAlAYB21K6A50EMdT/fyd\nifV5yP//mABQ2hkqntKnPQH6/mBWGeOOH1MnQOA8v0V6N5b4hpW0tOHniFPm\nilAOHkyIV3tFhyUEQRvH7ohQoX86VmjAUzZfDeRj4maEBmKf+kx9i41/LXtc\ndWF/nNmXWOHrNlE5mKapJtPT0k/qAvm4DgwuU041aUYaqU+5p1jtdbKDUTn3\nePvQNiZ0qxnvxcHhihuWw9O0LomxrKrTU4HOZYd/6w0jNOyBI386Q48RLzYt\nssb9s4fXXH8pfafYQgVXn+q1SIGZ/wCM7gOajdFYKipILypxWDR/30P1Uibh\ntCkF9azBaPtSCOiGLygmNQLVY6sKZ6pSJMXTcFThNb8BDkv8X5Hogpn/PH+i\nrn3og97tP58mOMr83g5QXoy0hZ+BCCpIIY7RocF9TL19Gx741c4923OmRJQ2\nRB+5nY+OnRd1oC3AIuaiI/+k/LaIAubxbwlhIEV74vaX+LhHGjak8SfFILbO\nCh+3x7cJLfAP9YYiPhdkmBjBxdfIMTpQRuXXLWhaeR6KZjC6ntclqLYOH1ZS\nAva6n84KnKlXDBrVoNOY/I8/xtLzV+OQKzrztfgTiXG53o99GXdDYl1QGxfF\nR7/r\r\n=aS5t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"de6783e2f84e06b7e1b8129166f54ff58b7971d2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.99"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.24_1614342327715_0.09083952068598733","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.25-renovate-non-major-5608e4e209335e9dbda2ee1fb2f5b09432c335ee":{"name":"@balena/jellyfish-sync","version":"5.0.25-renovate-non-major-5608e4e209335e9dbda2ee1fb2f5b09432c335ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.25-renovate-non-major-5608e4e209335e9dbda2ee1fb2f5b09432c335ee","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"592afb2900e8b0d1546c16276a52fd528ca9b6c7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.25-renovate-non-major-5608e4e209335e9dbda2ee1fb2f5b09432c335ee.tgz","fileCount":24,"integrity":"sha512-N4LBWyBrQ5bhnr8pMwc4NIG3s7Ht6kJH5kmAe23lhxkQ2DHhMm+fyW8jw1NaSeOG7xv98hEjJZFadVzpQxeXDQ==","signatures":[{"sig":"MEQCIDAznyzYV9Dl2eVDm21y1A4a7wGF2nqSrOJqoGLaSCM+AiAA/lA4x+5ATh/2vs8MowoPQg9oTHZVnRc1sc8AODoPzQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140527,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOQe1CRA9TVsSAnZWagAAnfQP/39BlWHa9WoILM8DxV6o\n4VYWjTy5MSCPfi4ChfkfYntSZT98gWIphLhvXfLurNGcpb20xP41kQ88OdtG\n0cvAoCjuzDZbaqL8flJWni3TkdD+HB3bNwTlgy6Nn17vw+X9vYkZrsFAP+rG\nrMRLgQxSFabu1usd/p3V7KrcxE69DS5JH6luCE6nSIA1MbddH/HG3HehfnGJ\n7Cg7NGSMqOOO0OvUH557+1WSrevwBSekUYidGx2nnHJQZA2d540W79d7eNth\nnFOCQkDt82BRnrITICfRNZu8FQ126nGNfWYNJ6PY6RkLtCZQT63pH2aJEuuf\nBW4j5rA8rNLttGGOanmAM/rxBZVKomADkYj8kiwY5GBuFtT2fJ/MbbDP4jZv\ntkV2aHs23w1vxI0hE5DZaZ19dSGrb4CEmKtEWb7YsUbcQP/AfSlHosGMUwXl\nyX+FU97sGcnWJ+KNzinewAMDAFedTtTfoTiW+po4JaMK2VQrC8mKKXScw9dI\nXl789CuiHF+uVu9jIDOYUE5CojGDtwYsFmvUzcP4tbZVSXsMt7siQBuhi3K2\nMQSwVzrjC8Aae/2dLKueQF3BVbGccI2LQb5qLmU8gDhxVgfIrdxFIfesKQal\nOCK6SGwaqmv8WpGH+g3GcCuOFNmi7Xv0mp1sh8SNR7/nhOZaDoQHAQj/IX1/\neFrc\r\n=6evY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5608e4e209335e9dbda2ee1fb2f5b09432c335ee","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.100"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.25-renovate-non-major-5608e4e209335e9dbda2ee1fb2f5b09432c335ee_1614350260943_0.6972067909848869","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.25":{"name":"@balena/jellyfish-sync","version":"5.0.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e488ed049a695cac533f5ea33d5b8c5a3a3f327","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.25.tgz","fileCount":24,"integrity":"sha512-cjnHXniaZs938bpcp5aBOnCNA2kduGh7mvDhyFAq5Q7Cj6L3faja3ETcD/2XOP44Hvpdz/pr9D79YNvmWWGbkg==","signatures":[{"sig":"MEYCIQDKDPyb+Y/zmK2/HmNtDxxPkhqWuMR9He4eU8A8ggySeAIhAOdiYznqO76GVaIYxWR5YrtniMo3W6gGl7pUN7JX0qxJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOQh2CRA9TVsSAnZWagAAbQkP+wTrARAbVhqmAQS6PAUB\nI91gLPZh7JIeVkXObJaLNSFLysL017Spx9nVnlAyerSm46CF7OOb9wg2A/9C\njpG4f14F9lCrHhnrCRu/lmIgNkKjCQEEMvrbIBjoVHZk96fxg5fLRgMUmfM8\nA+m1GZC7J4jGk2UXYH9m8JRVR6buscdhnGYbOlgWeNnKleK/w4HRgxqolH55\nrpxKdXLfCs6AIJTqD2xQTh01i0mcVX41hRKjXAtOn4xEJGpLfafvN49sk4l9\no1gx7e3xNET40o4g15oHMK0CsR9vGFdZbSmagbTvfUy9cQk0FG27s0gIUdAQ\npzMxaNbJlnXZ4FBptFc+ubY9z+tpZZsOLdiQ00rJcUEQ/s9+r0WUoQaRm+J7\nmQDTn2nJAvdHGDbQ5/NoBjX+4CwHP1B30WaGkjlgpomGs0q+TjQGafgNm8NJ\n75NOiUC32CImdMu/mluKsa5HW4v4JKQ08KTj6yodVQwzEjBQH9t2JoX3Exch\nWp6c8Sin3X/IghvAzjnJKzBn5+2ITOPyD676NtpB48PheSEzGGjqppsPqnRy\nR8MlJJslvJvNpuhggMrifdkRCT1kfIFgLnMJ2miN6a2+M3UxmxfzsNljeLNN\nPOiE0WhAntAM9R7uA4Hnuh5PQpvv1WEiaK0NKRYDymbQpfmWxdjxzL+MVHHh\n3QOE\r\n=YTkA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ba282bc894e4f05fd1cd77a3f2e76bdfe2a731f9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.100"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.25_1614350453807_0.3012302073325044","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.26-renovate-jsdoc-to-markdown-7-x-499cefbc628e084074eb003e12393c1dc3efe0f0":{"name":"@balena/jellyfish-sync","version":"5.0.26-renovate-jsdoc-to-markdown-7-x-499cefbc628e084074eb003e12393c1dc3efe0f0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.26-renovate-jsdoc-to-markdown-7-x-499cefbc628e084074eb003e12393c1dc3efe0f0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"818d3a7e9aa68e38fad1d636de3295886a586aac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.26-renovate-jsdoc-to-markdown-7-x-499cefbc628e084074eb003e12393c1dc3efe0f0.tgz","fileCount":24,"integrity":"sha512-WhfVfVvnzp8nXEwHHejiYWCDEzo7BRaDmQ8qyBqIB7dMOJbFqKMLuL3XmhC1llmpxfm4zKRkzc983RidE8W19Q==","signatures":[{"sig":"MEYCIQDY+VpdoJ+MHZICsiN9fAWmaPP6nx/IySXACt24RTvz8QIhAKv9IeAx9W/82L1vjzXeKKqm4DalMCOZinPbc62DT/MF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOYXXCRA9TVsSAnZWagAAaCMP/3oGXe7KenKLvrCStZHS\n1CVv9e7/f6lNH8KkKA+AtaV89F8H0MVR+Rb76Irph/cAk7bm66YOhPRXNq5v\nYGlGb/QIadoLbcthn20bjnSnEKS3GfAqT5oY+3PBA9bfHzB0xqd+s0KcyLdp\naPV19ak3+KnP7fb0qx4kwZRZJc58LNyPdY6m1arFG8xX7EjgxNG3TnaqSBZK\nJp2LRoLY1eEb7pJuQIxgDgC2gakKCd8UfWjSGxa5yMfx6owIvyqM0w4Ncm+y\n4/Jsjt6AXVBffvT0ihIxKzAjP+PW36B7b46s5zuPM1H/5/tcPOaAaySsVsXn\nwW5tqWFRUOe4igssCD4w/xHEanODevjIjbc/K9AWkfzO+ZMytuqZ8hzuUmc8\nTmt5GXU1rDVpuFqt+ld4HbZ4anQEBhgDoluWifKeOcAfcnB0DwFS8Z/rwcEZ\nJTP67rFwZgZXLpMY32mz/FGW288vmWKuMBGX3JjFN2IUeBL3E6tti7Z/O1Sl\nydAg+kovVsoZZE4fHcvvGv1Z+u1CTbbnapnKGMrYCQcL3eS1t6+lKkOdKylp\nd9jZ16qPjYt/K8tjW1zbaTxi8O77HSUG3jpzpRCVjrxH4NEl+vUVcGhaSDVE\naR5N2iHaGkrucJkgV79Nd32fzo19ZlzuICtoxDRXakOVaBer5JDTzdH6sr5C\nvVZK\r\n=zw87\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"499cefbc628e084074eb003e12393c1dc3efe0f0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.100"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.8","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.26-renovate-jsdoc-to-markdown-7-x-499cefbc628e084074eb003e12393c1dc3efe0f0_1614382550845_0.5889478554459411","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.26-renovate-non-major-86795eac4063b82f7993c3a81a6daff38bfa7f62":{"name":"@balena/jellyfish-sync","version":"5.0.26-renovate-non-major-86795eac4063b82f7993c3a81a6daff38bfa7f62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.26-renovate-non-major-86795eac4063b82f7993c3a81a6daff38bfa7f62","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"120955c63112c2bf63595e33dc4dea5a90201a25","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.26-renovate-non-major-86795eac4063b82f7993c3a81a6daff38bfa7f62.tgz","fileCount":24,"integrity":"sha512-i/h4HaWVqWM9m6GU/OD40WEXtWXp+xs60dfJCMpYyDjyFvqhlihkv4Ah6RS6Jyy5DpkvDsue728jFV3YJYm1yA==","signatures":[{"sig":"MEUCICsGADUgHatEPC7qrJWHH8m+F+E30yN5NcreHQeuCv5oAiEA5vuKJLqam2oxLnH1WAQ6JduOuyYnLgk/QYAKx4gHhOk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOcFkCRA9TVsSAnZWagAA5RcP/1eEuFB5crfr3NOPzdyi\nAlPHjvpOxZ9CSTEatEKuCwDUp1CztH/i1qqTIJz+6kZckON02olXRQMsLxQ5\n3roJAFZEgUCZjnBADcm5+TLNE5kml49OLMDyhz2ywG7XLMhC6nSTOJ+2CMHf\nfUCx8gW+w9ez2XblM/w02yEdSLI/PplrcTTheo1lTBKmbnfR+evG0okcyX7g\nfuRC9dlJo/Z3FDYcE2AjizdU1LHsb5uduCVgldOG9JBO1/+U2aCr/jkql6nt\nV/ynGwng88rILxP9FFZwUoFg6I1zut+LNai5IeNi4o0BUxcafGeQtein/mEH\nVuYYs+T8wvli8TQVmG0C3PpmaeZrZoDEaV2FC7LRyYDG6VVyancN2ocs4aFa\nEm0+yYzRynBshJrnDMYDpcOBDbpo/uFoP12wZnS200q50BY6dKZKm+FR25v4\n5Nw1FWens5vPsuo8FD34Lltu4rkaU/rDJ9Zutn6SsGIqRJxOYTp5yFSfCqwN\n9VIa/o9++BRKUxVmw4C0rgzQGsdm1AfFJRaUD+NrQo3aAybTgcUSD5VJRbiT\nnl504vMkpZ117fnRU+585ErcPAFmVmBogw+XYKnSXil8F8W0iofJ8HTJ5Cd4\nlG95W+NCvfi2wrWk/EnqUH61RVGGf3r3gm7OczCL4v+/ECGuVGcsiQbl7L1/\nbJDv\r\n=pZFA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"86795eac4063b82f7993c3a81a6daff38bfa7f62","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.100"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.26-renovate-non-major-86795eac4063b82f7993c3a81a6daff38bfa7f62_1614397795463_0.5849582778213178","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.26":{"name":"@balena/jellyfish-sync","version":"5.0.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae614e4a6da5ee7d9e772647a11eb1a8e2fd6cc4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.26.tgz","fileCount":24,"integrity":"sha512-rIsNEup0idew7jNHK9M4d0AHYuy+33a7umAQ4FnT/UXCV0sFhEImCM09ML5gzuYyYuZ8KlsUaFSuQERcseA4mw==","signatures":[{"sig":"MEYCIQCouRR9TvAzzeSwjj3WysS5xoyupaefiNmRdceiIbVw+wIhAIowR8zZxt7PODbPnMQqYnrwG0FZ5EQECX4eqlV/mBwv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOcIrCRA9TVsSAnZWagAA8OkP/0yheOuJnPQGM0LS32gh\nl/JpreWqKRRN873Q/GA46BGPIFJ7QonNdGsYkByDYnKgQV/hqcL93+xVewUT\nyGXtrxtq9AfSlHSnq+Ki/yZffArDjSB1yvRrcC8Xmv6ejQT/5nVJOw3/0Acl\n9oE+wv/z0OG8HAWxu7QLhSeVBZtn9j8QthkbfTzlyMZ6Z86udNq9eUnxHXse\nnOLT29xsEiG7el6nUD6I5Z2hInxZ+lKoA0B6dSILuvaj2ExudCPwcsRJQdDF\n1Lo3uCX5W7UZSX1iJ7Oe46QdA2lGkDUw26NfEEf9Vs5gHsT4PqeGFfZufzLI\n8IdfPkhL7/eRufWs5MBUEzHBtTYbm2Tw5B9kJ5OdwLsqual6vl+H74FuDukM\nQfCOjd3plJ/R/9CGowLozw29MH/sVbgKRg3Xm42uaiwSM+KmP6hXLSsGMDeN\nqQgl5FgIUsOD5sUpNZlg0v70cfoLR0SpRRbp61sNTU3ebYSNfh1HiCfdue6A\n6TB9UkDWQy8bQlT+XRTXHPEqo4YSp9fkJHucinumk2kHr6sLSqauVqjUxei8\no1R8JhgJpLXDbHRtOXsZy+V2Xr+1dOCIlKIJ+lO1RUrvawn0bUVt40lBwdKs\nRvIGAoozf34GbBH0XZ0iR/2/2ASHHAKtXQonRvcVoY2zNjhqmPFO7u2c8zrd\nBLMJ\r\n=th9r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4eb408e3796417f5feeba88ab77430a0a7ec0276","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.100"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.26_1614397994883_0.8476752466308306","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.27-renovate-jsdoc-to-markdown-7-x-4c412a0981eb6e6d9ff9b5f753900b7658aecd4f":{"name":"@balena/jellyfish-sync","version":"5.0.27-renovate-jsdoc-to-markdown-7-x-4c412a0981eb6e6d9ff9b5f753900b7658aecd4f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.27-renovate-jsdoc-to-markdown-7-x-4c412a0981eb6e6d9ff9b5f753900b7658aecd4f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d65467f4e6e40329eadc4fe81d94d061c09a7e38","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.27-renovate-jsdoc-to-markdown-7-x-4c412a0981eb6e6d9ff9b5f753900b7658aecd4f.tgz","fileCount":24,"integrity":"sha512-sD3n7oKm5BV600aroUZUbaRTA4peNFHFiUZH3KyRgFgoZtyclU3d8FBeRPD4IoZR09OzmNBvQn+LG/NYPI/HlQ==","signatures":[{"sig":"MEQCIFX/0JkTfBSiOB3jEHuXxXnu9lvi/jgRRpP3Ez5W9UJvAiAt//WsrkZoLMfLBUd6nV8YZ4p8I2+BQNgX9nxBl2jvkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOcLCCRA9TVsSAnZWagAAFiMP/0yn5Er1g0IxIdJRStIs\nwjFCWV0fz71SQGW/fJBzcr+/DwsTqt3P6p9tYE7cfoF2lcSAWzdY30Syml/j\nPX/T0z5DL68iVG9K1FRl9ic/69KZYszCqSfalcYZzDJr1BANY6T5T/1rosXY\nytfNRFpEEqDq4c4OP/Q92ybPFkFcsKiEiAddcomxlbYG1ewdEEf5AN0bE5HA\nvVQO4CW05glbgVZTUFg/r616xpGrIDY9enEQP5HUzauJJXG4ZbyS0GkmO1FT\nUBUQwM9xokNL3ws/iQnRPfE96Q3OFnDOlHltUCzgvuw6Rl+i648gIOzsJnph\nHOFTcy1qgP5xZWdjmPgFCQtLGl1hdLPXW83NXj5cnNGDCGtzLZTBurbMwjKA\nBMRueNMVND22gXRVVXgSm/2lLLad6rol/DMsViV5v4cCcvaXhrUykZ/QYlsS\n2Q8KXVA+ibNZHwUCAzW+ALUTfs7tvH09tfAVMx+2/bDZDztjzybnF7g/G9f/\nWuofb2MA8bRsT3ln0a/e0s3k5tcsXgbdmcIk4dZqClTfGDBHfb4B+vw5TjQf\nHUgBCPGqlCuA5sdN+V2O31qKZH/0m36u7k27simgSvjxORur3QsaG8UN3G+M\nKL7PNDDco+x65qeDdVlUlesHxmCyFIIJc+bxV17glz0WIYJ/pOrfJ92ZNpDf\nGDKj\r\n=IuVK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4c412a0981eb6e6d9ff9b5f753900b7658aecd4f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.34","@balena/jellyfish-metrics":"^0.1.100"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.20.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.27-renovate-jsdoc-to-markdown-7-x-4c412a0981eb6e6d9ff9b5f753900b7658aecd4f_1614398146002_0.8107017140437396","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.27-renovate-non-major-9b080ce162a7b3f9c9da0889f6b428e1dffe6314":{"name":"@balena/jellyfish-sync","version":"5.0.27-renovate-non-major-9b080ce162a7b3f9c9da0889f6b428e1dffe6314","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.27-renovate-non-major-9b080ce162a7b3f9c9da0889f6b428e1dffe6314","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ce4f0fcb8b030988be9449b8e924ff3a3795306","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.27-renovate-non-major-9b080ce162a7b3f9c9da0889f6b428e1dffe6314.tgz","fileCount":24,"integrity":"sha512-evQs0LYiKJAfHLFEistLvbZc544JXhevPjvosF6TUoWH05SwJMVo3Tw/BpLbnVQS/JHPukh96zckzPh6kBPHyQ==","signatures":[{"sig":"MEQCIEGUGZ/7XosJk2laSU4CrF8l8utQ9ZlYOkKn9g5LirRdAiA4wTHQ+FiYoo2lztDa4W/PeNooIHYhEn0R+vraPcsq4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOuURCRA9TVsSAnZWagAAfsMP/21ZXjBR81gmJXGI72ra\nd5xkrRzwXcYi5+r1Oejk1UYTx2o0BLllCSvRJrLd9d2K9W4Au6zdddfdS7Cu\nR2wh7ASxMID80CwmfE8fY5wY6AYot2ggBA8tcMFdm8b9B554YfmWrrrSgGbu\nWOc45kIKlDVijPTNpePHG0IG/dgUWiK8i6eN3ZobYWr/aJsGmswpP/1CxjFv\nlZ2iMaz+B++gws1GS8cFSXRedNar1Om/YC5vsiIx/X/GLJMlPDwfYGKhIvPq\nGbijAUE8DyVkHjw26SXlWz+qwnr7Ezgj4MWvAvzAowlmsbn/wfd3bGfjaPpc\nhhlfTDoiTGIMrAirEtzCbJIcdvSKk7C6w/G18Zdkw12NrWzLwH169XFtbDqU\nmuXY9bnB9+S1zMRnKLCw+iWxvjnFRTOu6ASzgRGI+q0gfMPQK6fZK05SeB5w\nH2Xd3/AgPh/lqsfgfjiJU1pRSovoIZhLUD7OgaINr2CH50RDqG1iJZjIPkzO\n5ty3HHPpPM3CIuLy/nEg5jEMKqcrzQmtZEG32VHrg4yVA1v+ZS54V41Iqn1S\n3AsufhKnDo2cIHhvZ2kwskwWmn+T2TuOWpfZsHiaGrcjSMAvjvJN5wPDEraf\n+37oxN8W760OzTNXNT3AnkE+sAtmQ2uvHa2syRDKlhqSn76qJ6MGL5UrNg/4\nuljy\r\n=46zq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b080ce162a7b3f9c9da0889f6b428e1dffe6314","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.36","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.27-renovate-non-major-9b080ce162a7b3f9c9da0889f6b428e1dffe6314_1614472464531_0.9207192083364513","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.27":{"name":"@balena/jellyfish-sync","version":"5.0.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cdce0af6cf4b9413c10e81cf11752315319fbf04","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.27.tgz","fileCount":24,"integrity":"sha512-kve3tTLcFqCpIFBnw4bOpwwXrMbiKMv2M5A/BB+0CDlBxGfdCbWdeQeCmZgtnz0oS1bd8llqLmgPTdU3Dq72+w==","signatures":[{"sig":"MEUCIGCwSW31TCUp3859ffcX96XXbJKJWd7riMv/41nuK9E2AiEAkDhDVM7xXgSbmytCBxmTHw2A5t7dbJRqkYOef3sVINI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOuXWCRA9TVsSAnZWagAAtHgQAJ2y3F7/0BjsFaCEoANB\nAm/1Mj/9Ch38dGP86c6ir6Hl/Y5nJUQVChIdOxpZk3UNiQ/MVi6QdiHxSffq\n2HkqoKbiAwq8AoAURYk7msVbzWiemwkt8bY5j8hVAKkE/zTDIku/rtvjJMmY\ndHTN1nUVFcsGoXoulzEKKoKtqud5OaYc9RcMUWQX+/XG9nVGhhha2GUBtBsB\nDowqRVfZJDU4tct+awQv9ewvLz/4yiUTxIdtFUvgHJjlKZaup6XnYs4zm+Gl\niGwpIQ1ja0ZMkBm5152DBUUZTpCz0210nsxpyw3bImXthrk54qbQjXCHpz39\nTmK4P99/IcZcBLl9LQkJehvnLbZLKs5OVKvjznwY50O38fPERLtc0DsI0Fzg\nByi+0w/VaSJX+4o7YooNx8EPYrcj7dFrwbZnosJOATsa+3j1EneUqappPKBr\nWD0Cwlj8kh+1TpZ+QK2FJH/qKiQu2EwVlTcQT2gS8ihLlKTj10iwVYGePU2z\nR6uzUTFIfUhSuV8n7s0dM9vg4woZWgqE1P0J4QlDmsXjxFtE3UZGscr6il0B\nXXTJTK8xtGdP70QtJqePrjMc0qW/2MBxv/NdneUgx9XQACgWobQte3zabE2E\ndct/YeGKbVDcWXrJwRBpYpqJsqiyDiwKmBUSR/IdvgX5d7hhDCB6kzxaNYNF\nucS6\r\n=NI8J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c67e97c0a27933950a00eee94e60c165cc7d25bd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.36","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.27_1614472661642_0.36779003898269824","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.28-renovate-jsdoc-to-markdown-7-x-a7ced594b479b0f126e03a53d979671f0b7e69b0":{"name":"@balena/jellyfish-sync","version":"5.0.28-renovate-jsdoc-to-markdown-7-x-a7ced594b479b0f126e03a53d979671f0b7e69b0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.28-renovate-jsdoc-to-markdown-7-x-a7ced594b479b0f126e03a53d979671f0b7e69b0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ef00dbe3b11b0bd15bd415c9f0901cf5f03d0a3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.28-renovate-jsdoc-to-markdown-7-x-a7ced594b479b0f126e03a53d979671f0b7e69b0.tgz","fileCount":24,"integrity":"sha512-jETztFwWX8Xwc3CSkIj7mga+woyzDannBtV/LEppwE+nfv1j8C6duFOuEreWSIm7zC1a7Q94IIttBTb/rfcFkw==","signatures":[{"sig":"MEYCIQCqU947ligfYDCpyjW9LXX4096EHIAczWysRolURDWzoQIhALBR7fC/ik+01JJEe/s6VdxFifjs1+H2T3sn9kJy/CKr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOuaRCRA9TVsSAnZWagAAMJsP/3J+D6h7kacvKWJISoMW\nT6p/iTp6P80W4OUQ0/TGysWUIB4e9fBUIhQ+44ne3XDm2bGCnmSVuGBjtalV\nltTr+NjeGT9WfrsgNdvmrwi7HFvNM/JmJehHxQpu2+gVadxqU8vJ1NGuOGel\nc654CfwZ+NhZqvZ9MOgu1SX9cvGqRsdzl95OkYV7ws9HPq0S/QY5arJm2RdP\nGdRtOb3cp4/GfMiz2gZ9Im8Yan794PlFGf3e/Z1WmOwLO6GrxWFfpHHiWc7F\nKg94hJWnjsMWv1ZlxRgJlBxUie/V2xRqBBNwPv1BP4ffqaTKKuht1XRZ8k+x\n4Xe0csHDUQVcPoBAayFCFmE9oJTWvo2FNTpTIiuP5zfA8DriVULheb9MgKLt\nZCd1eIs/XGp3wVq0nbG4/GyxzhzQZIek/lHABao8lo5F5n3AlRumvnK+uuGE\n+BGJgCh5jC9Fk6UPm5wXC0n5z/0qUxLpikxl4jhxx1ZgcNTASobQJQIvb0RL\nav92xQARGw3HS+ZKQO4qAbKPhdCRccZrda9g0V8Vrp+9XhiahL1kw8wLTa/N\nqkpHIQgx6pkOjarRwxBCj3Ji3XvA0iNg82jn4GcYutjger0mxAwQIyiQhkRG\nrLCyxQaONVcPsdc6l0iOixEiap66BgJLbccayLI5RGFwabMr3vx/LcLds00d\nIy97\r\n=+Okb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a7ced594b479b0f126e03a53d979671f0b7e69b0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.36","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.28-renovate-jsdoc-to-markdown-7-x-a7ced594b479b0f126e03a53d979671f0b7e69b0_1614472849107_0.7433939162359231","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.28-renovate-non-major-ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed":{"name":"@balena/jellyfish-sync","version":"5.0.28-renovate-non-major-ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.28-renovate-non-major-ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"283ec5ab8c8213d93e3456790c245eb481eae39c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.28-renovate-non-major-ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed.tgz","fileCount":24,"integrity":"sha512-1XNg0/xt4F8CV3qH7KLv4atKP8kYZLtOy8G7jX8W/R8nx+HZ6YA9/R9GyNj7lKCrwDOITc+B2jnAJnp52wjttA==","signatures":[{"sig":"MEUCIAtz4QPVX52DCDvUJXsnLpqnrVccWvCxyoFYTJr5v3hsAiEAzTxuNvAojsuw2RVbrH3pTIbNHF+yhKiB6IsHlH33URc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOv6ACRA9TVsSAnZWagAA7P8P/jdec0pxGs2LsclcOAit\nS/I7tYGSvwr1mtmSdVJbJ+3n90UZSIu960BtA8P23ogbpjedBdvv6yhHDLF/\nwTQUU67BvNmlSLqW5X/nCLNtS+zITT++8x/3b8IUkwgY7MEEZhX6hkZJbYXB\nCjnlwbVL8V+NYnxXTBy6rzckWcQR3I8S/ea0nJMibTQqobz3X3uO4z1ti8kP\nAvkerBFuL3hcdhwhk7oQu3SLI6wARanGxSQWbr8OSTmUtGioMU4xbc677E9Y\n0GZn5AT7Jy8MPWwR5nkanEehnRbwv5gBXjt1Y96LTvoZGsfIRh9J39qWShHI\nIOEqDVw1Su8Lw578zfuW3nUZy1P2bE9NF8eh82pbRLqbZNweR8fANtVmwmKO\naZUZ/ykAJzoqcFD56cFSkJciab2d0uQXdJTyujteTZDNPelQUPpmWNdQdDAs\nScHvqquqk27rfmkEUp8+8AUJDKNjhVl50z7fKwpj+TpL4U4o+xDo6bH2dTJJ\nlhKduZs0dnbUYzio7apkZb/+cgmd/1J8MBxdJGK4qpHSdMoOOQt1guSqZDeK\n8ZWY3gOZHbNZcadT0jMd40Qb+gYU1qikspxH3JUKW9CdFurkFojrV9sphRzA\nxFrWiY0WKo1tbiX0eKqBy+85z2lVqpBT0Wx/rJSxgxTMuVkfMWHZxtsfYhO/\nmmRo\r\n=khU7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.37","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.28-renovate-non-major-ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed_1614478975867_0.31878326544488234","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.28":{"name":"@balena/jellyfish-sync","version":"5.0.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fcef56bc703514ab2b41f5072334d9b33f39b322","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.28.tgz","fileCount":24,"integrity":"sha512-wVSD/4t1sT5tsoOaLeh/P0zxsO+9+S3nHjD+3MEr7KIWhTRCnxYia0x3zSOD5qZjpDc7IuVdP6M558tpWkAryg==","signatures":[{"sig":"MEYCIQDDczomsZLaUDFAvGQMYQIBVRvzUn6e56zLRuyvQqYcRQIhAOQPjXX+UFB74AFeerhjtskWxHAEy7f2PCaOQFE2JTvC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":141622,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOv9XCRA9TVsSAnZWagAAeuoQAJrnpyYlE4SloxJ2q4QE\n6QQ0gV87+oObaFF/8Ql/wVE6nfL7jjpWYL4gPu1c6ZN2CJPfHEuNgYdwk73F\nJGfGLJ4u6c+kLloXbzXB68NikkaxxZ68DuhpPSXo7gijuki/tbp65OASHnaw\n2pcYOgrQQEjvJat4VABg8Cpyat8WsabKYNYoPMfTmCYd9tWLdRnfk8j6JXle\nA7/amxxJ553YTxpbrrgeaYzCe8q5X2m7lqwBBsELZ2VxklZULA80EwvCyqPD\n5Q4HLhInzzIxJdzgGs5TwYc+UPPhAELSHoOIOS+TSi85KsFwialQaWc5EUe6\nerVl6eHkQMraUV14aYI56XBedi6dG+WZYGHkKjEVrnggIGKxxoRSUyXnXtx1\nSn6DwcfQhEUTk85nR+ztQL5Jh1R8/OX+sns8KzAurTR+hF2uyMNGvqKFd+GP\nSdfJl2BpjW4UbBDkPrjo5kpCmdZEhVrIzsWwuKlMG6a2QIoVW8x9Z8XzFsDI\njL0DfOP/ZjsOcI18HRN644GABicrWrRAlcLeCryfs7B8S7/j1d2Sbit20sUd\nTh40jj+ITwDxC7QjOAzo103ALfJ/ztAQ7H8RhjyDG+HUyrNCdeMU2skGW0+5\nSEjLuBXH9hFiRp1acxb1mXEjK2TlwtxrmoWiunLuXl28SM/tK6UHMQbaNhf/\n5E+x\r\n=Pu8n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"444251f35c867122ffb719cb65ce962a9f074d38","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.37","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^6.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.28_1614479191063_0.5890131839378214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.29-renovate-jsdoc-to-markdown-7-x-9824757f19f311c4e85599f5455f4034596016dc":{"name":"@balena/jellyfish-sync","version":"5.0.29-renovate-jsdoc-to-markdown-7-x-9824757f19f311c4e85599f5455f4034596016dc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.29-renovate-jsdoc-to-markdown-7-x-9824757f19f311c4e85599f5455f4034596016dc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"99ad8c5cc0cf41980b8f149583050e3da833c546","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.29-renovate-jsdoc-to-markdown-7-x-9824757f19f311c4e85599f5455f4034596016dc.tgz","fileCount":24,"integrity":"sha512-AqXPhqY3P+qzykJeV/waNeDwL4Ryxrbq417cnjk+R9qMt/zrqIAx5zQ7QjL+9Py3bEZsT/9I2dfQPHRSRBQ8lg==","signatures":[{"sig":"MEYCIQComF5TbfKCfZ3oWnP5GbZ+Pvc8O5DJLvUM+NNQAJddqwIhAKXz7Wo4M3Ygl4gGsfZ9DBydLzgaKFjHEhRUNkYi51Rc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOwALCRA9TVsSAnZWagAAWngQAJ4Dyd3z25M8INJMc8kY\nsM6yQVub07E/i9vo0ndfU0toEwQ6t5h/FoqChB7D6naWUM3e2/JRkgM3uVdg\nVh7gpVECyceB8AFB6N6dKmGNywPOXX5v5OGp+FHEv9my8ZjfhmStwso9TReT\n6EQ6gdCMuvaffAk7b/gqBwf9tDznLCQuY0eF3r/C+xnoTNHcoXtdkiKz9QqN\neIvBdetWg887nz5yEncqITn6AlpdkC5jOPTJT0EXlRiKfmL//tYksHWKayDI\njosfAykU5zzOETZuHUjsCrdweIzXQf9xZU7vpvynEGtghghuNDJEc8Q7HwNG\nn+Nf/tNtAnexj31E0eFIK3NaOK6Hqr3mbuO0AT/DAiKhV7BSTZLaxos0HSc/\neJgG9vzLrmEhS6cgqbp9t43CgCGlA8NX/d7alH5Z14eVws7zbIAVCimuyWnx\ngJHipym/sBT1oh/TimoKAoi+V3TuokcOUhCBB56yGPEkbN/im5d+0d8ZWoIr\nzfbhkwDRy4E3xNhQBbv7VNsqpAAnw0bFlNXVklBz/HbKNU60gpSOanTvlGmJ\nHY4p+EZ2knthih+gkBPvqgNS6+dySxbiFndhUjEg1X/nKSCBvZk0zAn22nNC\np2UrF/jrGPRiJa+81ozLaWwb+erhbNcvp/WrBoz8yVyf77QS3yaNuoOGDmy5\n6m8b\r\n=+d1T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9824757f19f311c4e85599f5455f4034596016dc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.37","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.29-renovate-jsdoc-to-markdown-7-x-9824757f19f311c4e85599f5455f4034596016dc_1614479370963_0.7260077080751342","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.29":{"name":"@balena/jellyfish-sync","version":"5.0.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dde9c6ad4fcc02e2ba7a7083a575cf6bfa79c108","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.29.tgz","fileCount":24,"integrity":"sha512-efRS/2t5XigEfN6fxAa+7jAtvoDWWapkMh7dfXQaShn/uVeNsuatkZcETZLrTvP9Q105VvePDmNj2vkKId8RVw==","signatures":[{"sig":"MEUCIQCt/mI3tdN9ucJLqjoVXGlVavlf3sVFDq8jphCDMHmZnwIgdTyDikvWtB6uKEU2OF8iEDjzqX5I6fCHppyoBqq2FNc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOxWkCRA9TVsSAnZWagAAf3oP/3LK+zfSLs3e7KnLzuqZ\nIkKHXxtkKH6WQ3bboMJAaxXKNeCv1DjZHaNYZDSiExKaSHW6EEgWHh6ranu2\nBgJAIUD70VuDf5sYQkEZRX5c6iae208X9ZNCwWo8a6zCyf3Xpvep9GLji22t\nQuFR/7UO+boMfo2WEMcLdDdi6sn9o75ic+p1LMrJmDfqD/cemQRNp6ec8LNU\n1aCP9rTwGBkYzcCHuUAwNrEAqkXkyQZOwrf11dLQKz7mfIBmfT0y/WImpowT\nthGKX+trmCQULrv7ep8Wbfr4pBHmrRhEuaZPksf6k7AMWqouJVDmmAi5arRz\nUnr2PUVzDC9g2RP3AhX/p34hu2ULVPoADmyk+uXoV0fyXrdjNpbG78XbvBae\n7mTCXr/GYjK1a2Ay6IAfR0a4byTbH9lIANGdNZaNc0+aZN7He5np+F4L2yrk\n0mhAvh8mYaKV7QmfcLBGP/PNgFDDw7nayTlUr+Ozi/mbwPtXuv+klOOhJKh6\n5AxC6hPiwj/6FXczvD5Qu6uxzA5qpArW7SxyNS2b+seCNKXQJxYEOAw5CgFC\nx8Qeb5GcOdAWa3Iyj0q7s3XzDHMeu5esiVklDPyqGWypgnm1RHkwsV3Pa3Sd\nT9swb0M+J37/y1UMszNuawDCNGNyHE8al5RIL8GqlVO93S/XitZFunFgj48a\nGYgz\r\n=NbQT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b7bcce8b2f852d92f631a69bf1ac010f57c5057c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.37","@balena/jellyfish-metrics":"^0.1.101"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.29_1614484900260_0.08930118004196519","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.29-renovate-non-major-1a8932f4eb2eb9daccd6ba7fe28483676f7c4933":{"name":"@balena/jellyfish-sync","version":"5.0.29-renovate-non-major-1a8932f4eb2eb9daccd6ba7fe28483676f7c4933","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.29-renovate-non-major-1a8932f4eb2eb9daccd6ba7fe28483676f7c4933","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"046eaa7aebf2969335a1688770806cfc54412110","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.29-renovate-non-major-1a8932f4eb2eb9daccd6ba7fe28483676f7c4933.tgz","fileCount":24,"integrity":"sha512-t+gSgOmdZ7k4AK/9ohZ9L41nc6NQw4R9bvFSUlZzDQRUV6NZkXxN3m71LOlnVPwNpp13HFAvc2d4oGTbbiar2A==","signatures":[{"sig":"MEUCIQCFA6iZ7E6/yl8hWhj6N1crZ3YVi1dwF9ijkUtERRFmIAIgdM+w48Na3klHnc+WLu7VUn2dfhac2SN//pLHqCeXL1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOxZNCRA9TVsSAnZWagAAZtQP/1IWMlYnDU80zb3W82Dw\n8EBfBdZWcvQDYz7e/8TmdNlDVLtPTeEIf+UwpWcV2HFsCZqZskE6HOMgrOng\nG+Kyn8j2RLZFdQCsm5n5LlBO07DKM0DdQczJRke3gOr0nru8QdOEsdialXn0\ndrcRTFHf3WZnYdAzHtLhCrrmnxsniuAT6ghsw3ZvUcqgLuvVJWdLQQAdEG2U\nt66plANiQq9XFaiRtpRPvNObjA2cdRRK9rqmxuw3kp6YDW0ToUsS9jJvaCql\nueNg0IwCl9nUIl2kd/08XEmoyATyxyNraliFnMPq2OZp3PcAw2GJrQTzLQUp\nv35/q/oM5aYMjD94TDHzb0r2gNiqFtuHvKAL/GeKoz6iErxIH4u7+8BujvmG\nPVZt/yhEYuiNDHsNmkDX3O+dYL3xqnsK3gTccxO5QjpLhDWnCzlf4lJ4x5pn\nO7P2sWfBOhL7oYiIWP6/2RWD+ILRoDzYjASvxM5MtisO93KpinNo2MMjwmGA\nstm6ZRHqXpsoPkxKK/Dmh5Xn3Qy7oBJ8F6S0ekuoa3WZn12C+jHE/xJim6GC\nXm0cpXW8zkjO3/mbP3XYn2wNzhI7G01E/44RbC2cAQu3mcTxdnvTkxsCMSaZ\nO+dlfM5JqfUJaIfrv/b6TLQdzn4Ez1WdjghgpRoTs/kMc3/qGIVVz2yfMLJ6\nXmrS\r\n=ewN9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1a8932f4eb2eb9daccd6ba7fe28483676f7c4933","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.37","@balena/jellyfish-metrics":"^0.1.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.29-renovate-non-major-1a8932f4eb2eb9daccd6ba7fe28483676f7c4933_1614485068987_0.20128239697278572","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.30-renovate-non-major-baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1":{"name":"@balena/jellyfish-sync","version":"5.0.30-renovate-non-major-baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.30-renovate-non-major-baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b711864f348390728956395a56f2871b58a18be1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.30-renovate-non-major-baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1.tgz","fileCount":24,"integrity":"sha512-m4sVmTAUrhElYsPOSXAqOPsySlNEMIIgQTaDsK6I85MW1rUT85QSO0qaZGi+7MGw3pURh7/e3k2R4bGrOnpURw==","signatures":[{"sig":"MEQCICgqLVEOKKMrD2GPdsLi1M4McXqB+kLV3bChVksh7eLkAiBYz9x9mftPMvTqeZyw8MtObExUKXnSi7FGQbxcI/etwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142508,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOxb3CRA9TVsSAnZWagAAsgEP/iALt1h3e+wjqelhzSOF\nEUaFd2BBq91LSkCueo3t0m/y5lxE3OzyoJvlz1O7FwZIIzyvo4ISMvxq9gjY\nPWWDnGI5mIEvnE6f1erUpbUVRH8LB+k4MBIaol2rhtQYxOGUpRT9TM95cemZ\nBX7L8QuhK9o67I/jACj/IeeLgNKSheflvfkLg5//UKAZdqs9zTQQMrPcvaTh\nhgN9WoRhHOam0eBuC6uEfLji0FecIMrj6DxlkYOi2JQ5Pa87c269FucnpV7P\nmL6s/zVkNzyJrNsm3UkujYIjrmVzLf41OtxvUfGQTnaA7Y56739Qlm5Pdz2R\n3QrVg5uIbHPUHcdPNw08dsBpkAHELyR4jLnjTR3wkXkwozgy2BAFwwTZolqR\nimfkesaJ3SMD3/SWtVEAOR4yp8iMHeLUhQOK71ohlnEcEVIqPq0D3ncXHOP0\n+k7DKL61Ajdl/Nf0nEWCOuUIhCc9hanhNj17VntqZxNQMFmmHNdi84G0FEZ4\ni3v01NCDzmmvMNaZorgXqjPxNPthGl+CHQfrg9zWS+qaefDoiT5IB2v+/DF/\nBzj8EuquOvcAqm/8AK+xEp+c5SmAmje1chpFTevprRgShfytm3vi3X0xb7KL\nMRxkBDh+fq8VdWj9K2C3jx52Q4wog7jT3OKwd0/O4Q/BB+WX+P7fvYMUHvk1\nFyvC\r\n=NRnP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.37","@balena/jellyfish-metrics":"^0.1.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.30-renovate-non-major-baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1_1614485239162_0.825194183221956","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.30-renovate-non-major-09b8fe896d5b4b3502165c47991204e3252e0c07":{"name":"@balena/jellyfish-sync","version":"5.0.30-renovate-non-major-09b8fe896d5b4b3502165c47991204e3252e0c07","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.30-renovate-non-major-09b8fe896d5b4b3502165c47991204e3252e0c07","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a93b6ae2c37808051bdd77b62e1989d63b2199b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.30-renovate-non-major-09b8fe896d5b4b3502165c47991204e3252e0c07.tgz","fileCount":24,"integrity":"sha512-l6VjpCJphGD972tVIuzZcnRV62gx/gUZX3HR6G5M0rTD/9Khd80wcaOe1qZrpmnZWRTrm0IixBHlYQUnwEjbQA==","signatures":[{"sig":"MEQCIDsbNGQGJMqrpCZUWtewp+yU6LIlh9BRX5kPkzTn68uLAiAST7f2cbcrX8US+bNSMZAn0844xXC7pA9O15MnhfwFfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOxeaCRA9TVsSAnZWagAAx3UP/3fk3ouroUcpRwrjVWKS\npFhQtUklXt5/H84JzZSnvr2KuQKR5BSGq6gk1BK9sjhlvl8sk7ooKpmDD64V\nsiorCCr091m8L8xdd8uag5VJwMIyoSViZDTL3f+EVFHeTzqEA3Oj8aBEbuiw\nIpJktTtBXaD4azRb+wxqgA7yCMtu25ApF2N12YTYFKnngRgjP8IksCriaR5R\nle1lVZTetLI0Y+ZlsYCX2fUbRtCb35yjiHhtZiDCUBBBtlheKfh1ijtm5Ow2\nwLevOkujA0ik+3LFuDf6XHXbzT1K1lesE/1VVHKgoYhICS84EjCyWXVVjwuN\nL1QFvtT6Fi6vAWGgNUaQsH2wi9EjHam4FIcreq1HS7N2vsNvelHtzWZUCa9+\nxX5qGVqgsBfXxprhfE41W+TNfX8F/yeE6rC38qODgaVec+HSNkg1Xr1We23p\naXIA3uYM9vjoqBu7w9fpf6pKYjVQUyCubf085ycwmzkEsOsSGdmt4DvAVYyD\n14lJ2VzXOjr+SrKu3c6XiCNNwQxf8senE8bxxJH5/MuhlOE1swHrNuKt5GY4\nVXrt5JnSFBmdbJHDTEimTgBFZ9bFwQrIn0YJduI5YI4Id25H6poqxNFtN92T\nnOth/vAw5B/4+YV1H3+paV6WiaEbwaX/Koqt993CQ+HG5QjeGWfSaFBtr1o8\nuYY0\r\n=+lD8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"09b8fe896d5b4b3502165c47991204e3252e0c07","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.38","@balena/jellyfish-metrics":"^0.1.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.30-renovate-non-major-09b8fe896d5b4b3502165c47991204e3252e0c07_1614485401912_0.311584258527571","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.30":{"name":"@balena/jellyfish-sync","version":"5.0.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b40ed7071cd1192194a794ce8ea6e1804455a1db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.30.tgz","fileCount":24,"integrity":"sha512-wX1W1p9Ju3q+Bg8A2XfoyOZPSWqSIuL7NqWt0PT0OcqFVXQy60zsVzCCqMOJ4ex9yG83kFEuHFgHGgW0pQKl7Q==","signatures":[{"sig":"MEUCIGhHsIMwgpu0lHV2NtpmL0qPUBdYWNATWyBzoaOfhfhJAiEA//Iyb4CLfITeWO1heJaBZ5KWW/FztWPEqMBNkUhVz+Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgOxhvCRA9TVsSAnZWagAAhXwP/06/cwC9pHkv1XBB18+t\na8fmYm7FBrCIDGqYfUTksFb1cWwANCVjNDSoZI9eQiNmqw/qSjomJxTz8Be1\nFinZje8CpSaj1OAAhinQp6a15LvCdpg9Zj7YIcaL4OO4BVyi0bqy9L8+17Bs\n7VsgEF5RjfmrIiRL23+wkipl+KhqS00jShTKRiDVLg2G14xLowGF8+WOPhDj\nBcN1aa7my1RULC8PGF9PGmDD2bKo2leWPSZix0TONuRAi75Cb2sLG54m3g8Z\nBlE8h/tqKzY7t7g7cnv/f6sW8ljWT/Jwocg0Q4GawVpwHOffwqgGa3hwgyAv\nwY+JmQgLV6WHQq6DkDOkuzN8SsDVNVLJ/QWY6voL2BQzzqhTibCFRP2T1nm5\ni4cnOlG74J27omc0YwlnBfX3Ittan+9RmDfmq94aQMZFPTOx7ia2cEFkc1US\nG/59sg6cbONEiEaEY9fwJ0PjQVrFdUZPchpqrCwun+SWaA/WGeh5dtUifyqe\ngKkTFUov62jlk3U3FJWBBOFpbRfs3Ihzg4pe6hyhyGrgT4Ae4Yxt0uIBB2Bk\nsJiwHjiaul8ToKOP/K/VQQ+wjSb9l+1fbwx2C8DA7kxO4ZR777PMdJeTzJFc\nORp7txSWTPl9W+vom5t4UDok2N3L9rm6wKeLcpQtJ2foTEmmydkvpRS+QljF\ntXVM\r\n=W+5m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e1c86078a5c218c62fecdf917412bcd68703f99b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.38","@balena/jellyfish-metrics":"^0.1.103"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.30_1614485615131_0.801642498752762","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.31-renovate-non-major-82bc0824305848c4833b7a621f6289cd91ecc86a":{"name":"@balena/jellyfish-sync","version":"5.0.31-renovate-non-major-82bc0824305848c4833b7a621f6289cd91ecc86a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.31-renovate-non-major-82bc0824305848c4833b7a621f6289cd91ecc86a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3adf930dfd8ef79732a13e0fe4de895c5780582a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.31-renovate-non-major-82bc0824305848c4833b7a621f6289cd91ecc86a.tgz","fileCount":24,"integrity":"sha512-EEdNVBN4qhJIvcuOSMlKpGO7E2NGigh0hdhBUfXEcKjLfqf1WHrytXrnXnK35ZOPKofY3SjRtf5FoiylGNulvw==","signatures":[{"sig":"MEUCIBK0xbjYO5eEyzPGhOy0NTyIYAQJouyOgLErYYBrzngcAiEAn+2HjA+iZD1bXy6sTYwH88RE+CoBHFhgScIlp9z61hQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgO06qCRA9TVsSAnZWagAA+EcP/2vfyuAAo/w6HC2x66iz\nvWDZUr9l2d1z6b8Qj58cj9pES8NCGnEDyURrFBiulM5OyuFoGVDyrx7gmSQ6\nFrcWTrDrK4fjNjPNnEOclv5OFdn861Txo6FszhEkoD29fxI/yHaVbkPUEKKw\nG1F7Ox5MdcU/DSHbmBBl1AfnPUTRIsIIRkn3ZzvEPhUHz1CGTfOqj+/HooRl\nmlDbxzOKwtoMSFW9k380Ous/pHZVISYyTDNsu//xV+5ciZ6icrf3TyWY3rrT\n7TwxX1dNvxBnLi+hIgkMXT4wUV0hBLEAVKiuyHdsJl/+rnug3kxFX9qvfyyk\n1dFrGPBpdOG77JLNeCA1L25SfQlTqtRimxnHRHIEa7on9hWzpsdqGthUTAOy\nT2dVQ1sekJe05ls1QnlH2pWF6fBPcLfRkOv/tC118MNsDvJqqPD/fda+BpFg\nlzkS3xMIT7byetp9GJojO5mnu9g8XRKgDoCqFlW/YA0PzplcSlst+Qq2co58\n5ifhgu9TKmu6xoBGf3UCSTpVwLcWLVf2k8h2ETdYIlHy65kqN9c1rwYSSFlM\nW0x/Rpjf6uVmlsy5NyBPFGwSH7TYTDPJY8oRhFi7X1j/cnfiQweADTDc46Ma\nfdcMncUOpxRl5xKCmbfeuroFLkmZCFHF2YUMDjWsHhtAMzt6jkIZBKZ1vg1I\nqRF8\r\n=HNsW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"82bc0824305848c4833b7a621f6289cd91ecc86a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.38","@balena/jellyfish-metrics":"^0.1.104"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.31-renovate-non-major-82bc0824305848c4833b7a621f6289cd91ecc86a_1614499496427_0.9381686410625845","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.31":{"name":"@balena/jellyfish-sync","version":"5.0.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7c4415f98bbedea154963229b17f04f14b9aa50c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.31.tgz","fileCount":24,"integrity":"sha512-55/J9l+n4MMTFvT1PCh09YQ/IMbS7chKQu9FY4VTZTgtyl7+58kfpmyB5SDmhF5zQVZxAoqgs0bPb58qvNlJpA==","signatures":[{"sig":"MEQCIAEJOWt5IL8q3BAO726zY8IJamNsLM0ir0AzQVJs5IfYAiBJ1T23UNrHO3P1ckdq4BYHd/ff37IPAHTzol8f0+M4VA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgO092CRA9TVsSAnZWagAAz8MP/0myYoKfdceuLjAW2hky\n01mkMdSuMXe3rG3H/GaofdKExv/hSNF5R9HLLtHJeWFT+6AAc+vVBddc+wYW\n+JlOTHJKSWx8ugXvt8VB8ltt04oUsOcernjsXnL12Q+yLF5nWixhJr4HyEX2\nd1aO0x0wAqK4NQKKroHF7H8Mb//SqT2mqb3TO92lLmO5AOesdP+bQsQgp/5t\nfKXnG+jVNg82imMsk5w0xcm3+JbenlMaNOeclafRBNr9BgX7akd1IB4IUWED\nDbqvwWyY3Y4FnNquerz8zR9lpxYwoYg6YFqNdhud1WNcO63ovPbIsKhob/S1\n3n3cHor4XcgxicCRAAZ5wUrrBTRppXFONGhi0S+MVuwEjxMlQq5g1pnF+ga3\nSxpzNE9ja5v807GqxGRXKXnyVPxqZ2xNKBIoFtPTYErWuLJXOFmiF29lxgeS\nzI78eMi4u4TLZKD9RvrS3OvtgefhZnAIrQMFeyFy9G/b9JXjqTVWxHgl5KSP\n18GNb6HQZg2EpootX/cVpBkt2t86pNSntrA8Lwfdfc3t/WTLagEu4M7TJSNZ\n7qD3evOVoq0EnNJZBDNT/keZpW2rZZyE6htawpbYL7jnOXYXPD/KgU/eTABy\niDZeHoe1I6TdR8VerBtjvlLTD23UpREOGSeGEtFf7z4BjXyGBWhQdFUZB8Wg\nErMj\r\n=CdNz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b87e23e5ef9b6ae0d92c6a38d4711137703d5b54","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.38","@balena/jellyfish-metrics":"^0.1.104"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.1","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.31_1614499701585_0.48247562946310585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.32-renovate-non-major-c7c9906abfaacaa43d7c75720da41e37bd3a4681":{"name":"@balena/jellyfish-sync","version":"5.0.32-renovate-non-major-c7c9906abfaacaa43d7c75720da41e37bd3a4681","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.32-renovate-non-major-c7c9906abfaacaa43d7c75720da41e37bd3a4681","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"94fb2902668726f9d3731574df6e903963ff0be4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.32-renovate-non-major-c7c9906abfaacaa43d7c75720da41e37bd3a4681.tgz","fileCount":24,"integrity":"sha512-Oo3nDoJ7ILA29u518alnHz9B7ecD9oatuVdu5ppv78inYvutW0a74cVxuoqSKVUft5jrYgReu89HdIgy8LqEsQ==","signatures":[{"sig":"MEUCIDc6scsQmrUia/tFDEbfVrdcUOCHjk//O4AVPx8EUWCFAiEAwUe8KWoZhX1dkpLLBYoU5vySaltx8vmzSJu56/h9y3c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPFaYCRA9TVsSAnZWagAA1QoP/1K7QG835TYypFSkHQ1p\nRgBOgggmVT/CEqLCp42pJaX21XItZao7k168uX9G1vG0qtB089vNg+xnd14w\ncUM54ebHBYnNDAO7wU8nzNvOjxFCW325/Hsn8HV7cmjiUqn0uzbj1tajwuUW\nLGjh3d2JB5uTSa6UobdcQiNb7VNn1/MoFpanI/O/UlUvv/dxH7fO9aonze3C\n0ABfIF2UEthN7PSESSSFU3EFrt4eokIZ2s8Xi5vu/WPS9yDDWGTjWs6pctOT\nFCvoDdMa62ajDZ9n21BUdZWev8wE56wxGcLqj4/ziMtKU1+voNu6MsuAXVAU\nz+nwOgncpFj/1cMM3EFZ6qPk6QploP8djEy2LrB9/kl0JOsoQ9xHjmBO7yH4\nfnjeC5BP+2r9YG5ArHzMNA77veAyWT/FmDqXInncnoBHryBETL5FazjYsoHi\negsUx8v0Fy6eON3z6UPS4eijPaM6GwK4YxxyDf5LQsdH5zHo2rbnYEYiLt9U\nyPLM1UeaZ3BeN+sk/I+ZO+eeoIDxx93WfJ1zcP4pZGf/xkOy2445WWft1yuR\n+jyr2LY53H7iQCkJvywlahpFDiKWaVqcpFsqIOM/EM3hwwW4wr2aVcjbK5Te\nSZ+Iw0bhNcQP5C+aI5Zx9PNuWE5kNy8v1Ja3i2tGuXXNWujS5f0EydaF6PbQ\nZwVQ\r\n=KOdm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c7c9906abfaacaa43d7c75720da41e37bd3a4681","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.38","@balena/jellyfish-metrics":"^0.1.105"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.32-renovate-non-major-c7c9906abfaacaa43d7c75720da41e37bd3a4681_1614567064123_0.5481823482071073","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.32":{"name":"@balena/jellyfish-sync","version":"5.0.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d0e77166c63582f28ad204a1427dcde4bf5dc632","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.32.tgz","fileCount":24,"integrity":"sha512-dJNX7sk9g9rQodUY/tsbOouJOz7JkWzyTvsxEWI8kucnTqghp4FVy7/3domCqSbxeGgdhFLH3Ip15zJ0xlNO+A==","signatures":[{"sig":"MEUCIC0maFJAHr53PBFujF23TdcRsXtAH0wL4yXjyuDkD/2mAiEAv0nd6xR5BCH4MnZqiFIw6k25sTc34j/lakyNQVcklXc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPFdJCRA9TVsSAnZWagAA09sP/1atFSNDG1kKW7XJwm+0\nhhnlLfBcRnO4zfGWjdWfQXepdeqiS93gUIYBIUPmy4ioJ1iUgexZ6z5lQvmn\nSJlpIexfGHQq28tOUtvGk+yOqjjc+JTE5KIghsdHLKGQ10wGXTloOUEnFCkP\nMfbHTqFPZA88l7ksswyYQTASQI2TsJ28ZbR24J4eBht+wXn2WRkD36OicuuC\n5mwgt1guBA+X9qbjNL3sYplAZY0JvsRumEWZ7Fwba+wV6GskQ6iaqIHPqwmn\nX0L9pT34y4uBtvMFSg4aEWJ5YWhainFevRrg/OUw9acY4Kk/m5a/rnAKL1Hy\nrINdl3ysgmpNs4Y/rQGmzMNUxBCtKFn5uY7pWfrCs+/ldCBuTJBmOMtKGLqr\n9InBrx1x3VC/aVqkRT1SAKbig30QLNuyEFVQ/4TNzHbjfhS+MupLgL2lM+y3\njWUQYqwBKqTGR6RO0pFiR71o0XNc5q+7lID5MbrJVdFe7/s8/zgnVrTUswuY\nFG9S+T+QI1akuXT7IPtkzzUK0ggWNdFAIuck3aUu+iYPqu+qXCW5GaNB7RIU\nVhU6CALPqwKahUlYfXtoXgw4BFmhLKcwNm/l74TRjuODqBQTOTHXFiKZRX+n\nfFA1ick4MHixKR4XSltt+pQMTZMqxDHns6lv6hYxEY81WlcrvbrE1jIFF5cL\nxv0L\r\n=qeqh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6c5a318c17d09a0a9ee564febe15cedb9b8827f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.60","@balena/jellyfish-logger":"1.0.38","@balena/jellyfish-metrics":"^0.1.105"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.32_1614567240493_0.748096555895593","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.33-renovate-non-major-42f954a054d3489fa7b59d5b952d16039d7447fb":{"name":"@balena/jellyfish-sync","version":"5.0.33-renovate-non-major-42f954a054d3489fa7b59d5b952d16039d7447fb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.33-renovate-non-major-42f954a054d3489fa7b59d5b952d16039d7447fb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae229f1e9fe62dc9ab31862497ca9a319eb9cf01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.33-renovate-non-major-42f954a054d3489fa7b59d5b952d16039d7447fb.tgz","fileCount":24,"integrity":"sha512-N2GkSTCmegkOF8xNj0hrTaAwpVyO6Rk/2XBXm5CsJJT1ifo7GAh5TrypGzgTDYNAAj/rbLKasje7WSeflTc0hA==","signatures":[{"sig":"MEUCIQDcywHxJpyuUQmUnsr+JKDmWbyvMlIxZPBg/lQ0FgUcFQIgCUj0pNFtjYbjpXLYpnqt5JjM7BW7xjea/n8+9z9uRo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPHLbCRA9TVsSAnZWagAA2y0P/3XnxVhsUSOn7MOEs494\nMfi3sbbbuBr1ej+hScjdJ0VdQ+ALYxXQhN/lgjgATCPDR6BFoNRvbuJOD7/2\nLpEcoop/X7Y0ciupCV75KtUhwg9ehJ2K5rXQphT5tsnJ8/4yotJ+WKkkh/BX\na62GlEYWmh8FYKAtwffgfFxMuiB1V7HBlH5lbzO7copWkxp7DjVz++VUxDob\nUkHGfK5MG7Lk2/ZtIIpRtyit1B7j4UIBPCUJqD5MrgidQdtgF/DEbed2Cxk6\ntdJ8G967lyp4hlqWr7g86wu32qfI4cphboC9eZ+NVhw2Gw1k4m8YiyKogV+i\nTP5v1qORlhZBW3OAbnk93zV58OZtu/fh/23NkIy235/4HY2QBinOzvVzGr6Q\nJ2F3jDz9hJpvWuQiF7S/xjgV+rWLgbRCbGiTOmtLaDOThNEXFWWkf1BIXSk7\nsGBceOKs4HeBY8+sEbpJYyWkXjMoIqa4s3exLuy1EoYACvI25aYLNy9nLIJy\nwP9D8NHoZhxofUH9BQLOJe5AMqBFutrXVkOCFM9mym8nHd5Jlm+dfG9mLiNb\n93KYRnT0ozHGYACVruC9eGkay8IUruSaecCRHm2dccUiXvwI5Xz2k5EYA4ll\ntuXAq6pOFRtdqCFolpXfXj81nhdfzj+gkO1vpDU+xA81MEP8AUS/JlT32R7S\n6Ktb\r\n=GAxG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"42f954a054d3489fa7b59d5b952d16039d7447fb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.61","@balena/jellyfish-logger":"1.0.39","@balena/jellyfish-metrics":"^0.1.106"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.33-renovate-non-major-42f954a054d3489fa7b59d5b952d16039d7447fb_1614574298326_0.9552363977037488","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.33":{"name":"@balena/jellyfish-sync","version":"5.0.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a759e0266fab07271eb607e988779296a765654","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.33.tgz","fileCount":24,"integrity":"sha512-LbCNWEDTwdYbQ2+ase05UhmI7Bvv2hbC5iYXO6h/BpZTZuiz545z42OrT+Q5ZrPB88qfZATRZCM8OSsznBuCxw==","signatures":[{"sig":"MEUCIQCgwVXF9DWhHxznyYVH7dASEc2aycvLL4T5Aby2omEvOgIgccqb/VQvxdKAkr3ihG3BGYdBw1myYM20KDychZG0nx4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143495,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPHOfCRA9TVsSAnZWagAAt3AP/15HqrhJsWBra5JjPEf6\nRD9pDkid3DEF8ACFuEO5MRDzaHu5pVbRtPR6pTRbSx3z9+wiWgFdjkW88nqM\nGb1U4mdWmUwpNkjUXpaLXyo/VbasFTVoejaqVP7X2GuoNlykEvUVGlTIswnB\nVSj449LlPwBCWTDyXRWSCmm3VOqpHBf+VZI8Z461trD7R/q3+5aVsH3WduEI\n4WWIIjQ/AxXfkqin40Smpq+z5fQIt7nbnDZOv4dTal2WUnWmhN8+1cTkbeKW\n9eRfnf2qqosH0Sb+11NuYFslxluKbtdvw1YEowLrI4hflv/3/wu/9mIoyzIM\nLbgJx0IXZ7vbnKCpBh3Faemv+G033PR27BcMC7ynU9Rov/YjGRDGJW5j8pu7\nW6AtN+oVI1uU+T96V2PsyqJ2wH4dPRxCVkuwSuQDc0jRVj3qs9EEjYmwxIf2\nf6iThzgSHp7rxp84HOwudtBgYZLESNF0bRj2RDOTuf/FGYTZBk+nrtK6plZ5\nG7y634a91Ch+WG3KXdjbGdLMBuVxGZPNlKYy37MGq5cnz6DyD73hUy01Ki8h\nFRuaS5mM2lrustrVzg15BXaratV5LKzwz6HZviFtbrH2is8J8Sr3ZZNCsh56\nCd7+J37dm3oe0FOZL2kms2yJvSnkiZ588Zt+Cp5seGPnjiAd787yEu3TkscT\nkcxq\r\n=Lha5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4d846dd22b5875020e4782462fcbaa090e906c8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.61","@balena/jellyfish-logger":"1.0.39","@balena/jellyfish-metrics":"^0.1.106"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.33_1614574495375_0.09408336596066524","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.34-renovate-non-major-970512aea7c38178a30add742b397917ba8befab":{"name":"@balena/jellyfish-sync","version":"5.0.34-renovate-non-major-970512aea7c38178a30add742b397917ba8befab","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.34-renovate-non-major-970512aea7c38178a30add742b397917ba8befab","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf617e708d783b4ea18a9acebf14872373201b75","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.34-renovate-non-major-970512aea7c38178a30add742b397917ba8befab.tgz","fileCount":24,"integrity":"sha512-PPApfXJMybUXqDrUHY0QWn2heGwG7UmDo+JNeqsJrGASXtZyFLWBppOkYq6Be3s0imjRT4aAydwNKKBqHNUgCw==","signatures":[{"sig":"MEQCIC2AEepbVFPLaXvJjQ+++NTqqlUNkdXQNJoPJMgwKsx1AiBm0Baayqs+j6RCYNgua1pn8YyfO9D70jftrJpOJAjYtw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPUF/CRA9TVsSAnZWagAAc1EQAIBCxH4nxdzwDNfqCrCi\n6JPzBfmpyiBfDO58eHkdTjTRY1z+w04p+UUgZLX8pw+ch63kxtmLrDLQ6dvv\nIbq0BK9gZ7p7ZBIxkH9BQ86got/1acyQKp91z6cvvT8fA482QkZm+SzY/cMi\nNSWtRIDu1P4y7B1JVA9t5TC0xDrEgVziVaWamd/DCzb5WTMG+Eruib2ElU9I\nDIoONUzX4ODmBl9wb2YGP/4lz6OcNMc3a+rWhvLv9pUYqzIHsVL71XPom4O4\nJTV2oJB0Iblkb9MrlJAgfu5p/ObU4iGn34ZBPsLSo3jUukjYm7rR3gxnQZaT\nsYFtfYvivssOKU8ZUTyEGh4cYtw19wa1f0A4rug0oC6zhJPWVkwzNWm+fBQX\ndhHpZA0Vnm9a4Beh6XdvYsPKyPdMQNEJz6eACxnIu1+gepeeseso/EDxfYaF\ndG903y3j6VT5amRElqe6rLSWru8rLwspMvG0dRFusW6wr240qStlMkQRjx5M\nicgwgJrACARDwZNMaMH60uyrF/4i5p5MZUFgaygKgs02gKsX0opwJBsQsY7g\n66w5nSOFZU/y7ghZ/mhdWb70Wlp2QwN5MO1YNP3hY3MVNaB6MXS3J7ciRqZz\nor7uRwyUS58oMiaCWKswqe/8oJoLu11N64UoS7Ny1r16S0LffQJSJaQ1Hss5\nJ763\r\n=t+81\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"970512aea7c38178a30add742b397917ba8befab","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.61","@balena/jellyfish-logger":"1.0.40","@balena/jellyfish-metrics":"^0.1.107"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.34-renovate-non-major-970512aea7c38178a30add742b397917ba8befab_1614627199130_0.44790011799055596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.34":{"name":"@balena/jellyfish-sync","version":"5.0.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"34686ec7685e1ae8e5011b151c4f661652d41f1a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.34.tgz","fileCount":24,"integrity":"sha512-GZ9EFvTYqw7oS4O9r7O5afKtsoVshIGa5dHzIC2rDoL3PAe6b+QAyxLYUvmJfr11a4oaZhLWHqN/7HUvoUBDHQ==","signatures":[{"sig":"MEQCIBcf44geAyGFemFCYVdz1wz43RZ5UFt3BTFLLcJb5jhbAiBNKKxSbq+rPUBtXyzvEjUW10/fpN+YkrO3FkGxzgdoOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":143844,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPUJCCRA9TVsSAnZWagAAUzEP/Aj7+1VjEVUE4P+TsufK\nL9I9V9yTrmr0relJ4hcCHtJx8ChGftvr6JD1PQxyAySnd6C/oDKudVhJskIW\npk4qpHbsMKvIxAh2IlnFTDYFuO8COtu1VdLeAqyPkDz2b3ywDazhGOao9cci\nB5x6V9Q6387ESUo/Goh8+Bzfkm7CHhAIDYMVFeFk/LSE/jF2Lktj5woYrK1K\nxKq5d5sZmvFFf7WGLgRNHs3/g46GaimPOe9/xIS+0tVCOmSLovpFNQ+qB1A4\nSujJAbPbK8EP5Fj7mT5TT0W3SkQXcE+lxWJ5ZRXofWM7zuuy7WfTI6Hm7u2E\na0cjTasYf1mWqnxSREINNFBsLXPBsqreJzeUzYh6uVGUG7f1GZL/3U5vHej/\nKFwrV/R7F03iC3T7YfVDN3YCJT32XBZ3W4OVNScJKqhDykP0Ay1u5q3fFTPV\nPnIRmbJYZ868DKGCpag5HAWuG/V6NuYHvv5m/dRPFfwmGH9r1blHWScxwek8\nudkZe0hfppHEcLV5jtI/Jj2Nt8lBXBakC0sP5zdXnBjgi+MGwsQP6Rp51tkY\nBKXFfgChitpUoOCOdag8HRyDUWHEKYiYlyHrS44qEafzIVforM2aaCL0ib3Y\nhbqL6Ovd56QjD22HTD8xET9AYYkZwbMx59HE3CGxjbJgvjWys9FoQR2kbemg\n/kgz\r\n=3N40\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fff44261de69aeb214feeb63e4b32c279fa1849b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.61","@balena/jellyfish-logger":"1.0.40","@balena/jellyfish-metrics":"^0.1.107"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.34_1614627394345_0.7838950933055069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.35-renovate-non-major-d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef":{"name":"@balena/jellyfish-sync","version":"5.0.35-renovate-non-major-d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.35-renovate-non-major-d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cbcc368f25c7fac8de7cbd296b31f3a5654d238a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.35-renovate-non-major-d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef.tgz","fileCount":24,"integrity":"sha512-LqJX9UsaiecvKWN6l5wmIW8pJC50Y15EhiJHsugfB4vGVQUz3gc2+zbc1ITMJLib5W9dfaRGOStcP83nvSX1kA==","signatures":[{"sig":"MEYCIQDhw6bQtbG+ttdu05criFzIuy9LNE2vRXY9wFIBrchNUQIhANUWwIAOHUQJxLpeSR/eXUebkD6TkWUOqc+K9PhOTqld","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPbS5CRA9TVsSAnZWagAAlawQAI0qANRnvjOVOI8pLsrF\ntbjboVjcCYPuRFfho/ZOgMwboSul1rRVsD4uj3dY9ujm9MVnsM5E4fX1JnQM\nmlQJpit8S0Bxeth47jpLHaHgPMTJhHXwMrpVBJsZoXZfjS4lXyZVnm2DrzzC\nc+/84TjW64LboqjjWJzUatPT86E6Wpw9j2MaZA+bl5T3+GyWexq3Z13xazlO\n9YjNbGDQJGyBbcyvFTuUHZHDn+kpT+PaDrKTaJ3H9Nu0VgQuXtIw3vxtpie0\nUqgAEVf+QqXbAZmhnjMgPcOFORy8raG31VDk6hN0bAFh+rhEVjhi3EvhbMao\nBlMA/EHsWsrg+LKqSGqeEDbbGU+03XmKu8r2kSH9eBr6roNc+d8VHbax8LjK\nC7NjHDFoLZU79J/JXvCGqtWh3JkIYqJCJIdjCgFy9geMSw46+YZp0oH8D3mg\ngsMJESU1XaLOu8fdYbyln27szhh1xD6QYa0K7964MWodadZBOJbIzo+yfahE\nfUrv+M2xB1dmAcwzH668UTReefa8uMmNeJNVAFr9mQlMgUnJkeuqG5+YG3YI\nJuwdhKRTzY8WmuiiSQiiE4ljK1EX/OTdgknNXX9zTQkZCKlZ7zfPcXulUpKC\nol+b2PZnujWsZunz2xVwwscyFgkeXtc/AHjj1b28qnDNyyyXAKILMXmnoM8b\nF+od\r\n=4zwZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.61","@balena/jellyfish-logger":"1.0.40","@balena/jellyfish-metrics":"^0.1.107"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.35-renovate-non-major-d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef_1614656696524_0.796078099102554","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.35":{"name":"@balena/jellyfish-sync","version":"5.0.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d4eafc9afa72ad8ff853caee1dd671e89c7598a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.35.tgz","fileCount":24,"integrity":"sha512-CG4I1Cwij31vCvvf9HRRpX90Bl//vAGvdNxf1C4QyjznHvI0F+HMrs/oQwAHnpkJf2RgIflvpjq1veT31LuG/g==","signatures":[{"sig":"MEUCIEmI2Pboh38gnUvL8jbIBe1RFP/ctIT1wAq9s/tCTlTlAiEA1/gNHsTD/+FBVcpoWM9N0blT+r73LnedbW1pdD46+Mo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144227,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPbVgCRA9TVsSAnZWagAADWYP/1dM0qDHSCoVg7N0f2/b\nzRkuR47b9oGJiX+VKOOT47/Z+Oacpa3E9dtyD7Od/zehBe1gzo+MMtEkUAc9\nRDv24pO1hIHWfd/KcK9paXYHG87fgkKL1KH6PYSeSlNA9tL6C0OdouNUS2v4\naV7x2ntL1M8TU049yzeO41FqUCrUncWygwUUBDyed6urtwDjBYbOPDt22euK\nE366PiWHlayH8u2NpTnM/zmZhcKov4xMjCewZ55jB/124WEMFDgtRg77X686\n5Opp//WOMc0Cw5DsNdSL2aD1ZCrsGFSZtudfR3z7BH08spcyptEYzSBas2op\nGhiIyBe70oT4lA701OQ9Rst8gylaDw4XHTfNqP75knOzzhowptXA3SgDX6E1\nFnaqMzWLY421oHuteLJ7hUGMYvgFG03cnc1cJX/ikWyqtEX9ssdzMnM4QTV3\nXp39tuMA3mcnx2xh1N707ylLDIe0VnN5UM9rxrO/Px0/kloTRpeLx2DhvU0G\nModlgQbW8d+38F/Ix+fQog9SBcH13q71UiaTbergj0RjhA4jsT/hx+K/0Dhc\nYT/3EcIaxmJxn7/1KqWE/y3lamPGzoQAOUqP6tnU8MaNARCaXROgyuuUcX4i\nSo7DOT9dhVh+R2LTReWdrzkOvKm5r8O1pcDtcWH1oJSQjvTRURM+2EzCMNfl\nJF1+\r\n=hIIL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9c3bb103e50e00a31ae315b72cd14eab4e13d80d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.61","@balena/jellyfish-logger":"1.0.40","@balena/jellyfish-metrics":"^0.1.107"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.35_1614656864369_0.5655459829986642","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.36-renovate-non-major-c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc":{"name":"@balena/jellyfish-sync","version":"5.0.36-renovate-non-major-c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.36-renovate-non-major-c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ccd7e891f31dc2de75bf872d5dc0994a4b856bb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.36-renovate-non-major-c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc.tgz","fileCount":24,"integrity":"sha512-CVBU6nURmWxH9PNsBd+sCiNSB7oT4X6YOAv74MM+OH7mDHuVWmeGziFKrefECcYUb23CqkHBNZocWxEhlKbWSg==","signatures":[{"sig":"MEQCIFjXkxqpwcXE/34m4DgvXnxV8OK9lILt6AE6u7/xpnOvAiA1c4Rcrz7vCwGGIVHf9TY7K5rEruKUe5OJFjtZVmmMUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPcvKCRA9TVsSAnZWagAAMqsP/RtZA4I3QJGTXhvBn+Li\nnfSNlZTW+rIBR2pZ0xB6w0rW8e/df776ZuglSECPsvhEjVfOohUH1w7A92ai\n9q5FHo5DICojNvAIewJ7g8cLkq7sryBSsXusvJtfVWebCqaF9KhWJxv8yFqY\nKREohI34TeNdt4TQbK9v46p2jm7RxBErt3GZBH1eA4RNJE5VY8aUTFwdFoFE\n2Qy/wRe+e3sji6k3WXY8N9esCIc6uRU6VMjWDgWOmnPlhP5x3sp/GiDQcY00\nyRJXg7GHA4STPSJp0EzouyEg2wRPNBoQEPfy1BfVRiG8TBYtX/45Gef0CkVK\nl/p8mYwkG2HD7YbWFgvDP17kwrinlaGYVySuYLgNu+UtaRjuB0pTNI8ZrDgM\nIygLT4jbWbFG+op2yUguma4stiETIv80BLAsbPjV07TAawfRqcOXIr/PqEsk\nqq6GRJGS9mOcdAUPIyYrewC/6fvfJ3fEupBhzn1TsZdFjO7sjMby1wkBPHZ2\nmrte/AUwlnEympW2pMXCU8Tkx9hDrFvleItZWQKvkndPpfwO/Il1iea18jmm\nt/RTX3UqUY6/KMDmGc2RAdARkemvMeI7wu0Ik722mb0eslCLGNyQpgUmnTvC\nM3mSQ+w9SX+9fWKVW7OLwhWzbAmzJygtjwn9PnT9Xt60ZN7Dg2Y2478dsswc\nVzsZ\r\n=VCwf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.36-renovate-non-major-c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc_1614662602051_0.4428681700680577","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.36":{"name":"@balena/jellyfish-sync","version":"5.0.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ab251d662d18b2b3a4e893acf4557596c856a01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.36.tgz","fileCount":24,"integrity":"sha512-tFogiBBqV2IOLCGAVUFrnpQE7mlgBSmTJgr7IyB7siSLSUSIFln/7F5pOtG4Zq43W8OGNzrh1U8ruqpZBPMiXw==","signatures":[{"sig":"MEUCIENHsMgtDjJkAlTs2uq1v3mh9cCK+AgoS+lm6hf7QshUAiEAlsii/TzOLI/so1tBmZD/xuTvTK7LQFvei9mcfdmc1PQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPcxwCRA9TVsSAnZWagAATVwP/2U2BlRJ5yQtG1ObB9Qv\nu/fj/9DNnlUXPNnu+zPFUI3MdTCFUUY2IzIJJ5OJpHhivReig83+19yVhQR0\npINCkTqJ93gqNoqST2C2ZSj3+Au6rMcDxQ8LIKJCVSiftCjOkfxRnklPZ2pk\nKzeECOH6V2lpiVozcLXI0HRdDXtxVvNmmIj4i2DkH7I5sjiXvke8tl9CwPuB\ng1fexxHawMwTTLGltqsjygVINz01OgnQC4OlvyTYFWdYhXzO6Ogpkz+SjU/6\napebm8mqjds/VMKf3k4FVgv4/agWv7RFwTRbZbcGls+93fAlHCQUFRlvCVTc\n4Ge6aOJcyO2r4if9YG44weRnEuJWEwA6UFx/UL2WQDuOL6frNWBl7VWhdrw4\nRz9ei6RIzUqH/3tIqQMZJ4VhFu4UBPO/XDBT4E26WGq95bcECQlH9uZcJFwh\nqhF/g9LucxJE1sHzH0Tpe1zV5iPz+Mztn1KZivG+v42SZUXVLU9Sce5w1uMU\nERylsW0aSN626djX5/Aiz47DWRXhPSao6BFxJBEOxRFw8LlaxciAIPvQDxKj\nKD7kJKpaHbO5A2ZHI0Mj48ZzVo8495qoEW/PGn/QIOSpxMupESfdOpCh58K5\n/9Nt33e0Xt3SX5ZjekBbm16mh4PN8k21FqmzGdyZGtHAgioOxa8UXQBEs5j4\naMym\r\n=pgHr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2db3bf1833de6cc0ca06d48343f9e96efa6a3ac3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.9","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.36_1614662767629_0.07837238433323157","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.37-renovate-non-major-a76c90408242bf4e541f153ba8848d50287bff6f":{"name":"@balena/jellyfish-sync","version":"5.0.37-renovate-non-major-a76c90408242bf4e541f153ba8848d50287bff6f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.37-renovate-non-major-a76c90408242bf4e541f153ba8848d50287bff6f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"49dca16b40b288edd03a630381d14e6827603daa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.37-renovate-non-major-a76c90408242bf4e541f153ba8848d50287bff6f.tgz","fileCount":24,"integrity":"sha512-8gK9SHG6W8peoJn0Dn6lklrX3ys1iztUsVUz8TTqoZrWWDMaiUAjmnDLmKwGfdZb62NYAxvjd2JgARNqaervMA==","signatures":[{"sig":"MEUCIFZQ6rTOzjxQyI2kjMGdF9nDX1BJ6Cfs40LOcAfzREPrAiEAxuLt/Z7Jt/N1vloNM1G5CScMYwKbiELCTVy2NuxNxFw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPrWLCRA9TVsSAnZWagAALKwP/34Hwn3H599sFWRoNNUF\nT9oTo7c1UFaPIti2tzbtSWMwULN8960fuG2/O335ARGk8QXh88HNUM2L9TAb\nDfwryuVld4X3XMyNt4hopELYEXIsZwsOeMFdb6+4qvqlexzfPnfTivyYekXJ\nAdrKZtCOPzp+U5a111mZ/4hZB6sVw7hW0ZWvi7FGL7/zMjdUX5WrNuKMFM4e\nIetYC8IcbKhaSypTBTy341bm7kTni41BFqye7DntenwXNmpenxah8nK0z96Y\nvhKBUaVtOJoD4TEOEvKnxZwJVaHZqNJv1wYSeudwv57du+o65sj1VJ6TZxgo\nM7ayKxi2FE//uwe1lCno8BUDloSdtaBLKLHLohNWmy106tUhLBHwCs3dl6mH\n1UlWeRRBCfjR9nu3l2doUqp6k8xsPI+dZzT1FY5MCxPktza0v536TCNAFwN4\n//VRHq/A1dbEMS9C1ioMizsTy56uzQv4guMqOoxi5Yx4L+4RBLkB5Z+Oruxk\nl4KImxbQSnydUGGddBT46uGXIZeE9akhHClOp+50wsclDCWiSC8vDhM1Gef+\nXFdxryNnWHVhffXvEYEOxpd9S5dKjHyRIFxvIamHiWSVtwcM4+7+TfkUrxg+\nzWDL+G+p2cqn4c5qEHpzF5arALBAkVnNY44ZJGg2Rg/DuU1iavh/Y3aCD4Lv\n48RX\r\n=erbd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a76c90408242bf4e541f153ba8848d50287bff6f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.10","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.37-renovate-non-major-a76c90408242bf4e541f153ba8848d50287bff6f_1614722443313_0.49703136840646267","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.37":{"name":"@balena/jellyfish-sync","version":"5.0.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"37da196498e883da8fcc1a27922fdb5bea514bd7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.37.tgz","fileCount":24,"integrity":"sha512-8Am+H4a42hYb8GimoKc+z7aDcF6ClQltapdDcZyvcrwetCB8UTWRqrwN8Bwzr7HUGnrl+VVVEYsGF4xG+k1hbw==","signatures":[{"sig":"MEQCIGqRs3MxVasXHecFe4X/3pksEF6BcrIEqFPM0eJSHuXOAiB0CjJdoGHQQ8VtxWuZNkeGfjNHRBUTrFnboW9jzmLzCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":144962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPrZGCRA9TVsSAnZWagAAjagP/2/aRP3Ngy7cQrKAR0K9\ncCRfcDl0YwNByXWtCmizsC+1VN7gg/1Tp9BXmR8hvolddAVnTaKVIWmW/Qkw\nyTTtr+Dq5g2MnDNXHmDaAz3XHaTXGrWU/iqHpIRD0/+bKbcIAJ+84xhLGhLY\nZfXBug4AX6iYoGV6OyMs1lbFyyooOWeqXjgYs1YqD5DJ2RGKEd4XcUD20gQH\nrwAbB8cYmvPdxO+jMjqpXaFl8Y50V4wGMmXjs5jAqv2DaHC/QufLbsEZ8iFK\n5fOpUFKEloBK/wONFiUypiF9vpngv2QeJd10/APrMkHKTjTMPVwYglwxK1xU\nMlAr1HHT/zXtK28DsQcBaGhXzYZi0hr9FzqF37NlCum6OCzcZ0SGg8TB5bNO\n8n9L5RwIMCJhTGrguLP4t4JN0trjJEz5h6XduRUqUuKRwc9hrIF2f5xgINof\nsNCzHbUJo5tcDbNbovA4T2BdJwzSZ+eb+8Y6a9rmI3N0PffnP4B01jB/KCO1\nq5L66ar8VB+XVs1BdbbVUw24TnvUAHjo/jwpGwHO1QGvCDiIX8S1EyhdIuaC\nSnlkXEMDVbCQp9S/85u/bU3MPPRTYalUoR4sXb/lZ730qmAPeqTezvheVvPa\n4fFIOGzEDzLhRWqsbr1HFRldMOG5eAs/NpHTyWDLTHE+/Sl/KTgct+1rjFdL\npbPi\r\n=1TGk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b3c93ce3bb46cd30e8ce46bedcdd9c18ed2bce4a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.10","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.37_1614722629997_0.8732616155003514","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.38-renovate-non-major-829677fdbfc758beb64f1a57dee91624ea904a3c":{"name":"@balena/jellyfish-sync","version":"5.0.38-renovate-non-major-829677fdbfc758beb64f1a57dee91624ea904a3c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.38-renovate-non-major-829677fdbfc758beb64f1a57dee91624ea904a3c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4d09413728771a1da9660838754ace79290ded00","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.38-renovate-non-major-829677fdbfc758beb64f1a57dee91624ea904a3c.tgz","fileCount":24,"integrity":"sha512-3vP6+1c0FxXmK/e+P24DVSCSPw9HZACAuI+eJhPtk+Q0fqJz5CrExzNeHH3UuiKYkmXOJZE23jOfT+I+kvQwTw==","signatures":[{"sig":"MEUCIQCHTsLY4bBYZbNAev/NWPu0rrreMWjkiet42uuHLyNOyQIgCx6CEbKBLd+0zrzcVQI3yF38E5ebsCrKsIX4JI9fwOY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145407,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVKTCRA9TVsSAnZWagAAkCQP/AvQGY0NaTK00J4eGjSa\nmYekQTgQo+KlfnGwSkVaPQUGMaSpeoCpYfyA9pjshkhN0VvBlRzlVIGDkD8W\nTXMdOpxsXHkECTEzMqOZRQtOOSS72pd55AfLGxACXDJgqU3Qu1Xv0ZSVEbrd\n5DNWhJhtsNMLbp5Ng9BrMwCyNdDyG/lgOzvaRpfUNHFnhRv5cKmUzB/M65J/\nPPqIaer2EFex23Ut7iU/gc3NCSOsJDWNTH06ZTr/rQuiCQ40HULwOePN9inU\nLtjIv5fzxvL/gHvXYBPKsaZxA8Ydj1jfzyWTiiRSn0Kn4V/QU2SMhyljOP9b\nCnp1qq7l91iR6uXmkQ5hCwMPcTpCcBjtzovgKMSHgBRero1zQfKE1IBEPA8d\nLCYEMmU4DqyR9w/aiPCG7oATgXQC3z4XkKIpt49rJqS9WeQs4R3HYNrZQqvI\n399emKN2854ojxkw8rUlityG6A1u/oCHuxxYKOHrRtCczBN+nQeSrjSu18wg\nv7/melfamgQrtVfsgE2sP8l7IsFsxfwNbMJcLYJPXpyXBkZY868XQEmWfeaT\nGH2fKWvvB/nyIJJSp/Vty87qa4Ox8zX6VtYRw07APM5+xy+hDVrhsz+w07G/\nIeKDnIgg4p53QG3oLLTvwj7rz8yR0B2v23mvS+zeMA26WtlpXsm34szK89br\nPwrp\r\n=x6iy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"829677fdbfc758beb64f1a57dee91624ea904a3c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.38-renovate-non-major-829677fdbfc758beb64f1a57dee91624ea904a3c_1615155858512_0.23652786418262983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.0.38":{"name":"@balena/jellyfish-sync","version":"5.0.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.0.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f78b6f0726e991ca4488b4aabadc16f71cda4f49","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.0.38.tgz","fileCount":24,"integrity":"sha512-9TDwjeZV5DElRkpDsZkmFs/ok6Cb8QBW0k+PrJSbnGkUGKc53IgmwufaYxwAl4HXUZLo2yWbNBHmOOlRtuwzgw==","signatures":[{"sig":"MEQCIGBzLHNFvJ4AVHEFNvYsoiTZF7G5FMCOzjGj6xLP7r/LAiAEHZiNrutqz8SbP+2ZXn/FNPHio+mi7cbYM6+G7F7TxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":145347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRVN4CRA9TVsSAnZWagAAvY4QAIpr41IkRthYY7M/W/hP\nb3r1f6hdxzK7EgSNqltSH3DEzVhfga5eZTb73JLgVOpjate3Yg7Ut4PqjFj9\n/sX6qnPN9E9C4VPckC1MczQC9Prr8xDK9vZ5VKNiH1pqUfVtV233VDr2YFXD\nzqJLGFRq0lyJh/ODnDqW7BVZlj0YV9j6lyot+Bsr0cYBQ9hysuRdaklIGk1I\nl2HkRF2Gic0ZT9BchC6ghH0d2homloaoSYzbaycUa6FMQ/WGpuEHe+6+84h2\njiKqqDC0VQzEcb8ALKyUzDlDzx6RjFH4EX9XsMoItGvzvSqVjkjMirxuI6IR\ntZBPLDlRtn1dmrBDSS22I/jNswfbsDmKK7hlyJAcQF9uc4tD2aFHVyUOted9\ngGf5kGqsooMoYmc1Fmp6BovRLJP3V65rGJAF9c4+i7tRBJPlNMnDzrcZvMN6\nxx9IQy1p52BQWzcN3wM9cy7FTWWWwxFA1abIsxcCM5MYHsZDmxaLAtzma4HQ\nGnGwAOywBJb4k5kakRVhnrNrTTsy6iU7wo+WnSP8lkq9wfde6t7XJgWkTmnd\n6N5Lf38WiuA0ssBu7oN4WbtIT+49JBhpcQDBLcOUfvIp7LkHqs4K5D56tf1u\n94HZZSyveiZptKQHCE9gC9C8UiejIzVaev891HTNYx4YBeGB0wBNhr02Kl9i\n1dZi\r\n=tmbj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1ca01eed5d47d8fb5e45d89bb9e7bc8636bd57d2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.0.38_1615156087867_0.2066290467783054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.1.0-sync-upsertelement-jsonpatch-2c8f4332cd8af3851252eb7542704fa8acb20d11":{"name":"@balena/jellyfish-sync","version":"5.1.0-sync-upsertelement-jsonpatch-2c8f4332cd8af3851252eb7542704fa8acb20d11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.1.0-sync-upsertelement-jsonpatch-2c8f4332cd8af3851252eb7542704fa8acb20d11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0994b87b169cdbd22bd1b8f662a8849a07e4553","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.1.0-sync-upsertelement-jsonpatch-2c8f4332cd8af3851252eb7542704fa8acb20d11.tgz","fileCount":24,"integrity":"sha512-NF58WU90hFrd0QuwbmUsoKsH8ek4M3XQ1mKGtXGXgr4N1797gPW3J0kctNCMOWaHZEODSVzNTk9QemWBWJIKZA==","signatures":[{"sig":"MEUCICcew6/z544hGrc+tms4fz3IBhGZi3GHL8RK0uCjBd0SAiEAhreedsnqaz42igd3xWa8aA0MDtkVSo2b5wuRsO4C9WU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgRz8VCRA9TVsSAnZWagAAg10QAIRfP3hazgfRpXXXEUJi\ncxkPWdp4PRnjkfQVaA3iiWh0cZKD86OB1nESVCJVYZaow0xQwlejLS2ghQ66\nows++J/kHOGNuRe7z6hgE65KQLLFDLPNS0wbY8KWFYC9lOJQ5HwIv65Z3WTN\n4goWJt1I7CNaxazywCRTl7PB6h9xDKBOatnHw1v6wGSMspdGnMTI7w2qeu/y\nrYwK3+2G1hSqnVi9h8H8J5iZqo4qFixKssHS7xUOYz/nYH3XIg5vD6gcmeRo\nV5lw50EWDkp1zdBoQ1HrkLOBlU0jmxqp9flYVSZyVV+VYv5XwJEwso9HPfm1\n9WXFmkTd7NCgeeGke6L8Ra4iE78MDHGDqf+Xhll8SHdNFG7uoZp5qyJZbJue\nMYelefDbN3rnXWGWTxc7I2nO3PLclNg/7DjnnmcGrWEFvPikKBpaYcfFx2nl\nOR08f1yePNDbdmcthUf6FdCyiKF+0X/cUxPewSpNCzYSdm46n8y6bLabjPLM\n/VLBSLBJLQQqlT1Wf2PG247kIRXzcxY6SRGqms+XciTV6IzdytEnc/zh775L\nTqmZKHr2hexNEML6eHO4t0fbHwjALtEzo9Htwgnv1EvU3woh/y400RQW+4bf\nlRvIuXkFKN1gowM8KNnvwsgAZawDOMeLAywJmHTGg6etsuoAfIPHo6Ym/hE5\n6GGx\r\n=j1YI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2c8f4332cd8af3851252eb7542704fa8acb20d11","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.1.0-sync-upsertelement-jsonpatch-2c8f4332cd8af3851252eb7542704fa8acb20d11_1615281941336_0.39786606221140053","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.1.0-sync-upsertelement-jsonpatch-720691c0ea68d25677b6162ee16cbdbd4fa7a5f4":{"name":"@balena/jellyfish-sync","version":"5.1.0-sync-upsertelement-jsonpatch-720691c0ea68d25677b6162ee16cbdbd4fa7a5f4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.1.0-sync-upsertelement-jsonpatch-720691c0ea68d25677b6162ee16cbdbd4fa7a5f4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d9658c576a096b9a59e7b0aef3578c6fe405186c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.1.0-sync-upsertelement-jsonpatch-720691c0ea68d25677b6162ee16cbdbd4fa7a5f4.tgz","fileCount":24,"integrity":"sha512-84+EsgJYgiAaUsBvgIRgSxm4p7iHj5ehNcFJIUYZNup5F0HY9BGuw6L8BpzkmMAMNxchPEufhzlKJUmi8hJHtw==","signatures":[{"sig":"MEYCIQCfSAPWrMXMF4dhTgUq41bPAd3tCdXSfnCzvlcLiI0n6AIhAO06hOOUQBCaPb7vaxNNLujY6Nc0x3AFJ9DOUOMBXZWP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR0AVCRA9TVsSAnZWagAAQuwP/ieb5JHdh+PYuk3lQLmK\n09fAFSgbZG2AmBjWTr7f9ZOj+z4/llYRtI57defRY3o8uH+EJH+pY7rE1yS8\n+UvyCtdmRsGwahyIXfyuRZvpn42/pA1zEDIRAk4bFDgrhdp5MOQNPOgoslgE\naYkg1Osrgw4C6TxsJQNRX+bha2ZU3RNTGEbrjfCO0xlxFaA3ENsxSZ6O3Sxn\nKXkeGvSQkVIf8KVOrM/xnb7saek9N13NxyZtVD3z2J40eMbrnLVopE7v/ZjZ\nrM5CfVkYpDkp9c7iZlHiUpaTrJPxky90kOp4jWAlEE5Jyh3H1tjGB24cvZy6\n3AdkD22+vk/s5vjGlED4KELjnnlTonVMx6DjVFz9KDn34BFc6xSSh9bK+wTi\nN5IFNVxCTRsL3cnfQcUH00gKNLEScFYBj6wLCRZRHu86y+riMqemiXNSQEHp\nQXtMjEjedC75PPjAJN6FLlp1vfiojKDZog6xVHSyyilXsaUtxcgMpbIAifU4\nTMc2Wk33r6j3cYMI6qWz5l9BbBq28ayqAW2Pqyh5bBEg7BW9dHvxN1WrKUu4\nLSCZHBDQOqm9XZdSrko3T8RijCrD5N53/RbQGIbXRmRgYcpWwvzyQGkcIN28\nU455KOE97cjqp0+sDfesqTLlIM7CD5YRm7HjX/IW8Mkf5tAOG47L9Udp0CuY\nIdP8\r\n=7jtO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"720691c0ea68d25677b6162ee16cbdbd4fa7a5f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.1.0-sync-upsertelement-jsonpatch-720691c0ea68d25677b6162ee16cbdbd4fa7a5f4_1615282197164_0.8230135756686945","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.1.0":{"name":"@balena/jellyfish-sync","version":"5.1.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93ade300bfe8a6513755dc5177d462c2203b4bea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.1.0.tgz","fileCount":24,"integrity":"sha512-D+GdAzwyodIE0Orp9tjWY7pkk4v7T3uSzOAbBWOa5XnEgE24YAHmHVGmBxMBBdwWfZr93sO0JOv37l4KZQazGg==","signatures":[{"sig":"MEYCIQDSultARxr1k3zH9PKxDxft01xocuRjr4WldM7m7GXccAIhAJlabHHN6B6aCO7qlcOlQaUXLbydQuSBVNzSnNyj7uXQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":147607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR0KSCRA9TVsSAnZWagAAjVgP+QCpPzro9pS9ZiF37sGf\nU+nK1LTTXAV4U7f913l18aeJnGh7pxuVGosFgPHi99gMazJhGYTRLNR4HOa/\nXE2X8uvu1L1MSTbMHFonhmmVkOzZbgnd37jFek+98PgcB1qODrN5P+G7j8eL\nk1ZTNvgkLYFDr4DgwMFT/eUF8ZSqRqO2P5Xa+P2q/c8EPZqHhi1sjs8fHTfQ\n5GYz3lsWTtynGf7IWlLwN32Gg2vbNSoKJWw5lf6/+AjOuj1pPD8sJVIluJL6\n9G2yF5kReiEyivZMKoKclKmTOtGatjDpXCFyia365RcyYCfKzg5MziFKjYlj\nR/f66sYa7NVFAw/I4vfNsUQEn53KtC7mAxsSx4pG5GrHVExzl4llsOhe/kRm\n1kxZV4EU3zfcEqug6zcv6c6WuL/L35VpnMhSvleWErvVj0IOrXBwjPxqSfvn\n0wtsPPTyWDZYaH13IOVKTt5gCgSdIAeBi6rarFCMnyaWrz9d7fXYZ5OS9mTP\nZz9JsIHPQlLXfshQ4XfJWmkx/k1f9Q3D4MDLcx3baYBY4fdZNzxOPhUGYvEh\nRnyYCOm/jXF7Rw7UCWXwu81q9kQWYXHccETSZ2V1BUN4IRa/EMHtsyjby6sD\nWM4KJnZqO6ItKdtc7KUNDJ5Ju/os48gfIV6EF+HIYi3sVdvGDzUB84mkRnRT\njjyl\r\n=bXOw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0371e56799509421ea7f4508e71c361d213e8ce1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.1.0_1615282834088_0.5176715845268667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.0-pipeline-importcards-jsonpatch-4966443b29c634ccd134eb2f48bf8cbb384a8160":{"name":"@balena/jellyfish-sync","version":"5.2.0-pipeline-importcards-jsonpatch-4966443b29c634ccd134eb2f48bf8cbb384a8160","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.0-pipeline-importcards-jsonpatch-4966443b29c634ccd134eb2f48bf8cbb384a8160","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a559d3b3cff2b77754f00bdb1b3095666591ef5a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.0-pipeline-importcards-jsonpatch-4966443b29c634ccd134eb2f48bf8cbb384a8160.tgz","fileCount":25,"integrity":"sha512-pn/2MPKI+Lvi634Uk4+5zE69arQ/fkrWzjpvWzyK0DykQId3jaSU1/1PsPAg8cRypK6BOr7xTszyDXJbbVf1XQ==","signatures":[{"sig":"MEYCIQDCmvqbP5Tjh2xwgJ2od4C7vp6vGx+9NjmkmTUYIgD5tAIhAK141nV00TodGVPT0FwNTvNSKiaXT0EpvhLQ6a4E7vqr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150894,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR1AFCRA9TVsSAnZWagAAAhwP/jpYqljHcVL0g/Ha+DBK\naUvtc9AGVfSqXYPzORqgubxv6z3QQl+sgJzKZWIIp8XNKZbJElleUsI8TjYn\nNsFG1qQ6JVIv+il/bOniU+KANgxqEmXQk2EPLl2ubJhZyGVyrxzxEqQwa1Xb\nElRExZm92pg8stHYZj25Hs0IvFhttHw4On01/TqivfKjAHfEo6OCn/etnj+u\n1MK0cq+O87LLhq4qYq3YNn0WuIm2x/Dus5wDfkbo9CP0u/T73NaMFXoYgeoV\n0UMlvr4unuZlGEX1J8ZxAF6e2q7FxuI3S0Qp4DVvcszbSaAbw5CdQ3tch8i/\nC3AQ2wnksy43Gg5L/Q21ATHYjRWhE7cCeSEiaYdVmyL2ooOeV8q4R/ygJtNB\nodO0yhc3cD5CGR3l+bjn24sYzS4zY+TryGUKdcYVPSnyGVjZsMZvW5wuHZPl\nwsjtEga0i0l521SOMW6ZB1U4vZEuEXGDdyJfPnPMuZ1Rn9VWRtNUlTY+0Hor\nawOwO47AMoZ+1DtDQDSYrxk6DX5MLVEVqQpoA6zB771XZIF8b6EDqOVlyU/a\nVn0Wgo3QvlNYkgKw8mS+q7s9UefoUU9Fr7+kXR4PyIM0T1Rj2xE4OWJ+3Iy8\nrXhMwLyl1yPZQuHDnPG3CP3V9n/HmKmMfyumVzrGBQ2cnZOfmJaMpoaNrVp/\nwmmu\r\n=7ffB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4966443b29c634ccd134eb2f48bf8cbb384a8160","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.0-pipeline-importcards-jsonpatch-4966443b29c634ccd134eb2f48bf8cbb384a8160_1615286277037_0.26072954072037646","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.0-pipeline-importcards-jsonpatch-386f3cb7248ad0b9956d17bd3fac54947f0bbcaf":{"name":"@balena/jellyfish-sync","version":"5.2.0-pipeline-importcards-jsonpatch-386f3cb7248ad0b9956d17bd3fac54947f0bbcaf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.0-pipeline-importcards-jsonpatch-386f3cb7248ad0b9956d17bd3fac54947f0bbcaf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"08d287dbe5b07cd7b032cc1971ca1ef62170074a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.0-pipeline-importcards-jsonpatch-386f3cb7248ad0b9956d17bd3fac54947f0bbcaf.tgz","fileCount":25,"integrity":"sha512-obecp6/yu0w+TL8K9W25yTqmi/euMKvtnE7vnzm4K/QFKehS7NyFp2+VrGXvnxQTdM8xM9BznX1me8AfDoybHw==","signatures":[{"sig":"MEQCIAKG26RDqEaTOUyt06DMxexuKiYhHpK0XlZJhY0ImOyZAiB0f+tdm0jv/5aPSi5X8JvjZKvHaMLEDmUBu0DlmRSAfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151341,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR4oHCRA9TVsSAnZWagAAuRgP/A+Ua/g3gy6sob3SnZFW\nlZApcbAi/OvdGWE4QgWQ2G/8c+OFr7Vc8tFX53scsZuZ5HePSCJaUZbbHKqd\nsVS85LhAXg46Ac6+3udWFDO8jSBygjeYeapNXuaE+h3ITY/aNYdGnZsmICUp\nttQacIjz+PRnUZYx7R+YLDnL0XiKX+CIuALtikRE5/vnAjODNq3HFvBEhzwG\nsBDi0Ia8GP83WblwbOVfdtJb97cPgn8QRf6m6o3S2ORHOpW34rbSmKUFEwif\n8gwnyv97/Tp0IHITUc7eVXPkPUoLb7Ojaadx11kIGJ+Wm/e2xtPW1sj+NeQs\n2xqOOMx3MvAP+0KDOuwWZdz4KoHT+HCK6Ts4Yv5fld44sbehibJBb6jeRSm3\n+8XmNjDn1P5jg/+jq/NHd85qeW38IgQy0DEvqcHHS1zXw/1Dwvs7FenS3Zj7\nWh8pzOj+2Kz1MPvz/WEM8oPFZeMkCfGsqXhCSA7NtZ3JQR7ymK9/8OlczX8p\nHUQVBTwku2IX8Iplbqotpdl23larG4STLEdk1BXh6FkgLboEH09NZ0kc1dZW\nNpWK1/uT/1fdv4b6p9hVBMHWWB/vULvrlGlrkiyb7AIgutXsufBnTtU3ib4r\nnvOsSWq056XEVqWEFc2ef0Om4rX6Tw9jZdHOe3g8GmSVYQqSZJqSBdNiAvhJ\nS8ML\r\n=a55U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"386f3cb7248ad0b9956d17bd3fac54947f0bbcaf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.0-pipeline-importcards-jsonpatch-386f3cb7248ad0b9956d17bd3fac54947f0bbcaf_1615301127031_0.5677940434370807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.0-pipeline-importcards-jsonpatch-27488abdbcdd22506bf84bfa4433c579ba7924e7":{"name":"@balena/jellyfish-sync","version":"5.2.0-pipeline-importcards-jsonpatch-27488abdbcdd22506bf84bfa4433c579ba7924e7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.0-pipeline-importcards-jsonpatch-27488abdbcdd22506bf84bfa4433c579ba7924e7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ab0ded003288a8e71eba7ba800eda89049ce8b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.0-pipeline-importcards-jsonpatch-27488abdbcdd22506bf84bfa4433c579ba7924e7.tgz","fileCount":25,"integrity":"sha512-HJVnJiygz9q2/4H8dkRIdAoTgmpPJKHOnrqQPfXm8ZIPVcdATroJaUWP3x38mcVPEDrcmPsXEQ6t/IWsUa8frg==","signatures":[{"sig":"MEQCIFizHu35BbwlcxvBk/ilaoY0F4M5LHPc14n9jAxh9N8MAiBJoS1Jj8WPDI/CXlZZoSUnm6YvN/rbdE2yjbR4s2Et1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR4z2CRA9TVsSAnZWagAAZ2AP/R9LHUvHLtYSqLhF6NNp\nXIn84aTqLQir3lie8P1sHcylSligx6KePURr2H5SOir6q//0ZtiwaLQTmkxt\nplgrCK8itcsb7hu2QYwJHkjqx+QlfWoWVVwrcKkIrT753bzaPwSwm6dxdDdf\nyK81KfznUBEnf75hUvg+sONtrZbf9t9YttSpXqinQSD2Q0LY2a2v/8eNQjoa\n8VmWY4xTV19333G0BkGC/4v0YErO7bkJC7x75g/w6VzjLejLEXVHrbpTwuxH\nLzwsUw9vDeNTZnKv3ur/4G2dfYMOahYp70g+FRCzF243/7cbK5Z70UG/78yF\nXOMdQpbs4nMEEap87w2jfV7TnHAYHqO8lO+zc3Lf6welEIl0ybrUfXLO0ztZ\nyoZNi1rNsAq7nkaXGokjxnA7zMjPDJK6I+p1x51wffTJrBYaNZ5cBIqXRN07\nEo8U5Myfp3x4v2vem5cI4/XhC6V91VOGlP2oNMDmKL4619CqErZ+n4EpY3rI\n1r9qjqa5zs/ScAXYO6jFKq3A59WuNZRx6QTtU9Z+/kOydG4s18pYM1qQq/AN\nnRfj7/ZcpGEyFboIueOMyQczosNC9cRSaw/jzs6HTFwHG91dLCrlfhBD+9Eg\n+PHXEwLShmNQTppu0Oxianx0LrTbJTR98vk9Pt4kjBAMjeP/1hDfw1Rh36AM\nVPNg\r\n=TBLO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"27488abdbcdd22506bf84bfa4433c579ba7924e7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.0-pipeline-importcards-jsonpatch-27488abdbcdd22506bf84bfa4433c579ba7924e7_1615301878290_0.8347799366389015","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.0":{"name":"@balena/jellyfish-sync","version":"5.2.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce6f2f2a50f5608aa1179cf8a870f972d8005847","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.0.tgz","fileCount":25,"integrity":"sha512-QDb3JMzTvjn9ju1eEsybCt9PIx9wVA9V0IIklUpLvKVcF6XM/bw0M7OqZjFkId/Iy+AR19mo3dAhda1zO0Desg==","signatures":[{"sig":"MEYCIQCuVbdHEtlQZ3Unsn055hws9l7TOmkP2dbO1NlzNmtpMQIhAK+A0xzsL8AKav78AWt43sJgUF++x/xW6W+a/BeVDKIo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151283,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgR68ICRA9TVsSAnZWagAAmcIP/3DFa8WctkO9wWfhKnrE\nC/Iud98Xf964uI7cvfNU8+thCxvKeOeRoAQBmvhtfUQWwNRY9lsdfegmNYVV\nJoyQb6rW84LU7vT+Kwc4ltgMDChd2MsOBPaH/x51WzlZMyQm5ofGdEc4+OWS\nNyADQ/CA/HdAxIj89gPkdKxv3DaWzcfv7WDUogV8QvHTNn6pCVvHK4ojV+0o\nvJu3eX8eCrDn8HPgzDYkNFquJm5tMsOFMCttwqo0P33Oh02UhdK/PJ0RYQHT\nMNq4IxiM6Beh3dO6nMkqcY2by/DdJDs4rmsBkjZ8dqgZWcfzmkNQ9p+JfmIZ\nE6LVup0z7VKnu4Y5TM0LzYjO1GODoylJovImcdUeA7HSAJffkkFGeyFeWJAs\nv1iGMhazxRNUSRsinubJNI7udr1T7UZy0cL+W30HjBpUzWHSQTH2dGOGGvdG\nH2UeTZnm7DsIJGeU/aNEcv44XyGLh5ufjm9Udwdw7AuJN6lfp/KSo+bjxM5b\nccNcz5AputpPRoW0XitgivsbbStiFiu41Wv25WJxegXnb/O4jGN/Iu8Fw8Gt\natR8XoVRG2smFqYWJFvMIxaACr/hfr7By9qL3peIFtIXWnVMIttzNdzLogif\naJqIJNuwIkNBGAUEsQ4Rr5tO6RkTiXQUIihbvQMbyuHh5/DJyZM9ysTersK+\nNTO+\r\n=fxMe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5a28640b8ee4de522f7d2bb372e1950f22315101","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.42","@balena/jellyfish-metrics":"^0.1.108"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.1.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.0_1615310599389_0.6273784877745749","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.1-renovate-non-major-c28d2392fbc9a51dc647dcc33d8881b6ecbef909":{"name":"@balena/jellyfish-sync","version":"5.2.1-renovate-non-major-c28d2392fbc9a51dc647dcc33d8881b6ecbef909","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.1-renovate-non-major-c28d2392fbc9a51dc647dcc33d8881b6ecbef909","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"04696fd93c5eb7b141f1869db78990411d741cde","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.1-renovate-non-major-c28d2392fbc9a51dc647dcc33d8881b6ecbef909.tgz","fileCount":25,"integrity":"sha512-6tDnl7W/X6tGpl3BACpflgt2HEKIclZOtntYfHB4RFhGoPeBMkW/3XBglpffjL8Opq7F0ImRNpjr511OzcQRqw==","signatures":[{"sig":"MEYCIQD5wkMki9KsbGSH+NNjUp3JOnaFvEg0dmlqeiibZVEbKgIhANphKPfsWE6wndnnAcn3gRXrtt+jCIl26Q2Xqxwz1Ca1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151690,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSIm3CRA9TVsSAnZWagAAQ3UQAI6AofjAFOkLDbdi8By6\nw7Cu5QTK7IjnPz7oUflJT9NO7CHvvEcM6xDLUJn7eNyz7CT6rmDujM/VnL1e\nQE/i7RgEW2Kjx7RzjRAbHfYCbdeSQ3aHZjwmN5ZmxkrQWDHApHY1BHzYsRi7\nL/IKu58znsnT9fnisuY+GW/HwderU+rFw9RYRkJlYlfmWlX86+cBMJ9MP6zX\nhcoGRZ44hVu+j2KDZXApwJ+EKP0WMFu88cTaoX+W3QmM6Lsm2XbKCO+j8OUg\nRQWgO8D7VKx7kwHaKx5iM13bsbaC6Ymy8CsivLRwFNHUjf4dABUl5Nychg3F\nFYjq06+cgWBv2AUuQoeLK47cVURy8uzMb10IBNXGmCpMwbF7RwcqI/femzqq\n3dg/joABEfJm912fQt1kjQJ2B7/5qacb/17MSYomC7bHWEyNUCZpSfH6G4ge\nfuC15fHHNcdNZcZiGy4XMK7pUaJ6kBDh/D8tntgEwIIVkHZ/zVcmelwxAK19\nQQDNFvSPaQ96/RvZWfTnTitRG0EfVAWjNcivHBPhSG8Yxl79VbzAQbTp+/Xc\n7ctwSMx+6hTs2dio58GzdICRZd0V44L9OHp1OZBv/WSek0uXNWfWy1jvBQvY\n43hz9ZUj9VNeFShZ2/HYZaLpoTSjIK7dk+lyIpTL0wsA6ksvH3wjMm1pPp5e\n5GNp\r\n=XtzK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c28d2392fbc9a51dc647dcc33d8881b6ecbef909","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.43","@balena/jellyfish-metrics":"^0.1.109"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.1-renovate-non-major-c28d2392fbc9a51dc647dcc33d8881b6ecbef909_1615366583283_0.38846813145854764","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.1":{"name":"@balena/jellyfish-sync","version":"5.2.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f8dd7edf91c2e0128f33b955fec41c6107f5983","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.1.tgz","fileCount":25,"integrity":"sha512-h3IQBJ3IjctEI8oiaU0U1Zxi01N9nfIDGbejsWW2g1ZJgeCNuW+8DDEO1utgOOqyo02LSvMmP7G02GVVwTQBYg==","signatures":[{"sig":"MEUCIBszYK45+qcARYNVS92ZKkNGvkeCr/SH73Y5r7PlR7GWAiEA0Af8mumJExDkwZhpfiGki14QZbEWlz0oWKopxnHheF0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSIp0CRA9TVsSAnZWagAARgcP/RwLch6Vg+ElLtqjGyaS\nwHyMc11ugN3Md86Ow5PnJHOBD33YCYmQqZMsredX+rZE9wjjHIKnUiAvXY4A\nqJQYWq/YuW0JsIlCKUkrlvs820JEw9Bb+Ql9ILQ3DHlhIgLHLN1Z6C2UKRmz\naCvN4a5q/wKuxFaaPeY5OkzTtu/OFwBVuO9OFqCMl2roaZ1Y969wqUC0wJRj\nvwVEaiSKv19Y2bO8ISWY/oE8WkNxez4bsJCkjWqAyhTVCRNlpuLa6/vyJDNS\nLIkJQHbHgaEnjoGiJSBegkzdqSElz0wl/cvTAkLUX8uKI87jcJMSG8Mf9/CT\ntROww4+1Rvev+a9YetwcDSdY0p+Fiab45o05pNv0BzHQxTGnVLEP/jFkr5qX\nvg4XlJmINasdIbf8DE+x6qXhks97gnlGwTGkySXHUhO5xxXxgVp5zXO4htSU\nLv0c5l3upDxe4pwJVsejvU7KDw/cIMdRSVjr9icORaJwDtTb1y7ia69eiL1I\nLjO9PrkCEoXWbEvLIoDHOVg0wtIQto3lyUUvVQRXAhUkhAh6Lq9TsS0Zgwws\nT9+6MJBnz2ktVrLHJps65yR+uh2Uu+8CGuGt2nytRXcUfisQ+nuARRWuxpp3\nSqPZ63ktFX96uRg7fI1Iyyeoet4mib5nqyzuY3pLiiu+NUjSWYIYB3o4Tu7J\nV16g\r\n=NA02\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"30102891acc787b0515bb4627fc0ae3ed7926f2f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.43","@balena/jellyfish-metrics":"^0.1.109"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.1_1615366771953_0.926780840177003","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.2-renovate-non-major-66cae02c9c33f71276110628962cdfd9792c3c3f":{"name":"@balena/jellyfish-sync","version":"5.2.2-renovate-non-major-66cae02c9c33f71276110628962cdfd9792c3c3f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.2-renovate-non-major-66cae02c9c33f71276110628962cdfd9792c3c3f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c5bff381144c15616b748555a3107068bb5eef5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.2-renovate-non-major-66cae02c9c33f71276110628962cdfd9792c3c3f.tgz","fileCount":25,"integrity":"sha512-C1V6QkzJJ23S53YszQ6Ht3sFDvFTrRLJFxRxt4/ixd0jnA3GKeynvlCBDzDZVEeKIlXbmkfFb3do9nTWkQ0nAA==","signatures":[{"sig":"MEUCIQDNBVqYNcXvRjaYOF8W/oHXSQ1bJpxJUigD5cwUOi8KbgIgLQ9/DIgh8bIYMAe+vrRRu8nFYL8aZhUNidph9wpSCko=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSKKiCRA9TVsSAnZWagAAy/IP+QF2nwbNiEu1yBNPckmY\nwk+QsloKxFovAj5HQ32+brR6JALIruiiSCVcw02+zQtQm//0Lm4lUqw1Go3w\nZEvBKRBOxAme53Udr2M5G8/5v/NOwJH8EfpQ4OcVRM1MvEZExPfjzXLyhZrA\nSs6ki6feydZu2XyfvZqCr669UbcHxmii5gtFcGfWrfcGBaRPJfMr5mNKhF7W\nI84k50pftyPTmUhJXUKPKXzTQ+53f4uz0DY3PD4eAoInva+47S4vG2d/0x+n\nQLXGu9BjPIsUkesrekqz179kHG2p1KO7xq610Thxl7BnAxcdSnZ7jCZbUu0I\nrp4PuweKKEib5DkXG4x7mz/ad8xh913kMqX+Uj5eN+VAOYhHB0+VuM1gpGNM\n56L+ASA0T/rV4oUJ3gCCmcTxR0StFMn59Z20DETcA+weoYoZiI25jbl/7EoQ\n9kr4ueBIQu4J3YjIdNHUD6lzX6iu9q0UoXWSGZeEwWFqK7GpwohyNCERZgUV\nygevu2e/j6t0zWWLQ1MrQDqtZXrMAF2ce54nj1Kccx84uTdfi81Ximv0y0is\nRIxRnq8g2jJDaM2qAPooF0Tg6bskZrA1hC8TJAPNalqsJ0fRSaRGz+zMVPUm\nwIwoCNNzDh1QDyS0qMr2LWj9WlGS8gluphjraB0D0VXM3gtGciGag1WeWoYb\np2yo\r\n=+nFu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"66cae02c9c33f71276110628962cdfd9792c3c3f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.43","@balena/jellyfish-metrics":"^0.1.110"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.2-renovate-non-major-66cae02c9c33f71276110628962cdfd9792c3c3f_1615372962366_0.4183910649678688","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.2":{"name":"@balena/jellyfish-sync","version":"5.2.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e5345759d1f685ef0fdce35e370c37f26d16ccd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.2.tgz","fileCount":25,"integrity":"sha512-DxPI+nd1kdceRrWR2BZV2Wqu91+3YCrriXJ0Ie49sGbFbABNIMlTB5hIXLmf1HeFR5eniJ2JO6yKONATzy9AHA==","signatures":[{"sig":"MEUCIQDPdQRvdlYYLDnD88w981Oj0QYxLy0f6c0iVK0KuD1hsAIgCHVihRyvnKgwPHMpXefB8Ayai7n3ebXdQhe7KXD1p2k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSKNTCRA9TVsSAnZWagAAQyIP/iZBD4skqmrZX1jLLRiZ\nTxq8T4LWA1NAca5E4HYpEAhA2G+VscdU2rpKrsEjMP2o2cTCi3cRvCxmRJSa\n6UdQOs3e1+R9rCltWkO0QFjvHKgL3/SreRBF2sQPIgxTIJXTfOrFcfqWupNT\nHprH+UgOrTjRftriq7Nf8M8XTmudn+maFhbadvI9LCZxxfnUGR43rrQB/MKv\nbalT3iS84jyotacBXriNnci8E+F9wi3uAPWIRN+MA3VVe8rhljBTN8aHyUeu\nB1B9Um1kOHDUFTGT3dsk4GNex9pGDDzh+n0N1cnbg6ERFOpll2QtP+yw2vjA\na9wWSMiXAzOpaa/Z3OnDXtNClasIrQ2FaDfIFDO1q+nVQnv9nXRplauVG4mX\nlssENjwqHS4V1f8pNLcBWms/WxiCvm5Mtbim1YETF60fesbRolnQfn2j2GBg\n2pwNsGMQziQ+mlDB8fGA0gk1DJang2wKsLF5gAr3bO77fLusvA2vr1iRYeDc\nXdF3vZfuAQsYwVCJ7QZexG5sUXssWcpHjomRVWzF6lLYq/NUsJaw4mITdn3r\nxG8eIU2ztryAcL9m2ZNENPZerxvo+T4kvHC+TpvV+mTCF15vlLf4nAiWhk+c\n0umQo2PUy3a9WLlZieJ35Tk7FNTz/NReHiYoAmuDXhOrSxRKR4YBi5tWca1y\nnFGn\r\n=fRGy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c1c24c1146e34d726045ad56d1fa3a9ffc870215","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.43","@balena/jellyfish-metrics":"^0.1.110"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.2_1615373139439_0.7326927001160317","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.3-renovate-non-major-5af607f799004b73ae3393531139c353e6272e91":{"name":"@balena/jellyfish-sync","version":"5.2.3-renovate-non-major-5af607f799004b73ae3393531139c353e6272e91","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.3-renovate-non-major-5af607f799004b73ae3393531139c353e6272e91","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1380f87973204cb4e985b7870242cadf1438e65f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.3-renovate-non-major-5af607f799004b73ae3393531139c353e6272e91.tgz","fileCount":25,"integrity":"sha512-deD1xNhv8uIzh7EAJvYZVSLiHIBcQP+qz4D6tw6+jwP7K2lD7itKoqL5P6CeEl1sfnyEtoWLjd1zfKPIvc4lnQ==","signatures":[{"sig":"MEUCIGu22d+w5XJ8z1cRz0bVK2Hgr1Fejbtb+HjlXDnDCi9MAiEAhGLtMvft8WTBa5ybaXpeDFBRVt1YHaPcTt3fyvMhqJI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152462,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSXHBCRA9TVsSAnZWagAA1YwP/2rYz+wsOMqoIeUadJws\nfj2tleqp7udufJsJnBLPQ5ZhXfJcAU0K3AkZMh4ZCFskhQGh+YPpkHJtjbnV\nQ0VjpLwTvT4qrDt658OitIChPrOiGjOovqzQENZXPgrof8Pc7E4mjUVoRfzy\n22gSwJr5qWWzJgPZd/fPPdt7vNLxnn6WE5xMHiyk99BLvFyhPFDLwCXZXqE4\nWrNj0Zg8L/lZ5KcK4UsFE8l+HJb6dXSm6YTWsCDsvFRNoB6AGLLTOVUGZSdq\nV8XkYI+ys/k/Qvcy6qtkUnXQ2anPVCb/lnofsFSRIV7u52y8Pn38R7b7CFrR\noe4eBACkYEI2ayVkI5skwgO5apLHttctcc2/zCOa16kcEGmDeW6rlf2rKNJd\nBPzJyuzw9Qv8BvQEHUy2Smv4Lqb2LTxMBzFrvIx3162dfVBDPIpi2pIuRBmN\npnPutcb92t71IF/fbsvUZKYcImQ7n4lQqDUutMjo6w4uIZLkiYzkh1HIiKg/\n6Po+++icaiD3C2GC7aL+mN4RCJxBg4VzGC+qcmMsWmuVfrfIwdPOMYScvPuP\nrRroGRlx1Hr1OsJvDKz+sQ6rVDPLOqmpG71MimfeQxnMOLUrKyakudgaQw8c\nFCfA66DCqWCi537vvFdo64wVvTkyLp/zNJsLJBUIFP8s7bw4FRf9PBzEBZu2\nWUoM\r\n=dJjc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5af607f799004b73ae3393531139c353e6272e91","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.44","@balena/jellyfish-metrics":"^0.1.111"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.3-renovate-non-major-5af607f799004b73ae3393531139c353e6272e91_1615425984685_0.7650205591678239","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.3":{"name":"@balena/jellyfish-sync","version":"5.2.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f258f6f471209e333f50d41dc891d0c1f9deab12","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.3.tgz","fileCount":25,"integrity":"sha512-iEwUYhYqwkX82iQDHMY3X6jfx047Nf2L/HPpT/lR56yA1JY2sqhPeiBv+QoE/Y5VqXQf0/nmLJOo0O52VmqxcA==","signatures":[{"sig":"MEQCIEumcxJZXqzImoBvyax8SPKH2G2afrDUXYLukVvqT4W3AiBZiOzpNCx5V6COlS0L5YdH6AqvcmQsWNE4TgkXhC8llA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSXKjCRA9TVsSAnZWagAAPYYP/07gM145utBlCF0tnzA0\nxfBntNwVt+u0hj2dBImVSRZfptuGnUGhX3BEbzun5ktiQ0uCmy/a0d2dIsme\nxH3RkP8BQKZDtNzU4+NQkL85T9Xe0prz2+9iRpKYZc5fEMbF2YFY79bn+A7/\n6cAixIIVDQfBEb91Ua3PawQbIw/2mhA84Rzs3gIlIzdBPc+AjvKt4VesraHZ\nJthqTkK7tG12Kxa12ergUGEwH5fvWcoGczhXQtR66xKFNIP47SHRsqu0tbcf\noZE0qdaspclciL/rDpkUUVDm3Tewu4JvfvrgjhhJNjBL5sZ6FqjdDNwYVvcE\nQ/d58G82jD4zuCAfOmK1B0BTIJvzqz0y43mRTZTaFDW63FK/uV1JQn8aLM18\npIkpXxk1+LsWH1yLQEFmnnLqe23ctdRv3riBNnBM5oT/eV7spyxYrL3eDbTW\nnfnWExcZveQRH0GLRHtoXyuEoTzJtmmVjHX/6cnfN6opEJ8zkTQQMHi6t9r1\nzkXk1ulBFEupfcK97P8pwiJkDuUaZ0NvSH/FJ3A02X6hCYzYZMPt5DaZWOLK\nOZcbyICFmCtS7M0QL2cFIX9+dOt2gfUbf5fuq6cXH8nmHDdFHdXZK5Jm6Ppu\ngfnPIoRl+tCiWW2QVE64Gqklyn1fYFCv8x06z2XKzGhmQo1je2pkOvYvVKou\nMB88\r\n=mcq7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1977f66c9bef7ada185b5856bde483cf5a7cf6e1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.44","@balena/jellyfish-metrics":"^0.1.111"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.3_1615426210555_0.3051198027073858","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.4-renovate-non-major-6f903120c92c601104164f9014e8de68cd32da67":{"name":"@balena/jellyfish-sync","version":"5.2.4-renovate-non-major-6f903120c92c601104164f9014e8de68cd32da67","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.4-renovate-non-major-6f903120c92c601104164f9014e8de68cd32da67","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5cf628e1edcebf4c0f4793b549d48cf8c43242ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.4-renovate-non-major-6f903120c92c601104164f9014e8de68cd32da67.tgz","fileCount":25,"integrity":"sha512-L4n8CWvqixljHkrB8oaVyTkhv3uKl2vpLYry5NPVB/CmFnVrSSOXR3mzTdFBnQ3+pYykUJwV8kdFCB5C1wDD5A==","signatures":[{"sig":"MEQCIAFcuDUPjgYPkbLD6So7qMR5j0NDCo29dnfR29e6DL3jAiBO/5nx0hASDf5bFof32g/Fr92fCqHP4xyIlMv7+lV97Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSYtUCRA9TVsSAnZWagAAcA8P/0g/8XEV59UbYSbsaaDo\n0IjVIgAcWKPMqBJM68GA4ULBNeGSZOvKqTCUkFCYPAbcPTKq5Jikd5lZyOD5\n75ZjizBRhaq213ADLykcVjyj/4Je4sOGuLEWALWOK86+9tr5a10FEvfgeHvU\nFuFCS96KzGd5UTisHfRtkktsReRwlP2OJUqnZb+Mtbt2mfZahr5vK12+h9nS\niV6HzUnkhrmT2L3XhQ0CaeER5ofkWZxvnoUo8nJz9BclHAtPVIkHgi+7AGSh\nGpw5dqda9aenQLMJyewciAP0iumZN9WOUfC5xhxtO5Fc0Ipa98R5YLWKjCYi\nYEUQN69amBYpqlew6nCdcoMAJuOlZDbxahm/fzp+7JQD7UTO2R3GJnOUvInE\ndOSRbDQ2A/4COLHFXzdfiuFwpnIiTAnJ8tGahosW7XZuhV1LyVRWoWRjdmPq\nFrMUmirR/yggBelPfF++KhEEOy350azo23HzpgoWTg05WXzUiABhvp4/xElp\nw9fKZYUFD45QPE5QzYSYE9FLwJzu2KqGFTCmZOZUTjV1kFIYJOCi0359y9Ua\ns2tO08uou9YDDruSUElNCwGR4E95+PBbRPimL+dYrGG2841xPK5kcSkmL9wb\n+0jntQyhgBv3qevUjh0+36pMMJfSPY8cgdRtqfSiwgW1zBwuhTt4Dsz2vydf\n5o4W\r\n=WCW8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6f903120c92c601104164f9014e8de68cd32da67","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.44","@balena/jellyfish-metrics":"^0.1.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.4-renovate-non-major-6f903120c92c601104164f9014e8de68cd32da67_1615432532250_0.9454467537019673","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.4":{"name":"@balena/jellyfish-sync","version":"5.2.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d308fb536cd1492a6aaa796c52d510a1e545d49a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.4.tgz","fileCount":25,"integrity":"sha512-xOAdCTGctSvafDiy5TC+yOl6RfbYPmaGlNeZkPypuIqtfu8f0ITGLyzb3JR2TdvVzq4IJuO1MdGkZWNyHufFJA==","signatures":[{"sig":"MEUCIQCuFS+Eunemj6WJQWTJ3GyC3pOBA/QTP3Du/nefqySYjwIgU75AVY1g2EAiOpr2LU+70EWrIaOGb7HdVapzwXdXCbw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSYwSCRA9TVsSAnZWagAAuu8P/RX4A54CrVsx7Jelv/Ri\nvWckyAicWPMffX5l81+lQ1Z1cH6P/jgIOFX1OEa4k8SWhpp3hv236ETfdlh+\nDdd3h7/ETcXf3sLAC1QLCXdCp/hwD/NixP5Y0ZexaU1GbTRO5vxBGeAwwDkh\n3pcMYJspa3+FGxfMwqsZyB1TFKuNFNsuUmRNxFhGeK1GUUoullJXDN/cUWx8\nTm5bUWBjaCGK1oi6/N2rujBy8jdOn3+rZtXAxLu0rwxg6dmK6LXOsO1+/P9L\n428BVFGG9AOg/7jYdI1ZaU+VzahdQhn1tRg3X59n0MLB/k0Cpij68olZHU56\nvZPN+KC50YgSX3c9VAfu6EXvUoooUBaCJLaaC+vZNNSpkTnT0PiqUZ23O5kx\n9mSVEkFTMz8XvRAqi2C7ddeq3Ug3ZLYVrmmcgFhaiAKGmgqLZpZ7Xog/RRRS\nae+U7K+9PRkU4Le7BVLoSWOZJdvv1skuLFEG0NffijHp9ijv6tGxgbT/+hTT\n3UM2iMkEIQH7y4uhjGTIYldFGuOm+NtDEDGHs3oTlH+SNFaP6B/9UQG1GxYQ\nkRxf5h3sc7Btp9Kd1e+zIhAvBy+yrjlN5JvIXJcRii7Rvz7UBXqlV14qVyXT\ngn5m/N4EovCGJi8p/WhgnDtSw+nODNCBwXg3Os0lz0Z23xRYSckB/J19iZo5\nY65a\r\n=VMty\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d102386d41f53f96d21225b0ccec2c26e2bf5fa0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.44","@balena/jellyfish-metrics":"^0.1.112"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.4_1615432721613_0.9223737175783706","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.5-renovate-non-major-44913853f00bb2d465f959af95cdf42d958c3c8d":{"name":"@balena/jellyfish-sync","version":"5.2.5-renovate-non-major-44913853f00bb2d465f959af95cdf42d958c3c8d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.5-renovate-non-major-44913853f00bb2d465f959af95cdf42d958c3c8d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3414084c8b9d58526271841bd773eb879eb7139e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.5-renovate-non-major-44913853f00bb2d465f959af95cdf42d958c3c8d.tgz","fileCount":25,"integrity":"sha512-A7CiIA+OjPoD4Y5FvzLdg71sGDIoIIgGoVvuMCZqZIvLErj5885jEji1ggD/qvuUVVYmWRkcUB3o8sLJyf/RTQ==","signatures":[{"sig":"MEUCIGZe3wn4WOwWzwpVX8SHlTfjwUU8MHjv2qWevVKqBWgoAiEAuv5Y0Stk6HHpXwT2HBrNGkJOykYvQIwoGqArqhwOFKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSgQ0CRA9TVsSAnZWagAA55AQAKHs2u4JE2uBg6/m4BnP\n0t5W/WGneSo4Nbw9/fInRuswPszzUX5aMPUL9QWq5yA0TlK4WyyKCkwz/nxc\nauns0HeAppfIzbOEF75SHVu3L5ULUMwswmn83KvvIzkZSv6Qsv7dwhTKy8Wt\nRC2/CsGQnCs0obHjOOFZtp4hqjP10A0+Qk7aSJS4aymhzzHFEcaq8Sw5s5xn\n+a7QmlPxNh91JR09bSc3OXdk+LAzxC9lRdqTQLLtc4ynrNFfx2c8hz2sYsZt\nV6vtorc8HrTjGSCYFuOzwyfr8jLEvkB27JAHRAkCBZBOunQIG+uVi6BPdneQ\nDBv8H86KgQCkT/fnydh3fz78J8Cdf016Y1jFBNkT9j+mAI5BvontYxzglC7M\nZbl+cRCMhngxn960XC5sTQt8mNG8KrqKszbJ1SInvGJh7DOvUuEdTprpNZvM\ne3KO43V7Dgp/XkbTE6xu1Sgc9WyZnlOoFe4L4Dj2hvl43sTu3EeNFcIAH5Ib\nv6iSfFcyaIuAv4l+f2Gjmvh2scKIp4cWS7OlaangkoCIwRFZKfrF5XRV4FvP\nEXipHwO7sodzEZdMhItK0dhY7k5gbvSFIqV+Cg7fW0gcbRC4NDmmmlpfAZLX\nM/LDOG2hnziNmz604TLGglceqHzPxs5ebZP0WZ4sbK1/ptSTmH3qAs054OOZ\nUrAG\r\n=oj8e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"44913853f00bb2d465f959af95cdf42d958c3c8d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.45","@balena/jellyfish-metrics":"^0.1.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.5-renovate-non-major-44913853f00bb2d465f959af95cdf42d958c3c8d_1615463475557_0.4725173533687772","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.5":{"name":"@balena/jellyfish-sync","version":"5.2.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a15a8b6d933db1eb581f8181f40f0052bcf5d792","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.5.tgz","fileCount":25,"integrity":"sha512-RwHMtrnyDHhVdKhUprrM9ItQHVpm1USZi5jQDRuE4hD+sfN8JwuEGFpPqxmye2lfs+/86tlatXNdu6SYDBQNSg==","signatures":[{"sig":"MEUCIQCicZZ9tpsT+FS0FumwuNecRh267ih2Rhnc3TowIRnmVwIgF23mVKn54BPYNhenGVtOapIuln3dPk564tvOlbQLf6c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSgUPCRA9TVsSAnZWagAAH6UP/2+07PLGFgNJjL6f0Fm3\nP5+USJuxPXPhXxdXUPyRCXmw/czkVt8jyQlmIH9G2Fj7vGfOkLtLu7YNM2Il\nWrKcS7Pen2tJlH8TcQGeKzUFd/uJIGuWRa54xCO9pfAYMcVayq8gK7RPJ23+\nZdPq2Voie7rI8N8UAmeGsH9UE9FKrOgw1P4ctm9cnas3mwUVjeOf3IjhaT/h\nCNQk0fKxMdZw9fYnZg8EBX1+9gVZeb4zlBKKgg4KJV6cuKCtS0rILbSlnjAa\nc0yAsRxphooooF56fgFO9cGfv41oIkteRjb+mEj28Wp7yBMVtMR26vUGKu5j\nKm5IkZ8FIhN/mCdbNYk7OTngy/KwH8WdRVkOAdSQFeXJT+pAO1gBl2qRv96Y\n8YEPIs5oCQh4f+H9jLjIUO1ALTSvbNgtm16SfAUN/bhbNKBcz+32dWUehs7B\nZLJ54iqD7TlGMO39EdVnN2RIfE2FoWc1zhqHmk1hD/j0Q6Gwxk5sVqNFoYdg\nRVO9OdfX5YEalJlUaoMn2tf7zS4G3wB43T0DrCBkuF/yYRegpk0oDUrmxm/7\nVOPyB0Ct8i8jN3PxxjcUz3+aw7uKUvVkYZxCp2U0jLl8VaElvItilNIie22N\nGaHt8uF5oMvILmUkrxragWa5WcqSm1zefS0D3XQdz/kK2SbA8VnSvIFxcfbN\nvwZt\r\n=8Oqw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6119e0627e8c9e92472d44f73493e335b1bfadde","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.45","@balena/jellyfish-metrics":"^0.1.112"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.5_1615463695309_0.9564512820145947","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.6-renovate-non-major-9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8":{"name":"@balena/jellyfish-sync","version":"5.2.6-renovate-non-major-9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.6-renovate-non-major-9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2767c1fb77017f446537dc9a036ba787b4ece17c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.6-renovate-non-major-9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8.tgz","fileCount":25,"integrity":"sha512-e0EodjmO9BHEcua8cdTX91kckLmxmZZ43WykwnxxSPiiL/i9b4xgW4MX0Llt2PtGkeKqpZbaNQwzpxHsrh4tlA==","signatures":[{"sig":"MEUCIC4km5LOCHMlkorUEeK+xynLCWKXTtlhS6SdZszk8MCyAiEAzUqldtZ1t6Ey+iUdumQ0w89a/bt9zAw/74E3vp4BDt4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSiy5CRA9TVsSAnZWagAAnPgP/iOFjnd+H2pYhfur6pXA\nPhZclKRBXfS+rFMxLVJ/2k/Fjmj+4Z9Q5jbzCvn6RQ1qZ2yeSVCZOskfRAVP\nNCXfyqL/uZXn68DaUKLYmxft80+xChvHRakYb66z7DosXDfbIQF//lOZ6kl2\n3sWze9Khbsl6xaAD8zX2o6beFwCl0JSeBfyHGG/nwAMxXV3e0K/GjNqxMsCE\n0YZXnvcuOKoDkWYasa2wiIc2XfciMtHBwJM1Akf8MuYmXuJGZ0QQsDY4+gnp\n3Y1IFtxOQMlMUzu7oLE67zZ30I6+A3uRqwF0MRHJsWh77OVg8E8eXW7H6DaC\nDomgmzzowGISe5oniDarVhqOzLYwdnMrH1nVfCzPCdQLgc43Y07urnRY5VYJ\np6YZhhPL6WG0eE2glttfUf/6UqVSQMliG76E4hqg4skk3yAVL6HMhlSBwPoR\n+xpyL4+EBzMVEKOP8tAPgUx/wwBGzQ3mAG04771/v8OB0abPESqS8sxsUCWi\nEKbj0VC/MY5CR2Vi3odBmITxc86OQ2j+p5oQ7bMo9mN2BFV172dzMtrlyfsD\nd6SV/rBv3Cfg7MAksQX16QrDAJ9F7sbPPRfEgJsSksLp3SupuX0g3ocX7ztz\n+LQckYHOWL2NCgGlLJeHOlA76m3QGlr2ggdaQdHkd6b1KXxL7Qiqy5u/627b\nXa1e\r\n=gZ2v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.45","@balena/jellyfish-metrics":"^0.1.113"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.6-renovate-non-major-9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8_1615473848477_0.7095739429090462","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.6":{"name":"@balena/jellyfish-sync","version":"5.2.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"580e44e1c9ec427ed4da81d6ce6542292d804827","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.6.tgz","fileCount":25,"integrity":"sha512-byW/k65OzfVPYZ8pokklMshgGTRn2lPfJh/kQ2VT7xakZpGOI/Vk1Rhj5ubeqQYawb6X6SQKe6+05KsL3flbuQ==","signatures":[{"sig":"MEYCIQDJjeiQapGae6/hEDG84/3WOZ2cQT+5mx+oT2VzbFYZBAIhAOTCCZO+ZfQm1RCajAsPNjo0+haDl+wxSvv+L7/dQUmi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153673,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgSi2+CRA9TVsSAnZWagAACGkP/3k79VyuyKrDViGGTu3W\nI8M6WApKRVGn8ERdpU2IjPQcCpqDuioP3s2l8VTrjHsJvimyE5WhY2cFSD82\nD6JpiZT4VihEjdEbcWFYaRinH/ZADoIfOkQZDfZAwXABjiiS0k28x5UqNRer\n93MA0/PYHmyWmtGHLUvUKrMOqN9ZWLxl17wBW0L0vy4d2yEs/PkJyM2eBK1V\nYJStkwCCTMvNJNscY0Qrh/50zdMhRjZCph6osRc5C7Y8sWypXEkkG2eBERqs\nPzAYOzp/sQQQjLY8Jf6cQiS/FuJLW11oTB7QAnbkGQR6qBeHFPTJuHH3Oen+\nCsbu80/i224d+VujaLaNEWS5555ktyFr7aHzQGKIMSiLw0K5ANhFbGKBnn2s\nCqauXWvA/ZGYYxRdiS7Z7fR4VoMeOjXYoNNmYnhpWLfaANtS3F4v5lImZy8l\nBrm+Z5eLCT2Ie2FmDY993HV7BYUQMwcu0o5dSRAv/IaBpraASsDNoQV1FtPr\nfYFYt82KEX973HS2gUV+CVx29V3LVLIno1uHCnzs9BNYqRiTplHKwi8D6D+U\nlzsEPO5bDioO5R+a7qt09n6pEXwsIOzLEEFPpE1DlV+5FjdLeLy+NOfjyknb\n4La2vQoSVRKTphvCgpsPCpIaXu/vy6K+RfkXeyCvLi1gbJ4wWanDob9BiHof\nC7PB\r\n=DwkH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1acc95e9c1c79c3ad578bf5e7cda68e8ea05d565","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.62","@balena/jellyfish-logger":"1.0.45","@balena/jellyfish-metrics":"^0.1.113"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.6_1615474109472_0.489005402022868","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.7-renovate-non-major-5f487e92b6754cf882c819a364fbbb7786608224":{"name":"@balena/jellyfish-sync","version":"5.2.7-renovate-non-major-5f487e92b6754cf882c819a364fbbb7786608224","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.7-renovate-non-major-5f487e92b6754cf882c819a364fbbb7786608224","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"76f329648b6793d3cf9f66e10fcbaf7e96414111","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.7-renovate-non-major-5f487e92b6754cf882c819a364fbbb7786608224.tgz","fileCount":25,"integrity":"sha512-Oe4gyS6VeD4v1b0JrbUYAb7H8urgJiw3rMOx8foKuNQBX6GnX50Q55a1g8x8zIsqQ2j616GXv6sRvAoupZTa4A==","signatures":[{"sig":"MEQCIC6I9IS8/dkFMSaQ6Ze01tcJImT3GwOHYiY4SDnETnu9AiBRooTzVhxMfKBU3uK+pFs7hqaai21R8UbFzpmx3RMBeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154080,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgStIwCRA9TVsSAnZWagAA5HwP/2DJgRBuVYpO+RRZ4Sqr\nnMaDcr3SWLHtwxafQ+M13Ck+e0ghDPZ6U3LCXG9dfzc/niZiGOEueElrGP3m\nRSIMTbqnnUASphNtymEZtEw4vtndu8MJg0vhbB53E7sAkGhKA3Jzbc9ca+D2\nmCaRsjPMZpE56P73jZFkTw/p53KWm8OI5BXu20Wz8KMEzPC3MtuI+mtH5edl\n5eixEjceepKfB00bSgG+F8sxvpGBgexaBuip7nkepxlboTvWRhzeJXE7LOYw\nzSU3Sj6WFRTAmGS/S7IEPkp1aZ5/CztXdOcRm2HoPf71xvm71ckTQyqjrX6U\nzKq4xdvPxNZ+xCneec9yTD+kDB0PeM+YKYYoVZSvtGCg5lNHXa6n53Ox2/AU\nsERyGI5QH8WnJgzj50/npCFhfE0kyXji5JXYAJoNYQyIfT0/2RDBPkC/JsJp\nF7q+aeD9KXkWV7fJQoBCYhtJ8SVJkJ7chU+Pswdgk1itltkyE4fZJEe6xcDR\njqMDBDfnAdMPbCA5v0GPLz70jdQGqBGK8V8Uqz4CrAjWPf0YsdXNO6gUy0WK\nEjQJ+KYVWtxSnIWCzPelsClYW0J9bsIH9/zMqR8fzTseRVe+7hcseYlCGPu8\niO2STwwrC1q29tbS8kTHaO1aqCCKJiDObDSQ9hqtz71S3d7Q0fV+cSfWA1Jc\nuhDU\r\n=WNNh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5f487e92b6754cf882c819a364fbbb7786608224","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.46","@balena/jellyfish-metrics":"^0.1.114"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.7-renovate-non-major-5f487e92b6754cf882c819a364fbbb7786608224_1615516207606_0.46655869264383787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.7":{"name":"@balena/jellyfish-sync","version":"5.2.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e7b5c34b757956bdd0ceecdf10e6eee874d3c875","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.7.tgz","fileCount":25,"integrity":"sha512-RrU9K4Y5tkZtS56G4auz4WKCMxLFLcf1832uYFtNZ7dApDQb+rmOy+Cd6nY2R56+QjAcJE8bEaupD0p2kDQDPw==","signatures":[{"sig":"MEUCICXYSKa8lwt8GhuYNCgI/c2I4ADQ5rZVX1EQIgrboouKAiEAq03z7NZlQuAGVBiZ8sVfD3UdjNyNYpq9ZkkrvoJCBAg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgStMwCRA9TVsSAnZWagAATfwP/An1Rc3oiusJxNl9x8dN\n767pQi8Nwd36G+ARY7Vgy3IRFEqEJEtdvK9lHfH8/SHWMARjcortuahuubiL\nS1ZWLsxfPPh9zgrkuI30mFr4yjeATqE6Rga2XOYFeDhh2Ku7aN6C8DZWjWo3\nrKtg8C9E8fVjEA1/QzZtkYUE4frYVOX+MGLSUVom8EkFogx9RTauhGozK4Bf\nVivMoiZdMlU+ktHb80j/HFru4yKDfDjAjoC0yh9DkpipwnpMItORTui9u+w6\noJ7Jus7t8W79VIf0JpHPZsG947Mn49y560tlgxMdt614N5CFuHKUax9/EYyI\n8I0MMKRvEGNNM7KluGCbbttrMoajrz38ZmNzXneIZu0MOax+OslRQWCeVYiL\nJdPsqYl5v2dnirqfo2T9RbGSjs4fwquwWs3iuyY65Qs30ZpCZoK6kMIt1uht\nU3sD6UAE0/6MomgyW2pd5HP8CLtah+SDDya0Rp5ioRiP4yBo03cCNqbDeCxV\nMiefcTwqtDeTCMXBGdsDwDp3P42xMWwKBpkUW5Wl+3naw37YGcYIWbJ2lXps\nJcUNlCys3727G4CYjQKglUJkVF+8YO4x8Gs1o0Ma1oRHysx6KQ0iqT2Jzzkd\nI7S8VXRJ7Ct3LNU9CrzOomOsG55r5mp/qnkamEJGu8A6WUtRfOwsXxrV22+S\nBSeq\r\n=e1zA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ae2605fe4ad3fd7ae778432997931e78db98c7d8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.3.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.46","@balena/jellyfish-metrics":"^0.1.114"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.21.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.7_1615516463585_0.9874725316804105","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.8-renovate-non-major-fc306ce08d8b7b55b9732a9896d983c218438e4c":{"name":"@balena/jellyfish-sync","version":"5.2.8-renovate-non-major-fc306ce08d8b7b55b9732a9896d983c218438e4c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.8-renovate-non-major-fc306ce08d8b7b55b9732a9896d983c218438e4c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59196b19f9131b207925506443b96919516e69a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.8-renovate-non-major-fc306ce08d8b7b55b9732a9896d983c218438e4c.tgz","fileCount":25,"integrity":"sha512-O2OSsUGVYEQijkPJVebj8WhJjxmfDrAeiB96Odi9n4nI2bI+vMMP2QHSPJfuy2HJ7aWE6x6NmiC1ave3ZipbAA==","signatures":[{"sig":"MEUCIQDutgSWNnlLEx5wAz7hXeT+Md0dz81ypHxmJ0LPDgr7vgIgaMPLtANNL24jM4fzZBvoIneLTz4ostoJaI/VzSD8WWQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS+IfCRA9TVsSAnZWagAAWEsP/iZ83pAIXiRY6B5gArpw\nhRmXQA3Dhm7jQaqRmg51ZJRTRkdu4pj+giOpkhrMiMoI2H5m/9XASC3ItEBV\nvstu3iNmiU/67xK/iY8FJqbuXCpALfXybStgO40speled3eNfnS447CuilVw\njN3k3xaRSzXR3SJdteXk+7UabctKoIIvDOxToV1nEpve+R2gD1b3b3QlfLBh\n9ErsQqHEEmYJenRwMIEbmNoidoGajcdOYiM+NG72u/zs5kMj9J0Hxtcn3Frm\nZf1fb7QHaxgCAkMKyghE8WCjsSlp4frOiO3cimIRxGiUao3uFho1v3K3jgCg\nIMMufufcbGsVQ12N/hiJE0ZbZ5+hddwP2MvpAnhsBOC64oE/2DOqeivXTV94\nZpeeSzZ9fkpwpTfVF5pLlcwbXeHI9mvreXq62OnR7SDvZ4szSY8iXpRyggJO\nSyVdzC1NgRQBMbsI9inoXgk4r/ehtAwDxmWTyipgXNwdwaNPNeLKu3CNSfsv\ndsTG3uabYoLmBIn5luS8e4YV7pCo7AJE9SqLyZQVR9aUKapyDSj/sBKfemuw\nOrRffl1hMtg+scTAhlESA6ngxvLoLA5Wn/ityTkYSRvecTEp8W2kl1orOgdn\nupjNXqPDjJTUglZZR7N0S+oXFqGMJZKRdnrLLzpN8pTjFX1Yt3BrcG5fK7Vn\n0AIB\r\n=Q8eo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fc306ce08d8b7b55b9732a9896d983c218438e4c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.46","@balena/jellyfish-metrics":"^0.1.114"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.8-renovate-non-major-fc306ce08d8b7b55b9732a9896d983c218438e4c_1615585822490_0.7132725876438597","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.8":{"name":"@balena/jellyfish-sync","version":"5.2.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf1eb067434b8dfdba0fa2a4bfd43046dfe200fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.8.tgz","fileCount":25,"integrity":"sha512-/HyM+Qk2LH9SMRpFLeukAZhPOHsKaMcmptVKGIVX9OxP7s/2Cndu3zNDGmmCBvCPVQc2THY69JUqE49NqN3O8A==","signatures":[{"sig":"MEUCIQCeaQd4za+wYLQN+wKr+mjb+GtltNRN5qbFyG+pKkFSewIgHXoSBemq3CDpeJIJdLErhLKJth0/bh2hO8Z3bVbBfsY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgS+LRCRA9TVsSAnZWagAAEhQP/1jQ5/RQaGtgm4Pjf9fp\nuOaq2Gbomq8GSGygJbpyjfWp0GqRktNP/sLZ0MjHYlOLUjL+nFeZJlDNYC07\nc0wFoTaP+Kkiy9mPFuQ5T3RbqCM+BkJ44TJXUx3E25cz1MVphzBXG7aWpMRX\ns9gfM0qfu0FB51raIT7Ns2fzU2lGw6YbP2mMaxYQH1nEWYQhBtnjwhPr97uG\nZ8m9qc9YB3sIdy4UPrhdui+2bJzkj0WOseCHUCk5G34q5W6nXEEbsMFBOTmD\nc/YWOESRXbl6Nf8gLSPcj3qxQ3KU1nNJTzQy7YruKwPyR4aPhFAvkSTe1gRs\nhx9C5iIDU3M9F8VeXh3c6WOgmjTTxZsjBqscbcpxtD5jNAukDY4p5AJ0n3Mv\nyqtTke4hz0Cf3xIsmMEb5msRIcRUUanP/wyPonYHsbTCReTR7x5CfSCF5jID\nBs8htRyZHr93gTOFJqvu5ZzjgYxVSbbu0LuHX2Vsdem6ayktvKWBBOPLMSQ8\n32SfGg1bbfgOzgs2b104wBYffY2tsPj05+QJubPjnYGAciLNorgeCTWBu+Hn\nuuCq5m8vkg5QamnjGS9FkI7dDc3xGnF5OcE7ghreG4XyJOp1mJL/yB5SkdrU\nxNE7zPKM3Ld603h6RkNtEttG8PzB+NBwAmbN02jnu5IFZ7LJWOKp7xL+YkC0\neagr\r\n=rpAL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"89b60125b1bcbd629e6955bcc139f35aed66ff8d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.0","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.46","@balena/jellyfish-metrics":"^0.1.114"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.8_1615586000807_0.44445377444078016","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.9-renovate-non-major-a86edbd35c061a341d30e10e36f5cdd7641fd496":{"name":"@balena/jellyfish-sync","version":"5.2.9-renovate-non-major-a86edbd35c061a341d30e10e36f5cdd7641fd496","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.9-renovate-non-major-a86edbd35c061a341d30e10e36f5cdd7641fd496","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7e9517866ced1ad576b106e177c16c210cc2d7b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.9-renovate-non-major-a86edbd35c061a341d30e10e36f5cdd7641fd496.tgz","fileCount":25,"integrity":"sha512-ilgjCMQPF8xqQGWTXRp8mBO8LcQw6fXoxAnJFEr0YI/1PTtIcI5+kqzqP7liR9naW4rqfOT2JoOJcAHyPq4lYw==","signatures":[{"sig":"MEUCICBMYNMKR/kTEuEvsNnl2wxpkt4mYjeCmhz6LfDr3hFEAiEA4QwncNrRky71wtc2ayI+TNDUVUfIIBr4haKCuXckjYc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTBXpCRA9TVsSAnZWagAAqtoP/0r2dW4yo+FofaCH+CIj\nruMtHd04uZ0XQeLlZOAPjkn1s9hDsdP9H2B6KaoAy/vxFwuMC22ESd6/bSV6\n+czFHCv4NQ1NcIS+ZRkjjOGk7B6jVnlKMMuaRQXMTXldazDk5hqiNZMG0+x0\nXXA1QYejoJHdZfS5ZkGRhDU85e0MuUmcz6wTz3DZp5xh5salCcj0MMayCSxg\nRfwUxUJ1ZAUzg4KYIhZlXsStZmf4ZXmCQhLBtFqQAFNgPl0IaHR338lqgkcI\na3NI1Qw/PuQkU313lqGmM6rVq1AMxSeTnE4HrX+l8gPGhc3iy3x6hK/qP5me\nFAEK6NxU92F8HUwN0XI226b+Lqx0XLYSqA+9LstQ4u+fbT3A5PRRUfJJ/J+C\naY711th1D0m0wIzTRiDCJuvyQD61HIwDJCGvBjGJq4xRwcH3ZTmrVfhl4Jy0\nuLW3clUOR18+KX8Se1jzmT+Y/VqfUf16lXsaUsaiMnRjbQAYrGWy/F+vO7/Y\n+bhXBw9YykqYCKbDMG9FZ0rF5arunMeIOZOjO8NTNHah1AbbQRlETKep4YzN\nN0V9ZawVTLr5SbctNaVaHg/gs8dcPW9MHtdrxzxAjfb98bt9qnrbDvPTjINN\njrt+ARR4o5X0LjIfx9IhWoUZlkQYt6YQ/QV5FtI9q8RAuOgXjjDt35br1Znh\nABzx\r\n=EXUc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a86edbd35c061a341d30e10e36f5cdd7641fd496","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.47","@balena/jellyfish-metrics":"^0.1.115"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.9-renovate-non-major-a86edbd35c061a341d30e10e36f5cdd7641fd496_1615599080991_0.678286081911019","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.9":{"name":"@balena/jellyfish-sync","version":"5.2.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6a98e03fe0bc2bc28070ac8ad76ecc000bc8f80c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.9.tgz","fileCount":25,"integrity":"sha512-0zmQ5e70578VRs8NMoQJsvfSgq+82+n6n11AcpqbPl9EATrJMK/WO8J7Y/FZxoawrxGuDY3yRm0PDDjnzkUlTw==","signatures":[{"sig":"MEYCIQDkg6dEkUfuBcvB5rkz2aGMsl9soWjcUfD3rF5aiTPsuQIhAKVMieSioCScnV+vE1aAC0E8YSKI2GoQ6rvg0+iFT4Yh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154714,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTBaQCRA9TVsSAnZWagAAlDwP/025kOaDiaAj8wZySAzy\nEyzA9bXxyBBq6NOVMSfrqnf0StDBkQ/Og9k3HX6u/9LwIlZKcHhcFCkhs1fe\nQ4xCoRvQ+1//gn7q0tGB8ql/QZw3PUrZCY8XNDmse0F3Qg1TQXVB8gmthSre\ng9l0jVz/FdMXEVP5KrT3OP1uEJVrbCiquXwBzaVlyUE5fxWZ0T2FzZf7Ib6k\nKNlBasF2c/np8s6k4pS2kA5idsVqF7AAFLg1hgDIE76HNldUqLAHXYBMT57c\ngrrFwpzVym4eXvAD77uNWWUTC2xzCxd4J0waW6SN3M3EvcLttryM81fKx4gm\nkObgSKIgCocP1CQZtWjMC0WY3vzDSSTgpARmwgoJCjr9JfYg5ZLjTnJUyTiQ\n/T0522Q8hGXWBMa/EPwfCzAPsuJiXKSLU2Iqdru58Ir7V12FSaCw7NkzF/L4\nf9V2qFp1mOkKDb8IOZCDg6vPaVRJb8htkwSazh3cBAjXgVAyJDMzQYGdEUT0\nCX9lBFnsPwR3VSGlrwy8qIE0JrXvxuc5eOVHR/g+rvpLWyu0g6IjBfmc5Nil\ntAMBgCHwx0BVtYDsaruN3i5sk+nh9GIt/q+OV9tt9rpqQpNWwCxK4ZgRMtZz\nFW2G8n8fxdSovcMxq3IVCd9OHlGHdoKJMCMDHOAP/4w84HUbtioNxs8dFSGm\nWLpv\r\n=kvJ+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"86c6004eb58aa6c438dfb10eebf49c689b14a56d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.47","@balena/jellyfish-metrics":"^0.1.115"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.9_1615599247756_0.1614150171849409","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.10-renovate-non-major-85402c21474719b7c62380b9a5e626b85073e7dd":{"name":"@balena/jellyfish-sync","version":"5.2.10-renovate-non-major-85402c21474719b7c62380b9a5e626b85073e7dd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.10-renovate-non-major-85402c21474719b7c62380b9a5e626b85073e7dd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bc54a2a66a4989c6ff0ce30118e5b49b2bd086ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.10-renovate-non-major-85402c21474719b7c62380b9a5e626b85073e7dd.tgz","fileCount":25,"integrity":"sha512-ScPFVEFcRAJiDysVjBRZ6KFyilVCb9+Oyf6NorI/8sSspBjzs+VeQV29xI6EZv26hBu3we1j1DduhhWIo4FU+Q==","signatures":[{"sig":"MEUCIQCd06wYOIKFyFGQqt04LImEqqUyH0WgA0S7yBgISJ7RTAIgXlS6O1j3JqWYWV63OmTbQ1v9LEW259ph2c2cVQKS1PM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTD4BCRA9TVsSAnZWagAA7xIP/2YZACF0Vrtsu30D03ho\nZ9cZfQr7MgQegLmJQDcysMNIVed3EqwR8AGj1RPbFLBfY+dGGgWKBP1H6tm5\ny1LcPmNYqoVyIOSQGEZ42kWCJbBQ2icd59D0VqI81rRtyJOXnSKdHQpPzNvE\nqk5rbqd0oZwWs/G6Mm4N4Kwe/RkcKrlIa/8zc4gnXwUg8kYXZnAG1GE82Qfn\nqCJGi0LNVA3OmHCt/U2lLVh5WBN9b8KuHiCSpXSM++e+jHu3VIS8syDqeUcy\nHQt/+MEsXaVEZW2gfCUKn7K+l+YWAuoezfmAKNv8GR0R7mT+wLyj8IrKuh3v\nN0+qbH/aZH5i61iuD0HkTVIWY1QUwXDGAdzrMEqKy3aUTWVnKwl58phmU6d6\n6dNOYdkQS7nsRoKEVw4Nkoja8IZjenFbdTZw4oSt7gGapsDqdZpvtofTzNod\nl2IMkKlPRkOfP2X0q+Zx5CtqaDg32NWLoJOWF+slaKm6hBZyFVF0fzGicf3B\nIwUvTvif/OfU+um+BHLYuVT8judkBvEFAZuW4Nki3nJOiV39h2McUcp7B2yn\nVOlvoopbF6ytuIh5OnyoXvt5zPJWN6Eoy9U0F3SgIPzvevsz95cY58UO9IFc\nrBa0lqIteBjQ6UouOQvx6ED+G15uw/L+dFYyHumoUVm7FQD3IUMUBpgn2mSP\n3Xnt\r\n=P14E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"85402c21474719b7c62380b9a5e626b85073e7dd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.48","@balena/jellyfish-metrics":"^0.1.116"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.10-renovate-non-major-85402c21474719b7c62380b9a5e626b85073e7dd_1615609344871_0.27122607161785184","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.10":{"name":"@balena/jellyfish-sync","version":"5.2.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"48d768cd60823d3f57dc27a89ec9752fb6847018","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.10.tgz","fileCount":25,"integrity":"sha512-UBfSeJK0mQzKHROLk4AO47dgSMLYGAvJBmH861182yj9ph13taAGhbQrC58KAqzVCg6HkL6K3TCtsvesyfhqAQ==","signatures":[{"sig":"MEUCIAJIuyzu1j0BmKb/mmFL6QLaWKqgTZBqHgf48leQ4UvUAiEAk5rREgMwAdRWIiYw/QeCrT0gW2IoUYOsvvyVS2sYoBo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155064,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgTD6tCRA9TVsSAnZWagAApWQP/jfNvUV+lEYKHuZKFA1A\nDiUy9o0t1fZXQAEg2MKsLo4oDQeY9fjHuSjjt4K7Gcmw+Z1Zzp6TC49tBqC4\n79dTLAmvooKxMuPFAMKdL/NQVGiBIM00/StXjeVoJuKp/EGhGMREUogNeDMn\nPTMKMua9QL9RNFgYoWNtWJIVB+YEgWP8Vx59zIVRkX1VoPgrolj2mbUAgRDY\n5azROVgeQj5pFXWydx9ZflLS4QAuJ72h925d7lYMDexA/XWfKaSGs4u7zv6c\nkeJivTvHgYe/LblTc8FnsQ14g14YgJl579f8fTwxqesK/731ztE1RexyxXmE\nIvtSs7X3x2cuJD7uvFULjAHcFvyo4y4OiNywzcNol3yptuXOlzWLxx+Nywo+\nhnLjFucnkSwbcJKw+stykBwNc77h6SVk3EjiDlLTwzD1AucABJ1tf6RzBnfu\n2+y+bnlsrZQpCIwc2zR2JYx9UWsUiJvt9SRMt7sfxVzMY7oNsFSVmJMV/nHs\nFW2UHWrlVepPKH1SXHo3WuEcfYS7A8BxDRuoiI/hnJsE3d0NYqyvN+mdc2Wk\nrpTwDILTWX0pOK8p0MZos+GiQW0F+HsEbYWOF25q/tEQALUO7MtNcmoYjeaI\nAPAVTsauwLj447w/J5Y+8Is+5kvVlAoaGFfP6cGQu1TVtKi5cBlN4CsHzGio\nLUlw\r\n=CzHR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9d7c2fedaca7c6cc0f9cc97f1dcd694661cb425b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.48","@balena/jellyfish-metrics":"^0.1.116"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.2.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.10_1615609516571_0.4671925494410474","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.11-renovate-non-major-836dd13ade8592dec5f73effb3514b8d62c33671":{"name":"@balena/jellyfish-sync","version":"5.2.11-renovate-non-major-836dd13ade8592dec5f73effb3514b8d62c33671","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.11-renovate-non-major-836dd13ade8592dec5f73effb3514b8d62c33671","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d26f3ca7aa76e9881c7c2a250b1382afe41b68c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.11-renovate-non-major-836dd13ade8592dec5f73effb3514b8d62c33671.tgz","fileCount":25,"integrity":"sha512-l02ZYilNdPJ5HI51qwbrxz5RcI22W/YLOowIuQ+fy3haFs5NRBsxqgylXbDDNx58+h7mUwpG6qy1RrhuiDFL4A==","signatures":[{"sig":"MEQCIElaBT4NLbY01WiHjOHQdePYlmPzviqct4HGBbIsStxuAiB60jwPAVC2y2lLs004g6l1G6nqrjYLV0xv0jJD/FN6Ag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155537,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT0nlCRA9TVsSAnZWagAAaysP/0mPD09wd+ihHo5gu1Tp\ntVaTonkwhEOt/nc4yxBLjXzMhlQglAjMlsbbobfw/9l3TyFYNTNLHQi7h69e\nnwx2lktKRMmNDMrf03aW7xD3c0g3lnXtGYfa/nJ1w2hvcpM3M7NxwClr1Mal\notqE6DdtdeN8ky81PPBJGgqKipxgLhEmC8WETVtLT6cm35rgoRGkA2ci3VsI\nbG771tqtrV7BFl7MwQJLFAYm1CiGVKi495YEoBRkxdnfpX3piOeQsVP3OIkC\nRPzxyNtVDMyNO9q0+kbxEUgx0bDpLsD62p+ydsQdAzAp8YrAInu5H1fDpDcl\naGM5WQdhaezTRQudLfMsAdCpLZwJ5wo4aeLRkvfbUomuIz8xNVR9/nB343vE\nZLCopp/2ebsdbfgnvV8UxpTDUF1PgeHyAiAZ2PZmy6XX/mKSOyIeK8b9S4Bx\n3sNCLV23t+tuhLT+fxCJpraWxMcaSRqcCOPhmjZaOHX6u2nJx5O0DZxTWy9z\nXZyTcE3URujS4AKZj1vEAqw7eHuMlPKGv1yFuUm7HU2mA9R2qdyjAcy9biQq\nZZAWzHhEwfG8Xj9XZsa8LtFoesBsHQtmyAs/B0VBjIMz0E66o+b+DHIZTGim\nPxZucNtFC8uKsG/iqBssr01j5ELepdi7RzDX7V33RX2vUeewO7JkR+h6FhtN\nUxln\r\n=+Wna\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"836dd13ade8592dec5f73effb3514b8d62c33671","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.48","@balena/jellyfish-metrics":"^0.1.116"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.11-renovate-non-major-836dd13ade8592dec5f73effb3514b8d62c33671_1615808996741_0.1378386308207442","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.11":{"name":"@balena/jellyfish-sync","version":"5.2.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8478d3872eca1d8aae981c9185115a3b0231e073","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.11.tgz","fileCount":25,"integrity":"sha512-UayilTsDQjWJOMiWSTqQn+HysSWBK6j5a0bnU1FCWhg9qaVeEYctP7iUXW91dLKfzS73ggP9jqcV+A/3SrFGgQ==","signatures":[{"sig":"MEYCIQD1Skm1vj/Hqn97j9wXusauc1Ov/YkRgDZj2RicbZiOjQIhAOMz6km0QCW4cwbcGuKeND1Q+7gH52F12pSUmvbJb4za","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT0qbCRA9TVsSAnZWagAApNkP/inWTmB4OhCv/uooU95e\nTG5yNEtXGLtvIq9Q7ZXyHRdubl08eRpfgK1yn0ewxKbCG/4KNyatpKWW80mE\nksbqmI9aDn6LczuPUVgSBdL/rF7yVCg54tIhjRC5YAhiDVyKZvQ14xe3KUAW\neR8fOdvvHFPfENXAlJypBQZuWU9QK1TnB7diaRsrhunyvRxVbPLOKHxATBcN\nutjG6K9F3j81NsGe4BySR5GlFdtLGfWPXOK3IKy1V5DauMQhUuOXhZi4zhGX\n3Dwq7FfDsLB44HywUzZnzfT6QogHqeGB8CxZ4HzJ/QIm/V3KqwTePAvsLrtT\n+apt95NcmwvgxMfLugsvhDVdRD0nTx3lkAU9mrwefqygxpkGTC4yTcWCcuFd\nYJQuQKAhT06Du6YZWmWv5f25iIjZLVMIao4FKr6lWg559sgYa60WTA4BvdrM\naHijKuYmkSQf6Bmjt9VihdCiSVOHdpwXckt0Tqy29JqzEj/WTsjn7I5dejH2\n075C2EXPGY5D9bydtfiozYvc6vNHI1/N6LZ+J1wwqUAspYOum3WhtPgity2+\nXCzMjK4u649A7whiMkVrAqWev+odSTi/SqtPpAp0mOcGpK/CgnJHYVtl8zZf\nj806KaMZD6ehP+MNTNDBkDUFJwqkdEp/C86H3RXVe2wRTQyShH5zT+1yZhxb\n/VEb\r\n=y/FM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"02790e5935cea121b73c079c4f8028c05b191a89","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.48","@balena/jellyfish-metrics":"^0.1.116"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.11_1615809178723_0.4713836700344234","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.12-renovate-non-major-5e89f915d329e9359919241426fb66d07ee1d9b6":{"name":"@balena/jellyfish-sync","version":"5.2.12-renovate-non-major-5e89f915d329e9359919241426fb66d07ee1d9b6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.12-renovate-non-major-5e89f915d329e9359919241426fb66d07ee1d9b6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bfd0d0fa9b818a01263119b00045b874cfaf1147","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.12-renovate-non-major-5e89f915d329e9359919241426fb66d07ee1d9b6.tgz","fileCount":25,"integrity":"sha512-BWn2RXMwGF2AbdMKMMziKrotECZq8qT3WPqYCk27Bs/CNHPueDfB2ymdVk+5SxMAUrOGGmODZeqxzrBPEOrcIg==","signatures":[{"sig":"MEQCIBRZpoD4KaBRX4SIaxSkbpLS9iIstvJKjt/YSuPnbbRhAiA/UbQz2+xjRQcEVreDBzcDB343EiL7k8OVq4OahQLoKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT2p0CRA9TVsSAnZWagAA9eYP/0Pnqcw2rR8Iuoy/BaQp\na59FLg3TvPlWC6o22MBbzE3u7EtlkaayMdn/3Di8YU9H5Oymfmk5hoRrb1J8\nF1Nl8tnfu5jFyraykiVeU3N5suaj2XKtcWdqNkPXPTuWE5131QsdDxnshMsL\nyyxCAloDiMh026YLpbLk2vmHKqfCT5szpWKzw+brff8F7fjSD/Ueqk5zmIk0\nbUamVTr6Q8bPKelxZmjK3lJcnemvaU6tJ1ZbKfioBauoPsDjXzAt/SVILG3D\n70osl5TFO1cwaG1RICIZmLKrr+FH7b+rTsRWFf9/xCTv/0W4FAUixvjusRR1\nmUtx568B0pkxtypCrFN2l4EIQU5HbKjl3oz5VD2Z9E2X1YbXTeHIy9trb0Y4\nDOvf/Lt/vSFL2VCxxTuT1l32agyTPrluppo5gaS48UXtk6QJBL+UoQ6j/qlZ\ndkK8F9hbYzIku2FK2X2AEZjtoxPnLlLBoUAnwALDqP+8goQ5KB57O4XOpUMF\nkkGicNoJsL0gXRwSX/molKaxwHYOedcSY7hI6C4XY9JMGuV+jAzadl2ZHj4g\nwC8F2ZCpHJRlb2soRs9VJef/OOhTZ63UdtKEdStBcAq9E9y8AmHSqU73CnW+\ndY9MP9ehv+SmgMDRU4/aR+FtUI59RkBTqjq2byAFPJmPGXeWqqEQ1odRHZFg\nAQzx\r\n=VyS0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5e89f915d329e9359919241426fb66d07ee1d9b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.49","@balena/jellyfish-metrics":"^0.1.117"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.12-renovate-non-major-5e89f915d329e9359919241426fb66d07ee1d9b6_1615817332404_0.1311115568182366","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.12":{"name":"@balena/jellyfish-sync","version":"5.2.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba435e84898c21302171144c3e7f039b1e5109c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.12.tgz","fileCount":25,"integrity":"sha512-AUHtQPxkNYwTl/6zzz4ePCKNxIV5hdod07i0zK5JHU76pR8Jd29HWS5KuzBOrWq1i9HLLK+wGalzeR2PXvaYjw==","signatures":[{"sig":"MEUCIQCOL2bkx8ImdJ/jRnib1I55LyMXLveZeDlwYs8nQsYLOwIgWKhBEcWu666a0nkxYUre6X1VFLcBeuKayrnyZdCugx4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT2sgCRA9TVsSAnZWagAAPYsP/R/J2qUpxOmT4rB6hQBk\nwwWGWysRShj+SLaN0EdguPJzC4sbHKUovYhFT2PY5e6HAiRrjcsYUYNagFT7\noThM7GVC7lpxpyBiaargNbmi7IgLd8W1hcsRt71WKmwpTXsvtc2AgdTSwoOD\nb0ToKiDXyktszIZGsdC6BjZHTCx1m0rQGp4cStPFdS0wT5ccNI99yPYZexU0\nMJys8im0pBu+1c4ZFyeSvSiJCyC5SLLq4/tNkSTgXKDtlzdbULYPQGpi5aRr\nsrtA0gDXJtXQNn8jNCz2oooEpJdEJhWxfM8TJQgL1jA6+Jt91vuyJajZtDbk\nR0DX4eriiLKtfUpyfRdM2Hh4wSZmKo2L6iYIccfDmI54ORgaagubUuEwrof6\nuWDe9qe5+Hbo65tgCXi2IZ6lnYRT4dAhAyKEbrMIaXn/RMkqR1/PlVL/YlIr\nYKGtnj74ngSGhtodA4+r1tA9dbUdCsoFgDEGsLGHaL5I9q4vsRnGSWtQzJZa\nuiTZHHKEgtEk5F6fEUfDxo/gD+R9JJaJQUkAb8L/vRoe9dwAIYdBpR9JEw1n\n0XjPm+NfnqJ089C+yYFFHNQKOss0SMl+pB5Rm3SJ944nmSMLvHuKVq2Y6ym3\nE3evbaouGUaazE5QRQy6wWszvJvt0AREnxhItpoSGhKXAVvXVztBe8zLH23R\nIaI8\r\n=5uC0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0c29e170aee0cf3f3b80d7d5aa10a073c15c5b80","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.49","@balena/jellyfish-metrics":"^0.1.117"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.12_1615817503951_0.08661065826775416","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.13-renovate-non-major-93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7":{"name":"@balena/jellyfish-sync","version":"5.2.13-renovate-non-major-93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.13-renovate-non-major-93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89b21afd0720961d3e7e0dc3ab041fc7025cf67d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.13-renovate-non-major-93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7.tgz","fileCount":25,"integrity":"sha512-jwCpqOf90JwG+CQg2hax5bH2iEtJPV3RhKQ7TDD/KlCVDHjTvuE9fGHBLalO/teZqwZOha07hF9YPo31K5E60w==","signatures":[{"sig":"MEUCIQDDothvhjqtK0TtD2xJF/ZaTLrgjME3mE2XY2YkCiYJFQIgU1r9dY3NQIXVQkOD8VbvovQOX+urxizRhL5UqkNuheQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156235,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT6MQCRA9TVsSAnZWagAAA0IP/1aeq5J/UaS98xpaN62X\nmTRsYR/CZ8rlrPvPXFc3lXldzKzChb6h82KwewbAjdVX0dVf/5I4qWg6/RMu\nmzEm2jVSFbqJeMkGZhPUKhM3N6VAHEvLA41jMhesdzZILNce2HJcWzclrzbe\nhgppbXR+DRlJ4SVT/OvLTiwVrg0IOUhtWgYwGiYUMQ6opHXV1M9XOw7M1ztU\n3wy5oCE3hB3qm0NNdLnycTqDUbklJ8dLAK7/NvFUeYMJ7T3UAxVH714C2+Aj\nc+ltYOUxu+YSeAwZL8bCRHYkDJN5sGoRxPT6iI2uxpVTJfJZ8SSX8JtD3XqL\nIOZX+AvqcfO1gQN7cOAXig+hfcj5PLg7o+OLpTtDA5zrushdupzBUuykcLSi\nRiaTR74nQsFeBWdH5+QT7/JjhD5j2mWgkqJQ/qpvP3LZa5dF6dtCkMkKhEmt\nDfGbVll/X63yx4f8tmtQxYbE2uqUSNhVJEzTYWxThLWsXaGBWcBCgBp161qE\ngkkyDzB49AT3nVybpBQTw6L2FUePS5fqc5hou0olryxnixV6DqeHiMpQqv/O\ne3ShBcH2ZbRvWh6O7vS11CFuFcmwkv6rbMWdZS8pansrlk7iNJ0nKvZezubJ\nRSttVvb6g1/TTrJMardX7LcSdbRVg71jJARiGUKolsNuAJln3iWbSFvYo0FR\n7zlS\r\n=9H1r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.50","@balena/jellyfish-metrics":"^0.1.118"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.13-renovate-non-major-93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7_1615831823818_0.24179224102452546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.13":{"name":"@balena/jellyfish-sync","version":"5.2.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ea80fef605d53a97f4c63690384d437998777bf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.13.tgz","fileCount":25,"integrity":"sha512-nlayQMnR1nfNX7isgBZEdKp3B7QwaN0iP+Ua4kIxJVJIQ4MESgDdd5EiTWUg1Q4YHYonyyXoAE/kG9y690ad1g==","signatures":[{"sig":"MEQCIHEEyNPX7eImamsKmNXQKmXRhjhMdoZ2PcfY21LbZj0NAiAODeDeNuyd9WYPEoOlcUsuTtBghopectCSQaAn97u14w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgT6PGCRA9TVsSAnZWagAA81gP/1bbvnIRwvgPTBf5+ADK\nkj47XirfBDvll861WV9n1Q5fzfS1ZOuUoVMPMBiSzvqSvprkRGMDEn3k+lMP\n8W+K0LzH3D2pFWgpclweFAmnmKW6G0OGpgDzgght1Ayr48aR1ZxUy4xB2UIM\n8MaTkkJVnv6oA+78nDbgQq557ZQE/LpVc1lrcOCY/4WhRgMFPvgoSqexvv85\neSWUEuSrKVOfcMPV+ovGnFz/Kaj8mrHHpQZsvF+oTT57gjO7y5XEKOe60e3k\nBkYyBosCo9oZpqVia5k37h4aS/Rz3gVNP0sBeLD4sW53ky0V5tx2rcoCyY+O\naTE7Lhn1pvvymb00bhhbaJYzEu4kQ4OIJtGCvK7ly8xDOKywQhkt5pBPFYD7\nRoc/IetsxnQDoOgTubhGQupxqII3WcZ6+CzI3OAxETVhihJyYS4x4cr/kVna\n19eUt6oNS9QVBH5vJ8OPqq9XeMDVc/jAXJUE1a0hHzf4eUn4Qs/486o5z8DP\nGFAPVOoYpmCmWtwJBnixJcbU7r9eY1hRkAGdzyH3kcSz6o3GnPEexGvAuz2f\neF0dMtKFjDIko15JtRqG3k82doaKEFu7IF/8Ci4s06dGKUUA0npKZdoQhBlP\nIVf+hG3I0rWS8jLUUMtuB5P56CwYRvVUUAiWP4L0fZZZNzS32tRk16MOqxXt\n8c+U\r\n=Lf36\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ed21300a905e2df4e63f687e5d1a3ae5a4588556","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.63","@balena/jellyfish-logger":"1.0.50","@balena/jellyfish-metrics":"^0.1.118"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.13_1615832006354_0.47869536777587673","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.14-renovate-non-major-37e784f0096eb63c0579f932f09ba770357fa4b1":{"name":"@balena/jellyfish-sync","version":"5.2.14-renovate-non-major-37e784f0096eb63c0579f932f09ba770357fa4b1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.14-renovate-non-major-37e784f0096eb63c0579f932f09ba770357fa4b1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63c34781ea4a0a1f961ebe25cf92eddbc24c218b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.14-renovate-non-major-37e784f0096eb63c0579f932f09ba770357fa4b1.tgz","fileCount":25,"integrity":"sha512-aQ2j1lKtzLsBmfcBDbSXNwWuYKgFK0JKSKNKQOWwgJV5qx2veXgWL/aMyOnSzVeT2gp33Y/1eYHoiRO1k8whGg==","signatures":[{"sig":"MEUCIQD287SUS8Fs9Qjmejzhhr+lwAjrNxVYuXJY+XVG3WCqPgIgKHfgqcxCv+gCfktm8JTm5IKZjZl4tjP6IXJksU1+UYw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUrTrCRA9TVsSAnZWagAAdcwP/isGUakblmN08k/FwaVf\n/r1lUYq0SMEPLu43Zc5d+1MlBvECCB4h5+StzowhP+0a6Ct2qvIgNKfQBCEa\nte5u7x9tVvndR78fu+XwCxcJLtTRuZkfH4YVsXS9ZDLK0qptJwMWgMB6p3Mo\nfpMOJyZ2Pfzu+k2VQqVzI+eX063Mm7uyx0dtjP6p9CTe+3WdfhT7cbWZYSE7\npNahtEhKwafu/bJoM69U4ODgdXyssikykRjb/KkXoiPMVLpEKNrxDko72pZh\nIZ90hEbW5F93rbc5Gk72rAaVinVyhwfzmoCTdmw44vSEq4ZzWZOy6Nd6TK+c\ntQWlXmwjhndaTWCVJ/tfLKiMudJ6mD2LIq3LC7N/ijr7eOZmDSWik/dDq+L5\nvRjdSuU/SG48iUq04XwG6Y6/1sgsLoNxQOaitrKw1B46xTlnzG6c6SHBEbH3\nVerqAw6A9RYakkwoZESZvoGALu5k5kyLcff43tQ82jQ66/Igk6rqQr5nqBmS\n0YWJdRM5WGkbVZ0p/+pRGf+gyHN4wWGN7HY6pNpaizu9C3ZyvH4XwiGtnueN\npbYalcREphABw5JeAlUi5lKu9WPAgRiy8HCAN3vovwZf9Klnv+kyk67UefU3\np2PAMQKnpdcXJZeXp8HjVUq6mbcyE1frmlak3sYTC4GKmKe4mXQD8GUjd+ZT\n2Uiu\r\n=43a1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"37e784f0096eb63c0579f932f09ba770357fa4b1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.51","@balena/jellyfish-metrics":"^0.1.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.14-renovate-non-major-37e784f0096eb63c0579f932f09ba770357fa4b1_1616033002767_0.6224512506069506","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.14":{"name":"@balena/jellyfish-sync","version":"5.2.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba84468fd5ecd9cb02d6b9e52a27432be3a5a918","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.14.tgz","fileCount":25,"integrity":"sha512-+3KwN5YlmyiQEJea+fdHPigfAoYrPvWvCRC6qZAjR0cYvVS/ndJxwLn2zAWgJ6YOFUvOc4tTpkgR05Y9JKg3cA==","signatures":[{"sig":"MEQCIBCqTwnPD4C8sp6QUDCptL1mgnRi+knexLWkdNeDdv5tAiBs17OT9j6xs/CawV/jawiBlsahZfOnQ4OyQ7GYVw/iFQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUrYvCRA9TVsSAnZWagAAZBUQAIGidiC9ndBSzLVTA1WH\ntKdpVXc64tggcHuriQQ8ji+/MbeHHmfkElkFshzVj5Tw1o2WIz7RSItIbObq\nHbeB0OJVdiQQPJ8JggrAHf0iqW5B8ANhZ8ApJp+IofmnJMMo2EP/+e8QwNcw\nme/gb/rkW/G3IB8N74XTi0gYbS8kfk0V3HRs9PkAYdfY431DGlog7xFZXe5m\nq+sFRvYHZo+Siyr+LdKCktI22zxA17DB+IMZ7lsXU9OdhPUPPlFZ5tV1DzKl\nVlWeDKgL4t+FI1DNKZPcoCt19IRNyBYjzOAzCaIZfGwr/Deqa8oVjT5N+fsP\nHypcydnQzTq2gn4I1YOZHfreyS6naNScmHOgSuU62JUxBrhEC89Bsp9EX8fA\nl9GURXAi0w6Nt5aDojBlysk0OOQk8alOvwoOR8EoJmFe6XB3xiMwCcM/t5wg\nTXOe5JGvCAm3lIejnE7owurJoUE4a3wBaYbjAPRY0GRM3FQllS+Miz/XDW8K\nh3CTK3H8nhdPMV1sq+O4VAJNQAZWsmh9U4xYykfWbBS41f/5vgKQNBdrf9md\nINeECz4DjLg05RK/VGdHoqnWcQH9/7m7NOX+CMkp1kWjO3KyR3+gWgHByc/M\nQpZ6MKNWb4V2oD7rsCORBQsDBr5wZGolTV9zN2d8UE8unb5pHfoWVant+zUD\nZYc1\r\n=G757\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"dc45e2141bceb679851977a134499116902fa829","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.51","@balena/jellyfish-metrics":"^0.1.119"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.14_1616033327348_0.7668417990569694","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.15-renovate-non-major-9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0":{"name":"@balena/jellyfish-sync","version":"5.2.15-renovate-non-major-9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.15-renovate-non-major-9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9b3cce45e4161e5960bc2f50711760010ea69791","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.15-renovate-non-major-9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0.tgz","fileCount":25,"integrity":"sha512-H5wmwO0DG7R+uu8deoyF+V5bjVkeHlnikU8+ICENgc4+uyq39WES+W96mOfxv3uw9KLucs3T+fBM9itrBV2KwQ==","signatures":[{"sig":"MEQCIHowojGUVPDCoTud0DBr5rBcMDMpYQ4wb5ABhhtuYNPEAiAfaGnzWOLUfqyHgRyZVFaq3ZkUaEgYlsIs6SDOVlP+7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUsaJCRA9TVsSAnZWagAA5CUP/iFUGWcolL4OqKGGh1Ze\nxkrE37cV2FMfX/gH8MO77BFHqRQas9VsHGZ823bkohOsDeoXZQ1+d/BaMiQD\nT2HFgz+Rzp8s1Gn3QtRuTMzFnmgc0zVU0DSer29w0/cU7aAUgtr0PZ9WSr5E\ne2wDV8IxsPDMZaG0AeOOHH68Zfb8mmGTiDhY5BbbW/9LgHYjhGOSdzl2Qc28\nTlD8GS1BQEJuqNa0BZoCYYNodH5SH5zYDv1t27svR6qoGsXcVRw4p9J61pAj\nsI4YjKreXhfpZhxECYL+YGrbN8ee/AsDPZ3Ct5bC/VWdb+RBdfcyF8W7kCSQ\nawF6OutGJqvGWN+a8HTA9FPNefysvZU1lAMSXjTZQTzJqaPGStzu/qiVDh0c\nyQpNwwF8B6NylMlnw1+1+jwgrUW6B9PRZosQqng5qcq0/bN591kYsh4e5H1F\nBw0XcYMRt8f3di7t9hjV9pbvtUxzEcN/d6RUnSHwnSMb5MDpLT6KAkpQ/TI8\nIGgfwDilFMaqpb6+gllyGGewXSpd8pfZB2bYbO1NfU0uTbJ8V2iIvHkDv/hW\n+iBcXz8X/755czGouSFSc+aWMu+fxw60T0Wrp1AxbnAbg8BokTIdBcJDWTx+\nqu+AH71O5MWx905fTDJik89JWjtaMGbiNHfoatfajMVslnfPoppL+gFzzsYS\nZoGv\r\n=7r7s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.52","@balena/jellyfish-metrics":"^0.1.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.15-renovate-non-major-9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0_1616037512986_0.7786146856793823","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.15":{"name":"@balena/jellyfish-sync","version":"5.2.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"14cf3b74aef2c7f7b5b56c8b70499280bd522b7c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.15.tgz","fileCount":25,"integrity":"sha512-rDcMZPTvkzsWEe8DU0x5aWQymPYH+QXQMvwP7c+xkbx4Hp4QdL8kzUDwdDAAJxXQkNwk89fTgdAZDH9LIQJhuw==","signatures":[{"sig":"MEYCIQCBon8AOrzAWenvKEhJV2GdXV4BCrLDAImq5OYmt2oJ9gIhALfVxDpMQxos4pHPBRzczG6OlUs8DUSULOi3nSeG8ZrW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156947,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUsc/CRA9TVsSAnZWagAAKJ4P/A3eU7OZvX+0SoY2zUsX\nzwF7KkXPXD8s+Jf2AuSbkPnrw1GGeslSx4RGreBzaeSobdCFnDtwZBWC2Hq7\n2SmQ6ACzBpJiBQmjZj7U+z3mal35wPIbyL48y1N0QlUJjjP+6xWZ+TSNYC5c\njT1LrKCxhUm0dUOaYgjHy00XUUxe9oBxDfsJF2DgCtpOIlSD7cXNPJhg2VVS\nHlCmj/yivC5ty5gQKhq30dJF01MZohuK+CIxkeSEPBWy3/ELcOgVJP7kqYVh\nuJYoOYIqIhBWVgVQHxG9xs5AwtKTHdd3TdTaBza/aTQQFY/NPSfSz5gx2ILQ\n1Fl/B5RS5WBSxYU7jrYXRYVZr3Z84kj/CpN+R+5MvyEI0TYODoWhZK2uRKuS\nTt3A6g/iysZ5ADmQreF7nPSzVkl16rxliansp9EV6UeEEGAR8XDGUnD4BwaS\nxYXaGao4uNcfv6QhP3/hnxrjYWBXppwZWbVfrwSnjFYhm9JcZ5YUeLZmNetQ\nz7ITOzjkQK3MDkNwJc4J8YZDrpiWv/gYkcMr++9eTdlUJ2PXZRmjKLJmp5J4\n+QUiQw92irk8vOsTEGQdOLzvt6Bgzq/e+tOOE1btzAlLRJMCwE04kSL0cmPr\nM/LWkND3IYUEXYmp5nwm2j2xUkAuO8wFpRKFvioA3qAWKzDc1zzNPHSnBzLI\nOsBw\r\n=4Guv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5354b2523a01dc00e1d26e3a7732b72f8abb8e7f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.52","@balena/jellyfish-metrics":"^0.1.119"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.15_1616037694772_0.12110283367718555","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.16-renovate-non-major-dc6458a2987542583a06f5fc5c8cf2df30f009dd":{"name":"@balena/jellyfish-sync","version":"5.2.16-renovate-non-major-dc6458a2987542583a06f5fc5c8cf2df30f009dd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.16-renovate-non-major-dc6458a2987542583a06f5fc5c8cf2df30f009dd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"213f85e72ead3e644addce80ac1ff675c0e3bebb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.16-renovate-non-major-dc6458a2987542583a06f5fc5c8cf2df30f009dd.tgz","fileCount":25,"integrity":"sha512-/ZopFhzCJipqVU2bHGV0LurVnna8jmd8Z3UCLP7uLfTTEL1v0Q3E3hsvK2j2IkZXZsBbqnesR7araJ+uUQReTg==","signatures":[{"sig":"MEYCIQC8fpWIliCwr3NYnIYeoy0RZj+qxjTEWO1i+HM2MPFtqwIhALQ4SP+CrQpe+bJ8kFWKA/5HTbS08E/n0BKxg32IPaf0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUuhhCRA9TVsSAnZWagAAoicP/i/nn5zDpupoZmhCv2mf\nm7m541hDUQViOkoHt1NHZ8jQApw1g/0NXlj7vJKKsupgB8Fhs46zznKYxSNM\nn1HViAcxiMumtrNlo/OPOh2Bde8j8vbpcILZb2ctbiC7BiV2ONxLnKmBBmqm\n0rWqfl5+hqHUMjdBwPJJ4R70DeODJ80qzJUJ9eEP9flkWXhLntK6mX3H4lzd\n9b6qEFELoGLNEhGqVED1zBx3Xtf19sJcxVZaSfV/6avd7vCPgyrBgXz96ZQ4\nBy35pQfzzfbDRlR3r76anrBLimHfjVQzMsYvDvUDs017WvbSCJCCt7aAHWkm\n81s0fDKOrJU0+LFeYd5xnUUua9LbdCujcn1z9LqWzf0qTzsXd00O8+hy+bjq\nf60zGWRj0hrl7j5QS2pei1QqIL/wyGMGQa+LnbyOGifwIi98Hi4MN78vhWtZ\nG2mhyo8qwmNUpUUmTSaApoPQdLzezrxEO9VAuIQ5s829VjS2fp1tCZ3F8tfE\ntejWWFhwlOY2+ksRXuNNzC1zQ5X9O7z9loYKntjVQ08A/Fb5Px1GXh1dSYtR\noDUm3MIXYrUMnFehIDnfLvK5VTE5BBA9yZzrJQO+PmR46Mf6BSESQGW68OLA\nHOnW4A33D4z/er0PIfbSDqfQ/t1zEdRawLMqlTy6y7h2Tq3JLHDM+IPVztxv\nAmJv\r\n=hItk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"dc6458a2987542583a06f5fc5c8cf2df30f009dd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.52","@balena/jellyfish-metrics":"^0.1.120"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.16-renovate-non-major-dc6458a2987542583a06f5fc5c8cf2df30f009dd_1616046176919_0.5396468537244974","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.16":{"name":"@balena/jellyfish-sync","version":"5.2.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c8f681d0615194890eb629d88e1668081dbda161","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.16.tgz","fileCount":25,"integrity":"sha512-E00hidycOeL02gnMrW/aI4ZL9MCVeM2lqfe8ntE8HzYBAYK5fWcOs8cpApcypvpctOaq+ZfFr5NNDSpjTBcn1A==","signatures":[{"sig":"MEUCIGQ6EptPwFueoA9G8wO2NWyw71AjSTwuegKc2TDqTuqWAiEA1olNEjk75AgCZLCbC+jRUIJi0CIDHdSw3NDFTlDjtV0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgUuksCRA9TVsSAnZWagAAMEQP/0pjFFxoJzQwORcTl+5n\nQB/QrnuGJvTx74PfoBQJM7bpAGhNDKDIgOEEHqFr8AZroqZ5v3YZtsOU22+o\nedMrf5qqlX1agjTIVg3yvw41DxvPY9rXA1++QdWFFNGNNHhDfdoN5ppguszK\nZItSY5N090Erl4NDUtb/RlLWZy7M30t6Eo8MlDj3/mKcPguwYDjbccvwFOy4\nMoCXgy8E/1rHrThVq1M9qvbSL+sY91bAkQIFb019u/wDDItPxKC/hvc2Ts8P\nX7vIQuAvdX0S1wZXchbmNB+42FxiV2YgGcIoZwd+qs7sfuKo7opp3m71/ZlN\nrBaEJbAYrdRDZXggZxc6iJO1BgjTMIqqXN18vXnuKMHXFHTqbC34yJBE9rL0\nKkSdy+SeYOR3QDFH76W6kuNthNOUD5TDudy7i+YQfjZLFwjW/Qh5/9ZdiCV9\nNpfVzSSaVvfiyo9vv0yc9d53DaRjYhzkXZiuqWPFvnOXL7AevQr6G0r7Qzr8\nFaoK56phq2pRfaBmGY5EFC8KR6KQ8vzCjUU+G60al4mphgkMpKUKHPZ4Wzp+\n3ZjqfX89y5A8zBakAo1rGPhCwc+yPziLt0f2Anh6iEGJtRfgL3LSiM3eL8Zb\nW/MG+rpuum7SyaC6OD47giGeVr+L67qrqTsG/6IGUPoQGOz8/grwL8xjz8L9\nUjI8\r\n=bP2A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c31acdf547fa4f8e68084341392f44a2e2c0f695","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.52","@balena/jellyfish-metrics":"^0.1.120"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.16_1616046379571_0.4880446191438297","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.17-renovate-non-major-eeaf2ffc48b82f6a578cf786f83f2ea04884041c":{"name":"@balena/jellyfish-sync","version":"5.2.17-renovate-non-major-eeaf2ffc48b82f6a578cf786f83f2ea04884041c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.17-renovate-non-major-eeaf2ffc48b82f6a578cf786f83f2ea04884041c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca6735dbcbcb076f66c4c75a54e29d164a20e338","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.17-renovate-non-major-eeaf2ffc48b82f6a578cf786f83f2ea04884041c.tgz","fileCount":25,"integrity":"sha512-gqDztnAPfVYLS5JVDhHC6LYtWS5sRRZZL84OgiRXedheo1/6EavRaWOHWmSMdrRtk5xK+kmtBRkG22ged5ohdg==","signatures":[{"sig":"MEUCIDMRbEX7PJu7s4L2QATJ+Ny+UVJCP+yRw+MCCjAqQRkfAiEA2Ma5OufYif3Tc3t4CCJIkRwfBrzCrAnL6j8NvyaBzFg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157783,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVRiSCRA9TVsSAnZWagAAGhIP/ju2POHKnJIBN+V+HNuW\nvodEf8QJ1iPex9Stqk379Kf/a4RhUUderPYfsgjVRdKzCH8mZOQ5AlugudBY\nbxQrTqk6pmeDcMYnGzv4vW3xiQ4Tpo/+owPg/frtCV7I7TV+aVPnhO+vJh/k\nWO9tF4j8wcMqI6/c1Hw1YiVvqzeXRGG9qCLw9Ddy9mVkCLjDRtYyC0WUIAie\nRgEjQA9p0tZ0A4VI2PG9/1WHkv2s3CNEwxgST+lylmukw5a4mVaZSkgl4YQY\nK4ey5LXK8KySekuQeQP6WlpAiKkqVJ2vF1zmrZEIqRgdFg+NhtVbJNK4rRs6\nHkyR8dfF5goHq0FSR/Qa0J+h4U2kNDxhDK/LP2qhCpe8+CtdF3xCb8T0+YBS\nCLnHt0KxTdBvn4FrgGaSOi5fH526bzzw6apYdd4KyOIaFAyECDzNY1ngL0yz\nHauUOmOZB41sB1O+qOo/4qzIwvJhu7kogtt3vNlfHN4PjgKg4e6uSF2whI+Q\nujkhoZI8JGsc9BiEibFFLzkp0VeqwhryDB3rI1YtSjzcDhQi2uuF7MhPeB3h\nocm24IKlQllHIsRjV1lSDWZj/4T8v+8wghy3EOzge0l3zJ8k/hOTZrbY9fci\nj2q7i2RSM2P8HZ7HKMlQB6zlVGDrQGG/F7ksuOG4IKwYqLENzHec/6mhvVCF\nEcAV\r\n=EVjp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eeaf2ffc48b82f6a578cf786f83f2ea04884041c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.53","@balena/jellyfish-metrics":"^0.1.121"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.17-renovate-non-major-eeaf2ffc48b82f6a578cf786f83f2ea04884041c_1616189586440_0.3278648183969992","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.17":{"name":"@balena/jellyfish-sync","version":"5.2.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1bd8bf5bc90cb34b2d3bcc466f6b4e993295f625","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.17.tgz","fileCount":25,"integrity":"sha512-u8TO6j+8Re0lMYmJm5lv1wzeyIB3yGgIlW+sKoUMSMbfSXYBDKK/qp9pC207Pft1P1G+h0eXJMOIWthzIg3ocA==","signatures":[{"sig":"MEYCIQDr5wBqCr6znfHL9PUH4k8sIFZ0FZXhARox8wHSi/jVQgIhAJoJDayOoGXddcYX0/q3GXeTJorkQNUoFTBShsIiEzHt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgVRlUCRA9TVsSAnZWagAAAwgP+wZyy9oK8m//4Yo8SBAa\nfrstpAdZnUYcD5wSP1NejTvJDRTE72FLgBa5bCtUiRK2zJlPMJEK3LrHHA1w\nKeni8qg4FMrL8nHuiQtQAeENYd9sBVAtwB9c8cXVkBm4RhYutdOGQ9aA4Uq/\ndLce6TsyKrepEqnZ0HY6UxTcP8jLW2dTdYucrHlg1cmFSpzUP8GMHxwc6Ihh\ntXq0vDKPvVZZcE9+XuJOI6gyoiIhCttb6/UrQVwo+4sMq0314CNxECnsDrrU\nVXvm3FZquhOtnd8069CmBz8RdAbkOnyEWbS9UUdDZOJ25xHInuWEvrIlfEE9\ntiXqKyVHx0DCfVwpCJDI5RTfxS8T6e44xG5LugMr8tZERv86c32GZbZDl4R7\nqdT3mTDgvFMQHIXcwERQOzlM0qJ3V4qHaPqz2Ud+NVJPIFpTP5P7TJFjn1RE\nNjL43e91jk9JHW390Ynf2JRuwa4AVCzK1m1OprsuMw8Q8LZoctIqc79dzwhS\nbdmhXNdoOWSbQ92CJ23l3zP7g3N+3Ho1sjxixwS/FdaEzNDL/4qCfpiz2rBo\n4IC7pbhCYlpq1LLKSPCDSgjb+plyiGAiO1uEDxDrUvMs9/RWllCSMCEx+/YJ\nRAhsZo3ipWK3FaHTSyoTqhlMxW1X0uJNN/74jW/O7gopITnFXUkiaffp4+kG\nloXz\r\n=yxBz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3994030427cfc4377fbbed1b6456b1b438a145a8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.64","@balena/jellyfish-logger":"1.0.53","@balena/jellyfish-metrics":"^0.1.121"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.1.3","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.17_1616189779616_0.07086914184333759","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.18-renovate-non-major-251d3b4c8605d10c89e79677e2377615866d3623":{"name":"@balena/jellyfish-sync","version":"5.2.18-renovate-non-major-251d3b4c8605d10c89e79677e2377615866d3623","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.18-renovate-non-major-251d3b4c8605d10c89e79677e2377615866d3623","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a397fcde03d912f9619f80b71728442d3514b2b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.18-renovate-non-major-251d3b4c8605d10c89e79677e2377615866d3623.tgz","fileCount":25,"integrity":"sha512-XWwHi13hK+ECYyTrC6GoeEG6lqDVK7k8ggDYc102lmxUnhpCx2FNwx9Gq11gYQjqhIOs+i15YWbqLaLx1qlGuA==","signatures":[{"sig":"MEUCIA9p9NlZkLVAwdznxTu3QW3AybwveBNMkATcRUmVJ/24AiEAmrkY0iXncWVrktHdC3b2LNzJn2JOMhn0qUzZsOzo0QQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV7ckCRA9TVsSAnZWagAAacoP/0YVISHGd9zseT2XKHdU\na3qvAruPLQHf4mJHq/3Mcp4PeowgHrYUAAttEOdH1hSgKOSt0ypCJIdQ04OL\n7ZVJtb88fs7cjeejfwNvPrASDvi5uVD4fb8OdoAijfVZNF+VCDqRUxvFNuak\nGtjbVYxDJDRHv2Xtq0ALu8D69/zFpw1/2mqORvccCUdnwAkg14vlneEqh0HD\n0PccGdGQFl3js8IicG6IQUHr2g31c6EhPbtZaoDq9D3h9RGG+DXMVfNqQvpv\n/Ljg2QMSQ7AE4BfCjJ6IjjHjSmJ6p1e7BOmjEoN6t2ZPa20FIeTRxT+C2pqy\n/7YncuxBCb3aZNTbqb2f/TIh2orzTX3ShKlTkh0lhoWY6QDsvcpvfOH8V9RI\nz3p1Xt3GpJYOeB3X1WvW0Jg3vF+4+LiMQcDYp3hAVbr1tjqE9i6HWif6ug2B\nWUeTaGzavvd76oWXsfHGSglRVuOcLjKSIsb8E81XpDxSN0eEgHweIQzj13JR\nFCXMs5XAY58lqD0Ounekv9xvAXHSW4p5M02U1ZUPXeeyE/vExir4h5+qzDs1\nsHdhhNrBQksmAOUm809UzrDOdh7LSPzyT67ekHB/MhmhyxKv/WlISHis0UPq\naaGwkF2Un4uIqm5xjxuXwkJry2JmZ28CAuBvdl3XJhE+fhR1s4W+A6dRPtIv\nR7RT\r\n=PJ/u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"251d3b4c8605d10c89e79677e2377615866d3623","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.65","@balena/jellyfish-logger":"1.0.54","@balena/jellyfish-metrics":"^0.1.121"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.18-renovate-non-major-251d3b4c8605d10c89e79677e2377615866d3623_1616361252042_0.8363244121264608","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.18":{"name":"@balena/jellyfish-sync","version":"5.2.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0f0131850fbb9321006fdef49cd7fc4127403e70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.18.tgz","fileCount":25,"integrity":"sha512-T823etM3AnY1jdTogWuVjoFmfqW1TBo2WWNtQzZL9Zwfdt9upitHBv0qLnmmANGCK2ueJZiJtIeNcT6QjFQIKA==","signatures":[{"sig":"MEUCIBPO3thjaGKwmGaXFhw0rce8vXP27T9TR8YBsxsZypcbAiEAlo4DzQdElSK6u/0ps8K84yYTRkvrTo2LutUsa2lRJrs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV7fkCRA9TVsSAnZWagAArJoP/i4QGhTK6l7LSHxRhsoZ\nuy83Z2rwJSpavjYIS/B8VXy+NQqkbEeTiTG2C5sL123shjs7R801IY+HCDz2\natxpsz4pU8x+0vlfbjm9HQGsha0r+8k5GnGsMHTrDXY/bWFDnMElHgjauXSo\nVwUf7NzjZFV2kPDGQKs33845PFRAI4g7doyjnTeSdiDDHBGZ6LatMZLlcP0+\n55XmF+i4uaLg6ehr8aXNUSvSjMv7FrjuT+ySiKmwUdgtJLzBBk/fjEO+5PHV\nBSgEOKc3cbDUjk29FzCW83Ppb7vKrOTQTqXn83eAz30G+jwNVtN+J5y0Qlbp\n8amZXz5SvxyKnFwz2ogBOsdzHn3dsPvaYWUqjwaYb1wydcLMOgQdCSHotWV0\nkfFbdF5OumIAn62BAc58jHFuJwW/w/lvpk/7O7lT0bHMjcK9UwMk8ObdrQ4G\nsiyz53LBftHLAFJfSnZQtUTr2BMeijRvVoe3fTMRgv6TxNY5vpcIjHJbsA7c\nGLQ8nMLNAKO1RvD7ypIJ+CK/+66TLQlh2xC2dlEFsINHa08LPafxHvHiB3dQ\n3FEZ1XZTIMDbShQzbwZNE0GGibgF+j5keWwqdEu/pII4MdMaifJCRgmwStj2\n86XP4DPyvTrAnnReFLgXgrmjnywCgPMJX9tkRnTtUYBQOn6hM9qMJvmLXBlY\nRtN9\r\n=7isu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9fc38c37e6854d861118c750e568f7e8820eb0ff","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.65","@balena/jellyfish-logger":"1.0.54","@balena/jellyfish-metrics":"^0.1.121"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.18_1616361444183_0.6939463563788699","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.19-renovate-non-major-49a59fd20cab333dbdcb7996e70809deda5802bc":{"name":"@balena/jellyfish-sync","version":"5.2.19-renovate-non-major-49a59fd20cab333dbdcb7996e70809deda5802bc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.19-renovate-non-major-49a59fd20cab333dbdcb7996e70809deda5802bc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5283bf072b5da20ce556563a6e0c050146b292f3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.19-renovate-non-major-49a59fd20cab333dbdcb7996e70809deda5802bc.tgz","fileCount":25,"integrity":"sha512-cRluHgDw6JIGuuXDBLODPR6qfh5pzL5T99Dd5gN6r3mzqEh3hiTYi95a4TnZYTyRlDOzc3obrHth2ulgGd6edQ==","signatures":[{"sig":"MEUCIQDbHe/3amXc2lE8qzY8pwSeH5wLR/B0DC6LuBLk2Z6YqQIgSJlVN2G2JbzLssU4D/bkvtqK+n9m6kV2xozZmWgdaY8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV9a3CRA9TVsSAnZWagAAHz8P/RglMEggMrXySKOedeFK\nVMw5ceVfnx5DAgRy1P5VFTXiGr74STuivAtrmGHCNMHtM/ZVyfvW9RRRcy9T\nwnGXIcFVz1MX8W/TyDyHABdOLXq86UC36yVsLn94LKp/eKpEheoYIpQnezxy\nVonvlfnMno7sJmaobD5zQ0YeHC1+IQJWRfjXGIAZTPzACjQrnvtlNdWlQ59d\n7tIOH0IYSkeoXGh38uk+jC6U5L4ZXc3f+QEI7cQOZAJBa+4s1F4GN7INHsdF\nOasms5nOgqiDeasg1XOPKuKJ3QkPCG/DCASAfF7v8m4gPxvg1er5riOFSVLl\n/gUVFBS/YdhMNWZAKekpg43qak7Vr0fE8AcIeIPBJsAR4DLAkoFe/V8rtCTA\nQO7aOWNYS0zjC1a4R4Eax1qzCfh/1zRgHp20J+R/+UEkrfFVH/xrSLBQiMqs\nGoFJIm1iY93L1XmJcSdjWJ3fQtYOrQr5n4cCY4ZNZpjzYpRnvjeMNSR85Chq\nnsrqGal/GfzBZ68mkWOPiYUlUvjwQAUh+Sica3DY/+m8rPDpkUi1uG1mfYFA\ncXhyDmmkbHcUMYVgbAsQx31ka+jbmx5lHphgM4nrlzn5TIFynB6BrtfKgC7a\nthOjgc5UGRFlvuWNcsI23k5StVeT7k3xXXDSFyX6nO9oxAX1X+ZSNuz9MYja\n2o1b\r\n=JraV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"49a59fd20cab333dbdcb7996e70809deda5802bc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.65","@balena/jellyfish-logger":"1.0.55","@balena/jellyfish-metrics":"^0.1.122"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.19-renovate-non-major-49a59fd20cab333dbdcb7996e70809deda5802bc_1616369335245_0.6770370625021132","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.19":{"name":"@balena/jellyfish-sync","version":"5.2.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"79483b291ce0371a50360004b8c1cb898b8e44d3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.19.tgz","fileCount":25,"integrity":"sha512-JjM6z0IWA33s5yv0Fs1OahImCCSZQ+R4KAXstRcU2PMuhyssrkQQ5KeumA+7b0xIMfHdMatwvGynKbbXiRGMpw==","signatures":[{"sig":"MEYCIQCA/a1qPxDhc99O1wr2OR86xoDtDAd4sN8y5tEP9v74mQIhAMIuDM1lc0e4BFDn8s1TGOvoeipQaphEELOSzeU/fD+Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV9duCRA9TVsSAnZWagAA91EP/jZdY5VaLye0X4j2WbNu\ngb0G3Z/V+SAfC/MNpzrOvTZayLOcCcw00VfLKgEzafl9i/Z+CkJpnCvWwgEW\n2ysgR+dVJ4dDa1jycfo4WJYdOIsdoDKeNiRh/A/9aYJ4D/AZ6/u/n4hBYaqE\nMLBRxtB4ZcxAK2HewkAeEdUyzveXXsTqojZ6pvxpuHxoGjXmXJ8rtMXGGFq8\nEvJlMyqdIYutvKrWvgloNFNVo8EZti1RRUSNcmABCe7MKP6Jhgs+Y2IMX0Ii\nPAWNCE2R9WLllV+hGrT7zlGkpOrbPmubU5HdAW6InV1SU9eMa4rfsckW/+6s\nBHRWa2pj9TVopXCzZFhZklj1XIIqCV0AweB4EZ1l01+tNAC4109HmtBYpNpc\n6K+qi4VYm0J8EKr3PjYqoIL3giSdpQSV+hcd7bTV5v25QImk523758MP80BV\nq5rb6suBwDVtnrdQXHqQ5OlSw0obhQr50ECYCGPItAyiqOETr+pFGckGmlbe\ncPUDFrpJv+4pgNEFkJVjpOqVfW0For4ZddhOXdGd05kRKgwgOHGUooUg7MSp\nFOg9S4c9Inq1iuLqNT4jkomvATcoj+o9J4y/KSNuZMjkWijllly8B8zGNatM\nckgZ7JczZqqQJyLnbiAV57WqPfuzrZ3OtPt4pU8L0PUn9rG7yeG/+npuX0sp\nQcIP\r\n=y9aT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"38841d969e8bf3f1fbc23b81c1c0984e8738da06","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.65","@balena/jellyfish-logger":"1.0.55","@balena/jellyfish-metrics":"^0.1.122"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.19_1616369518362_0.7988965221833686","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.20-renovate-non-major-aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2":{"name":"@balena/jellyfish-sync","version":"5.2.20-renovate-non-major-aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.20-renovate-non-major-aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9dc4f07df10320e4c850937720b3c1c442e9131f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.20-renovate-non-major-aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2.tgz","fileCount":25,"integrity":"sha512-goNTPGtO/q+h3chPnZnCnFpjQgu1uA6143/Gia4qV7kcUygixnoQRm8mmJn5CT5RJ4p9G6fffef304to8WvAeA==","signatures":[{"sig":"MEUCIQDjFiM9saadew302pkRos5T3quGCFdDKqBIfws6MPsNjwIgCbuE/HekTUJlomplk490+6/wOb+OolTXfeJ7AlzDzl8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV/Q4CRA9TVsSAnZWagAAlA0QAIBjlkG5UuLGO0VnSeA/\nhDcw7Qo90pcBUB0WW/ezC1i4h3NzpXjjmddHGr5Admnv5wPcCwj2vuGP1V7S\np5H/yxBP8d43DS5GCiSWgfhe9eMt+r47MY9myKt4LqqbjxbhEOFIaVXM78kO\nlKdeQzqTFcA6xhDsj0ktNxganXEKOtKPnn4hfcg4+CWIntgvfkIkX6ka9+nL\nYVJF3JyZNmix5h8eI0viz3+dsNSEt3p7M+JGq37DF8olrYnKrOt/FWpL12S4\nC3HXhoQjuEgPsLADMxsUBB/uxXY/3u8B5YhIGkljZJq8CIa1qLjf5HmO7Klq\nMoIhgAKhJXNp2yf4ztFAjqyKn3O0apZTfmVjj6cc3DKSt84hKBfxw0MuMsDr\nBOLx7ZgPjzvTCfGg97nfMbDufErHzp4K+rqhbLLEvxO+9IBzZQkcona9vspI\n3BFaaJfgQgrFdZh1a/+XDZSTSHZ3PhLeWTuRxopJR5RfMHZ+1ZQHJirHdMho\nTT7wLUQRaEJqdgeJ+sYo0avRqGDIkjIJg8cvEzgVmq8jSsmc+h/KsdiRyKKB\nl36CZRSPqVKWkarBHpDs9pYBgYlrkBXbKH05Clep/bhom196WD/VR0nBSbF1\nIrxSILAvWLsXr+iwUprGp6r2WzjngAh1c1emQlRPBmjKTAGlodxTce5w1wOt\n8gAH\r\n=CwUX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.65","@balena/jellyfish-logger":"1.0.55","@balena/jellyfish-metrics":"^0.1.123"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.20-renovate-non-major-aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2_1616376887789_0.5457111280135667","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.20":{"name":"@balena/jellyfish-sync","version":"5.2.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b6a83e4c15b201060579f0a13b1c15ea5c6eaf6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.20.tgz","fileCount":25,"integrity":"sha512-POZgkqhX1bL4HvYeQiTdBQ5LzF92JKUJgu8lLA6765d/HrsSVqQ1pHfR5xTn28nxvJsD915xe5bUst8Nm/I+Fg==","signatures":[{"sig":"MEYCIQDwlmsfYOjrQe2UQJDsoS5tDSW0a/r8Ych9fEtlsEHf0AIhANL9IeSGTtnhUxBDSDOPM+6EZl7IGopzWsn2H396q4RH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgV/UfCRA9TVsSAnZWagAAhckP/3H0ZBFCHFuZmE/uU6vP\nKFPj1qnW5nmynlhwldGGeNnVqef/E2UQa/iOwlVtcznTP8mc5jWBd8jn2HKJ\nWIFl1V/aNafGr0kCcomRpNlXnYHhZxo1GlT6x+jaaB2FsVgcXdUGDAB0/jaE\nTmNnA10nEpZRs/7rM0dEp6bdsB+4fnAOE6K5BA6Xdjvszl/LR++jFtwmRgQ/\nYM1nN9b3bBK1742TZtPkruP+6+vEL88+/75G1ZnFt87LQh2UuVTPl5SzlcWo\nUh4afB/F9Nqc3/oUWcKckGF85m1NURiQmliIqpZntxS/gFmW4taF51CA1pS7\nY7vZRVvIuBUjEvcLYjKRPXn3yhb/OLh8GgqiTSU62FCCHQfhvGlovKJVKx+k\niy8hOcWLvYu0hZYo9n+1ktCWtEDbd42mEYWU2+oPLUL2Eu7ZQ2URydWMcTIE\nOBusr7veAdHuufXN21LMp9AyANvq9qDwYnjsD2YPNhVBwigWYCjUygvQsRKG\nwgfsu07CWw3t6NjL6wdQiP7f8FJVLExjJtvACzc0A+/cQtNv1tRSpkRL6b/t\nocCXa1EtcTsHgOR5jDu8mnJfHABDrRYCqpqBKfr61PjPcTu2f+bp/yh0dXnV\nZyj4awzmJgv/BtEcPBEjd9Oi7fxg2KHbNDe2I8vWTGwBA8yloL/LITyleqwj\nxhAG\r\n=jCq4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"04e1dd59f6a4c0dfc0fe046da59f1f278def331e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.65","@balena/jellyfish-logger":"1.0.55","@balena/jellyfish-metrics":"^0.1.123"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.20_1616377119151_0.7497514128099672","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.21-renovate-non-major-5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc":{"name":"@balena/jellyfish-sync","version":"5.2.21-renovate-non-major-5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.21-renovate-non-major-5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a03a15a32dc743ba7735438a2aab20ab93cdd12f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.21-renovate-non-major-5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc.tgz","fileCount":25,"integrity":"sha512-0gPAVGBJnrLqG3pm4WlcNRDr0m6tU0k06kuaf5w6IkkhEnts2lP9fKRZd+I3CwEZQDef1KZS/4bNjpd5Xv9YRA==","signatures":[{"sig":"MEQCICH0Sg25809umBZJkrerLKqNi/8vKMm/vLaUdPNFMIAPAiBX1mws4qJR+HQBMLeR+Ruo95kqSSqdaZ+gsBTAhTdaoQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWBKjCRA9TVsSAnZWagAAEekQAIxbkrlrbEWl+pCcNyup\nlQQ4649lroUfWbwMvVNJfjWr9Ffwc7WhnXuhQCkXz07qkLGrS/68RxQb8fL6\nGfAJtOmgHQsn6rngyx3EJEMlvKX2mV7kiMw/hORsRiTijH6i6lmu642P0w7K\nqhiNHi5VeFSpTpZVsqC0mTI3OvAxOh6TQOpsCBiaCxhi2LrnZCfiTr+1nLpu\n3+GIN230Iph0aJQXH2zXwglUwoHrBW0htTxzOLsYDOPcih398U9oZmZO3M2f\npdJOlRnZM05Ick42q+LGQr5g5tClSMrIhYEJ1G6iotGVOVpgXCr8/SHsJVPD\ny6N1aL5o4CEuJfAO5D9UoI3yDASLjiPoFZHXMiFfPToWfz7YKFUhDWCwuXTp\nM6QuMYzI/FBpfkCcHjldIcmYSu8SqQz37L368TAjhmwQK3UK9aYNahlYfH6S\nNtLDQjGhK+p+dTK5Ftpbmte12iVKiw5kNBGDvndaYifiGT05qOEeTHsbEdVV\nugtzfkJEXaWW3BypVuDbpWRCwhogXr5YhS7jFCdKV3xMCXirdsqPUkLeOVlD\nI6QgGRgtA7WEnipvsG+kBO9CKWdXNgVsOGqd0xNMettVTJ2KFj4/fJ16FlX1\nnTJut39s2oKtiZG5jnWrotMVENSWpPWaMmhfLysz82LEPdN1JsceXdnWyNuu\nggYc\r\n=VO9P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.66","@balena/jellyfish-logger":"1.0.55","@balena/jellyfish-metrics":"^0.1.123"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.21-renovate-non-major-5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc_1616384674741_0.2928316461604987","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.21":{"name":"@balena/jellyfish-sync","version":"5.2.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fc0396efbef86171b7d4c0b66f160b64950d222e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.21.tgz","fileCount":25,"integrity":"sha512-Yr00+FkQ/BfB0KUHC7ApRga8512h22IEFQ/OFqAgIh+EaGKezkg8N20KT9ScmTFhTBUYvPaAyTTc2auPrEPjow==","signatures":[{"sig":"MEQCIGzBqZh3F67yqaJ0ykUa1yWARYvpRXe5c7Jee+Q7c0/vAiBrd749kmytGTqvy4zhjCUhJZWxLK7T+TeoP0nngbG06w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159271,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWBNHCRA9TVsSAnZWagAAgdYQAIOa516+Zy5QUnJDK5VN\ntiBh04v9ufHqPYD5qMmcEMhQJCNG0wY8W5fS9RmKZAmjOcM+pA3yiValnGdf\novAhEa0ERsLUtw1u5QaMVFwRy2lXKjZNJCZubJbcNOk491xKwj9yHDs45lWR\nyaq9NLtJBZ1D22+Acae1bLz2QrO8fjoDHSYSZ6lRA3sxHHSo+EdLiwA/HRra\naPUI68Xlce7vIVldfaNONP5COBRAwo98rTRzTvuCEEcLJaNmE3OqYV/mETtQ\np6rvilkRSbhyU4jipb7KeW6BL8595yKHcsA7QGRbfoVZoh9eKVj1DHHjaNDa\nGHmott/ysOg33zRrj5K2DCmu1GGGIQHjFGqWO3a7OivggsQkqAuSyzQOJ4Z1\nsqbxxATu8RJ1+Po3dfSSZYer4Jh5S/PVkOKaiUCC4O0EFccaldFYpRJzWxf3\ng1YoANMgI2AOJS4M4/c+AsKwv0YUNIlsnnXlFAayKPTu4Fv//tNiSK2ZpWrH\nON5UihYJx88kRULFYpRNJqdkswh45mlwEigIDoaT7qWbCJGbfeL0RZk91IFn\nPk6ux1ef+Cn6yDayfboH46lHFvkzuDN4mUBnl29jb/Im/5d99QYXD730ADq/\nHjbXGeWlo/cVwmCpMdBbps0T1LW8x4lXv4WeiN/wXEu5mN8bezxSoMAUhh8U\njcTT\r\n=9r6n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5dca5e762f51284147dec21bba8e81f4a5a5aea3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.66","@balena/jellyfish-logger":"1.0.55","@balena/jellyfish-metrics":"^0.1.123"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.21_1616384839500_0.03277748667511604","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.22-renovate-non-major-39968adf6727716af3855ba7ee9360d4d882db6a":{"name":"@balena/jellyfish-sync","version":"5.2.22-renovate-non-major-39968adf6727716af3855ba7ee9360d4d882db6a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.22-renovate-non-major-39968adf6727716af3855ba7ee9360d4d882db6a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8e852ea2f8d677e1ac7891e86ec8ad753ad8d9c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.22-renovate-non-major-39968adf6727716af3855ba7ee9360d4d882db6a.tgz","fileCount":25,"integrity":"sha512-1odfSs5b5MouzEXlat3ZfIGKVVTN2kkEcpOODSGSV/umydmOX+mjVwK+gxSMK52D+JRD3ehM1WaxhRdjl6Dpnw==","signatures":[{"sig":"MEQCICuHeqz5RJERnAFwlPfFi7t4whaHStXP27ybxoZqXS+FAiAX6bgouPqhW7Y2SaBOjU0ZD/iO+WVDAhYrf76RvPh93A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWC7CCRA9TVsSAnZWagAANmEP/2mZllXZPhR/f5B+IhSh\nQ6CJLb0HKB/c76+QN2eYSiVTB1Oa72CCE47LA/aLTOAXhnU3byEmVQTZJhkA\n9djwK0W9tkrOSvYSmOm65r5PQEcGxm4R8w0LV8k/7XaCC3IAqgUU522ljdig\n6zGYSh/RENQICqzyBf18XJXBqLjinaVPzKjhxQpoNE3lgDS0NdXSkBfd/TDp\nFLlFhhKygy54pILkN4yPW82MSHhS8kUy6JIVKdP7GZs5/bbOe5AP1qfSO/pM\niD3iQxVaWy+y06k7v8xGrA/h4aPkQmr8gj2ZUf0s8Td2yg90uTTkPiMAQBbL\ngDlsoM0z63RT4jU9XB8HS3LezLjkqa57lm7NwMHyhS3GEVi1hxxJrjgota2B\nG+EK0vQn9ThEmVBOQ31sfH5aNa8SpVwd3yVDRgS6zaHeA70YlEQePyH3tNhn\nUL+iB6bWE/LaS4PYWPmHHXWtzdlEu632AHea19YEQGAe3MH/PFF3DO9vA1J0\nJGYGY/d55la9Q10XGdmbbKr/1JsBBM3UHdJPrAiI4ToXr1zJYH1IBcX6mcMy\nFvyAwmgoIZFRZmogC1ZGHjunMUVFnP044ziNWsNv7L7I81/uLWVDuZdXkt/h\nKvXOBqmFFqetaxhF7itsYNVFekI8MygNcIbpR2/OB1ESGOLGLMnFK0IrH5vj\nGVc4\r\n=gKRy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"39968adf6727716af3855ba7ee9360d4d882db6a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.66","@balena/jellyfish-logger":"1.0.56","@balena/jellyfish-metrics":"^0.1.123"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.22-renovate-non-major-39968adf6727716af3855ba7ee9360d4d882db6a_1616391873697_0.10544983046180123","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.22":{"name":"@balena/jellyfish-sync","version":"5.2.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6660412cc34916316276aef8bb904a2bf210aaa4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.22.tgz","fileCount":25,"integrity":"sha512-AYDGEe6urnMPvjjOJ5PRBz4PACSJhwxxtGsDyxIdePkjnU7atZTVF2hD+IknZiyn4LFcOuDjCMdyww+GRNj1Mw==","signatures":[{"sig":"MEYCIQCw75LjKkZXcj4CM+O4i88a2exvyjtl4DmUQbmm8UxbxwIhAJK54B3ABkeCCeOV8lFovExD9lcx9zwLHbstiy6X8X/S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWC+FCRA9TVsSAnZWagAA1d8P/imPSF9gA6SMmzaan7zK\nv0O0YQJWk5+UW0JDbkQBcbLXDlBzHnbH5LG3SBvcKZcbKVTvSLPlEv4c14PW\n0kRC8YxbkP3agsVtMrCLNpjMsvnQchu9rgvAlVqW+r6pZCi5Cf4DJHExa9Lh\nj3zfEopnQDjMsRXDI4hSyYu/+5btNvh2Nd8nBRDj9ur14u9os5+4H/VQ+y0H\nfNu+buEETomC6KeQQv6gkv5vfqD4xUQ+opwOElfyVp2f3fHlIo8V4Z69HYjo\n5vvEFZAuRbF7ZQNe4U2YNZurNJBc+/XQwn0YRumG1tYHintmngaxXX0+9wPG\nb4fnMlifOthPYOLhJfT+w/e0zuWPc173Sh1qx169UUPNg2hQubFUciziuZ6u\nufHSgECRo1987Dp0Pr+hWJWtjxlTp1/tNedlR04u2KPVve0SFvNs7xyMC+R4\niv9irebtZv3nG721dJNWbJ7zriNnEtlv6ydwx8/QjXOusUpy7bQ6Wgmrf+m2\nd2a+xqwtFz8Rd85P7KpQM1qKCzd1+3ssAHQPzetv/+W59/1KESdEl+UNdXCK\n8+IAFeBNa2TvBFFUnaYfDBaGKtdZWcvuTTsF3RiO9W+d4chd1LfwxoZmForY\ngJHEOCMeg+uf3ywZJgDkELXs4rOCz2UVoTuoty87WZmPmA0EgEcnZjMoSf7z\nxeNt\r\n=yvRO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0015ab4ccf8c7b3e44e792827178d87a5163313d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.66","@balena/jellyfish-logger":"1.0.56","@balena/jellyfish-metrics":"^0.1.123"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.22_1616392068545_0.09328337460668767","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.23-renovate-non-major-d2b508cb622974cdf5cfe78d25138b03b0ec9f2a":{"name":"@balena/jellyfish-sync","version":"5.2.23-renovate-non-major-d2b508cb622974cdf5cfe78d25138b03b0ec9f2a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.23-renovate-non-major-d2b508cb622974cdf5cfe78d25138b03b0ec9f2a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4b4e48ef36c3ad2e668840732abae1d3e0e4eaf9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.23-renovate-non-major-d2b508cb622974cdf5cfe78d25138b03b0ec9f2a.tgz","fileCount":25,"integrity":"sha512-bIzLKXKkjdFw2ZNFP3iaVsotUBteZRv40eJ9cv/kmwPVYvyFMeE4fDMv3m+LzZUGEhLYBzF/gJRFX185jEmWsA==","signatures":[{"sig":"MEQCICt4jjA8zbuNqC2nZiTyhJnhZnlHA5Rw0U0RCbZMOIhVAiAhUoxpmOKdJUG4cJmTjt/UgMUKwCDblsM0MCD6UUgvlw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWHCICRA9TVsSAnZWagAADHkQAI5c7ujcCCwhQBA5sRr0\nTwaThrjiSZy3xBgn+5tOpLO58i4/ormrmqra9CPB8u0y0ANrk+ECCRtedp/w\ndBfy9QwKbCNDPUOlTH8Vm0vnGmJrXmajlZRxpAcbnjVTnhfp6wIICeoqsSfq\nmJUbcSU5zZOWnat2RGpgPexFXkbx1QdKvhhitSuCiWJAgye4Fjop0KGJwSWZ\nCwNHOCyPJS9sBymU/L9Vj3c8yIzwkPHcjodcppJSPOssWzk/uaz2Avq/8PzH\n+BYtwhTVD47PaY3Xzc1U9FOHljC2zfH/lXDDW9a/yKwTi2rzZNmveFR16C11\nv9ZSgFrhoT9lZ787P4BpyvAmXZSEIOTydhSEJe2BICZBdsiD+nAhw8OTgw6u\n/Fd1MogT3pGlcNKOLmwUDESwl2s172D0suRaVIvaCjv00sW0ErTj3l/1WQK9\nK3usSkrgOLMV9/p38Wz//cVBlxFVLD+yO3AzpSUmS/ZOmi9IZyVqz0fJN+3B\nYVp98GpTW2Ls2PPzXOt51mlO05QDZNgj3JUGX9c6WgYbwcdJwVokGTGgO6Kf\nmeHNC7YoarArA0Fam3tG4g1HLKv08xJBzE6zZddZ1jfaJvPUxaiavSA02PzM\nX8yZ7dFZVaHFPsQ18ChmfNacU0rE6Rgq0B0Q7f9g8+9jJJJ8/5vHG1Izoxc1\njK00\r\n=kNZe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2b508cb622974cdf5cfe78d25138b03b0ec9f2a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.56","@balena/jellyfish-metrics":"^0.1.124"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.23-renovate-non-major-d2b508cb622974cdf5cfe78d25138b03b0ec9f2a_1616408711508_0.6341631317711611","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.23":{"name":"@balena/jellyfish-sync","version":"5.2.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d1d52d324c5e598ed628a613b63edcd0469ef6b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.23.tgz","fileCount":25,"integrity":"sha512-lxCz8DOLJyfQdZMLWYqRwBZ6Lar4dWYCqmBdAloHCjJrGgJ8z2CkhPottXJa7XeLcOXdqw3x2J92IxcZl/iz+A==","signatures":[{"sig":"MEYCIQDD5DKNvPCP9z6qn4R8amS3gfSjNhj8uAeT/hXLFFrk9QIhAJKX9ziNcBvcrUSBahPyVmX73bDBkMFosyw6cdtnvnPu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWHFYCRA9TVsSAnZWagAAxW0P/2VZ8oYRXCY6F5mF4s9V\nnvZT56nfp2GR7pehmEUgEBeTAe+S4lAwOCNBD8wqeeEt0nWS4CJNxg6P1++I\nrukvYQ8E/+PO8j67GDZl7OiwfqFatAw2v9ug2giY1cAaZi1HGTxnPB3twkp+\nhbIVo0i9211kfUqGOFctAEcY+7NiPs//Edztedeecs/2+ek7SKFVhiWSa/ZH\nIWccrVOHliO+ZtflVGlyem8JegxH5OXycqxy7FjAs21qQ3X4gqmn+sPEz5U7\n7BwYGTeV4uJ9eL3ZResGeENEkorPGjLap56lCmg2d0kyz58jfzeFDzl1ftzX\ncSw4JUt8iATagMKHAkoepmwueMvClcvBqhM/m/3ssV8rKIIOGVBsNhIQbOom\nAAhWwR26Y0qDCiQC+lUErbsHxGdae0hTGpJcpY4GkLaz2wIROIS2vggUOZ3f\nAqibE5LJAcphfeuOnOiQm5LSLMH+GF7s/R2HikZOPehLjIrc8UVaJJKRxAbb\nB3LVPLgFrdg6BBiFYsu8CvE/td2MCLVxDTqzPLd9IbPoMNuLBu/BzEN2dqDK\nwFzbrGMVXk8S47v26JZ9imbyfGG00ygwbeJ7S8dW2iGAKfuCQ59owDfEHJpM\np0qFkjSbBlckgBLLAnkt1JHmZafuKortA2djNGGm1P8mxxZvpb4fElrdXzXK\nc5Lf\r\n=qywW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"65c0bbdcd3d764194d674171989ad8f8e7c19d3f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.56","@balena/jellyfish-metrics":"^0.1.124"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.23_1616408920159_0.7997431672521285","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.24-renovate-non-major-558dce59257ea91bdb8e60818d0337c465b89f4b":{"name":"@balena/jellyfish-sync","version":"5.2.24-renovate-non-major-558dce59257ea91bdb8e60818d0337c465b89f4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.24-renovate-non-major-558dce59257ea91bdb8e60818d0337c465b89f4b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a84e92addaabeb81c97d9117f13f1b5e277c00d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.24-renovate-non-major-558dce59257ea91bdb8e60818d0337c465b89f4b.tgz","fileCount":25,"integrity":"sha512-0xrF2F5Imt0KYw20Y10rh63EyTnuabfo97rvlwL/hFR2gCmlSuziMVV1f/EriqfZIbUlB0JG/9ed7Fq7FR9pgw==","signatures":[{"sig":"MEYCIQDGdQcwe/vvuR3opOd2uEfdvr2g/gDyu9qIPX+RYKvvAwIhANXPgq3Q+MGMr8B25TioBPIHMvtClgMLKUPd9xufex6h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWI5wCRA9TVsSAnZWagAAipoP/0PR8sFtB3p4b3TjLEWn\n+FBQPJnW9MCXrLhZE5G6+EUA/ezXkAYAgkL976y6epdyWagm27gtGnkxzvOx\nqcoJhfkzHBSTQ0hrJky9FyO6fMYeIhGRe2XMNWmhRbuTQhXYjavvfm9/OUlJ\nlMvy9iKck4I+CJDu0aBPFaBzMi6437ZLqo8XdeiVqmIjN6j0s2kXo/REc4ji\negM6CV2YExMffUOV5ocnVDNPT/47jRmlSmj9ml0X7rm1M7bRoNIG07HCaEv3\nlcS4cFAxIAvyVPoKnVTsuPjNs4kL1bahMNPyEOTvpP7OnYiorC9eFlcr63mh\nwcAEmjCsly9zxhr1uOV++rsosxTOMi8DLJjmPhzSEQHHguqWKC3E+NgkccBj\nl/P1Mu1VXDyFVR//apGTa+8sN0rNM64TGR7mFE+ALKUn3OVmvgdLniuU165g\nc8k8STvn8Hl15svhSwQhOjbslIKoEXvMOvUW2cGtuSxdKjD/J/4VHq5uvncm\nB4viq8VaZWMGSdoVEEUQB33KiSKPVDBvwZ+AXw9Tu9NaB1WYUhWl2vXVCCO1\nVHz7GBeTBYHP+blnRRZzsCK1ULAiwzQEhz5a0eKuXJmpUh7TzXGaQQd+Grhg\ntdyO/kX6lywVRYi/tdIj6ufc3RHo9KVUIh/mKLCyKQ7QsNYZJWCC9b/bnlEL\n1Bs5\r\n=fudD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"558dce59257ea91bdb8e60818d0337c465b89f4b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.124"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.24-renovate-non-major-558dce59257ea91bdb8e60818d0337c465b89f4b_1616416367774_0.25211531629642336","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.24-renovate-non-major-f6e0b2db588636f1a6a93955e89b71b0a491beb1":{"name":"@balena/jellyfish-sync","version":"5.2.24-renovate-non-major-f6e0b2db588636f1a6a93955e89b71b0a491beb1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.24-renovate-non-major-f6e0b2db588636f1a6a93955e89b71b0a491beb1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8480ae5719af838c6dc00e5bb4a7b4bf59ae9158","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.24-renovate-non-major-f6e0b2db588636f1a6a93955e89b71b0a491beb1.tgz","fileCount":25,"integrity":"sha512-AvYcNsoRKMW33zZxMj5RbI90FWhr6Df60lhKL6Q/qBHf38vXyztKaKJwam4DVHG2WrxkFAMieWy61RZdOZdTJA==","signatures":[{"sig":"MEUCIQDMtEOLox9AACVdlFEvGhpUM2661oSEM9X2spb7evchQAIgA3ISfkZd0XqJ2GV8cCNTKgyRLTcOWogp7dCHSLZJDtk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWKtTCRA9TVsSAnZWagAAk4IQAIqL0SxunXsZTlBIApPO\n0kfepy55cd2pI205W67ewbofZ1ZYpNchQguGVh9/cqa/XhOpDg52pb+LWf/g\nbOm8SbRkFQNXV7Ev5Ih8wsU4dmy5syZCluGUMZK308v6yxlyyZvgaR/d574C\n54t5eHv89TkyAkflgjXS5mwMh6LlkDVeZpAf/xd+E8bmGiQcTEwnUL+T2thr\n0g9XXCZfGJmV8AikB0ubknDiBEnetqkSyXFxfSGJsnCrecHi8JDfw4mBRu7E\nQ1N8RK9M11sxo1XeJWe4jLSydJz0gOfRKFt6XxeSAklCaudLQ7zVQ0S3Ae9J\neRcYUF1fU47ojg70LmoFLUQi9ZICF2JXFdAEGyvPsW1pcGTz8xO1051s4dzr\nDINK4bJHAwpTWspQcxxT07Nk5SeCRtM0wsyRO6IKvGmHxgqss2qY49/9EZ2+\nVoWC3u0M0zz5j/vyi1xa/UpneRVt7fzxntsRePm3EgD60aIcidL1IgneYhlr\nGwPDtzdsvubyHGxqWv+PK5PsoVqx69/rWHe0wFDGoRoDr+oB0hGlwMWbOCHw\nWty1z4J0etD203RvKI4idmwKb43sMCxqeNYWrWi1vlVZOvdP0UtFYkavcoqK\n0KKcmXkEf341X6tFXKmASao/6+b60vfFfnVImhbBl0QlGq2ND34O3HtJt+9e\nUZzY\r\n=MVeI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f6e0b2db588636f1a6a93955e89b71b0a491beb1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.24-renovate-non-major-f6e0b2db588636f1a6a93955e89b71b0a491beb1_1616423763144_0.9326014128786586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.24":{"name":"@balena/jellyfish-sync","version":"5.2.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93bb213e9d2c392277c8b2fae58bed7c7e97f2ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.24.tgz","fileCount":25,"integrity":"sha512-EHwCSxMAsbHR+NHj8gop69F8icNewSmVcEuYQoMuzCC9mGHGm/ZododmUMkFFT3+2cuCn+tSNeVbHnKPh7GtzA==","signatures":[{"sig":"MEUCIHdhzq6bZMi3HKeUXJV/LPWLGwKWO8dwJdJR4tnm4OCIAiEAp1FfzX7Gri78RAgvGf0lphlXxhFgTFL/IPW+DpiGqqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWKw/CRA9TVsSAnZWagAAL2EP/3xyW4iQmQnEEbPDhafy\nR3kSoW/oT5qVcgV8veHLFRY8K+1STgbBlvEMDeyFpc+iBP4nnBxl/nOgn1Qh\nK0Zye2jSoMrEEPYfjmIXZFOjaBc1EBgX/+AMNKc9t1hmrOEpPLZDEq9XzO2C\nIyaFwvwAkdP0x03W9sigtOqxxNnTE1O2KodbxOvLcRaaNBnAPLtpxsg3Qcnb\neB6pO3eXh0twg0LEM+MrW3cFUp5rslk+3n8rP+Ej8gRA/ByHgxYGPS8njugR\neC9SgYsZ+oUTsP1j6V+bs60frBl5CuGppOtDwuMVis5+BQd9hctxP+79YXoz\nwcgP5Ln7RAeEg/8bdxB/c4dI1qEh5eiESPXwBh0WK8e7Jzpl4i7LqTUGGLrN\nGKK8vny+Fj8iw+m0bPWKu1LzV3kRXW5aE/AGXzNShFa5FWRXivMZ4YPKUId+\ntIs9Hgn0uhuG7TA9wLKCBWVmi+7BHOV1lu5ZfsHPut1fXdYa/6VTt3jRjXJ+\nIhTskfjmRABs+8NyEp/GC2xyDFK32nML7k3ZOhGTiTELCT/TE9MPyHpdn27e\n831my0VzMvSOpZyx9HSjPKHmqRalZt8pE9e7UqlN0RPJI47TxilubT4SK7v6\nFWrkoAU6rjo9l686W1bKxtvDTQjOuTNS4rsdhL7mHOoi3yy0sE5kJ8azCHv1\n/dML\r\n=iIu2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1cd3acdddfd6afa7d70370dadd26f0c1507a4902","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.24_1616423998520_0.35569415963853945","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-logger-2-x-ffb39afeb9a2069566e3d7255e8eaa39b805977c":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-logger-2-x-ffb39afeb9a2069566e3d7255e8eaa39b805977c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-logger-2-x-ffb39afeb9a2069566e3d7255e8eaa39b805977c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b36621b862e7e08c53abc9a6a4794e5b4eb0d0bf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-logger-2-x-ffb39afeb9a2069566e3d7255e8eaa39b805977c.tgz","fileCount":25,"integrity":"sha512-7YnqicdrtJpllrxt9E+jdH18dJPniQ5Ly+4W1gLelCP2rDnkWPPSR2HhQ81pjMDUbwBpHFjZb/pBzG8SnhBZtg==","signatures":[{"sig":"MEYCIQD/T05OZE3DWda/ncLk+u7EwGOUWs9wRUfvUCfghsH0JwIhALzU9e2BZWxL3bo3iv89UypUW8mdfueD7OOvfja03xZq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWOvACRA9TVsSAnZWagAA0ewQAIIDdwdiAHuuByzs9PnN\ntubCqCMJDZove0SXT+++bxQ5QIVkO9FYpsEGEfuH5210U+iIU4ge34DSUtxq\n/pTqOZZb9W2mP+ghUQE9nho7BMs09HBVDtnYoMpBDyjY4HhlPzuWsrLlJKh1\nnih3RJ2Lpl9bNN9R7uw14gDY4ty6H0S1N1cNP6xqv8ZCMKK0pwA9xoWb0I/1\ncsbNmy4pcXUjIku/Zm6c/PJ+26qqQfl7Yvoda5dSeTVLigEMXw/5fQbFZ5rc\nmE7lDJLPDoFhUuFIKsBwBKnyCkQ/OLDxI327zntOxxF15E/99MA/1sgUY3gX\nK4hT9Pr/oOGjZphe2MZAkm+tiou/gthQg1HEpKbX3QLnrONHFKxKIE8s4TsW\n7cPdOTfMWncERfcc3NfrfQ7jDSw8Fs4J4sAC8Xa7z3YVUl9R43Y/aOfl2sPl\nn/dx22oCG13YQn13PP0/aFJBbVlxKARs37vO9FlSGOehLvCgpu9VDUm9hHM/\nvQtygBAgiXtU6KxKAxHNeUjYuV+yrgy73zKwC6iukf1idgO9CvH/lIgR0O4e\n4a9LGUoqQ2tz+1M9/4ixj0H34yz8f/yaIJ3/i+bnCt7F2VZqDS+FRZnscvel\nX4lz7TQzgt7MCjaAGJ6pLc4FGgDTJbO1mYYc9NeRd8WYbfZVAR+yVSeI/1/O\nGEUP\r\n=TDg8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ffb39afeb9a2069566e3d7255e8eaa39b805977c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"2.0.1","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-logger-2-x-ffb39afeb9a2069566e3d7255e8eaa39b805977c_1616440255707_0.20629306691692806","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-sinon-10-x-e7bdd23a58eafc824e27a7ceee7292e968c5c9fd":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-sinon-10-x-e7bdd23a58eafc824e27a7ceee7292e968c5c9fd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-sinon-10-x-e7bdd23a58eafc824e27a7ceee7292e968c5c9fd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"09df86c67385571ec2a7f4ffaddaefa602619ac4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-sinon-10-x-e7bdd23a58eafc824e27a7ceee7292e968c5c9fd.tgz","fileCount":25,"integrity":"sha512-6dO3IZbMoLG6K0bmmRgbab1IfTRkN3OH+fxrwttEaQvzUaF7xaE10aT0O6kaCNvNZdqmx/+uHwYdqh3synOPZw==","signatures":[{"sig":"MEQCIBKwQDIr8MKIJZo3g7ES2nloF+vwJB+Wlcs9zuDxMyv9AiAbl7U8nZ/g9Zv/IU/u97POsPArCGjmwUobSUBvLAi92A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWOvVCRA9TVsSAnZWagAAdI0P/2Zbgr04rCl4yiIGiFtz\npfIuDMqMidMAe/ynHMpuKt74r3EfUAuaOUGkt2KRvmA8Q0g52gQK93VTJnxf\n+DplVgf2WsNFjPbS/C25vvBftNV3OO6eS/7fZ8SLI31fc97QcBzanA8Sl0DU\nAPt2V8sQG4c8XDzyaifDT+Td+iaa2W0VgIQL7KOXnEt+M2XO27nJmKAoI5s4\nZ4EhoMOKdXW3BMAtpGTsRdy3kM60GYvbYZlymhMv54n/lR54+9shb5fiJU6u\nf6oOXcBKLjruHJbLNPSW4Ocm2slIzI6BiIwx6tibalLDXXh9FWwACz+po0aP\nH7ExjeabM9QPiH6WpeV50uE1rf5Mv7l1/ODMsDGa7KaBKI7Ink2/XB35VZZT\nRtgBpOawnJZ9f39CkN7vuXbZCY8eptspolrCT34GY/X2JuTVaMGIB9Xaw7wO\nO7TeSIomBTUGMfCq2mCDv0R3zHzzpl++UT9MeBmzakdHzBtqrXWHu6X4j1NS\nSgJgUGVprYnLY220I+69B0lizFE3xtXO2UI4Lkk1U84FRG2fN7W19smAzq6+\nH2OfNlDu0IW2r35dup3rScW3LHAnydVXFcn1yQrAzsStyjTlwPBwuS2Rbij2\n9uTCkkMjyMXkVBwx34c7dFZSfHl0l4gU2V3kF0/j66Xy5TQ+qrd9NoFNDBP0\nVjS+\r\n=mVya\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e7bdd23a58eafc824e27a7ceee7292e968c5c9fd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-sinon-10-x-e7bdd23a58eafc824e27a7ceee7292e968c5c9fd_1616440277181_0.6885587105293629","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-logger-2-x-06f6c884353b5e3812bdd0c32ed3f4357c82bdd6":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-logger-2-x-06f6c884353b5e3812bdd0c32ed3f4357c82bdd6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-logger-2-x-06f6c884353b5e3812bdd0c32ed3f4357c82bdd6","maintainers":[{"name":"somombo","email":"somo@mombo.solutions"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c6166d0521b39cb9fde82d5e4df2b1636783eef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-logger-2-x-06f6c884353b5e3812bdd0c32ed3f4357c82bdd6.tgz","fileCount":25,"integrity":"sha512-vKhFUElTSS4+ijGIlcExtWVRN7dZBgKyiobXTFdr9+wAgXvqTnFROMTF7fdHbIrzbyP9+tCXyfix/utatQHz0A==","signatures":[{"sig":"MEYCIQC993kbH0XM+e/9mQEEzk7U+b8cZMTocwThaP2Sju2YKQIhAIpl+HD3Jpbl9xywI/JGBuidWgbmK6ocUVRWpugVIiAv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWV38CRA9TVsSAnZWagAA8QkP/27K3ekfbGocv5RJ+Bln\nLyyHD8bO0tgJhVE9xOHeZsLicBhB6IT/UEbWIWz7Uoi7DVUNt66r4EYje1mY\nr7wN13YTzkRuh6fNOF8d/Z893upElVAdvofqWaIOuAWraeq3NkmVCeCdC7js\nUIiKuAtoJ70Wfu4IDvvN/nSdjBadj4w4ZcycvoWraiMM46zubejlMdJireww\nFgj9wmSw1Tm9DWh35pJxiMvMPd954/uk+rnq+Z7VkfMerdXdcAwvWutOw+Ln\nCBV8zQecRtzoXOanUlccBhFBC1J2pyp9E/s4zbjUMqX0Tx5vF28o2adB8Q0P\nUwzF4/MqiMRWktzU+h7cnHFAjC5/nf9wFJdf5tB9ojmONFu+cpQdKmjfn8MH\nmJ6U4p3YmoWd17Ma8vPNxHrtJr6aBNgK80KmcYfvwqXomi/fQy2Ee571/LYh\nbUNueDRgWEcPZu0LUeLaH/Va6+Eb3qg6p3XwN56ro69jLUMSuCLpsifdCu0H\nOo7TurYjnaLnMuYWJgeiNq4HqYeZeXylcNoLDbuBle3wJ82Z37P9oT/ps/eT\nKLRS9iNUvGtBEfOfWiLnTpEQk3OyJfQwy3rjJB/2xp8oM2aDBuxZI1bOiTlH\naOC2D9qglmZlY0jK1O8f8xDvQ/cDT5dcBC9Hsy3j6fgtmS2po7oN8C5BnHRn\nplNF\r\n=8EtA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"06f6c884353b5e3812bdd0c32ed3f4357c82bdd6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"2.0.2","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-logger-2-x-06f6c884353b5e3812bdd0c32ed3f4357c82bdd6_1616469499618_0.9079003173326867","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-logger-2-x-8ee342acd5d8d115870d4c59d57c7a694821acd9":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-logger-2-x-8ee342acd5d8d115870d4c59d57c7a694821acd9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-logger-2-x-8ee342acd5d8d115870d4c59d57c7a694821acd9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5477553e346a15a8599d4aec5e1e39d0c21e7ff2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-logger-2-x-8ee342acd5d8d115870d4c59d57c7a694821acd9.tgz","fileCount":25,"integrity":"sha512-02pUxwYCbbbNWxOyB4MJYGTv+mkHylwKjQigo7WeYuIdkgCKyuoxTXVTIJjUwvu+dvD5l9iKlGkWv8EPtjBRMQ==","signatures":[{"sig":"MEUCIH0YGs0iKvcenkT2PsyJUz6Ko/Jg41bgDT+/uKYZ2A92AiEAri3QGejG3Z623jhXXjODBASXY/CSh0FbpNrGNdGrFvo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWrAjCRA9TVsSAnZWagAAJ3oP/08LA1/hJRlWuWlcrGGz\nl1FNeiHtHZG7AE0ladMOz5qdR9y/EV6wbJnItDf+ARkqnHG1gBxYOKCAuSOX\nJ6ylfi759Yj3naoSGMxdfcxwZ1Jo1lkq9PcMymf47btd0V+lDXn5OnehWZB/\nBtjoOpcLsnyBZk6OsSNPaRQKoSZfQ24CneFiMojjpO/ezCyAM/S84XfnH5BQ\nfyx2XANTwyPCJ2BWTi4o39PsrwStu9amaPypJzU9qkttIUPv/nK8NnymVQ3g\nsO9RgfG+5I5QZJ06N91GRpn6PYAQPuaJ67v+8VwSV9iARGNekQAJPiUPHfsN\nqznFVbv/XI4BFoe35iGwT94Yzef//iVShi4LIMN0ia2+kj+81MLO4D3R6fzB\nCgnNEacjQ537YRaQJyPGI37UPQztt1hVCwFqlHPCawhoXbT2AOvpJvnRKXyb\nAPVSh+zdRkRiCmgMtFJEW0/5JQUTDAjewvbBH6zh+6CX+Ct0H0tUA37+IrUF\na44jAAKhg5svzCvrzMaoEPX1BZyT6FDTctpjsgF+zOk43A7DMlgZN27+qmA4\nnv0mgucab9i6bsKf0VTNV616zQJw9JNaaEQpcAgnWUBXV73nOMw1P/noyLkE\ntHc95cmN/K3OG9NzEh/ehRqU3y0ErUxuWLzZf0fvxCp0vMAN7EFVM9ui2Erz\n2MYJ\r\n=YZSZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8ee342acd5d8d115870d4c59d57c7a694821acd9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"2.1.0","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-logger-2-x-8ee342acd5d8d115870d4c59d57c7a694821acd9_1616556067195_0.024611827021284727","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-logger-2-x-bf86703469163d25740e18015d668012b19eea42":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-logger-2-x-bf86703469163d25740e18015d668012b19eea42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-logger-2-x-bf86703469163d25740e18015d668012b19eea42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"05863c1d4e2e090690239c23adf73b2858034dea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-logger-2-x-bf86703469163d25740e18015d668012b19eea42.tgz","fileCount":25,"integrity":"sha512-Ofad5tn+9CHrcX+V9cC1IOg8R9aICxTVcFSoRpTbraZeGFfd7/rb/VSKDLG+ZK8Hbp/3eWJDKLHGBV5HluUmGw==","signatures":[{"sig":"MEUCIQCO5sbX6AqtM6oSo3eVc548ZBBH4+f8IjvREwG/UoUNvwIgDRqXC09JhLm2cMzLcqsRIrUeb/S07yl1fkKYidTCDtE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWtIoCRA9TVsSAnZWagAAtiYP/11gIElRKerznqgNpQUR\nX9wQRtXTMoeXUGHyTOP4sQUwS4nnglsDKHU8IZ04b4swwfvP4i1rwMoiGek4\n4L6bOtRjLxtwRde2RXGsLpxALsKAVedrEnddQKAZRA2qGPlcSUK4zwGZZuDc\nti8ol5QqxeTHX9fyh9z3/m1/Cv4sNj/GbkkemiZM33Wb22ieLIUwh9NNDPdg\nzZ3b66Z/GMVMudQOjAyiU1qnzT0DKSdQtChNYBsi5jplkbZL4fHSENkHE0wJ\nnjDfMaRG4G/9vrQu40oKgMZQItvUtw8q58NVIMM3FCjQuz0SrdkWvJMluVPO\nNHToBmzZhIE4nV/iOQbhKb7BQ9Qozq97S/kl6YCCo2D3ROdJ680Gsqmy+l0n\nQbsGgDsf8Ftn6YA9VOwFvntUuKbnak7Z30mahVvNPnIb0BXm+TSMlaOupk/b\n6evD5AdPAueg2oFWa1vYxptwltUHaSWQ/f53QWd4635KX5gjSNbiGIOGrMc+\npWYieAzrlKvX6+CK6iA+T/dRvc/Eus8n5DYsvx02WO5wNzJ08j2euiAIwzio\nT5HVWrBzkB579UR+i4PDKSSuoiKAVb1xUqxpgnL0yimkN34g4hgAxkI2fe2N\nWwGMrkMfpy3Lj1FHhN5QRVUHJsx9wahgKPpaDF4D/r6oUU6/lgDyzw26slNt\ncqyb\r\n=uteh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bf86703469163d25740e18015d668012b19eea42","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"2.1.3","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-logger-2-x-bf86703469163d25740e18015d668012b19eea42_1616564776103_0.36213239590462076","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-logger-2-x-413cf6cc383828d941cc8ff2068b3f8d0d4f372c":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-logger-2-x-413cf6cc383828d941cc8ff2068b3f8d0d4f372c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-logger-2-x-413cf6cc383828d941cc8ff2068b3f8d0d4f372c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7bcb2e888d91a17eeb8a5c46cfde40e806330461","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-logger-2-x-413cf6cc383828d941cc8ff2068b3f8d0d4f372c.tgz","fileCount":25,"integrity":"sha512-GAFLnHjgogZEIlDb0TDtwA2tW0uBTk3vqkXQT33ooLsGitJppz/07GRVGH5gwbJOhEBQ767HyUJu0CsLacIl5A==","signatures":[{"sig":"MEQCIEbB4Ouoyz5NGMWOkLg1wzF+aQFdUrrxlxExrXg2/h6DAiAGMiHci7Ni0ZI7dDEDIGtTdunl4oBN5JrCQRNSTCgcTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWxtXCRA9TVsSAnZWagAAvtAP/A//McqjjCIehVHzajpt\nfkWDXtT09/DKCNozhvZlRMes01vaQ2yhYlbYt/ggYUvHBVxsQsWHYs5DdjkS\nwsywG5FRvRwWdQt4HTEM3mdoIdTzcTtwmsZC2sAFA2SBynPvy804fV0Reein\n9+xX9KSQaHdGIVW1eZpgiFrIsPh2ha8nl8x/ECiURwUSyTYxMUAmVP3S2qgQ\nr34/SPFFZ5gWyuM8fDaSHtEml+6BV04998CffTh97wgO0x/RZjB4Ks/pQ8L3\n7+UK68QUDS2QxDkmOf2qmvFILCQrEBt1GNbz+iwlBHroMffDtVRL92wsRS9C\nsw77JpNeXPNbb41RhqDRBqVVG582GDE/6DoxNH2/+s4NreJ0I7GiraI+6G9M\nv9ij+0k2xhfEu8HrHHfv6cZ4wcquqtesJJzt2MkgJq7jOCzy/KySuHLjKX5Q\nM7e36/v1g3szWDMLsTIfi4EVcpAvSfD5kSs+/HpyLuMVX1SueBXPpeA1F/9q\nIQ87tGSyala2MGyAJWUW0/hsU2KosCA8VarAmAUbqhm/we/4uraauLw6/Fzx\nDg95O8sQqoVGCZPWjYq+tensYVv+hzJFjigYt9LafQJLaO2R90s2XrFlgjzf\nqAzNo131dMgvzdjtSidW8BrB65+2CUzpXSbgTEbffimQUhf07cra2TMD2IYs\nPNKN\r\n=7hci\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"413cf6cc383828d941cc8ff2068b3f8d0d4f372c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"2.1.6","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-logger-2-x-413cf6cc383828d941cc8ff2068b3f8d0d4f372c_1616583510539_0.6851462864688367","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-metrics-1-x-237b73daa56c824dc5b0e92200903d77ced8b328":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-metrics-1-x-237b73daa56c824dc5b0e92200903d77ced8b328","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-metrics-1-x-237b73daa56c824dc5b0e92200903d77ced8b328","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2b5909889fddbc4c632666d4f7420e548da27bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-metrics-1-x-237b73daa56c824dc5b0e92200903d77ced8b328.tgz","fileCount":25,"integrity":"sha512-wxWUC39PjQYD9lGzVhmXniiEjrH0zKQR/d2Tgkz75oVpBZtTkKRYUO6xqoYcoNx4gWeTjTDWQHVi3ZnaRAfk1A==","signatures":[{"sig":"MEUCIDP1HlIqohJSa0hVjPQ2yFx29DsiXpou1M9J7JqbP1DXAiEAh47EgACv8dcbDvoOuvZGz0Ov2TfymwXOzqQ6JLuBwoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWxukCRA9TVsSAnZWagAA++oP/3EMqvCnWy4GHZMgOem5\npMTl0BthICqrAcpoQIcAkuMTQVznv25Ojg83EtQn5NRjoFpe9WO8r5aXv7SP\n9Dz012COif96tJJLPhDoB2zNoGBmMdQBQv2U4oVnb7nEerjbVu3uDFdAdEqK\niXSreRqPzlVGj9dtt3T1Se5h2nUPcDl77eGlGSMF0DoeumT4V4lveMnom/iU\nl9Igg0uTeKjKoY+JIcLW7IT5AQSn8bL+T72BKtUZEQzlgMIZp0WcGuGh3maL\nb0KcBCjryJccpRs1k3iLB45s8rtkpsJZi6Riy0u4ebnkv1C/hcKmXcq15J1Z\nr66AF0zaNFFLHSScKqzeXWnxcQHnYbvFcwCqXCYnKUVD0wbfE9Kbf3m6tVkR\nhOY/7Lz4qma4S8dsEw2Tx9z9HQGnkcaNiJpksZ3d6iAQM+N8sZhn0OV9jqCU\nubtVmsdb39Xxljd1/xgQjIg0DLTkb7t/etGrtwdZ4QvD4GKsLRvdc1i3dYz5\n88LBVdITGxGXo4mZuNwHY2W12U+QpL+fquIKkOlYNiHcz7/Qc9acxjVVgU+o\ne3CIvzStri0eVPTLobO+B6NJn0M5u4DkFqGTE4J7KJjmHorxt9woON+Cg3bB\nZcAPom2XWBCPuZrVFrJLf4R6X9E6OQc2U1tCcDwjTYg3PM3DSwXWdPvqDeKU\n9ufi\r\n=5rFs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"237b73daa56c824dc5b0e92200903d77ced8b328","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-metrics-1-x-237b73daa56c824dc5b0e92200903d77ced8b328_1616583588223_0.3410423681990924","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-metrics-1-x-b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-metrics-1-x-b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-metrics-1-x-b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba262d29422c3c7e9029e07199ac8201fac03709","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-metrics-1-x-b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b.tgz","fileCount":25,"integrity":"sha512-V1IlSpWDjwMAehxBpSliYCMkh8ByAfw0wrfTUDbgzC6Ap32QxMGrcsf2zbOZYr2Z8FHutuoUtnKYynn81yHZnw==","signatures":[{"sig":"MEUCIE/dTngCuQsRphqcxTssvVvJyuHuXboMDaKRpo7BrbU/AiEAynakyrIPwPPFfZa1PGt14clsod5+aDTddqXh0lD3O2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgWznuCRA9TVsSAnZWagAAyOAP/A/aUJ/cm5In0aTKopTL\nmkBnqJwBwDqs3sOQyZPjf7ogKI8WsFgcUVda++L9F9BH431QowGKvbo3ITWP\niMxQuu35+AbIumITakF58b3oCZEMPsY1RdYxeWdm3gkC+wSdbcI98Ikcb4JT\nbhp3j4frA+DUEjfzLLPyISnndFGx9TESKxB6REmHzxHV1OMLm4iMXjv0t63t\n9acLbmmwrsrJdUMctSjLK41dHLEHViPqjWycN2YbHWAHB2jFjUh12SwkVF7k\npVfKGeawTVAoyrWdkF/6BsacDDZ8Z5/udwq4lcYt6b7CVGabWiLuA2LwZGTH\nZID81Zm4cQksWkhIUICpLgUwUnfeU3uxkyhgv6p4islKxYZQf+lIAo2IqzN7\nSgA4LsPpvAveEnJHWRxamx+tPLQilMn6BbnT1TLjMjgNGK/0Jw31FJoxVLZD\nNDlhRCwU6dgrelbI7L06vHFBxw4UtvwfwVrRQQK4cBj4qm0cz3Dkxs+oJzzu\nMy8EDLgZDuqSPaoJWns2X6MKs18qTprVfxCqOce/GmUcpHxu8v4nCc84I2t5\nwyvAZ1WWmFXw6j8u1/ZrX7oT67GogcRo7+/UDqbmgl8amiwcoHckE9on8ipi\nAd4QxYfcsHyZCsFQWGspnQT2iVR6RO2MCTTkg1GGVlb4zqOSpdRyiaQSldzT\n52Jp\r\n=iQ7r\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-metrics-1-x-b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b_1616591341607_0.47813554009885406","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-non-major-851587a520c019275cb927c2560db55a566c3c29":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-non-major-851587a520c019275cb927c2560db55a566c3c29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-non-major-851587a520c019275cb927c2560db55a566c3c29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca7866b79c027dcc6bc50edd02292ca23cb5f114","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-non-major-851587a520c019275cb927c2560db55a566c3c29.tgz","fileCount":25,"integrity":"sha512-WbQOXsZafHIheUS04cdqBrOyCnW4DXEeI44WIr3E4Q8h2NC5SWVIYfF2LggmnQ3A8aFTat8Eh5U2VQvpymaLJg==","signatures":[{"sig":"MEUCIQC6GXl6xHPBiKi9Ahbw+LOyxYDPmje9iL1uHSFY3O0exgIgWJuTAfIWTbAuG5th+cTP1sUOMysMXU+HmAQCeJxZNSY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXAB9CRA9TVsSAnZWagAA9vYP/2XpWtNry5Pd4H+Ty3wE\n6VrKZKAwsExTfCA6P6umWizFTYjbXUbZtXZwdTHypp1hvCWkUPyw/AZM6rb9\nBT3/GrFSbuDSBgfluTsdbIzkcoBqpFAqqSo3jzIYF9jPS5i7RrY+AXjiLN9G\nIVN5cf4MlMiatzyvXJxezbkppPb18UEcbyUoyMJlQceNq3kiOAmHRvPaXNsY\nix4n5J6h393VKNcJuYC+AdVQ6gZYAMdR8wlOfsCsMzsMe5Qknjh6IVm0iJCY\nXmPJT/t7JTJMLwsiWbG/Cp/3VY8isz/Mworro0SUxuxdq9eCW2pImkuubmAU\nPT8uUit5qqzVSi0oDN6THZfFWPQN9DlCxZ+wVC32iii2Hf4NRCCwUEkqdcS/\nyrZDC09u1xm9Lz3/Spk+Es3RfRLmnuiOuXM1DvKdpZRf3qjSaZxfEF9JKDXO\nc2sutUURukNhEbR/DBXOKVF8MUscwS0NzDBOrFkcuRJuFGWinA7jElR5Dwp5\nNqUWJVGfeeKiYn2uEFkJdi95YDewPOKF4qBIBlXdSe3rYJJwQS8FHc+7AH/U\nzdYHKvIF0XKVUusIZU5KZB5LEA3hP4KJt1OHgNEfgpI83mOBdZ+wlOoUN92L\nO9OcGy+mWGp6Zhhfyxm3qqbMqU5OzXWH65B1npLfHIwnq5iQ5I/jqqigZHzB\nMJt1\r\n=7Kki\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"851587a520c019275cb927c2560db55a566c3c29","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.68","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-non-major-851587a520c019275cb927c2560db55a566c3c29_1616642172660_0.08376568307788212","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-logger-2-x-fcf2d8a73e26cfef884915cc76ab68c261c85b59":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-logger-2-x-fcf2d8a73e26cfef884915cc76ab68c261c85b59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-logger-2-x-fcf2d8a73e26cfef884915cc76ab68c261c85b59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"755271258a86b8e69c371fcdf5f912126de12d12","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-logger-2-x-fcf2d8a73e26cfef884915cc76ab68c261c85b59.tgz","fileCount":25,"integrity":"sha512-xtLV0f+kqdIN5YpkXLuN3J4J1QhQGhZ8fO/foFt+ZzQaW2A8v+AOYjnoeKWQH5TohPb915Q0UNEuFMs6Lxuxkw==","signatures":[{"sig":"MEQCIH0ggPJvsIPpSgUni/1gN5B4dhYaop3vHwSwK+mEyX4vAiB/9AYEC2wdBIM5KsCywU1cqeOqJBVMOgslPI05xYzeEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXAClCRA9TVsSAnZWagAA83UP/1NAm72/Xb/TD26YXFNQ\nNpKRQGa/+Z5Zlkt9tURbZGOd5JHtRHO1e/lRT2+Y3cXUGLBuIyvzGPWXWOIo\n0KBnAtKpid8v74h6WUiIt0LhvdJK2Unon2xoPy+wa02jKDovJ/IbL0g9RCqZ\nfp7hCbqIdhnNLtM0cjmkyfPu4XAWf5oNeb9NraujY9YegNF7djwEQbbIZf4B\no4z1UDjqC5G62c8kY3GRWffNj1a+MRz3k3jmcWr0j/CI+KaIX8z1uTGt24Na\n/pRra8ARZE7dbHbc2IwftaCKB4MVFmo95hSkENjg/v/VDuEfjS6njmHXDi6i\n0Dld6o6CWFiiQd6mOpl+0WRp4T8SFar30jJzY5H4H2nfJAkgifNn7Ne7u/Lj\nSEdi7hsSAGpFpN8oEugHSbQSqoSi+A5oxET++EgmuevpY5kMaPFNotx89Luo\n+vL21Izo2zWQip9BORcI5tOxMYjttZGHxvFIbfSJAdtJ9kNurX/znCB0O5Hd\nj+79JUSBXdX/P4qvao3ExDUTvJC73YEVR48CAqjDjgd1eEbkVyz/BZDylGbE\nsqWRpH5br3TfazaF8nbsgnPeLWe5GzzRpgx6zliuPHcwOPTCPuoFyIuksEh7\nroDMLqNoAslnCM9wtHidbQSyw+9aETNrt0SVlMd2Sk3n+PUmDVFdpPjqHpcQ\ntKxC\r\n=IQRZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fcf2d8a73e26cfef884915cc76ab68c261c85b59","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"2.1.7","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-logger-2-x-fcf2d8a73e26cfef884915cc76ab68c261c85b59_1616642212851_0.47086403353652195","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25-renovate-balena-jellyfish-metrics-1-x-c1bd69f9fa9ea40b5306159c5bc08be6f1b52830":{"name":"@balena/jellyfish-sync","version":"5.2.25-renovate-balena-jellyfish-metrics-1-x-c1bd69f9fa9ea40b5306159c5bc08be6f1b52830","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25-renovate-balena-jellyfish-metrics-1-x-c1bd69f9fa9ea40b5306159c5bc08be6f1b52830","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e5f52618904348c6e7755078316702ab85179376","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25-renovate-balena-jellyfish-metrics-1-x-c1bd69f9fa9ea40b5306159c5bc08be6f1b52830.tgz","fileCount":25,"integrity":"sha512-/0+kEYBKsxd7sc/mj8i02XFtlInfkn/t2YZcoykBHHahWX5owlUzNMgwFfAgq/tv4pjxOrwymG//ftUDWbzsdA==","signatures":[{"sig":"MEUCIQDAp4n69tViNTTIzwQDvu2qHezMDFqZLEv3NPqsOots6gIgLFVSTkPTWcK0OL+4zqbsIdMszBPH1PJnunwWC1wjtek=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXADBCRA9TVsSAnZWagAA0moP/R1QWzUQCMwMdLEL+ekX\nFnhQzOMjknP5RWvRtmg3LHfJjcU6RjT3A4Z3ZYT8mRq8eo1OEos92kA7QM8e\ndF22bLlGGWDaguhj289b4xnezYwmOllguyXn0UR5AHdJ756wRnIpLydi6LUg\nKn14baIEC8DvhD1/Zg+wH7b7WtWL5dKkrw/NKoiek7VOYDN4XuoCNTwghJjl\ngzTeLEuogOvyb/B/Bjo40LHRnLSxrXHtJcl19Nawg1HkeIMi5KQRFQ2Ncxi8\nUe1tLEYUiN109UX2+zwn7LRkWDjp/Pywacitcs54a6RtI4b6iPFTjDvHX+nM\nBeYLbb1qmUVNkGtp71Bgk6wnTnnLyaSMShMUiYpFuU/W3gAWtcKPHcYZpfii\n9aIil+3a31a0VoukSU/hcUNKTgsq9IuCGU/VSihTbPUI3+diS11s5Bmw8oLH\nXwTTzbgVmgOMTWXzIW0OasqZwdftKW+KRUTnKS23A/m/H7dwYRLsv7NRDYcn\njGCBzEVrUECInJK8OiPwDSMpfg5eO2qqSuTj/MttfoMGfe41yhsEICFXIQod\nOo9+5zvrbSJA3C5Ur3S9GHm56iMKTlHrpk9xWBs6uPp9U00n3vwqFZ4DL+2k\nTKLvWgQ9C2s+BexV71kBl1CyHbOKqkBT+i9pw11JKRaL87cQrGamW9liMiy6\nLCpz\r\n=UA3R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c1bd69f9fa9ea40b5306159c5bc08be6f1b52830","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.67","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25-renovate-balena-jellyfish-metrics-1-x-c1bd69f9fa9ea40b5306159c5bc08be6f1b52830_1616642240542_0.7021487728415003","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.25":{"name":"@balena/jellyfish-sync","version":"5.2.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ecfc98258f02cd86f4e67456d5941d40bb3dcd92","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.25.tgz","fileCount":25,"integrity":"sha512-gVrmyHg3R0BfQ+F8cu5Uu5JRZGpQGva5zv/9XgBsvr1828qv6Wi4eaq6VZr8Qrl/7bh7mvSF6nRf92BK5kDZ0w==","signatures":[{"sig":"MEYCIQCv01FAfd3Rsn1D1G7URIJ76PlspD3KYnywLkAb138kOAIhALsf2nAh8imTz9i53KRbhzD/RJFmo2TEP84MufLvwgH0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXAFKCRA9TVsSAnZWagAAHT4P/RA53hKDRW000LV1xWku\n1A7hK55Jx0fbadxpZI90Lv+QyzE7SUTobWFE2/pQxCPJHkOkRZLsNU73AFNI\nZwYZdStsO+trc+QfqCrNeNLdJidcwvmtxTG2b7mkk6oEBMTk+bfhGJWeaW/f\nCLqU8xpYHTpAmWxayEfI/oxe8uY++mITOCsx+IG84hi+O8CZOc60xLJp3M4p\nydL9JQeMndPIMC/fthAtFTPw5mKyGO800wLZ7t57Dg1mNN/Qp3v0QX9RWfwH\nnAJIPTs7Zs5BHIguhriDtC1Dikfih5KW+bziJ1EMKQHxA6o0Nsbt0xe5sAEC\nWUMjEBhbWVZSPrmwLDkcKpYyu/ILtlBT4YwjcB5bkVu/t/4dybj4UBnp7fVq\nw1gPER3tFlpz1QkzYDrwjERVYe5EvP8qsjmo47lBtF5WnwQth82ueP+jopUB\njp5dbrFhc6fJjtIK+nTQfrRdz67Spk7XEeX3RdzxQK5SeH+71IuI5cdStX+K\nLhtL3Wf0E56u5PFV1zPis5nqLw5jbk4cSjqVQjuL5ap/+Brm9CzGLvDqxiOO\no223oW7RIKPSEY300GqflaI/JqDaHIwRbbDqsAIHjbTI3rzCtJY9YygISZ00\nYZr80Hnr5W58my62cHc2c3S1b8Zhp5ArdsguGHpXRs+Owxz1UeYFwvjm3IWv\nqSDB\r\n=oPzt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"acc562612268d4cebc9ebb7562eeccd8704a62ca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.68","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.25_1616642377807_0.34211660854250514","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.26-renovate-balena-jellyfish-logger-2-x-113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b":{"name":"@balena/jellyfish-sync","version":"5.2.26-renovate-balena-jellyfish-logger-2-x-113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.26-renovate-balena-jellyfish-logger-2-x-113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f91b01a2946d7de512743a463edeae9a83bbdae3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.26-renovate-balena-jellyfish-logger-2-x-113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b.tgz","fileCount":25,"integrity":"sha512-Rqd35DJQeYILhUDCeGDcjqWn1xt8RQ6ANlwZoWjBXwrV2q4LNQ478jfvWBR1HdgbW3hqxdt5Ae/fyZ11SY6+VQ==","signatures":[{"sig":"MEYCIQCahUtte+5eLyJeS7YzdkT/Lv5AEXlK68euiU7yiuftpwIhANMl043c6zeqa4hhrjTxN25AMiFxN6ISsqhCaU/24UkY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXAJFCRA9TVsSAnZWagAAO/cP/3IFWGT8iVdq3BbGQoTo\nbToXS/Tp0TucS/GSSIHMHUTp2Dt9OjxssOEd7eVTcXR9xFfHt+EWJOiWtFd2\nxIOuq0+0FQOcXZCeI+S0lFprKDjqPXzXN9Zq+v8WOyLjZKG4GuUTPGAYP9p+\nYwQSpthl/JMnxFUnxql2K9VXqpvN45010G+bpkO1t5LuplmpZsIbaMkGaQhp\nZY3R3MGvngr3shCQq430ryaj4lBoZ0NzJ5E1YTZ2HaxCVVoSOxzFS0OzMygo\ndmZ0nPIeAeyCVr1KjHxQJxoyC7qsCWkmaLhkV0bcc7hmnvOOsOiyGMhU/SKK\nkt6W0qjuVtJ2HQOvNtRIQeZ7NPhDREHHlFrYRFcwFwPpdkVp6Bg7hwqo7CyM\nMTQ1JT/63e0FSW8cpTiDU6n43WPd3u9mie+yZjQqzuWK5ezRLcUyWCrScNvw\nMDkTqTzQElmFRimgYnhBCEzKS6jtRmZtH++aSPHjMbjZifA4JJqcWaitbUQk\nc+L5fi6muD6HOhSyatvnro46JrPp7jHiMnpGxKLpM353KyFT9U5GLOdZiyH4\nNPIrrIcCS7JYb85yhJESHA8nguio3rH4bTL9h4/eH9UXIGSBXUOaBs8fTwBz\nxz585JCMi8l9TuM3qNceZpZhjBvfnlYLYpY/0Edgwx3qgTjYIuUJBqzQXU7F\n5H4t\r\n=9fpx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.68","@balena/jellyfish-logger":"2.1.7","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.26-renovate-balena-jellyfish-logger-2-x-113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b_1616642629091_0.848421894523391","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.26-renovate-balena-jellyfish-metrics-1-x-e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de":{"name":"@balena/jellyfish-sync","version":"5.2.26-renovate-balena-jellyfish-metrics-1-x-e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.26-renovate-balena-jellyfish-metrics-1-x-e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ca6a384f29c9f636790b996d7d1108cf1200cc2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.26-renovate-balena-jellyfish-metrics-1-x-e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de.tgz","fileCount":25,"integrity":"sha512-72ilvGDtrvHCz/CNU8Zn+/LbN1f73DlLXIiFSdAHXiflxBnlf0s022eUzhk9L4P4VsZ0Di3X8WGVd4f0A/iLQw==","signatures":[{"sig":"MEUCIBXSr1a3VhfBMevajixySgomVeYi3Ase8mqcM9N1QH9MAiEAvs94r5SI4wsUyP+iOxuPTMBEsNT3emGkh+B5EoGXrhY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161307,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXAMZCRA9TVsSAnZWagAALUYQAJpN8jJE/LM6eDo9EzXh\nj2VCN9AFHy2P/3AIzA5eGQvTkLkk8U+clTkydsRwGxqEYW3mxYDYSDupZS7B\nQPHBwIJ9kfYJmyqeVCiw5OM6L3nzk9iGS+O2IBCNxiOP1Japhg1TiE0GCtyM\nrZtX0ew9tEwdoT+3srwhpnQDclvym6Rmn9JnYxhfphDZNN3JpGGbOwH8uU3F\nTB9Kw9/MeOquvvoODo6C+h9zJ8y5xJTpuaCOsmNtt6CfDuC0rWTUphMzg2OS\nKjcStf/o00c0J2Vw+Gx11N+m1OzJrp3tt1yxedMZFb4c2hQHzgRoaHpjjbQl\nmHms3i1ao7FyzcFbRXWzrx3L82GelAdmXWhbFKKxfevQ9wOZnR4BOYheEpxQ\nn93bK1u1D3NgXtT6caNuXWAgTXyll53ZBK4WHjwlmd2326FLrbJ19Cxlixq8\nI9NlCtirffebstbJXV2Wk8uK72lL/6p6Onr5EVWmrHxoZ3KUvkaUas8K4RMX\nP69wZW/1zisDKEqc6IZ2rg8UND1D/rggoilIkTcjNYKcvOA8BRCrRJCBp51p\n9nZfrUT9+HRN29aI6QfDaxjYBIu2vvbGTP2zBV1kMmcNTqrqf5jlcEmsL/xF\niuc33Sf2CiB9L433FVV2BsueruksUDPFGwzgW1/ZfvdiSKqd/R95LrowHDbD\nTtVP\r\n=jZ2C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.68","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.4"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.26-renovate-balena-jellyfish-metrics-1-x-e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de_1616642840883_0.7785183084830847","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.26-renovate-sinon-10-x-c014107d46effeab26788d6e63d4270b73185423":{"name":"@balena/jellyfish-sync","version":"5.2.26-renovate-sinon-10-x-c014107d46effeab26788d6e63d4270b73185423","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.26-renovate-sinon-10-x-c014107d46effeab26788d6e63d4270b73185423","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aceb61b714f8c656a42809bc2f6c42e56a3e22be","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.26-renovate-sinon-10-x-c014107d46effeab26788d6e63d4270b73185423.tgz","fileCount":25,"integrity":"sha512-z6lLn5oe5b5MUZjHKplPZyBWYYKeZok84FKbLO2EYiLOPGnfNqNLdqkyl+sca9KDgRNIVXOhnZUfksyNtwyilg==","signatures":[{"sig":"MEUCIDBqvL96wg5NFjF3cpYH3VJbfiR8KRyVZI2cS74vYwcvAiEA4QvueblJ9c3sTCcesTx9vPsbAnmYHHgkL32ziRuOGvc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXAMmCRA9TVsSAnZWagAAxzYP/RjpfOvAtb85LeBhctak\nugK0CJq5xJhuQxT0xgRNwbdbjsQP9/gwb+PAivui5smcicCs8Un9hSNMQQcl\n0dvcUQK5OnHoe/Iv/ESioYpi868J8EHhgkSdWm2QJS3mNobwUcwVHEshCJHj\nZzZxl1gHDGRmOf7BKhPbrMKPi//2fMLCalZ9U4J0sJu4pC01OiEuXI8K4Xtg\n37oYHERtTo3JZHx0KD95ke5pxH2PmLSk8DxHv0b6WklT34ZljDxhW2lK279T\nID3yF886Nxnzjv7i9uu1A3p2bG0c2qInrhsLauxXvt0o+BV8XQLpaOelPiwF\nne88taQK/J4fKaGhIB4V8e2fY5LXUT+3xZuc1E+8gFaFyROnZJnILLJrfARF\nhII8s665sYqWX/E0TRHvC4Iy9yh3ARniuTE//hG+PeOKNOPRy4WCZvORdZHj\n5UzsNtY3gf2O08M5D8TFZiPCYQIq7DwtfzpM7BLL440YTL5TxE7bup/wZW5I\n/KIBD5oksYGqR+N8z9c/MnMrxnShSwhI3GGuKUyLYwsAk6FMTscmi99Trf5M\n5JvMjgOO6KcYHfzEZHoykCJ9kNqv1/HyrDtxmUwf+phwO8ePoiBb9XeapS7x\nLo7OSbz8FXdJCBtQWAJIMeinpX1V5Xe7dKQeaaVXqcw/zgv7PS6VtLEN9hTc\nGl/Z\r\n=QDiG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c014107d46effeab26788d6e63d4270b73185423","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.68","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.26-renovate-sinon-10-x-c014107d46effeab26788d6e63d4270b73185423_1616642853534_0.1499595474193025","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.26-renovate-non-major-296c646edb452423e6fb4c1b213df8f56b27c58f":{"name":"@balena/jellyfish-sync","version":"5.2.26-renovate-non-major-296c646edb452423e6fb4c1b213df8f56b27c58f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.26-renovate-non-major-296c646edb452423e6fb4c1b213df8f56b27c58f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b353b6ce7bc6011561841576e9d5b3ab4feada6d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.26-renovate-non-major-296c646edb452423e6fb4c1b213df8f56b27c58f.tgz","fileCount":25,"integrity":"sha512-LVajlRVajBJmUm/mjPS29YaiLvCvdjVA4I6WdjkvK95013DckIVIkxMO/SR4WA7JhBh3VD3otjdFkGxYb/kJOQ==","signatures":[{"sig":"MEUCIFDjvl8gVWxpDaid9sU4oLcv5Mew4uoEz00681B21/KqAiEA2O7/8BM7UjkVHbjT+UfMfp0+EuhYrpRm3BtFTQBgRIM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161298,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXCa8CRA9TVsSAnZWagAAUG8QAICJC3pLs2fFjNc5sgWu\nW9YsFT/u0qYt9P/wGs7D/SC5W3DXds8ShGkRLCd+kGOE8b/bSwCJIjR8RFyY\nJI4nzMFEKoVNyfY3AWtS4yOmJvKAhEYErE6W9NVjBCIzJiEQvpaFJghlnclg\nFb0T18c16mN9IroUdJm5BwzUq1y3+kaMGIP2AzI+57vSjM6tEBtBluTwjIlb\nOVyQ3Jj7gjG6x4HOMoxNE6WxB7ZQp252l9TNF67HkpBgmtVYATdJVskWtqsM\nJbM7XkVi8uZTS2aLwrGfmlOWlVyW1AvJgL7nj674Jj2riPfqRZt6u7LipvBX\nljXlHSVa6c3+wxyC2U0cQdMtrWktgINxJgE8NSPjdGqiCjxG2bGTFMLm0hXg\nDaFHrVi6O7JcTOSXhANVZLYj3DpQBCMxKK7+AoPjJcN+7dIhxEjV23f0tH+b\nj4/+qV/4MQ75n312ISxDqgPmmCyrgirdLqFzLRK2f35QPBkTeOfFpsGdbHi7\nGkqhzPs7YyEZeERd0P8rLX95KlZBDVL+Wz+OQFu/6z+S2sY/DjCW0SUMarNR\nr026nmGka/pf/6XhpoxKSCMfDSt/vKZU71lWVes98lXozw5RsdeEvJSW/c5w\nvdtY0jImc9C9mSglUqkRUXRYMswVX6QZXwleDCB0/rPfIF8vwY5KtvNfvYMR\nIG7A\r\n=ZieB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"296c646edb452423e6fb4c1b213df8f56b27c58f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.26-renovate-non-major-296c646edb452423e6fb4c1b213df8f56b27c58f_1616651964301_0.8659266220150057","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.26-renovate-balena-jellyfish-logger-2-x-fc22d5f6a574991b52d7c8177a963bcb93a907b3":{"name":"@balena/jellyfish-sync","version":"5.2.26-renovate-balena-jellyfish-logger-2-x-fc22d5f6a574991b52d7c8177a963bcb93a907b3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.26-renovate-balena-jellyfish-logger-2-x-fc22d5f6a574991b52d7c8177a963bcb93a907b3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8aeebe542db0039ef8b34cb68691600b8c847f6f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.26-renovate-balena-jellyfish-logger-2-x-fc22d5f6a574991b52d7c8177a963bcb93a907b3.tgz","fileCount":25,"integrity":"sha512-z9oiBt55plH0QnWXXIGhw0+WzrYu1Un/KBOBSFG/jUDKEdoteO5yxwrX4RqzECpmm+3Wwx63nhtVT6pQW/8N2Q==","signatures":[{"sig":"MEUCIG9RQyczjnwRhq+Qs+AtlrJmeWdA6pgaa0omto7wl2fEAiEAmeKX+CVNE6A5xZ/iH6kKkEEC9F1sp/UG1pwm2Viyu/0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXCb2CRA9TVsSAnZWagAAhW8P/3pBULxdZA6wPpnscigK\nw/+CpfEoIPh/PXKN8xKqfE/7u16ihXwD8P04oV46YHJ+zL5iTxibaRbLsw3Q\np9NPNvekPc1oe+SbnBvRifrZ8U+Ht2ResofYXfE8U40dzG2psVMiOKSIzFbe\nSO1yhF9B0hwrk46bgqijebS7hvB7CJ7iUm7qoqLMB7kZ9sJhYoVmfTIUjCLs\n/STD4DCrxlSN3Y4ZEwlRO5e8Y3Clg12TzfkzBgsyU4JJCpPYfyp3AkcL9eeY\nsN2mrLagL4/7psWj5C352K/KnA4KHkwI+sF10C7rZLjvLyvHMAPRtWDBrB2g\nEoLl19jEZaM8YuvnceKRtRIKXzBsQEPkm4/YglTTjhWoLureewUy5z3gG7AN\nbqokow6g7TvwTVpGQ7wzRlh1kLYp8yzidkYkrd5J+P8IFcVaBRykRUHEgb01\n5iGpGULwXvxdHG7XzP6FBYWgmCkOT1dk993kH9NasC0SlZoaOr3Xjjh1qeok\nuSddDNgSuxPXjciJjcYXpMX39gBuJuqo3FhhQOmZvpilOraTSjGIfX+4clyA\nbOUjhcuB2qp2j5467ImTV4n7yhLqhvfCGduI6pbjZ8aZ8oqVukHM0XPI+ivi\nlLbiL+GNnYjHzWkl1c9TmoFhSv9twXcMdlw33w7AlJJPYBS1hXFH1/9Khgjv\nViXL\r\n=QUW5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fc22d5f6a574991b52d7c8177a963bcb93a907b3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.68","@balena/jellyfish-logger":"2.1.9","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.26-renovate-balena-jellyfish-logger-2-x-fc22d5f6a574991b52d7c8177a963bcb93a907b3_1616652021569_0.26247866357134986","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.26":{"name":"@balena/jellyfish-sync","version":"5.2.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ee57e39d9e6f38fb444d871ae6921f1fd18442f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.26.tgz","fileCount":25,"integrity":"sha512-ahNcM9RDuSqCXBh3FgDqSaQSSh4B9aHVN8kNMECGYirQKaSm5ixb39Kfp9XLrKZ2o3QuQTYUCyc0GSJoIphUFw==","signatures":[{"sig":"MEUCIQD7cj5B2+ovG9uAYNwtLZOrJXQPDUj4iUODjX8Tk1OB7QIgYCe4oRVScHVG29Jr0ybs9lrmBIUQanJCShNu9awdRl4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161238,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXCe5CRA9TVsSAnZWagAAf1IP/3cC9WdVbg0h4Au3Je2r\nN0EoWWrcZl54ZEydvXJOPi2kiR7R5V6To1wpDo3rieAdzsgfBweh5yeyUyzk\ng9IKvi1wGH68ODMNuQAC6ieB98WlihcgChSP8dgd4bhF9qyDf1GDPKQUGqAw\nnEJl2kBuz/XMnsT3Xh7CkrQpnV6CTiWlrT+eUrpsk4BcEMT22UyCZILyW0ZX\nTLMjTfHWT3RuqimnFkM9h09hGsH51o/63s3Js+RMN6rqHJgpacw2jpDa5eTl\ncP4jnxEL43Bg7687KWaPtgwnXQ62FQBOqzXCOIZJ7eGLklM9q074eG+WpJAy\n8gTdkpYwZqh6HJyLYhFKd8EQH+uEGPSr0YwWrF60NWxdEDPEWOfGQI/suZX1\nYYDfp6rHkKgt76R/YxZclBkmGN3DlzsySr3e4PJVAeGeVdP9LGP2ShTDw1pX\nXKCbDa+b6pIe85GSaEoGHZVUEQIOoZ1gtHILpeE0IJAhmOgPR6yLFHxZRRFm\ngenuLvZhlu3vQ/5GYx/UjuFlCOZFdy4JYcJMxajHNG7QRyGbBSQuo9DlUEKa\njQiU4vjC4hnh/fBVOUe4HCILGAoxX9naik5x/C2qxVSucpaK5sSZ1Ncceu0Z\nwvxBQ/sWw8CiO73+ns2uBJtQu1N65b4bzUoHykFaBs/womwZ9hDwwPmCYh7R\nsAmB\r\n=qgeH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bc26a0dc50293edc8805bdaa5df2cc68bb9ffa36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.26_1616652216559_0.35365226883388456","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-balena-jellyfish-logger-2-x-eb887284fffc8f1bd9c1f4136292e1c920e5ba45":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-balena-jellyfish-logger-2-x-eb887284fffc8f1bd9c1f4136292e1c920e5ba45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-balena-jellyfish-logger-2-x-eb887284fffc8f1bd9c1f4136292e1c920e5ba45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c0d1b68af31d46dc660d3b2bbaa76b440fda8c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-balena-jellyfish-logger-2-x-eb887284fffc8f1bd9c1f4136292e1c920e5ba45.tgz","fileCount":25,"integrity":"sha512-j9YMh3ARDd774UD0eVsvytwwQyVY4kCPrHk6+/RvMbdlFA3vgtYS/KhjgtEnr2emt7bHVqMpiOExVXIwM+qFmw==","signatures":[{"sig":"MEYCIQDc6M8h7srg6F4aIFVlpQVBiLdyw9W1yt20bpR8MuP66wIhAI1ordl+LMqWFF7HkGjqN2sCI1YsjcDLHeReltVOMr9b","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXCiMCRA9TVsSAnZWagAAS1IP/iC4MkcTEXomlRw0iTFu\nJcdzDwADbulUBnvvozJWkcyNTLde6MFY7TVoQGZGD+0hbP3yXQtucNNEqD5C\nN6PVpDVMoUj8dD85gjn5PRm8Ou2gXm3vWwZSZ0/KyjUr+xVtu18iNQ+Mg2s/\nCAdtnVm2Vj6fb87V8ELzGwnTPVNeQ0d8AxkuNKER5gEZh7Xs91y3yMkwTGVG\nVHz4mEdYLuobtepXB4Eohtyla2oIR3rpaLhzMPOarMd5QLoyM1HhNdKfUZdD\ndNjfcgeMBpgvBXyzM6Nyy8wNGb3VahZG0v4TSdr9oT31Chw9AoR179ftYwcx\nyYK1H04K0CC87ybOphFLkeERh0C+WOrGHgI8miJSNwgKBjXb4uUmiZG9cg1G\n8hN0UGscuJSx+LWzWtFSs3KCqTIBXivDMdBhoY5zy45HSec43Lj5jq+JeKnP\nfwpXkg0L9LtyLRTCLrQqYXYDbxaMRHy3txEYgUrVAFzPYFOSu5Bu1GDYKDcp\n5s5k5em679t9zKuFb1WDKX3Kkt8XeU4Lj82tJCEwhGOob7eXUhjmJpT2D9e4\nBpIO8QvNB6RAfncUosUkD7lktvnut9H1saX/MjUpXLDKggaxMIPT3po/aWom\n0VBHBm/uCkCZJV119ranepgoHnYVE8tUqCv8C53QUjVQS9rBL+Z4GrdtflJo\nvFTi\r\n=uS1j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eb887284fffc8f1bd9c1f4136292e1c920e5ba45","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"2.1.9","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-balena-jellyfish-logger-2-x-eb887284fffc8f1bd9c1f4136292e1c920e5ba45_1616652427569_0.3282564604734268","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-sinon-10-x-a62ff9595ea9e2dfb172d25017480735d22b4b6e":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-sinon-10-x-a62ff9595ea9e2dfb172d25017480735d22b4b6e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-sinon-10-x-a62ff9595ea9e2dfb172d25017480735d22b4b6e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1f0adb506511af6b1d5e104ca42eed22ddeda35","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-sinon-10-x-a62ff9595ea9e2dfb172d25017480735d22b4b6e.tgz","fileCount":25,"integrity":"sha512-hFyoOiToxivV4wIUS65hdw21h0yOjBkOX5T5apMtCSVZIPAO+oS4IxnKIwSOg1I+Tub8bwxhGjV+xOP7wU+S6w==","signatures":[{"sig":"MEUCICcv4woN6LCLSWMaMYt+bn7HYjsY2/y8YpeU9lD4VH4OAiEAi7J4bTEarWgoXiqFMoz5emT3Kj5NQyCMLaSj02ASfBE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXCnUCRA9TVsSAnZWagAAr8YP/iBC0TVO9haNF7Uai5KE\n6kr/cAprQ2SrpWNcioyXmWVigGnGOr4hzip0ty3AQw8rT2DBXR0cuk3LH5fy\nTDlFLsjgZkuImYSViv6z+DfGirHa6nUfBqjeXSQo0uq5Tv1FGjgqz93WAgmw\nFrs3H/6DJ0af2NwEEi8oysvaPdVZ3uyXZ0cJ5Ow69nHL54p3GrL9sqEqr4mh\nX9Nsbt5hitklnYB1eSRvYL1xRLIfL2fBxZg/eIZ/QnRq951yH6cz7tZE+2f1\nPj6UzQF6psOMqAaZo5HdniCcp24FEkGVZc2KPdpxodcx2O6fQyEnrwDoHfOa\noB8Bi99GeUQboEbtJCvdMWbF+C3d1Q8RIxHHRWRO+TRvQVo5R+DRu/D3X2zy\nOUR5NCNk69evEQzy0pYucWPvQx95aHnIj8Pv0/2YIWRFBiZgX6J+VtmlpzIc\nyeCWpHK2y/qA3VJUXVenq7S8BNBrVFUy4Ed/8i0mWqFL7qwhzC+Uaej8XP+Z\n+VtYzeCXOGgHUrGm7/LlniM5t2l6VLibVUavt6TcrKxbxNpu1yzr1uibJRnz\n8ETGwNBghdwbmGEDZKp9dq63QxReIi8AzXOQ5pGMwYK5YgWbqP9CcVq8ilSN\nDmZL98Nu+VardFJS/ntz44B4vW4wBoHB1WcUQ3DRQUS28yNR2Z2ValGmHLzg\npOap\r\n=DhHM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a62ff9595ea9e2dfb172d25017480735d22b4b6e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-sinon-10-x-a62ff9595ea9e2dfb172d25017480735d22b4b6e_1616652755577_0.14117013037354775","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-balena-jellyfish-logger-2-x-acec48107ff5d4fd966c95a3cc4eaba914661694":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-balena-jellyfish-logger-2-x-acec48107ff5d4fd966c95a3cc4eaba914661694","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-balena-jellyfish-logger-2-x-acec48107ff5d4fd966c95a3cc4eaba914661694","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0922fa9e685b25684b055f715e94bf32decdd53","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-balena-jellyfish-logger-2-x-acec48107ff5d4fd966c95a3cc4eaba914661694.tgz","fileCount":25,"integrity":"sha512-EFs/PXZGzYoAGPMhQtgcGN5j1eXwr9M5ZaZYXXLOHErmn5cWxf2E2GuOX5QJE0fkiVz4LMhzq/qhyWYvuPWDgA==","signatures":[{"sig":"MEUCIQCwROugpYj7VZjqv3f3U5+HUaASgTA5Hohz/IpZbILsiAIgMzh1Z8ECqSjHCYsnYt7qcmPoJBtXvjblMhBlXOFTku8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXHbjCRA9TVsSAnZWagAAaF0P/izh4O9dmfTmrVpy/t64\nLd+wmuWwd4jkN9OSw2dWQWOMeYTiGNaycOQ4ISm1gxVeJ7L3o/eeqMwrL21t\nmzPomyoqCfvrenNUY++hDqKL6kcKGd94h4YYBIDkv9W6/ZeZikNErS/fU2Sy\n/SOWQ6//HwHMvB9FWQIMwXOBoRcKqBNLbpd4q4ft1wzlFEMZQvQXkCZD2LIs\n0VRgi5nZIY5e/DokHsDzIufnrNOVRZmZP7Lr5/8jRzVtJSxyCOkZ5EnyYCCS\ncxzm9JbUwkEUHoEVXcggeyN9JSjvK2WPRO9CfxuXCvuPlbFnMLloIluoEJLa\n8NhhrTgdBPUphlbsYlf5WJJs49OtdluwQSHqs8bOUSFyG9xqhmCvGlwOkCJl\nntEBt7hjks2LhN9rYzVJ+RRAB4BaS95/exWv+Oi9XGQbj5R/HuwAmYELAP1r\nN91VxgSwhCb+oQBzYJbqF76uUr3X0l6uJIy6cuRKxyXsl//nm54kSE0Gf9cI\n+KWf66brlVH13An1PMi3mwxPm+ohzAF1m+Wmc2/II/4JkMuty6JCV+9fVr44\n7HoCgGBwlZn+L+DDicCyWxe7HIe6AfbMavXtQKF3XmGE/DPb7FpcG4S6OgEE\ngkIf99z2v/ybXNdBuWOyooY3MtsA8NG4cbuyUMXZE4VhdsxhVvyZnV5d9oJx\nZ+PE\r\n=hKtI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"acec48107ff5d4fd966c95a3cc4eaba914661694","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"2.1.10","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-balena-jellyfish-logger-2-x-acec48107ff5d4fd966c95a3cc4eaba914661694_1616672483113_0.7410649720176672","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-balena-jellyfish-metrics-1-x-56f111ea563c359dd60ff93122f2e7ba7761836f":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-balena-jellyfish-metrics-1-x-56f111ea563c359dd60ff93122f2e7ba7761836f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-balena-jellyfish-metrics-1-x-56f111ea563c359dd60ff93122f2e7ba7761836f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"df1f5e9dbe565c4df60a1fa08607b07a4c65451e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-balena-jellyfish-metrics-1-x-56f111ea563c359dd60ff93122f2e7ba7761836f.tgz","fileCount":25,"integrity":"sha512-XtMixMAh6p8urkl2vDT1wonftxPGBN5r5wnYvmGsjUUrE8nSixm8SyVpqY4id4OgHhydxkfqx/eqegXe7af3OA==","signatures":[{"sig":"MEUCIQDVZcsqkzDn/hyn32LYctJfGmyK/aMJKwD3wbJe96nPnAIgK/P26fvrgk+43CBAclmaD7YDsuW4lilfy1aAFseyWe0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXHcTCRA9TVsSAnZWagAAKo4QAIgCf32TQP87uo56FMbg\nnYYRdnF9da+NFHS57YqnNaPsw7dCXAkwhSUUAXYDac/jTG0BrL0vf/1qHaMF\nxbjl0FHZedU1PtaRnqip+Wl3dyalECSwYKhd1Y0v1ZYyp+iv1dr/enDYpqFm\n1M1WTnJVKuZpH3DOVZ8CwbO5bIlNqTWC3b/JSHQTryetAf2UoT0LqXhds+yw\nW51qNntkbRknuwbncw5CdQlQQ0bWYxha/vynp7rAlSdxs7ZQWTX8K7lfRHY9\nHNo5Gm+DpyGOtsxBOsAejKdlPGgjSGjn1ewPfhJqwhwDMBuiEo+MblLeLMvu\nbQXttig9GElUeUcUjZ2JHhtwptA5g7Deemwd7Xx8XKUBEyPr/OpXMwPMlJ+u\neNH7egztx5EI4NbGyx4h0QLTifcHGNgs7Leqg7YQDM+Ekl94CqMFrEs/BOMH\nLD1FpFUmz9uk8VDZPrgEv+Cxl1DYHkSwR79loisTNg6xY81EykpxmLORRG53\nSEhzkrNXGmjzCAK3fuEtX9OxocW1r13MNH1bd4PEeg50JMufF8cnh1/nW5ap\nwoyQV7OicGNppjbKVBXQkGsQQP9l71dQSavyE86AEYg30FtIkcfetz6LtW7M\nWSYYRXno4n5MuVYJCiLzlvv/6OGfPxX22feX/f2si6V/zAmP0Z2j/bzVQB4y\nVIHW\r\n=i768\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"56f111ea563c359dd60ff93122f2e7ba7761836f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-balena-jellyfish-metrics-1-x-56f111ea563c359dd60ff93122f2e7ba7761836f_1616672531127_0.39414552818943704","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-balena-jellyfish-metrics-1-x-79f7915735a51caeea73c4c33f1d5af3a3befd8f":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-balena-jellyfish-metrics-1-x-79f7915735a51caeea73c4c33f1d5af3a3befd8f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-balena-jellyfish-metrics-1-x-79f7915735a51caeea73c4c33f1d5af3a3befd8f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"18198b00d8a8d6f3808b4a9fb34236f75bf6d81b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-balena-jellyfish-metrics-1-x-79f7915735a51caeea73c4c33f1d5af3a3befd8f.tgz","fileCount":25,"integrity":"sha512-XtNgzOUQc1nxsIVIZOsIpEcH5tTlUHH0YEe7SkVYIL3fBlPLJcBlkmNLQw4LjelaG/8kBb+F2ZBf3cbpGr0QmA==","signatures":[{"sig":"MEUCIARO5u6HEBoghNUUfQoWJIkAnpXura1uzfk/Oli7z4BvAiEAoOndw9KnJWWc0mmoW07kD7OkCrZUWGNf3ADoO/6h3Y8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXJt/CRA9TVsSAnZWagAAhRYP/jM05R/J+KKkjVrfWJZv\nxKqp1oQMRJ+LFh4n5m+ZLWtgjyrP9wu8vE0hWDysUeRSFrtrm1knQ1wwN/QN\njMvUN040YbnpcZEQDKtxycACR3cICG06w6+TlhF95bccn0iBLMgVId07VuiX\nFGDFF2G8zMS3m1JDRNAN47Izj031bVSmbF1PtyYLbmtRetcGKCv/85yzxlCX\nfXjQbsen5RvmGPuXeoiriyWt0vrnSG7RL+TrkvJDdgLw/SLtq5V+DhoekHhw\nMte371wjRMR7UK+BxBXHrJ+GgEpXOcwLx4OXBmTv7E+kIiTbWJjXJliPjRP1\nqs0S9IxMqv0+OsS6HWNoi+uQ1JgQcTwtnJeBM3waYJdMOqhmST4nf7DFMOWN\nCCRa165crYzg+FM/iz+fw82Ob9cDRv+Bgqm+WJtPLlNxo5MaX4Mn0WEVAPLD\n5EeeGAelq8SxY0dUk1ZakWasSRwsadUcVx+oabs6Y1kNSpV8NS4uQwhv84WY\ndQbeMswY8ORDy1CsglXYARwyrnfi6pmYjmqTIJvX4XmPGoMyKrBVaPkE7nKF\nEU72Zv+CDUrGM2aiDC6GDv+/xr940h8bee5g7lS3FPhwg7uYdPTv7cVsLqKT\nOeUOYZoj/++zdKeUADwfljTroZNKBdZ+axvC3FjtY7AacrVR3gRoRv4yD0IA\nZj4Y\r\n=G5ta\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"79f7915735a51caeea73c4c33f1d5af3a3befd8f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-balena-jellyfish-metrics-1-x-79f7915735a51caeea73c4c33f1d5af3a3befd8f_1616681854958_0.6127378834925439","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-non-major-9e7eeb9c68ede66e86f8037bc8f7e870df6f9299":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-non-major-9e7eeb9c68ede66e86f8037bc8f7e870df6f9299","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-non-major-9e7eeb9c68ede66e86f8037bc8f7e870df6f9299","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a8ce11966d22fb825dfdd63c6af086002ceca2b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-non-major-9e7eeb9c68ede66e86f8037bc8f7e870df6f9299.tgz","fileCount":25,"integrity":"sha512-y4tTpoU+UKriDZHMx5PIB6Dc38FR0FsSmi3rrQVg3k+7H3cLE+IBcGPG15MTsxvsZJG18sTtc86RKI6J94+nKw==","signatures":[{"sig":"MEUCIHvmBfYnO10HcH/s0wBTPo7MbX1nFSn7W9cJVTfwx6rfAiEAwW+beXWgQpqsskGeGjGsB0LS6c+lrx3wsnvGTIRVmLk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXN67CRA9TVsSAnZWagAA65AP/3dKpQV4lgXvPjjXCElI\nIWluYnJTEOvxYQcV9lMs+cxP2aUUA3tQqyLSUDaNgySnJOZPAnqPA/DNaIiz\nALjjhj+WGWIb1JYd3VN17Ff1dS+377eCBosvaWOHvevcZVuVnlAnt01AAkJA\nkqTV83ngRMJJdNPSyXNi9ZLwyv54ffLAPghx//4CSUDVKOs529Ib17xSkhIu\npZLJufeyLxwWBNm2Xl2WVGjA2DMxVIsn4euiZtv3ZvCMNp6rv5OAP6P+HfgJ\njVZP4N0AiXNDkbv2LII1jl3j45ONaXIHSshpm/G5zn0Mf/xDucUirU2O0ZP9\nZ+nFTfkwrCJStdfkhfs76vYVAzdhDHpg4m17fo4OsbrBWnaoRsVbfRBLJGGi\n/bUPjMYWmDc8mBOvzPdPst0ajSk3fDwHPC7ytuaCXnpZJmigDp/iKuSLUgDb\nKMpEIkwQD8V437Onc0827myY75fqT40GoEuw1Pio/DtyM5daeSFmghNCfmOY\nNCNV8WUWgA0+UtDlNp4O0jQc6YcDIYBlFyK4++COAWqjJopNNb17d9CghdTA\no29psa52HP/adFCTYbNHOF2F6Bp1angRtsycRJIsAYGbbBCUGeTicftg8gan\nqTASmW3EH1KWx2ynvX+qfOV3fA26mLBfqIH6VxsosTrcg3MsOzqowb32eU/g\n05Kf\r\n=l+xD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9e7eeb9c68ede66e86f8037bc8f7e870df6f9299","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-non-major-9e7eeb9c68ede66e86f8037bc8f7e870df6f9299_1616699066387_0.23493659248879717","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-balena-jellyfish-logger-2-x-acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-balena-jellyfish-logger-2-x-acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-balena-jellyfish-logger-2-x-acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2f28a9b33c3dc34bd124edb1468d54177e1f95a8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-balena-jellyfish-logger-2-x-acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f.tgz","fileCount":25,"integrity":"sha512-peXEWjcqZ6ri7jK8/QraLkGpSLJUFm6g5C/gqmucKJzQCaJiTq80nNvLSpgs7OWGCgsmQ0TVGucWCQTKoAaGXQ==","signatures":[{"sig":"MEUCIQCqQLfVUvce31svn20ZVVdfadtgehqYDV0Sk2IDaBvZwAIgY/HIRZ5mPjaBZPZv7vVO31nhoDMHmu86kZx3qGq+FKU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXN7WCRA9TVsSAnZWagAAoYIP/RQ/0HaydxSMOxunSDe7\nm82+5C2bbC0PNXYFKl0RLqb1xZbbRtSsPb84IE+FcWogtChEp2YgZ9WHdVPr\nD1fxcNEkTYD1ql9XrNBQIMqqDxewX8822ogg6odSL4A7lEdcqnCj9Z1YnvwS\n64PGYYN488M35b06gghGr6+0VhbB7SBYEhLOfx/LmiYu9DY73Aaq0l/cJelS\nB05tiuux3n/3mfGTDDhhAS2xS/m8MG6JmuolU2XepfmO7nIYDa2pnzrGfYg5\nD3hto6I1GnVkKIAV+nVI5ZzeBA37gazD4CcYYcAEPJez5yy/IDN2NKz4X7CF\nI8msY5lkUWBgGiiFW/XYzwdoevOC9yTdTZ8tezIzLHsk96oBb89+jW2cnmad\n8LX3/6TQ/6XDDTnDPlnl/fxOwT7Sb8m7rNJf4OksdnGnb3m9F073QiZAoOn5\nh0uwM7gdrEqiRHfqvR+YJUlp+YRbzC1HvvyuR6w8AT2m2JlodiTvzz94sWME\nltLccveDXmZ/e9CAjV43fgs/1iBzvUwFuWLUtUL8TcBQPg/EsNrMpwYBS9S1\nWWG6nNr29nsjQm/w/e2hJocJ5LR2AF97t+5K7Ap00CZVLp63bvPEAOKiVClA\nolwwkUOawY1Bi4GOJ7JIJ7o4/3M4z9azybwfoAs5nieylPxCOzkRchx7zAdh\nWM0m\r\n=M1vS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.0.69","@balena/jellyfish-logger":"2.1.11","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.0","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-balena-jellyfish-logger-2-x-acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f_1616699094234_0.8653530838168588","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27":{"name":"@balena/jellyfish-sync","version":"5.2.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61edf7efe8dc7f8de7a7c3ef0e76708858a6ea5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27.tgz","fileCount":25,"integrity":"sha512-ETT01WDL6PnZeC58zP+NMSdezUzlLKSD16CwYvy2cedmcsR/WlIU2k9A10wOnAnbkHIG42zE6VVGhs2mLZZnuQ==","signatures":[{"sig":"MEUCIGsrFEjEpC880IeeIUeOmA/Fnen/bzh5AtmHte3dhz8mAiEA0L7pgyDqyptFAzPmBY33IpA6Jnl0Vc6U/zEjB8k9Jf4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161586,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXN95CRA9TVsSAnZWagAATZMP/RsPieMdR5urZg/G8a4l\n0r7CSMQ6Po84PJpvpVa1Zky8fMi+z+rbtRQvEGTfEoauHh3aUUPT1pO6SriB\nPMuL2lMOgXLZEmO+1vNYbVpbA2VgjM9/eYHswcDixjemxN4dpVLbhqE6FRzq\nblaEBj331yYgRD2HM5bjwe6UA99N5zcamkaHqVQCwieOAoNlCd+fIZMLsEbD\nElB6Xk59b4ahO4FkweuYC26B16w0Zvu/cmj2K554QKiNEYZP2sy7MqMu6jYY\nWVEJZ87bIZvfMtGm9PN1nDOpwBHqlMnb4zpidBkwuhf0KSJW2lrUZdI+MCbE\n+5uYLRuSjFsYXJ2unDy9/iisDOi/XwbS3FP1OVkk4zm4mVOfPm9H61gwZzqt\nPiItdJWal3YX7Q05MoXpUiu/uZTZJfw+xlu3kJPJCxy59j9Y9ewWk9Cizbfi\n35R+UWryLGMPrcVWrDA/SE4nx1FIw9aN5nkVR/IbgCVNoRYmGlAtd/7y64ZK\nbXpWhvOmo8fDRb3CleXqplIvv8+f4MHeYuPJLv8p2zEdD9apAtwtRQcVrjBZ\ntXlStvVybZjwaZUYHr0VW0CrB69abqdVaBNejK9b1Fjt5CY1IDXt2Yl/YE7S\nYcrmcT3HdQahh+U5uM682vyYbdvtm+GOIzu4sTXjo56xrb8x/tbq000a+vLg\nUOLy\r\n=cbs1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c1a5dff92d6328241c2e9f2e0f332b81aac726b3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27_1616699257308_0.6370442617018834","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-balena-jellyfish-metrics-1-x-8276ea11248799ce7abe87375433382509c0225d":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-balena-jellyfish-metrics-1-x-8276ea11248799ce7abe87375433382509c0225d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-balena-jellyfish-metrics-1-x-8276ea11248799ce7abe87375433382509c0225d","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"619b10ae16b67b39c0425e236f51336edd2efaf0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-balena-jellyfish-metrics-1-x-8276ea11248799ce7abe87375433382509c0225d.tgz","fileCount":25,"integrity":"sha512-P8DX46A+3mrSalTxGLO+ckzdtUFKOfrDTz4/IL1XLd8yG9Oc/5hY78E7JhCUwJ22rC5Ccv8g3vUC4px+kjpemQ==","signatures":[{"sig":"MEYCIQCFotL23lMYXIQP+T+rJo2N1ZBn7WqvDYQ5k7ow6sbHaQIhAO4jtwoAtBjEmRQ4hmcl6/maS2EeTsu4q6i6GtpWH6n8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXN/zCRA9TVsSAnZWagAAodMP/1Rfb2h+EyzclnSk0A7h\nOPHAe1l2yeIkPWPzj1eCAtnBaNbBij8RqBoauo7xsVqgstReg6J0X09WtSSM\n/NgVg/yUdJ2xPJnoUGeXxmmdowgRWRXB1tKw9tqzOtEjb2dvTY18XnJvEIYW\nQ73qFiJgW6VzZED1ZE40AauypmiZ5mJ/K8K3PdCv8fYIjIXyD/b/sBmWgS4l\nWFJUc680quvaobvLPur0lGQ7F73euWcE8X3QWV8VdisgqdxnC7/AOaB36Q4Y\n4STwInx0Cst4RB9glFPuRhWpRT5p0AUaj4NLfdS7mZ5WkJSb3GyjE1th0UXb\nPZBa/Fl5vdiR37xoeOTesT2O1gI1Rjcr+rrDlkBul8ID3GHV4fD1009IAu7o\nNd9AoC/HcIPs/fmVsTJDr7X9sX9J4oEldOYELTvg5WzK/ERGmqd5pvEZJiB5\nvAVbJwhPXz952p/QOeSgcRK2ToWwg4JLqe5H9HRItXYslF4MOeJ7WW8bqX+g\njT9ZgvkG0gr4kOPtGf+Eo5KyUB0vtTYyFdYNKNUPlAUNvD10KD2XJCThM5VX\nN2kjRiHQ3iK0C0rVu0Uor/WhXWUc015P8zaYGILc2m152tUZ85HvaKXrRSOA\nKCjNC7FDl/NMrH6CxvZ1c3eC3ix5bQf++7+l0aA2ksSjG1C3+lzNjS9SQfQC\nPJxF\r\n=fh8n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8276ea11248799ce7abe87375433382509c0225d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-balena-jellyfish-metrics-1-x-8276ea11248799ce7abe87375433382509c0225d_1616699379139_0.22806886118782543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28-renovate-balena-jellyfish-logger-2-x-58870dcba38af0b1231b54a57458d05a13e9b121":{"name":"@balena/jellyfish-sync","version":"5.2.28-renovate-balena-jellyfish-logger-2-x-58870dcba38af0b1231b54a57458d05a13e9b121","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28-renovate-balena-jellyfish-logger-2-x-58870dcba38af0b1231b54a57458d05a13e9b121","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"480623a706319f445997a0c502291fa239edfed4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28-renovate-balena-jellyfish-logger-2-x-58870dcba38af0b1231b54a57458d05a13e9b121.tgz","fileCount":25,"integrity":"sha512-T8JVOheiLBAoh8ukjTqxS5VKciVvXsk7URxFnK9iBTXX6kQI+LONqR3XRcYBK9K7ykovfHkr2T8x1q945aHT6Q==","signatures":[{"sig":"MEUCIQCitzN4F8+9KpelnjbUu/eRM6lKxgv2eYp6G7SgwEgUHgIgfPBj2tOoRkO0Eq+OxWoeFWnUoO4xgGJXxo8Z90DgOXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXOA0CRA9TVsSAnZWagAAK44P/2ajGIBUMvF45t48sla8\nZ6b16PQOI0AFq4T1TuhfTPUeUMbCoEYzCrGFmNPFGrPmhm1RVvLfBj97snEs\nLsjRf8L+pkJ4XMs2lYDHj5QhRG30aTtKMXgQGrLYgV7z/xVb6GN2KIaEBMZW\n9tOd2gpDo/fq9wTxdbSHgcYiXsJOtJIwpdY3iy+PjZNkVH+RhJ/DLxsfXHVY\nde9Hn2aypwudX4oIW16vKCw6zgTeAWHXo1hkwwsa4QAFkIRI3nQZ01tyL0mV\nW4zrkG0BDu4mEQJgjE7e9sSsTRSVHeVbCOEjvJsgGOdrtq+E98imT8F2IVuI\nt2lDBNn1IXWTfGK/9caft7F4Omr2hNHYHbtK9JKFuHzYJuhe8uA57EC227Qj\nfk3FIhWqgeaVQifarTWp20S6XJo4SHTDh/VAhFN5DdKihRH1CaTwT6td8A+n\nX1EbBMtnc2z+gmqUSxqCDdYgrKslltS6Gol2ABiOW/7mSERgFqNnlyapixrC\nwnGI6Sv420wJ3ABbqJCZqEpPtLA0QTefLpBTwz/nJ1LLCCnKxiVJRLLUL/Ug\nyF7upy3dLXgxnvdh7OPH1R2dPKthRWJXwDrTxXgEtIqCLp/mrPHr5cwNkoez\nHuH1mOGU+rT1VRPPjBlyfX6PLKLEHOLVCXE3ZVG3NIpkq1zqRLywPyGGhdOo\njWWB\r\n=G/VG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"58870dcba38af0b1231b54a57458d05a13e9b121","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.11","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28-renovate-balena-jellyfish-logger-2-x-58870dcba38af0b1231b54a57458d05a13e9b121_1616699444260_0.7025158797855922","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28-renovate-balena-jellyfish-metrics-1-x-a4a3ef3c90e10171a1081e56426ce3a7615171f6":{"name":"@balena/jellyfish-sync","version":"5.2.28-renovate-balena-jellyfish-metrics-1-x-a4a3ef3c90e10171a1081e56426ce3a7615171f6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28-renovate-balena-jellyfish-metrics-1-x-a4a3ef3c90e10171a1081e56426ce3a7615171f6","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3af240cdcffe4be18934b0d670a6e9a1c75bbc4f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28-renovate-balena-jellyfish-metrics-1-x-a4a3ef3c90e10171a1081e56426ce3a7615171f6.tgz","fileCount":25,"integrity":"sha512-cuWLE/UzxPiHCGm4FvwpgXbgQUBICWixXeoYDz4wrJRuIghHErZUslykRg2BKMGe23sLgVK+GVTcemjox0gmOg==","signatures":[{"sig":"MEYCIQDnVWb6PWmSKEF8hFIuqzLchRZmQyCzZdedPIOZpyHozwIhAItAZHJycs9VkJXjaQ5HQ6H/qDpGGVaB6Os7xCwzgtSX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXOCyCRA9TVsSAnZWagAAsLMP/jlcQKilIaj2FXau5VYg\nEkBpTGWU2KN4H2dthZJEImKurebLdBHmCohmmGTjRzjQogzkjkb0lR9HvAxO\nZ6+h7NbWPJfBtHGVeVYhrnTo8L5P33ygW+7COQrlAArRMqWv3Jj4/GKaI4t7\nA25QQsZoEJZqZ9KiW6YHVxz2eMTarf98GeYreM8OgIpzl3EIXHYDrCIo6+Z3\nKe5xzVd/VyOXiUrhLW7zXP1OnVu0OQFTv92eWvhjgWAOWltRYO1IycnxGYlr\n2tMd+VA1cAKL2TQWzg61pdQvntsvGZp7apFdNGkcPKIDBWab5B1m+rTVYAVr\noPBuAgE7YFTbUYa/FjWtsfaafYhriO6mFWXbkVkI3wXegCPNFdijeSkaiXT2\nJu3GhcovdWSUtO9/eTgMnPZfYL9AfAKU1C0InHPZb5s0lLybILIanKw7gqm1\nV+xqVK5EGJbl+b1lz3JYNaRfyUl3UHS5hZ7ZQd872w+r+WZkwrsEfCENmmr4\nhV8wSCytOG3VXqIJDIJtmjGYxkq0ruZF1tDrD55ExyLHBDDpub069ui9ODMg\nF9GlNuHnf0b9akiQrPyrvzCTmI0XyvBoo51O5ETwAeUtQGAX3yFpUi/Uitrx\noWNhQb/jqphCHR82rPzia3LxI5fTrZ7yq20uhDmONk3r9DH6gW9ecsFMoLAP\n+MTZ\r\n=G03I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a4a3ef3c90e10171a1081e56426ce3a7615171f6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28-renovate-balena-jellyfish-metrics-1-x-a4a3ef3c90e10171a1081e56426ce3a7615171f6_1616699569535_0.5132641985314839","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.27-renovate-sinon-10-x-6ed07a7a16a56529884061f79908b3d8f4918bb6":{"name":"@balena/jellyfish-sync","version":"5.2.27-renovate-sinon-10-x-6ed07a7a16a56529884061f79908b3d8f4918bb6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.27-renovate-sinon-10-x-6ed07a7a16a56529884061f79908b3d8f4918bb6","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0fad36f0d250f480a76b6ee11502fb79c55d86fe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.27-renovate-sinon-10-x-6ed07a7a16a56529884061f79908b3d8f4918bb6.tgz","fileCount":25,"integrity":"sha512-qk3jkuhb/7cvLTy1bp2iCMODlqmo081prihI39Oy7/N6Tc0OAsWHjeJbuMKeP+Ke1WMWjEB7R0bXkfRyIZQ/cw==","signatures":[{"sig":"MEQCIFbXwmqzRiWGbAHUrRJCfE4FaabXrMdSfbMaFlh12NNAAiB1FrGW6JgbaxMvEThPaBimKTRZvfXetHHdWiksG0pY4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXODMCRA9TVsSAnZWagAA5FMQAIgjcQUGA+XYZS31RlOa\nHGFnauOGqCS5xmGTT6Ye+d2FSAZyli3MJwxyQnPrCR21gWFNDm5ChwHTpYYk\naFxDf25IUpxBq2JKS8E2PnZdi6EHYMxFZ+7WxwYl9mxqPRemKlLGrJn2BDHl\n3y4bnGlpeO4BoBZBL15ZzrUwmtSJNJabd+J4n3/PyqUJkiC284iT8gCAlqcg\nAp8GW6eBzcpFmPPqbePF5jkTGhHF/+gLveeA47ZS4/FbuykpZHix/ZRfpO7v\nxnWdlZ7ow67SG/LjCUIOJJz5BSpdzwqAOB0xfCkzhUnjlsOlPklgMxNi8Pc9\nCLT2XFSLl96TyBlg8K6bOsIX+n8mmM9cdJrSPI0x9X63r1S9Rq4aKvRsASUi\nEcwGUAPHxYg8AqysJmCrsZP88klmSrN4oDpbEZjITz9Rq97gooM8hbEyGaEQ\nXo6VEIpo5AWL8O6hp56RP3iqg7uRDHJ965hS01/eX8YMKvAhMQuCW3wDlSbp\nKYUCzPsrTRQs6Alc4uabiuVcC/GCltJp+dFvlYcOlwLqEu/yJiQ9qtcdKI1e\ndLU7RJ91cG8VIx4koBN0fa2tF0fh20PXXXiRaL0cj9nn4AabCFYTdEEy4Jb8\nNECH9ZgTbhgK2bVeDIYknoZBQmQ8mWEc6lCKBBX1MaWppIVjUiIi7mKDKqtP\nPvlK\r\n=tWv1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ed07a7a16a56529884061f79908b3d8f4918bb6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.27-renovate-sinon-10-x-6ed07a7a16a56529884061f79908b3d8f4918bb6_1616699596047_0.05975319557746883","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28-renovate-sinon-10-x-35a4e299d48b917b9f535fcb25a6e3bfbcba0420":{"name":"@balena/jellyfish-sync","version":"5.2.28-renovate-sinon-10-x-35a4e299d48b917b9f535fcb25a6e3bfbcba0420","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28-renovate-sinon-10-x-35a4e299d48b917b9f535fcb25a6e3bfbcba0420","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4fb37562b5b9aafd388666833275cc56fbc6661","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28-renovate-sinon-10-x-35a4e299d48b917b9f535fcb25a6e3bfbcba0420.tgz","fileCount":25,"integrity":"sha512-43zT2GvtsyHjiETIqkFNF7bSmBvrqzxQjK4RrPE4TcdTSCYKGZQRi178xFMk2o3wfHZKInvGduYu4kJE8I+eOg==","signatures":[{"sig":"MEYCIQCPAOkOUgK9ksEmYRKyoqC1wCFe9kfO0w3G8x9TE7S6bQIhAMFyLnlL+4dh5TwshZeWs3fd6naQ/l/zmnIDCPvGz8yb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXOF6CRA9TVsSAnZWagAAntcQAIwt0gUBcBgnVLT8xtOD\n7YH2O1xxPixB3bQXjdssu6ygJ8Qv9RzdpKoHtGjTAnLewS32BlBOFyaEg3BS\njCJftZjCel4NqYfzMFLhHhv5L6AKenFbnKV1JfMgjzblfVIXA2gnlU9NWzQy\nzXXcjvJWWoCRbylsbKG85ZXM4iOdca4idcMxMlFSD/SHqQi16G5QL8KcvRnV\nGI63S1UMv5z+dD7OAEwHB5k13b14rDaBUbQfUZkkYodxK6WtvQjYR4fr24Q5\n2kDz+QzC9B5axXM3EwEWT2OI7AlyfND6MLp55YtJIaImiWHYRBaRCAsnDZWm\n+YGHLSli7ENZV65Gq5ScUsUNkWs1nQzqh1mHFZEw1N5BKGMOd291p/ObYOSE\nI57YjXvlzkdt65dIPAo+Di4VSN5KLLpbBZRn8Zcs1/9I2HqU2Q+tiRVQ/++g\nRRfszjYl6KyFw078jMohjiylw0b1wXbtdGF6EDTSzChVvB6Z2bXyy7cT6CE9\nKDghZqZPjDWc/dGl0PoJWNhjYXUwNLwqyE/mDkgDRTAcj9gIMsdJTdD28NJV\n5QYEdFZihLf/d5k3NCRBRzcoJynLhKsgmhRmOd3g+n7P+IuIQgq+xLkK3Sot\nlUsYVVg3UE8YGdsv7YUo9cyK18bX/TFb41y7qX7ZIHUQA+ioENBP6GPuCTLU\nGDly\r\n=a1Fb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"35a4e299d48b917b9f535fcb25a6e3bfbcba0420","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28-renovate-sinon-10-x-35a4e299d48b917b9f535fcb25a6e3bfbcba0420_1616699769673_0.801584583124612","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28-renovate-balena-jellyfish-metrics-1-x-4cb5073a2133ce90bf8ad296e842174d87015650":{"name":"@balena/jellyfish-sync","version":"5.2.28-renovate-balena-jellyfish-metrics-1-x-4cb5073a2133ce90bf8ad296e842174d87015650","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28-renovate-balena-jellyfish-metrics-1-x-4cb5073a2133ce90bf8ad296e842174d87015650","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ace01231b86be9c5606dedadff637680485b4ba6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28-renovate-balena-jellyfish-metrics-1-x-4cb5073a2133ce90bf8ad296e842174d87015650.tgz","fileCount":25,"integrity":"sha512-dVZUQPXBFrS1eX6nRH6G38N6G6ioeSwKrwD9bpmzv2noLs/VtHaMZmpPc4f6hKMSp0l7fslYulLbpdd4YzJx8Q==","signatures":[{"sig":"MEYCIQCj7rkQ7WV0Jd4P/ofFOi0j3Tjv/v4qctnvaD0F1gZkawIhAJyP+HG2bU7+6K5x7/HfdwkD1XiKaphbLle1XJdNeve8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXQ11CRA9TVsSAnZWagAAW9cP/03191KxScRHvo9wRb5l\nIrtPFKRJH96iIrcJvXMHwxNHew3mSy6RS2nbXMzw0fLvcxCQzMK8md6Bly8B\nnJ7SzC0QrsIS82qKnrZcT9Nc4TmLoV85vM7d9QAly0ddkRPf4IoLplR9hcu1\n1Ee6X6yJ92YZAT0ptHYKDOTkWsKyVKxlo1LwCUc+3t9ssml36dYrZJGj79rk\nIW4hEMlQtfqz7yVqVetXVyD0oNgywlObVVx+ptvOLj5YtYKuovL/ElKnOJjd\nju2N98VNQ0O8dzPBguBVGi+fNz4wOSIZKloedSbBHNwlsHXeOHPVa3mB6yz5\nHTFCPak5KEKlsS2tL/umtMbiuSIEGZQ3cWr0OvmDIwPEzMQxzUw831mYU3L9\ncUR9XYIZtMNtgdL2rv6VG7xDrw510VT00Acp2dTNfwzsn6xXIW4nT6BJY1lV\nkJ/hXWryIrH26J4kighrxgjbbuaEnTNfeN0DfaSABAqIZEsnX9BcHS8DulkC\nunCYQzCdhJqJff8ysiX4114hi7ujSKoqoXd7sSFV+U8GOlRixJDnY1sG1YI6\nOH08c5sSgcHxrGs1izuTz31DMnk478RzDI0VwPvqo9l2yPdIEApAGKAgleHs\nabvxeDqS7Jbd/M7txHcvRpDGr88iETjhysBKpYLapfIpuToEPlsBTIrYbSgp\nSgOz\r\n=Ysnn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4cb5073a2133ce90bf8ad296e842174d87015650","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.9"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28-renovate-balena-jellyfish-metrics-1-x-4cb5073a2133ce90bf8ad296e842174d87015650_1616711029279_0.10990288883737209","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28-renovate-balena-jellyfish-metrics-1-x-65889d153a479bad23aae94dfb0606f4fec381cb":{"name":"@balena/jellyfish-sync","version":"5.2.28-renovate-balena-jellyfish-metrics-1-x-65889d153a479bad23aae94dfb0606f4fec381cb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28-renovate-balena-jellyfish-metrics-1-x-65889d153a479bad23aae94dfb0606f4fec381cb","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"71ad820dbdcb24beced14b9513f8b55f09d6e1ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28-renovate-balena-jellyfish-metrics-1-x-65889d153a479bad23aae94dfb0606f4fec381cb.tgz","fileCount":25,"integrity":"sha512-YEoCk5HhBXezAYoG50VMlw2jLuhprqc0e6iDFYIB9DrDyR/DSp2bgcHtoRvO/yql6Brr3SDRPiFfjFcHNgI+hg==","signatures":[{"sig":"MEQCIG0eW9r6IG7HzCNHLnwrk/2qwMVwYullVKaIUIm3LEbbAiAKSJ9fwpa30Iawz9nT3Q21Oj48EAuEvq9YqAi8lC39ng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXVkpCRA9TVsSAnZWagAAi+8QAIIqs+/UNdH9JrJjwfbU\nU5Anwdeulk9EEJIifbkh7Nguc+Dzg5iJANUJwvo2nCBU1MaY9U6fJAnnzv1k\nNkdPlGQtSHrlCdJ5bbgwdS6N46Vx0XNL6a46A0QENtbQc1BGdPSrrXOJqGP9\nJXC39ktjKkidEbsawemuSq5cBNM4Qnw9/il2Z8liyT17W1L/KsH62atKS5AK\nu08I8dc69HI+zVuMmMwsvPOmdekKtP5px6W9XbgaYMMQyOsXNHr+m8pOwZgi\nqOLTfRsXWd0Xf67g0jGXelXR1FUrerg95vnsBTgDdvBFWHQQVUtWxq5YJ0jc\nLqt54UiJLPGaDMMK/SwmAFCGe8yUxjMmyC1gv8IFio8u2REZFWs5t+m2+DQe\nChC8asynWQlI/mrJulCD4lW1ohjjTN5xKZq4U47LgT2MpTk8GelVIazW4fiH\nxB3i+ICM/W0BRmjG2eTb8PRO4LEFupM2Z1BCWwLN1yklUrJhieRnWNq7nzQu\nTb5Rd1N4pCrm6APbQ5l8Z+SrFY/KaTTNUyR/2yDNVTun+O6spoh0+879jU+t\ne6hNl1dro51o6Ay/1a04hdEyThnaLGW+3yL1Agn8uwrVEY++JDv819oBn4m6\nA/srG99pagqDobpfK8NoZxkEuXLkSY9g2vo5KESShhrPu4XnaKAaaoIz+J/R\n89Sa\r\n=n9LI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"65889d153a479bad23aae94dfb0606f4fec381cb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test","postinstall":"if [ -z \"$CI\" ] && [ -d \".git\" ]; then husky install; fi"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.10"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","husky":"^5.2.0","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28-renovate-balena-jellyfish-metrics-1-x-65889d153a479bad23aae94dfb0606f4fec381cb_1616730409396_0.3211457431206446","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28-replace-husky-196ac2962e62f446c9ed9645ad445ae26f23947a":{"name":"@balena/jellyfish-sync","version":"5.2.28-replace-husky-196ac2962e62f446c9ed9645ad445ae26f23947a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28-replace-husky-196ac2962e62f446c9ed9645ad445ae26f23947a","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2205334c848c1196f8b6a07eafe639cb66e4a77d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28-replace-husky-196ac2962e62f446c9ed9645ad445ae26f23947a.tgz","fileCount":24,"integrity":"sha512-uZKsvV44UBrREwd9qtRXo0op8jndt7ZT3LVCecYSoPHXbL5tzxLXME8bCyKcW86zbILP0PC4H5aI01ah4bBg9w==","signatures":[{"sig":"MEUCIGBGDhijpRwud6Hydz/nX+XdqBp1rLiP7iTzoVCDv7G2AiEAi+urTtrsmstqCRdNk0BR3BtzF8a3QAoJZJm4D0JalCY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXYpICRA9TVsSAnZWagAA+/wQAKE5x+CAiCQNnCpxMpBO\nMvwW5JUWmby3qMusmeMaZuktmqZtRVDuzA9CGD0wZ/XbuMla13hDhYGVLVN2\nTDbyMz04I6DTcBX18VGqIlsysvhErfXjpEMHQ+K1h0BKTMlzKgNa5mP/vwYD\nxaeN+qdOe6DNOZmcs825LyubA+KPpbmGeMdUCn39cSjfjikw2upUMKdnqjIq\nzcziOMUtguGgvOJti6bABJM6H14g432c4Yguj1zkExkvf8FV8qMyPQqjlkMB\nYsp3KjmEVAJjumLpGO8GLsNoKs1TbbFrzuP3/yTMAZZRwIb+fDxo/dQAzadK\nVw/lIEW/SZoYHTy1ZFWTnjQJPg30zbyxcPZb3wSg4thmwHTgTV+riy4ti0TU\n66st/48hgXsnbgWeUH1dXNtuTprU6XCxxbvBkokaKseMC/NO4Jti/uLAPsWl\ntOOE60vNpeW8BT7yz9zElwTKNtdoQzmYBHeAPjjgNuv9EHJXM1bb3qTWebd4\ndfsWp0w8H5+jLo0MGhzIM7ots4jRyY90Fg/WftDJsoaywj0xjdqaJ6G3if4C\nOVH1r7bGPeSg7ixElOPfAgErvnzVkLsWLn7o9m2cga6odRF3hg0k3h/YWFJL\n6iPU6/AAcKGuvS9bAFJbuvlKOHZc7lrbjYqiNkNsiMwG8fGNxSpjbIh6O8Uz\nO9Zc\r\n=7PEd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"196ac2962e62f446c9ed9645ad445ae26f23947a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28-replace-husky-196ac2962e62f446c9ed9645ad445ae26f23947a_1616742984337_0.613727889163054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.28":{"name":"@balena/jellyfish-sync","version":"5.2.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.28","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7bb9f96f0fd90af9e63e492df10213d558a71e10","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.28.tgz","fileCount":24,"integrity":"sha512-lqv2vn8pQQxYCEYuOP9DndDd8GnAKHa4v317jCVeU2vqJZL4wNLKql2wJJDEEj6wsH+hhBVGKJ8P0e3DDnyMOQ==","signatures":[{"sig":"MEYCIQCgLauNZnkdnR6Y8M8JU1CVmwykwHO10Obt7SOmv7AtjgIhANy3qjypw+2DdHHZWzd8f0Lo8SrGZxd2QiCtr08f2VFN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXYsNCRA9TVsSAnZWagAAaE8P+weVelfOsszu9UZ4mDWx\n9SBE2FN+l0j2cYdpBTRsCvqo2gv9hFZtDRzIMM7MxRQAAetjWp4o+yIuAm2H\nSE15pcs6UnkaxWMpFA/l4SCCuEodD+bKEgpZqSx1PEaWA9yuFBz0U6RpiwJk\nU2G0AbXLlWbVMwixvYEPw1mQTXpZPBnqGx9C11glwvYvXdgaR5eaUO6X8exS\n57JQ5emOvOZkGDIBHIxNIJcAfl0Axu9wfdqJiqYof5tjy+MRfMQsYCK/3JkM\nHR/pYhF2evy2wH73yZGBw+nzbeJh3fUrjBmrfv82lhcQE4UoVHBQ278tqqh5\nckrkg3dWrkKMgPmQe4kf8nOLZibQTAZBvaI2jadqcjzaDNo9qMaFsoAw/ivg\nXhLHQq+KHBp3C4p9HX63eIV9oWu9IjL5XJ3DL5hf4KePSQxApgy4DYN7hpj9\nGL+Fs9EULTvc6jkGc6R2kjDRhOQUrtRJhTCadlgsjN7tqx3fcvagamtra9oQ\npgCIV0TLNduDilhFQbklSfLD8Gui0zoENE/dQxvR6K+3EmByXzmBULtuSTm1\nhNosmKKaOoRl9/Fyvp5vdMf5c7Oc2WRGJkNzQ0xLrmCDZLrOcxyT6iusOTaY\nxguT9A2/VGc5Mkp5aYglG3xOXWGcr+AJZlmHi7pALKFrWpQrXHgRGrK0ccdr\nh2G9\r\n=/pre\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ec57c1af9b82fb8f9d8f618c551015c81d92ef5e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.28_1616743180955_0.7270047073270758","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-balena-jellyfish-logger-2-x-ab5344b213b0dbd9ee8212a89d464ffe6c37d086":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-balena-jellyfish-logger-2-x-ab5344b213b0dbd9ee8212a89d464ffe6c37d086","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-balena-jellyfish-logger-2-x-ab5344b213b0dbd9ee8212a89d464ffe6c37d086","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"032e0c7ac684bee0af1b7ba4de731b82d0574000","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-balena-jellyfish-logger-2-x-ab5344b213b0dbd9ee8212a89d464ffe6c37d086.tgz","fileCount":24,"integrity":"sha512-usF2Km8Volk4LwDorQozPbdyAiexOhNsb3Stw40dkLc4AHZmf7iPINlt8QtN1AUzm1yLdO2JRcit47gk8Nv9Jw==","signatures":[{"sig":"MEYCIQCsQcaqZ0JpKVtp94536AJD6FxOvx4jb1VtCS6VAySrKAIhALVtSgiz9DKvlmh9Rd0VQZWPmtGd81KYSdT26PBsQ33H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXYztCRA9TVsSAnZWagAAo+oP/iGLSknijQn94ihprqLc\nYkKmGr6V/X/cR3Ny77cuddanZqSn126PwSGpKay0UhSPQwHYamKY6ZIUsU5U\nD18w9j5tgAQAOR6G2bY46cX9IEqru5jdLR2hsj1sGu9iaMs7qn59A3AcENUk\nqwTPizUcHIOlLKHsQQVi+KyuzRyggMW+uw7DUVeS5h2i9Wl0BFr2YdR7wGz5\nhsIp2EC2K/yVMEWDi30NRT4Ame4vxqUkTYNyTflIrm++7uRRMpTxZrHZaPUK\nleb4Uf+KrIImHJPucZTZff4UJ0T1QF5toU1X77qVjz+hCDXuYI5U7XWKtkIW\nEIFZ2PW+LZ+gRA6lnEYmW00kTuZwcumFm8/N3M6LIUK2tw9tOOg+NaZTHgIV\nJBKurxMLcJAucAZ4Q3Lk3YKYhYfkmmz+0NtcmmyxVkEDnv+JAGjchkDVtkyl\n0URoMcS47lV1ptchEf2QT/IVW4FT9me5fFJDv6SM3fBCaIqU2DoOzpXfbBrP\ngkwuhFt7QUu0rl/qF8IabP5wttBLZpoTWIEvraQN68ywqhz2uTpIRnAne27D\ngx53z0a+y2AoV6mdRlYdxWmvtc8tDb7c7h+Ua1gu8dyakE2aI0JFNtYblKZi\nyW7KoUwlf0nNjqDu/R6jnLKpbG8QkFfTmgwaXU5+BBdDqeWttPv1dQ8RlnTQ\nzsLC\r\n=Lb+b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ab5344b213b0dbd9ee8212a89d464ffe6c37d086","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.12","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-balena-jellyfish-logger-2-x-ab5344b213b0dbd9ee8212a89d464ffe6c37d086_1616743660477_0.6452529350214902","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-balena-jellyfish-metrics-1-x-b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-balena-jellyfish-metrics-1-x-b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-balena-jellyfish-metrics-1-x-b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1fc1965a6f73054ca7adeecbb08a9d673b504d6e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-balena-jellyfish-metrics-1-x-b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e.tgz","fileCount":24,"integrity":"sha512-AULNCR0x25xul3bpqcrsPnemrZ5a3AsKEQrCHfqniSnvZOQzLJpcT9av+Q9Wshv1GRJDPxm9+4Dv59rXHfMBoQ==","signatures":[{"sig":"MEUCIDgTb/IiUyCqUXZ6/t66L5EL5817/HPL7Y3VknS6QHwxAiEAxGTDFZU5U5PxKfzUjfHHApdBCOGmjX8q2Pf1YyT9EzI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXY1OCRA9TVsSAnZWagAARBgQAJnuer/DezurC1v5B9YW\n+uYSP2RfSWnP0vYDKCeGHp2e0VdX+6RaTDh7Ee1SsdXzkVObAL0xIxYtQILK\nXjOS5/Wd6efwHZHl9VaPbwZJDGDNuiVOGn07D3+dNebapBUGpM4PGl2CysSf\na796PqgBtekXMR7ZyiNsWvHtcWf1bZE1Vjyxd9/M3A8rS/jQwq3Jw6P49lJt\nCy8PqyEot2IiwgUnImKZvXji7NPIbMkidHp8i+cnd46rjQ8X5AKMvm8t41T2\n/TC+yRNsgKCInZ16jrBI2HcK0yTQGW71rWCnH9fTkPQ3nwNCu3v6uw1X3vL7\nnZZSdqLT9tQMSmODKgqliXp+Wgt5TK9UFLMRgx6XH8ZiH5cJyxtcuyDV616X\nHC/bR7gHHKzdm/ttZG9WNEuBVpvM2nSLaZ38J37nQW7A+NdG2oaoWYST7L16\n6WrL0A8j+n99McPS62mPKyypzt1ayBhb/AB001IBDvxiuBCI7Lr42VckQGmm\nmzgy5AV/+ZBzIO/1r7Uyz61Y6IShl1GtYiB68OILqQ6TdjzF/GVdB6QubCkx\n6ed+JbO/qotpHRuEMttvC4iHv3N33vgT19BcWlv71Cs9jXqrruhEdzGLkSXJ\nAS2Q6TVT/uEfXQocuwFIq5h+/j71kHZzOtPdv1hDQV98mKECrgth+oTfH0tT\nUQEU\r\n=IFqz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.11"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-balena-jellyfish-metrics-1-x-b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e_1616743758163_0.8490926157965011","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-sinon-10-x-5b529e8a4f81f54c62e12ee4efba425d1591985f":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-sinon-10-x-5b529e8a4f81f54c62e12ee4efba425d1591985f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-sinon-10-x-5b529e8a4f81f54c62e12ee4efba425d1591985f","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ad28cbe16ba11203622a72b8120c8373173c94f9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-sinon-10-x-5b529e8a4f81f54c62e12ee4efba425d1591985f.tgz","fileCount":24,"integrity":"sha512-NIFYPKjxlMLO7SNxCky2q9S66R22PebsPZc7T01oMoloR/OLKXtfi1ZpNZhDuARJa3gHN0a2P4BE0Q1Ue7B9yw==","signatures":[{"sig":"MEUCIBqjfmpUFj77IvfUQ3elz5OUkUpSp1JBo2qrBvgB+zk6AiEAqc6vR3N+2LLwCLjWADon198i0LCmSOhBEkQQgci9wyo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXY15CRA9TVsSAnZWagAAQKEP/1QKmXyp3pC5u6Y8+lI7\nnSpOeqP/f9WO4WRc3LxygIePoQD+IpGOLgBKpB/gUAvpT9jUruBvLsKYGQbo\no2xARkcQpkzIWtRzztudeJn0Lzjtg4bDx25Z24Ycwz9iSAE/gIhD4ST4qMCj\nVC1GOr2ueK+/XV6WPtHrxqIoIFjGOGFTPBdsRv+JIX2VxFFdlUQv1a7oh4rU\nwzDll7uAYiJYJ0vxnmUVaTUnsIUnCiCsULi17p08nsQeSyg0Q7U/WIwNCSfC\nJMkdZdla+h/AY35qsFaVRiNJ6Qt/kPCLOQ2d4xL2W+g5Ul721p4cGCPNlTOH\nQu017R91DcJqzVA4XFVL7Bqafge+Hbbv97+hdpYJxiHoHdIBfrF4alaw2Exb\njdbm/dl6XlLxgDuiJN3kT55bVRoWYv29z8uwPrtBfUIuagMhBSXPpgZa2yHJ\n1wgL4XNwjATtUBuX2a3N6DIdlSwVyTHW6ZZpYCvDj/jLTpCZYw/Fcfw0oJyz\nAaEbOxKG+QlLH99fk2DXFDoTz/rUeFRDa+WNDn9yxCghViR3whsO5hbd1owe\n/KCz3EinJRYtYkGTXmC7NaUyNWWDXAsfJ9WpwWJq0kIQZMDModG/vuBh5eBi\nLHEm4GlRssigafEpqodQ3jq0m9TTPdrBuE/pVX0RpezKR86Ctp7ngR9YZYKZ\nNZiO\r\n=HcAH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5b529e8a4f81f54c62e12ee4efba425d1591985f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-sinon-10-x-5b529e8a4f81f54c62e12ee4efba425d1591985f_1616743801392_0.7978554785559999","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0-convert-to-typescript-bfeccdaad8d69a961297039960133769f96ce228":{"name":"@balena/jellyfish-sync","version":"6.0.0-convert-to-typescript-bfeccdaad8d69a961297039960133769f96ce228","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0-convert-to-typescript-bfeccdaad8d69a961297039960133769f96ce228","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"33a453dfa02983e724e900a105b1f054c7395e0f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0-convert-to-typescript-bfeccdaad8d69a961297039960133769f96ce228.tgz","fileCount":39,"integrity":"sha512-J8G5qce/pf6R/ZBx0aXO+J6lVRy+A7KQHgEIlKGJLyh865H3OpGjPCJjiipPAnRzw3I1ZwNXIk/Sqz+oXc9ndg==","signatures":[{"sig":"MEUCID0Vxpg/U6mowfSYwqXoB73C1Q/mg2/TQP+AbntH8VPbAiEAtPw6VO5QuVrCguimbE9jKyDgo3m9MNSZ23TpaJRH5eI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":250822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXcaNCRA9TVsSAnZWagAAKx4P/1ScnelZGBMPCkIwG6Cf\nXySo9WbNuefsAdp4ArHvj+1I1hW2NTmlmI/EUS7wXDz98eoll8AuxYt6pI++\n3clY3iEHRMVRIPgrtBWdfmM6tPO5HwmutYzyWpTbwXZ7MPf0ZXfEEsnlczLV\nNjUW1q0wLNdiePq5sZ8L9hFi+k95zBye07EG3WrU1gryeeBPW5wC1KLyhbJB\n4axJLxnhWTJh/uYAvmk6Y9vPVs+JZMbSj38jitdLFFdAlClpccy3coEWUYHU\naEpfyvlEHqayRg+b0+EMqYXnf7KCyitwW6DNwIf8YzHLYnJx2x8IOFo4IM0C\nuk1t1cPHYg78mpJrScQUoL2NBq3Vv8GQ/QFK64eoGhvdQP8a5ge8+lLAcCq8\nSv18qTxMuP4C0Q35CB/C8Ixj4Uy8RDCS8T4kYrkV14WcgqYjqeqEU04uScAs\nz8RntEwRg4cy4gjj3feYNqA4Fs9WvR0trKYlflyHRu5leAZLr//g4KPDWXsQ\ni9eG1gMJwtJ4qHcOckvBsTeLhQyXWGoFy93rfRpubfPqQZFWbiBtzeRLxqQz\ncXUOaa6ryrWTv/IMXTB0vfXEjr0ZV6Td7Z7Db+gUeIM6Oc2wUz0UsXYSU/wj\nu7M1DGqbTlnANvXvh1Ta8C2hAgwzMpwdkZoJjR3svR287RupJj6qAz06k+Wf\nrUQP\r\n=0q2x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bfeccdaad8d69a961297039960133769f96ce228","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"^2.1.12","@balena/jellyfish-metrics":"^1.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0-convert-to-typescript-bfeccdaad8d69a961297039960133769f96ce228_1616758413094_0.6974438031918297","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0-convert-to-typescript-171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a":{"name":"@balena/jellyfish-sync","version":"6.0.0-convert-to-typescript-171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0-convert-to-typescript-171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b32dbf631e26d35cd5df59dae29f034f1eee4f96","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0-convert-to-typescript-171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a.tgz","fileCount":39,"integrity":"sha512-Rz5a9g5Y172EtjXQBTC0dfrTOs4lVjkTu4ssqSyl4O3m4/JCc0hKA2juyM3mLev/QwTmeDcnhCAlDSe0RmZlNQ==","signatures":[{"sig":"MEUCIEb6g3JKLWnBVY/ydyjGqs2dk+ErzgGOfEtCJRJc8oaaAiEAtMNd6OBjS4Kl/pKxMUStx+z3slZAAHArasmanK4QlLE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXcgsCRA9TVsSAnZWagAAPiYP/iKpc5/lZn2B3L3loWGl\nrc3YX3oPPtf255SCZn4/xDfxIBVvOnoJY5p8VCx7cLisYgIuJMYbB4W6t1d0\n/1dFmb9thjVk4sC9YqXRpw6rbfH5TfjPcJiva2izglRbpujsrXpPl8rayvYf\nYKgSttW0pfeyBC0ODs04dLFvr93YfYxGjtwmMi8/2n1ncMvSboNHLqWAzF/h\nS+HKOlNI23nUHmbgk+12CXRuZixB+XJ10gJbz1XF24EFuxHfL5Fiw1bjFXIY\nBsMzkkLJYRL9DnfbCOmetG0SvII1g5+rHYKLXHqX7z6ZS0rptJsHFodSxRX2\nEINr034o8R359T+bvqtQTuZnkzpAKhNowliFOgGLOwAjVagsxlbQuNiR3hFT\nW5RUt3oBZUKHHry9mL0TiFG/IWrU6/O3WRLhhVyKshNl12bLgYP1uEb9Nzx0\nyle2tdIxvQNHr6AKIOVY9vS4ua6W6SldF0EeYwJy5jnVhLW/pTnXE0wfI4Iv\ntCj/xa77JmtOA1VlPGzGQuXBMptYiQYQwEe2PoLY/FbossYN0b0uuRvqkv5+\nw5zpH9mkjCtaq0SxmKFkcWnzpmAeqBQxhtZfTwb4ukuI0sUxwKf4ctZOa6cp\nDZ8GKTxGZMvGQxkeI6VeLJw4dwrvY4dqtjBXguyF5LnxrseMq80XOCyrYFzb\nKIDt\r\n=neHu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"^2.1.12","@balena/jellyfish-metrics":"^1.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0-convert-to-typescript-171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a_1616758828208_0.8049324246479921","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0-convert-to-typescript-3b79677e1720f5dfcc800e7e089d6dfdb1032fda":{"name":"@balena/jellyfish-sync","version":"6.0.0-convert-to-typescript-3b79677e1720f5dfcc800e7e089d6dfdb1032fda","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0-convert-to-typescript-3b79677e1720f5dfcc800e7e089d6dfdb1032fda","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5df0175a815b874c629c6b051afc64457da02f4a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0-convert-to-typescript-3b79677e1720f5dfcc800e7e089d6dfdb1032fda.tgz","fileCount":39,"integrity":"sha512-pBQGuk2rt7i7cMGe2rZcktzAByD3T4QexX1sbyRfazyc/dwZw/aRiGRyXuMx/znTSWBwMmlDl7ORhuMBN3YohQ==","signatures":[{"sig":"MEUCIEIqpmNJL7nWYqZH0KsfHlJjAANUCCBilFr7oa4XxClSAiEA17a5D7clR8jVH56z6w65WXETn939LvHm19vhKf6MB64=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":251182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXdFmCRA9TVsSAnZWagAAweYP/04FkXMQsiEM5tXCIYpB\ntqkWivDRHuWpk0BK7zLcpwZmt+Vx17T0NR/HVhEEJBdMexh08cMBlaxEav7F\noOADwzMmrQ0drYr4DIKhL+873lBmMSL2rc0+Nkqxs/AMgvuV0Kn8Ab+KABNd\n//o7ORmZU9Hv+wIfZl/mDVTsbEGpfj/E850pV2ume5Cpf5VNnY45HrKLUo2K\nreJ5nD/Pi8rN9PdJrj0KpXrVKb5N+MtXPDtYesixR+rW1Scawqz+JoMSO5Ry\nVz7HTf4UPBBrtftLOe1NIResy9GaHskMRjJs0VJO+diqFeX29ZcR/npPnapu\n36V5yWuU+n2oQS6y9d2S81qCpNprErzJfgJw/8iwaD+WOuMJldTHBAylRZR8\nFrR0yWH9XMSglkm/o9/845/4bUddwUV2kRdGCJ2gfIZrmMd4v8HomBO3P+i2\nroXBQX8q9k/2kX15F8hCinwvV8KB/8RQmXt3kj5r8kJX9uqqI32Nsh+YZtk6\nX7L1YQjccJFvalHN4DwM6aTzXDas3bJjycBPijf+u4D5mhfcGkXlgHDa4f3G\ntyubSSiG00MMvEhQBB0RrUzrI7sMyrI98bu+//igM245XbT0DwKoIVlbPIh4\norqmUxa1QzqD6pO/znlWOAEjafkpDfAI4AQ3pF7fToUKbRthqrKoKoq+Ca8J\n9qy8\r\n=wJSh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3b79677e1720f5dfcc800e7e089d6dfdb1032fda","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"^2.1.12","@balena/jellyfish-metrics":"^1.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0-convert-to-typescript-3b79677e1720f5dfcc800e7e089d6dfdb1032fda_1616761189951_0.14312390211786163","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-balena-jellyfish-metrics-1-x-e41cec8e8c6aed4cb92b8f74826f77de246a4926":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-balena-jellyfish-metrics-1-x-e41cec8e8c6aed4cb92b8f74826f77de246a4926","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-balena-jellyfish-metrics-1-x-e41cec8e8c6aed4cb92b8f74826f77de246a4926","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61be71eb6bba379d517ea169dcf0eaaf4ab8436d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-balena-jellyfish-metrics-1-x-e41cec8e8c6aed4cb92b8f74826f77de246a4926.tgz","fileCount":24,"integrity":"sha512-weQh8xhrZk8auhPl6ivfCrUU/JGjCD6JrT23NrYuOrDe4byUU8Zs4RKqYLM0yJqQRSus22nmRlOsLdux/3PHzg==","signatures":[{"sig":"MEQCIG116mG39vSbQFbHwP2Ze0WFp66+KCyFtQFKEGynb6NkAiAXeL/E9FqsD5UNItq4RDnEklOqQ6Pikr2p1OYfWdPx5g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXfoXCRA9TVsSAnZWagAASfsP/3dnCX1cFZU5QZeO38yE\nFeGb0WnkxwNE7R7QVHyTVEOAiy/1/g+YurItpG7R047pNAw+wrogJLpEdw9J\n2gussTYeyvgla/Xzqx0UsAiwNcV76B8USu71LdacizbbSH1DMLpD7M6t6I96\n7q01iNMg/py5VCBGmPo9HCQHLsxvSvK8Jr9QSO/vbGi8kudJWvd5FbCB8bBA\nC3jBV8OV6J9O2VDsUo9j5sm3NWdX78ZHAHbzHfy4NQKTIo8XUzCW2RIBijbx\ngvbdleWGqBaaySrzhGnNNx7ushmLfl+oTzTJvtMnnW0mZqkKsQWvs+UM2wqC\nClIoFec4NqS+SkbQ9dWcT5JUWIfGnTRIUa5xF7itb9MbZ93XfI6/MdCvfyOm\nprh7MQEWgw2kl0EIBQglpLbYzMj/xpbzqEhkotB9f3EXbX55sBDEeGGv8ItR\nKGeGCa2KrRG7kgpPcGvEMsZccLCTdrXSBgopTRJegNH+a6pnUFVV+1NrqVbt\nafABXP5Y0H42rpX0ndV8ulpBEtX/cX8lrQVIcLeswlGDAbxWwVuKrWypomU1\ngtIf6QSiYaxP7xo86U35zJKUyI8i5YFkLlEMc7P75MfbAiqs3kiG/E6aAXFI\nZ26yQr0fvFqjhsnslG8YYbX1pALH0WNUa/6nSnu9kzLG9m2ekDqTnYlPScBA\nSHxc\r\n=8ibv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e41cec8e8c6aed4cb92b8f74826f77de246a4926","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.22.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-balena-jellyfish-metrics-1-x-e41cec8e8c6aed4cb92b8f74826f77de246a4926_1616771606701_0.050708137301199274","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-non-major-65d46992f4d292c8e4599b74840050bb8d672043":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-non-major-65d46992f4d292c8e4599b74840050bb8d672043","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-non-major-65d46992f4d292c8e4599b74840050bb8d672043","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2ade04b38caaeaed05ac4bec7110a930d1422ef2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-non-major-65d46992f4d292c8e4599b74840050bb8d672043.tgz","fileCount":24,"integrity":"sha512-6fK+NUCZJQgOolU101oAFg/H8c4HRlb9fW441RTddFHmu5Y5XPpRg4CGBoA35PfcXJjU15esbRU6ONKKgkZZ+A==","signatures":[{"sig":"MEYCIQD7/6oGwfjzgET+p+Y5dpF7XYZl6PITQSYvpY8SphyNJQIhAJUpGa+bSTt6CCZe6wJ/P+ueqbXBdMEgv2ElyshJf8vz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlVbCRA9TVsSAnZWagAAZ6sP/1STU1a5IvrLp3o+0PJr\nwIq2jGKDHHULoy9n5AoPz9LuH3VeQWr1+NmMSY99BiUVxfra+rBuDohTt/yd\ngJ9jpJbywKR1cGwxmg0RWuNnMc4gcJ2rawTy/Y/iY8HvOTmOy/TAtdgVDibL\n/MomvPZahd0PnrcaGCvaT69+os+d9ezYucUqzH0ZjoInhzL7k9/XsF9w5JmY\nZlI5y6rDsQEc0SZx2eGhC7tDR5Ryyl/ej7jPo2++jyhy2kFcl7B5aV2d35Bi\nbT1/pxKrrsO1Xoj8zdwubf78yIR4dwAcnaX1o39zSz3Z2O2gNiHTViJNknGN\n8pS/Y8UiVSbcpqo+pT+W8ILYMJKATmdPUB6BON74wh55UbrXtwxoDPsbKxm2\nAB/iV5PBZ7Pt7Zbh6zA2f7C8pSyhcTQGMq4BfWSRXi+2AL02GJkXdrZIrCO+\np1X6FaY/AagsJ2ElaAbUW0J8Jzqf4xrr/x8/HMNdy/ZqmQJmUIJsRYuEPtkR\nwLWGyYFh3jWZpuynbK2qzF9h470pn7YgfRT3p3UKwT9QlpG5Pj3XVqMbBEPQ\nAjXh5kSDO9ON3iy1LoXxYxf7p/shPaRdXq1M6wg4xfH2woMCwKGU+OuYpgq8\nlLAvmiqfpzo+FD+naj2HGPGkJlPXrhLTPTB4PKMk24vgtMfRqVfYm6l/TVr7\nHy8m\r\n=Nh1i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"65d46992f4d292c8e4599b74840050bb8d672043","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-non-major-65d46992f4d292c8e4599b74840050bb8d672043_1616794970568_0.5488597585827384","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29":{"name":"@balena/jellyfish-sync","version":"5.2.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b3cde7bf0935e6c026fb8943eb40008da7c2a27","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29.tgz","fileCount":24,"integrity":"sha512-xYBfjRIp8LkJrXm2aduRgsambSdnIHuJXaUSOqlvcaIXKm/cdPkgmfNDinUm7HFvbtiujTpsJo9emKb1RQIbyg==","signatures":[{"sig":"MEUCIFBuMropgosx+wbuKiDeqUz1PJHkd++9/RqsfCU5kCxzAiEAkY9OB69I/HeP1JSlTtN6rX2elGhgIaP6KiL8sDpmuW4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlYQCRA9TVsSAnZWagAAwn8P/jED7XGsa+A1eR+TKkpy\nrndqGM1LnjkeeaufJUT7jmZyxVOiW3iWhmxFWMv6Wbvk+iRiFmqwnu8IUMs2\niJHsDCZm2DPGd22vorXIUFr03T2D9mUHRU57ghJWseqsrhLtkd0amXk1gdMp\nn3qXaxOTxYQrgcCTcsWtRfZAgvWx7dRWrl/y7GLFNL9ZdHBbv1yCu5MZXpVN\ngjov1QrXk9axxQxkUwfEvd4IKuXRF2pVq57rbRScInZSwRtuE/FBZ/KS4yxp\n4F7sjnV730obobiEra01t1G1vCOgZ2ViAOvi/2TEfWvZXtSADIq+JW3fWwml\nSqyIuRc7CslOh+TH7C+QexVRGFaRJgn/tlPUzXU6mZ7uvtlnR6arxcTzYZL0\nFtWdTaQ41GcIrXY6ZYOIUZ1NtF/4iBgV2bXWI6TBUZ/TozMXcdPeBG964Vwt\nTGVsymqKAGGafFzcMIa9M6InbDZqWO4e4Ee3uLvTfjGZTxmFKQDhunKjiOIV\noyswhJ8pKmngFL3IuBxl5C0cYfwtw0Ky0r206s3MFIoFb9lK4Qq+m48Y0ZMh\n7VubaRThjZ2qtQGBWiCC8J4hQA/3Y2UJ6VHD/iU76RENXS2jHn1nxP0PgYgv\ng8BfP2jA4+vGLsML5q4zznmtTxyC9EeEr1+RI9f2YqVvurwytGzaPPN0UL5m\nfqyS\r\n=DFra\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1e3c771e7f769c3c50719fd4e78fef1d0424d7db","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29_1616795151818_0.766951859596781","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-balena-jellyfish-logger-2-x-9b6369b6861f70ee185790dde8a84cab063eef12":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-balena-jellyfish-logger-2-x-9b6369b6861f70ee185790dde8a84cab063eef12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-balena-jellyfish-logger-2-x-9b6369b6861f70ee185790dde8a84cab063eef12","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"71cca5a5593b62cb9bb586bbf5eca331717ba3b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-balena-jellyfish-logger-2-x-9b6369b6861f70ee185790dde8a84cab063eef12.tgz","fileCount":24,"integrity":"sha512-CwD0+6bMDAtMGxXzoVuk0xcTN6VkryGOm2w3bvsRuUcginrgFSJtMyWBHAgNfEz48KRH0J09MfXwso35VouEmA==","signatures":[{"sig":"MEQCIBtigk1lEM0LbyG9CZozbqDTygVAfGYXdaT5GL51Z5cDAiAiCV1VQldT6mTpLnjKlkT4t3dsPkxjcH25JrLPbn7Tbg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlbHCRA9TVsSAnZWagAAduwP/Rhc48XiWJvnYSR8uQOJ\nBUynmODsnW9RmTa1XarasSv+Hat6/VO7/wsRBS1DsVWL9oYR+6WxZOAFH3Pj\n7juWPKDpcq9jPUahQQFOZNHlrJFs4itVw+0J6aN/sQ9OcFXUOqHoJE+wh+np\nTDomFfKbIUvKonMnNBURo6Kt+josp+Y+pjN+x9fhEKPX0hlLC10HQrwLiem1\nP9JcAfeLhQd/tEm68AK1KWZ8wVNNseOSw2SBfNdWl/eEf6bJSJj+22Zcwa4y\nrb+XlD0VXIBBvNpoq7546trUouKoyUfuUlpI3uQRoULDXaWyAVCBRONvmsTa\nW8DZywS1JImsqCG37FkKX57xT9cMOndM3V0ys8b13IxQbF1RX1R0dP5FY0ae\nfU2lHnUbmq2DTfX/wxVqGaAj0XPaYGOTnh6BCcP5xwcziBtMTaA+bWrYIZE7\nm/oBgVN5hMWHlSLIBp/bN4wLocwtQyfrHCpZZKU4JKaPktcCzIxR1gaVVbfZ\nQs+K+heEAoqDStq150oVpq09bpXDi7JxpOzkx39Ti51gVgKVKuR4qo7c+sKW\nwdidB9AWzEHnNtM51bn4qaJQg+bTMUG0d3CTZzEjsL+6oenliMvYyZwWhQwl\niH1VirY2d9mlnb5ArelSivARdS4fIYOHrzjw9KFvbvuQnrl9zJIUOWbCDrm6\n//uT\r\n=MiOo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b6369b6861f70ee185790dde8a84cab063eef12","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.12","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-balena-jellyfish-logger-2-x-9b6369b6861f70ee185790dde8a84cab063eef12_1616795334877_0.8734991421427847","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-3d672792eede1ea923c67f975a427c2b09302bf6":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-3d672792eede1ea923c67f975a427c2b09302bf6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-3d672792eede1ea923c67f975a427c2b09302bf6","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a88cb8c8d364019c342ae1bf374bee0c6fdd8ef5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-3d672792eede1ea923c67f975a427c2b09302bf6.tgz","fileCount":24,"integrity":"sha512-vQZYjkkkmuxPgfFVZ5rfG+JLx0C0Ah5d8hwOs8WpyP5gmRyOwwi8anqs8gg45btJKx5R4MUUwf7rIe3qw0H5rw==","signatures":[{"sig":"MEUCIQDTkZaqAB395uvVrO7+eXQ+ZoF72v3dCRTsSuWjqQDsNAIgbALUV4G8nkQuNwzWqKQNJH0WqpxGxsnwbJnJhF9LwMY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlcdCRA9TVsSAnZWagAAI/sP/3cGg4aXRSUDctSTDudU\n4Dge1rv+yinOSjJapVuneJlBnKuQbi1q+UP/7+aHaxsqz9kAZb6xBueli/fr\nJhlNuueP0CgotG8wsb6XHpjAr7vgrtB77kG1EwWXhhTx126UKX4HG03G87mr\n/MVKwFsEtNwdrCyAwJo3b1IQL9c7y/ZzhLI4tqmNtvQNeGckU8uwooa/OcJS\n9x+ravdtg+wnONrDT1yllMay3oncOmU5M9dhuSeagyQFj/XKO6XEdfcuUFOt\nUFuZRETf1jJfv31i7q62lxBYRP0oXBPuU28JMKKwUMBRKmvlMP6E5ShTORzh\najfmGDRdzWnSr1/hOFd585w1sv2eM/EOYN2Hh12jBC8Js/xomVYJeoa0X4nf\ndKV+euF4urIHTpylUgjclfkaTg/CAsF1kzEQNW0mY35l7MSwkt9GIRAR79cj\nKV5SlwW/NXMlgyB8LsNCpzZs286oO1xOircfjFxqtByBZ64gIt+FSnJEM4uH\nLgsWpAN6kykG93O1B7i8EqbPZdR5wgkkO0GTzPm6mb039+gN3D6iUoi1CoqP\nymjPKMzWPbABNh3pRD2r6a55bXmnrspkQNNCEVduRb5wvQ75dDatSAh6VUM2\nzc/hixlv01D5qG7vw6/PfcaZSsTAjCUZMERLoHBS1JdwZxyAZCPEB75bCf9S\n6vOw\r\n=EC37\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3d672792eede1ea923c67f975a427c2b09302bf6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.12"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-3d672792eede1ea923c67f975a427c2b09302bf6_1616795421373_0.14822979382044932","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.29-renovate-sinon-10-x-b05ef89d31a96c49edb487dc5bbdd772152523ba":{"name":"@balena/jellyfish-sync","version":"5.2.29-renovate-sinon-10-x-b05ef89d31a96c49edb487dc5bbdd772152523ba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.29-renovate-sinon-10-x-b05ef89d31a96c49edb487dc5bbdd772152523ba","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9704f122ed08787442f319f5f80ce72e8ff52f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.29-renovate-sinon-10-x-b05ef89d31a96c49edb487dc5bbdd772152523ba.tgz","fileCount":24,"integrity":"sha512-7LC/CJFcL+ohcae90ZE8VsBVt6QX2lL6Qtw+sBrfoQQN1+Cpcd5dYuCZbAJaQ7RjTlUS2FWtSmQY+DohKWd6og==","signatures":[{"sig":"MEUCICPknVCLpOEjn+lVn2rO99RPP1npswUzxvE0GH7cwTfqAiEA6Jm7uuGvmBfXBpIqurfCW4Iqo6Yh70Ut80bk2dD5QzA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlctCRA9TVsSAnZWagAAh90P/Rb2d/6lDwb5FOMy2iu0\nsipXTdbCoHggA1fs4zQK3Fw6UcbPbglJ/7qWPN7Fa2h3P3EvkmNpgYu2jBZS\nW0sviXoNRsdqP3M8Qj/w1gNBDVcRYIUe5+AyxRA1I0u8m/CWw9qyadzXs/xE\no/v0sAg9rBfy9WF0HgC8PnM95w7TINsp7h+M+Ar3n5tcaLSQEiIBQuznK1PO\nzmY0ckTiofL2rsirpeGX1+LJCAwZdyQXB1gAe8mjAb75+/DvfggHbsG1LT0s\nNSmGrkkSA6BPRXRhXV5Vd+PU3cfBkejngZ5uB/XUYaI6T0LcRA5A+1CW0w9G\nlPNBz53y2EdxnaiFfM7XiWTWKHeELPBL8GK6R6/TSX1GuvvtdZdBs8bBWRDZ\nk+dGwiNx/pPsLb/huhgD2ttP6lqth7+5YZ/nw3b1HT6hYaOevK11UXc9AoOr\nIUSez9UtiJvKHYG0wk3OHMUYd/qsh/sCqVDDFHaggbb+IdnrdUs2+QbmxzFM\nCqxYzxoWUcDgP81WbQGdpNhVyxLxEUGbFT7iYI+nsvTMrxgKwNeqP0ZLkFl+\nibdFRzA7EdG41EFqmqkRgKekb+VDhG4WjgFZXf7nqFy1whIppVLNTeNpVjiC\n/4TKItGWgQ5s6xMXCewqHcGSbXDIzOiCJC3XAqfJCAmCRBVH2DRnnBNop3GV\nCZXs\r\n=JVwz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b05ef89d31a96c49edb487dc5bbdd772152523ba","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.29-renovate-sinon-10-x-b05ef89d31a96c49edb487dc5bbdd772152523ba_1616795437071_0.9474594432868746","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-logger-2-x-dbafb04c07f009cd982a918790a87551ea2723d7":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-logger-2-x-dbafb04c07f009cd982a918790a87551ea2723d7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-logger-2-x-dbafb04c07f009cd982a918790a87551ea2723d7","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d461f3f66e6e65670afc95381f40aa533cfb1e0e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-logger-2-x-dbafb04c07f009cd982a918790a87551ea2723d7.tgz","fileCount":24,"integrity":"sha512-nEUOZldvUGG0nNqfHWijirG6NFJuxNNLnCnbDuDr1fDxQ79wipvXH0SNuZcNsG0QOLFUeh8GyO1AC7QrRQV2xw==","signatures":[{"sig":"MEQCIHRvRtlUPK9kwvdP9nzxsUe3X+UqUg+oA6ZbxvkpKgE4AiAJTTh45kRdSPZfrjULj98foJcprYjWEjJi+N1Cm772Qw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlfGCRA9TVsSAnZWagAAYDwP/ihCVvO8jbjXIL9bQuAE\nM5X+v/GmU+AMm7aFLpUc/eBFnBimd5d8ZbemD/Aq2f1cxxfFnw891ayUMsnG\nCF7R7gyGL2CKcYw0bq9waAwLQQpdyIB9JXaJXApgIzJ6kRP9X7MZM3TjN3oj\ngfuAxkGA4skDB/tmVOr4ziktkq5Ghr9J2dBRYmzdhYgSfagzyqBDgzEjBdiM\nUxLbHAIS8nkxIaaFY76bZBQ87D6mxXAuFrtjdglKVD/kLl1oK7WwxYD//sVc\ndKfQNJDbsb6+L2w8tLzdCggkEZjJQ5f2da9fEcV7Su2MHNViLykYQzKdhPyW\nVGVoJpcO5cwThHp210O3b8rZ7qKk0MXrRc8OrgT5q5KZx+uUn0r8Rngm/sFj\n+4T/8OSP+DE7+6ccgzWGJVYY5qbY6RbznXBNxrsoXbJMXCiLT3Qv33y/+tur\nvbMGNR0WUSRu5Hak6GVfmr9h7MBJjOb0i9cQhZUNYvb+yk3vCNyCtW3ykgvZ\ni9yh3YC5mdnhMKPdHXFae3xSe5I9nORyLQzixkQdEO/pus4Vd8Sl+8jbQPFa\nxYQn5o4A5xDreEikQQs5mLH6hpNEJWZ4eh44mR6hLAZxPC1dqLWYNcmXB4sa\n5CMPnlCtR3PtjWOWf8U9VWtRGKZkV/4s8DFqyppPZp+Lz/I1ORk4U63po3BN\nXkZG\r\n=67Fo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"dbafb04c07f009cd982a918790a87551ea2723d7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.12","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-logger-2-x-dbafb04c07f009cd982a918790a87551ea2723d7_1616795590454_0.3107781246776202","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-sinon-10-x-b93546d67b32c649a21b151daccd23d64d7040a4":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-sinon-10-x-b93546d67b32c649a21b151daccd23d64d7040a4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-sinon-10-x-b93546d67b32c649a21b151daccd23d64d7040a4","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"191d34b733f9924e1ab0a94a68727ce64e7a6df7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-sinon-10-x-b93546d67b32c649a21b151daccd23d64d7040a4.tgz","fileCount":24,"integrity":"sha512-PH2ggAb+SSJSgie16SVAMZ01l/iHm4LoRkM2tp/rLZXRllYJ8jrTL8Y7GE0z+aCikZElZWc+tZzzaAI2KJhitQ==","signatures":[{"sig":"MEYCIQCf/MHi4cahkGVDKr6oWDleeminCOqGdREFnDG5+yGnOAIhAKzW1Znyk/hXe83mvPUHzqGd5wUZnlq7bgARJT9vVWUy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXlg5CRA9TVsSAnZWagAA6J4P/RTwfk5gjV89IExj2HqM\nV/pU8eoKakWaB0u0Khh5Pw++QC5rDMYfWU37Fq3HwjGEudqw5wbgsDJ2jdP8\nvY4IEWnTiVIQPSge3J4SF10abBETicxjOC0kkHIYj+EDDDHpxxbPoc2Mz24z\ndBiPx3njwQXnLCghIK7vzdz18LqmQIBKk0N/pf2qOodEPANhM+xZbJIeHoZX\nxt1MJCKAMXyt1itx6tTXxrN9d5hkexXVWjz8dWhJ82MHzm4+zpLn7lmcSGEX\nYb88P7/kt9G1SWk2Ljtli+zuulLx42UM6yj1zk9RPtbB5I0fK0qt7d0MgK6M\nqR+uc1lcIYuSoMgqp6gYPJoaLEY2g2h6PHp5cg8Z5BWZVl+k/dibB8TMKlgZ\ncO2VLdL/Ams8zXwhaxWP8MNEAkFNxuc693Tw+to9A3XJSQTTFjbLiMca328P\nERuEV71n9Fsdj4WRCdBJXvHm5jvL+XmV4vf5/h7kf9J7WF4BgaK3TAmwk66O\nwgLnXhlwT19a4BE5Y5tBFHuMakzkx5PbjSUNIOtgV4H0+JP88+Dyfj4ICd08\naeorHWdZ16731B/RN79H8hhTKJ6aUW0TWs5L9C8nuiP3kTFUtROpGmF1bda5\n7nknJgtUMjMGykpeeG3VWDEea22h690XW39Lui0SeuwvIS39nDgPSLYmi4+r\n6LEn\r\n=7VLa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b93546d67b32c649a21b151daccd23d64d7040a4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-sinon-10-x-b93546d67b32c649a21b151daccd23d64d7040a4_1616795704650_0.3617451879083078","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-727b3b53162f23fa6613da81a59dc2d7c5bf4a8c":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-727b3b53162f23fa6613da81a59dc2d7c5bf4a8c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-727b3b53162f23fa6613da81a59dc2d7c5bf4a8c","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4929e3a94d1515a9bc2219193f9052d25a2eb92a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-727b3b53162f23fa6613da81a59dc2d7c5bf4a8c.tgz","fileCount":24,"integrity":"sha512-14Y0Xl/BS3ZNhZgKlowKynLFHe094XNSIOb3pIwhk45F13VPSGC4Wz51mGOhfxUlsq1cIj42EUZIJ3iufMU9CA==","signatures":[{"sig":"MEQCIBc8e2TKsjjSlShl3+7tkZ6CvtnYksjAFiTWiqjX/Zx3AiBsnBZurrQpTM5/YtjGupJ0719fkZ7BpLtR3YYcvIrfmQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgXodZCRA9TVsSAnZWagAAmB8P/1mfqsL3B5Ki3wOpIMCV\npIZFt95r9E4pHS+krnQZ+ohc+FEUWioy+WhAwsZrpo2ZbSN2uZjpWs1nLDHx\nhnVEBhMEv3A8jaX2be7foJvYw+xUvKfo282ufIAsveehtKBuJ6WyX+Uzs5Fs\nfIY+p/+yJVbFEvZExgt9EoAQWDUiOAnmUjoLPxVo4V55x2/fExFMz+u7okVp\n7GNXIf9Hbu1UsVY5dCr0IvAicVlnlMwsA2QLkHqOqHc6zmN2mKPffy6pZKla\nihMZtEgeu7vnfJk6hTcAB+arJcnvqRw7iCWTDGvgYQedfXgltNd0irTJDWs5\nP8rs6SYtMR61doyaoKyn6r5geD3jPwm/R0j/wf/gfULWiLzzHQxH5xeNg/0u\nRJ1g1TcVCD/spRLb73rT1Mj+nlPyypygamkwc8qCqZpV+Aaxvy8jaeWNMvNK\nLkjjsuxURWwycIolz/N+tjr/y+Bac/1P2i39FXK5Dy28YRUcwybLgBG0/w/j\nlP8ll1aIO4opNOd0Gz9aWdocpU992l9kL+/eTbKCXEFTdpntwSAX4GQlX4s7\npBCkTLbro0Po0d4y/cJDmfupEN6OMru8HUAKk3fmBywJlCm22jVujVwApV0C\nYEKJ5KLacTV8oCpxwZe8u9OCzXNPFLipWR89EReWGMMVqmJB5yckw5vT09K5\nUKIL\r\n=QJbG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"727b3b53162f23fa6613da81a59dc2d7c5bf4a8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-727b3b53162f23fa6613da81a59dc2d7c5bf4a8c_1616807769336_0.9477976661296807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0-convert-to-typescript-386435b5e8cd1ad66c04129deb401d31a6706035":{"name":"@balena/jellyfish-sync","version":"6.0.0-convert-to-typescript-386435b5e8cd1ad66c04129deb401d31a6706035","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0-convert-to-typescript-386435b5e8cd1ad66c04129deb401d31a6706035","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b26d49d67b3c0f54b2bc314be0f210ade91eae30","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0-convert-to-typescript-386435b5e8cd1ad66c04129deb401d31a6706035.tgz","fileCount":24,"integrity":"sha512-IZR9eIT92RVoWkgQl+xvcBlSsNwMnsHGfsLsuzNZ7dBk2ty0azspDNxbcc2lZB506uMZLnT+7YM6q5b8oLO93g==","signatures":[{"sig":"MEQCICzqpX+4shaRzyMrgqIu8ZzLd+tINpuBZGY2b2MGGeBdAiAC4uiFME0WGZ9swGpiGaF727p0L8h6sQ2VbNXxtcFkRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":140036,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYYD5CRA9TVsSAnZWagAAyFYP/2YgzrT3lCllMzR3kFoJ\nM1xUoL3PF93aROF2SZK9nL0E3oRsS5uK4r6sqhW93ViW5xWi9i8mMNfTW4j/\njxqole5StKs0zyRcd0OIh2WyQF95NvuA/mClXUuPaorgNVCd4bdJs6lGcWdR\nlFUOh49AYjkCC5B0yd1xSCnvRhgdVsSvDzIRKvW0peMH4d3xhyl+jk0hBXOR\nU+GnKy9cDrbLp+7CVf5WmdGbQSlb6IwRYixClSq2JLavkTOjRpBz/TP0pYCG\nZwDrpEc1W/BCDtKB4Kb1waRK62N10zWHsupAZcPe2HBAc+kxNBTnp/B8x7Sn\nPQHeiqLy5Fw2aU+MlhUBhROmF44U7VO6W/Ri65Wg+bKNyZwny1h8kEFTJkhT\n/b33S4mwae0eV30YnaP7M8PDcHScq1BodFLa6Ij/b3EWfn1iJl/RQvWabDTT\nOobGVbJUXX9PmT2B0pbzahCkZye1UGxAmnPGKXNztDuAerKvbEW1hZkApl0y\noPUEu1WJ9bpiRUoSidK4JDmY7vWOUfLMl/yLjQiUv+MB5ZyZ7op5VUobjCMU\nADgn5ZWytVhkSH0j5JoF3lp+DVradDXDvLJNrGn1DB219eDY8MlXcY9+TKTF\nqMgwwnrDmP3FKkhpU5BzjXztHKsu0fS6nS2QOmm/40IoaI5TKL+UKs8wc3ci\ntCZv\r\n=bl5i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"386435b5e8cd1ad66c04129deb401d31a6706035","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"^2.1.12","@balena/jellyfish-metrics":"^1.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0-convert-to-typescript-386435b5e8cd1ad66c04129deb401d31a6706035_1617002745301_0.1623667988472708","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-95ec932d3095c58e43f435be86a541bfa069c62a":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-95ec932d3095c58e43f435be86a541bfa069c62a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-95ec932d3095c58e43f435be86a541bfa069c62a","maintainers":[{"name":"belodetek","email":"team@belodetek.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fda7d26c74fc078c950285d0806c22378d5b79c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-95ec932d3095c58e43f435be86a541bfa069c62a.tgz","fileCount":24,"integrity":"sha512-fUs3UPbk4h0WZ/50sdalSBuHsbeN6erR1IpxqZpNGPvu0bdeYjUpi3G0QC5rWUHBxN0GfhrFUEcmIL172yZv4g==","signatures":[{"sig":"MEUCICIsrHcqr9ZIzk/bLJlRKihbsLMlrKpOghdePWU7VqKyAiEA06z+kXV+495m2Odvqm1BCF59m/+29slfEa/bxXWolq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYYheCRA9TVsSAnZWagAAeukP/3xqHFEjCndQ7SR/nSxE\nWd6lL+BIEFzjCut0DX0nVFv6wtNE7efrPkGKVp9z5l3NJRg33sPfhkSmSZNj\nE6i91nIWVBn0d2xHfSBL5r7GglvQnJNGYl8kW1O2MccX92PVgfkan3P1r+Bx\n8F8gwpbCKy2QYfi7wN2MNI3vOaGYfyToed2LQ6KzzIVT06PEEatM1D6BhnsQ\ns5aHLb8MkPZYspAvSoHb5GLrrYMdqA05lPxiPuaV6G+nPjX41/dAWybJIFvH\njIY7Jny/Ff34ONjgfSV03vlEyVMQN6dhVxUDPU8k2QaoKrUP1hIcyDXqSjJ/\n6KtG1EhtVR4Py0BRS0eF6sKXnViaqchUw7JK9zHd2GvUeJwNeihNEd13erkS\nzFC8d28lauD8ipudJUewNaniqyvec8lw5JYn2EJ3ZYf33AJxRu8FHu3/fjjY\nauhMfXm6gSHAJnjSr5aJ917EljUCPLAA1M7YYO8+trMiD9x7oy3iSalJV/RF\nqlzbFrRPH1kCRIDdwvovUIROgWDCpg8DB7FBZyelULE64kXQmqH4HmD0fZtr\nojmm6UAerx/9sMq8ZuR4Ak8PMtPnEBHyBrTS88Jnj6XGuq9sSLKInXiAQTx7\nLHCfYfgM0IcxWHEOFiNzzYVroZTohfqjg37ElM4WZ6jq0fzPF7dYgUYBoPQU\nNyjf\r\n=hMfS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"95ec932d3095c58e43f435be86a541bfa069c62a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-95ec932d3095c58e43f435be86a541bfa069c62a_1617004638297_0.20745052673492448","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-1f571427f48dc1cabbdbebc211455a4b11268b9b":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-1f571427f48dc1cabbdbebc211455a4b11268b9b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-1f571427f48dc1cabbdbebc211455a4b11268b9b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c80ee32e27b6c93b5a58f7cfe0c3e7d65ec73fc8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-1f571427f48dc1cabbdbebc211455a4b11268b9b.tgz","fileCount":24,"integrity":"sha512-wvXqhijy9I2hU/xwzG01K1njxPoxRqVSx3OoYl3aeJt+vhHhWWltvjCiXqP7I48IgezLqCOzXfKcaY+fRPm4rA==","signatures":[{"sig":"MEQCIFKkrtDEu3VTpmANa9SMojYym0TtNTGX7Ler9f9fe326AiAdPgko8zrJw81T/MVDDnIUUOTuI0D+xbKqTOnvbbit2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYpGlCRA9TVsSAnZWagAASUoP/0pUTcBMyFtzzEatStxg\nwLP0ooB4CrAZmhfEvTXURnOoSh25Tukp68y1K98g2c681qHRH4kPVjnFSN3z\njcuvwAZEY39lMlVp+mY8Ihs5rXl7c3TNH8tsUsBNQTcskQwneMRAsTLsyYPE\nM4ZOfGP85IrubVR+upCOnonSKoSNBQv5eMAHC2GyGfkhe7dTr5jPx89xhAx6\n9YD+i0CxowW25Fy6pNAYmZ11CZ/nIdQT/U6h9TBO+JTX7Kx0x/a4cJk+BXaE\nqf0Pkgv98HpgCU88CqXrgg6CVVeb/gmtgzR1Dyj6WTn7f5IM5wdAz6aIB4N7\nW7nTqM9eaVVygWu7WjnoHWs+0gh/2ZtCtmhVJdQKJYVWKYZ29Ql0YAj12blX\n9cTkfibyKYG9v1PeJS+/mJaHfZ55h6kdDfgW5xiBrCAnZgWsGW/TamDw/1zP\ni1riXlKrIeJoULVAlQebIF9S9u1jj5zLiGHC0OrQMrMrfqbfs85PEO0KofB9\nHNuULZZFmpW8FiNtELw1g3/bXG8HF/WYuCZXIN6w9xxzBMezIKRAQejV5Dyh\nV827gxDw51gTmRz5rAUFBl7JbFzZm9Y5ICIJmwhmKUOZbNoKMuQp3Ah1c1kb\nczhyrJXy/RcLuIRYqS+tG0ZCvxfkEOk5MmrVKt6Oeigp9aEEH2rx07xV0Zpw\n0EJe\r\n=4fjI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1f571427f48dc1cabbdbebc211455a4b11268b9b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.15"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-1f571427f48dc1cabbdbebc211455a4b11268b9b_1617072548538_0.20052796421826402","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-4266004bd4223762b7e38649647d5a6a598a5721":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-4266004bd4223762b7e38649647d5a6a598a5721","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-4266004bd4223762b7e38649647d5a6a598a5721","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c954ad71b400f1a41535e11b7630cf1ad2c4d632","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-4266004bd4223762b7e38649647d5a6a598a5721.tgz","fileCount":24,"integrity":"sha512-HLABZofWaZi6VQeufddoOBtkDn3brxwJrKV/F6W+pMyCvl3nopqjDKWGmMDns8dZfHLt88Sh1/hzP8tVJOr+1g==","signatures":[{"sig":"MEYCIQCl52xVmrK73hN3VJk6VLVxbOqcFjuZP0fjgTO9Ok0zkAIhAJKAaLjQurJvGUftMGET9DGrZ6kGrrD0lR49XiUwfLjU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYvJ/CRA9TVsSAnZWagAAulQP/jobs6p+RKsn8YxnYZpd\n73lhi1CvZlUHot+PeoAK+GuszWrdOV/hMYGDGTGIS8Eqitz2dl1buembE8Kz\n5aEOMu5/A6XFW0NVgweWEYOvo9FX8336gzDiFAoM/zZuhi0jE4UQ6LseJ4Ht\nzOLy11aKs94JcdWvoXlU9893U3rNY7wfc+pTVZTbVQRzfC8404KeVx8gq7G+\n5op2TR4PQiz1LZ1kAZqr2Y4srPnBzJaMdnpEHJL5O3YTasxd0f+arV7KTdlm\nHeZWy1tocaoBzwO9baWuc2czeaNE3dmDSxTSuXWTN8tJtWYV81fJdAIfu7RP\n420LpZTwyFgPmC1YxLsXDdmAv4D7iLSsJ5gc/ui4X8vSGm/wiiY74qqYxx7T\n9afUOH1wtmuD94zCAtBnPq401fkfv05W7SpsCFdZ6frH0O/Let8oAQ9R8aYW\nbgHAeWRdz5Mtb8691kISAEBkSf05OfyT10424ZwrnB3Y2okm2cpqisxg7SBu\nkx9rRLcGGCFz3wzeTw3kysDcIjoGq8Nppd9cvEnPhmQDgtNUlnniCKnN2pE9\nfVOKfoUF6QmAW7iahl8nNRMlze3CD+ZlgWOrgD1Rhdp7MSjUcC0Ei6YYEQ+s\nV/yzR7GrMcL2qefQ7KVZE9SDwsuQP4DHy74p78BRYM59ML9/+pyAU7PlP1c7\nrL/e\r\n=Irxw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4266004bd4223762b7e38649647d5a6a598a5721","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-4266004bd4223762b7e38649647d5a6a598a5721_1617097343448_0.25403507407516646","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-logger-2-x-596a1a2eecd53193189ceeea333aa990776b567c":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-logger-2-x-596a1a2eecd53193189ceeea333aa990776b567c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-logger-2-x-596a1a2eecd53193189ceeea333aa990776b567c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd79c714d37248aeb218a1e1440f341615cc47c4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-logger-2-x-596a1a2eecd53193189ceeea333aa990776b567c.tgz","fileCount":24,"integrity":"sha512-ouqW0BfubpbIePYTPR8Z2Qv+Wx36GonTFmbCiiUACEMFZrD8tXJBnra9IjrELUQds4Td1Qp+OjYz7Fd3KVgfdg==","signatures":[{"sig":"MEUCIDgaSf5+JmM1cn66JJSj0w24DfR+3+JDazXi6UH5LV36AiEAutuPHIrwd8uw1PaCi1GDSwLSDzw6lrtmXk8jiMSDTdE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYwuVCRA9TVsSAnZWagAALL4P/iiIt7EAdVQbRCpKOyZ6\n2C20OGXHnFU3+lTiusCycu7GPhvpOW4ZEtPgXEop9QYE2A6pfrYLn3oGMdnS\nYPInPc0Ry+ca1jtaMmsMm74/75T2RgG90p1DOUscNFhS8+y44LZkeyqEUM2x\n/LBTETwB6eauRfxxbRzHSGI85aDXS1aMfY2IEiiIIPZ+RjRdMMds1uB/cQUX\n8dYD4lUOzqZI8V2ygv/tryePdBTa+pFlThegK0WkgzuPKTLdTA1vd1cNf1GH\nV2RGKtvUo0jD0u8UL/8nKt6zr0CtyUJRqASMN+ktCNsNNuBnF5OnFLVtjtrW\nLsVClok0vHS7T98JtCnsw7r3QBXF2nLl1uzWci2a9sseTirfj02eJWmqsBfx\nkYf/klw1n8lmvrYJ3zYC0WnBJj0aIao4fkCe624fPPZsyUyFFeM6XllDoeZc\nbQ+KR/TzGynO85wBymD/JxfaBvUi2VV3Vz3WGojI0RSDUOx6EOuTnykkoZAY\nPWS7Yr2YD9oJAfIlPV4hh8xsjMZ7+1bfYw3QXqHC86GJZzM7CrnXciFdaTie\nnelsTU/PGzkruW9OKUU8WFfa0e1r29r41ad+yUJkPohqvD1BZim3sXKxnZ9J\nZ194g4CdY/MOi+fnBu+1SjvvnynOOhL8/ZhufRJ2S9b5czzUe1t5HfYppNBi\ntBeA\r\n=bLj0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"596a1a2eecd53193189ceeea333aa990776b567c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.13","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-logger-2-x-596a1a2eecd53193189ceeea333aa990776b567c_1617103765060_0.4595782351360991","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-60ff7bdb332ca04ca7e4a484cce8e1b555593fa4":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-60ff7bdb332ca04ca7e4a484cce8e1b555593fa4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-60ff7bdb332ca04ca7e4a484cce8e1b555593fa4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ecec08bee8b965abf9ab7402eeaf02d05feba898","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-60ff7bdb332ca04ca7e4a484cce8e1b555593fa4.tgz","fileCount":24,"integrity":"sha512-DAkhCwP1SHn61y4l5LEYxcSa93RJw1rLAwroIa784OgLHHorckGV4gaBCIoI1Ol3twmH99staGYlQaOel77vUg==","signatures":[{"sig":"MEYCIQCoMxTwihaUJCVC5FLnpWfNtlY5rDvO5xiuxbSDCPlqsgIhAP86r5vhOgUwukntdFlx66Lgj/UK9ElOfh93Xkjq6Huf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYyeRCRA9TVsSAnZWagAA3JQP/ioX3FChl+Xr+lf7o4Vq\ndr979NajyVjoFKbWd7rd5BG9NjzMOH5n2xxLnznPTrT1SYYf373rVp/RkcHm\nEWuox3KZhEzUYhiuGxKVy4e8Wp4YNUFlSC7xQhlVnkWQ0BWTSO4NPSTeN5R+\n0d3jEvYyv+dXXeVm9p8gqCLh1sMis+PVR/8eMXvUSi+Y/VVpX6d2JHtl4jy7\n5D/euomLeA1IA4DymGpDVMBiWZRdEOWBPwTLKW4bnDBtkqwQCU9kmS3UpHzh\ntLQITkzlv7v84TJh0w+PXvIFZhgr2xnn60fxK0t3VkfyW1LequQEHh9NN7iX\n85+v1NoroFQUmGYiVp6gLX7pMhRrRrmAOoB+rMoMndiZQNMKAsVr7ic5FRao\nD2VcDzhMvheyqAdGK+XJWC4Sow13UgkIUt2R9sEQMKrAyT1u4LW+CT1yLRwA\nQWmKQik6+zo0CHbRyQJWvB0fUb0Wew9GZR+tm1+j9PzoZb7kNHC1IpY2XWqc\nBLICMFOUqHpLNYpP5nCaaOXHNxpVF+6Wc3+9ezLhjddeKz4qDZ8NS2dT3KX3\n8/sk2yoCkKa7jNEtEPlbxp46Gc5amKd18agr9NdqqtU6WUbvj1/FJcsBgs/r\nUDQLqKrwlNFrA2HSGN9JUYKXxIxyYqajk0xFDb7fWvhSWR4m6BDTE1+RpIDS\nEaBw\r\n=svvB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"60ff7bdb332ca04ca7e4a484cce8e1b555593fa4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.18"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-60ff7bdb332ca04ca7e4a484cce8e1b555593fa4_1617110928806_0.9925785189144471","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-logger-2-x-549f095053de69d85dd1837e27962a22fc550301":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-logger-2-x-549f095053de69d85dd1837e27962a22fc550301","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-logger-2-x-549f095053de69d85dd1837e27962a22fc550301","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5223f148b15e1df91f02ecfd044eb3ab8306834b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-logger-2-x-549f095053de69d85dd1837e27962a22fc550301.tgz","fileCount":24,"integrity":"sha512-JyLTiCIaaKE1LV8Di2HoSf09AU9ogMgOtUdwD/IzLk5UiPkYh/+T7CGAi9i7IazS+dtav6jvc6Rvyy2K4bF3gQ==","signatures":[{"sig":"MEQCIEofSFx1UpQaCHLPib0CgJNZdvRjK3kAR3FJ01SIQ3NiAiATTv2U3bCE/HtCJzyyG040IFJ/9yZCVpYSAcrvXpVlEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYyidCRA9TVsSAnZWagAAyTsP/i2VypOHk/GIOQaa8j+G\nFVcWKi3RaKo83+cMtFgOLRgN2GU/FpuzKtOFTSYpRTwbnTEOk3Ak98YBbYXu\n+XbbLMKt7cl/pvW2BvfJU038uAlM6Vo7/90U8tDHrZpGaifaPsmdv62XSLLC\nNSHpvi/gyh6m2BQmCwx2bkZmntJyaKB+B0clYrH1H3FL1VKXzTGh1VFDPtuL\n03z3gPxYsPLiRCi1CJtLH2v8xWnSYd0zMeh3hEFRIbLsKN9hyPCqv6pgh2GC\no73vAV3Yd/dKmWfHZ7uFY6Op9CIy1usKHxpyHUhoxqcIeSwdvufzSghlAHXX\nf+hsvAnfehrFCkpkvDPj3mIfGF0UyhoZvAimKeOvGrLHfKso9dtRZVpaUTk4\nyNARN8Ohc8JiFIhmptkE7tpgGM42O2sQK4g9vuqssdXbnIv/9uhiVSNeReXV\nYFRO75VVDg3o2xLLocDes3gHMcDI2XBuAhX7Q94YqB+890A9YLrC906Wf3fa\nuRrVQ0X2wVi358NppR0asScaovHJ4yiNTe8bI9Nm6WHlFYaw9JAeBUUModHi\nNkglk+ogtmd28t7aJYCISvdUvyMspZ2y7VRVC2zmJpkdGTqBj5AE5ILsUEfe\n7Doa9Nv19DLK3MQ41V5R9ObFpgYrK4mxEKTwIEewt447mA9Ik4RiRQtraA3m\ndjb9\r\n=O2UE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"549f095053de69d85dd1837e27962a22fc550301","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.14","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-logger-2-x-549f095053de69d85dd1837e27962a22fc550301_1617111196539_0.5240125013077208","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-739592a5df81a186f53dc84d518798559758e85e":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-739592a5df81a186f53dc84d518798559758e85e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-739592a5df81a186f53dc84d518798559758e85e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1c9ace15c0b0c35b57931e6c505f038369d77a3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-739592a5df81a186f53dc84d518798559758e85e.tgz","fileCount":24,"integrity":"sha512-ABhCbL5r24ZWoBosT+hfO7ZlQCorBua6JtVVr5zPIaPzTtEBrcSnalkcuW0dpvDbgpr7KDWTm5kfkW1jcBXaxg==","signatures":[{"sig":"MEQCIFDAZQRFgLY0XZUPM2Ov82tVeV9bWECKZ9uW7RSUyJr6AiAMHSwKBBpj0SV3iavZ2onG8vUpgj7d/jI29kmfp/lpPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgYz4aCRA9TVsSAnZWagAAgrwP/iJhiyEYJgH3VZBnltkt\nGcefgqU+TZ1pseZLfC5J83FGm9dVA0Ih82H7V0HGeyKufhwmUxRccyD0mfqu\nxpAbHRhWmO389xsyuVQP0lrWf6ofUVbWNjTc9TpNdiKEJweSo6qnj/e2OrfP\n3KCn4kJzjfUUpw1SSHL0so/3OyElfg66X8dHaujec7kbFw+hEj/AJJPzUAhY\n1Ju/jO+9s/4aJumo2tVBM1DU/jLGdCHbKkkTzpDZ/s+mD74HklrK5THUSZoF\nbMBUwBBbDDIypQqps73Y57pqix3emxSMqrZDw/nbb5E2jWTi1hBN0heD5iRn\nT7RDGisSWZ7KhHxYTttleUBglcQqpWOqeRxaGhwSbOUmWN/AYgWRUyIOStd4\noU4Wx1Twgnv6fl28S3uUf1ybJbaYHLWsfSAzNC6xNMdEvFZt4y0VAN9ZBxZW\nQjZJysULILt/RaIIOm0b8F8/WT8zb7STUl70JixxKtpvRz7bQOrApt3D4awO\n7DnAXbs2TlTWJvttsSxhKyiEJ5bjzk4iNJWoP96HriMbjEziAXc9lW9nThNL\nb3LLcYGGLLY2q94P7oL82nnmOPqjj2Fbp2kkk8x/ta/Anack7q0RfnA0M6Q0\n+63/o6aDPlV8p6MRmda2r0SQSuLYWmS1Q/GR9H9Z/5bYSgiitdE0Y4aO4SM5\n4Y32\r\n=0v1T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"739592a5df81a186f53dc84d518798559758e85e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-739592a5df81a186f53dc84d518798559758e85e_1617116698295_0.15239464504075473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-non-major-1e9faa766026c0f038f8ed519610ef4b294db5b6":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-non-major-1e9faa766026c0f038f8ed519610ef4b294db5b6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-non-major-1e9faa766026c0f038f8ed519610ef4b294db5b6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dfecd16497897f390c859d4c32eaa98f22c4ebf8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-non-major-1e9faa766026c0f038f8ed519610ef4b294db5b6.tgz","fileCount":24,"integrity":"sha512-PrtnWilsiNQ/5asDGe41LaTUSweJWbPkAdiqRbe9DHvM67zopuSrg1Dg1dAu6lFx6Hk+D2/S2hwon3M0lvbsTg==","signatures":[{"sig":"MEYCIQDoJEj5xxRIxKqBKMlwhK7TvI4ySJqhI54JXYCC7yFxegIhANzCkvT+YygdW8XuWt7o/VYAjeWZBODYixQD204xOE/G","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY80TCRA9TVsSAnZWagAAm5UP/2mFGRXdHjGZNPKThoz3\nlJkK0i3PYaLgWdoqIeOV3oA9YnHwH6Sfug+ni2rujZUD3JDcujHC+UPqoMSR\ngtdW67slpPY6elN3V3DKTJKBqM44DM8aavKceE0zctnGAKtKyLnk2PsHBLAq\nZohPX7TN8PvWiAssu6aY6hk29gPAUQH9gxM4TaPzffhJT5U9te5V4jwNWwPW\nzhnViTFariQNqtNDD+qy+grHYEuzM2qHzMkIooPAvYTy0vXP2JXf6FfWyBab\n9+swTPrHbC3Ri4uZ3hafX2RFmQcTfOF1xi4Mjk2tffXMc9/UhO5915nV/1t9\nhpMxSXwjsCytcTNv+JgfbOdK2VrqOAXvvIlOOkQhTDUEpUnJ7jLlNX7FEPQu\nQ5vUgNxx6jrR7L2k+Er0UzTIcrL9Hu+uSLzPXW1JpHqvkhPwGAS6YfrciFtb\nvZgzDJMdNONKFxG9RSvQWPju/NpWCdp3qzNbhUCn33UhblbPC3msieDB11P+\nZ21IO25EsgNJWWCxaEltKymQ5GVXzyTyj+Gu0HZFXfmw9MyXhEPI0StQomqY\nyo6DaPup40f9HfJ0UR0y1YIbsfU1QAhJz3e6GK9G/ZCDCMdmIMQB5PbwSa74\nnw1jkWuMicrjWKgmVVOS/f/qhtn02ATBo2Rj3gX8mIwo298hRp1PomKEE2dV\npejk\r\n=1pLk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1e9faa766026c0f038f8ed519610ef4b294db5b6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-non-major-1e9faa766026c0f038f8ed519610ef4b294db5b6_1617153298560_0.4511768486982861","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-logger-2-x-e26453b275bfdd12ec835382eb1581e26344cdc9":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-logger-2-x-e26453b275bfdd12ec835382eb1581e26344cdc9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-logger-2-x-e26453b275bfdd12ec835382eb1581e26344cdc9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eb78da239397f35ca547adcea4d8aa983c2d1ed1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-logger-2-x-e26453b275bfdd12ec835382eb1581e26344cdc9.tgz","fileCount":24,"integrity":"sha512-TeugNrnem9kIvXKQXWl/GYFTrheYY/ZGSdXbmM41ved/ByElYCxewn2wwZ7oeByaS7Glxfzt6Z7xc/c8sXIAdQ==","signatures":[{"sig":"MEUCIGLg+DrySlHPW8XOOFGjajxmqH5qljSwWlcEZPPXoROqAiEAjTGoYyO2tMIJ2G6rmfELg77ypkXjhLfGXfU2HFQtg84=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY803CRA9TVsSAnZWagAAZcwP/R2+iU4OXRkEg9dokFTW\nFMxplnkuFnnjyzZVw536E0Zo/7zohU1ee54+CWD7znSs3ry9yEWZIvrCB65u\nZBdjaMNfRXoVxi4ae3GiL8RKNsCmtGp3KNuGM4GlFvLHRU6iwq2wvyevdinr\no+3exN3PM5UQ2V9MvhvrIirq4X8gVpw7+cMZWItzehHottknfnU9h06zNo84\nCew44VZiP452awdtgLSHPnkHOvGYYI6g7UfqBGF3hgWLJ+m19DW/IBg5yKkd\nbSkbytPcyKGUybSzVf7jLRgi+aXOLEFDcVGm2APKFZPsc988DxreaBgegyKG\nyrpuIAKlZMDG9qyLT/+2WtTBPXgZvlDRvQf9X2eSaE6/r3g/eRjRiDkh4QGE\njybfct3a3ygzBS8Jiiqk874/yl2aKPXxNbbOKi015khu3Ot5s1G7i41sIhfb\npNfgN/55DBtG5uJzBtCNyMcn9I9BnDfmHXEVMfNnu8zir/2+KVuickMbe6uz\nsTpRKmWicKq50BAMXJf9G9QAcsE8bTbDNbAqjCxrtPJJEesVukCtRk47vM2k\nyVK0KjkJK42eVFTKZjOwZY/4NrtgR4jzWAKGIdU9P21TctH9bnjrF597JP3b\njeAyOQ4G7iqNm7o/TqMfIjaHVZeIyZEmQ8AunCWZA6yGHEy2Hoo5VeA3mOCZ\n4OKw\r\n=UofM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e26453b275bfdd12ec835382eb1581e26344cdc9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"2.1.15","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-logger-2-x-e26453b275bfdd12ec835382eb1581e26344cdc9_1617153335300_0.9011935704041076","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-balena-jellyfish-metrics-1-x-6bbd8a592eac424d17e7a6bd10060276bbc2726e":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-balena-jellyfish-metrics-1-x-6bbd8a592eac424d17e7a6bd10060276bbc2726e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-balena-jellyfish-metrics-1-x-6bbd8a592eac424d17e7a6bd10060276bbc2726e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc8e3e2e47d2e497a8ce54c204216947f39c2867","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-balena-jellyfish-metrics-1-x-6bbd8a592eac424d17e7a6bd10060276bbc2726e.tgz","fileCount":24,"integrity":"sha512-ghLqdxdcNAe4tKI5wxEBHqu9vIHGIIGe/oMA83OnVA14XkaaS8r18k5ku12LhtjwwN2MTWYxABdl2J6YDt+PUg==","signatures":[{"sig":"MEQCIEZPpBBSgDbCvxgfjSo9J/1/BpdpzbouQg0Ct1/4vP0wAiBzziFMCtts+YqgxmWGJw8G13mab6dRWKl2YAnMgOHjdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY82lCRA9TVsSAnZWagAA0wEP/js3vRYVa+kaw1o+P6xF\n8cJ/fK7jeUVFaXu4+ZCB22mgdvq4OnFwKBgVVlyBReqxW90K8kourbV1F1HJ\nfd8X+vwvGO5H+uu9hQfw+gPJwARF5cQlLheyhlV6A1crA7r7cEbOtT5OnmHA\n8M3Ak311+JPikNqhtJ1hlpY8Q8dNt8o87J9i/A9b2dtexJ97hOq7vTJuJfyY\nDw13tPHfO4VFmHh+xg9Y2H4HVj4X9wpVOdJaqzUSg6YRQg2LDW8qIKDF3ZMs\nxp8qIKsSclT1Qc8zTIPF1mKd9rBrhq7ql6/eqt54AxEyRAcChWJr8FLR5xF6\nXHLQOfSrinClZE/CDFzyMw69vpvOFoxVP+XoR5+MXcAUGY6QYdwnrCgfpm1W\nNQhuVaeidvIRp5WLH9uMfFn6nidVNk+ljkhkoWeScJE+sNmt0mJFKR6tw+9Q\nRXaJSkOURTCPGcBTeagl/mNDD4vy4qqENgD39pzLqlobZEUDZ7uSPzFbz8R8\nUKWLenDPCB39Hd1M5kptyyekTaLaV0WxHgbckSXEcsXhgQlD5h2ID/hQqPdM\nqpGzAB6i9K01HlQpqgrhYsKp01ToqZl54OQlsiYKGbfgkQCTHKsWWs0hqd9P\ntZgsAgdRiM/QzLiVVzq8pkrQbvbAX7IL8ZzDvDW0wJAZAXuIOXXpWxCpZoVl\nxyno\r\n=yvSy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6bbd8a592eac424d17e7a6bd10060276bbc2726e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.1","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-balena-jellyfish-metrics-1-x-6bbd8a592eac424d17e7a6bd10060276bbc2726e_1617153444794_0.870994484496239","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30":{"name":"@balena/jellyfish-sync","version":"5.2.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1fa3ed100ef528faba3647cbd7875424e5936aa1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30.tgz","fileCount":24,"integrity":"sha512-hjK6apHWQkfXW68dgG3mW7sMOm46ilpUqLP5iLitL7oiq6hlb5S2A0xbvwvfTiPrIlTPdXtlePffr4aUNKSo3g==","signatures":[{"sig":"MEUCIQCMVwIn5zwmcCVsOqjelC/2w0af0kGHw40dZwG49ZyM8gIgUEQ5YtsjSD5RY6//Ey9QbQZFebneqXDdQfKuJLJ73d4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162829,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY85ECRA9TVsSAnZWagAA0xsP/Rj7dxCSD5GalXh11cQP\nkhzZzN/g39nhK7YaBUqQyBv1wVRTPhqglCmv5L5FzXtvRNGQSMdYQZNg+5Pl\nsWh/UJi5AUZvWKpKYjtDHT34XjJLs9X2vu2GaPVVG/Ky1BW/sPUz3T5LmIJ7\nYOdf2blfOjzX+I/s+xA2upehj0eSodLGm5XNEaZJ9NWY6HcAVTteZT52rhOp\ncLKetcvXYvsqBYxZ/QmD3K/0AW5V7d6azBF6MdPXX1/DGXSRfGLl09dUpqmT\no+T3eTkhppg7lre2j1cq8ljgkyjQiPw2Ii695mhysRTkAx0RpRRVVZKnhR+O\ne7ikUoenaHQecDUYaeD7bfjHcfx4huWiZ8hulyawqDZvybSuhR1M53WVDCVC\nEP1iVWsJWUFoLlnwxdylNIonHFv6Cc4//GN+8d9NwBROfrVZu0Ib2LIbKh9o\ncpsJiKwlFuz0FB6YP37KX7zeXKWEdSxflT2CPBL2vRvw2T8aosVTsAQdvMb8\nibwuQxunnA5bcHI8osfMIftRjabT4W1q3ax0vPpKAsjATcCombWXq8EvYO8u\nXIX8fn/9N3olPqqiYdNJ+JYUV6r7J8Qafms4i4efBB64Vc4WUaMygbJ7pbTY\neNU3bhPO7PpAMd0iRVQMHSPcYawB8g00+A+hhXoHAJy+E30cYhYbR6+Jh/cf\nUCIZ\r\n=0DvE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b4e7816d0bd64a62b061cabdc2aa8998ced5759b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30_1617153604047_0.4760519660568645","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.31-renovate-balena-jellyfish-logger-2-x-db22741453e18ba7b5273bd9f24c3553f78de2b9":{"name":"@balena/jellyfish-sync","version":"5.2.31-renovate-balena-jellyfish-logger-2-x-db22741453e18ba7b5273bd9f24c3553f78de2b9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.31-renovate-balena-jellyfish-logger-2-x-db22741453e18ba7b5273bd9f24c3553f78de2b9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b77b03cf85d31b4a3fb93db9039ba2b8194c5a46","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.31-renovate-balena-jellyfish-logger-2-x-db22741453e18ba7b5273bd9f24c3553f78de2b9.tgz","fileCount":24,"integrity":"sha512-YQpBWlmXN/UUZI5y1D+waC14EnLrF0VeJMhBPEMV3MDPozGOcmmGaDlanG7/RohejfB8d81hiRAGVzFNePPXoQ==","signatures":[{"sig":"MEYCIQDnh+rfC2MSbVXaEeKhWCc0uu3oLDDo8ywSNQPNMdhTuAIhAOvKAkwcyn30M3JZNJKKl1QF9niemi/dcqsaObQbrndW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY87nCRA9TVsSAnZWagAAMVMP/3v2buArAQh0ITgLyxcK\nsUXg030/zL2nXKgh43ObLzVQY+HEUy9ydzYKpzN+qqBWq/8fYwOkczYhwKDj\nBd2ihyMmDq7IE7C7c4Ftb18NNGiyKq206DcQpoWJPG3j8WbO9TYnd9DHpDNp\nP1lRmSGsncRbzjMKA0Ozu4TmV0VAd4BqRs3MHfbt/XTvFKbL9LBln54Sxfta\njE7vtLRBzHKiE0EvggANpR8DxJcpcBP84Nu7WTtRzMQg4avKjJPKogmV3+mU\nEXdN1cOph5qRYUamfVnNs7N44gb4JDoWalbxizPIynllaC+w02qvTLdAMC+a\n0upjGNdTJZxZIJSaMUxwfzJLVU3TDfK0gnWzcSw7hF6EjT8gPzSX/xjaMvGr\n/kktTNdJLpY0A8pSz/nF9WlEV7wRyPdlFzHSxjM/P1i98lgICAnNUqqsHc5K\nJLkzb60lBTc1t1kNlDsU3x9RjRbz3Cvifj56Yiv/RQprdZXhqi/xLpan4d1M\na2n/ZLM/RVVJ6qvp9CraByr1AGmD0wbUqrL2AvkUSCnn8NJ57NKQGyuH+1XA\ngd6MrPw9HJ17fK+UecgJxxTjGsnIphgs4WHnmg1flx75sFkTXiC6gkJ9r7Bz\nVt/HlpCkz3n9flLZKDr5Awuurt/5B6bkkeSFYGWb2sBH4yt/zG/H5xlKJAub\nAiKK\r\n=5T0Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"db22741453e18ba7b5273bd9f24c3553f78de2b9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"2.1.15","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.31-renovate-balena-jellyfish-logger-2-x-db22741453e18ba7b5273bd9f24c3553f78de2b9_1617153766543_0.5525904158409891","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.30-renovate-sinon-10-x-57de55fb8fbd8454e260a20af144f58f7206211a":{"name":"@balena/jellyfish-sync","version":"5.2.30-renovate-sinon-10-x-57de55fb8fbd8454e260a20af144f58f7206211a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.30-renovate-sinon-10-x-57de55fb8fbd8454e260a20af144f58f7206211a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"11ed9854db675d226f10ad387dda9681eeccc864","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.30-renovate-sinon-10-x-57de55fb8fbd8454e260a20af144f58f7206211a.tgz","fileCount":24,"integrity":"sha512-vWYD9eWpoRAZAFZRNmte3Fof/tUqQQIrI0SnvPqAKpv+vTj3rHruXfwm3E5MbqOqDuo5aSf5OCM5Joz5h6IlCQ==","signatures":[{"sig":"MEYCIQD4O131/VAwcEB/FbyCR175rM4dpBXLg082oplrB+aumQIhAPrXvg4qyzWt8N+hDiz2dgUQvW4DuPLofldKINYJAD1X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY88wCRA9TVsSAnZWagAADdEP/iH+mCu82MdnJKzQOW/3\nn8YB3LJrtWPePZFzM/S3mnYOYHm1VjpMpjO4kesTQdu02x4LEfOsxJR183eh\nfn9Hum8Rjl2J4ify0i40pK5PvcIW46Q36mah2fuM5OM43GG01olKKDtykq7h\nxN1QtJr/WQNA2w5G33yY7RLU7YO6bRdf87n7tldFOkaRf7H1XkdY+JeP2gB7\nl6f1s6rCtkMw/k2VETobFmpT5QRZC58W9tM8uZYjci9UbPxHLFuU5/gSXtAH\nmvSIw6nSng9kWnurU1WJ1B+pDcEVo/hNokF2w8lrcosMCC6Amr3mAopu9AUA\nnWQGJHmulcnBUC9Cm0m0BW4ttV+igy2QrvAw86TBH7gxjAYA4lFHTRaAEPIP\nmY4e+I5TkBeMv2ZRzVy0fs0HkgVHM2L8njQqR78qbihJHlnLydDD2wztKonk\n+yaYxr24IzGN5GAE8RYfUONhq6iMLmuEzeqtoX+xJZXv3LpyiSNq7CWubX0J\nsHiRPpDgu5UY+KKj+RBBiKRA5wHCR7cAnq/JlwbzahJ19KdboBU8kOVWR5hV\nz5D1pIOXBedEBIUUvJ0Ndb8k1Xa2D397JqYQmh+HZteGe/wELe8cRbMVkoci\nuq/vRLDY4AIgKFwhbtRhTE8129+lJW49UI4NZO19y6CrfA8Fxy+zjsazpF4B\nz+8p\r\n=+/Ic\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"57de55fb8fbd8454e260a20af144f58f7206211a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.30-renovate-sinon-10-x-57de55fb8fbd8454e260a20af144f58f7206211a_1617153839863_0.6128927701554685","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.31-renovate-sinon-10-x-658a0f25566cf3c3d53e1d22dd00d1c39e31ef31":{"name":"@balena/jellyfish-sync","version":"5.2.31-renovate-sinon-10-x-658a0f25566cf3c3d53e1d22dd00d1c39e31ef31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.31-renovate-sinon-10-x-658a0f25566cf3c3d53e1d22dd00d1c39e31ef31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e40b773c46614be3c19db98098f40d7f82165a7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.31-renovate-sinon-10-x-658a0f25566cf3c3d53e1d22dd00d1c39e31ef31.tgz","fileCount":24,"integrity":"sha512-Ib7Ced6+HIM2HPJL/TgDqj7XrLw9V9HILGh/Ztqz4/aVW42D5zMKjW8yYCPZF/q41qrAGU4fg3v0yt5S0BHWmA==","signatures":[{"sig":"MEYCIQCScX7NZp7I2YywHaeLdfuyNSTRAJko0w3lLgYjnGJ6FgIhAMGy2O/VlU539W/X2MCFZdDaP+zRWHhCw2lyVVh41rz0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY8/WCRA9TVsSAnZWagAA8kIP/iWMN2fzL8+XTQxGrNl+\nZkyLWPpX7zNEr4pZac/axsUQtd+x75hmtEIcm1eytPTW97KdPYDstu5yhOgw\n4uHS+Ad4oifyM4w7E+HoXUPi6uFF3oW7jlgF6wVl76OqgaWiIdBDAgCEgj1m\n7HuHXveFOKKjKajkBY7RvXrANHx6TFPpzgWka6Gmitifaj2+wemjzLSy4PZ8\nmRGmH07s74sH0YzUTfhz1AtgLeJl634J0I7nvgz/BtZG9fFnK+oIGak4c7Px\nNfSW4j3zTInV7X1CGQNYXSq1tzqxopY1+6Ykdl8Ev6/a3aj82v+GHzYcf3k1\nyV7eiYAYYao9Xlu5xBTuc6+Faiy8nayfQiG7i++mDVoPIJvfOXi2oqMBBDkn\noTspR62rgRYPsSEJy88SzumXSt0yYJtvi9DcEWqqLuPrT5Zl5suH0jdFwpJf\nB+kZ5VYLhHEDkHKS5WB/whaXMvVaofnu6z9mQ3TnUPcD5C+B/vWJvLdF0cZP\nk0SHYoQz4PsCj5ADBQvP4RxJ0VfDSwusr2EG+Tnd3gwgbJisbPLsjLwpf6ph\nfqguFXmof1U6L9CZ627DYObZLQeksrI4wijAkLqS6NZFY3Obzf4wiv6qoe8j\nCtyrVmykoAltmobKKC3DbTchP+PLvdTUG9ZlNRs0bvZUdlmhmd4wkrd3WGWf\nVOd5\r\n=Ru2f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"658a0f25566cf3c3d53e1d22dd00d1c39e31ef31","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^0.1.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.31-renovate-sinon-10-x-658a0f25566cf3c3d53e1d22dd00d1c39e31ef31_1617154005561_0.06385266104812137","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.31-renovate-balena-jellyfish-metrics-1-x-624a0ae41a7860e00f85d7bb37753766a7a2cb8d":{"name":"@balena/jellyfish-sync","version":"5.2.31-renovate-balena-jellyfish-metrics-1-x-624a0ae41a7860e00f85d7bb37753766a7a2cb8d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.31-renovate-balena-jellyfish-metrics-1-x-624a0ae41a7860e00f85d7bb37753766a7a2cb8d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"da7426e5b91d890b9dc74cadd76798667f147d6c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.31-renovate-balena-jellyfish-metrics-1-x-624a0ae41a7860e00f85d7bb37753766a7a2cb8d.tgz","fileCount":24,"integrity":"sha512-MHq65ONMCX31cDuAEcpNi1+7iqYIVyye/DSR7iREmRt2cDlK0KAC7uNnzDbVbxXK4fSu+aR13C21VEu+94zyBg==","signatures":[{"sig":"MEYCIQCBZDLr3p846yalayet3cPvF9UNExWr3hTjgJAv+qT9HgIhAK/lvWWC46wtw+fyg5Ax4bDlIIYQZhmjK362xHApY39k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZBpZCRA9TVsSAnZWagAAaoUP/0w5gvL4hc1wgXFSDqi7\nqCMQXkiw5Jeby/JYiaghy5AYEsx1PE3pY1T1df5hSpvwJpgMfKp4+7+OrhKa\nxjVPQ35BHfH85+5FTTzVZMcEXClMIvSsyw3X5zojhihl/jL/AeFRzJ9x0qlF\n+TCsZ3TVTbOgn5TKoXDbfpgWMmRuETKTVMlFcrcn4r9qwiWfnHC09y7/8HbP\nU13nDXppyZGx3bxzk5xnWo+Afc3ClpbyNY+ihgOZiHgHOiCI+4SsVqNCT3Z0\naN964aybCo5EobvGY7ABe5Ao9llSfTsdYKyTXI/bXv8udeXP30APFvcmDd4X\nIV+H/viHO/5sObZ1axe17wpXytl9nQVToy5u6Fo82ol0uDM/avQUA/TguypF\n2xjHLoT3YcvwP2UV4UB5yDooBkJUGWI1uSHBF4juyCN2D4xheOIaVH56Ndgd\nG+g2+PZBTIC/5WmRScQLGKLiczeyOXmpUJ/7CfAxxTZKd098NYlPuV0kqlhN\nEVBhh5jsYmAzzZiDnk9P6IF2cKq0jwLrtFFr/T+AlgpoH+EiZZ2UOs7YdbNU\nu9p8ucllAozo42P/QuEJSK1DJjfdEjIDQZ1xe2sMwSC6FdDCdiBFmmJipB0g\ntFKvRFsosdv428mB+SNVZmiYsRNRB05KGsL3za/eQ47IYSKQ7Sm5y2XhlW+j\ncDms\r\n=IMYg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"624a0ae41a7860e00f85d7bb37753766a7a2cb8d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.31-renovate-balena-jellyfish-metrics-1-x-624a0ae41a7860e00f85d7bb37753766a7a2cb8d_1617173080433_0.8564265716155686","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.31":{"name":"@balena/jellyfish-sync","version":"5.2.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c1c9497ca314813d92b8b5189bdf781d6d046c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.31.tgz","fileCount":24,"integrity":"sha512-PaqzbVup/XoxXh7ZUDRejS06asXtesTW4lvNoYeNVSLG/+7wK7phi8gAy+a1t2TklzQVDzPrL+I1bZKJSjce1g==","signatures":[{"sig":"MEYCIQD2n34V2kW45FMo4U/3cK6v6rTK/1m8lfK6esz9lIGUqAIhAOd/hWtpR9BZ+S30ORHULcMSNl/mpqIrAGnp3m8U44Fp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZBzkCRA9TVsSAnZWagAA/qsP/RZdpBxqwVi0TbQvnfN4\nD9cUqQ1+YJb5Sz42nqiOjUsURTju+FbhzYA+ROLsUsxPWXMG1OBiEDjNw+oF\nYVKibbC4O0WZ3RcLccPVa3nG5JCqE1IsBVcTJBHxQs3G5bnNCBOAZ4thOQ3R\nxJtAX6jlKk4OvXjQug/+g276ila0wvpzZSwaKJqERTMJBLGUcMwJElFdGpiL\nzOOycF84jZ4o4rCt6rlfd35pcWFBBq99xV6cGTsgWmPgSM39w+GyD5GZyAAV\npSdn6NjuRzIzIdK/gzf2HC1whDR+HqpA5JewvQxOH01jHEtnMTUhpcunXig7\n/IOVPk8N1FgSeU4q32OcGIfvRnoQACp44rmtn6PoCQa0p8TJtsjFpdAfYOku\n8k1uQOseu+zVg0EnCJz/Ogv7GD19+lvcb0EuWqQ3l0LjGsG53lrz+TtOjbKc\npPMP/Ovuz2Qjl37P2CV7heMophSNfOfNITmZXf9IV53UnEqeZtCkOeZeli2i\na1GChhnvMcVWU6hD54iOMWXf82vrW+UdpH4Zp1NLbqws/hP1rM6a1aDJPS/j\nkqIme5w4fxksl2gz2A8ar5fLR5d2tj9+3r9AxPkv6dCBP8k4r/gkcSMo+LUo\nrZ95EV+1zlsGtQ7OX0rgvuRRR11IdLz/NAyGVIUN0h5aTt9M28SHE+oLsQ1V\nVnnr\r\n=CXrC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9ace0a0d0dd260b0ffb7d81c2ccc803fcff2815c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.31_1617173732051_0.13537629063051004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.32-renovate-non-major-b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf":{"name":"@balena/jellyfish-sync","version":"5.2.32-renovate-non-major-b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.32-renovate-non-major-b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f9860eb5963e5a29eb6543aada9852bb69a1016","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.32-renovate-non-major-b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf.tgz","fileCount":24,"integrity":"sha512-COZV5Smi+vS7ghYzquPiKEvJ5OI0DrlvXgtd+q5qRVUWPuxpEDxO0EIAPxlc1IObxtF+hpAwoMrnsnGZ35C4/A==","signatures":[{"sig":"MEUCIQDvdAEWMFwTWlt/j/Wy0xKgQY7eNuxyUcQyJRjwi6f5ZgIgbowTBtc/Mcxk69/XspCp6BMByAvOB4MG0jeVcu6iSHI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163724,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZB3dCRA9TVsSAnZWagAATS0P/3JkikGtWhvKpKR+jvQG\nRwdpSt8BHcA03EVYegv8KGBmT9mx0WO5NO3Okt43RvT2La7AzXsK5LYgXRhA\nOlyuZGd6fuE5sYZ0RfvukJKwIWSyYMS7i4Hq03EjB1rKK7plQsmTB1lpBAsl\n6zcyVYvmmGQsP+dC24feEQAFUzMmciIwCmgf5obuK+RoUhumNC0+2hGBMXRB\nRJ6x8uLZrW7TJN3KbxXpvFt9/jJsf4KBAGQBW3FjLMPRI0SpY63GpkmA34iR\n9PRRIcoXPFic/MtbtWbWWPPqsONNsfGun1heuN99SCeEhJTPnyzTW6TP35pP\np51hN+jsutpXVFXYrTWr0wPOYthhRpnqy164Mxgry1+ttv9U+QHRzvxhi1NF\nDUAdMXAwxUw8gfrxBfGxDd09AUk6jg6ryP7nDQbqywYgalJwfZl+KVyJwvtc\ne0vp5aTDd746BBEaHNGaxi1e292HCEOqtWN6tF/Fx4Q2KXEVuvWM3GkHOt8I\nFEC+4HAJfdGCYyUrU8S6DDEcmBnceE7DQNo58xawHFOHXwD+a36Do33L+COI\n46DMi+ctjkA7QLosoZodYY2g+xTLCJc6kgNXdjdwJih659N12LWmh+kkyxYl\nmySqf0rbLdUvaKogS/8ZZop6jIYLAWRnQggeQI5oEXM1CYALsGTcRRISEfbm\ndv9x\r\n=7VOF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.32-renovate-non-major-b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf_1617173980557_0.7674141808513943","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.32-renovate-balena-jellyfish-logger-2-x-5db8f384221991f6d2d93e8d6776f829510eb61b":{"name":"@balena/jellyfish-sync","version":"5.2.32-renovate-balena-jellyfish-logger-2-x-5db8f384221991f6d2d93e8d6776f829510eb61b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.32-renovate-balena-jellyfish-logger-2-x-5db8f384221991f6d2d93e8d6776f829510eb61b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b4871bc96e39963d15166e6249d8213057b18e07","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.32-renovate-balena-jellyfish-logger-2-x-5db8f384221991f6d2d93e8d6776f829510eb61b.tgz","fileCount":24,"integrity":"sha512-bLVjJpP2SCwVmkOyeByOHDnUjvyH6YPjpv4Ag1AQ/dTgbKLlDE3oFK2ZjjcbVYVkQx8JXYtvs5KOSLBaJfEnvg==","signatures":[{"sig":"MEYCIQCYrbRR9zzICeEGEeDrpo1CwfjAlM7m21OGIyPBD+wa9wIhAPnHV7L34XQU0IhZnuG5Oc7hdf6SY6B+JFsjk9YYIIl8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZB34CRA9TVsSAnZWagAASpsP/jVlDdie77f/fpRd+vWo\nZvDGnQG+R0co9Bo4FpW7oJQf3GdYf4P4DUkj17KwpFGVQoaLtNwtQXhudGVX\nQ25vZnXsh3L6jgr3T95ahxy89+zlNH4vaGjEWrL8xU545AqfKuwS7JvPgGN2\nLZ37jvmA22gxT/ZzAkoxEKNChcq47qsDfOIHvdGGZXYR8zGS1rPtx4pndmXI\n/HUsYAed3xWLGWt9QNSPnI676iHKtk8MgPj1Y/dpgSI4CDkTK2uPpGtaL5Os\nQvr059k+oR5vHiidUuh1hZaENsqafdxxh5CBexpgnmnc0AlSBbtXi74Anxg6\nVweV+XO1gWyXn1pdOAZdqg+pRdnm1Q4iHJ3krthPL9d8CkOmAVk2hyhr9By7\nl2kMDK1MWpPCklWZrBjFa8jz4YQlriohtAPk0vhJ7igxaJ/afu/i5QzLl1JA\npE1jIBFxO2wz+s8XqNegUYQYYGM5UWeB/Y7BXo7CwhAmLlfW4qY+s2EeffiH\n62DmiSzH3vq1j1qhhXAIF/M9Ts8U4rsQNRKmHjYGhTSJT8JGxhqA8jT/6HUF\n8p73YoD0ReXmxmkwyRn7t396dwcL+dPEFdA51MCiAgu7L6y0D142AW454UPQ\ndlEv7aZib5PHxxSkEylXv7DLlu55gYvZOykdGA493mHun5AbygnkfFy+znu+\nHQ+n\r\n=EPG9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5db8f384221991f6d2d93e8d6776f829510eb61b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"2.1.15","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.32-renovate-balena-jellyfish-logger-2-x-5db8f384221991f6d2d93e8d6776f829510eb61b_1617174008313_0.9390081828992893","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.31-renovate-sinon-10-x-6fbc437bb2cb9160788f62931f971eced0ee41a2":{"name":"@balena/jellyfish-sync","version":"5.2.31-renovate-sinon-10-x-6fbc437bb2cb9160788f62931f971eced0ee41a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.31-renovate-sinon-10-x-6fbc437bb2cb9160788f62931f971eced0ee41a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87d7ba8b3a365c16ab35e2253fd77b86fd261821","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.31-renovate-sinon-10-x-6fbc437bb2cb9160788f62931f971eced0ee41a2.tgz","fileCount":24,"integrity":"sha512-3zL9BeZ4gekA8DlgNn2yglFnTPhkggv2HCYXZTcHmEsBX6ZeMnuHxZj3MpLBAI5+BK8HJ7JQMpYa4HshiuA3Bw==","signatures":[{"sig":"MEUCIBPm1xg1UDx/rp6Cbo27WfmPioNOfzqX7pmMwZH0G3mAAiEAvnbtKTaYSN4TcY0h1u0oqPOygSXzd3QVlcZ+/nbTnyc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZB4OCRA9TVsSAnZWagAArNsQAKRo9LJ0cGtWbA4VTgx2\n+qP1iZEDliXuwxxcmB5pBl8LAgEUPjWnBvYdlgFYUzt1yP0iF8UDjVKH/jOk\nK6E8kiNeSIHUh6I7ZoxGF8cHg81Apg/GQiANtVRkHWN9lGwODUqRPIWVJmEs\n15I2rrtNwshQ3OMKR/3VgcNM8ZDUveWWT32nVO5f6R4djW3HqQc8Sr8Tt6PV\nkm/+uRwPsuqHo53awYcDfD3oUp6w9onDhe1B+mZ1LJn8yKhufO/mGAk6yDD7\n2vnRwKzi5Jfmf6lt+uMsxecWa7u8mfR1y9gZhOoWixeUEHPEW0uycIU8inFy\nVgAyknGuAauOcGtAmo/demtTtKmm7GmlKBDBj5mLyYYF9OnWiUX3nDG4LuBY\nq5JCtIN76CeXPkWUgw/3B+Cj9yPdgeu86WeMzeJt0chzb7iZk92b8ufZABHW\n9jbtgnZdjrN0P0lmbtzwuOjRYlNVcMvAEqr5xJ5YBo3bfGpsUOj9lntB/KVl\nKvQDQZnbG5fH78Ot/vv4jd3ih5dWF6L9RZVFt5qXvkMM92azlpCq27kenI8a\nwdhByjw6YStE9tntS3CWNRHENfKjXgEC1qjLUbI3TtJmAAdjIthAzChGvZKb\nxTM0RL4z6Lvw97gf0h7Ckm+XogafZ5VSN5UHbtA+mGh82Gl+CX4k0V+ICqtQ\nOVaP\r\n=kMDk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6fbc437bb2cb9160788f62931f971eced0ee41a2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.31-renovate-sinon-10-x-6fbc437bb2cb9160788f62931f971eced0ee41a2_1617174029989_0.19900573194883298","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.32-renovate-sinon-10-x-c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad":{"name":"@balena/jellyfish-sync","version":"5.2.32-renovate-sinon-10-x-c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.32-renovate-sinon-10-x-c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c9957f1e35a0b15e706d70e040200a6c2f850776","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.32-renovate-sinon-10-x-c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad.tgz","fileCount":24,"integrity":"sha512-0yAaKkGdt0pAyXzYBJCmsTzFUPhxzTV8cO5r4KFZR8LHyvNMb0Xb7IqHmvpYrkk/oQA9eaT09vgVgM+lcPmYrA==","signatures":[{"sig":"MEUCIQD26uVmxR7OuloE3XbChkbyTMhkeI/me3yCZFf1KlG3dgIgZ20l8PeMnBJkgVRSlJj1C/jRPod86C2SxMBEZs9Ham8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZB7tCRA9TVsSAnZWagAAbsQP/1WNrRrkdOB7jo1T2WDG\nWtEg5Kry9uTFdb9Eb9lGB0n7dKKtx7BPkcOsyKxTuUIUiQwkM8kzuWQpEFQO\nmkiA2hrNv1Lllh9heqv6jF1za5esL5u7X+Gz6Qe40D+jJm7/csdlCMdxIuax\nKInjbnl9KNpAo0MbyvmTKBWxrKqX+FnNjs67Hakj3Z1fAsw9uMiEtQ6IgLkq\nkA86PnFXOcBKoFb4cVL7zRO9b5XuWbPADQRcokKnaI0VtXKFyc0Cmj5MMopp\nMEdannW3MrrbHUAwOcjA8LxNpFWUzHLGVXFjlY1TDjOP42ONqNJn73EwhWNs\n1ChdxUV7QEbHnanyqihzF1NWgT4pMqmbozspOCz+hUG6u0fXNn6yX2KWvnNa\nyGVfswTWI7wf6Sfa2m4P/y2+LuLF1rouoagsR1EJpy47pnF6qtL7WM6Ckm0t\nYGQyVnFjJmfNNj2g8uUxYAQY5h7VGokqb/dmeJNxLFQBCzpYBwAfemj/umiA\nrCSxGGWFZEPHV6E6nH2cTQd18+JwnsUBfvM5aqjqsfqeGY7DH7HoOOX0cuEz\nDToMAtCON7NApHIogRbLBY/x4HPndjxx5xBOFP4fFqtXx4JRaHe5dQrrGvew\nxscznEtC1Z6/iPASjdPZhQW3lohq4iISiPnxegxPVqFNsXCWSAO2ENCihDKd\nDE5j\r\n=tz8J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.2","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.20"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.32-renovate-sinon-10-x-c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad_1617174252581_0.7045308582361134","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.32-renovate-non-major-44d261ac92d2b1d253b876478f8eb907a3525a28":{"name":"@balena/jellyfish-sync","version":"5.2.32-renovate-non-major-44d261ac92d2b1d253b876478f8eb907a3525a28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.32-renovate-non-major-44d261ac92d2b1d253b876478f8eb907a3525a28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ccf33b74232202c9bece10b56853463b66d4781","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.32-renovate-non-major-44d261ac92d2b1d253b876478f8eb907a3525a28.tgz","fileCount":24,"integrity":"sha512-AgENRSs5o2Oftiyeoi8Is9AzBx+NlVrSn1AsON37LXRyHCyEZbzBBARjRlx9be26R0BuC6bntKpCWjCV5aqT4w==","signatures":[{"sig":"MEUCIQDhMHodLLob9qL1CWhKwD9Mxtrs67dsWt0KmhI6rM1uIQIgF2KlkAG6hSyF166INp3/t/wGS1LR7ow9zbxHO1Uumd0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZDFlCRA9TVsSAnZWagAAQyQP/0P0c0DrE17AQz2F/OTI\nHEYtYY3BtzCROYCbJngDjgaaYCcy809b2D6k2eZVG3SQhV6n3+GXn5EBr27O\neqA0XhE+YrcHmlP58QG4wgVHI0qmwj/npUorBFo7d4QCiWucBtEETm7AHzUM\n3BKtkxsqybz4X9O1weFqJvuXVP0jegFdYgXdhTtloXmDUD92k3/vFeXoCm/U\n17rtzAymFJw6ofZtHHUCdtOEqh6AMjiaKEUUYq8DSyqGJMlpS94OUD3xtVNc\n9ieJ/ybz7FQNsECkJe8BR3JaDSF0coKb0kOsXSBVsMQ44t6UUc+aF+FQscWH\niAj99h4SxnM4bPZjxIF4Z35aGwUnLcnxq1WMyA+MdxiVhWaOIfgNMx53l6nH\nDyFLRQYmrhZBBT9qM9LCUqmlP4rpf/2FYLzKIxbYYNExBByz44VGgm0CkNZI\nRYaGTxyeVjy3cCW1pODEC2ck/b71uCSx4E0dRICerfAqhlgjlbNMxy34PpGB\nLaZc+nx5Vi6RYQkILFgOM8nx41WV2Sb7rgbk9IQBA0bR1a/CeEzhoz21LD+1\ndsDQSsKAyP/qB98Pod26B9dxBOcMM4ZYUWAKnh/5naU59Re+NuNzxmClaP39\nKseB3gw9/ILczuw7ZqrFavrga6Ey5LIYg0JSWB3Qc/TGVTGq3k2yKuiRX3MJ\nhe7X\r\n=pqt1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"44d261ac92d2b1d253b876478f8eb907a3525a28","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.32-renovate-non-major-44d261ac92d2b1d253b876478f8eb907a3525a28_1617178980519_0.27700828007320855","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.32":{"name":"@balena/jellyfish-sync","version":"5.2.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88186a0b8501db567f38417aee9ebca9f4393788","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.32.tgz","fileCount":24,"integrity":"sha512-IJVPTOfcccEw5U6SrtR6YgUNNI6S3ZIPSIR79KVQUuR4j/OAX5c/5QCpjwPqcYcGiFU71tl0q5+31cv3/ogA2A==","signatures":[{"sig":"MEQCIECi90hj9vu6/V3i6UWEuAA23dO3Au547nDbQzDMr5xrAiAOVzazKC7Y2uRXX39WsreV+AhYBqvma8TCCXndiBz3tA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZDIbCRA9TVsSAnZWagAAQpcP/11ANw5WaLTMdt28tI2m\nUujf312hNR1rHloWMsdIlOnK+FtLHd4NWtIIeYv4tO/uGU1Sdtf5I/zMLQB4\nSg+w6mNPoIx+vJkQyhZPrp5AAF5VvlHYNku4AcZdwX7l65OnqpqdQYJ+MESD\nRQrKgfzHZgkVb4t2AOhMXPSMLSbMhi/Vld0q0GCk3E3uN2XMdpRktHsAK+ai\nqCO0KYBMoRrssFv4KSVZQ3GN3q2fmEANP12BAz6KNo964scc8030xB0WUBAy\nrU2tI86R0vFDZjG45+OctjQ2fZKKQZkAroLMNN3V/BuIF66hUAXGVSIQcVWK\nKuTCqKGjN74fk2kawom0BLLXmr8sBCCjiHCFBIdwPebh61lcpLhkjYgU92vF\nNfPtzh4CaTAV4WoV2ZqQFfy5KzF7gj8QTdR7HLpashk/FiJ1PcwYi1ecKQp8\nn+JNjhOQ5ckb6gfwXVSghMr+O46vO9b2gb9FCDvsRgP8daL/MDmIovKJIR+o\n7E0wJHmyW75B+WNzTDtxO6YUuCG6J8LJK2uTK/XCblyauLvPmu9csQH7UZIg\nKnkKwmiH10K0ps8D12N9u5NSCWnViLXkVDOrGeUq40uJVwXOs34W3xY8rrgj\nLgS9V0RePJccD9sH4Y8C/Y04ftjcy9ObXwRU4zrRLijXHntnkQBThJrWyxnn\nzjpt\r\n=QLu6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"38bcc371a96b5683c3bd4f00459374da00b48881","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.21"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.32_1617179162985_0.12658236802855893","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.33-renovate-sinon-10-x-16bb8f730dc103194df918d75623b5924c159a5a":{"name":"@balena/jellyfish-sync","version":"5.2.33-renovate-sinon-10-x-16bb8f730dc103194df918d75623b5924c159a5a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.33-renovate-sinon-10-x-16bb8f730dc103194df918d75623b5924c159a5a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0df6e0a0c3fd4aa86c3257248a57261b46a461fe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.33-renovate-sinon-10-x-16bb8f730dc103194df918d75623b5924c159a5a.tgz","fileCount":24,"integrity":"sha512-wjb0OZv6N57FN8LfZFq5ARjrXno/IQDQScVM4bIQAPWjsquvUGnR047/i3kVXhFxiTil6/0fxse6QC2lPqVs5A==","signatures":[{"sig":"MEYCIQD40MOFdQCulgpPmYY5HXe9s9N8Pupi1tRecUqAzwrnQwIhAIlFyy1BzVHuHaRYdkTrVjWKoKImbMEUZiBTgfujlRbw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZDMjCRA9TVsSAnZWagAAda8P/i5oMtnMsRUwDS457atk\n1c0TszT2+DFMJsnlGoas1+TlCH+e7u2eDIHHZ55bDCsHBZvQ7DvJRMzsGkky\ndbVcMslp7uMG5XAkaF0ALG7d/kyy4PV1yoi3ImsGgUkyGOlkSJB2er7HUeZl\n5ywvhaEaE8S2Pz2XHS3nXmQOuwQZtPT+9SwNEApE7/okMxcm6r6GTZuyL4Yd\n+f3MXOQEnAnS6DuUrtCsTOF7Frywcix6MC9HXJSuEKWAFBikbeapx2iIck6n\nRVCjCfuFNfNmi61BSRYF0fIyUAy1NzvD2Fc/t1u+wxcRkGBwWaEoNf5pfmV1\n7Tn3Ojaj0HMtDhft6xhjfyC3o3GgpdTpfwhqiMR0AZJcOkK/Lu7oUbCfshEW\nVXmyoIsg5EDHWO/52BJWXQKXC8CgpoozhV8/78iySCAqSOHcBrh2ca+VgR/s\nPciV73PuEbYpdQJ4TmkpN7x2V5M1fyT0rG4D91Eyseq+9F5BNeX27PQxyFu2\n/a0DmpAPQb7BNgbFPZAtO1TxR4Lc+zbFfEtVqVISl5N9SK9duagzqn/K4240\n8GB0R87pH60DNrQIIgElL4H9X/pPtg8R+FM7Un3I9HlYVK28vNGAbLfNSFOF\nZLkbtWlWjpJEFhw4k6VZQCAWh4c3EVuTsaykyU4lKIhdja6u0nuRNhlxhaOs\nD5ox\r\n=hFJW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"16bb8f730dc103194df918d75623b5924c159a5a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.33-renovate-sinon-10-x-16bb8f730dc103194df918d75623b5924c159a5a_1617179426675_0.6560940044200678","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.33-renovate-balena-jellyfish-logger-2-x-2853617d48d764ccb60ef518c8bd41c24ebaffec":{"name":"@balena/jellyfish-sync","version":"5.2.33-renovate-balena-jellyfish-logger-2-x-2853617d48d764ccb60ef518c8bd41c24ebaffec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.33-renovate-balena-jellyfish-logger-2-x-2853617d48d764ccb60ef518c8bd41c24ebaffec","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f4821087918609c9c5e47ccce1df40f3d91fe678","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.33-renovate-balena-jellyfish-logger-2-x-2853617d48d764ccb60ef518c8bd41c24ebaffec.tgz","fileCount":24,"integrity":"sha512-O7VuhUIazP/EXEwcLIr3WV8D+70gf772nk2LBl6AuJzd68cXDhuEXhZsLN9aPERujYqtaiFuhVq7sRhNzmxR1A==","signatures":[{"sig":"MEUCIEq+Twg2CNpyU7k+KEVwgsfGoCZUiIglwWitAhfAlX8eAiEAuJtGuz/jFn8VN1JbKmeEW2oZyz28J2yt5PhSVVUOpHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZDPKCRA9TVsSAnZWagAAW6AP/RCxE80vL2wlo6AktOJr\nR4l2BSzrrP8ItvNrCEWQvuZk05KEjB/vPD5RrVcmR5rslNVsNtzLa/sWLkEY\nIQDHfIwE6jQBpg5KhkQyDIE1JHyXJYPLWORaiBrqvcjZJOgjkIfN+oiwmrN8\nBNBYAFq/+DTRBWhpfRGfuC4lINbyuPWXcbmrWSV7mmpwvJG5hhdf3afXg+8W\njkQKrJ1YgIOkuguPqNJY7qSugf80+OUBJMyyoPCKhpNGUO07CxXvaokO6YtO\nnb99yEBB2LPvM9vmbAMvYPxRKMzbnshAecspL2dfUXPBpc/rJIef+xFzdXub\nbOS4K1Vz6B1luwj5Sn1A4YPuniyjSX64c8yWsxaJ+qMFpw5JTh85DGPylWrr\n/P6q7Gu4u/wu2JYdhwNp3t1Ss7jdaOGkK5YhQTTISkzi8iVqKGKt6HOLn/PZ\nlQFgzvwVBIqo4e4brTbDmH6JWM2+fHAhm/Btgy9TMcuSAwbKsvivEPZyr2EM\nr5NZw91kAivoQYNClwXFLSKWQYMQ2yp8gMhDcnz0OweHu803/ybRBs1taHJj\nhn5M5H/GVtQevRajmYUcIfEGypgtazmV0CPB0N1sfOvjjlLSRli9gJH6X9Ef\noclhEr1uGZKlZQkIIHnYlj7+oNyph3z5CTVZPaNSWCIaeWwXNjNmdYEixG12\no/5x\r\n=g9fm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"2853617d48d764ccb60ef518c8bd41c24ebaffec","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.15","@balena/jellyfish-metrics":"^1.0.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.33-renovate-balena-jellyfish-logger-2-x-2853617d48d764ccb60ef518c8bd41c24ebaffec_1617179593920_0.012313854028109805","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.33-renovate-non-major-bfe7a22b1c62ad01103914ee1ea9faf056414aa2":{"name":"@balena/jellyfish-sync","version":"5.2.33-renovate-non-major-bfe7a22b1c62ad01103914ee1ea9faf056414aa2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.33-renovate-non-major-bfe7a22b1c62ad01103914ee1ea9faf056414aa2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88d50d43b27d5245fb657f7ced2f5706344799e2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.33-renovate-non-major-bfe7a22b1c62ad01103914ee1ea9faf056414aa2.tgz","fileCount":24,"integrity":"sha512-ZhluFNvZ1kWsEZJlf2NcfSx+dBdRrU9E23ZxhPSfba3cfNaPuiKzyktLKdVMUYa0MziHZebtulrVfNO3FDzpnA==","signatures":[{"sig":"MEQCIFnLjSe9OZ2Nr28OQOUZ6BlnltRbs0EvQa+5Q8IPc/MvAiBHI44HQYgPn1+CsBtF6K9DrPAnfyP7ZZFan0VM5MrVOQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZEnYCRA9TVsSAnZWagAAOuAP/iUAcUTeBW46s1FetMKl\nloIFXLz5jmBiWfQtNDhuYAPU0yDFe1Oen3+E0pTEHHKwfrYk4NUr/tu3xLA9\n/nQ0ugrA/xeRP/z265ecy2lDyvCR3rrj5BhkwmqcwWVEAkKnsUiS39tnUUa3\ndr6EoEufnQCXYMrkd9Hd96PRYFgBXbtWF5j7IZ3DyaedBYcpb4wCtV7uSKrS\nALgYqawmOkFQpGgIllyp/Dj73wJbnvTgWsRv+U8KfNgWDBYCVxfML6ZUSTa/\n2UJz9fBAydWh/AYGTeysV9DzFi26NsX40HXkyys+rp3/qdzQFPy0cmiyjxS2\nnR2SEwf7kljGGMp2ebpBehgl5injy+mwgmuM25KBszZ6JFar6tPV/y5T4KSH\nJl2yCLyoevyhAaa35Ks8Hkjj3ZsddHydNLjhPA80kKUqt1tZ8ywj+qjlK6Bd\nUM8rRTrfGOFrG7bC702GodTNZz+cEWgnyC1J5z3Yei0zkfgccsoUmQsx+bMb\nt4y4Lg3sxacO2CyaWdIK3gtNlLDVuK36qgfDSA4FJDnBVVtCx6EdYeSkdQbU\nuU9cvN/5Ydcr8kIyp/eS9fiWeP5E1q9w4HOf6AutJH5u+UxVnTlPpvcQ8rsp\nxcLDUYc1EcKNTvQs3yzo8ZpJkNPh4saB+kp/G0D6aG6CHN+QcM69BCywA8eE\n5Gka\r\n=79MP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bfe7a22b1c62ad01103914ee1ea9faf056414aa2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.33-renovate-non-major-bfe7a22b1c62ad01103914ee1ea9faf056414aa2_1617185240400_0.6547289518173716","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.33-renovate-balena-jellyfish-logger-2-x-e5276455936a2603bca7a3a254307f919a1f3332":{"name":"@balena/jellyfish-sync","version":"5.2.33-renovate-balena-jellyfish-logger-2-x-e5276455936a2603bca7a3a254307f919a1f3332","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.33-renovate-balena-jellyfish-logger-2-x-e5276455936a2603bca7a3a254307f919a1f3332","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aba4bb0d93c0d8e9d0c831d2298c0ec9fd9aaf73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.33-renovate-balena-jellyfish-logger-2-x-e5276455936a2603bca7a3a254307f919a1f3332.tgz","fileCount":24,"integrity":"sha512-ujrPaeIyn3ePktiRM1Jk7B0XQRx+9r1uGKfinHgaNxVP1SBR3YJyplHs7fLByKvrR+4BxlqOq0HlAyxJW6mgrg==","signatures":[{"sig":"MEYCIQDkddAoMpVA85F6BnmCpefLHp17JIgtLBTpc6RNFMO7YQIhAOyFgP8IrVrVdSjINLPk14hl21ky7XGgHhmUypy2WLf+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZEn/CRA9TVsSAnZWagAAKsoQAIFaHJEMXv/e3IE5acnN\nRNQVGJgn04p1MZx/SQESwgJt5Lxz+nhcfWqid+h2TG7l8npGyFEBNQD6lQgZ\nJLpRs+1zb4IXR7oyNLqNchOZs09tpRVpa1iYZYl/qbrAurKmV9cPC20DS+l0\niuh1YcWXeMa1s5OYpg7IW2cGk+T7mdR+RGMjIunAR8FAQZ53PZqpUO7V9WYb\nNuUIk8zZMUp6x8s/7s4EtLJJfHBbBi/L5it/IxItplh3U5uV/heyqU6qLIb0\n7W/I2Yd7Jg+qpY9xilVjEgreKcSb45o2X3WXuR5HNEWFeAzCivykFhZ/uUai\nuZfBN0Spaf+EAlFKqMH8A+LizICarUmKm5nNh/t3qaNQVbI5qrKL8oeir9Uc\naMa433zQVMRS+kNAEcnGHg2qp/FckzwXwAoZVQQQ6K/qiazsQtzG4bg1tEQs\nup9/VY6r9bvj7zDQlP5j7USGJHmoinX9AFqPKucbAGTeN/wd2o5ldnFXIa8U\nnc57lyGBJjTrm+9fD11RTtZ8oRlMJkonrv0JGGJpioY0KWrPbEJWAq5o5tSR\ngnvi0S9ueBProEoPcCCqP4GxJPqTi/Clh8D5rm6iQy/Ao2E4DXWrcebYkh8o\n2sH1CLQJDJLhC7uVP188/ql5KZihH5adSxhGIz9t6rWu9A3KakJ41xscd+50\nmf3A\r\n=JuPq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e5276455936a2603bca7a3a254307f919a1f3332","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.16","@balena/jellyfish-metrics":"^1.0.21"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.33-renovate-balena-jellyfish-logger-2-x-e5276455936a2603bca7a3a254307f919a1f3332_1617185278521_0.37661636996245695","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.33":{"name":"@balena/jellyfish-sync","version":"5.2.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"00ab365539799eb61b8a9a5c6bd18a8908194f40","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.33.tgz","fileCount":24,"integrity":"sha512-kmsiPg01g5mMLn2BjWP1m38HJpNLoRxZbPf7JIKNXXd0a1ed3ebSqjYQXAWJqc3x/BwFa61pcHUFxlTaOp7RFg==","signatures":[{"sig":"MEUCID8iLd/7QCeOCL+lg/82v+/QiqfW/rmhVWViPi11pZwRAiEAprt8aODktDAc9BmYMm3PfxKFJrC594P9USSSGhDSMc0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZEquCRA9TVsSAnZWagAAE9EQAKM7iSqNcTqI1UIBrhQB\nBadBYqzHwrc2ofljAZKQTf+3TWqhfKjMJlkbucvDP0QBFsaxGHocRn2B3zmJ\nJ4YfsLPlQfBIWBIlWJ3WQiNyfUJ6aS4Jq2Cx4XQ0AQpUHONvijKeIJXKTQHJ\nmBEpuP+ongBnsLVZ2UpTUM1G7DZ003MuvQzN+Ee3uN5Ox1YnXnI5Ho+RYctv\nksihTdmqrAVrBd8L9JrWnxQVvZ9ESFqpG9ztDNJjZTR4QQBckhDGciTTGBqX\n/1BUr9/qg3KDtadzB5Z0/rYHaglkFrsnhm9DXzuCe6bejD7U8ZulpaIVGEPx\njMrOEogploif4BRTwDPZbd/9OfdAIu6Aij5KTxiqqw3e3F5GAwmJcCBiSSiB\nLZJ2F2foY0PGvrJHRAIJeLtC6f+mqcpBITSwarUVzGRhYYoi5fb7qcRnxph0\n7K6Qm8BNzDnSy0vQEWhq6j0AUNzUE+ocZ+mNC8/LDk9zamuVrT9btg8wkJ28\n+604FfzUpQh4ByQNCbJD977LcwQ1B+mqIyroFTGSLz94lTyKO+IH+/fMFZqM\ntNPtoVTuWL83fU7D6MPN86B6oHsJ7yEm+CJUQwWvmzF1VF2p3gIaKGNum6pJ\naPiMTCDSJXky44TtakoF8QRJtCYXagb8gy5NAnzbNf35/pxv9L9KFM4TXHJf\nSLuO\r\n=6MjU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"31a1a6b4c9828c8923b70b8c6971db8f58700808","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.22"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^9.2.4","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.33_1617185453660_0.02761862643261459","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.34-renovate-sinon-10-x-8cdd428e67c047461376649e82dbb71a5239a2d2":{"name":"@balena/jellyfish-sync","version":"5.2.34-renovate-sinon-10-x-8cdd428e67c047461376649e82dbb71a5239a2d2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.34-renovate-sinon-10-x-8cdd428e67c047461376649e82dbb71a5239a2d2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"214bcaf03a22fcc150840d439a23cde976196426","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.34-renovate-sinon-10-x-8cdd428e67c047461376649e82dbb71a5239a2d2.tgz","fileCount":24,"integrity":"sha512-4Cgv6Vc6yScdgk0AOpkIESszaDHrLrGnRJ6X8n39kMLdnNqwsI9EzsB5kBslFt4AiKnbtYU40k220WY/oDwKZQ==","signatures":[{"sig":"MEUCIF36XtCl03kFUU2efHtN9ziSNqBVhRDJItEK+0S2WV04AiEAv0Af7+G+c19oZCzzEQdxYWJUDNAr5ZxG9inR/l3RmdA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZEwoCRA9TVsSAnZWagAAL1YP/A9PxBwS6aL8LPVeN5hz\na7Z9UIaH7pT5vGJqUfTdYJtM9LG6R8huWhEH7CqNQP6Wu3EBjdo5DFjJDlED\nhmDGCf6y+UeMsMptuiCzYpbU+jHAYk6bbm8WavI1vLElbSuex/avK14eFHi4\nqr9TPU0MiRd1YFEqdwC0cvI+ePJ4EgNvAy5vfNzqXGcuRObD3+bLF4V2QRzK\nLLRFHJ1JVToN5+QofUy3+QrrKby3xCsEbijPoHUjxLW/bRBy/SeE5qg2aLT4\nMp+FVb9tLnaRXY73edF8wezecxXw0PKgfDc/Ks/ioOtxG5aL7a6Qp5PLOuff\nuVaAinkprVXGbQ0XGKu6KUOnQH3D+LGv1PFMRK67ggDbOeIc/oHFx1ImIuT+\nAoKWp5RqgaGRKQ9lM4sbXCTCLyKTUdBYzh05PAqO4nZnpe30zLE7IWRTj8OZ\nf/t2YAuV69UpxWkUPFTHzwExlJmPEfo6YZ+J/yuFBRGiMf6IXBLWVMJwfcp8\nXetemfBgMvCFfaTBurpQboo9nXi2IuFrTb+iT4+ZPqJC3oG8TZls1SFPKwb0\nU3XqH4+xoc1p18tFCAvoTVllS6T0d+Be7JwHMSVTxFUBwxeHjHDU6DULHrmu\nNmFyRPlnowcnXkec+puVNSRrHo9mAhhKCvyuoVCdTNmYhHZ0UTmeGOSqpO+e\nfwz/\r\n=10Z1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8cdd428e67c047461376649e82dbb71a5239a2d2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.34-renovate-sinon-10-x-8cdd428e67c047461376649e82dbb71a5239a2d2_1617185832021_0.8792238100999541","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.34":{"name":"@balena/jellyfish-sync","version":"5.2.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93379edb59d816f2f7c4bc4ab24e247295d6b923","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.34.tgz","fileCount":24,"integrity":"sha512-X4ezvp6CI9+tMsF0GZSIh9bXxo/TMwKqS/GqP4dzPVUkdgpIFKlrhp4sejKTT2jvkbTNNsIW4iEmdf7uOMe8bQ==","signatures":[{"sig":"MEQCIDCRYDV9S8l+7YDzn9NaXgzoLPt1N3YuljAb8Nbd3d5MAiAIcXo6tDZIMbeWf7ldhVhutMSGrEueJWY4UzdbOcYB7Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZRqTCRA9TVsSAnZWagAADGwP/iQR6/hrUno5eRKAnZfF\n0DtArSbWhla3Me7YyiVvB7ztfh5U5SJOrHu9au1RD7HQOTog/E3D2EVVmXgs\n9feKf03McG9XUNL2YSdxuejF1qaJlRg6Wq2H+Yc+8VOnCgJnr9VIQspmDElc\n6Y1EjVkbCZkjP828DCRu+XCONfSSWRDqdnW0/FfYZL37bjVG6XOu+u+brRAm\n51611ITqLGMOHfGyLjfWz4qUL3O4OJanlvAZ1eUO+jSvvpqZqjaAg5e4W+Iw\npQkMym0sj5ZcO332h9W/F/4y+Dr3ovbLpwoiAXBZhRgh8e8/bqrodTRSnop+\nAWxC71JLhXEtj/o66/ZBGqkorcrVyDZHBXurSfCAfSiyTLxwcSzgtmj5f09N\nJFnZ78Fb4kw/9Mpr2/x9eHFwzJthm4xPSzKyUMEZEXpti3+I3o+QSKDbg+FW\n2bAD2cAuY0wSMkhPNTh7KGny87RDzm1QLDcbuoQ0X8P6YtpYdwnxEFT5mms5\n9cBvPFN4caYjgB3EKMg/s5yA+BYVF/MU9hEomVl75DF1mw1FAQLoRwhfY1oI\n+9ZQEGXFFVTmwecdGGhPUB3zNMKSruRxX0t4UuLkzDFlPHFZEtDrVsPYrp2j\nOsnOBnIFVeX+QcYrCFZ3SZv0whWea4jH8+ZgMlBHy3JSkl2+5UcZ9JoWPIm2\neNo9\r\n=mrDT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3318239c999c20b57d6e6f66f9140dcd770803cd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"1.0.57","@balena/jellyfish-metrics":"^1.0.22"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.34_1617238675103_0.12729768228743787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.35-renovate-balena-jellyfish-logger-2-x-fbb31f03b63d49ca133ae10951b0151de7ab0cc6":{"name":"@balena/jellyfish-sync","version":"5.2.35-renovate-balena-jellyfish-logger-2-x-fbb31f03b63d49ca133ae10951b0151de7ab0cc6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.35-renovate-balena-jellyfish-logger-2-x-fbb31f03b63d49ca133ae10951b0151de7ab0cc6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4cd8e9d2c061572e1b297e420753d62c015498a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.35-renovate-balena-jellyfish-logger-2-x-fbb31f03b63d49ca133ae10951b0151de7ab0cc6.tgz","fileCount":24,"integrity":"sha512-IV0Ap2tOvLvA3u1EIeoUujCl2yf2OS057K8hOKWuM79VgLAgycsPGq1FGBD3QrFo4bYXL5F7v0H4MCEd3BJRCQ==","signatures":[{"sig":"MEUCIQDOfGYoSSHoDYGaZwI6TKFPHViDPHvlX3d7rO2HsHOYrAIgdf8Xkd30ujmwQEi3GH7Gp6y8luRa44PaYr0SCa+XNzQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZRt2CRA9TVsSAnZWagAAuZAQAJt7J51fclBT6wgRsz1C\ngDbKAbTX3znQYbhw7ZmRHemsLR7vUxDUzA2K7yVAR45/rLq83wFrKnxeaGHO\nCwiKgNwE25UtmjdfaGIYCv9g2CPETj6DHn07ulYb59jcABcZxYXFnY6Xfcu1\n4nvAPOB2NLqayqaTepBi+Jo5pm6B+KSDO/ybjZrrbiVIbMspFW49AO9pr1Lh\noxTobvCmabZaGvPFC+XyY2lKzeTFJB3n+1KU5GdRSPgCB1ZU68rjC9oARGWx\nCoMIRqc4fSJ5Ll8ucUOwcSYrgVj0ry28dT6STSsTNP3aZzorclxJLPCAWZgy\nXnq858xXAQgdpCdCNOtY1qYkTRMs6azkKeSh97fzJtbLKok72JgUWW1+RvKl\n4/e+JEqvgapoqc1qm8QR9xnEhxmUiRDXsLO5KUje3BXSNk79tYkknggcFIZ8\n1Knf/kcGN9HcPXL+7VWjLOyytGofoCBzovUUXibk26BUZL5hXVk6Djgh8pnq\nGi8q+7KBKzxG3F2oXeSKKcuQBl6A2VhXV7otf5xxF5hCCp6Xv9b/TSPFVhCX\n01jy8HFfXGeUp8HTVRuZZZvZmH7W7lETKr2mJRNPfvSrTcZXBzvIs049BQ4O\nBcKvHyfExQcWFJ9QfQZqFe3fSwTEWHDftKea8laVSsCP9Rheqb32fl2Vtvgs\nJ4Wz\r\n=KHzI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fbb31f03b63d49ca133ae10951b0151de7ab0cc6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.16","@balena/jellyfish-metrics":"^1.0.22"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.35-renovate-balena-jellyfish-logger-2-x-fbb31f03b63d49ca133ae10951b0151de7ab0cc6_1617238902020_0.3267170308456735","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.35":{"name":"@balena/jellyfish-sync","version":"5.2.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9f85f0fb61e8b656911505ac9beacc2bbd01637","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.35.tgz","fileCount":24,"integrity":"sha512-dMl9lVKU5Eo9N00qM3j3cewUphO4RG/FCtlc2U4ChNZdxT9Rcc/vAtv2qBrxatq5r3VulProwCVCKLb3rJzIog==","signatures":[{"sig":"MEUCIA+rakCMZrGmBb61a8nGaDihDj6Mk65TKTFqRGRKoD1/AiEAjoQdWSxkmILBRuvOdxe8cYU4u6zf8N1T93LiRT33Kt4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZSXYCRA9TVsSAnZWagAAf3MP/2122srQvZ/hICewyGGV\nBhTTb/hE9xnSTeZISCYCAZa/4N7ERI+q7X/b69JcELw5a/ituMxSNL41ae41\nYSteT00MoxeAZMvBH1lKykodXxz/EnCZ9tXJSiUBPEa1g5uEcIz1V4heEeaC\nJrlUl3WbLX8DJsUiiUQYY2ib3ioK0BBJW/n9AdkiPJLUNG+s3QkoEV3LarMI\n//0dU+E0MCpT719Pja4O5WZCfFX8W0wR7FGrvAFtnlki0kFjGjfOfdNm5jNS\npWL2zmeXBx72OQvpOEdRwxbZLpmKcQHmBW5CS6Xher8S2ormG4U1c63BezHx\npyDsyMyu3/FNebSdTuwcSKU6grezRlFH7LMk44Tj9+LW0qKUhPXHh1t0IPfb\nuS7+L/aisSvcsNxn1XdJ/u5Uk5q2rUHJ84HHND8h4n5cDNN6jhevI8EVRajX\nwFUDkohrgwvGrHAkIMmaYFPr2OuAbiAfywTwNkpOlPwmasoN+vzDHJzR/E2O\nr2/cJ05vsYCsCNeJmkkQztX6m5LCQBPC/0S5kBjg0I1h2m5w21WsHKHh8BZP\nPO+zr+NpVOie6TfGDUajp0ReUbTmwBdnNWr0OfnCEtMUJEop3tsPL+PEnNIw\n+qTKMkh13fCUbeInJY7/0cWcXA2BteGLrtL14R36zbEdBeEeM23g1Q9Gmnax\nZTOx\r\n=V9NI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"088ba6feeb5c5da7d43a2e226987cc9f23c7c46e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.16","@balena/jellyfish-metrics":"^1.0.22"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.35_1617241559562_0.7663340134632299","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.36-renovate-non-major-8c630125046981870524429a5f781926e48de54f":{"name":"@balena/jellyfish-sync","version":"5.2.36-renovate-non-major-8c630125046981870524429a5f781926e48de54f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.36-renovate-non-major-8c630125046981870524429a5f781926e48de54f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5306c9faedd9788d9346b57f6673eaaeea613505","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.36-renovate-non-major-8c630125046981870524429a5f781926e48de54f.tgz","fileCount":24,"integrity":"sha512-6cgIattmSwVKCSnDbbsZuqWxzLvnkRmyG9N4/lgfUjH8iIEQ3AIW7k3XUskHFepImSqZAHId//njNsL9VhRlOQ==","signatures":[{"sig":"MEUCIAj4D7opxQmqaOH56+Z6pUnGM25uxEXbheDQsC4MJ/DXAiEAw/FhmQ9oSMTDIym3Nt9oyMk/2KqAVq361QGWMHpra2U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZT5CCRA9TVsSAnZWagAAwCcP/jouHZj0KiE+QzYb4rWz\nA2SsTk8ad6/ou1nV8nXjI8tIZ0TJoyn82vGlZSgQ9XelEYKLJt9HwxnMbbb7\nAGLh+yEeodDaVlOGDq5o2mFjqyqIkKHYVWngxVUHUfmRJjZbd+dEgOt9CzIi\nlaiyUIHQ8g7bD0oyohpv+LoBs/yXT0TBN4Vb0JuAqFzv/8VvCzzoxFu4BtSp\nkFCOMG0Ffx8UafOI5+dQ1vWYJ+6KOJIq5d4B401TWs33ve+nR7WtTxmZKhhy\nOmYB7rT1XeWyoJkbHHD7q9jUr9K6lWK8f5KmC+o4OCJsc0P/UfBw9EXUCCx4\nCpSIeB9oicRIYRFzq96DC0XZEOldVsO7RI3pouZJMHkuD/TIO8IWkIn2NS8E\n1aKUGXQDa56Ga1OGbjKMUG/KAe8Yej0J4xuOZcQHrxIzH+Je2lvoqaSRIs9M\nc9yiRK+NcVKuMKXZ17u9DI67SXXJ0Olgui1MoQryM2U00E+W0KBDgnNMWUVk\nCDnQf7pr2Pi/byVQkRzjG4JQr+9lHrxFLpxNUKiZv0heFR2Rk5J4EOKNi8v9\nsRkk8FGMfv7tHVBgurHKFlKlFKWt2s22lhMbFV4TJ61twrdDJIyCo49Rllrf\njdFhW5Fk2NyonTSoWGc2LEFOaS12kkDiA6oATw3PkiPK2ZxAQpObsCZ9UvQY\nqXdH\r\n=u5bZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8c630125046981870524429a5f781926e48de54f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.16","@balena/jellyfish-metrics":"^1.0.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.36-renovate-non-major-8c630125046981870524429a5f781926e48de54f_1617247810292_0.5368018835173705","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.36":{"name":"@balena/jellyfish-sync","version":"5.2.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"90248ab50a82fd724d6ad6f89c4eed629ccf48b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.36.tgz","fileCount":24,"integrity":"sha512-lNYjLTYOGkJDOIZQS373K9lwRS3x8z5DIMCjVIRZ2nwIyydvCmb8PBdznQToy6yUCXp7kLu1wIBZtHuA0oOGNw==","signatures":[{"sig":"MEQCIDyXSAsqoTfoR0H2D6IF8SNY4H7aK815KXEgR4R/vKKgAiAiVxop+iQqf8qF/23vxSMTdvUxUqMeGhE1sfxdN3pbrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZT8WCRA9TVsSAnZWagAAtB8P/1lRve3jwDDxxVVWrDEM\nI/8gYZ+DpqEVhzExEKbGNuA/xXoopeh3hWVc/otFhcgoFpcBNlbx25o0MkLD\nJ522u9icV+92M7zCARodDIHu7wB+ouxXXZ2pkZfhGkDoTP3RVqLxRFPI+rD4\nAs19d2RlJl6mcoWIX2oDxIodhszCBbRPwbzoUkf6vtBnVZhjW8gNgiapBQW4\nsndvqA7Q7FDHLFKoncwJLHL6s8tKrXXwi6laaowM4OnOvspzPD3G8gL9W1r1\nt3FziBx/FsAMV6jF7hbMZnzWiyHUko289ZFB13CtZneuFbywKkXTM3YbmNve\nacoRlu3S4rYfPUEgHUFQMFRRG/P1ITpgOfi1JMsSzeuNoXfrCeRq5Jh1uS+M\n6Upsf+/4+cSix6aMR1AG5S7B575B+hKpLjLkMiAdp+NMeXFrUpATLYmD3KHb\nCULpDygIKoCUCqyiqKVyTsvtPezNoaKGWlDg4hr+8Wu8etjmnYxDM3m/23C4\noWbj1w7GgnKQNoxbCtHE9p/iEU1Mtn9fc5+bAj/tzklKIhhyK1CXCaPcMzUw\n8BWXIYrGnBCEKsepgYNfDx1ThbKMCR/WJqZJ0bhu33RyAZ8qEVSFMzgoTOXR\nFH2JZoLyipM6mDnYO2b5wooN+aka2/nGPDJptV8dDfTjLMUxvoo9ukkLZVYF\nT4D2\r\n=KD5N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a58be34e1aa7134db36bb70903b6196fa4c7e6f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.16","@balena/jellyfish-metrics":"^1.0.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.36_1617248021959_0.36408394568501357","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.37-renovate-non-major-55528916ed2b1ddb75812194930255470918586e":{"name":"@balena/jellyfish-sync","version":"5.2.37-renovate-non-major-55528916ed2b1ddb75812194930255470918586e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.37-renovate-non-major-55528916ed2b1ddb75812194930255470918586e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"36086c1ac88123cc47b6b67b919ba078d32a2b64","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.37-renovate-non-major-55528916ed2b1ddb75812194930255470918586e.tgz","fileCount":24,"integrity":"sha512-1tmDax0hpZ4wP6QBwYahYX12+8Mg7xM9Z/CANCJNFyIYhfUo4+UZpcC3uE+1K+OIz39H6sRFcgvCUsq4EiLF1w==","signatures":[{"sig":"MEUCIEB04eFB2hsgXl8C1ZnBEU3QWgb4S4C7q7O5e8R8BE2mAiEAqIMDUmIx8+9UxmdYdmb2PnzxL/ozVPB9e94kxjq1rlM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZdGoCRA9TVsSAnZWagAAd0AP/Avotm74Xu5xeH03GRR6\nHG4nxAeP1DAtiBUv9OaXKKGA9igC5ipVeiTiHSZq/RC9zpbnJjIvii5R+6cd\nsTRBk+ahTQfgOEmm702zhdm38SH64Tp7cXVosx+nKwLW/L1Yq5Xb/Vb2wg8d\nAfjs1ES97raqRADAorP78zn7WRKOwZL+9iTfh64ZXWd8bHrpxsuIozh1xCL2\nFrtdngcBVAWbep/Pty6oDNiD6uq3U09w3SW/RHYMU5eII98GceNPguAlcojg\nglOmyWtmBw6axnGVP/VL28SG+0H+zLJR43TOanXs+2WOOvNGH1/D/5gD90y2\njU/K/BveYsIRc5JU9B8g2aHL0V8MQGPI089oxfriV4O7llgEPUvEwmwwIEBZ\nTOiSyQQb6QC03u5lHO27ACouvo3oXZ24KruAxfwzdpQebNnpfTY3kl8iTH4M\nvJpcUXUh9A7CKDfXpyZ/dWm5EHNsbYz+JGxNgxVfHQG/dyEl7lpM1fUv7JuB\nWDQUCAcw3fLUxa3OAZ53PYq9Bs59Ias6etmxU/vBoK2cvfcWokw6jm0Rv6LS\n1U6vK/wWr7NX4oXFgE/P58mxALoiKjPlep0SxkHgKHPcfJNmBG7qG+1OMmAw\njDTD4yj3lYTgsR0twrB1fKWySFE2dLPJAjs1veepsk25wtzdcexOzLRIzRrE\nKtxF\r\n=hT/u\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"55528916ed2b1ddb75812194930255470918586e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.23"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.37-renovate-non-major-55528916ed2b1ddb75812194930255470918586e_1617285543431_0.579481225801715","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.37":{"name":"@balena/jellyfish-sync","version":"5.2.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf015937533e93bef1ccc60d4ea8388e10f853b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.37.tgz","fileCount":24,"integrity":"sha512-RufG16SbuVa2al+groKnN2cd6cuhzjKLHGoEviQmWLaYixfmFQ4gASlq+GWwsRtV8hfq8Z0lEUvbN69fIiQ/1g==","signatures":[{"sig":"MEUCIQDN+wqGSPEUSv6w2qzAwA05M8vJ3kHor2RZvxRr0xYVDQIgOJD/HV+BwLpk0Atm34T/XlGjtdVgjC9XW09aPL+AgGc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZdJpCRA9TVsSAnZWagAAlWoP/1aHLs9wBObB3YtochE9\nWNn2qt/Bbxr2ft3QEWfHRSCNCNzmZNDmJO12P0oOxbFbIm/oAstGj6oD420s\nWPqbEL941YBABRcsR/c4emnDvh2r/qIHrjq4P7p55ZXj319TPcCgXpMvfoYP\nxD2GLXfbXOgrVkyKAblB3SW+dVM8PSozbJfCuoQWERYf4/BibhZilzbQiZaQ\n7tchlU4VflE0PdxO2s0vvHFZFWlMAGa3AHsC1xKnRDtfGaaG1Bk4XzkjCXTe\nEAtK/80vqeZ68dV9NghI4xwvm0wqcKMcYCJsx4XtUwLEARRLOpILHaTB6bRO\nOe0+Kp+iUckGZuubIQjL8FHckyC7xw4D5y3lNy1EkCoUmyu/Q8uTC7GYIS2X\nr2WZNzWSW9xWsqYp/pkoEL3NC9jPgchd7ywHzrz1PlomiVENxo28+XIYfluY\nBxLwDmbTW1J68nGA21Rrkjze2b9VczsBan+Uqmrn3AJe2fIDcVWzby3iVzfr\nckbO8mj0Pi+jHyTfTvQsyX7ghtCR29tgfXDs2Hi7Ywruby7WstP+7XbCm88P\n2kbSKybMHqrZjTdMuSJkCvZPTXtvMCaJCCs5yrBUnWEh0BbschOJZ3/KIHWG\nhV324zL0MqjpSy0tHtN9kiX9S0SuWCrPb0oOXGDypJq7GU65f0PCGcXulvqU\nsjps\r\n=xJ1H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b5b782590f80e35855c61598ffee687a62a58e10","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.23"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.37_1617285736790_0.5811598760550489","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.38-renovate-non-major-836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7":{"name":"@balena/jellyfish-sync","version":"5.2.38-renovate-non-major-836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.38-renovate-non-major-836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5be2833031b5fba91750f56bae2bdfa4519d5d6b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.38-renovate-non-major-836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7.tgz","fileCount":24,"integrity":"sha512-umTk+639uJK12SpWLHnl6CnZwYasmjKGRaKHbKPCtNGO2mZ+xm3bxI+3SkyXiJvG79QyVIZ4gwDUYNLkW4oVUw==","signatures":[{"sig":"MEYCIQC7mMQ8uyMcyae2Hq+iea3tk4UcfCMkjve7HIuantOCpQIhAPb7HVSpUoL37J7UbMTAlf28vnn0E3H2TZH4+STnHpLV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZdw3CRA9TVsSAnZWagAAH+QP/Rf1JkvBl9CQB3c3Obyy\nG0Sf7qI6mgDLBz9WBdZVi2C2WuHxajEZuoWCS8smgwlsWSdaFeG5c2N2cCdH\nNmo7yKAHrAhTVPAr2HWfQEMzX2vzmPzNP9/YgIWud0lepudCtd8TKh367VAJ\nDH66VmhJsc1iqV3JTCISLIeXjCBmVQlo0qzoThtm2KlesaueLm/rIwevg+UW\nMYDGRUj4CG6c8R5P+jVd25rSZKgXbmYFhWAxLJUyTnrDgRu4sEdou5TCKMu8\n7QjAUY0SiSyMvIK959GjA7aAJFckldO67gHk1eyZghkQ1La8spZxrLakF1bg\nug5LcdS96TLbbed5OJHHZHh4dLkWhLgC9YhDz1wXtauNshOWpVO77b4/R0dr\nFg5bHP9jLUfAK1yOUfsEflx4I7oY7dKoUMMwJ8dE6G/6M19NvCv0lQE1e0P5\nb7WTeZ3r9qw36igX4DSkhwOj8ikG0FhrMNdoA5uPs4Kr8/UzmlTfysiKpgsM\n0nQ9TFVbK4izq9lttnGUNd160bs8bmHxZH8Ylr84B+nRZOZsq1V+gtqYeJbb\nB2U3njfSUnhU8fgLaCHW5nkN/2v47Jfagt8JykOdPHXFHkAz4Ub/pCJWm0cR\nrIGvHYTzX83TB0rd9gvHrDPtV0hgyjsu0HnURyFIy6jmdethCmDpnY6lMw3Q\n/J4s\r\n=kfuA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.24"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.38-renovate-non-major-836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7_1617288246747_0.818130061343262","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.38":{"name":"@balena/jellyfish-sync","version":"5.2.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e25f77b79883cc747dc7c650f271a0936860ea1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.38.tgz","fileCount":24,"integrity":"sha512-ezQ+/1kFREjyBzXuYUIdkAKS6JWF5dNP3XNx+lIBvkOhdSRs1gi8nVaM6gmRHhB0OoNj0NsMKIGjMP/dKXHkpg==","signatures":[{"sig":"MEUCIQDDBhYIoSV2eUK/WWkEIzOk5QHF5jgdwjgPh4rh1YpAQwIgePclixTT0udG8DoxY0TdtkoWqU72TGuBH2r5B1gO7Wk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZd1ACRA9TVsSAnZWagAA+IkP/3yKQlmQQ2Cbf+Co0QR7\nswnoKY/QCqGqArWoRs2H1VgCq3e+mUMjKAHneCnBzcvqhQCOCPfhZpHNlNYy\n4e7jwk+pGLfmq8Ndl+zXWeH3LN0WG74+6BZK+4f8Z7gfl27u3uCXkjBhA8cH\nKrIXzQNtdiMZVkH0RbcalTiDo09yc2HlwTx/dseb6oRNBgpeD/uZwZOglGYK\nIECnzHjjGFn9sUti//eDH9cuhSxhBLrV1k4hzD82HDGTZOO2IP0DGpfSyJdq\nUD9jRbfHLE/lJ9gQjwfCk5kbqq/7/eLZqPVYVIcEsMStEyna+l67du8sts+M\nI83spZpsLD6YOuWE8eIp9cna9Qgulkx2n0yqBTXDWzWISPXPy5tmEKs0AL+O\nDoATKFBcJvrx/pUF1Pca0T4boeaI4LnJeG3sERzFZVpxq33SqmFl3BXwlKCf\n2L1fMlLqcRUVHVL7lBCCclzHlMWQKhKx57dk8+mi/WfhWvOQgCHPAcnsE7wL\nCwBEQMfCtUoUmVH2DJ5KZUCST4Z0O1w16P74H1AJ4aOS1f1uwvbDrOB3RCgA\nkgIep2lwgClkQU249+lK7mjt8GIrbaufLrWhhaf8DgBc4fD9uB80uaeSL424\nhG+oCToLkUhRYeZok549J0jKDa34dtqVOdzI8PeiusmOqEhBUCXaXKzy90Z4\n2vQg\r\n=6k1L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"728731f29c08e4dde06acae2587e9b35b758c506","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.24"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.38_1617288511605_0.6803546524132478","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.39-renovate-non-major-65a31aa10bba8dd60bdeab1f3bcbc25d288dc461":{"name":"@balena/jellyfish-sync","version":"5.2.39-renovate-non-major-65a31aa10bba8dd60bdeab1f3bcbc25d288dc461","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.39-renovate-non-major-65a31aa10bba8dd60bdeab1f3bcbc25d288dc461","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0a112fa60dd9668d7b8493baff2aef4ee86ad263","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.39-renovate-non-major-65a31aa10bba8dd60bdeab1f3bcbc25d288dc461.tgz","fileCount":24,"integrity":"sha512-vcpocE3Z/GRfCbOf8TSBvdx0D76Ith2FWtAt2o+1O7+EmNlIf9BYQvxilNSEffHvmQrfjWMfNuNehmul8ZnZvA==","signatures":[{"sig":"MEUCIQCy4Yleg/WthFDNT1J1h5IGWdbjJ3lgpW/9E5IdR04mywIgN82YQouXjJzgM2nLOJqZFpUbIHqnypGB8KEsm5nud60=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166566,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZmPACRA9TVsSAnZWagAAG5oP/0x1RjXLqbbhsMYws+xd\nT6q5lIjLFm28Ee8qX9S/h6W3j/Ap4wfPbvSdhe+8mj0fzctXoHc+mbjyL7Dg\nDH9NFN3C7gwk88fjbgFxfEE6NLU04PX6/V5wbQMo8d/hq0fFr4+/xSqddO6Z\nzNVuCsmJOSPGqWeD3Nenvm5KUSksbNwW7YbC6VFDU/B3JKtfR01ZQxrSVQWP\nJdHlq4ik6aiFMK9NOR7GdQJ9RncRgIZQg57qduOVQTIOAoaSjmVm8yFBOe0/\nkNbGHDrR3HCASWs0LiAWKBqr+Ri/M1buzWBjZ/ufP6FxsL3YrKxijsLB3CWG\nx4A7K89Wx28ZWJufCUAeMcrJAVhmYVrlFPfM+Q/CFSbiI6HEcMmNRTVDAbjY\n3sxgDdrsWI2jese3FyvqQodAKDJd8ZvDTxloKkt4VeE9FPtQKHZgYGEsCsCk\n9CAvf4Vl7D3R1Yz/6Xm0HfYfsOuG5v9KCpCixEuhelERk2yUrFYTsj0yTNKQ\n3OznTSRd2gHhUgZ7A4pguSEo89/C+De+rMWJ6YjphWUOIw4QwtEGrlFX4ct5\n/dLs7EWvMvPuoWyhDlmlq1q4boiL0kDH73C1oaSs+otbnAk4u8tjR1QRUQTx\n6W8oIAK8dEcKhufORW3I1AaKLHcElXoc/N3DkWtyIOy0Dzf1eWDLfeKoay9m\nnWij\r\n=QjQC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"65a31aa10bba8dd60bdeab1f3bcbc25d288dc461","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.25"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.39-renovate-non-major-65a31aa10bba8dd60bdeab1f3bcbc25d288dc461_1617322944160_0.6014953565155075","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.39":{"name":"@balena/jellyfish-sync","version":"5.2.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"48b678fdf120bba998671c51d9a474efdf61da4c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.39.tgz","fileCount":24,"integrity":"sha512-J5MyEuiAf+XZQObx+vEl5lEflt465+EelGV1r2gwpBlgc73SoG/QZkguOrZZMudHTbAeP+MtD4ytoaNxP1xang==","signatures":[{"sig":"MEYCIQDgiIfH7FtWjOKyLEFOBV+EuGJFFCQMjI0gO3vfEBVifwIhAPVuDfBx1oYew+2ZgBHs59kWQgcph87vMB7xsZwOe4x8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZmR4CRA9TVsSAnZWagAAMJEP/RWXBGA26y+c2tqFNnEo\nHjr+OqlJH3Jnl+hZVBx94X6IAMtNji8Hk/LWKIMUVPaJIypJ7wbRlwK/BTVQ\nTdo2RD5vi+7BO8Hwlc1Xd+dEu2Dx4ztPzXQVEpCwIjkxex4b4wafIUmARnsa\nyPg5S7/mhLGXaWb2lNaEzkb8yjBvH7EFrSKkNcWt/bwdmfrOFsFJ5hTwT+H3\nyAknzu7N1MAmTQgzva5rdER1sovxvbefeaLdn/3RLZunFM77q/d0vyxio7Mk\nqdKcY3syqU1A17i9f1sbLYkl0v2xuHHIjthscY6hELfqpjACcs6rzMk9574z\nkVAaF57A1VtLThIlckXM5+0uoXWU/ZI7ulJXD1Jq14Gnq60YM+Jg4p8BpTKz\nS1IArrc/WlFNcF9lkB4iIs+qARaR+aljVnpIXMMaNNCSHucrpwylGsxzRZ+a\n4fI2whmGqE2+gYKKnY2lLFUAuesVqTLI805hA5yWk9Zsiw+F9enMwf2S1p/l\nKxbvtKh6LHwXU3dvmMSxnuB7dDrcBFFvQXnZHdeN8Iu+HhU4YRQV537bQx2H\nV3cr3vMrHF6bIix7Z1t/RobZHfy+6rX1bjgX5ksB9JRENEHq7KoDB2uXqS7Y\nFKamxA11aKIfotRoKXiDIUilKc6YayNl3TMMWoH3DAGxX65eKWh82zGTI/Al\nZtEh\r\n=4hKa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"147279b091c0019301d3c6f487cc7dd1e764632e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.25"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.39_1617323128366_0.6276224126185899","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.40-renovate-non-major-0c2f648f714de42f5acf6854dc71e2e08084fcba":{"name":"@balena/jellyfish-sync","version":"5.2.40-renovate-non-major-0c2f648f714de42f5acf6854dc71e2e08084fcba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.40-renovate-non-major-0c2f648f714de42f5acf6854dc71e2e08084fcba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"57d665af8a878ad813669faaa2f2b11ea3892c2c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.40-renovate-non-major-0c2f648f714de42f5acf6854dc71e2e08084fcba.tgz","fileCount":24,"integrity":"sha512-CDbNl5yIPYXoLqUoIKt9xms2QFaC/ybPimaXAbUnRwx8nFnsQzPV95vhwgiSUKuISnDgJGvQc5fmh2oOXGXStw==","signatures":[{"sig":"MEUCIQD/2wDISb0EgkP1xNH9JAYrmwpBadLJUfPVMnz3H78ieQIgDCB4VEyCG7XcqwMn2/NysIcefyj0ywLs8E8cs0MQ7BY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166991,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZo0wCRA9TVsSAnZWagAAswYQAIV9oEUMr2M25ZImAYpz\nYiHI8kKi9lu3MvJCODJmdSTv8BB1rPkAI8xWqcolqfGPm7Ugz/OtzueRw0ct\nnUOmQmvilJVV9HJ1Hex5hc4yLSpT2dOGuMHjYzJ5CsiZ95tSXBJ1GemDy/A+\nHaqBTYjoW6wd37lTZf7xeucnxiaJCb2KLqz3Gfh0TAIGcgIbyOyxcptCIsR4\navbA6v5eBabuaHjy61RBnC8JnSt2ULTFMs+TLDBoJ/rjunMggWhocV+U5a7S\nHngTPSJyJ/ix6YRVmJSYslQ7vHYxcTxzH5a7uCdE3U2vM1Jxj0FQVPhKYUeF\notlOn572OM/rYfsKdTyXuALFacYquqvheTbAdq7u9hJtR+NuWpc+j5lJrN7h\nn+PG2yIrsY2+8iks5aXje9JIlefRyR3jzgoRSyM1YtysppugfbV6JPtcMQt5\nATFjffKtdRjW+Sqzt3j6vczTLITGc7u/iLdNu4FNu00wHBMft1PWvPwX60MC\n14XZ6s5m655MzEnHyc8wKqvy2za/5v2Az939C00GNTYU7v328DsmxUZrq/ie\nKXokZPlYgNqj53RsDShKIDLMVcHigzOcSUyIQTADiLbnZf8mrpHSRQTpPozZ\nbXAIjodK6kY3v1ugYuTsQsJDelUXRDJIUcvi0fdnE4ta7v782NR6xHyeXbj+\nxAm+\r\n=RyFv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0c2f648f714de42f5acf6854dc71e2e08084fcba","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.40-renovate-non-major-0c2f648f714de42f5acf6854dc71e2e08084fcba_1617333552215_0.38746224093259096","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.40":{"name":"@balena/jellyfish-sync","version":"5.2.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d740e2fbfa55a5cfe0857f0f94bf527ee0d6947b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.40.tgz","fileCount":24,"integrity":"sha512-j3PXDfwjCTEw2F0jpp1h8BWpIO7lndzC79HiPjeBi2EglD9/k9nMKXLGoYuEr4IRgyvLnqVoGCMvdPYSJQq2IQ==","signatures":[{"sig":"MEUCIQDr61yCVAbYzWNsN6h2ZTcY6OOGaHaD6xhXbjF1kJuJVgIgLcd5zMmmH+WcKXvM9fKNPPuZG62OMQmC9PgqaXpNyng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166931,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZo5cCRA9TVsSAnZWagAAilgQAJ6t9InY3JpDWuDokAt8\nrr+8pI4GKtPMnUiKNZYb0cuX9rzzJy60eLgiRO7fX8dzgxixSz8UuRXoxsuf\nL4OhK+OJNFjLyTxy5jBKoRUVjU1T1KG57CdrOi5AOLqCtotXtNQL93+sqGOv\nVZOoBjgU38qr4lXIDO7MPrrssioEQzbUYKSB3cXcXKkVYsAYldwil4GRwp0x\ntQZSJoKxfIpe2hoeELDHgabfMLYATQb5CMiuE1NZYcH3D+yHx5nx41Gb1u/Y\nXa7NYPKoZhr/1CIGhikUJVOjZuByPpEN9bx+jUaPivQhgcXj8eLscSRRQDV2\nhxl+WhxEaKKDVNtoshTej+FgVFFnxcUJB8gTf3+du6sW5FROnqFtY1d1AjC7\nAsMdBdSRHNeIro7cGhWvZvkOnCwQ2cbp73SjYIjIBC59e8kldlLrU2PaZUrV\ni97CoxUF0VtKe5SI7WgifOPeSeQz45fFbOAsN3+D5rqyPyqfgnHqfbUyZns0\nXp0hRuV7U8ww22VeQMTkwKCmY9mjx6sQXpmsHoQ+smzD0bSA7mHe3j77ovkC\n2hBvxpP420uWJgXWn8BuJebtbjG4wxYOS83g4FKoKq92o5ldVxXyku5d9bZ6\ng/ua8i34X8ROs0lN9obNO2TBmmUW85pda5ltoBrZOohtt5BtdRC3BwzIY+57\nJ6sg\r\n=Poqp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3aef040d7735ea5f80c80a89b9f6d5f1cc760e64","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.26"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.2.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.40_1617333851507_0.40577648789759313","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.41-renovate-non-major-5d335065a9fde44851b10d2413aa1e8fe269070c":{"name":"@balena/jellyfish-sync","version":"5.2.41-renovate-non-major-5d335065a9fde44851b10d2413aa1e8fe269070c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.41-renovate-non-major-5d335065a9fde44851b10d2413aa1e8fe269070c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9e26c5935c612b98098ac825e05bb80c20c5fa32","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.41-renovate-non-major-5d335065a9fde44851b10d2413aa1e8fe269070c.tgz","fileCount":24,"integrity":"sha512-WyBEflcGl8RizehFqkO2+mCpCLerNcPZe6AuS5rBo6vTwOqB5KHNadoJ4c8SyNQR3UtjoOwBhEvYV+4W2ss1aA==","signatures":[{"sig":"MEUCIQD+/RUlYd/rHD9dKopJL78jsw5PeqmmCCKEHMcE9U6UfgIgBzAtN9D/Xby5y5NruU5VwAjytzGtSI39c2a70YO7kHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ0apCRA9TVsSAnZWagAAKwcQAIAF9iTqcWzi5/Lc4Sgf\n1NQM37ImYfhHCUfmXnoYc4Ua9W9kzwypyI3B8BcjY10iPphFNyFwh3/j2KJw\nl28ey5zqvm0cAth8lEc+dw8TTg2lk9GrnxqFt/mdf1sDDjI6ZejJSzcR/Fo9\nyRepd5t+AiwJugDMAsKODNUDfrSVxx8dndrCEoKl8eBFbg9kLTBGI8jzBHeg\npWtqbsTjF9dd9OV2h8SXa26ZKkEzn0EOGiqqd36ho9KIYSIO5kYx2mHh9bZv\nIcfjLqjLgfWLSRv3Xqsb90aUxeIo0iYlak6TFjmZcd4OXEStmI6i8uR9t0pW\n9a3aCxuyaZdPZnCWLYoPXblEebvZspP/X0KR8zGX2nqFHe8vSE6JSe0B6c2l\ndCUIy32J1/HFwY87DIId2mijEsUp/X06O22u9Y6ozzNWiCl/qjK88vEr86XN\nm9QfWKlm6e8vET7X6zLBroKdeedmHHzMcWszS82wmMfoh+ccNzFD0sXqJOkL\nwYbTf7btKn67Zba+imSjLD+5l4HMEUzsrgKPRqLsn55I4kxC/GwqCVlF+HFa\nEQOVCDieeo/W3BK0DvQY1//I4u6Sh7iUrT/0gTtSAGPBf9bJoi4o9pynqvDa\nX8UpUlEiemVQ8rSWre7j9EbtLqtx/bZ7x1feMF6QWmN3O2CQOpK0/Q0CKFWH\ni5CW\r\n=NQ4i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5d335065a9fde44851b10d2413aa1e8fe269070c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.26"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.41-renovate-non-major-5d335065a9fde44851b10d2413aa1e8fe269070c_1617381032918_0.022513050910954124","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.41":{"name":"@balena/jellyfish-sync","version":"5.2.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e97fae647a458fd4d549a88e702c83a0ffa78762","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.41.tgz","fileCount":24,"integrity":"sha512-gKWDbAjHdGCcRmfojvMCZJ42iJ8OC08j6sZd/XL7rsiSpPXXqI2zherKsmSZUEWmDLXRbiQkvwFT1IjVD3Jqqg==","signatures":[{"sig":"MEQCICeztdh0vgQotPCKbfC2zkxVRHPsfPdV6AHeAeAYJI42AiA+ZmLyTIOdwZhnZ915Dlh7i3eUSqizLiK9iLntB14/BQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167336,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ0djCRA9TVsSAnZWagAACXoP/3nVOs4jQfcaMwCCox2z\nVj7alWx8VQkIIAZCAxZPVBm1OlECRANOOz/e8jNe8XbF2+vSh6QKNg1zoFGu\nEKuHI+uTCSNZpLM+ISLtY2bphq32lFFxxhNfRuRHSvloVj+L0W2a76YHE13E\nfM+jchBBSvJ+PT8rbZNf0QXjpNjkz86LEaRK7jkwQdYR38Sk7u260FtXEGbZ\n9T6SGVSNsmU7diCXI0QGMV1cwjwipfT3uUdH0zOpafQf6wWzV5XYJrU0DfNi\npfDLEuw1fyiydcBBsm/PysTTXYhbhlmGG83UzJA1457ik3dC/VV+h6YEBhck\nvTCUA285Ur6/8wKbVXIjRoPk+AkCydD69s2KfPc+DLZkPmml/WMFqaBIPUV5\n0c6r0jo0NZElj98WhY8nIVcCznyM3ZMoV4lbFDyyAMC3AywP/iz+GN+60gxp\nrKR9DynORlyaDCOnNzIdcfgsyPtYWbpiyOWbxPdqDMFwp1+qNexTtHAiqTpR\n6OpFIP5V6W14e43FcM+Zf85t6yU16wyN00hSZnU4dic0OjOliOrNClwm1WP2\nHyNnvrqLpSTEgurNgysIRbYnU4ULNPYBxz+8sgpY+2rpXXFHVXO+Wa3hMJ95\n+V/qFR8tor2Wtu28hpfUNbGETL5V/uK14O/d0UZa/MrON0gEM2R/SDoFZl7U\nVSBU\r\n=NfvU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0695c0ebc20390e61e8ef4325d204661d0130dc2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.17","@balena/jellyfish-metrics":"^1.0.26"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.41_1617381219206_0.04862426809508613","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.42-renovate-non-major-c44bf93c701b55f085ba07b2fe3272a1f892b943":{"name":"@balena/jellyfish-sync","version":"5.2.42-renovate-non-major-c44bf93c701b55f085ba07b2fe3272a1f892b943","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.42-renovate-non-major-c44bf93c701b55f085ba07b2fe3272a1f892b943","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fef8ae7ee532af10eeb03a8ac5c19856345c407e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.42-renovate-non-major-c44bf93c701b55f085ba07b2fe3272a1f892b943.tgz","fileCount":24,"integrity":"sha512-Gc8KCiodm80tbzS+6hHgZoqRxY4NyfqGqPpILlffJpuFHBdaym/laKz2pUEgJvFs8amaTB2B0470YM9Aq5JUhg==","signatures":[{"sig":"MEYCIQC8KmHmpSwCThwksiz6mCWCiSI4mXhAmPpaOSZrj4gs/AIhAIwRn7Brb+ELJmG7WaLTnR6wrVE+g9pOE/+oIvmdt1t7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167745,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ1s/CRA9TVsSAnZWagAAdZ8P/3/j5OAlW84hWrP1Ha16\nCQli4MJ3c+aKPAeFcf6EDoGIJv+cPVOs8ATuCqLO+HlV3K7yC2jfz4Wr1E1P\n+uZDZd6i9kJy3M7zu0t9S7so24dzlYKoFwTfQXfTOm8bFLP4vaOdEWk89w6w\n9UgbaPb0/7wJyCpLWT2A6gcCyOiCgCbWThNQ6lPlPhL/cuhlNTtMOrnMq7P0\n/6QndVX5bzux8HfUAtsldIzWu+C+4/SMqLmTyQcSGNtbZaGwkvdKnAG9qInN\nvaU7A93Y+pIcStlvxYQXTOeCEC19YXhy8LMsy+zVBybKf58iqlIzYGr8OBiv\nZ3jPuDj4u7YrnWk23SZaP0rACNprHSuwaZY+dhskiFxwIFaEhm4lVuJFmtCK\nGKxspMvl4TelTorzm63EJdqrsEKixr5LKuyYpovsYdwVVFpjZKWYEAs7nJGS\nk9+JXtMaY9Soiu3OAMYC1TibDiYAnTHrivzze6JKh3bYLquT2wkv80+yQJ0u\n5/WvfKno9QW0k0GHKpO93DEt9E/SB1FYIJRMTVrbpbdpTo2jeGNY69mfJp1p\nlMMOOEE3XR6wscJ9QcufKmX1kI+0U26RRC8J98gp4NR4TYubWQrvJPpRTM+k\nrmjtKeUmyjin4TbmPaLTf2mBzTjWqCXS2yAL2EXwu84FL3R9kFZIQmFOhlCA\nEyOq\r\n=PzVB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c44bf93c701b55f085ba07b2fe3272a1f892b943","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.18","@balena/jellyfish-metrics":"^1.0.27"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.42-renovate-non-major-c44bf93c701b55f085ba07b2fe3272a1f892b943_1617386302956_0.2113173205193275","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.42":{"name":"@balena/jellyfish-sync","version":"5.2.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"70d93ecb23eb970c9535606f732790c1df6214bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.42.tgz","fileCount":24,"integrity":"sha512-Nh6KC6wQ8ikRtcKaH80SnZPKgegEvxlDgR7/qi+5FBFlyQrPdakrG7IJoAhblOqBL9hqDNf7NoVM3YzWewRq6w==","signatures":[{"sig":"MEUCIQDnmoMs02psY7JUswbc11SgOK2O6eNCCSf/URhUXKuZ9QIgYNcKv5h9ZfoJkq5dC4D+agq2aVqMnRUE0f20LbX9pjQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ1v0CRA9TVsSAnZWagAAGoIQAIXZonUYbksHs3MAWOID\n2CeeujBh2yOPF9DFEUCHNsGnS3ppS96dGRtx1JBc+GR+s/WKELvY2XYEqYnI\nNZhZcdfrpLJAfJNqx2pfkbK3MXfQVNYVH/zPTQbrglXwnGmbsbZlK9bYfMn5\naXrnpEy653ZKTiOuEERH55o7C1s46J7Fda67qSCyezV/s1h7GaSxoGqm5uQm\n9Gfn/lNT6ACol9pAQmwLiSQuaat81NnZj8+cqGvir1U3CkHTjV6k+gOP30Kz\n8hBiXJv9JzgyTS5eZYv85OBQ/cTGCG/4hRzwew9kUfkrR3gKzBda5FhnZkNb\nlA3Tz4rhZEur1CQ80rj4NFmtw1kwwF2D5WL+wKcHWv4lHcFpHyVE8A6pQarF\ntaw/SxvwOOaz+xh/DwGLH4/smC3EETkRO4j3oKzk7ItFIz6gyj3lcAxFG0hy\nnKMDoJ8JWr+YxhnPsf8rJYMqZhocvssPJ1jY+/OYwFZ2oJ3R0oJk0Bwou3sQ\nuewTWS0NlAnP9bTpeWJd51H+EJuigVh9qgzv14PapA2Dox8PZinE66VQ5wGa\nTEsMezcb/6tf2BXZl770NX+WaHKwGVju373quU4Es8gciX3ExXierFMO/2rC\nNTZ4Wg1MwZCHJTbYD21W5iIZ7pcwg0nmtGVP/7VFRMdfheIUpRnYyjkbpfeS\n3i7C\r\n=9kHU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fdb078c56b26b0fded9c364e375b00f61c3be4fd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.18","@balena/jellyfish-metrics":"^1.0.27"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.0","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.42_1617386484194_0.4482499345083606","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.43-renovate-non-major-d2de487193c8c97123d1abf92ef0081e7d2d2d4b":{"name":"@balena/jellyfish-sync","version":"5.2.43-renovate-non-major-d2de487193c8c97123d1abf92ef0081e7d2d2d4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.43-renovate-non-major-d2de487193c8c97123d1abf92ef0081e7d2d2d4b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"766d047ccc25b0049e81de4672addd5bc8b188ce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.43-renovate-non-major-d2de487193c8c97123d1abf92ef0081e7d2d2d4b.tgz","fileCount":24,"integrity":"sha512-1A0WcmQTKOROu2oZO7JWpjgQDr6P3mMVvKF358nztp/RAhJwbgS6s8OnDYhL1SZyjJw+nUTrYRwrC3tn7COdWA==","signatures":[{"sig":"MEUCICFzvpDJsr5eW31VHbSpqHJFz6Wu3aw3YmmSOzdfAXAnAiEAhjMq9/QNwlduaqfA6XuP6gjTaUiW6kpJ4GfhP5FLzl4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ3o7CRA9TVsSAnZWagAAjIkP/33ycHF8JbG/1YH5wAdU\nbszNvf3ItqjgSp+Mrnx6INJRTPcJ5IfRfm5M81Ds/o9Vf8vUfid2q1RoCB9u\ny2Y6Mog9Ii++phxUyeZyLB633sSvAc9eVro5a2RSZi6zUeHrLz/IxNeiW5XS\nGNl9WTHE2vdT6a7p7cnwojbLeKxTo66GiQ6yHHIEcNCaQP2+bQJK+qfkyMab\nmrWnxD2Gvc7LLmOMBK1Z0ClZ06YoDzvMlwAtueSnI4FCeDVIa2AjTY19CEnZ\n4AVSoQ5eUmemRlKEnGfod4nqiEYnbaQ3PKQOSYEW76HntLHt7J5YqDFUEg1s\nBx36G6dJoqmWx050CWlUDpcMjY9HwGpMWAFeQoysq/xj30fAPcaVbUcm+W5Q\nuV08FtT5yPQ7lorPmkmOpA6KyMJ+ksAvNFG1DwosIbjaNtxumSzI8w6aBX8D\n9NE0322fZNnAhZUgsKSFsgDNeAWUshSFHIc3DHlmGZd5xyo6XN/ZjeJWo36L\nUdS0VilAb63PV+bUlIzeGkBCz6qbsoPHVpwwUFMEVOpC8XEE2ZSGYaHlD5KV\n23lBW5mZjaPQhvW0JX29lDabu+wVtVhjOt07G0ZA88AKXKhroX9sKr5cSpHU\nMHhcRuPRDUVCOtj7jtXea+75kO7iue8idVmSZCkb4vDtRKBQRjelkYDh0VkD\nR4gi\r\n=qruR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2de487193c8c97123d1abf92ef0081e7d2d2d4b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.18","@balena/jellyfish-metrics":"^1.0.28"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.43-renovate-non-major-d2de487193c8c97123d1abf92ef0081e7d2d2d4b_1617394234913_0.2875242017517099","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.43":{"name":"@balena/jellyfish-sync","version":"5.2.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5163a2f04dd7526b33a35b6c8859dd7241249342","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.43.tgz","fileCount":24,"integrity":"sha512-IRqcpejWzDF803hNd5WaxW7pXpp8df0f2rGSpheYcHqhlQBFhg3T5OJgR3DqtuEAJlD0teti24k14pOmm3oCZQ==","signatures":[{"sig":"MEUCIQCrhxe6eCwawG5ivZcSyb+iN5I4ZSYa7dk/UtKyEnzJJgIgDFtU3HVeMeKeCK2YnKglhTkijrU4/t2dchMrHxHUeoQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168034,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ3r0CRA9TVsSAnZWagAAML0P/AggW0f5QwTixKjStv3Q\nTWotr1NoJgqXZafSeD82u7ibqq15qkks6uuPI+Z9d3qD2qbxTOSwiJxwtrxq\nqiZ7UVn+y4x/ImnBlSY9SMbZBZN5iHEOeKoup/ER85ts0+J+xOa0Drp1jDoq\nupo8cvFM9/mxu9Wj8SZSn6TtbaNsuJ0mQ6d7QhfQbqWtK5KUqFm9rEP7AwZO\n+TDyM5WOOB8kgVeM2KtzlvGEYwO05rwFBFhfFVf/kLZfJ6SIiPD7c7gdvMr6\nLFtfMqEY3jSlhJ0t3SVYmPj5qJTdvmJxCPZSMWZv9qlStvA6jgT/1/DyagEm\ntYJ5E2NXztIotVPWifSejwmZdKafMiicyn/s/E48JFMK6rlpY41NG5xINSRD\n5QJ+EaYrISI73nuLITyVQK9mpWTR3JjIcp6e9DQad3ot+gdtG3AkGp+r77tO\nQDgAyolKcO9QB1Ri3VZYE6eShPwVGvv9NnzI6X10Ap09AFIhmkp0niL0DCXG\nAMm4uQLLQ4TtogB+PuHZ2G97XIRfddMJqvf/JdIdP4ubLtorzFVkv1atpZg5\n9nCbVrjDEKLvlJaDqi+y38H+GwzLj0Jd4XbdZ8FvNRLBNEkWVp4GsT2YvLJs\nHdGFDrA3BsvA6AP94XY+nRcE1UVCuTtsL/dCeg00qGgLoumGMHIzAAPvRB5N\nOmJ3\r\n=sI6Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4f7997668e9ca38d12652680bdebb3c6a4130669","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.3","@balena/jellyfish-logger":"2.1.18","@balena/jellyfish-metrics":"^1.0.28"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.43_1617394419843_0.42916337811660044","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.44-renovate-non-major-58fa35406e9a33c7782aac71cbf5a277bb34780a":{"name":"@balena/jellyfish-sync","version":"5.2.44-renovate-non-major-58fa35406e9a33c7782aac71cbf5a277bb34780a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.44-renovate-non-major-58fa35406e9a33c7782aac71cbf5a277bb34780a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9fd5e5e3f000969777a7b031d2bec2b535e413ad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.44-renovate-non-major-58fa35406e9a33c7782aac71cbf5a277bb34780a.tgz","fileCount":24,"integrity":"sha512-r9lVLCqJQvAzsXczrSjJ5s/cTaTiyn2RNVVj8LotZyhXkBYtJwcYcquUpTe14qJn2IoXj8BxNDJgvn5HoAUo9A==","signatures":[{"sig":"MEUCIF4Wln5TnZ3/HaqO7JEPPMlocbhnpqJptZtaW3rYesncAiEA+2o3nBpV5NmO5PiskyNNdG9qrVIEQZxHl2IH203wOyU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ5I7CRA9TVsSAnZWagAAXikQAIW/qDnL1u/vJp7WWUFO\nlur3e8RQRVNtoPttXqIPbWEhxaj6Be8xeH+QP6qav2IaO+5mmxADeDLyeLDV\nvYMGB17VBNG9VysYJPSROCZ7fDazaooBqynabqcl9FUEUKVX1LhaY7xw11hZ\ndDk+/jIvvDiIdrTLhViOvCI6cEK5OMDDbxIQF77vmMJ2V1iBf2seAQtMCfNA\nW8GhU2JxB7UNvnYgUq4UpeWB9QRONATmWj4YRqBKOvbE1KUk/E7i0N8hGmd3\nnbMDVmv6P4NOsoRPyWqgvHcSu5uW75djuANW5WTD9IKX8bhlJnIcFbdGhGTZ\nZOpMzqkGXXPN9oML/48NHMFLFmM7kv+Ap8iNYfym33mWWsN4Vas0qem0hJFx\nAuEooxq0BaVZQIf8CB1uam9Z5O02qYo5UiPxoANjIWhIWIBuGBBc77752H0x\ngUtEYXNykJvSfs219tzkcfqdyjFH74KILhOT7jM0CDCDwUyJ0zxBDIW6gdGd\nl/Qoe48PpSa9rBNflj5EJcVHES11HpD90b7DFzbOMqyvzKNEZHwTNuCPqzOG\nVZbqv94yuyGzHHarJ5GqFoBuahoy12PVqv9JHAohBeDJTXF00VxzGUhuv3oP\nGf174uMS4qfIKfxyGyjn8OBaJ5Pi7bvptPTA3AZ2SdMCLnj7OnGROwAbovOf\nS+Wg\r\n=Q/m/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"58fa35406e9a33c7782aac71cbf5a277bb34780a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.29"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.44-renovate-non-major-58fa35406e9a33c7782aac71cbf5a277bb34780a_1617400378582_0.38678082842413364","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.44":{"name":"@balena/jellyfish-sync","version":"5.2.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b84c97996e261a67d1bb654d68375c540d4892fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.44.tgz","fileCount":24,"integrity":"sha512-EC7zoN+n/owKtYZ2COZPFju0FrIYKMzpQ6l5Ng1+y5c2vdthg8ll6kI0HndU1VXz0hMDbAvUf7AWAM9rPuRJNA==","signatures":[{"sig":"MEUCIQDLhKhA83WBLlhu0DjNj9BrhxF8ZTmlVehgwmFRJ9mNKQIgOeF+yzrxVSqvIQIsFObIrZ/dAYSr+8PWSkL79YKDyMA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168383,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ5M+CRA9TVsSAnZWagAANYQQAKRdOkDde1at6MCWl5MA\npl8OijkLOm6ExTT9AuXlv4hw8mjg8RTZqjQHH6CSUkNfGtK8eU3kl7mfjIuS\njdDKFpUXlJZ4XY39WJUKrVnT6ul8BRRIWiQDqk4lbSzQyjGrxkqT96vdkvA/\n0hDJRBBW0N9RSsy/gKkY9M+9NGToMVybMDtkx+Ax5Tr9M3V0k286Z5ud8s/P\niDBcWwjqBN6LhSMWzqXaF1Cg9DphBmHqstPSm6UR2nIzD55rdBJvnWhhRAI2\n8MPh8k0BZgqZMYjygWksK4yKrpAIzFRe4tm19J41asg332tULf34AQWl1E+V\nGy3WdmyWQXWBwbi6RExFZpL7nHtwVHNH3pEgiruippdVzAhNM4NuH3b1uxZt\nTd2l/crgABtvDHYDk761tH7y37iYR2UMK9AyB1eeS3CxTGsQTStlQOC3R8kA\ntw5O/a8Kn7wh0d+QwP+340WL7tAzUZutEiVAjE+6pmRnDKPAyAGmHB/9FUOJ\nxsfHSIe2NKkA2I9v2TKjJUr2GvpkY+FbNC/YzLiJjXbANlfHSFgrDfvswgQB\nbTAweK0aXntAHFDBYRIfwNIyUCgGEqENvwySTfA0J0/+M8dBopYbTn11Utm1\nCm4tsKq4H6vYUCQwEsAS6o0DwE+fnreMDegQba4DjmYNNsR59raH93ocwn9P\n0E4K\r\n=aTr1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c770b70e34351aa6540c0b785d4b88c7d73a8f04","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.29"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.44_1617400637750_0.4700797330571278","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.45-renovate-non-major-a851237d16940c5f35d47e9e7eb22fbdbdb1afbe":{"name":"@balena/jellyfish-sync","version":"5.2.45-renovate-non-major-a851237d16940c5f35d47e9e7eb22fbdbdb1afbe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.45-renovate-non-major-a851237d16940c5f35d47e9e7eb22fbdbdb1afbe","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ff31ea965ed0f23372db80c45174d2e24f065b32","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.45-renovate-non-major-a851237d16940c5f35d47e9e7eb22fbdbdb1afbe.tgz","fileCount":24,"integrity":"sha512-MlmHyHOzfsoSewv3lNkQRBmgSXjvHl8pOfhfvnGeLTa9//w5NVRbJaGqcwbAQFei6VdsR6o83+9cRIQ+kuPwKQ==","signatures":[{"sig":"MEUCICJ4mm2O3MaYQj9O8J4XofsmMg6Cag89d8dNokquY7IoAiEA9MVXIc+8C5H3a1bHaEtjGcIO57OXPhAYFOLYtMkBWqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ6fTCRA9TVsSAnZWagAA7rwQAIIcfH+W+JMk+XAEgzM4\nHwcwCSxFXan1RG7RW7ifFezuRiWeQIXRUrgK7usS4UrU34WFCIlAtQunqHNu\npUm6nzp9HJdNcJOof8Zy76vpjKmCidq8nQcI8d6GZ89ESyWgAr7HQG0J0HzE\nkuExXk2IZgPsskCgiQMh2HaRsvu6KHFCo2ZEyZRNxqhWyMAmGvmXDtBvg+fq\n9WiAW/CmbqHYOWeVcu5QmsSTYSq0q4UDazQzNX9lVxqyyKbWreeGmQKtbN3I\n5GfSMa0WYEag07lmZT0DjbF0JT29rSig7ji4ZxwqFiLbk1cyEE1UJu4ZIMgb\nUsJs/4aDjtYxJT2pcTlDzi+4Ke03LMN0/rLzl+/LhwnuLfxtWQt/ZICVvtSE\no8IMVGR/1KN2P0igJlVVpSCdSQ/EbL6dHOXl/VtOE05NwSlQ/E41jkhyc83Z\naltbC8ljTEvmGFIWBSFPf5iDIHivgXhvqWwJJRHfoLgVE9pI3zfpAU0iKl09\n0plEfW89XwM8vtgnXmKen0RrO94udcxTH6q8kM5hPAZzUekO13DwZX9OBEMo\nvDPCZrwppjRYSqAJnadg+cJ/sKq3oerZJ2oxBThwTU4U7UIJtXXgBMx7lemz\nVVfbtwpyvo1zg+om14edgDKW+yuM4RwK0OG51KuVuPnsqRlgzTtQlFBdJrxf\n0sqL\r\n=0yKv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a851237d16940c5f35d47e9e7eb22fbdbdb1afbe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.30"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.45-renovate-non-major-a851237d16940c5f35d47e9e7eb22fbdbdb1afbe_1617405906799_0.6563012840309626","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.45":{"name":"@balena/jellyfish-sync","version":"5.2.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7cce89c006987d370b12a546914982557e02677c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.45.tgz","fileCount":24,"integrity":"sha512-HB1LFgQyp8BbjZajiQ5kGORZxFcn1cHRNHHiZafdtdn1OuhiwtANZ3V0kMuNXy0AIrco14VT0I5MW1hcsWKVGQ==","signatures":[{"sig":"MEQCIE3O7t9pk1ffppYU4HTrORAI/6yc7tCEKvXf7wET0C3RAiBuuHhMip4uNFm4OgPefnNAhWDr2UfTCG44pcq/h0Z4Iw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ6iTCRA9TVsSAnZWagAARIMP/1+p9HpE9MZAferVa78c\n2fLIeE8/5jji3dmlOw6n1CEkoipT5MlZHaqTIe5eMwgNPkg35wRGCXLUyrd3\nXNC2s1JB6wJ99Xmz4RLUb1SVczny/FGeswaX91IuxSC4sfBRSNRL7fDGGY23\nMsxyHFmMudjXT/0swj2JbAngO74FNTa9WXF8qdYgN8/v1I/nh5lqbOxbV+/k\neZ6FpiEn0BnR564wANwD69j6x0Bz3iveYRR7o+uJB++uvE2t23V4nxe3rd9l\npFrMu8Ea7fpJvV+NkP6FvkBXTqC2sWcbfnVJIEUJu1JGskYXgCIfMTq7g6QZ\n3owZitff8SppGIfgMh/S08fqWPLVlf8rOB3/uvtrpo4GTlXjwLwU/ej0pB2U\n5a1Go3xJishLesOg5pt5aOl6iQjKwT49PrRZIV3G0zUPmtpvP+W5RarSeUGT\nHSbx9sngVtt0dj2KKMXr1y+QG3MTsIVXnxDkqGh4q2MhZ7aQfolMQjWoDUWB\nXKap4b9jYUngKZWS8ReNVpc3fAu2/PjR6Jh9erXNKAu5wgcHtBiWVuJ7vfCT\ne+JtSF83qtVTQpx15V3NZ+ZhxWv42a4TmdbgMB3gjI14tR/QFs3lDyaTmQ93\nqxOAEkgk8NyIo1cCkwDcdiGs5BGYyuTvfLQlKOmC8SLkBCBJUJuYJhpgMAts\nXuqc\r\n=zXvo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9f469227e6052b555b0800e7b2101c1c284498f7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.30"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.45_1617406099147_0.4347887571452629","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.46-renovate-non-major-b7bbab1079b860199af102ef515de733c7f60d41":{"name":"@balena/jellyfish-sync","version":"5.2.46-renovate-non-major-b7bbab1079b860199af102ef515de733c7f60d41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.46-renovate-non-major-b7bbab1079b860199af102ef515de733c7f60d41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5edee1e7a9c45f24267cb231fc859959fb63cd46","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.46-renovate-non-major-b7bbab1079b860199af102ef515de733c7f60d41.tgz","fileCount":24,"integrity":"sha512-a343tYcPNdrAfing7kiz5lekhQMCCjQmdjGe2bT4pVIKMU5YST6HJM01Z2Kw85SWHJxTfnlmIVXU9cBkCAeCWg==","signatures":[{"sig":"MEUCIQChFRzYyC/SJpUpim/W+nXvJULfvBtf1z6aIOiUnNkIvwIgNTYIUMBW0Ysu0i1IF8u0g30obnrrXAr6kOLtm/LI5fU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ7qqCRA9TVsSAnZWagAADhEP/A/cKsTRCaY+d1cTUoBJ\ns2F1VfmGueDvis7i7Es9gCFpnq0cjrBeVtmLlrNLmvPa6L0sr6Ptke8N/qIk\nqVP0vQOcy3/n3LblyJe05KnbfUElTQgUMKe4SGBV8pODG0twI6xK7Dd+c/bj\nSSFNasoEIe2YwwWnGrpwjYSdwEKDdad8u/oU7EP7kcHaonCD2BVYhyOMw66K\nlbNhcVqdNlV93NvzSLNrFOzUPUl6ifiIds7bK8aFiZUMdSRr6OzoMCXVa34X\nsLvAjQ3wK42iiZTAdw0ZBvOi5PcKk7o5OyDjI2mrnbkXdjOSWtuLiuxdxY2B\n3F6KHzBq6qrYTznI7G5nuSsjbhL7tNH2efPMetvnsobHk+kBQeEXO6QzeUs8\nsgNxbNbNrWnTpuL07y76Kw7+ltW8QpjTRpFS2tOTjpFGs3AqAa23qRHGzdN7\nbW6FzpBtfQnGCQkvqLbq8iPRvW6G1r2wPmqrP0KUtZ5qBSJ5zo6WL+bK7hLK\nr9Ym7u0MYVmnvEbEawP1qlZZTs4o392RiHUN5TEewt2xcbh17aKa7TZKPJQt\noBmwIMRjyPc0JMAfzT1klNkGfVOg0YWsH19cYK4Imiy1C497YTrz7HaIRogE\nJ8IzThOGFwAmJ49ndtXUg2ZXePHjTenhwAx00ib8Le4I/ucAVACgGuhR4d/O\nu4yI\r\n=wzia\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b7bbab1079b860199af102ef515de733c7f60d41","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.31"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.46-renovate-non-major-b7bbab1079b860199af102ef515de733c7f60d41_1617410729624_0.8426297303414585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.46":{"name":"@balena/jellyfish-sync","version":"5.2.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.46","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ff1759204ce45888f38bb56849f40c0eb225a57b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.46.tgz","fileCount":24,"integrity":"sha512-e+Gsa5aR7I3PofdPaemEilX95oJFDWqGldofxLn0QhyOmuvIXxqNjV+mpVNJO1HgeK+exb80a9FsHyxcsOl67A==","signatures":[{"sig":"MEUCIQDqYH8aAyLTxiQqWY+nm1Ywxl3bhITTFw5hGdQQ/MXe5gIgMo50K7wdveY3ZkCAOtVjElVPSThcm/SueG3fqabK9c0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ7tnCRA9TVsSAnZWagAAyhoQAJwVgy42KodiXpZF9iX/\nhINLV3g4HJAT0G/Imn/itTrRQ8L9Lpe2NvrnN9fGLSmi0/Gn1DI5XrLtLhGD\nqVtP/OMM8lAwAVBJUuQD3JA064Kye4Ncr29K7cmC9/jjcca1jodfDAzOEcRw\n2lGPVZuehyTJOdS6SI/uNi9nuVqV9fyfsFmjV9dj+UcS95ej3IPNF6081oJL\nOo3Xzp5CssEQpopM+Txa07U8apZdHmg6EM6P0Tal9JQ+i31rlSNEPvia9KV1\n8gp+WRU6bbWaqer86YNHUnLW4vssVIimhdL1TWVcGko6znMTo/p5MYUbn0wz\npqDeoIgp7kVW7NzloOm/NdVud4bwFhhKyVNFYecXZ9DvLs7qSUgHAOny6tyK\n/FMxCBaASHMqBDkQU+RFUlKjpr2z0Ct4ADlf8W/nuIcQzR8EwF35VMxxMD1q\nLk5ryWEIFgTpLRCcPDEfhwNmd6bVNho36HdT4uKw0nXUCZF+asx24kw4EqZ8\nrZzJUjl7VHXV2bFx0iVXZoiJ66/Kr4dq17WxuqkMVL3NIwjYCdpKqEnguDpw\n9K9Vdt+qjJ0mp9x7DNoCp/5jHdBvFzObM4m4xJPN4gXbTAVcNqU+joY5EBbP\n0B7MnMrard0ACzBkvbRoCRPCwPxxz4bfUJoBXpoiYBDNl45zG+WOPbjaRYbP\nEAyu\r\n=ESgw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f577e0255a4246b37f98568784a0bfb1100f27b5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.31"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.46_1617410918748_0.22713499891082534","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.47-renovate-non-major-731583920435c74d394747c38bec7497a5e6c331":{"name":"@balena/jellyfish-sync","version":"5.2.47-renovate-non-major-731583920435c74d394747c38bec7497a5e6c331","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.47-renovate-non-major-731583920435c74d394747c38bec7497a5e6c331","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bb7f34b257b216141b45a78321c6b48cb2beeb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.47-renovate-non-major-731583920435c74d394747c38bec7497a5e6c331.tgz","fileCount":24,"integrity":"sha512-QwplPnZHhMpCVaa7LrMGah+s7jBq/Hfv1J3YUfqHhqLyzxEe/OhGOvCAMtyhj0L440CoyRhUQp3fdyWb9d0wtw==","signatures":[{"sig":"MEYCIQCaJjU49dksizA0U31SliFaj97Fmqjx5DKUm/ia9iNpqgIhAKTSLTknNfvTr7TSIIRV14yh+RqC01alOEjePQRhHe1Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ8+lCRA9TVsSAnZWagAAK/sP/0GRB1dZOgH+cmC8MXno\nnBxrW0G2Ul+cyXzQ2rStP+lUs4Y+ErU7wD3R3qc5xk0Mx7it37rk1d84hE2+\nSIvtPfqPPGIPQsISXw3IhKdlhvK9QajUIizElSeI8VYt2qqG5bl7cUuQ6cle\nOA5DuWBRSuy8TZzckZif9NyUs8DjPBh3LEiIoIFexJEaJ9rbMTnnFU1c3isR\na6Wd2smYy5L3WAQaRRa3stEebjHYfyshNo3Ul8KFjH88lbccnAVYu1opg1Kw\nZBm3RkqfopBRdMx9xEtcyz7Wupk/bqhaoFvrEZuRAY0kfuuYxLCS4W+Ms/7q\nps/PkvoFaXG6b8ScYJIu3FFQ5l2cbbQLgWvBxJgHN6gqId8uE/aNaKC1avzq\n7WdxxID9XDgUM+uC7n8W63HoaVJATNRBbog2S7+2LLawf8nNIMHyPlSq26Zl\nmj8bZy4dCKErURcCW2gsfCSME48PnFqL01NwZ1731Mu7KXJ7/xs9DZsIOhHI\nmlAWOCSGs8socGs4C7TFPtQ7qnmn+nocX/95g17EbTC88iiT5GHgO4rZBzQr\nEpLElbmnkmpgt/rkGPI91/WLevV7sqDWetnaEUzV2OpKeEaJL134bQMiaJEK\nG9F2jXlzGh8U0lfktfP/Yfj+osjnhj0CLhFGBlUyGxu5Fx00dW+dFCPeHTtC\nTTkB\r\n=fkJ6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"731583920435c74d394747c38bec7497a5e6c331","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.32"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.47-renovate-non-major-731583920435c74d394747c38bec7497a5e6c331_1617416101002_0.25166003899830924","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.47":{"name":"@balena/jellyfish-sync","version":"5.2.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dae8cd429a42a49f7cf81fba866feec13837958c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.47.tgz","fileCount":24,"integrity":"sha512-94rkBcUcQtVD2kT6VQQO2aazdx3WQoJKdzykI9kM2JDYCuECV8LZRE/9FQBte3B35lo4Wrf0VQkQ6FmUP7ttEw==","signatures":[{"sig":"MEQCIGKY441leSsJdeqZl8NRXNkahOtv717O4l0k92cbg4i5AiBvJEoGhN/sBgAVJ4gy+UVDYUOPrEJlXQZ2eV+3mU8kew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZ9BqCRA9TVsSAnZWagAAsY0P/iaIKhvYZ8fYOb2B/IH1\ntf3CPDAuaPRsHDNzldnQV4kZPHdlytBYdatqjucaOhV8oj+ztEtIZF8psVSC\na7BRIvbkB1GLAadsp6eqC+QumqJl+2GWOTtwQHOyg1rVnyX1b7cLARptwKEk\nN7++mfyiyiRfL8a88NJMXcPDinMv4C4fN4XjY8qWHQ1tLq3WHn/odPBTXv8j\n8pe8VgHwSDd2T5RKC0FpkOPfLaoVuii79NsNZqJtNVbxO76EiwXYcLU/CwAz\nSRCmq+X0JrNWxh9MfsF/Q4HYSzzBcZLjKv+U7xRfXuyyXMg+pkD7agXz8Z+I\nt0uaH/QsHKMOA6mWeGhVqNAMxeU2KPPq1EKsQ68Yr3UJFFoq5XhaBlz3D3xQ\nz1cRjGvAjuQNqAQSVTyoPFTP5hDAQYWdhiAXa0TwN7nMSzV35SB7pm53Hlyo\nz856/Dww0BfS9tkuYoyApaoGJA5xMRswyD5qUTxpcgjUji3G1kW7eZ6lN57s\nYG0LCunAldquuI9G+5TCkyc88SVu3O2tZWvYBssFi04u+wE6n78lje1ICb6J\nBvqY1rYQa2JgPDuVRtSgkH7nbiLiorRiQdWq+Hf5d6bJMvyxUT6cNiedyw0k\nf2gU+zzoliAI3bWZ5Xkkrc8GVeOmr764Pu2yDXYse7/RvO+Dywm6LJ8ACz0w\nliyJ\r\n=woTZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fc0daa727a5401ae2e2c6fa4f15aa4c9ac1b62cd","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.4","@balena/jellyfish-logger":"2.1.19","@balena/jellyfish-metrics":"^1.0.32"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.47_1617416297496_0.7048516929830089","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.48-renovate-non-major-1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8":{"name":"@balena/jellyfish-sync","version":"5.2.48-renovate-non-major-1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.48-renovate-non-major-1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dbe9330defbbfc8a335f4c96d85fedd3e04e23d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.48-renovate-non-major-1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8.tgz","fileCount":24,"integrity":"sha512-Iv145scYjA3I9C5cm9nrhx8IO6GW5l3GVsAOZKQJnay+TtyXa7EFBa9v+l3CxCP2xDIjZUILtD0HHR7inzTNvw==","signatures":[{"sig":"MEUCIQCiB3HKTAS2Q/m8rNHLTmtKH/JxvCIdFe9zI3eGonb7uwIgd5TR5Q3lwxAddKaGG/maFmA5KZa4s8XgMIhNz51skeI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaRUGCRA9TVsSAnZWagAAE1oP/R2MrGLhzKDexa3LPr2O\n9Ac/tL4erBQfDHeg8ftcAIWifbxH9QckEQO+xvo9SBoTCycNEZfeyev3VKmE\nYy3wQxX5NyLwQ4BvYgFpnaLEyakqz/DDqq3b+UOaLKsm7iuO3Mqfwrd+i1/F\nKeJVg9EA2EtD0kWacZsgekaGazyl+dCdZY1nPEAKgzphrtslCFuGfYZXK/nh\nZUC0sfoxYFnreZI2FSsFichp17WqbgUMetvoMpCzjr3it9/o55GplY8n9Scw\n3wHSzU8iBUAXvu0hsDsApOwQXAGwSGnArmCEhYFTaBrpIvD1rEGFV8ipel9y\n7w00A8mmgscrgGGNJzSnmTqsosV6lYQkWNeDkslGTSmyQmpb0SnA+lVnzdhW\nSckdyL+0AIF2AZFkN2BDB1q97e4ur4MCMiTFPrKrssTCvYYBnMrQ62XA93Bl\nkHyQJCwaacyMES7GsVOZbU7ApuFUzcfzd+vkyUTH8X6FLGvtE3maTnXUJGQ9\nXBV5/5ea5cxP7nPGyhnVbkGkWlUXURwyjaL+xO5qv/hBqdZ4/W/QWKUtivf3\nq8tS29weuBHwYz47PZAAkZM1cb/6suE1oqvPdu+E0hn/MirouG3ddwcxuaJy\neFN9a0bCo0X00jJx0oCdgLFDgc7D14GA0UGqfPdkZVZCY9MmR9fBYORU199/\nNW5p\r\n=XdlQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.21","@balena/jellyfish-metrics":"^1.0.34"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.48-renovate-non-major-1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8_1617499397650_0.6731077178576241","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.48":{"name":"@balena/jellyfish-sync","version":"5.2.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"52187cd94b65ba75f88071d19bcf0d79226757cf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.48.tgz","fileCount":24,"integrity":"sha512-hWIu7e7ZpIL7XYO/deJpJmtPti3aew/sVTB4op7DjalBJggq6fcfPn7UKeLTwl4uBYijUCVJWqL47gtfFIm2gw==","signatures":[{"sig":"MEQCIB6BJmsFv0L8c6wgk/nnctYp6ul6auHB4ODMN7WCfOokAiBRXA5Ep9ohHsx4PRcodtjGrJ1tsfS5mPZ2atV7vZsTsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170007,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaRXBCRA9TVsSAnZWagAAah0P/AltD7fKcHhJkX9O7Uwu\nWvONCVWWQ+n5uU8rZDamwHnEXHfUNmSCO7+UISKj6bmHujELrmr7UXaMK/is\naPHsYLYwpc8aRiCw1bp5ApxS02CzLKwjnJHouLdGQmoDAYuX6GWSX480Jscs\nBZmRjDS/VD6k8jQEymWgYmm5u29LBxLtzwUdreVV4kPOZcEYf9Rm6o571NWB\ncM7DWXQ3vUFXRZ9iiivEeRctjB36Ek2HvflTJGNR9R51g9XQJCfaaqbz2/wo\nsbD3bIrS72qfqD4KVzbO9e1Xz5spgrJFibWKEe9lucEmOAjPT5k2/i9eWVd0\nyPQmXkDVYakUyCiRXFTisod4o4iLrMEVRe1xhJ7fbHHhrkCudv650M6UhutV\n+fGiKy0mpkkfTdrtFRXlXlh9B1BDO4+t807eGPFaO3XdDr03+8BFZwGW5ebs\nV3EEW1MPWcbqCkxYF0rVy2oY3JQIsrBtpa7lAKTdSBwxpP7YcRCM+cHkvZw0\naULeiYSEWhlCsrpgD5+B51zzLln6W1/pIe5p+OUF2t6JQpWy/EhEAph/9uVB\ntUlbSTg6gY0Ttwe0J3fBPZeUbyRCGwD7o+X23OB4dpVrv3WBI/2uGzB3ljqD\nsq9O4J3gy/jFJWkiKv+IWpkvEmYHB0F5hWVXbTKr0lGNa21/8/d+TQ5beGNe\n/WKV\r\n=ExVe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9d29c601fc19b6ef0945cbf4ad5eb0095fd2a3e7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.21","@balena/jellyfish-metrics":"^1.0.34"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.48_1617499585113_0.12742420328422877","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.49-renovate-non-major-54b2f075a91137a51bf4a9695d7f56dde2c6929e":{"name":"@balena/jellyfish-sync","version":"5.2.49-renovate-non-major-54b2f075a91137a51bf4a9695d7f56dde2c6929e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.49-renovate-non-major-54b2f075a91137a51bf4a9695d7f56dde2c6929e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22ce2ea16983ce7db29a28972a5dbf848f1e0019","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.49-renovate-non-major-54b2f075a91137a51bf4a9695d7f56dde2c6929e.tgz","fileCount":24,"integrity":"sha512-FL/FG6V+usSnycBDsMgkjTKGdAhqQuLUMcJMliyGunMitRHvQO5JFV0sFfRk8IF+onT7qI7T51ujXOAzfDd9cg==","signatures":[{"sig":"MEYCIQCH0h6gSLnS7IYKstegIDrpl8wk46aDIz7HVtEMUmiVagIhAIq8erNLkVcxOpdOvc5J7/hc5AHHIMeQv+FZp8ZDJEcF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaSr2CRA9TVsSAnZWagAAsMwP/Rjssx92A36Q4YIgMNZ1\ny/czmvK7dxn8riiT5Bm1yFxgcEMBg7AD/1GmzudeCWcYwcLN+Vn72cMGxg5Y\nKmtdJxQ1kjjzHMJ/o4uS1qHh5NWMkFz46dUE3hv6ezHtSVqW2HFLEkSrOm1w\nw7WakowmmqzuUArfKmbubuugFCz0kR9NVLju87WVxhz6v5hdEaiVfUP10nBE\nHuKtHRzg2zM1brtPoQB9j2BG38uhlaq7WEzFMeo2iboRXr2lGSAOIEbC3+WH\nKy8TAvOUq8u50HWU3QFTot6cgcx0lH4dwdvFzK/fTACFCIjmMlPMu4j0FrXD\nxDDxbwDc3egwNdqdAGokIIRt8dYm4SojSrmi+0mQd8Jnf5Rj+4m7qTme5OQh\nk1M/eSGjvkHW1fXiG/ZGiWBPDxdQoapON+W4W5/m5b4rjCGVHrGfqV/w4OGR\nq8z2lbIh6ziNy5lm5dupkevsGm9fVf8NUi6KpFhTxRKXPcDD8BH3DE/MuPvh\nG14PnQx9rtNOH37qw9G402uyauxDo5Pc+joAMLBhQWx4vlb5XqXwNx17dVxM\nGgrhB0WTEcfbEaTUP7nkeOKVHEoXmhWa7yWZMCzlJxlo30R1a2gijV31CVLH\nP/SPMugZ0x8xBnOfYeLj5i58/8D0glbsyHEW68Oio7TAd9uVEpRYWBoBr/kO\n4n/D\r\n=a9bT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"54b2f075a91137a51bf4a9695d7f56dde2c6929e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.35"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.49-renovate-non-major-54b2f075a91137a51bf4a9695d7f56dde2c6929e_1617505014341_0.18694411914498876","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.49":{"name":"@balena/jellyfish-sync","version":"5.2.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a29a18961fb1c1b95f1b054cf7f0c36d23677177","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.49.tgz","fileCount":24,"integrity":"sha512-QwuTG3sN/CDbnXfxz0ePHaw7AmNqWjc2zqhqaa8A+u9caK1z898B8qkqQKm2vN/c73eiYR5DP4mjLYNnmPv16Q==","signatures":[{"sig":"MEQCIAggvS+gHkfe0fRHiLQhmYVqA2QpKR7XvwCVcQGBWFGyAiAEpvhIE66480pHLmU80abpFNIt8vzS5Y3y8GXZ4rJ4cg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaSvHCRA9TVsSAnZWagAADqgQAJ1M5zfrQXfd5wjOTGpS\nZ0Y/O48WG9MukPFsANyv8gkbdI0WyXZif+7gLQ3SwjR1tQCKaOxhlhL2xe5u\ne36Q0oawQ5dEUHGxlAw/T7Si0xu3OyAHbpIhCvUICJPN/KOCvDV432bzik5h\ngbm15RbP6dXWyTlqP2KzjMDucffdcRexDippoK0b8CE57OkLm19wxZ6XdR/z\nnKh5TOwKImnlETUtOA00AbRail16L+lJhk00zb43iFBXZ519xgt/ylsYqjD8\nC1NbyWlrpTR98CZqFs96EgGDVokyqP7f+d0hWG5HTIBuaHBCbQRPYcUWxYYd\nXNefqWO/Eig1apsyWeUYn+t3pFWjHatl2VE0T38zoXvpyXGx6qY1ftgr6Gxa\n73hxAgDL+XEaNexbqx7VlnKwXLmlBZKneBoNMLP+WO/xygTykVO0gLZw4u6A\nnOA8TqEREtL25ItaUrlFJMeU3jIXwXQtEgdHfOR0YYTgxDuRrdLvkFMzI9xQ\nabLIuWx/hj86w5PyvkYo3hd5E5KGUPWFdKllCVqLTyJ+5nL2tDTkE0PVD8Ec\nWpPCE9mZIT2L6Fi87pBrURMJi0n8GMAgwGNNr7wR0jxZU4PD2gzvr128wM0u\nW0tGjA2z4m+7G9Kp/Jf3Bsa5ygOwmQ03Ul5ggvpM06NthWEi55/+LQoc0tmT\nAc+1\r\n=h0I0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e6b1246359da20e420ab64d73f2963b45a724bf7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.35"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.49_1617505223087_0.817645841513688","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.50-renovate-non-major-091ddc53154250e70df0fbbd0bd3e9a2db648ef7":{"name":"@balena/jellyfish-sync","version":"5.2.50-renovate-non-major-091ddc53154250e70df0fbbd0bd3e9a2db648ef7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.50-renovate-non-major-091ddc53154250e70df0fbbd0bd3e9a2db648ef7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4c66a8d54aceb7964881d686f61e563aa12ac28f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.50-renovate-non-major-091ddc53154250e70df0fbbd0bd3e9a2db648ef7.tgz","fileCount":24,"integrity":"sha512-lDvcWB6kH4nbNq/8QdLDrmEA8QnIxdzd6B0+R/5C2pzk4/xOIPHzL8W++a64ST2OVd+FCFtlovAWs3JutjiNpg==","signatures":[{"sig":"MEQCIE6ihp5tav2uUx1R2odgsSbbZSH0HxfaLp8nrT25K6DkAiAVmBg9KQYVF7BvMdHAOYCdTIacxFKlPrYC5nuQATfnhw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaTvaCRA9TVsSAnZWagAAu34QAJPdXxCBdKk2kzbaG088\ns591DLVFdGof2eCyx4ai7ABiwpNwUIUAF5qne/R/zo+kN0dH9MYRK2ZIlssT\nVSM4wE0+3hLe2ElGP5rNeI3DdLoG9tjF6H0zivVvNZSkFX1fp5iww1uCjOdj\nwUIkDiJqjbmtjacx9bw+eQOxyKOsBde5Aa7O/dgTHaAjvYc+o94sfZ+yHX0u\nA7vLhTCwxuqq5MXY/LhxyeQ815ItJ8I8afIyut/9YFM+ec5r6FRhDdvtbPQO\n9xlspTMQuZkB0vf2l0AylMvcsHY7jpqag9v6PSqhYOPBaEmGh1Y+O7iEaaBq\nGkdJH/1KRfRPOc9qCy6yjdW9XHI1aW1CKN0wzJ9hATQBV1MxpLl45aRzBSuq\nA7jHI/Sv7H9x7gAEDZ9BvoqEffShEy47O8T3Xlo7HNpikQYdhCpPuMTLvmwo\nj4rJJ6Os8AsUdE9utH2Jd/XO+3L++3O4AhZW701Z9U4Ym6fH7SnANXpr246Z\nLRox6iLYMyprs1uWzt14GD4YrAj2EL5beNSqEsaTpHd4uvAG2kg5hyAeD2o2\ntCEFgJOo/KZwxtHynX83F6A04asNI7i3peRJ474JIMa+AcxNZ+nduStwLei+\nDcBZqIFjCIf2mxRsrySLDsLQvMAp4b7OeD9eY/6xDtLqqJyyifc1OjbeTySe\nQ1I0\r\n=kXUl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"091ddc53154250e70df0fbbd0bd3e9a2db648ef7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.36"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.50-renovate-non-major-091ddc53154250e70df0fbbd0bd3e9a2db648ef7_1617509338376_0.9363867915751036","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.50":{"name":"@balena/jellyfish-sync","version":"5.2.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.50","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5100755b35aed8b9748a1c831a50f9f283d9e54","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.50.tgz","fileCount":24,"integrity":"sha512-uSYJhGBnp5Es/I7McMPGmB3rUGKG2NtXvEEhPJoeustZuJYFv8tve5Ezoiu62wrX2RPTpdVKxdy+azNMsck+0Q==","signatures":[{"sig":"MEUCIQDxpd3SZu39LPibHPfrJEPZvVf9toz25t7l8XeWqmd76wIgTYV46cu/wOH3LjdVa0eOJ16fTXiwgM3cIWX0Jx1Vo2I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaTyWCRA9TVsSAnZWagAAZ3sP/2/GHZcvyRHU+CKn0Y1u\n9XyIYq0Av11NJmgCcoBbDaF1LpqcVY2u5tPzx8BnXGHu4jlQbg0gEXcSA1C7\nKTJvhzvefEbg0jfm5W7q84OQxB+WZgaaxNdk6Nd4O+j5X/riP0cc/82CdQbo\nMtTz4Up6DuAJnKBBvP0SvzVhotEcMJB/rPSb4eo9RlNV0msiVNEaKx7iLF80\nxoG+UXI6T9594qNpSq6c1PU8w4UFJ44Xazjfkx+2mQ4sHpXBQ5Pe+5+vE5Xa\n0WLoHUje0tBemxIVRFAT3F6GsadhFbHGSeeYHpcsUQI3QmXhdGFx12KjRHvd\nxgmHvjmIPtvlQrznTWkKJE2YygZO4jGD9PmdwVh3WBbTEKufH2d3Mb31TJKI\nxy+oapGpqHsDQva/vybRYGXSU1D8WBfBmTqw3Yh9Zy+glHqsayjeAUi/LQgZ\nhUw64XSE/VthBZpTNpDYqSPkG9N4fyhrxiWfem5K2z/b7lS4AVLQbVRjL3lI\nrtqXNq1Yd+OVg8knPiuclyJiKjQfcRfjSVyW/y11yHYEi2KJIB4L3s+U+bj9\n3a0Jx61rpPTwlm6pZiylHyKBYpxhIgmHELcEaZYTFzsDcHFMC+wFEVsPtbIp\n3eUodwXgj78Ax/y0X2w8PmrW0xqrLTz2mCpaiLMKgr+8lodLYXh5yxQ7DHt3\nwBhy\r\n=Iowc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"90fa24eea1994b4d717799be02e2beb8d108e7bc","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.36"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.50_1617509525751_0.15174719585772234","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.51-renovate-non-major-fc44f347a2719b7dff842504a1b9a7005a17d702":{"name":"@balena/jellyfish-sync","version":"5.2.51-renovate-non-major-fc44f347a2719b7dff842504a1b9a7005a17d702","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.51-renovate-non-major-fc44f347a2719b7dff842504a1b9a7005a17d702","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"884a26bc48349b3fa8b2313e0ab6b2fbbf1fd457","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.51-renovate-non-major-fc44f347a2719b7dff842504a1b9a7005a17d702.tgz","fileCount":24,"integrity":"sha512-AviYPlDdwvYc+Q+50slK2k3WyETdkSkkyGRh4gRR2LYK9vLK7vS9xkDUG+u4dNbx9oCJpp9AUGm/DXkcw83RKg==","signatures":[{"sig":"MEUCIQCz8YYenZM13il5Xwo1BlD79jUdPZurW17rH5vL9EjFoAIgA8WY58wxXB/lJ6rQgK8BTXlOyVUgoGTRAOpczPu3crU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaXJICRA9TVsSAnZWagAASHkP/iie0ffOLjEpEyos59oi\nSatgdHOztwGqRw3IBsnm4d76eNwioIn7q2/8MjysFhskZpAoDDkRffJEj0Bt\nw2ayR0xh30E5H1vg8UPZUBVGcEe2r/4Z5ru9uMcUILmV6Y69k0k+YdCB+XV7\n47HB8ypAhcAr6R6I34LzvsblmT6fBB0vNB9p4ZwV0UjtudV0Myk8gYYA5SqA\n8T2+7+k8qOFdXcAHCp92rldk57T+gUGXKc7vLcbeYayM/QXzrz7qa7iAM+OD\nlRPwZWkJihWjjjqkOfWw/v9UV3FvEsZrRgxo3S0eX/zeFxJ2/e1jTV57LGqI\nnssk97qKItL1sQL3YjVYk2fTiqvIn1Ew8clxr/CmlZAK+TJskSiuSk7KHh83\nomIEUcrNuF48vo5nxnZW24/VskVDZPqDmV8vvL2O3GPM6irJS8nA/wuUM4ee\nd1qOPQe+IAJ+wOyRLJw2dQBrVsnqkmroz9agQiIta/miucWkn8XrO0T4OR9k\n+0DcbDMZv1+gLoF8Rb7FN74tK3yNOB5wxvEMjZip6t873R0vSOPm4ycvP1V3\nVKTSjAy6tZ19L944X9MAyQkxhKg+DYPmFA97SdSqznGmM3EW6/LPqXh5DYM4\nxLEfpdpXmcc4rL+te/JrXO84kuEQ8VJJMSZMfGQ9QBlEv+wVhjcHRXRVhlax\nyJuk\r\n=eoqR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"fc44f347a2719b7dff842504a1b9a7005a17d702","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.37"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.51-renovate-non-major-fc44f347a2719b7dff842504a1b9a7005a17d702_1617523271823_0.3563709820376211","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.51":{"name":"@balena/jellyfish-sync","version":"5.2.51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6eaa092723ee56908c6fb9db50013bf1d92f9e5b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.51.tgz","fileCount":24,"integrity":"sha512-0GbgMvNNgeQNbuBme+oPrFPWZaLsD76mipUojcDEocOfzKQ5kSdbx9pLKulmw9wbAmYpBYkItG/hNkzd0IQbqA==","signatures":[{"sig":"MEUCIQDuveklkltz0j1Iugh+u2h7KxWPZK9IwAb8UhR0l0gfwQIgKkOvIHvFai/qjIi9sqquJUCvfw6pEzINAGVzy5Kgs3I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaXMgCRA9TVsSAnZWagAALBwP/AupVbpklKsz/yzrTqw+\nWynqM0GRvqAAECjJQgRM51fe298u9GvahWHp7Y4Zl2jr4vEz0o3LSwYm6KJJ\nZDa44UxfT1BulFv1mfxhTTxBYg300VMQdLsMbFLCdIJT++E620+aoWyx/GgV\nrTpqd2Nqq7VrJCoCADdMyl8SrHcb0xqaxOOgh8GXMpPNCcrdfKyiviD/FsdG\nYYDoMZFWmsB1bzG6vlQ0ncUYCPQvzSvGgFwk+Un47WuOMgbDFz9vk+5cQY6E\nzhUGGjKg9jTvA8IvFEWG/guldJY+Zh2I6uc6uDpGqydK361qo5YCeI1W5zK0\nXGVsoje+sdeAC5wDTPRv4QHbDrzS7+VujrzqLFQCOW4LCaZy8KT7rN7Q0PzP\ndVd05nzrs0Vjem/SmLFCWRuto1Yo+MqUMLwWrAko2/JO7vGg3asENriqjN3t\nkxLWo4O2QD8I8uDegFKZHw4xXmF/oJLrQO00EJgP5rwQJOQ1nv7qVvuFblWt\nYprqF2bIiijSnyLlJZVNFzJoidLBL1y+yAGEg81pYXnX/45ChPQ09UtmCroN\nlR/pLcBGu3UMiFzIKcAObz9phu5OgE3xHlMRHwTBPjHZ9HconpBL0MaZZagk\njNIb2HXn6+b50wkzYNuGcCUME3LOJYBHuRNmjie7xhUu4qod4JWndbKQiP53\n2Qsy\r\n=Y3LR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"cd9052accb6efd5b406020e02653ae14ac92c438","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.37"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.51_1617523488135_0.12610509532297032","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.52-renovate-non-major-ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99":{"name":"@balena/jellyfish-sync","version":"5.2.52-renovate-non-major-ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.52-renovate-non-major-ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b84c322c6493a10c7a70e17d96061eceb1db8e2c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.52-renovate-non-major-ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99.tgz","fileCount":24,"integrity":"sha512-4oEmTfEdDYdKAFWPTlm3/F0bjfftHmPy3HyFhydzf0aI6+uCBmmIodgDxci1VJqDVa35feecIoJuPOrsH5zBJA==","signatures":[{"sig":"MEQCIC7L33Do1g2ZraN9c1pnsSBuf9IwB5V20RynLBQ3UBiSAiA5lz7Aw09P6otW3De1OyM21S9WyaX2Pz/ELSeaCKr4Xg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaY6pCRA9TVsSAnZWagAAlR8P/2EUvSvXPhTIXVG7rSNy\nOfWHtLC/VslcwI2jcQFiqkyWT+FeKJzwV98KxEvfjAoF7GkSqBLd/A4AheGF\nb4OcRijUPkx8cBdQzCu7uudZ8fG8bx9JErGW1jE1XPydvdAYFFNEIQS2Mkg1\nZbGGLC1hkQL00P9O14kxcW6GtzZsFtDM99Gv79fbThkYW4iktRFtR2UH7VQz\nc++Mh9bjQUOQYuX1KzqaHtaPY4o1BkP/isMKaS3m5nLRIs3AoW2vT3koOcOu\nsPmv9eBXCgMFOCrV1NH1fSJ9Wyp5x5UyL5/FH1LKp4t/pnwZlMhjvZDad4sr\nidkGU+cg6gjd4y1OjT1zWtwb7LN1/CTg8tGwaBfp/ql02K9YTeyj2b7RTEvC\n2h443LJNyT87QqXvqrKz9Rb1yrh6C5kivxs5IpeATo795dEPTQ+EMMkLd3Oe\nEUzY57kM9p7K3A+l+xFY62mqaISuUL+sNphxeQhzAjeZOADTE1CcV9UdKVmh\nB4dVF6iC63VBss6bbXf8LvkZMXt5/7Uo2nrFUO1F7JpLY/38ID6FnsoKc6GD\nMZ30xhtQ6zD46aSTIFCI/y7NzTEmgEDgxZYwbwGMIKOMh/NY+Z/kOgpKUJL2\nUp4olvN0ZFTOuYvry4vo1Bkmiyl6QLh0L1EeC6GJA1C3/ES/rUS+Io7zMj/J\nj8FU\r\n=Sq+V\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.39"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.52-renovate-non-major-ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99_1617530536885_0.45152561287138804","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.52":{"name":"@balena/jellyfish-sync","version":"5.2.52","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.52","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a14f184370ffb9e1776cd3bed1582fa9fa25a778","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.52.tgz","fileCount":24,"integrity":"sha512-6rMfxD1EB2Csa0zrgq6UiZJxq8pOyjANdGq1kmBcQIJ2T+YRZuvUn/LdjhmzumjRXfbPDb9/vrPll0epkFYO6w==","signatures":[{"sig":"MEUCIAE6U02LQ4Klnn0Iv61omJOvPBvPOPVoCJyTtXNHIEC6AiEA96iHQ2B2Y3xhGf0owCqJRZLJaACeUSkA3YYfHkYXU10=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171631,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaY+UCRA9TVsSAnZWagAA4CYQAItHgf4+Dk+A6wHS3/vU\nAX8Grg9TerA2Hcr0MbYFSWE04H4lmcIyqj3LgTic6SDMa3ueyUtX1AWS02Di\nJls58mNhguiNjxdxfQB1tLQc7w+8ajRYn/7Oj9Vy4K0dYaQDOZo8dnaMx8MH\nLXGG9HinLhuvU1qJMFJWRipSvoyolhIFXlCXOWYoGDLywBD+IuSFw5h7JYOQ\n56smk9JDNgqsIw0sN9ut+dZu3XFgqyhaA4tyLWqNAjrTUMXaHuygOkCp/fWE\nBARKj+Qa0oQZW6Sfbq/nl4IorsoxbipMQtQND2vzp6VZRwyQR9qnWMy89Cmy\nD5dZUAgtT7zRGC92bFgfvkPv5lg7zhDuFLceFLtwON3i3DCe173vZFZ0N01+\n7fBt8cx6qg+wxO6bsYNhC3yeCfAJgBBhPc25Ph/82CK24nkXpEmAjkRazUDD\npr8V0nsUDp8ErezpaOJoTD54Ct5VpHYr0Ly2VKUlBgD+GcTHBKvzUFWMQrNt\nrVtysClz8YaX4unk5qf1b2IRqxXY0FXBC3prUWmSeKFWNaMxD4ATA4kcNtC3\nKCVFG1SF6EQ+tJEtcwGjRwLGLPnoEadb3ec4ii1iCtw8wF3MCKrvIexacYSG\nHsvtGwriyu2V3M/W7nmwIqoimepZIHFdmGeBPkdOdzoqLXXDMP36Cj9AFHVd\n2Zfa\r\n=ub7Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"90f5bd6a8ff8245193145de0f472bd8c91a980c4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.39"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.52_1617530771887_0.32358992851461377","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.53-renovate-non-major-d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f":{"name":"@balena/jellyfish-sync","version":"5.2.53-renovate-non-major-d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.53-renovate-non-major-d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3ee282f45c4b301733b5eac58c9dd6a5fa8a21c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.53-renovate-non-major-d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f.tgz","fileCount":24,"integrity":"sha512-m0NqVlr3nBv3ELdVTy0GB9l15x1sW5SuTZq5UBdtQ6QiQ5hwNQjLmKINro/r6QB4GZX88yJZVtNt3Y1Fb6ozeQ==","signatures":[{"sig":"MEUCIE2ajKXblsxZXYKB8houDyopJlcUQDD6NTL/jHVIs22XAiEAkCzQrZIQh+Q9Zsd/XR9U9CLSduaGMnWVriuyu6fSDHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgammeCRA9TVsSAnZWagAAec0QAJcyK7ELvU6LDItZpR9+\nyLJtLOCJBjc/PgVoPE0Q2SeEUOwWgPyIfrNj6m5CymXuctcTF8NDLF5N7puY\nrxl5dWKXR1i3xPRCxFLzPObClX198y88uDUU3zAn3ZjliQh1ui0OK3PZbWy3\nuTvAt48QHBdN4OGFSBE4Q1tQcAzb9UL69HSW0Vf9RguBUP6uAyUtJmZO+Sha\nT/sLA1i60EP3AlofpOboJ1mreYSerBaj/VU55CASyVt3r4Bxp3yKdL2cY42J\nzMZDCwTYQ3N+AddZWq9EIRKFLpFTKHQMSXUq6eRtfmNMXZRMcIVqptARhRN5\nsfh+qz8YyavofH2tD09rQiZ8uFXN14tjqO2yz5lFkmkc1Y6Psu4U4sNSiIsR\nOAp6ZRdYdLLKyDoB0C2AK73hF+TFF2VASk1xJXllJuAh6MQdUIRIT2dFxUjH\nuqEzGFveQGKmZA5hqs/L5gtjtJfy1RJEQ/OhUbwH7P7Av0J1hBCNvkb99QXL\nuzPGFxnMxGSTwAlwd29pDipD6xkUDXu9HnPEpzpykG/R7c1YlwxzNtFpdZ+t\nMlBo6Ap78cSi4vUuPFOpZZZNqqmtqszmc0O7vFZR/oTds1rNLp6H7qcJzak/\nQ3sN4OVbif+LsFUUOG3SeGP3Ar0UB3A0DEshUvF9Fv6KI97N2Hh9Et5wGSdg\n1L1B\r\n=Vj5S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.40"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.53-renovate-non-major-d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f_1617586589757_0.8106981637648623","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.53":{"name":"@balena/jellyfish-sync","version":"5.2.53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b7135fc7bf490ea7a96c9cf0c6129f16fca7c68c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.53.tgz","fileCount":24,"integrity":"sha512-q2j3HocayTZvRnVCze4W79fj04wNj+mqPTNP6PbFjqvrv0DZktcp5y/hwoAqAoPeAbmD5pjQ/0Ng7i3RyH84jQ==","signatures":[{"sig":"MEUCIGp7/h1Xp+OauANM3HOLgecM2//CqiYutbx/s3NHx8JlAiEAk0NulgSyrWCM9XmHiU3gnLcPMzhLYFTdj+gG7BUQTLw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgampYCRA9TVsSAnZWagAADPkP+wRiID36/RljKsvEQ+zA\nPZawcCD42h7P3vOHkZPmQfKEztjUGraedeqAFMymfL0AGHB1uIr3SKmA8Zej\n/+nT4HFROaCOUM+NxQk+Fl0Stft6u8n9zkhqthJ6/jawVyHglbdiBwYh3EV5\nHDySbyrGgCq+bM0wAb9VimDy2B56iHvRLvbF/WM8+mHEhPihYk87YCT1bjKG\nPeUt0nrkP1CZO5EnLoRL42PdlyMVGccDIKPR65RtbEE1f/lvqYg5KoILqh4d\nMCN6g0J2guR6XobbXLxStBgCX1pX4YkQttRuPe1i2NHdIdMWRTIv1EGE0z6D\nCHPBXoRzLpAlSTo/tYZTE2dF0jrm5rYO+f1LMm+Xke2U9kt6GBoyczevdatK\n0ZE7RBW8RmwuIFuRuChSIF7aGXEiD1/Ik7qiwXWjnN5gN3vdG+vykxAAWl15\nZvhW7XQU469fFYfUE7iyhG2zPQ/BQuP655Gfz9sm3yozqqtmm7VFFxa+jRHJ\nVKVR0OQJf7jlStOWnveIqHIIaPq6dNEXjHk3qETmRsZBEh1OYo3axx4pll1Y\n6XX5Oejnm2M2nJrK0ztf5BbcAbaSxnupFClgxezKDAhIIqqQ4BM9lfLJB/j/\nhhNCSDvWtu9iMMhf+GrPxpIXWMSwHD165xxW/aAlI9wD8eFnalCDOdBN6oyI\nbj7G\r\n=Spso\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"eae4c87c0f01e3e61fa4b06595c2c9342e0ff373","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.40"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.53_1617586776487_0.8224416003937616","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.54-renovate-non-major-f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b":{"name":"@balena/jellyfish-sync","version":"5.2.54-renovate-non-major-f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.54-renovate-non-major-f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bffae6484c2fffb0d3ca8662fbe0555bb014b803","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.54-renovate-non-major-f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b.tgz","fileCount":24,"integrity":"sha512-rd3ACGkurDLSsf+RX21y3J4tEiLCGwUROmY6uK79OOo9DENQ4bFgzHJoRrrwXJLL9Gp6pix7NfOq1LoLqrZZcw==","signatures":[{"sig":"MEUCIQCDbUugHm/SAjmhRtRuUNg7NwnG0c/wSfi0EnP3SXyPIwIgQ1HJ+tlK7a3PBfdeABTUl0acQvILe1qG243ArgiYTw0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbF/eCRA9TVsSAnZWagAABn0QAKHVtjXgo6VhqVkWcze6\nbw0T+LCPpXxKeFActdqQ1He9y8oxnjgV7bKIgZgehe68b+APmQSe0ktve8aB\n0w3zfTwTlAWmcKb5GILDmbFo+GDzSU8rnaKWqjtczJiDM/IB0Ovc5J8OXu/b\nl619T6lu2DjctnZFSSYzwqbK0hIJF7GSHXibQMyJ/3C/chXhX4AZj1P6bhU5\nfOk+Cpuqb6oaf4+Gm6nlfVQoIfd40bpIo5+1iYt8bDUPQ1eVy1MQQ//YlN6Z\niUIgofVH7jd2PDEsq+F6FG3Ou6FTz8uq6LEyH3785/MjLnTr6DueTpNzjcTU\nqhQpNV6/oy74R/9IbrIfp2m2WO/Ouo8EpJzwyM7NL/MEKuxGIDhXPhnymb32\neL6o+JqMgJjEG1l4QK9un1Tz5ImUxKJmnF/2mFAx+HYlRw7f7cuZMSipYM29\nVvam0yDWjK1QF6zg7c2K1d2Ws/vpYgpZGC8IVR6fSKXjBU14NwWL5lWIFReQ\noF/6nz9FN05FYjOedQOH+cD8Csjeo8BhrB2WYunTTyEP31NE2iko6TIxvAVV\n8xm3YTmZ7eOU6SbVW8TxsYBNAf5rTnhZEQ/7Pwz+Wkrcj/S4M/8ThO4Ts2/n\nc8I9EqLaxiRswfNpkVAkpAs21wHrA/+c7WFb88vVXXivBaj5hVEoxVfvKo4n\nY7Fp\r\n=lgER\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.41"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.54-renovate-non-major-f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b_1617715166161_0.15556091777013958","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.54":{"name":"@balena/jellyfish-sync","version":"5.2.54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.54","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"50412e0460b62d9c41d4ad195785928870e0cc1f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.54.tgz","fileCount":24,"integrity":"sha512-8x1rM5E681UHipRvBc0kvqA2PwB6BL7cWn+ABEVjvsWTd5swD2pqVa3UfVbgEAulfrB+r+Er5xOoRVAjk4aP/A==","signatures":[{"sig":"MEUCIQDXhYhgAGoN8LrmQsIe0b88ulIfPUZu+LRIvZO2AXCX8gIgPKd14owRVt3xrVv3w8H3AeZAi93hb87L8I1pTV2TnJQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbGEGCRA9TVsSAnZWagAA1k0QAJI4ZZEBQGwpQDPrROJ/\nKp+x6jpucBbtKJ7sl/NzvdKyMtO7ndIUnvplIBRIMRQDtODa4gH4zwk0j8lQ\njK8FvGmWJJCqDRQ4HlW/IZaaaDDKD0YYWcMimZuMyxv7HsxUni2Woc9Asiv3\n47LramGtcyAW9NtGE1jyteb/Nv4FSUp8qoqMCdUKRLa/EjKOuEDtf3G6emyI\n4kHyFUh6XGO1qVhIv+29dkaG5r+fitrHS8KfQM1iA+WJVj+hDDiATIQiJ2RY\nA31qMyLLte4uoSDpUp6wNm+F1GptD1QJ8J0lOkH4rc+D90HyI3JUyvCk5REa\n+X9VRgjDESsCbwNwQ1n0l9u59NqznR6VxEJF+tlRsx36fPkHUbn+L7p5jJAz\nxkV4Mo8sJswIzWUGMoG/AKV/wYPTHbZoTG7lKoAWW1B1goQnXDvbLKfEX7PJ\nY9G4LclxWB33eEyUvSrBjOKIxfp2JJRgXZYbIIsffEZtod1jC8b4SF8Vt6rk\nad6nBjP0qQiyiUfnpokOAWyZKDSIDc79eNPfiQRULyxkCPJm0A9B47I2H7eX\nLY3jSUhyfrGOEbedVUYOlxXuREwkLk5dNDUoSHm2AIWrUfyauYN36wZKNIcq\nBCJItl11/dX0B45KfUQIfsKFB+hHDwwjrsGymhBIO8VUcyUb8YBUp8XqzESM\nEw/1\r\n=3yyx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"303eaf0b8600432a734b00cecebb84dccaa8e3d1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.41"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.54_1617715462006_0.7939755990003079","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.55-renovate-non-major-f5153b58c4af5f8ac046765fcf924e17c8437423":{"name":"@balena/jellyfish-sync","version":"5.2.55-renovate-non-major-f5153b58c4af5f8ac046765fcf924e17c8437423","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.55-renovate-non-major-f5153b58c4af5f8ac046765fcf924e17c8437423","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d709f0664f785e9feaceb0ac8fdbe0fd03a3c495","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.55-renovate-non-major-f5153b58c4af5f8ac046765fcf924e17c8437423.tgz","fileCount":24,"integrity":"sha512-iVuZrGfC2NHikD6l5IPXXqRKaPKPtWTB6z9oDXvvFIMxZbguV45F6OcJCcaprbV6h3sgM3SpqUEtMDAM5vN2xQ==","signatures":[{"sig":"MEUCIGKqo4KcsowbfV2UfMcK4H3EJKWUzAkPYk8RMWdXdzJ2AiEArr4pm0d6HkfDceKkkoEGi/o8tqpqpLre69Lz+WqRtzQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbHeWCRA9TVsSAnZWagAAGIwQAJhQaY/MSEpTfvSoy1rL\nWNjEYq1HXJRmpqzlmvPVrC/K2D9gtIXPc3WqcDVZnjkgwBjWQThZ0D8cNy7f\nrhdb00UZxKcSZppj3GZTl7to8+4e0OANgIsu/DbRf293kFZJmsKY1S3PidhO\nlrj+BMov7DcezmfWSUIDRJ2Jzr+D6mrGTveJNIn6+Wd5kUYgVoucympdi/6d\nOJ1vczhodTf7fcSb3pIe17s/woRUKnSMmlqogd9GRX/jfzbmIqIpaZdMFct3\nZgUkozkky9QGpaSF1qkVbsuCCWiiZWzH9JBP3d2dndkA1TWyPf+ALDER3aVW\nSFmBpfN0BmsK1GFWarI2IX9ng1o7rl0sanO5Z1httBpjf3fgq5FAGa7MNzZe\nZ1cQP3Fr0P8FN8+uyuDDuxYZPcSEnmhd+Kdg967aZpFIZeV7XGVpTWQVM7i2\nUCOyhlhGTkZ9Qu5MKn4/QUm7Vuw0Z2NAWNvuMld84LNGoABRXQe4bSsM314a\ngBWaX037I1QM5kAZVUkipcVwXJbC3c+m/R0iBktTh6jNIxPUybyNwU4jmGJr\nlmgKMcqiMqieaA0dJKJd0QUO2yeu/W4u894D/SNj9tcc//5FHcy/lFoq+GxB\nz/BXbhHOMVMP0TlpoXJGexfwvT8dsm1dYrlDYd7+ebk9CZtxxGfYrli7ajpz\nFM4M\r\n=xGb8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f5153b58c4af5f8ac046765fcf924e17c8437423","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.55-renovate-non-major-f5153b58c4af5f8ac046765fcf924e17c8437423_1617721238066_0.09473051215432005","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.55":{"name":"@balena/jellyfish-sync","version":"5.2.55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.55","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e4bf963179d0eaa8b5117ccde5b64fbf6b08fc2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.55.tgz","fileCount":24,"integrity":"sha512-TdE6HQyOhsTFyeAYvAN/6hGXYGjqmHS351p8HLrfWzhdoHqrrCljlzgHfoDFVOq3VhYq9AoGTLSmPz9T0aXi8g==","signatures":[{"sig":"MEUCIFFnLOm4+5Riqj4/IDhp4NeRXvOs7oDt5K1HtkYWpUJjAiEArzT1VhR02VRSl/nz9swff/vcXoWTtckyASZ+afhhw3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbHieCRA9TVsSAnZWagAAh6cP/iz5Sg6VVgOVmnfJ+XKS\n4h18xDUgjxUDwKHjiSpPFAEPylNuX0IubDj1LM0Lo4+F/0pm4PWwEetsULy6\nkD97Sz1d0V9jUn9PVI2/QKw1opoQOrIQQNy9gStUQf/IiB3LD0kAKwtDK3V9\nJCkgUReVwYf/mb3g0mXNSbNlJLr0cpqodQbsiXrLJ9NY+MSJs/ChWf02aMPJ\nBMdadxQYKgauWGZO5ytx+L5SM4AQrSqMxvF43uERe3YTM2fm6kjK3A5DEhfc\nSEGYQlxgy7Lt1tEUbDENRwOjvYILDp5SyKykzwh6ctM8ObwiY58u4BNC2bkC\njs7rQP1RtGBdJdZufVkAYRm9BDRJWhLirSr5nO2tU4tTizfwR9Lyef59Mz5e\nN1GfaCCkHvxX4dadSbS4yhuA8J0bEUh1KXH7nfq8LSpQW9yvI2uVAQnrWUrz\nvE1/nu7YZ7jr3cC2lQsdf+x204C6JyinPQlf3PmFZZjiQuHzbCnK5nu3ilMT\nc5WA6DkucCEoST7BBCs8g+85oOc0t4OadgCNH3bfDoXkKeEmAZpCJgdO64yf\nuByyMacQz/w8JJnHZZDB38rdJKm1B3LEgfqpX+VkdY5gvUS+WdONjsrvYWxW\nCXbaLFq8zkExSq7iGgdNr1ZnYHCfaFj6XiZFeKSsaWx9z/dUNrdUqemKdo0e\nK9wD\r\n=pEPG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"958b4fbefbd36147fe36db936fb52fdbad72de06","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.42"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.55_1617721501757_0.35131887386754723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0-convert-to-typescript-e9e73f63bda8db937d3901199ecdf3d47bacb0bd":{"name":"@balena/jellyfish-sync","version":"6.0.0-convert-to-typescript-e9e73f63bda8db937d3901199ecdf3d47bacb0bd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0-convert-to-typescript-e9e73f63bda8db937d3901199ecdf3d47bacb0bd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61f9ef1ed0da06f106d325a67c217b304246490a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0-convert-to-typescript-e9e73f63bda8db937d3901199ecdf3d47bacb0bd.tgz","fileCount":24,"integrity":"sha512-VKf4MEqTp81bf9T1cIN3Neic/xTSS/5B9XOtYvHyhhCkDnhz3Sqwsaxk24GhTDsF5oqg3V4Qc7K5doq600wGWw==","signatures":[{"sig":"MEQCIE46Efy8LZ04EnjfcUXWE6aboomsfc5Q+wSJ60oyaMRmAiBgXSI0Oxbmi5tmbv/cHFQVpXHisiaJ0JmieuFxO1QrQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":142377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbHtDCRA9TVsSAnZWagAAY4oP/2a2R4JWUtdQW5rs6cGm\n1eE5S9KSdi0GvBw8EbNEXZ/Gz7UBmW53FrNFVChGEUT8AYvAbJoZ+irrNuw/\nwTkBy7HnU2HCMSPG+2m6SbqZXxElvB8dF3OjfXFgCzcCdJrHEHeKrK5KK2ep\nGvQteF+JgeS9VxliBhw6qDeD71+ydQdoNfPFt443MV6QYspO1LUna9/DMoJR\nNp8yDW8pjIZqN0ymrSI4aqP4Eh5pbUfIsiDwd+kmzJ0TBo9lie/awI6tODFE\nHGRtIf8E6wZwgH/7487GXrV7pZpbJcUsd5mqN2to5drPNjw8w9WMqsfPeSxb\n0S+Ag17bXxFo29eflFUNfu8Ra3gBVKOt2dn43XTV0rutdH1EbzkS1W3VsAcg\nThGuZ8gudaTvaJm2TgZdaU2/HcjUALY4bybTmhjuSE8t/67YbccAZd5exgYN\nPB3khweebkzDTL8QakZLJHSRfHl+nqHOCl7ZhjcqM9qOK6t9glrbzoMT4ZII\nnGYN+Xo0MVYN1sWw7qbIGB1caPjbdlaz6Im0SnWDAgQbLCDNtlydAtW9gntj\n9btev4BXJSgN0kbN5OjNMmW6kX0Jp5h6/vsr8KvVlAlsZrXnSW5ZvKwYHhdt\nv5PL9FQDKR/qeIZP/czjzniDeRddsANI+7fsE6te9KrEJ8zC04ew2EXM1KAH\nt5+N\r\n=GaI9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e9e73f63bda8db937d3901199ecdf3d47bacb0bd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.42"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0-convert-to-typescript-e9e73f63bda8db937d3901199ecdf3d47bacb0bd_1617722179358_0.7482505919856939","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.56-renovate-non-major-b359e0a395e7b4ddbc5383bc088012d5001e96a4":{"name":"@balena/jellyfish-sync","version":"5.2.56-renovate-non-major-b359e0a395e7b4ddbc5383bc088012d5001e96a4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.56-renovate-non-major-b359e0a395e7b4ddbc5383bc088012d5001e96a4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"677a062a71ac3a3fd92c99e348c9d076bce876e6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.56-renovate-non-major-b359e0a395e7b4ddbc5383bc088012d5001e96a4.tgz","fileCount":24,"integrity":"sha512-5zEyNIXrzOoKEAu6AP76EGIU5vaqvB+fNkF5Ql5NyNhyvBRms+56eJrQz6PGAvZR4vE5W2PWuY+m4LKeGgIGkA==","signatures":[{"sig":"MEYCIQDljr7hItzRq+5ht8IeMiX71BH0FLPNLwiPrKwxF7mdDwIhAOv58XJt75DhrBZ2dsQ2CPFNvt9MFv8MTwrFBSVNYGBf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbJ9VCRA9TVsSAnZWagAAQJgP/iwL/E+A7l4uSUKLY9hh\nQHxv3MQr9d9QNMoNHE47MFHMeZbKjA0KDTBjjIUB85D7jIXm1GZB319CnrbQ\naH2ZryiFhHn6u2VikvBzCuBiOIqGX7nPvKV0piN0aNvbbQJvh/asGA/TOwsy\nsrC4A+b4qUvaNJGVR/RHA19oHMnxz3ydKe5Fsz7eHTjHcO0Yav7bGeTod+NQ\ni5Ugx307KgYSI8Gfg0LTyOENczp+KK6DdXFrZkLRHRgN5Q9h5yKrFQH1AvTz\nfEaOEBrkeyXIluliElDgEs2+46UvIt15vX0VCgvNHlQBJEoCkn054q2uS8B5\nHK0UqORD2Y/am66SPPvyjjknkHjaZ+X8W44FleJX0GYGEUfmDvcjESGaCMgJ\nRPEliE8LTbT9dHiFtgFbX/tZxFRK2o+AxNw7ntXiTdlTMn0/cOgznZ9xxtN9\nVRsDxTeFWUTx4MUPXhbX5v+dOJn0iOOf6AWuL0tRbweH4ogFrpSCvnfX93Ag\nbKlYtCDDBW4EDIsug9C9nqXo5K0q0wyjmDQ3DYk/uvFkW/plsOpxw+xMmIEO\nzunZqUbbzIlf/BdcZ2x660RpEtqvk6Vhd76upvo262K5B3LGpSlCgjMFVUYh\nKAVtxi0AsgNghdHctyLvxg33WGsaS4xWAh6axpZcg2cXmgyPyahx/NaT382R\npAe1\r\n=JJvI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b359e0a395e7b4ddbc5383bc088012d5001e96a4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.43"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.56-renovate-non-major-b359e0a395e7b4ddbc5383bc088012d5001e96a4_1617731413269_0.3560259154171812","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.56":{"name":"@balena/jellyfish-sync","version":"5.2.56","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.56","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"00ed860c82599e824588bcd7b55d88fbc8aec101","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.56.tgz","fileCount":24,"integrity":"sha512-I6lehwbexxMJjBb9q3ssGdgdDtmKYahlocmwnipMjK0JzL5XXslq6ZLHX4xviRp7/W2XyNioosAzA7lNXjSUAw==","signatures":[{"sig":"MEUCIFBmHUPXsUp9pkYNQXcSs5sPEVheSonoK/c6winZM+S/AiEAhhjgF9dlMAq7WAPg5qT2HNZnZuKe1Sjr53wARiBu9Hk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbKBKCRA9TVsSAnZWagAAIG0P/2t0rHPWZfewA4ENNxLz\nXj6TKpvNvpTgzCDW71BairJ7N+5wV4HBeO63xtJfXmI4d9TaoWAJtCUhJDY6\nluDhqoWlItjwcecv9RBTjk/6kQmrwe2C7qwWyHcG4iHg/oY775LIVVVk2HKg\ngqznLtmOOe495LtOEfJaKDvbWorw2+qb9FWHQBnbH13DumJ8fQWeCfzb5vfj\n6obZix7Wo93Mq2mk5myrw004XYP1qWJ5VvgyVHsJIsnOL5wssKk9NVI+razd\nmo8Hs/wwoshdhzdTKtDMol32FKLAL4bYVchXxtQTNnRMN64snfjY6JIuiYJ8\nHQH5U6LEh0rQKF8l2/hmQ/whlCEGmvQ3WuiWCdINdmlTumchZZHBgYNmjYA0\nduykG6TmURFh6vVJeZwRtotn834mOOCi+xx8RMUM2QXRq6SIAWrdCSj8ndXA\nCT9H/IF6R1+EPu/zLX4K4Sv/F1Tj0asW3K1brmEnNdQgu+d/H2Dm+A6YgqWm\nJhcwHvVBZjqk8j0VzTcpmlf9xnJa8D/8fDGpCe2knVzFITHKe5ObWzW6HZjj\nLxLU6g74BNzX5qDgGWjFA5sAXo2i4kcXYBl1dyb+Ok2fPxp6mG9ip6n1+oBn\nSLWgVMAcPkzd7pGdLKEPqByWwhJSvsjvdbgmiG5mjNl/qYDd6Ldm9G9NApdf\neel1\r\n=PeZh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"69dc72458e841c119da67fa9a53bd1662fbe2aa3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.43"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.56_1617731658303_0.8319632192996713","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.57-renovate-non-major-16e86acb8dfb64ce367316c52633bccf0121d7b2":{"name":"@balena/jellyfish-sync","version":"5.2.57-renovate-non-major-16e86acb8dfb64ce367316c52633bccf0121d7b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.57-renovate-non-major-16e86acb8dfb64ce367316c52633bccf0121d7b2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4a190ecf1dd8dc4923630a2e4c1e98dcf6db6bc2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.57-renovate-non-major-16e86acb8dfb64ce367316c52633bccf0121d7b2.tgz","fileCount":24,"integrity":"sha512-04iFnE5ydKdXh75X+Dpxocjn7SvRyHttkuEzgOJkFbqCxsk5anMvcOPtlRbcX3HYVj1cblJ8bw8PkJ/7p2329A==","signatures":[{"sig":"MEYCIQCUCkAQwR8yLzrxrj6XH92H1iDF3OLwHTM4w2yy+3uqfwIhAKT97axUQMnKeU89QHemN67HDd5jTRhhSCm//VUjHWm+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbM5GCRA9TVsSAnZWagAAhTsP/jyd76+eXHkyh4VVmuN+\np73aOFg9Ovfkrx970Vn3E+rxHKU+gqIlXio3H6t2OQ5hCyrHyySW2f9k8tot\nfMCNf49lobSOJnVbLS/NheRKptX9V5wJsFleQFE8Ylv3ocaHGjE8iXN3x0du\np1i2R6ofwL1+u0B5QOQ1fO3VG2bmlnKGwQ4W1a9Bi8RGKcoKsc3qMCxqvn/b\n0MSwzwFBQLh3QB3995RgjmU9SfRf2ArxbTUZjKVjwnKkjz1E6SKQH9tv9zjC\nCqC/hEsOobin6pJp1gh6Tj2Kq9mcWvO0ghoR+pTpZwpH8ZmEWsHjFVuvbPHT\nt+TVKx5Wk2yTOZ4DIfaMaAaV8rTbtR8y3lBmyGhXGkbUvsqVav8RydlljQ3Z\n6d0KkCPShu17S/bRwErAZWsgeHNSJsNmaQhJmKzaJgObfMcOgz6srOX+N5Fg\n7ORgBgRH18NCROrNdilGmRYovDu8qy1zlzJYCZiXrwzXXHPZJmz+/mv2WYaY\nnddL6yQuK6g/McbLCWE2Fn9EBnz78To7WZf28V5FweMvOhp61SC+oyEhxVvy\nPoGgf7IxYtMwIs459Xjs9Ngh4tWUiD03u3jAGNn4C0nyUdiT3IGnj92wiW33\n5hRgnr/iayHyxOmknAedf6xoRVqVKzVVGh/w321yFK/5xx4e1w1SrFHSU4bo\nIdAz\r\n=qdnt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"16e86acb8dfb64ce367316c52633bccf0121d7b2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.44"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.57-renovate-non-major-16e86acb8dfb64ce367316c52633bccf0121d7b2_1617743429979_0.45441722698884934","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.57":{"name":"@balena/jellyfish-sync","version":"5.2.57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d01b108920a1b4e24a40d08e12099fae079dec6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.57.tgz","fileCount":24,"integrity":"sha512-VuteDyTqtaTQ+XIy360P8IsQpYt05618fPmp6Is36ZBXVx3Gh6J4V0L4BuqJeNMFlCVKTEKou68bupNvMXGvqw==","signatures":[{"sig":"MEUCIQDeoQA+WZsUc7mrpFvA0nfz1aWT08HfqTznCjyHaaAwwAIgf1ifOqySEJLuyXNJZ2+z7xAscOimHxda0UHObJ0o/U0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbM8RCRA9TVsSAnZWagAAZtkP/Rpn7bbZQZXyOSISyS3K\nGbVKBkYLcXheUzKArf2tlVSc9ZtnKf7GE2lr2P0/x/TTuxVYj4RvwtV/x/3Y\nOIV0YJ8+oBDbi2fg9PDZK8JVxxz26KRiIWwxgKafrhT98lRbGqKAqDQcgZja\nDEw50G529V3WaOm5fTwXO9k4TeibKAw3nWVbleWUThr6z/qkLvvim9JBbuUg\nt2rmnV4D8D5qW0eidxATbOJsKL/RDV7a48uGFtxgsy4zhdHf7kjy4tPJftu1\nTD4qRnAVyCxSDW8+svoJBInPN4GZzxYiYx1qeLw7A2a4fsCWLQDsr29Th9fU\nZ8fKR3r6EEwUA/CVQjOup4/2Oqg01tElF41PnLzbQJZiBhyfiXQaIkGhbM4g\nKcSr/xcRJlE1km6EoSj5EFN2e0VRkPaY5hjRzgFmqjvgo7sjIGgJgHkLi1UE\ngzZUO48gVB184iRVqGJg3NHkXkIMwy62OLH6K6Fu/JFeBIDwT1MC7mEenFg+\nWqWzO093edDVu0Arx8ICSqxqxL6epjDe7OlAp8jc/wT+oiQa+hkRf69umc5S\nlXccfdaKRDrLhOrz6OGD/iYPNXT9Jdphgp3HGCp0dr5M/a0uN8YT5ocKSd55\nwWEmDn6pbFKpULOHWizNFK7TUXNXEyeei4Tk4rQ7POXEgZKMV+armlp8lJok\ns5Un\r\n=vDPo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e873e90871583ba7e0a03f825aa1f62ea5a1de7d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.44"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.57_1617743633027_0.9026003112999743","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.58-renovate-non-major-3431343fd0a1d7a56eff3b24e2ee2558c6bd6584":{"name":"@balena/jellyfish-sync","version":"5.2.58-renovate-non-major-3431343fd0a1d7a56eff3b24e2ee2558c6bd6584","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.58-renovate-non-major-3431343fd0a1d7a56eff3b24e2ee2558c6bd6584","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1676f862f1ef9297d0e653161ef80da3c8f0aae9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.58-renovate-non-major-3431343fd0a1d7a56eff3b24e2ee2558c6bd6584.tgz","fileCount":24,"integrity":"sha512-hpdMs+FzJK22UIr0GgtbjzEUoicgKY6GPBcTMHaLzzzZSiVv5yciXCog+2m7mj2BcroZ+ez+6KZORtxL/F3ZBA==","signatures":[{"sig":"MEUCIQCI85PShc2J+nHKUfbPt28MReqhXL/HsD2aPF6CIJJ72QIgUFaSVIyjKRO4MqRZ7WGj6wTu5IlURiIM6mSn+u4E8fg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbOhACRA9TVsSAnZWagAAlmIP/2M4dODAMqxdwlNRoLTx\nw3Tk2VgLtufBSlhS0570qYJkb0yX/ur0j9quWyOQpkOLfXTsPsiTODE1eZjM\nvsemYFSfrSUKCsp0qvlDviKLNpGrHKlvTjB39RWz8asqsx6WyRPR0whStoYq\nXYzLVSVn1EqF0fEejinezIa7cMY0MgtTjIA+KGIKJsmZxUX3LQiLwy6U7t0w\n61vYnsH7Au+2w4Oeajj1NCYFvJUBVzlCWeuX/qxW63SJMb3Fxx8yJildXggy\nUD9kRqJzh2W9AHGqpWYdAWur9+M7I+17gcuymCIhLjcTog62wJCgIXyMjfh7\nKpgjIaPJEWgz2dLAm+KkcEPkzlN/mXDApN12gaCAlS7hNI1M0csEei017Eqg\ntM6IJv5EEKhSi8I7lW5KLjcXZ14ZdmPxtOgRW2iANMcWtFekO04VrNe6Kz8a\n1eDNOrBAlFUNVXvD0EO9IxemFucg4mTnCyKzsbjd2lExIh+49f6TEwFA/nW1\ngkM5hJ3Fe5WqG12a8BiuM8vyx7IGzoGpOymeKC378Dgd+01eX5qFFeOEmOnu\nZzoi9lnl4ONvwb0s/GzOQVTEViJRfOQa1Zb6xkfSkh/iC4VYjxwk5hUanvOL\nen0xrSMqdaPIS6/Wy0q7zlYEFGB1b7pjCgRvCegQGkHEUIIN1sDd3PJgoTVc\n2JiW\r\n=hN1R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3431343fd0a1d7a56eff3b24e2ee2558c6bd6584","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.45"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.58-renovate-non-major-3431343fd0a1d7a56eff3b24e2ee2558c6bd6584_1617750080336_0.10841445384520187","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.58":{"name":"@balena/jellyfish-sync","version":"5.2.58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.58","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8fbb66099631f4da9a73fc45dc4905e4edb99865","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.58.tgz","fileCount":24,"integrity":"sha512-TJ8+5wcunTsINkNu6vsATEUtN9eyAECk8ckEinPiA/xTyxzornweyvTzU3dc/QYEeuMg9mnYRRlVc8Nr6W6dfw==","signatures":[{"sig":"MEUCIQDvdQ366Xn8QifpbSZ8c7Jx/JtD0rO8RcCwQBoDtqd2aAIgIbPF0UQ0jhnnv/FoiwgfbLfrIa96QI+PMwINi8ra9Vw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174181,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbOj5CRA9TVsSAnZWagAA0ZoP/RI5gEDnXCuNoZalo//E\nDh7HCd1oYnJ6nVXOSeL9WziWuAPBPD3MK/5Mio0tE15SJvUtPc87OA6IO+4+\nS+7PP9SXPPsEnYQ/EGGyDDhhtbW9OkDVMo7Zeuy5kNS764jhKUsDrqPYDRH8\nD+Eo9BC14KIgJc/BJZCUT7raiEgN5v3JQq0AoIoSY1LgqWPOIztdvfG+uho+\nrEFQ5YFHFdkayPGoE/Datlyy0UYB9b36xayTLBgLL2l1by5LMHsbzvfen7yL\nLI7tVfC9eV0CnANho8NhcOtvYq5hkYn8C9lSD97ZxVDf7qEm7w+LsgF/tMsP\nPfU8xo2R0uRjxEvPxXCJjoNJaC7Z21tG2DjGkpzai+V3E0RgyBkr88K76rjY\n7/Ol4TGeaQyCh+xnIAnvumq1DaqLxT3sMmoZaWahxsPZsgzm7u6ufGgC5Xbi\nBTaCYJ+TCNcqxOZQez9hCqocx7REiGFjjD1GKAtPB7qZZ5U5YNdP3Qw6MVER\nptPnpOOaeLJcPAAUjp4jYwcy3SC0RK4QlhvL98eDLLOYYdh5ch9CacaJVUVD\nheirgzhT2MFkuO3bM++wiygloCZwGQe3HV6i6fci74cEPjjLS6Z+z/evK2p2\nu4GrvOFhNuhVL5qWsbkk+2fnz2FVN9mXzOnN+Xr8XjvJFqVdUYnb8ZKmYlPi\ndi4W\r\n=ubY8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e25b70d83797ae1b3b86e2c90bd0e5c1325548f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.45"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.58_1617750265083_0.5350193874548872","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.59-renovate-non-major-8e69ec6043dc0bc04eee2f62d8215bb2edf0262f":{"name":"@balena/jellyfish-sync","version":"5.2.59-renovate-non-major-8e69ec6043dc0bc04eee2f62d8215bb2edf0262f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.59-renovate-non-major-8e69ec6043dc0bc04eee2f62d8215bb2edf0262f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ff858b31144ff73b7f8e49455a08bcfc5336ace9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.59-renovate-non-major-8e69ec6043dc0bc04eee2f62d8215bb2edf0262f.tgz","fileCount":24,"integrity":"sha512-pSSua7cJ1AxDR8fVX/udWclpVbnIaJ5Qb+7eLMIU0YG60px8b/8YC6KXbH5bwD+Na4LI0F2xkxUgWWej1gsEOw==","signatures":[{"sig":"MEUCIQDzBUcu446N1AVLNAMKGYWGe5gBS+Uc4ccIZw6nhgEzLgIgQAe6rvFkdHKTCV5S3EI6+bsbWook2xI/f5BfTsWdqQA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbOpbCRA9TVsSAnZWagAAIVQP/05t8pVJNWu0Lmj72lE1\nglTu9KYcYdLrDke58Zaghc+WXOl2eLXe1nhskBFmOxdZm4/FsKwFa5ymwyJI\nO4WZ2hKBcx2E5Q944hM7UDmkgURTTB8rHwJ4lTuQVaSfLMqEw/l75bn0R+No\n2gYSTjmSp58qwIl5Prx1l8Hc5DXsz7/hbLKWHfoF2CLJrv0QwIIHGxxqPro3\n2mWQwtp+i4CYPMR+AOCtYToskqbi3n4gYGO2wH/0NW/sVfIi5H4TEMIJS7S+\nXtRZ/Y9Z1wvMr6PbuQZ/5pgPJzR/IvSXW/2NgrBwrHlRkIWkM21Flib0YxL8\n9ZbObal5JZbtQFpWg8ot8e8EkZ2H7slW3JU4HEP2K6xBZUssdM+Fn1xQv2K2\nGDWy6QKpHuqTf52BNf7oTq6gJPQEZspzC+Gh/rZNsKt7nEkAj0aiuVHSbZsg\nHx7nsuIWuYqfZU3lmB/G6o/43Bl4m0To3R8FzGhPVN4Kxvov6AwovS0uuySZ\n9JSVKnFtPkKTShu3/vbo4+CwrLxqoXV240zoEkJb+xWVooUSRkIgFOU28fRK\ntboUtstwIMEEG1WnKioPzxKqjaDPls9RADiU4PqvS9b/NOFoCVNbIJet/gsi\n8nrS+FXAU5RpWWxg6FwR7mz2ZJJOfCBTvet09uHG6x+l6NyLlQ3tPUYjIg11\naL9o\r\n=AwNl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8e69ec6043dc0bc04eee2f62d8215bb2edf0262f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.46"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.59-renovate-non-major-8e69ec6043dc0bc04eee2f62d8215bb2edf0262f_1617750619285_0.3918788805439659","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.59":{"name":"@balena/jellyfish-sync","version":"5.2.59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c8f8ed2651a7851ff2d8f687f728060f8c631373","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.59.tgz","fileCount":24,"integrity":"sha512-K4b60Mtn9ROWuKUHHcJAPjFb23RBulOMe+PNXlvRwb5mWqngppSMFIoXanU1Q/EC9dBmB5n5cKuGQorDVkrh2g==","signatures":[{"sig":"MEQCIF7jVfZ6pEbVtB1GmfMBVFXbyEhsMeXSuVOnxRyUBxnRAiA1WS9cFL8B1jYjJlPp65KjDrBmEsQ4fTS928nba7hLxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbOsKCRA9TVsSAnZWagAAipIP/jrTdOjfzMNZ98En4aI5\nKSz6621jAHVNkBc+QYpsx2FL1ipkNHlihE5uRhgZeowFAM8h5D9L9lEK8FSO\no72eSua2xBW0PhVqUen+s/1zxUffFzzTzu9liD+u/iE8mrDC+i0jYIqP9i2U\nFCYwQf+jR//n5LUIo4YExkt3mILn1mpzqWAoXlRnYZ4JrwgD4W3qUXlLfnH7\nP1jj0IP3k+NJe1VdCzcANpv7RNdUbudKPEHdjAJC+75TumJ9dsHlqiSAYLux\noz0xOXFKNc6WnoFP2ud5AycWKwAC/DGgFvi35XNpn1vTwuYFlHpe2CfnSy2R\nKEyNPBS2C3QjavE0z2YUqNX4C6ybCQEiigPFLI7nv1cv2fYcaPX6V37G8ynZ\nsTkf/L7QXcqK1zMRu8wQlRHkkj4KX+MGxI8NyQiQx6wfGgAaoIlP8p++H83w\n2jCCCUzH2EG3YbcU57spihWZHIKNSTFApkp4jtY2yD3gjZtV3Qt52bHyTdmQ\n7gUMgQHVKTSD/6NiT0FmVDGfD/YpFbPT9dLk0kJZ+Au2Ih2pCxcM+YGRHjcm\nIZv+gQSykjDtXXL006VbBBw6Z1+1suxaoyBxnN1qYrmmIlTxQDA0resES/dk\nVoedqP9yuS4FU/NXwldbgfdcscCk0zv4AgHQ1JamH0RCR7B+YDm83jmDlpE4\npDwd\r\n=f5gR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"14c280da010752020ceabe96a0bf0814e46eb111","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.46"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.59_1617750793827_0.508962696980362","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.60-renovate-non-major-5eded006bf0afcf602746b68c0196fa8b508b77a":{"name":"@balena/jellyfish-sync","version":"5.2.60-renovate-non-major-5eded006bf0afcf602746b68c0196fa8b508b77a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.60-renovate-non-major-5eded006bf0afcf602746b68c0196fa8b508b77a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b920bd38f100ef0d0d4eb5596addd2dbeef07e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.60-renovate-non-major-5eded006bf0afcf602746b68c0196fa8b508b77a.tgz","fileCount":24,"integrity":"sha512-SBBPAaswDdrZtMZELDSMdSnQrhPNlnHJceYy7nxFwIQHWySmBmQMCY82ez6LPhc5HxZ/guiR4BuMFI/TCvgjZg==","signatures":[{"sig":"MEYCIQDzvJ6H/r4hUattZDa88hPeCeACqp9ttQAbHt5+vD8qKQIhAPIPqk4JPsMscJ2JuBn89Ek2sItlhXcK3KZQCNQBtG/Y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175091,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbSNECRA9TVsSAnZWagAAIUEP/iob8pDDNIWyVAGTAad9\ncw0HZDVpv3LoFgCChk1mXROYIJbQ0ph4nHiCmzSdm1RmfRyrkE5fcbA+Scnd\nW/cGgMVEaYz4GTRrYY4SAXIZqWrSb6LVT12HW0dIXXOFmdr+NK86MjKZUiaf\n0tTx6b1I9N6VTYPawoOHVZ9ev6A4P3OGbCIijnwB+PIJd3ibUCBWx4sATtZm\n7gbuZuEZy0XOBHBFh2JqBOo24cXN9OPbhQKC1ORygl1pUSn8/eNVOsdO0zSj\nEBUSZjaYoU6W0JCExXIVNdwc0Vv8ClCKIVXD8m5EytIfoWpB9BsrGvLMLLZy\neahhZ8jSP9PhZH6aC9gx1vmM9sTk6iPZMevDkACfpQMmoIy3dVL9QbW9IRYV\nKApKLo7kkGCerKnguRrglHD5vZq1Hab80JZO/6bjMUOrlyuzivuNxADTau1A\nATwBrzoflN+GUnztjkDKaKzqTJSGWvJtidJVP4LSZDl0CCHxojCFqvLcMb6Z\nzxtwB3xqJDtAHA6BVOZYBxbImMf6Xrhp9e/asGoyqpbY/vldRLKwu1BSjtJj\nDlMrjswqcaw3JqtuEBLvuCB9NGdn2BMunFzBuuC7vkhZd3WMtm/p8XGLqagU\nF4qC15olvLQ+3CLUaN5ME1p288ijNnIazFhs13YlHsXrM6tx3cgKhwNWmQy9\ngbBa\r\n=VLOg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5eded006bf0afcf602746b68c0196fa8b508b77a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.47"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.60-renovate-non-major-5eded006bf0afcf602746b68c0196fa8b508b77a_1617765187563_0.1677566897221645","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.60":{"name":"@balena/jellyfish-sync","version":"5.2.60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.60","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"facaeee4896ffff08dc79023f0ff2a3d26478b2f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.60.tgz","fileCount":24,"integrity":"sha512-ldLpqsZ2oam58greY84v8OyHX0x98JqXsrlaeinkZZZlkyD4ljjltGXV9pSsztesKCTCd652papT3DvCySWqwA==","signatures":[{"sig":"MEQCIFhyTQhfO2HpsHokcMUbmtr7dhcC98DqXAPOSe9y/AteAiAkuhlJC/n0xj0PVhAXihMGW62O4HYCXe/nQ9bcejKpeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbSRzCRA9TVsSAnZWagAAszsP/jMpcFU9cfWpJolJg+Af\nGMqD9FXeC+RgwR5gFe6mq+OqYemsDh7IQ8qbryep3abZIz44tyFaghNhDaNW\n+pk27Seif7dNqP0EcIcedkY/pgxoJwBAHqClWoFZUlk1nyjOZKhYHp4iLDjS\n90BRTr7kc/Ul9pi2lf/Z9y0vry2su3qK7DQQsF6eoFv6kl4bpAIw/9G7Syjv\nmohcwLxDFw5hzcY6I2bq5318fjZzPnEqXrl0b+7z5ughLnzXaJIBA65yIQP7\nAAHEMdsEeM1r+MVHprcnQ5meVkigqG2D11IJh8HyiI6ooVnzVokH4+fTtuHZ\nIowQkIm0lIMa1jp5hQ+zIhD9XTPKTNUIclry6WCzpFwjyyh70p/gsmi2m1MI\nfuiEJ3Y35RW5xORnS4n695knl0AOdm9vUrsh8AAcKcwWOCxaaGt27GwzaBUg\nIZbBqKSsmDPbiip9NLIwIsGQXuMQav2o+HYF5p5mx5VkidssHjzXKmyjSpy4\nFE28TPrjjDEb4qSYuopJuyDqDJIIbVlQBneF/jwywY3hCnHLoq2vVdLB5wCr\n6sSpWTMBquDWGTs6o8U0qs4l4xtd+zTu/F05fd/KuhACy2CX+G2TljLiLDMF\n5JxJK30jmNQdBr1Pkt34Ik7C0Nht4kEsb+hMPqbD0pmgyyCL7PcGYYab2epV\nN8Gd\r\n=r/Z2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"569164c8f81c06b5d322052d5e273849ec574b33","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.5","@balena/jellyfish-logger":"2.1.22","@balena/jellyfish-metrics":"^1.0.47"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.60_1617765490671_0.7650334001361598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.61-renovate-non-major-4113cd984b2ca478b18a79fb14722b59ff8b2611":{"name":"@balena/jellyfish-sync","version":"5.2.61-renovate-non-major-4113cd984b2ca478b18a79fb14722b59ff8b2611","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.61-renovate-non-major-4113cd984b2ca478b18a79fb14722b59ff8b2611","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f53fbba0142e000d5ef1711867fed1e119d79f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.61-renovate-non-major-4113cd984b2ca478b18a79fb14722b59ff8b2611.tgz","fileCount":24,"integrity":"sha512-KNNTotarSC3NGjXtUI+TxO9l5mm5d1DqB65jdVkwGWlUkwyLgvbm9TzzUYnkC+Rh4DYSmvfcWqpoe5It0ISXfQ==","signatures":[{"sig":"MEQCIEg+d4XiiI3QKBPwPGeb1h5xp3Vt/tzQ9ubfndJC/hGFAiAvTmeBLMLFHNtr+4Cq0ZJcgKK1SMveyX2BTpT3QA30Vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbh4fCRA9TVsSAnZWagAATzoP/RXAkwanBtnnNd3cNdBu\nsnsMVyEeIaeXyGRMIQDnCiEeuUeCcDvzQf0NB0YqiQ7/pTMjLoXxlqtg0KIG\nsp9+ikjw4iYYXk1phtv9dWvfCzBkZS2wWkvu+PemKWVpla65m85DE3x2+faV\nBK1bRChUetxVfJr+2/ZDBOC5nOD4/3qsQL0QGV7TkD+mCrmis+qwzJSg4+Zj\nsQ49JqeDrHDAjCMPmOwtPptcUjLDMcSLQW+XUho3acGlZ+GdSd9Ta+GpbGas\nb0CA5wxRBaauKZJdtPHHPpZUrVAqjjRqkwhwfdFKaVImrL2YFvYHzhvTgrS9\nl7KGNCFp3zGmOmvwtAekL4+00n1/G9DjsfsdANyiU+bOGi3V7o2xJDEAcCH2\nperJhxJXsUCwQc6MXBfzgNaB/Vh1GpYkRfKvDDhHCtb+IDHInp2ohoL+xmgJ\nueiJ9q1kE/7bRFongJ9ZLyns1hAhGMldXZdD9g548QXidF3cc7gAgnlIhXpd\nFCcAHAV09k/46rblJX++ezb5dsrQtjeOj3JFzWSXoUWnZIF0FNI1/BN9Thgv\nS8FE218vFUma78HsPmMcFZ7IH1Amd69+6lrfpFwM3kBuzT1zeIMAc3qvf37U\n9RRS3vylUXmMnCMZ3iAN/ff+etbo/jAVYTra+4Z2/rFFaTM018kBG/6jn7sl\nFx9x\r\n=aMLn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4113cd984b2ca478b18a79fb14722b59ff8b2611","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.23","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.61-renovate-non-major-4113cd984b2ca478b18a79fb14722b59ff8b2611_1617829406695_0.7185853856534905","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.61":{"name":"@balena/jellyfish-sync","version":"5.2.61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d71a8badc4c22c5911dbb2f707c7cd029b6042b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.61.tgz","fileCount":24,"integrity":"sha512-CNyoa1d7bHFJNLtR/AkjgRf/DamvT+FfTQOMgMXw2103Va/EspFe7binxVVOShj6VRRkEPw/hLrpZHULCFyH3A==","signatures":[{"sig":"MEUCIQCeEeYWocnLs20gao2oym0Ihp6ERWfr+VCkZEimX2Wl6AIga3E/i/3cvTqivW7rtBTuSToZxu/rSKIQGYYlAVvK6O8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbh7sCRA9TVsSAnZWagAA8iUP/jVtSG1AxEce5STh6/2/\nfU+yvBukDpmwS65Y6xs0j9Xx7AuwHlPcBpYJH4r3xt+fprarKAlrtBeLtYax\nNhP1gl9z8bgv7JqJ24r5Ii2pHH+8XSRN+sYag7f6NLRBhZ4I8zImsTbkGibT\nzBKTM4HS9ojJLT6UGSjnjtrmLTORz0F5M8j8LWhPNBZ89WTn2XfjWmvY9sQA\nNefhXvhJuDUdyALN2+kThByumPo77Fr/V7wq+YAMAoFhAxDHb1VU6bp1ovTn\n6zekqOTwfM3Kob9pFJYx2SF3+eBy1TGVPwRfqFpAz8mOMzNw+Vl10OkQ92Y4\nXI0YGmW67vQAren1NSmMCLoIFDvzNEZadweihoa/BcGr4Ovsbn3KZeGZYe1d\nr1e5J+Sg28osWr8+ZXC2U+qBGS41YbqakT3SpRS4TW1ElJIMNLx1rcFnWhvx\nGWz9kJ1FtdbEeNdZ1nQdIW9nG7YC0M+b+RDi/OONGzodQjl3CyAFeaVV7Acb\ncYuchCeCQO9mi7gsgdHDjXVKm4X1bJGvTf76oTq99Q7/SyiqwFxB0y2GCQcl\n9GF79Es6d+GS8JJPi4QVwZjVuMHIJiiX308GQjunPxmIFPhlSZYlkjWO78DE\nWiJNTkfjIwzDez0V+n/LzLUFuP4y0fFeerIy+dxHoC+HVYKG6n5wvEXn9D21\nqBsr\r\n=FosC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"840ee4a471fdbe058cce4ea27d9b8e4cb77d7bd0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.23","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.61_1617829612297_0.78953672304125","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.62-renovate-non-major-8afdb856fa51469c73deaa7f05ceba66fec46c66":{"name":"@balena/jellyfish-sync","version":"5.2.62-renovate-non-major-8afdb856fa51469c73deaa7f05ceba66fec46c66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.62-renovate-non-major-8afdb856fa51469c73deaa7f05ceba66fec46c66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"280af36ff26ba96e3f8e38d623f1fefd953931c2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.62-renovate-non-major-8afdb856fa51469c73deaa7f05ceba66fec46c66.tgz","fileCount":24,"integrity":"sha512-5Jem9pS9o9TJOBKCqCaBIzQfETFKkU1lZbVOBzThb2YX6SvNZwcQHDoNAQVk3UubZ7STXIZBSqA9D6JyYqX+aA==","signatures":[{"sig":"MEYCIQCxzmgrFwzGShkPOwfvKeFgh3WhtLDY0Q4oBJTdZnKg2AIhAM7kDBywaUW34QDEpG6r97g21jk+CHh4uPRFPLC/WLjb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbjHECRA9TVsSAnZWagAAtmgQAJRYI2yn1fda86ZgewYg\nmEVqRzb4Jrg1VD1/X5iBrERvz0h/jbxKK9CIcpzCzTsXCsFMvVVQnjXSlYeF\nzoK6EXQJHiTnFsxZ+rDhkQcgPOqd0jZO8dfsol9blNRTgHaOoxrQdprNLUKn\nq81RCheggF+i6HitzqCbCk+WNRoXa2HZs7+ohs7J6vpWjDN1LjjqEYJeNXE4\n93m11RPLB8xlznKE5g8YGchu4Bq6HZBCevFs6EVw2HvYB9dDoQsqqLp1UZAj\nQFLPzJeduNN7CPKiaovCMjfG3qjrxFjW7k2pqXCDvu7dw5S7vyubpSHMh9Ti\niyeSUR+B7DOjgScJSLTTWv/VQS0RNDdNtJzjN/evWX988q0bSYLBahiNXm5x\nlOCyiebkIKPHV8ISVADFX3Qit+ZkJtmbzuzDW3awdKNl/QVpnLkehgDT+XTT\nsXa9ktdsPip9dDmGaorR3u5BrthYsWmaSh8fhYVhhEF2j6RrsRP8W9Zc6fEi\nxs/Ea6Mn7QZl2ootBbmCME+Sap7fhtOxrPcCdCMg/A20Btpl/odCo/YA1DFB\neSmLNsD14SLBqsahF1g+WjvMHHY+HYhZq49DLlj06MpXE4UkKM3j8xED6lCn\nSOvupDjaHtuU+RkNg78yrz1WOYCJEoeoUHn9neYA4RSBHql7ApSPqqdAtuaX\nnXB9\r\n=tYxq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8afdb856fa51469c73deaa7f05ceba66fec46c66","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.62-renovate-non-major-8afdb856fa51469c73deaa7f05ceba66fec46c66_1617834436099_0.8711641270557495","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.62":{"name":"@balena/jellyfish-sync","version":"5.2.62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.62","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d63ff87344464d9c8ba3da4d523923f704a945d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.62.tgz","fileCount":24,"integrity":"sha512-Wogha7A9SH/oTfqcgAhRheDrgpP09jb1pItYBQTrJt8S7102r2wDi5zoALVmNJof+Xi5msYGH1AmSFDBo7+r9w==","signatures":[{"sig":"MEQCICtSOJErWpsOvkH3CGmSjFjmnbnnFtvgr4OG8rogydSlAiBNe0qPUpW4GTF8yhKQJKI5SRNKvQi6E5rcgwd4gIAlHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175803,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbjJ1CRA9TVsSAnZWagAA2I0P/RPCxXlt7+52MjEW4wfm\nAtBZ4N7GgCojLu/aE08CpjedTNCdgV9ZE27Ve5uLyRHSsouokTXAI6l+Wj+9\nWILEUcgVyHoJ5xL10YYrYKiUMKxPxLThJo90AAxIWx8izaB/kYAGIpfcs3YZ\n+cSa4Q2LparKekgP8m/rQCEoVmMd6ohOSlw8DO0Djgs5mOhRfJt62t6EnMZl\nVWwmVNUbxqJOFJtaOsFV+yc7UQeLG+GiDVOmWscBuqjsETor2q8JGCvR/hpc\nEnfCJXbT7s2mYuD5OVvfYK61ECk41oS/WVGeIm/I6vg7PzE1mdZ1UK94zo4F\n1ozie3hoQrZF5gvuxSayBV2pGJ1fV+IUlR2HW31mtfvF+X1uaVdW/+NIxd7W\nbLCVe8o3lsvB/kK1id93B7NKPThX0/JelFA+RAE+4/9C0/69i1DU/j8ofzAZ\nWvqDUxi6koE8W9NW5YGvTqYjLAAjz7zxK79rNmCEJeKoklo1s69OM1AI15w/\nhaTgH0ZJlJxqzqyTjeFiqMHXiG48QcKMw/DjlnZOOk5+tc576jvp8p/Wnq5D\nVcMsemLM+2pYemDyzcDxHl7YZOjoh/eMO3HwaGmUEqX1njgLPwFM+1cQiCm0\nP/2cFtqN6ZapQAwp5dnUQlAZUGsyOBrU+eqcDAxtdiTfOkhJSmrtl2PuT94i\nOeBj\r\n=zFp/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a78db7790fc50b395ce032476dea407c8c098a74","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.0","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.62_1617834613042_0.9938311347001674","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.63-renovate-non-major-d2a7f655e48e4d8758bf9ed2f473ccee02139516":{"name":"@balena/jellyfish-sync","version":"5.2.63-renovate-non-major-d2a7f655e48e4d8758bf9ed2f473ccee02139516","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.63-renovate-non-major-d2a7f655e48e4d8758bf9ed2f473ccee02139516","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4a50d16928797df5a91c3fbf188cc63ae9862854","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.63-renovate-non-major-d2a7f655e48e4d8758bf9ed2f473ccee02139516.tgz","fileCount":24,"integrity":"sha512-BSBlmqYo8whHYExRL2CV9UK4wRAvuVLHghtG4zZR7YspxTNrQmOkYE4Wq6J5yU3sM1LmtaLKWYWSTeuJqsHVMA==","signatures":[{"sig":"MEQCIChgo1DYT7z7sXtf/ipWXe0sftACOX4UAz7tY+iCNXckAiBZY1K6CCZbU2MxUhjoZR+bGdBN5kFNbjE8E9mVgaIpaA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbsQXCRA9TVsSAnZWagAA/xkP/20LHWqFYpJFK0nylc5i\nVk1HbNYdEETmiaFcpcPpAAA/9q2Ixoch3Xn9vwEng6D7inw9uQoPEXBe0Mdy\npYEcp07BANiZpKzuWAeTs8P5Im+EAgQuUCsoKAzRlwi/T0CMDcZNQ76zrQP7\nnlghVgZRUtsMdhY8pJDziOo0h9SaKsi0McURW+B7gG3Qs+h6zQa06eKa8Ndo\n9zefUuzn4i+58a2JJpDuI76oYKakzy5kNrvk9muVLO6aN0+QgP7E1BuSepLS\n61GTCXO00bHSDWtPcjeizftR9KU+m70tGQCHuXGhprkJqASA2YwB8nXMkKRg\ndsore0aUVnstVlaxTSI2wBuHkpyG+cDDJ0fkxsNrfioc8BAZ5qcJ7N7Khpvs\n8ngwuoKSjASKu4/vQOGLB7uoXrTROtDv7wLuXgmF2KlnnODdDxa5azjnlXfn\nwW12/5NTwZlGotQttvbWlDWkPKIj0R360zaXsGlxsjvozjD3kuO2QIapC612\ngMOqOqk4hOGUWBrVXjkp1Af9nIOer6p42Iti94cwbwsRmc8SQckV1wydKTVy\n7/Fmfq9uEWTbLNYneDgMu/0JraAV39+lHZzzjPSHAnTYFaSOY2X/QZ1dr08k\naykkC67wxvpAZoLEjugDXC83QxfxQ5akfCpYHhwYoI4b5SWkjQCw2cmspJQY\nFu+2\r\n=T8zJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"d2a7f655e48e4d8758bf9ed2f473ccee02139516","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.63-renovate-non-major-d2a7f655e48e4d8758bf9ed2f473ccee02139516_1617871894777_0.5780900247285354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.63":{"name":"@balena/jellyfish-sync","version":"5.2.63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.63","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0e110425c618b8bab22d0a718d6e376fc85bd960","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.63.tgz","fileCount":24,"integrity":"sha512-fdYkeiASLKOTvy1AVFsxNXuYoVncjtqlaww6YyGP0hRt/d36NLhpwli010PwScpKyxru02dghHa0tqPfMfZ6Dg==","signatures":[{"sig":"MEUCIQCuZD6Ws2wP5Dfcq+97f9lJGGIjSfUDwyEyJ8AUBsRnAwIgINqpNXd0n8i9+exPBk0XQQjjoMJhidFk+nOuqNLt1OM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176188,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbsUJCRA9TVsSAnZWagAAqt0P/jEG2xMCBAuYM1VkOoTQ\nWRpid6T+FVjcwggh3vZ1rbCNwxw8o3QayLt8957nFaaKUyZmqd/wzK1u00ZZ\nFrIRzd02X6RKnmQwwy+v36yQtDhyEJJ2dMGo2ucCLh3lFYe7kmhHTeL9XLKX\nY2bcEWQIRTG6Y3Y98Pup4DAfTEF+A834PYkBCusIwmabfwVnDtJdW9z8omcc\nIL0yOl/ZJDnZepg1fZllA14vBgRkja86Esc31Fm8f8503bHa+t37+hS9FP6b\nzzILOmdCTtZPuyDppkYobzezsgRQXugho33kawCHSA9gc8uQ1/cQAU0yOj+u\n76ibpm3zYJhOv9NXf9Yxg2KStK7SI7W64u0z668uS4dp+xOe3Zk6RfHPtNfZ\noKrH+t6AcEMB9Dv6hfQb4pIaFpYZlFz4e/ALqfAwNLCkwUj5mY/PzpBItfXu\nPYwaqZv+Ig6oxSmXZY66Im67ydKlZJJPkFmERQMmHkqcEzJZrZraGmzA1iBb\npWpEGmLQ0+mHjjJ4kXVNsGbQ4zbbK90R9/71EcxqFxod+hledTDVBp7ncJG5\nEK4gIov2aLSMetIExj4uOf38yZ4qpe8oEcNkflXPJAxXqhWD447faaaUVdHH\njQH94eF33l82T+qMkWfS1eB+F85V6Q/CX06Js4rRy/yzqpt10nolG5Fa2+4J\ny0a3\r\n=9tIL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8351677e1229e4bd07067253025e1a9bcb25fa27","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.23.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.63_1617872136476_0.5476823401920097","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.64-renovate-non-major-17669c45058300830f386c682adc3c77844f768d":{"name":"@balena/jellyfish-sync","version":"5.2.64-renovate-non-major-17669c45058300830f386c682adc3c77844f768d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.64-renovate-non-major-17669c45058300830f386c682adc3c77844f768d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"91d1ed17fec71350556441f0bb6fb03babcdbe83","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.64-renovate-non-major-17669c45058300830f386c682adc3c77844f768d.tgz","fileCount":24,"integrity":"sha512-dPpk7uy5dNZQ84OgPUD0UfpBBpPqghuulN2LntYDY5uTqILLQ84Enj0RbYqNGvq86craqbM0zgX6+pFI6V8DGg==","signatures":[{"sig":"MEUCIAS2M5JJaWVLUbjjlZydnZ2dBB8f2qf0GzlsBkIgPVOjAiEAqXddThpJBFWf2YAlTqzps+2Cigdft9iBgp9r9zl7weE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcNpYCRA9TVsSAnZWagAAjhIP/i4LjBtVYYeGoIVHzHVx\nplxtkE5/nFKeLFmFH3ItcolqlQy8euODSJvOUGwSRn3pNk5pERDyBy/G/RPE\n9JnXFbit7zxvIrroWQHZT/jHJceFAPrBy6irMC+4odFAh1UWaxUPuZDgfGwC\nz+PeF9WaPoQuBhsg0QrNP7aXoF8vHprCyre109Q6LIdqN5ObkTfO9suGeGSo\njC+F3YF7vKxk1K4tioZ3D9EWhny0sXX0HoGxZSJw7NO+8GE0/DV6znHIvjYW\nFADIG+eRbtE3bMnP6WIPcPwZGZs6k+A+t0K4hqwy1LdjoCBB6XJIfUg+z/FQ\nbAyLF7ImuvO5kRaLa/c20yd1ClsY54Y/YyfmmQxf3xoavcwixBFqCzDNOoUN\nYsykAhxORTck7gBcevo7NNfJKmido76NtCAXamUZXxN9xRNyamHBzEWwu9id\nzyKQojekUVjZFlnidcEqBaduG3rZ+wMFl3Cfq5CtdQ9sIfBFLql0yJs8cxQf\ncFxsCUUuh3+k1MrR6eDOBUXfZcaWd3pWHIq2OYpTWjqvqeNbavr+TE0yfr1q\nVFlrKcIVVyfZFSUTLVFnAhGNamLsujBbRARAsmwgsAZTNlxJ8HtOPkfWfO3n\n6Cfp2fy9EJ25bdsSV0j+2O9m0uNxoaqNtbx7v3bbuiHCJtMzgj1k5zGB1B76\ntllv\r\n=v+3/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"17669c45058300830f386c682adc3c77844f768d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.64-renovate-non-major-17669c45058300830f386c682adc3c77844f768d_1618008664495_0.8233224889108415","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.64":{"name":"@balena/jellyfish-sync","version":"5.2.64","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.64","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"74dc5dbad66d3ac3a38a9ac5cbd6549af1f5fa7f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.64.tgz","fileCount":24,"integrity":"sha512-U4v9m2VHgFeKtxUJm07q4YD9lqAAAyccNQMjrJHYd6wN8/gm0X89W2VLj/uDPcpkJM8q3PJxcnzaChbzQ73Dbg==","signatures":[{"sig":"MEUCIQDcWAtYWfzlyewd2D9787q1koZNm+epaTJHPp44qFSpAQIgWMcM8X7H+ZIwRb1YZdnyo/Dw/vni6jFvpeiHm/ubPBE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcNsLCRA9TVsSAnZWagAAOkcP/RAADXKB1zRIVCVlGOwF\nC++IDuftWnZY5rgKMuCBOkuNKJE7ZFnkPDsgY0ZRDOyFaEm1ZJv8zkmEjzvK\n4RCEphCLtH+isbfYj3TujRSkjzMw5jpO+YsbcPBKEwMmIEYFX8Hv2YAcJePA\nodKi5fWVrKDxJG2rUctldwl4r8HROtZp2A0qptL3u4w2O7XEIGvVcwoi+5T7\nwWYM7WlVseCG5rWko7BfUtQBrWz0tJLqzqDUbfZUfgl+qscNhmT91bu+lwhq\nuzGXUjB0psaF3+wG6DneQLt0RDVgLGjZoH9G+cgrUr6a8Vp8Tb/Zyjp6uza2\nP++PeBYQ+/SwX9neWYDWmdSkAIJatLFMYFUAanqlH0JBfyDy9xmuOhPsqp4k\nmGcPLasoebCkiHW742X4V4lijU/6BKoFm9aMM0nljEKS7T1IIoR93Qg8ixfE\nyUapiDaAhD4auEvBoJKbvAkzoptrH92RnFNTUlYGXltOrW1QxXg3fmaa+DZa\nHmr25StXmdOSCFRnJ07gUsLnxtcCCfpSPC1bPN3eKQA+iABxw9gqSOxSdG76\nwUa2PYKKmGTp1RyA4kiGQAuYBhIqok5nK7XJ+CjWhZVwtj5sRQLAtCThakYR\njHZ/nY7JlBdC2f9DXdt1/KEZmke7TIv+Xhk3jeTh4BZX5MQV5uJaIDdjfSkn\n3IG5\r\n=3czG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"84a12a895421e4396ead71affb6e36678d98c001","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^4.3.1","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.64_1618008842508_0.5654310260363002","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.65-renovate-eslint-plugin-promise-5-x-f431ee2b334887dcb5d58ba64b6e8f36eab5230e":{"name":"@balena/jellyfish-sync","version":"5.2.65-renovate-eslint-plugin-promise-5-x-f431ee2b334887dcb5d58ba64b6e8f36eab5230e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.65-renovate-eslint-plugin-promise-5-x-f431ee2b334887dcb5d58ba64b6e8f36eab5230e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"639968bfba69c76f04138395b55e3bbf2fe10292","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.65-renovate-eslint-plugin-promise-5-x-f431ee2b334887dcb5d58ba64b6e8f36eab5230e.tgz","fileCount":24,"integrity":"sha512-tzYJYZQ+rmKeuZj+nDaCpZdeQQ78T8Zty1UGIlpb1x+7mENGaque/z3QW300Mfo9qv8tOBwyjnZQA2ckHYe9BA==","signatures":[{"sig":"MEUCICkW8O0hz3lRBDK10F4pmXmLqK6Xc+Lv9iUXjMHkDc+HAiEAiq5yTJlr1DibPu7Hm4+jrme2kW5KPqOl9OPtoBkkAKo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcNvQCRA9TVsSAnZWagAAfH8P/iU8Css9IFY2iUpcC/in\njlIJk6ZUHsVCgb+04s0xaCggef9YZPuF3dN+nH7SUCS2PM958bZlvfg8xARI\neKco4d1hk9Ytc7IQ/cE4tMx4nxtymm3/46Is68AAOMYMb0ppTb5GtOTK+OfZ\n61GwiRDdme8QnY4/8PqEoiEymxvEg8dsXbhG1rTfKEQZkNPjJ+4ZfeQn81+r\njnfJtyOBQnYiqOUOHpH0eyC2oUm7ZDPRxqjJWbX22P2zRBcbWRujbSoujfkP\nPDSxc7LvwWUnKWZ3+SevSMyoa9FQfGvqhc1+pHPyY4XyUfFxAZcf60L5t1fl\ncq7CBUY2D8RCIfZt2BalBIx2K06L6F60/WsMOL+Pys431q+2ReON56yrre+X\npjO9AwmnmASe9ljwGBaQqS+xpWuTX+ySLTumx/FNqHVGB97qsrEtrhIiyw9s\nSVOol0Vvb8Y1h4xLfGJ5fBU7zQu4xu8F9opKG9A/LNtgdfrqzIY+K5ft4P1L\ncj26XJI3AUjpBGiXabt5URSlZd1p+vjPzETXBpGk6djYE4iXEHXxovSm7aEJ\nwEWK2alWxcoSHMYXl8RBGxLA7etIFJefJvyjdZnE4aDiz6XuPqu2PjHgDsaG\nCwbjSIa9q+FXWX36pZyg5H2t9qqXBiibi5QuKwkdwmdBK/bI5xV70nxb1xSy\nvCbw\r\n=bH20\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f431ee2b334887dcb5d58ba64b6e8f36eab5230e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.0.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.65-renovate-eslint-plugin-promise-5-x-f431ee2b334887dcb5d58ba64b6e8f36eab5230e_1618009039753_0.19041992564470012","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.65-renovate-eslint-plugin-promise-5-x-6eaf4b52c12faf152d8538e3ac641aeb48cd856d":{"name":"@balena/jellyfish-sync","version":"5.2.65-renovate-eslint-plugin-promise-5-x-6eaf4b52c12faf152d8538e3ac641aeb48cd856d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.65-renovate-eslint-plugin-promise-5-x-6eaf4b52c12faf152d8538e3ac641aeb48cd856d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0f1711d755ca02d7fe549eb2b1ca51742aaebba3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.65-renovate-eslint-plugin-promise-5-x-6eaf4b52c12faf152d8538e3ac641aeb48cd856d.tgz","fileCount":24,"integrity":"sha512-mjYI8eb1tvdCHNnow79j1tdQ+ajMM/Vrc3xa9mvh1YniTNyN6Sdq+Jtq3rjEs2yHA2o6ucudqrXp3gGJ/VtKwQ==","signatures":[{"sig":"MEUCIDjajK0KcUlpjHBGatoAnsS2lu3/SMx9zIBSQkmtkSzvAiEA3HMW4f/Fk7wYHp1lF2iR65OGafWt8P+TZxNSzSI6i4o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcOumCRA9TVsSAnZWagAANdwP/2d2OHoEBzo8j/8wKWm6\nazTXWSNafWecs1NRnDytytHyN87JSFrE/PcyUr55Mla815A5jVKJnCetcJsj\nfNkMkHMP2GkGUcHDFYQqbPyvLOUIenksq0ZpZfa4KYA3ryHCk1SYZyBLMZ91\nmApdVIRK04VbXhtUSnWqRCjkAf6Np3XnzEYM2LUBmkiJt563BOeKJsDeex+F\niL0Nor8H63kQm/hXIXiZtZBNfGpbdpAZ26aH75b+isNK2WR9eN8iWRzLqf+K\nwJayM46BNWJeld9wt13J8BuFzBd9PEHM79gu6/AvboGSIvenQSuUKwmPqTDm\n3EZ3Dz5VsFb23/x60Q3+CNY6vHuRHgCNzfKqkLlHGK/sbv+MtGUiqpsONv8t\nXFGCCAyhoYFxXxSKWtL25R/z0yBVjE54kqpfS42pV2zuSCFkfDLeH3eHZrT/\nxgyHnLUnEBkWedt0Rgh7a2QMMV+xV/1kbcX66zv/HMv1npf1k9nXdPeCWiSL\nleGhNaT8dRVbZL1UZxq8+9KQufH0g+G5lUqt9QAG9n0bxNAttH7QnljUD2nw\nHdCadYMvbwuphtPSnxUEdqtG8n/D7Xbik5uQgSbsuXUPojstc2LumVme4vi/\n3Z8QUuC61FkFQ6DUM5qj3UWCMFeQ/RmEvljxnM+JnWQhfFaS8T2q4Dz3vFY+\nqbED\r\n=WkoX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6eaf4b52c12faf152d8538e3ac641aeb48cd856d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.65-renovate-eslint-plugin-promise-5-x-6eaf4b52c12faf152d8538e3ac641aeb48cd856d_1618013093776_0.7893676492973178","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.65":{"name":"@balena/jellyfish-sync","version":"5.2.65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a38a473029c10b4288639f7bc66861b54440a59","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.65.tgz","fileCount":24,"integrity":"sha512-RG0Gm75uQEvDm4Y4FzWQS9EMUx98tHoY5aq4+D9hcZZoVO2eDpcUVwdiN3J/u1Bqeq8PSF0yFk2sockTsk+r/A==","signatures":[{"sig":"MEUCIGCvxUy7y5R91chcMvgZwTBVzon13i1tmtjzU5veRdsWAiEApVX8wmkTou89pQlcVzhU3a8eYmnfo4t/pRJMz+BdULU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcOxnCRA9TVsSAnZWagAAht0P/0XEZCAh1GV4nyOBY2Np\nRPSevucFOdyAF4lvynqYjp/sqXncZRxcB0k8OknfVLvD7ghcdBfY+vVm2BeI\nF7Wkms7cZ6DHZiVg+M9Xavn39K3lxOeqGg+H+FwgWarQI871X1p7RH2tX/r3\nf3mXnDMyvi/yqQR1Jp0fnzCGLoZ03ut9RxrkfEeulSDCJwElG07Fet9/RBNS\nZWYDNLLO4YTJUPtRqGgkWVKUqqJw8QsLeuUiARl2+wH4ll6whEDD3ErMRiVW\nR0K63X9ZrM328LKHJHgP3ZQ+6La4rOjLaBSYQJtY4IpXaR8AB/8KdTf8COwC\nrXSOosCmTTBgGMJrxSeVEkRqlS4ZTp/hAmQ4BPbq3743s4zbzNBaaiJAgZHT\nAFMRZsiIpMM8fY6ZeZOYy/6F4vOIKfQN7L3xlkin27rqO+ma68JUsz3IpwmN\nhGhk3FuW66byUVz+0sdweAJLJgJRUmqGjfUvwbMUPPBGtYi77Mzb4EWoEzTF\nqVaH1+3hedJT3f8rJOIGQ7S/EdgSUBikUJVYmrFuFnrF5WpGO46HH5rYhqRL\nAzW5O7tImvMzS7qDWls3+Z67/8scyXHl3TjdM4aRo8Ov3I4G/uWZDVyKv5pq\npwAGx0UT6kPu//lAGIVa5qa4dQgtX+VRySGKsy0eqk3ffnqYb1/kRSxzm67Q\nLdrb\r\n=M2R9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5ae1fc2345a271c63f79458949ac7e9a0089d01b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.48"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.65_1618013287425_0.9438355781465728","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.66-renovate-non-major-b457acc083f7777a0a221897885fbc2a3d780f76":{"name":"@balena/jellyfish-sync","version":"5.2.66-renovate-non-major-b457acc083f7777a0a221897885fbc2a3d780f76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.66-renovate-non-major-b457acc083f7777a0a221897885fbc2a3d780f76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d513e9d3107a93fb55b04163cc1c6184ea3e301","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.66-renovate-non-major-b457acc083f7777a0a221897885fbc2a3d780f76.tgz","fileCount":24,"integrity":"sha512-imRmQRQxuRTLyrspHFWB7WHXC1a2Em/dPcSWTNgPmwODiWUYfY6QizLGkwyFa+HfJv3JGu1WzplqJBq5pAy3Mw==","signatures":[{"sig":"MEQCIF9HfRmSfDxVr53IixICMA+4bIkGwTT1LwiruUWX/9WLAiAMeNWEkDqjRLpQqi7vYmEO8pLrO9/RF8s+jrkYyfLDog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcQTcCRA9TVsSAnZWagAAFNcP/3XseGr/aAgIK1QJ6L/T\ny1FMB2af3qPpc4EPaIM1VE6ton0+xr3qONjKH5NHkIk5v2axfl8G/2e1ldbI\nTsVREftHXqfnGHSdOP8BcNMrbEDmEAVe28Y6hB0aQ4SYCg06WrW93ewOw3+4\nNlm81JbGeqWm5ESiFvHhoDpiBZL29Gl2AVT99ehvyuzipTV2NTB2YSYwB6n/\n578bMj4NVjSKUYJbLocuizjVoy4SaEwyHV1bEn1W5j77lfCW68y+VBA0eLUB\n4kzkHVAAQTvdSEgdLS3LwkP//ZB35OabRvPQv4aN3xTcLCT5UaN2+XXSrpiM\nZF5Yv7uRHccX3GYm2ATo+NG/2nWZiLL+gqEmci4r69N2IDfUmgD022mWVUth\nq2aeZnI0Imw6Zdhb4fIcaOo5+PlQSgYIkgcFwslBn2q/DMk04fHEZRBxcRe5\nogXete+UrQp5SvVdeQPoAHD+FrTyBlatdnQaxCENF8FZSDq+HYPq8BB6Gr1x\nXL/DCBQplG0u8zrXye94FVdSqDoSfZAT9NUnRVP+ytCBpIt4NlsND1OJQMXO\nXNa/0hmJMRd/0LFGu7LHd3RTv3ZL/0yKIiWzX234BqfVH3uJFQjaDcf4acCu\nsdFmmkYU5D+w7XntJRpvsYyx28zqMzDjxYxow5Zsn876zcMWDLu8246YKGHe\n//6v\r\n=G+LJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b457acc083f7777a0a221897885fbc2a3d780f76","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.49"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.66-renovate-non-major-b457acc083f7777a0a221897885fbc2a3d780f76_1618019547650_0.4792607941275089","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.66":{"name":"@balena/jellyfish-sync","version":"5.2.66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"921206d1a5887d291466343665a2e6880315bbc3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.66.tgz","fileCount":24,"integrity":"sha512-sSUYGDDJajdamFe9uP9SEbUNkFvhP5Iq9fFKZJ39u0JZmHuEvpDD0xPoyJiQk/AiXTiactoyKXoxVO0qWmCVSA==","signatures":[{"sig":"MEQCIDTcxAh+DpLMfWFf7l93yh/kf9gVlWEONaiiqoAzhGqpAiB+SF6B5F2KAcEh3TqP+IYT7unTrx9OyKrokgpoW6CB5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177407,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcQWHCRA9TVsSAnZWagAA6WwP/1ScrJm+WSC/TPCkzUdX\nyw1UbKZhFaYde0xYCQg15sy862jCStoZ/aqT1a7YxrBN1WEMd824kW78xIwa\no2/pCByTgbJy5BMZ/Uaa8IBKVkmo6hCeA6xhhpeTSQuLOfGIz4NYcK89vksp\n9UEckEwtVZ41CovQ7b7V9L0FUWkZd9d7a4q4DK0Vd0DYoB3Y7nfJmT1L3Zgc\nd1OIle5OBAdrO3rf7GCv4IQd9RPIwcFAagm57ECddXUGcPNMyy+QPH0d9XS1\nQgBzYWsv2AdlhGoLKda4fSJDXo2B2pcfQlg0TI8TTrNhNxyg0zg86sWxqlLG\nejfDAwNcv2d+w2bQLY8HM+ZwxTDthUW6+3YASU9tOR9qnT2I594Ul+dcbJAC\nlEvilRNbW6pxZ4tmDnVrAfIKU/FPAwEsS+L1rvgRAA9L9d8vCrcFC8AsSbCM\nmMmAbZNGqFb/2019vr0nSIk8RQ9UI7pxKoBXXi8PpU9A6i8QWQGS23beUhmN\nRhMU0cyF3uL60hPT5BEwR8yqEouVNIw0dnfbqzsf/YiuJmr7llQ3DaY/0v1D\nlYKcWrKZomz78kPRIWUfx9UOLyU+JJkRD5xzbkMPtXPzfJIFfdUTS5VaXXcx\nXOw4soWndWm33ETa1GXyQsKe/JtypaUhjVZB8TL+ERhFnFqLCqBSmN/9w4zF\nfAKY\r\n=foYk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6550685d4c19d7cec8fedb6fefc88c0c9f39e16f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.49"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.66_1618019719434_0.1808090870493646","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.67-renovate-non-major-0118fc2c0feced0278ecffd87e5e1ef82fa6b70d":{"name":"@balena/jellyfish-sync","version":"5.2.67-renovate-non-major-0118fc2c0feced0278ecffd87e5e1ef82fa6b70d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.67-renovate-non-major-0118fc2c0feced0278ecffd87e5e1ef82fa6b70d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4f83a1d7c0208a3d004f334e828b0cfc06cf340f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.67-renovate-non-major-0118fc2c0feced0278ecffd87e5e1ef82fa6b70d.tgz","fileCount":24,"integrity":"sha512-P0BQbGtcAE28RwyW1f+/nakZGXSYNhJT/zON6JMDlfov0VgvAVFEZE/SabUe6cgStwO9/CeVaDFT0PmgLYMLuA==","signatures":[{"sig":"MEQCIBEi5xWvor1i6tsbC/HIMhy4cjlZWYcO7rXK0JMqdftAAiAN/NBCC5CCZVLZwmRCOBeF83dfQOwqj2DNEAGUByTycQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcYbmCRA9TVsSAnZWagAAcjcP/36wsDLn5OMz6zAz6HUP\ne7d2WJrwzqj2KUzZ5CaCfosc5XnjLr+VvxpR+i8APMh5tCo+ZsItOszy41oL\nolq4di2S1ANAO7FoOtMZ4xulsDwR+xtJPCAOjiO2JuU81tVLXP4yyua80pVA\ncP1dHlLkrfvQBP12WYkU4GsqxcHYs1Zr8bWka8RURPct9xDGvw6AiDIOVWRh\nJQVp5GTTJlB3ECJm1RHCGFaxTmX4eFcJjNciN6EmlQmyd1dcSqLlvy8agb1M\n7zLATeP0kgyPtHx77mv7d5UAsBdmkdGBy90s8ZTuM8fXNGu9amWXxjliohZ8\nx1yAzryEeZyvXi1MldSnC6djc+HMnv0s9iN5kb9gqLdxZkmaeDvmRv3OYl4F\niMF6ntU5S6bL/Y8LSy8kOF5V3Zw1F4n8U4yyeCfnQJAtmVkHADA9s98rR1LL\nY1W3V2+iV2ApBT0zVFGLJAbSAQsl9Tv6sCVZYX2Py8Oyra0k/s/eiwhP7F+c\n6EMM437U4bPHAQrTWGK/Yc0+28yNZpF6GdGJGefpBd8ymLdZJ343s9eBWtwI\nZ2iK6xJq9SAHNTCYmPydZxPq4Xs+k7mNWO6/CRahTeS+dZjKk3NUeLiVa6Dl\nwYtZUphSvW1Xq9WnEAs/vWYJfS2GSS7BtTKL14PXPDatKr634A+NWk3MwUkT\nD97i\r\n=wAs0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0118fc2c0feced0278ecffd87e5e1ef82fa6b70d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.50"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.67-renovate-non-major-0118fc2c0feced0278ecffd87e5e1ef82fa6b70d_1618052837777_0.889933117533426","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.67":{"name":"@balena/jellyfish-sync","version":"5.2.67","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.67","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0f17f1de1ec0f6cc21c53a813a71d4f4370a0a13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.67.tgz","fileCount":24,"integrity":"sha512-yGwDGvr0fvPKx5W5ISrLuLCqoHCesFO/c1E5tXogO5Ohqp8XtwlWu4DE7PNUWyxA9DRMqAOBmbqpfUvHVyn07g==","signatures":[{"sig":"MEUCIGPYdZUYyUoFcey7iS4vkFO9h8R0ZLd9nByWS6vmWJ2JAiEA3AKesEYElGEK1fMdtrz1CBPrLNS7pur4CfRbPMHxbUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":177832,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcYe3CRA9TVsSAnZWagAAHSoP/33ASWI6Z2+ACbfS/FJ1\nOGlUTFaFyY9zsbIUF7xDoUb5aGT5Pbp6yg6EFZzdPWcB9geCWEfnuQLhh2n0\niKmDmLCmgjrx21Z49r3RUltQaQTDp2i/vXevRJaCvkrXEZmOrLnPEdlv0npL\nPjWA/xKW/3e824AhgPMLDFgTZxlRIFwyB4pfTJ58AtNO21OpZdBVNwcUaFiF\n2Fczf4kDrUvQfVd3NCW5mC5fDhRYd8C1VKmO6wK9iWL3++tcICokNW9+Rsin\nr1oRMFcN5ZGNvO5bX6cfG8WYBe37JmmTjMe8tYeLCyULPk7dUm98LKJaxpmt\nJUoxB5wMeqXkVTljQOx49z94yZFs8Xhqn4GX4g5YteRkfS2noTu3O5YknDDj\nY+e25NZ587PlN4VcBfZLxyP97h3CQwLTNOOpzZHJ+lhXoEXUVQbNTOti+l5W\ndBrmu6uWkD1vo06+qu/RLcnRsX0Dpk/yA8OZv5e1yCY4eOJRmdivT4/pJOPk\nwKHanA8d1PVaV66xfvkr83ngLqNgIc9wvCarPISWquf/0vp/AtIuWQP8OxaE\n1viEifz6JKk5Whya6WKbLOXpIU/emaH4SgI/9j8gwD+F+4SKwqQH8PBHuNF4\nbEfKPG4eLH/tPEvKB3QCDciMxAw9Pq95NvV8iPX2xKcalgqbKgA1o5/VPZ9Q\nR0WM\r\n=rwAJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"68cecf3db32d4420563c7fc6988202c21070c8c5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.50"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.67_1618053047297_0.14397853420434448","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.68-renovate-non-major-6cadd419ca2cbf62cedaf5875fff1d2abb677e8c":{"name":"@balena/jellyfish-sync","version":"5.2.68-renovate-non-major-6cadd419ca2cbf62cedaf5875fff1d2abb677e8c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.68-renovate-non-major-6cadd419ca2cbf62cedaf5875fff1d2abb677e8c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"096e1634ecdb35ae086c2139a2cc2597335f4c32","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.68-renovate-non-major-6cadd419ca2cbf62cedaf5875fff1d2abb677e8c.tgz","fileCount":24,"integrity":"sha512-ZlVpJm9GFqrEvEMb4DtiU2vT3ylQBOdT48ik9j0Rrp0UgZOrKoG10ifUphpcOU0CtrUkytuV85vC5UcL736gHw==","signatures":[{"sig":"MEUCIHXzqaD7tP37BDMR5/3kJDdblxj2Mi1wI+x5PildxOPPAiEApBsRc6//DBl77fA1yh+YV89u7L/1aYq0rbRZP2MubHQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":178317,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcc+1CRA9TVsSAnZWagAAreYP/is+ECdiDvYHBwhLpBQB\nr2tj5JJYrdGtboYFGLeaHGyqL6YKuhNNDzfDeKAoB+qx+6ghZsNP7tJ/2dv9\naAyJilmodfoSaQiBghLFn4+IpaKOIp7+UiUungz+rFUt5Vm0PmtxJvTythhH\nGZhR3214O/bOM5pB2Orr/yYGcCK38uLUSo5SRg4pegYSCUzEXZa2I3RuGAnf\nSsH5wyutvKIu9nrVnmaVz/JwoMQhjnyfex8zsSAkBixEdWLR0UEDQ/8aFk2S\nSzJwqzLj8WGzIgyChy+eYSrcME5rOR/FZwL/U7eZCIa76YoDMnLWqYE7QDVN\nPYB1AQEfDLIggUFqgfkmQBIk2qDYtbNclfualXXFGHSUOR9U6wjB1anfq6GQ\n06XYwimk0TEOHSquFq7Dm1PremyjfmuqLBtTHnDQWECxUuxp4A/wvLeqjEtl\n/L5XZwwUQPERyoGzpr7Z08ztq6AUjaa+0f/0L1Cf5/qrLC7qZQUhwcgUBRj0\n/2kBLPRE68mHABja7TqqOUDMGL0jiNUiogHzBJ9XqFCzf6HItyaPK7M+xc+R\nsLCOkAa/5iq6ZLVGkx8838OBwDzkQdsuUd98RJrT5gdo9sZy/FCdy393VRio\nRRizIwGMRK0MDYmbw8Ygw96J6ULb15PczYMBDGkOEI/zTqWBkJWT+Ds4x1uU\nI7tL\r\n=LmaI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6cadd419ca2cbf62cedaf5875fff1d2abb677e8c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.51"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.68-renovate-non-major-6cadd419ca2cbf62cedaf5875fff1d2abb677e8c_1618071477123_0.12068650465306052","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.68":{"name":"@balena/jellyfish-sync","version":"5.2.68","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.68","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7edf4465dda64ae9e878e36ccd2b0fc5a86c8b30","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.68.tgz","fileCount":24,"integrity":"sha512-O6J5NKwVwD2sfVXoCqndyRmphb54p9TH/EMdpNNGQJ1PDnTD3O7jo7Vz6uiKIRj2fJjtmeNrlMl7c7pyD9Xv1w==","signatures":[{"sig":"MEYCIQC1P9d4Wy0vk2026QL5xB4ilWdoWm4JbYwjCOgE1r9MEgIhAIsRlCnGqJbzYNwyuixroqhVJ+jPBGZYHv/DpAAIfrB1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":178257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcdB7CRA9TVsSAnZWagAAXpoP/RbsqKhQiiX8HkR8iQIl\n96nAx3wmpmaMSnUuOD0A+GbN636wLtXCKvDoajqr3XGX4cL+o3TZP8UT6DY1\nqdn3y1x5bYtFtFFX1BxfUzU2AuGYjd40CwKOL9OCI7+xh1VegdhvXhEo801r\nDDxPqtA17o1Aoxm/+1tjKNyeaqqc0PFFW5xyPBuagJkUDdZmbD8np9QG7r3r\nmEwt63yPXhohsm46/UXOuv0IEME+VMwzt1FMMlZ+mtt9OSvf6PyJNrKdc7Mq\nhOIIJYoMQxQCTAZ4nTlOEz95fsuKE0PdNaTQCIV67dpLsbWsfAWgCaZ9Lpcc\nmapn1uS8PQ0aoA4GdDxa+SEur1GUNrzBEpAhox1iu8uiGN/NuqvNaSmHeNI8\nQAMfE/25LMm+Akbkn9b8eCc0CvZfuIBywspv1zGrlI/iTkis/J+b/lamUSAz\nTUPniyFTK9QjsVFDnHCMqJZ/55u1Kri6eIBbLj4Mwg4AypY0VdibqpKa9Z99\n1okrWZlsG5imzDh7eY+MSv9VxoO9boAVZdLnJx61xxofDF4P7kZQf6vr1PpJ\nQgOyPnCz9Ak6PnI0uwEB3kpMHxnknpo0nZ8GfPh65I/UYnR6r4pRPj9euIaP\njs0RUnCWjY62EC6aMPvPUkjUS3yKg0rcqiVyVF4V4IIZjTnQ8NpmIqCufyRw\niCli\r\n=DWhA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f8e9f34d73f14b1110030ab49cbe0e7e4664b149","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.51"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.68_1618071675160_0.9079467469034888","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.69-renovate-non-major-53f4dabdcf92f7969e69c067fd4925d20945b3ff":{"name":"@balena/jellyfish-sync","version":"5.2.69-renovate-non-major-53f4dabdcf92f7969e69c067fd4925d20945b3ff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.69-renovate-non-major-53f4dabdcf92f7969e69c067fd4925d20945b3ff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"833611d3e9a3718f3363fbcb8bf8b8ca66986b46","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.69-renovate-non-major-53f4dabdcf92f7969e69c067fd4925d20945b3ff.tgz","fileCount":24,"integrity":"sha512-ArlggNCzE/MBFGm8ZMkLhBiH8ogwuVyZZfFeaRKMw7RptCGGBKDwR9H+mgfPvL1uSFk4cPzWv9BiEZwTr9/q5Q==","signatures":[{"sig":"MEUCIQCOoySIWirUoiWjfbnT8hF109DKLI/JylxP3bRZ8BXbEQIgbYJDdIWyDUsT3C0RMRZoEtUypPwobGIQQuCeyY6YpJU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":178742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgchJiCRA9TVsSAnZWagAAVlYP/1US2u+5ahiAXMjkL2Zg\nbrqxpfxZHKOjbfqcIRnAKHrAKHufFtie12XkuZWaIUhyKdsWyVec/Z+CZAqA\nVdp9Jsf7a/JXhB94o13e2HIhHpY43TJXO0EYOl8uGdG2e62z2gXKaH9e7qRQ\nPbzYFG7PMDHqBoEoL07+EAzTAJG0kpksVGVz2eWXiNzG+7TqRLY0Vyn+WdeR\n9a2jQ4/2dUy1zAgYWk5r2wwOFqqhnPJ6U+YtTDdviFzBbDpkLSF5+Y1aHE0D\nSNupSZHCKkCqY1GYZ7I80ttMOzL/EiiQkBm/Psta0pWoAKkeMXddWvI/hQcQ\nq09ZVJ6rlkiHizZi60B+AAa3N4CIfnbAqwvN2d4yyEPvMt2giJO1ogYIcNvt\nDDul69WfdPcm+/02DUCTLZzf9uXipEMhJvNW/XBJPytxlMXWDFvjWr9g3U9W\nVPPuNQrwMec1FUj0CJb4ZMHSEdcJug/DSFoTe7kr1dxPqiEFY1gxvFSfFg0k\nqrZgt5e88xgP6qtRlfoyVx5K49WbzUQdxc3xSuxDoFY11QULFogfFKl3wkxE\nCAcGgwVI42SbB0AzECWbM1349mG2BWx6LRusZfpRt4VjoNF6Kk8YOu8DIq7g\nIe2evZQ5NvZvWz264o8Ks2cWhZrlZBKZSyyoyqClsubv1eRhYaXD2P0p/0uR\nJ33p\r\n=Elw+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"53f4dabdcf92f7969e69c067fd4925d20945b3ff","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.53"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.69-renovate-non-major-53f4dabdcf92f7969e69c067fd4925d20945b3ff_1618088545964_0.292202144556873","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.69":{"name":"@balena/jellyfish-sync","version":"5.2.69","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.69","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"baf5bd946e9641882d28810c0c55baccd06d684a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.69.tgz","fileCount":24,"integrity":"sha512-2aU1qeAu73Rejzyh7CU4J8BghAaQ2fkNaUCMOlugS+T5GTOWKH8Gw/ou8ptGJ9jHP4u+MfPm0NpD427Sylxggw==","signatures":[{"sig":"MEUCICg2QRWjO0v+ISljPAvt/Owe1baZAgjs9E9zxowgM2A9AiEAvOIXfwbk1S4OX2cC1p/qLF6BmggVbZAhFrlRnvOyokc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":178682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgchNnCRA9TVsSAnZWagAAkcgP/jsKYPpFImmT7F2gJF7D\nbA30OWtq3Daet2b1QHmvbsdVnjDlyPXVIpQrzmQOhTOCacpIdxqWgffeaub2\ntUOCsTuZTy+Ljs7ku9Q5tTeVDZqsNLRKQtHkjNn4Y0mak48UZHJWtfUAl5wI\n+3s0KaLabI7NnoYRvQa3mh82JEW3hp9jaMjztznL4ZjZo5A989sG3vlqA0ur\nCPvMYw90R0Ne3CIPQ5w/jY1FGzneEG2ZfmdZVhZ7+ux8Vf5gc0htEY23XGDa\nobTb9NOFRKT/UKKJ2P8I8LK+V45jPDLsNKgPWN9dCr/5MuFM0MujBM3q2fIX\nxWQghSXuUcQNXca80pCWJ3ppYKyxxds4mvrin6rtzcexpekSlUVo5RkGLE9q\njTffgeOnWBvBzeZarQoyh3NIP/135L7fWKk89bdzUa7D1ocuwiXbp/HUvCD9\nHbnXDsW52+R2fU+jR781a/uq+CpjDBIsVtOR4T4Ocivf2vfvHsNLGYea7UYt\n69wAb6Y9E9l0WrkyHGBmmXT0/pe+KRccuiRkKgX6DYfTv1hPUmNoMstkISq5\nI/+o6xcTk9HHfVv2OrChn9n46eqneLiuJBNjS9SL2HeIvmwE4JelVuQPxr4l\ncKOOM0YvdxtNmoOdHAErrbomx4Lmey3D23LqmqBj0Dqd2BN/FxEkahwXjwXo\nuerZ\r\n=8Ylg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ceac6ec3dd22d4cb335ccc951cea532129a7cbf4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.53"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.69_1618088807486_0.9846813540097488","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.70-renovate-non-major-1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a":{"name":"@balena/jellyfish-sync","version":"5.2.70-renovate-non-major-1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.70-renovate-non-major-1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4a9b9eb3f31c60236dea77072ec8a743afa6de2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.70-renovate-non-major-1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a.tgz","fileCount":24,"integrity":"sha512-6QNDxt+ZimwQDOy+SBH6C/zvRdFAyGuvJ+1aiOpBFjOAQ9Lo2lvV7HzfNCLoD+TDDWje2rRB5k2BOQl4/O0oJg==","signatures":[{"sig":"MEQCIDN/TemXIz3WuLwgYIpueId/NwbcstSgX9g0yFRA6JvZAiBnFDMXsvFSVSz3U/aESpv81n59jXCkGyl3063FLyJqSw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgciJSCRA9TVsSAnZWagAAtekQAJiXpiwkU5ua9ZQrVUr/\nB8l7CGwSyfm+EAcJMWAnePsyze6Trby2B7MdPdgzOCYQ3ZJeFTC2jTePpL0h\nkLtquxu3KZxwHuQkEanCna6PIguDp/ijAAYwAwC+DifDYLgPsVgxuuZ6av1v\n1Ep+/WKTxGUvTd0x/UpuZwYTci7oEVf4eNh8u2x/psRsVfX+NfckswLelzad\n72vSXiBl5SkSIE6Yso93StM9EKnXrqfJn/quXt3nUC7gSz2hcXYreJ2jMYUQ\nCjfJKZiBwLNBat8+dq6jd1v+1qhxuoaiES0tYrVpTw8X4erOTfRJpQvCCk01\ns55PyafVIzBsmk6oV9QOHICX2NkZfHmIavBEUlDtn2Rx7Kx21eFgNPb6K2Nw\n/yg/yotjyxBbYw3f+OUaivjbIv9orz2fA6S0O8IV+KyGWO4i1L2GVWzmUEQ4\n/fA+9ONwR6o4NZeazVm/XQnSD+t0MNywGR1pOibXZE2IAnWU+9o27JT5NZwM\nZNVTntK9O3dJ1m/7hh949yw3KmBImBNj/ahTW2UIhznTzYYylaE79zhrhsox\nY1jukFKmAEjFdua4xOoHZ+hROK8T/M2KjHFDUn0EEQNoTeKBOba79aFKF9wD\n5WTRhhshaX+bzygZDxuX6xQURtI8BiN8njCTzTiuLqLoAUSjqIdUefGucQA+\nLvWE\r\n=VMVJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.54"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.70-renovate-non-major-1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a_1618092626002_0.3842330206639819","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.70":{"name":"@balena/jellyfish-sync","version":"5.2.70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9bce2e6e32455ac515959ddda1bdfd53007ec7a7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.70.tgz","fileCount":24,"integrity":"sha512-0B13qWtEEnXTwmDv/T3m02RD3yOra8BpfI6G5oW8nbiHfmuHrXuliwqdM6q3xD0B3W+kVMGDsxbQufl/kvAshQ==","signatures":[{"sig":"MEYCIQDTOZbCVpzDf+T2Xn928vaGMM8yeAbG+bOe+Dju0mYexAIhAL2Gv1MyttTq9QH11ZyHL3yKSnyhKrjyZj6+oHTJsrVi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179107,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgciNdCRA9TVsSAnZWagAAd0wP/1P1Spv8vcwMwo7VI66F\nKR8b1OdNjcqGtkQrmmOi6/bdba11F3nI0sAqCuNIm7/18ZDKGbeRg021miGT\nbV+a/bUdZqB2Rqz7jmKZWhIgNxlkIVv71aPsuM50N3aU+rzt/GAWvPZVzoQc\nsHbBHlvyqWk3DJo9n9lS9mhTjPqO49B4kw+3tlresa8op2WrLot6HuJbGts3\niUoXc1LRVi+mFDt4CxHHcbSWwOH/AKaZ8Dlk0EsczYqHNAGS4nBwX6IDQ4j9\nMYt97cAcflvJAczQMyGSTnVB98fBgNcab0epl1j1dbMVYhHbG3J8bh/XZyAd\nYuEXA5qtE6Jul0EpuX+Zxw/vDe9WHgOrQIwOv8ldppUziezEiZRg9PBlhmaw\n00cOMpUeSBupXWYDiXCm0mrRJi/6Dj9Z7wg8Wc+9h1JsPGE+9Ns/NHbFh5Ho\nI3c+vacTa5S9ivaXD0Nd0FXls+vamswnRRMJi5xl7lIaDwtjqrzt+/L2fPkt\nEQ6xVnqUt4QgAmhm+HSKXefWdEfwbTU69PCVvcxv65NnvMlkTTWGDSayQvpv\nPG/0oPqvK0xKzIBH3H7QZuxXJgtez02JaNfFJa4ijWdOMhJ1btwXWj8YNV2z\nJ382BqzQTiZgsNaLr4xwG5fpeoOQqyEODfR/uRESGFmNOmFYDdndckzUnPq/\n+a8C\r\n=SYlQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e5cad67045825ef3dcd5e3cb811e47234c41c0f7","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.54"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.70_1618092892795_0.3113369840941309","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.71-renovate-non-major-0e28b1a87ad1efd43f8381e376af43a751e34082":{"name":"@balena/jellyfish-sync","version":"5.2.71-renovate-non-major-0e28b1a87ad1efd43f8381e376af43a751e34082","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.71-renovate-non-major-0e28b1a87ad1efd43f8381e376af43a751e34082","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f90231c15c1b360ec65c5debeb49737ddd59f6aa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.71-renovate-non-major-0e28b1a87ad1efd43f8381e376af43a751e34082.tgz","fileCount":24,"integrity":"sha512-ChvEoirT7O8o0Llf0Kmdj1W5sbrxQngAhQuaDlnczfIPb5QMdEFpgUfYSJArgxi8hM2jYFuwAi9rFuVWeRSBZQ==","signatures":[{"sig":"MEUCIHLuxqFa0T4GsKUV5xvhobCvGUpe0BouVacKqlT83LFYAiEA1Ygf0fW8hftZJ54yW4uWPlaGgrD/ZKlodfTanLudrp8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgck1LCRA9TVsSAnZWagAAWDYP/iFgsN9OOjLjc8Z4pEHT\n2295mTO9mcdKYUz84A86Eeac0bskb3VTOivrQ5wd/v+wx8qfpBV155846GSV\n3VRSpIOgJQ+Sz+umy//iFn9abfYb9ubtiP2HICOltmwk2rLZ1uXhb6IKQy6N\nI4oCmWL/QKrENPcpnKZm6wQ0kny7cGCY4R3tsulK5xthbxbiqiD1/C0LNDnJ\ng5Rg/PIFev2QBuxqZpyXb+h79IsgUVf8cax19SlHoByOj4/guDbL+G0CcY2H\ncLMKWEB60bzwuj1pE1NabvDu02Gaz3khiwXCCFVG8CvXOMxntpzfQW2uH+tz\n0b0WdOM+De24LRewgo2omiPettVGMrVHbZFzh9tcGH24tSh/sJIvPcoojLkx\nJ279j2tN93v2oKrgGc0R3Qg+Ezd66CkaQAqw9oraqPxCHmHmVOSaoyye4mAy\nbgxrziSS40KNS8wBZPjF7Fq9hthWuGeHI228rZGQ3itax/UcowAyHq2HWUC3\nBBctK6kbyBo/BZsMV1IHayl1f6PbedKQKwaChFFsZkOkBavYXrVwohGndKe/\nAddRm4tlA6GXObc3uCN85NCfEPpDxPPCSzmD72OXB+9koi3cpcqh3ZhTm9q7\ncCec8UUX60F7l25Ufz+9M6OXvbvbXGEN1/3cyTl9oyJBhSS6H9TeAZZQ19nP\nowaw\r\n=i2uP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0e28b1a87ad1efd43f8381e376af43a751e34082","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.55"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.71-renovate-non-major-0e28b1a87ad1efd43f8381e376af43a751e34082_1618103626785_0.35376396948865296","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.71":{"name":"@balena/jellyfish-sync","version":"5.2.71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.71","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5088b0b1e0e2893d4a1a0328c557ec0a8f9340e1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.71.tgz","fileCount":24,"integrity":"sha512-oSockAczKQ5JeJjt4OSQlcFbWyA4Bq2U1UZJI6cp+ZGJRvxCqWKYVMj2+eTlafEvSNYTnDolAyZat2r20yJEFw==","signatures":[{"sig":"MEYCIQCW8cPrQiQniuPy/eJK1ZEYpzsLCwZkHl6RymymNP9m8QIhAP7I8AGLwKPjGjfwYW5B5jFIqO5u/UK5nmM0UwLQINOW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgck3+CRA9TVsSAnZWagAAImAQAJv0bvZNrCUrJ9VzNTc0\nJOdt+3tECMDdoOJEfQSkvka4W+kbTXpHk0tYTK7sOk/W7h/q+bwCsbFcj7bE\nlRCauiq9d+nsgbAMqFRDPX08s+tf8X5iIdbL4SH2tgQZdQokFvvgC6oTU4FX\nFqaGXbtwoobEJlfLbcRHWLBLEGMVwt2fcZ6EP8DDy353up+cCHq33tnfzOUh\n6lBalBweahvGgvw3Qyxj4NtnEoYyqJBYfi/H23I4VnxT6IwzDeM8T/703Y8f\nBBY2ArHJqU1Hjhfa6QJgGaARzVIr+uDL7JYlbjsttDOf2DABqwK8SM/854Q5\nr9g9Km+t+p1grivm+qXhQFkab+HBojBSz1d3mKjZgllbU5rLdaEfX6vwh8kQ\n54XXe50ziW6duy0sLOxtxhFb4CovLc0yxD/LPt//aGVM5lHyWOOElnGC8iC0\nAcKtPLliJommm2Ny4Ha13o13nli+Knjw8R2mymYkxQ8OAvQE05LLM0I9IuKS\nw+atpE13v0R3g51Tu/NKKWs7gJccEjjjsx8Q9nDE17T3OAud40i8YQGE+l7x\nhxAmwsb/RAOzjEOcfbuj65zgRtGWoSX4orb+iht8m/QqL/zpVxDUnRTfjjeG\nMP9Qz3X95L0HmTFkwu2zfMmmqQbabYDY+z1tN5wjHF+ZaS6FME2KclqDCRqK\nYLKf\r\n=PLrP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"59e5a4d5a88afaf9a74a433619a8898e6451ff89","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.55"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.71_1618103805765_0.22903219319813806","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.72-renovate-non-major-135d1981b48389be9380483e6f3f6ddabe50a393":{"name":"@balena/jellyfish-sync","version":"5.2.72-renovate-non-major-135d1981b48389be9380483e6f3f6ddabe50a393","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.72-renovate-non-major-135d1981b48389be9380483e6f3f6ddabe50a393","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b405293faf14d7347c58fb1f590c2cdec7709ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.72-renovate-non-major-135d1981b48389be9380483e6f3f6ddabe50a393.tgz","fileCount":24,"integrity":"sha512-Kql0vjRMfe/Q4J+anxnNs2PhKSXkXo2LhPyXwnNzLHAy7ecIjhCAVJoR5oTAjdYM26306Nbthn7DFGg+1vjQjg==","signatures":[{"sig":"MEUCIHajgJZLKA5UROBL/2u3p9wRHWil+/Pi5mi/MovBrBdFAiEA4v/L52EVpbmvNJJP4AfUXOFXveIVXg5Y6ix7PTjVKog=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcmy/CRA9TVsSAnZWagAAd3AP/Axul/nf7uPN108VDVJA\n6uBolYGdZIFK7V0Ythg/DvAoTXA6o7l1mvwHDidUaRK8tXw3z/sUBNCf+w6E\nZcLPNB9oIbTHlHd2rsJ2sSLTolT8syff3c0/1mSWmRCADBLWofxS578Ei1Cg\ntBSSo/tZja9LBCoMG3uEidTMidP7mHnUXUswqD+gWniFxMGHAUrQlFa3TOhb\nr2qeKWcRRHM+q6p6ATGspCbS5ElA+Cwn6fBfoIPciRGjpkxSIzo8lq5z9SH2\nRGuu33vpQGBxdLVT7FYhZlc8XJ3LTvV+ZkQSKlI4yYF+CabrwtV/0gpmjKz7\nZP5FGjfjN0T53M92GiBA87+hWoHC8aF4NcELE3t6WGv0Wfs8Vnt8KeM1tu18\nb5aQJ7A5lbMti4q9sYaER4bUJwlT+ltQ/lYYBgwYUcwXSsKhJ4yfAzUunO+p\nMy7ggFJVxWW5qFXEEeAy/yGcqjncO1Nm62maD9nwE73q1/iyN+p1rnLD/RMg\n9tmj53vB3C7vz8/D98dVybP2MnrUXVcNDTdl706oaC2NWI58cU4GGU/e4pPW\n5k4l/tmfe8KJePhOFRv7SSNu5iXkjC8PVefai+OFBtYQG654JyFyy9n+PfOt\nUryTjygu4zJVzQvBo140K3If4taCYZuDcpeRCJDoBvM5YzcHnt+Dzx3Ka9tv\nEx38\r\n=lmRg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"135d1981b48389be9380483e6f3f6ddabe50a393","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.56"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.72-renovate-non-major-135d1981b48389be9380483e6f3f6ddabe50a393_1618111678985_0.4269375570711722","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.72":{"name":"@balena/jellyfish-sync","version":"5.2.72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5bd630f21f51c8fbf2caf0aa8d47bfad9ec18123","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.72.tgz","fileCount":24,"integrity":"sha512-wPDJwglqTXxMreCq87cGXqCxYJXopckX/ZikDctxZdiuckWwOmZN1dhcKO0Fc0tdZMWg84c+biTDsPw6fT334Q==","signatures":[{"sig":"MEUCIFTh5JNUYOWXKAdZnqiPDfWcax9V3iConM7A5KPNPiSnAiEAjEc66nlOS/tyv3CligNa55u6cS5fcNaRAE4jxXu631o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":179957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcm1zCRA9TVsSAnZWagAAENoP/3Z1BFZb5LG5FMyV6YUu\nj9RGAOQrcrRkQoNPyyO+FTE+4M0GeAf0L+WN/WzqRa4RBJXEYFcxfg4NFY1J\nr29XE5nV8DEwcG+SN2TBVmACGA+pkxMcOgEuRqbJH7nyirxnl+Ks0TmdAKC+\n+6gGUl02GUW7pNNEVywEpDG431YFyRWePtTCoAZbd5CtE8vMXtTE+ZtBzPCp\neS+6lFTnI62h6eWXKkKUI8XbPjIDU3HpBcmlB1wP51RPokHpttEKKyEAGK2C\nmNmKZubT9QaZkVbjQTU8VGjzM675WEqo8pxT7YkOzxiN6qcVR57B969jfXKr\nh2cs5FM+pOYltQaup3FiSF9QhVC9bwVPA8bndT9qmXlbbwdFkumKa2ux8wNr\n4eXYeZ9YjYizw3ly847gzhUI4fq70qzA2Sfw/Wfr5B+racAIhGe1NJetQNuG\nqU2lG0wnUKchBIM79gY1gVqnjzjPgkgZ8/QE7KEg/KHeEprnKN3MASXPY+A2\nafEptJWxcdDsTNc7zE460OacVRt0ONU/0U1at1LxTMvIM0SS/fB8X3+XJz71\nudKzPzewPyzNKNvfEMMIXxUYbMvL3pkxQXBHOsRSuenqQEhAn/rmpSA8h34Y\nt1bTQDrrRp66f0IZ19gkeGCjRBFaDq6tpBUubBzYS/jzywvAIpOJfDAgjDCp\nG3RQ\r\n=tlIH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"49afbc76793a1b0985e2f217cd8cde095b17c756","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.56"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.72_1618111859318_0.9850409257959223","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.73-renovate-non-major-b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2":{"name":"@balena/jellyfish-sync","version":"5.2.73-renovate-non-major-b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.73-renovate-non-major-b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e9da67b9a0f99b9fba49203f4e4b044ac793aab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.73-renovate-non-major-b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2.tgz","fileCount":24,"integrity":"sha512-43inDAqLe8c/8K6BK4LD0jocYGEDqAxe+M2s06pJd6wqhbwxllkWwSTJ2rbWb9cLcmP8lLezQjBTMY1lt2pLNQ==","signatures":[{"sig":"MEUCIEsISNuL4hFT5EwgEgDwsMm0h2QEcaZAJNTkbxDXNKgLAiEAlA2CT6mBR1zM8NSFoIvjvHjogVQM4MAo+EJfyD1Zu1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcoWXCRA9TVsSAnZWagAAukgP/249j+9Hbm/cGNne1gzf\nOF6ATJpKXOdahB2AOtaTmuxx3/d5dQjxhHPbHoCird8qTHvPNhK+ddalYOK5\n0mZCJ+ZqxMCg9ZdQmNww3yNOfNRjDVMdM9JHd5EmJnq4wkUZbDqzKDWgsBKn\nsSssyvLgHHs49vXJzHDjbpN193+MX+n5nIbhLueYygbOoVx3H6J6Zwr8ay2q\nK6WiBUYd3zMnH5CweYBCjwDTdG0bgnSJk2qlZ+0ZaxZqBWkzs02/QQji9TUs\nZk++xC74r02BoPWWqMF/hW1TKdQ1cTl/bNLkMLevEZ86/102s32EefyS4Hy9\njMZDsd2IAhhlEaeNne//N2dcyPbkxHLIASHv+r288rC+rU+CouMQzEAJNaf7\nnmWxIChUf0pU2CfdrQl9YHenGgmaDLCUVXhTAFqfK56QgiCT66soBZXv03xg\nY4pxLbMPUKMnXUoB/b8gzu3/BZvvQ/rTdaUUTprtOCpTBEkxCmgzXERLff6w\nTwEH62Mx6Itc+styxOG0QP9ZC/2yxoBOl+u491b9DOEX3dEiVjsM7Z12Qyk8\n/VqxZ2pc6WCwi+Is/rQeEIZrdDOG84J4JJ/gRGri/q47NBiV526s4d3I9/En\nyu5ikI6U9FFqqR7oPp0Uv427zbto9D/zBVTO4NSARcirBYe2v4H5AkQBXt10\nQv1y\r\n=i1sm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.57"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.73-renovate-non-major-b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2_1618118038438_0.08025188068865408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.73":{"name":"@balena/jellyfish-sync","version":"5.2.73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"80464ba4db66469346470ab33e66289fe9445b0e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.73.tgz","fileCount":24,"integrity":"sha512-azjQcY2En2N+tEGkYe1nMSSy4/QQd3sUyh5LU5+UJQECHUpUvLfVZOkf3LoV1DyWWN0o+qpYLEkqhUT+ai03eA==","signatures":[{"sig":"MEUCICOlyElqtraX80yKIJ5jNZFn/zNMWPsx58qBGryUHFtZAiEAn42gtjG07AeElzIhEYSIF52vCIymD8Y5cnqqvzm83Pc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180382,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcoaUCRA9TVsSAnZWagAAoGoP/jlrJ4/QaLAhY9TUcf3s\nE0CuENsh5BNgZCtYkb/Uf4ksZ8iyjkf3eG3qR6UIXgK4qr+yZBTVKznBLrrH\ntGxfo0XHfMGtw3UVh4githf05whFif9iEVPvkCn9wQTux7T7It4tjyk+SWLs\ntL9EcHImguReI85YWMP1dOpkuw77P1dtfO8r2A6QMq/7iBtTT/WJmCBdqpty\ndde03Ucyp48z5LlSzdeg3uTQBSf5i1N8LJomtJjbO2+zvXnarYqFkl3kf1R9\nhD4zcjAryBkTPtyu8EagwULIQ8I6B6ZGc5/Mthbn869NQHbwWKOCB46DZrjJ\nWtY2oRHqG010nrCr5UC4sUDmGPXShQvtO7bSBBoISJuBWLOB/d0Zep3bkHH2\nczwNWUECrJuAy3Cek2zFqMItPQL3r3/Z4jZNDlqwnlUwDu9DePYvUS9rqRZO\n9e3BpTh8yNbx3E8bRl7WDs81wCtKXYC9MSv8L7//jyzBvQPMymuMnqnod+XC\n/YTlUZqJnivJWZmolcaiO0FFUC/gATvhifHR/VfGWcNk3e4z9R56+XXR8zvn\nIp6ZTnDJtIEBhDvKGqrHq4JV0K5ZDVRSUBbhB3axiXjxFe/pTKINOn9enuF3\nuEEJUnxGGmjKmKImzXULzDGHNQYaXnq14TwOz/q3e2ApFDQRAv+BP+YrzY8M\n4D9G\r\n=G6Qi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"0eff1bf21b8d3ab61a921a7e496f3030ca6388d0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.57"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.73_1618118291657_0.5084702105385257","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.74-renovate-non-major-ef47380c4788e576800bb3bcb24e6fc40b23a487":{"name":"@balena/jellyfish-sync","version":"5.2.74-renovate-non-major-ef47380c4788e576800bb3bcb24e6fc40b23a487","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.74-renovate-non-major-ef47380c4788e576800bb3bcb24e6fc40b23a487","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1fe41e4cdfa5ecd473e45fa8e4b25e6358fcf233","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.74-renovate-non-major-ef47380c4788e576800bb3bcb24e6fc40b23a487.tgz","fileCount":24,"integrity":"sha512-DSfI6b0Bu3zEySdAQAjs14yWIHtqLx2e27G3o37Gom2sLmfsmyrjt7K08OXLDw9AQCa7sM3UQ3w5bqXjIYIP0g==","signatures":[{"sig":"MEUCIHZ8hMIRDbrAutjMkjcI+IUqZaTcXUughUCiQMmSuI4uAiEA5HLUUDtvQXv4eNyoVGK+app6Fzp+3+He2M6QmHDcTv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcsdtCRA9TVsSAnZWagAApTQP/itXLQVv+17PUMeyBu1D\nLQu9FI9coiK/2kgwoglqXGt6Bx6d7obT8J6at9Hp3rV8wOPKOacH9QfYc3bo\ntWm/NPaC76le4Z5e55eI4dNI09VSsalXvFoOfIiuS/yETjLUY0DXRhwRBXQo\nbOuPrUA1wGkc4h0NLlnEJYTRGt4zCSvVmvSdjiXNoWfnN8EwRAHQKFwW0NhK\ny/is2wJ6/1A1R7RgzrXEdB/DQieNeKvp3kMdrtWeXncRtOLey46Nsn/hq2OD\nA0k6+Bq+zQPOG9ede1WZpIzxiZRd+41YhICwHc//sf2gWvB20LkXVlJjYXbB\n0Fu6OBf3XWmA16/GLmDE/kTuaG2Qur6fKOF/r07LAjsuMqWwGaFeWZzyn5sw\n6b8Bt6WZGrvD/qiv0JaAtALwkscQaUBMqIbR5+qP6jIjj/uSpDMgeNQ9IYdx\n9iHz4dN2b83jUtDSEtUK8tzpazxYcVLnGKxWIoL9A8TidJQn+Em7crfUmvVs\nF8u8O+VfqYOOWHod+ib+B3BhtwEHHSwuCDtt9zd8N719B9s8mDQ6qnPJ58pr\nq5wkkvtvTL03ooZ4MxTVk81AZBbvBs4LnuslJY5bQ+4maSR2CZKwqfbDwJz8\n0koBfE6t7jythyLiz4+fpKbb9QsjWKRWyqSe0dUTlRml0PCJdSvN6usHOPpk\nj6YJ\r\n=HynP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ef47380c4788e576800bb3bcb24e6fc40b23a487","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.58"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.74-renovate-non-major-ef47380c4788e576800bb3bcb24e6fc40b23a487_1618134892965_0.1866186404835568","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.74":{"name":"@balena/jellyfish-sync","version":"5.2.74","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.74","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9fbf64f93250d2667b938fa8ebdb430174812aba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.74.tgz","fileCount":24,"integrity":"sha512-LpeVxjBXhC17Rg0aq5i7WAKQpNzvsHjjDr5oGwC+s132EqLgOhLNyYNEWmkywUZ9cFJt2aNCnJTe9NQrp1wITg==","signatures":[{"sig":"MEUCIG6KSxLHiGJPFHAsdFdE9/PmpJcD7E+UdvxykBTFJHM7AiEAthCvYxa2VAm7S8Olowqj/hFhl6WycfvThwmVSuNzBuI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":180807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcsg5CRA9TVsSAnZWagAAsCYQAIISb4Q5BxvcXMMtbWXK\nySgoi75cJ+c4LS6z1FWzepG7WFk76KeJ4388R/A/ZDJtWYgIDGYEtIxBY99v\ndLjgnSQGXUV7clJ8yUqYoWjgln35P4itkApPi/vH4r76F7dhghpZu/JBkd6a\n7HpAVAtdo5skdVUdFoKC+BcPppj8Mb3Fp0ESpO1SDzCOKBEon69adi1+rs5O\nyRhlJJKm5Je4SVHGXBC7InJXvy/YJA1NqH6PJ8dMhu4evxD44dCDUZYLM4q4\n7W7I8f4ljW2bNE9xJAGkII9zE031T7gglVAbscbR3M9K11yN6tKmbiSq1zyw\nuUKcr+FJtOquAQmul8u9w5WPPPuGkfpYgMw8hy0ZGSlHSLwWSr6oYp2EGRoa\njwmbdyPhFhd7E00ULbfRZ8jDKZXyhcUMuV4hCwCv4qtrbX8w4Nb++9k/uWG8\nd+FuWzMG9oqEphxTwoaqXgPQqLyOribKrBSzupGSxY1tmUqyW/y9gorvffbH\nSFyWPjgU+MYCrvLu7u8uMRq1rvkhxbv2vbyJ+Ujkfnm8JNrEYQQF0OVfKi8W\ntzcuzQADXFihCpRjCW7z3sS3lFC8TGtiQapI0pa4pCHBjyupFFkgvy2bfid9\nUvnQq+MC1TV3svO9Z2r6QhhLr1WhzLDeDZm6ki3lIFPK4UFJWAkmyQqWDj3x\n4fkb\r\n=91bH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"64d57dd3433e73fae5b120426c3184f9ce221622","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.58"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.74_1618135097015_0.16397896409845147","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.75-renovate-non-major-f0794066ec1e49711ecdad5e802db75d738f6e73":{"name":"@balena/jellyfish-sync","version":"5.2.75-renovate-non-major-f0794066ec1e49711ecdad5e802db75d738f6e73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.75-renovate-non-major-f0794066ec1e49711ecdad5e802db75d738f6e73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"16166c428e8971ea104f6025e41638c7119785b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.75-renovate-non-major-f0794066ec1e49711ecdad5e802db75d738f6e73.tgz","fileCount":24,"integrity":"sha512-5B0s0DZREM7b8E1x646/WCYOGIAoEXygydZJANLXNZ+tBmkaQr6CHbjTYAZKcXE5j5Y82UcyaJ3DYPjWsOFXjA==","signatures":[{"sig":"MEYCIQCDTABuYT8UmBrOxLbE1eADI6nWHrVXziVLMjulVIiqpwIhAMBQ1wI3qgxw62US4uzvEATgxrCDbR8TC+u/FAu7Evqw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcwecCRA9TVsSAnZWagAAjD0P/2tz1uXjVeAYnCpPB6t7\nrOx/+K9q7onF78wJTa+lyQJxsC/6BF4wBCWKqSGl799y95sp7ESJLbZEeY/e\n47kd7wel5If2zaVAVYpotqFCU4sGiEmal7CuSe3g7MSHifVe34+0YdPe8JH5\nrg//UFxdQwsmq7CnezjRqq+gJvEp5idNOrlaa4nnpcIvwuq21o2WbNH9HV5o\nY4vOds/DnasMQBhN1JhyBpHRkQmifmyGQWNhLXT/LmWh6ionVqFG17jcX/4L\n95FqAAM9I4P//EbBcsjDC0YqzEByLDgOgCWae3TO6IcjSMfINRi8UK1UBElP\nBxClm00anaZs6LFZ1lda7uJk8VycNT+ySPXR59/BsHvrERBY19xN5WhUMHk4\npAU02xkqi8KYb1FKjDBcOG1G9rPdgQ3fuXHEpJbIrO0ksghGcD6r9DwM/Rr8\nxHiBYAfmXjypY2wt17GGVOd+Z9vGyt7bRSTHBowq4CoIkpf7kgYQOlrdvs6n\ncDcpmOLtARmG4MTkucyzVdIy5Wh7PMW9RwNIrzkCniO65eIkKT9kgwlcqJXT\n0K51VK5yl0jYi+Xk2ie+nCro0g6kGY3lmdivwEP2HqmmM6BIb+zQxh2NP3GO\nxUhwhHbP+ePuN12FPNK5yyYtkwJOd0L3Ldb0Db7BJjyS5nAsuSfW+kYqx3JQ\nQgUJ\r\n=OL7z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f0794066ec1e49711ecdad5e802db75d738f6e73","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.59"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.75-renovate-non-major-f0794066ec1e49711ecdad5e802db75d738f6e73_1618151323671_0.7784416009194912","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.75":{"name":"@balena/jellyfish-sync","version":"5.2.75","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.75","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"51d9f6377bdbc14b3c7fa02d68279626b0327fc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.75.tgz","fileCount":24,"integrity":"sha512-6n7wKCBOAtzWSpsAkCHr7fc/VpjH0EmYGDl3e9ofi5ejkEE0jamSrp0b5ZFLAq9V46eIt//3eOkIz+OV9HeJbg==","signatures":[{"sig":"MEUCICzvjrNDsCFk6gmBYBTIdCRkBfJlBH8Ctxtmehp20dNIAiEAksRrZ95ZwklBQWziFau/1maCHBNA38d1FbZj6CAteA0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcwidCRA9TVsSAnZWagAAdysP/0Sp6PNf1dAErbAnn5b1\nWKzVDaidkGfwUeTdtCT0o/DvE7BYskjF5j61k4Km3VEBzOmYSTRhyMWzBkN2\n8s4qXqygoiOdZJZmsLplPaEDeWKXJpBkivuUJSp8w5DInh1dTHGRp4NyaVUg\nz++2PzlH3cVduethO5Y4nsbS5s24GcZWF9MRxokGkDMC59AHiR53Qbubtvia\nUMG9bdKop2yJDeW00dx47aVfBLOvB8sPdIuE7ipVNWYn2KelUG6CiDRb1U8K\nN/i1V3WyWyVdx+rnETbQSBwDs9LnORoKqN/Vprt+CXFhFXnHESie3LNsTY+b\nfzi3PM8TeFkw75Yyk48l/p+NnNoDrumQZWXhmzzJVubxz46n35XTeT1Fg3eB\nslaMdgK4u2o21/tO98QhlzDQdYeZHu0NxI1knUQXKmgNBxwIPS2ym1hM5Rl+\nx30VwLVIT4tJQDu6Uv2/i+ZgVj9c2C31YGwQapuYUmpy9rCc/r3WXzKvMyuf\nlKGpCQHhxP8blzIfh0Yj1j4ymYK+WPKtLTWLy2wZ6+QBcFh/7+VhFKJK6dbw\nI82M77QfZGHtDMPu4JKx7U1Gef593UmJWzy2Msxh1mzv4JnphxES8Rv3yjy5\nSc2fZNooMoD29ku+D1Xuv53YgYrnUoHBIdHERCqkVIqaQuWO0VzVh554Nzbg\n30tJ\r\n=5+jN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f13306aaf141325fe2c1b04d9fb1e9084026e7e1","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.59"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.75_1618151580609_0.9388356203465944","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.76-renovate-non-major-962fc740cbd64d96bff9e19e62143bc510913a3d":{"name":"@balena/jellyfish-sync","version":"5.2.76-renovate-non-major-962fc740cbd64d96bff9e19e62143bc510913a3d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.76-renovate-non-major-962fc740cbd64d96bff9e19e62143bc510913a3d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d646bbf7e8f0c5d9913d421f3504e516bfbd148a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.76-renovate-non-major-962fc740cbd64d96bff9e19e62143bc510913a3d.tgz","fileCount":24,"integrity":"sha512-OXiVxyDAlbDrnoo5fK1fvteEGjkCWQoNJ6q9l9qBl5vj0DxS015PY6XJSxQbx5/VoCObj9XKj0rEnOlhZylk0Q==","signatures":[{"sig":"MEYCIQCi+CMoT3ltGfeCh8SqVnWf3Vf/FDIY9DUxTD2ErAdxlAIhANTBvsUO/xXXAkF95tf06a8S1sBHMyf26s7sgNxrlC+k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcx2uCRA9TVsSAnZWagAALMEP/A4TTo6hnLlj1JKdk1qP\nuagSq8zk+mLuY8P0wmsCzB1qv0ShBWxiEqUtbZQM+XWdJ9296GcZWROqbYJB\n0mqo50b738SD2Lrnhint5WkxWCPr6L3Qqb/3g/CQ3Mz8D95EHdClfWLfqJ8s\nFkNYgI+qC2IEAWECPNR8I0aXE1YkFUlC7PywYConoBORQkk5LExrw6kw1tNP\ns8tdpajMibUY86H/vvdBisiPnF925W/wfvl8dGo4nQmF/sYhDe5rSVAVrtZA\n6/dmnrJIZUXYttnXQzZIgRRuoxGKma6WPVmBz4QOp7bZ3nJcGY56NXwCt4P5\nIJsvTNp6YB+7kZmtdVYIbQ2NNZmh9DUklUv0RYpnpD/UqGpbDl1oE6mVDskC\nwsfbVQVuTgYSqQHXqjA0mwIsKbP0TCnhphq/QSxbBNtRNepkqAkdyMCCfxus\n+7viYygMv+krmzYyp7gK+xSvJqzZU367UetmX4ZTjwSQN3JyV1ooE8+M9DwE\nvpnMEz6IZc82gFqSKHzCkp1bTBsXjAykquLS56VL62z0jVxX820397DyQ+H4\nuHeBQtSYvIR3miu8VFzhzjTi/EYuiV1E7nfiE7fKdH83vu7oZZuGdXXK4Qga\n4g3qVocGXqHhUbuCxO4naIn5CWLlbIhLUBIdHqkYQfrEpaWm2rKHJ/LA3d2b\ndGnY\r\n=g46D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"962fc740cbd64d96bff9e19e62143bc510913a3d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.60"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.76-renovate-non-major-962fc740cbd64d96bff9e19e62143bc510913a3d_1618156974441_0.9019256777959588","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.76":{"name":"@balena/jellyfish-sync","version":"5.2.76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d060489c279d97d531957b113bd8d61d04b342e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.76.tgz","fileCount":24,"integrity":"sha512-rvpgr2Uio/HUlz6oy4JmP2xD6Itu0sZ5Q847Cp6rl3zFOsk3lNVh3uplYtsOv6gYJOXI3sm8Tq1KT7W668Fz1A==","signatures":[{"sig":"MEYCIQDpbShTv2QO0f83YSVfBo+h+iP3Y16GIdGuxWBXkN00TAIhAOrI9y6Dt6UzY6K/Tpq9gJx/C7k2cMGI9ZyyTPx5a77m","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":181657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgcx5rCRA9TVsSAnZWagAA+8oQAI88q7tIjU1zX3mILAjU\nKvPD4brS+9E42k0Zc5V4x8cyEUs+D5Lp45IzbkkZXwWjgfiDCvSWrFvh7+Ta\njs8VnHVTMeZ0Po1jIyAqGMsuigkOPLz7JVK7xNTjc5h9yc0+Eylz8S0OujWv\nMua44WzzITu3h/08AQfWVU3RORsX8mIB/BZzD2vrpFwH2nOCh7jC4aPiJo2O\nUm6wRMXkl3FYpQjNGqi8k7R8uwsvWboKDfY53x8St+ssG9F4fylIG9ti/EJ5\nt7Xv5BB1L5uzpp5Z6zID5vz+9kydcfCvtPOv9BVv4RimcG7ysBRkpbSkModq\nv6VX9N4MhTPtoHns1F+4ZtzoefkMMcKxYMtl+yI+TVNossPtwYadQclgGqxD\nnF/TMCGgQZgVqTmMFMjpFoZuMXD6SFNSoN2SsquxLPQf+p1DfVtSmwwDBS/I\nW0kBaO9PJbtU6DYIfj9lE58fjmg0T+Y6+WAFWrKTLFjgUfTvHe7g6/X7fan1\nKgqoS75hmtmOLNffJ/W6bqVr/n3m7uCFKf6wOgKr+J0ylxd/z3Yu53IXYfsk\nWhHopkJQ71fYhzN7dZLsykYUQ3SiYBJpLCUoD9ZNGMotjpdPiufyqbLXrogh\n6wq2+T70lkUEtHT1vSRdJwA8PuEdRRA2oCCWx92jekY9sNsiPJemhMbAwJz/\nZUjx\r\n=j11j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"643dd1e30628d2e375ac7e2fb0ab0fa3c3d80ed6","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.60"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.76_1618157163452_0.6047317896025584","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.77-renovate-non-major-731d9141d0bc85fea0467ab8653ff85ad59abc5b":{"name":"@balena/jellyfish-sync","version":"5.2.77-renovate-non-major-731d9141d0bc85fea0467ab8653ff85ad59abc5b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.77-renovate-non-major-731d9141d0bc85fea0467ab8653ff85ad59abc5b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"da48b7a118ff9bdbdb41e267f6b69e2f31ea3a39","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.77-renovate-non-major-731d9141d0bc85fea0467ab8653ff85ad59abc5b.tgz","fileCount":24,"integrity":"sha512-3O9pYCfhsCeR/HXAweboD7H/yt9XF6B5D3eYdGoD/HwPNjsZzA+XMf512ntqZz1obaGuq9z+WlJodPXt2JNUfA==","signatures":[{"sig":"MEQCIFCN0hZYNyIWRc/z48ehKV++H3rglqUAaCgAwR6qaBU4AiAej50jfJ/wThbayvfnRLpW0Bj+N/+WmJWyg2xAA2zSVA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc0/CCRA9TVsSAnZWagAALM8P/RuE2Bk2qAvJvzfmmnWq\nSN2q87I3as8kXCV+0ln6jJqGCAEBuedK29p/jjjAZBel+amw0p6s0H5NJrV7\nsvbK+XO+O0dmlAnA9BN40Omxy0kJqfgIMui149LTWOZvG+thlQyMnEvrctrN\nsI4r5oLDcH8ZEvUYUfihqHa74RCilB7Ml7A1u+RzCd2Ha4is45EKdtB0yq/7\nLiYq2nUXWYpBZ3ea53wgB2tKGTQuQDQZQ1bK/8lg83mY5T2Aa9UmEe2bsy1L\nO3S5L0z7bfPhdU5w3BczDhg89tLNV12stmGPgV3gB2aLF9xx+aK8YkGIi1Ck\npCRGQU4cM5ItoJxq+2SrW7aI6xOHDkRZ4URWjkqy0ILmi7ttKrwrsSJdFcpp\nJkPWQUzsRurs12Ivzt/uKs63UlZnT8i1dlWdV6UKX8t2TnyZlEiDorJqIuwo\nXfyNjRL0nzmxh1PNvajg4qqlIckMg9PihnsARwndDj393mUFl98gVWtvydP6\nxQ6pud+AcH4FkV4aCYLMX4jh/PVI+2oKuP8B3i+1HYof2a1p2nu5LNES7+Mo\nkUi+KodS783BXLmjIKd/05ylmZMb7Tj8nUYl2IIYgjFYWmQ2TqEBdtuis7vm\n7wQ5zaFAU1LtkI2kp9De10X+4b6EeQoyM6Yt07OQqjXLw+qSzkGDnhV+gokV\nLZDN\r\n=RJrN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"731d9141d0bc85fea0467ab8653ff85ad59abc5b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.62"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.77-renovate-non-major-731d9141d0bc85fea0467ab8653ff85ad59abc5b_1618169793608_0.3063778246131077","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.77":{"name":"@balena/jellyfish-sync","version":"5.2.77","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.77","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8e3f3c3ea517eb89136d14be092ac46093384ed5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.77.tgz","fileCount":24,"integrity":"sha512-UZNOsr8QXYlFIDDodp0H2gduNJ91p0/GRXJvLyV7Qdeu5bTTiV5xldz7ksfeHgkp48HAlpAKQTp5hcQd6dndeA==","signatures":[{"sig":"MEQCICKiD974zpoG9j1xXdVuxSBQhc1/VA/FvBph//GuKi88AiA5cE4LEX3bzT5Logg1wyE+0PK7ztyhiQWshEdwE2ttew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc1CTCRA9TVsSAnZWagAAXKUP/A3q51/QYh5hXfFAf0lg\nAQGy6cSIMCp416lLTdkpxOUq/Io4RCNHIaW8oTc9IvpyBRVP725bwZa/8Mva\ndPuJYIiCf/ma+IOAJ5oeffrPrKs2eVLch9JDsOu6+W8tMId9orlPzgV5bEH+\nSySEopnRshfYwcm4crgALE9FvcBPCiCYsPRtBA/wkIC+8njdEs4l3Df+czNM\nnYgEoASoKoxInmbK/DuxvY4AV7mwIWbNoiUxG1q48MXAc416LJ9TIqkUrZXH\neevWD19yqfKBYaSSTiEz8pbcXNFNnkBRvvWkI1DbtxvM7RwAUt/UoGiSXhzh\ndkXQ6+wVjWSpG5KlE+mBRrcYM/YsQB+DNKkpYSrCIWDLBVuib2v4UvTWvfot\ndk/CiwKl9I+lBP85Wv+gvZ650QURs61YoEdzaQSj/EwCI2k0VRwh7NMvCOtI\nncWwWzo0O+QJg7J+d91IXPDhFZ06mTku9PnAJqq67ib3gM9Ad86it05AlkAB\nwbo1k0ypXdJ/i8QM9pwIP52lkGQRYfDfiL1MEgywQXiJfAjA+nz4YIKbBMtN\nbHeQxWx93OOJYi5DCF7NZIW6Sol3NNAPcW42NPWa3w8lSUkUH0iDZ7Rvb+rg\nmgNXxBE5JPavWdEQ+55+J4ktM8nlpzXKc/1p379RHD++pxTmGSKT6iSQI813\nDuPh\r\n=xnEC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"39d6007bd9250dac1ec28aed786cb93e60462e15","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.62"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.77_1618170003213_0.7930770272866086","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.78-renovate-non-major-5295dc85a067c5966c2774feb391d2986dbcf466":{"name":"@balena/jellyfish-sync","version":"5.2.78-renovate-non-major-5295dc85a067c5966c2774feb391d2986dbcf466","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.78-renovate-non-major-5295dc85a067c5966c2774feb391d2986dbcf466","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd05e420cb587e0fb94b5c04e521dda75fcefc27","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.78-renovate-non-major-5295dc85a067c5966c2774feb391d2986dbcf466.tgz","fileCount":24,"integrity":"sha512-/2OPbH6mPmlkN0UdnbQn7YB5T2YFYa0kMM0LA4DwOJdSZ0lOgLZOBJOMnog5ONvqC4BWrzFP0tJP7IBF9TzeKQ==","signatures":[{"sig":"MEUCIQDjOLBLoWD1CVhYpZjRg7uy1xAEMLb4rv17/1/L3QMIKwIgFW2kMv30Euvh/+TG/fQ1gAEJM9/AFXHRw270xnxC2mk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc49PCRA9TVsSAnZWagAAO/oP/3xvvZEYfoJrnzOU59zD\nKOMk8bC+6fgIALvQ5T26a1g/Rfrf49ut0OjyJKQ1bLg26+B4QhFVxct3oThX\nIIpQNDMZzzuzO+h1Vc7uVIx+nwSTleZNiyXG9GkHdrR9qMAX7QePyzQOUEHB\nJwYGqy/kVnhET4ySnP/pkQEO+qwEhLMbGrELkUEyBrWUx9NuwQETEQvhN0uV\nV5VbZLqaYRc8deFRObscXxpiOvnEcpZH8fvWtREhiR8qrpte3Y1LVWFRsRFj\n7g7kowwGQIKpcaN7VeUmuws2OP1pTN297gFFMznPCu13s9Unq0BNpTjNBysG\nVPXkAGzArR4nx+HsDPg6y3caRE5/t7c67d1wkFuRqnKYfSrwFgXMaYfHjIq8\ne0DaxLDlZbletGVZso3MRr4uuBbnvWAOPfwpPCB7TvLVfRYZ8XWcFr1uElxp\nztr6STp0HncN33N9b8/P9vvZxQ2QwMO/UdxrWfZxQ/YnMdAQdIuziSjLCeP7\npyB1XiWcA+S4ImgdK/wNGfVZ+A07uGI7oDVXLR0jGIvbUIRbnziDiNLHvRPR\n6jE7c5vIHfGwL2DiJLYOaY5GA75LMz8vNKPRqqWs16qlrP5NdudTiBEJ/FyC\ndtsaVaHAdFJfG6aVfd5lq0Q3xio1b+1nXtQQJ976G0UVaYULD9Wm9VER/MKa\nKFeC\r\n=zPQZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5295dc85a067c5966c2774feb391d2986dbcf466","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.64"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.78-renovate-non-major-5295dc85a067c5966c2774feb391d2986dbcf466_1618186063018_0.2967986933918507","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.78":{"name":"@balena/jellyfish-sync","version":"5.2.78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.78","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e4b28f74e7b708dd5006f54c4b3be8c71361c868","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.78.tgz","fileCount":24,"integrity":"sha512-G+9WwzxVQyvqauM6mAmbT5rjmZ3santA8kRoQAE/Z+Kmx+Dny03uncdY8yLCZ1ke+LPwevHz4Dkf9ykAfjeWUw==","signatures":[{"sig":"MEUCIBaJ9zjQAimikKuHkbm0Pxe8Dl5IpoH/e50S24s++PTmAiEAhBvWtskIJ1Q3wAwWjVDoSMefAx9Uo62KCZ7JIvwEc1w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc5FfCRA9TVsSAnZWagAAngYP/R+LwQNarafnzo+GliMa\nue1+QdD07gvTVAPqWW1po2QejAs2YDbb8S/gCdU6BkQiahQpp7YzBEo5o2ju\nsb8ynqT5CGelmEMbSj2hAYtiGEQjBP1UQ5NRh513Oy48uG5SJ9GV3Zvw5ZOq\nvBKtSrnqUd/DK7HwYxvy1r0EMcyGGoDq0czn72HkjHSH0i965VwgsAAXRH8s\naUKPYQIkB0JZkw7IafNFzyeSKBq8OZ3ZwTx7RLdOdB7YWzyJtmzHmaFWMuxz\naDH+Jl69J4kQDobMD+hKAitmtfnV8H0fqRz27ppLlPj08PNjElCT5JDoJrX7\n+MeRwyQev5WgJ/ssYV+suSEAEK8Nw1PD8Hy9okf1T73ULmyA/cRrN8L1ZGAV\n/6ovM9cB9/BjIE+yYEe15Yn+iRWU3hh9tOZfrL6wUuN2/NFuAVT+yNzF+MHQ\nxy30mZ6Lwp12aStN0+l/yq8nKuWDCnzVcDQVaaW6/MWKNhTZkbM145TfqkJN\nGwGj3CXTaPRfk4jkLhfPjQjtHHSYrm/9qbIUM9EE1/TA2Zpu9tMCTPEC3ATi\nJKVl28rPt8q5hMILlMvHwCB9iSGBcTEMwOVX3Sx20iIpvEl9ffLTVuRzrfpq\n92a/vB24G7G/q4Phc2T7IVkbNh2+xQoj+YePYueLPSJb6Ka16NErvcDcczNv\nV/1Q\r\n=3AAg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"650f0fc48670678ee1f18365ae9bbb9f1b21d48a","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.64"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.78_1618186590802_0.19197419009713101","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.79-renovate-non-major-96e9e126a48c5dc62005f5a00b851e19fea0c50e":{"name":"@balena/jellyfish-sync","version":"5.2.79-renovate-non-major-96e9e126a48c5dc62005f5a00b851e19fea0c50e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.79-renovate-non-major-96e9e126a48c5dc62005f5a00b851e19fea0c50e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"da2d6ccb0975e8529aa463d640d06acd36d0e3ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.79-renovate-non-major-96e9e126a48c5dc62005f5a00b851e19fea0c50e.tgz","fileCount":24,"integrity":"sha512-tkQqeUMFgVzftPNvp3ClL9zi7dTdkyUykI7JlaSn+IkmkNLQ613rIKp+fRY7IkCfsEwpcmcG2NqRer4MZg6XVw==","signatures":[{"sig":"MEQCIAs+tWdsE/PShTmuqc/VKe42txjnMoiu4CeE8jteFVhoAiBTJp/nn24tmjpRNdIn6DDVecfU8ROE8iGIYckwz3vjrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc9NZCRA9TVsSAnZWagAAcGIP+gKwBmZHnhTlzjV8F/21\nS8ALbmZizD7DjqRd+DOGKDyV8h/NlxPjkubdd/CUamxJiKV5Aqlucvf+TzWA\ntpDVXaWi5oBR2cuOHBAiLeF7/U0kPrFT36S6hVKwtaUhwQqzUgZTFNgHBa4D\n2XqplWq3jamVR6mywDrkW0wscVJK6eoNHJ5hQflPjO2vnV9OXaT7PnaZROOM\nI95ZWPwWGB1hsue6ThzLZy2CAedJILvv0Lb6MiOL3jRWUgrXftjLWgLgRv6V\nYFXBiIuuFMFm1bNF/rXq/tUDZWjxL8VpRxl6j4CSetg/mhWXxTW8AHL1wbTl\nxx2z2WTfbcaCh7nkRIVxpZE1Ys9I/Vk0Sh27BcZB1yUGF7CHHJ4ilWXTlKM8\nKoT/tDUUBRD4ysFxNvUC/B8duqOY9V/hZ6MGpMrgUkfvtkiSfPI7bJXYNeOP\nRNkE3zJlF6OVUDClQK2wytzBvC2CBexeDgIBJr4dmtE6SNW41zafC24v5Cmo\nUXp7r4HYIhChL/W47MpRn9rbzLw2CvpLJa1UaAer9G7mQG8UYWV1sdQMElcw\nmf4oVWQj8TrV9/Rn3D/qva+GJ+H6G1EUuivEho2RsATdDqw5hQIS2WuVmLie\n//xM3ddsQH9QrpPUassCSFN+Upso1QfMmM9ECBzFIUxC15xEdKGXUeBdd9uk\nU2eA\r\n=hH6y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"96e9e126a48c5dc62005f5a00b851e19fea0c50e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.65"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.79-renovate-non-major-96e9e126a48c5dc62005f5a00b851e19fea0c50e_1618203480779_0.22861691998612876","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.79":{"name":"@balena/jellyfish-sync","version":"5.2.79","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.79","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d018f9744ba29a83ae7dbb7b06205aa9aaf0b1e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.79.tgz","fileCount":24,"integrity":"sha512-0rXSYOE7FXnP8QpA8WszvBz3/5kkro8L+fjagTKIOTIIxxc/w2RV+vcoI5GI3N11PYgeBcEfLzpcvb76xXv99A==","signatures":[{"sig":"MEUCICESRj8WnmXdLdBEWo9e/BOMrstJlp7AO/8q9buQpRJrAiEA501jH2wrj0zxm30wn25z6CIT9Pj6S7bA0IwlSadAEMs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":182932,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgc9QYCRA9TVsSAnZWagAAW4wQAIlp0dYGacPVosZEkiiH\nkF6S87YLDOCEwFZ3rO19ro8jhDk3DLOR4gYuZOTnlL/szEEJvNZiEOh10NFb\ngE/HodPaI5iYYnzmGs0rB4JYXUrZmGYKM7SkPy+oXbsAiugHmvZ2YLLuFFE2\nVJ2EACFHtwugJ0xz4FiRCR5GJAR2QzkFcvQK4XUSxLrpqS0A9nhmgTBiiCU+\nTkeXEpmK/iqMxfMhvh3cLHbPWoxaA4/jE/d2ALbgYoaALqomhZpWUpNVZr03\n4xLjtxi5hgRb+wIWjmKIjpSzYGz5cXPq6KGNq6ef3QssADI+0REjK3nFWL8+\nY04iiLAvnQ9ltQa8K/WltTpYzBQhxw+xye6BBIsi1SyiCNwLH9a15SvNAvZ3\nyj9LIrD/Mdz0Tx0KOLz4Y2m+J5z6zhb4Kg17w3+pK7TWasIWkynEZEQgL8+h\nsCbDIFduEduk46tUFiyShjriNJXa4VDCvRGZsbLV2gRP/vOcAxYOo4c4hYcg\nvv3ewAImu6tLiaYi+TJyPiLjNOOEfmywKyZD/zVqttwTAk5CaKbxjmqzqpBA\nsaGxzZPBSpENFp9ciW1Nu/Wp+Ls/3ZIhbAtmUOGj78hEYHxHt6v3WICPfSRw\njysc00bfWmllz7Uy6WlGgO7JDvbuurZ4XbhIJj09WsZn5VTKhf9x9ga2rIs2\nkUFY\r\n=q4X9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3ca1a755284635a23740054dd0dba2b5411e5161","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.65"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.79_1618203671967_0.3228089273530792","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.80-renovate-non-major-4db1f8ea2054401a9345230034b0d0098a98e746":{"name":"@balena/jellyfish-sync","version":"5.2.80-renovate-non-major-4db1f8ea2054401a9345230034b0d0098a98e746","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.80-renovate-non-major-4db1f8ea2054401a9345230034b0d0098a98e746","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0e23f8f245cfa7e5911dad45d26a02a222e0e952","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.80-renovate-non-major-4db1f8ea2054401a9345230034b0d0098a98e746.tgz","fileCount":24,"integrity":"sha512-QK2FSxkFnOkBcqgbXPu1D2ek2edBfxsXoHncK+BjAzddPyaTeZFVVtdgErH/lDZxFsfl6TN073IRe0MlQwNdvw==","signatures":[{"sig":"MEUCIDyT7SkZMcuMkbJPPJW4lCmt6zj3QXVtne9QrSVHxq+yAiEAxRFSE1h7mupRnmTCxvvOwOt5oxTGVAuOZMrj8OWtyXM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":183417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdACLCRA9TVsSAnZWagAAnTgP+wQ7pshW3S9Z4HpyZw3r\n30Lrl22glXgKaDv+K8UasalHSM/dn57ejrPA2pcEwL9jKFiWd9DrXaZWYdYd\nzMixTYst8BmwzClIsvzdd6AL8cMs0L9tep8YQBPpXksPuOTsVmKIMecxe4ex\nZp7dHgwgV+A8b//mWZ2geEXwF9KgC5FJY9u1c2I4hHHZk7gm9+SzIxKmaFXN\nCtb2Uw+L0Gyvv/Qe8Dz77iXG0uhRrholGv3Nfb5AnrqBsNm71DGKs5JPg/o2\nGD+H4Hnuivm/Mn9dqDGdenD34iCrju4uYI06iTueKHTOWUoDP9CM743I6OsN\nNsXu81uCm9oxB/8sX6HvfKsZ7zGOV+pZE9crhduW+dL/AMJwi640e5uX2KJj\nhpWSRn4bnJMR0nJiqQ4sNGtXycUMQRhKMQdhwK6gV84I8RT/NXFVKpZOLCsu\nHDC80QhHUgFsiba8kpBAH8OZJrZDE51TLulPEqIL7EPhMswdaZXcudPmx/DG\nBrtYDY8SHYpC4PUIo4GWZRTGW3V1FlXQRGmE/iSxgAXfp02N4K9Oa8VHuv0+\nPIQ7w1xC2oSsm3JYP3pG/VhEzPi7n0K7x2rf3sOcHx8vni0Lh8ZThiM6Oyu4\nh1f0tm40wYYncc5IufEDM3Do8iUrZMF+JNDe+no2XsQulIFqsNKmR5CiKzn+\ncM7I\r\n=V/p5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4db1f8ea2054401a9345230034b0d0098a98e746","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.66"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.80-renovate-non-major-4db1f8ea2054401a9345230034b0d0098a98e746_1618215051301_0.9157066642791842","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.80":{"name":"@balena/jellyfish-sync","version":"5.2.80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.80","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd6c69a90a2e85d7452a207b2135220347ab7bdd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.80.tgz","fileCount":24,"integrity":"sha512-7Ut7tTWBa03ppIrcR/vaPLmh/9teeOW0XI+xvGDqf5jHBiE9Hj31mKrIp74PpEWRe7aRFSVleepJIzLa5hfLeA==","signatures":[{"sig":"MEUCIQDKjK7mIk6Y7yqXN7FofbIXJnxFW1C+HaymDkSGzxE8ZQIgKetjg2YKuVARsy9BRQIi2GJVUe+Y45YsqUGg2QX/x5w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":183357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdAFECRA9TVsSAnZWagAAwGgQAIhAmaPg+qmtYInUFodW\nZm+AcJaY4/sjLUZVw2R1HibwKDrWsb1LT7ShmODIGq9d89rvlfCugqinlGVz\nYBZ3sfS7GTFcVUIYlKdwScINu5FowD7T1Zxb3h/qLX1FUAS8VZpjG7xIz2mh\n0j0Hi80BErPbTiHDD3Yjf12d0lvouckc3Jj7zdk+ACbzPDSg0S4E4BAWmo9w\ntXBySTJxMiNzPzytJH1d+q9eSIxzney21ZG2cGbnGEqgZQHVGuPy2ZvK9LJz\nFAb3bJTu3L9ZNXqORNq7ueUxZOUVcQ4buiRcxoZ95PKtz+Uh48UhsQbN7HeY\n+L+Q6Hfff8otWssbmikK2+xUDS/Z0d5rIDK+25xSxjeRkT8vGC6EEtueNljm\nh47iunm/fvw02DHEG5H0Fyr0Sdg5/pLRw+Hq0kI261x68+7/NKD6dlCk7VMP\no4hyrL2Cj5e6OwaEzX+rnjaMbRXAkjZ8ouDvIFWuekxQ9/U+qXwPRWAReoyU\nPSSn9yw9l8ei6SzJqVJIlZANc4YDH53h2UspqQ2Y8MXnyMjTLbO524nDbuPt\nRaGg9sJxV3JfUms68nmtqGS5ABW2PTa8JKU3gKXqz14aEiZSmE1U6kQuyFPF\n6ruAQFLd0mRFZOaAKOBVgVwy2Mr1UcHjWXz3LK3Q07Ju0YA/5S6K3GInivaE\na7As\r\n=rGiT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"144c41f29d207f7baa6c3b1159c098ec85320384","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.66"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.80_1618215235439_0.8402729499354014","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.81-renovate-non-major-734c354421d7781a03bb14db95f07323b130988c":{"name":"@balena/jellyfish-sync","version":"5.2.81-renovate-non-major-734c354421d7781a03bb14db95f07323b130988c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.81-renovate-non-major-734c354421d7781a03bb14db95f07323b130988c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ac3bfe94e2e2eacf70eba99267a1ddde7411ef1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.81-renovate-non-major-734c354421d7781a03bb14db95f07323b130988c.tgz","fileCount":24,"integrity":"sha512-V0gaSzPINEQRQd/fHEt0iVQPsDjcCMigP/KPig8HmJJplVhEOCF59liQAhDdLJb1JQChXY8tHlYUWGZmXTCe3g==","signatures":[{"sig":"MEUCIQDKJN08M6llgjUIipmF9fvLqWfDgNtqcjuebCD2P2+M0QIgdby8yzPHliTsgWxCi7WLY+jRm1qfOd8pWdCAihSmelc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":183842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdB1DCRA9TVsSAnZWagAAoXsP/1PfnRf+UV9Mcf/9JQFa\nKUFT4pNWy0fRas84gsdoaCr/fQ85a9bWa8Uc7nQm4fEHtuSHDlZ0Y/8XloZw\nAzq3sG6VY6PM9LxaOoqUo1NBZ0UlVnEiIjwNCACYeSB4JSsmUfUgqSDXesyt\nXHWOe/ZEerscDPWnPgyFeoN4bqi03VzsKV49wK/4IQQSsaZsxQ3gMaEo1Fmi\nRbbnGXYIbzrI3C6mNztK3QUPj9fKBn7m+8aKNfl0Jfc3Fk7wqBgSjz2pZ8B8\nsCZeqZ9BTdpDT40phq3sA3Whx5/vkBzsTCQsL7hnbxKQlQPsFcL1RwPrDnmb\ntuBWFd2JvPoV6oaaekYk5hG022MEiU5wD44l7cgrYrOoa7oNFy/DCnJFHnLS\nXvZzY3gWtUucefqTjDHHu83PWnxMq99pgbRJlg5ArMg/lZK7LMqpZfqzfEhS\nUrZEZbcyiA9M5hLhM2FgLMjjbWd2DR4QrSn1VOgoWt9NUkQG/BzwaQRQRVam\nw1XegZwt1bSzvNTew+sXIR8w1tll2TeY28N01CYQB0OzpN/5YCMAW429NptC\nwxIxKOOugR2P9cQaSNgRIGNA79mGkKaC0mlK6H9bqSF5klBwDks+3uQe4RN0\n593yq8rLurfDMBgTxPdxci1WmwQ0cQo+pzjj6a2/Nu8FyMFOFzaz+gANfTgK\nthqu\r\n=5B3D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"734c354421d7781a03bb14db95f07323b130988c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.67"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.81-renovate-non-major-734c354421d7781a03bb14db95f07323b130988c_1618222403121_0.6941465258664028","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.81":{"name":"@balena/jellyfish-sync","version":"5.2.81","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.81","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"318b946e945c1575fd88e8bf626495caeca19c99","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.81.tgz","fileCount":24,"integrity":"sha512-DvmAcZxdosiHX6e7ELXeYoLFw1OmDo4e1lNZhy+CzJ6+JTtQZ8pcs0sW83kn6WcmnMkdvdktFz5HCfmlXFqLNw==","signatures":[{"sig":"MEUCIH1GiAam0wbF51A1gAJ9skdKBbPC3znfAzlen90uf/fIAiEAnwPIEhXaLLpgFduTD/PxjhH4L9yfEuEu0UdzN9+8GOI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":183782,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdB4DCRA9TVsSAnZWagAAlRoQAIE9JN2sgsXHBCM+q3xj\nLvlftkr2VMj84ZXSmLHuqFjb7triGSdIaPZJvWDv3VY6fyAjOLC8w1WDfZfh\nXUdVbem/hEwuqPDEQbZGKAfvn+oBPSGR2MiVWUHntKAv0isQoX9m3X/cpoYF\nUXOTtmnuK3Dti5lNZhClH5Oy1vE9cKoLKiZDLs5uELpzYIpjG2jIEmtvQV3g\nfhQQss8UgKtVk3JnO5oCb7uZrdN038UoFrJptTYymG7sngGwEsDMAuGJ6+W1\n9UEnJ4lvsGo6Mr1IiYIgj+tKZjgShFItPU3S2txNV4omUpmZlrg5qZIRxJT/\nHdQe42hzSRr3vfGTxI/CTjJ705KcNobGUlk05dItq1s2S9Xxm1p5Z/RlhM/8\nwDMldTfwshOrZPBzWTC3wyzqwPpJIddligwLKr9klqV1XXyVilyWn2gbH7gz\neoxpGZeXMDVkQX+ANDXdQadNDIVpdONnpaf+RKSknnS8+lRfWiK+DxAt7cRq\nDl2pe8GOpIf1yKLjfnUQcrzmCzrZxWJwxGYoHXoNwkefmt1PjWF0gIgh7kkf\nkby4d6Jvrs5LHnLcJKpnfy27puDIpnqYOpQDW+TlN5psGyPPtFaxmSF7usKd\nmR5hlOq+PdqLwsZfnzDNimggcf0+eYCuIGukumkSRpIU5CSBNo20xRTvrW4x\nsdmh\r\n=eBr4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"baad7397107f7f5e1011e384285ab553a0087e36","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.67"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.81_1618222594895_0.3454647036679179","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.82-renovate-non-major-9bda3bfe37f21d12c308f77809b29e02eb2b2f95":{"name":"@balena/jellyfish-sync","version":"5.2.82-renovate-non-major-9bda3bfe37f21d12c308f77809b29e02eb2b2f95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.82-renovate-non-major-9bda3bfe37f21d12c308f77809b29e02eb2b2f95","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0e1c120f9b98598bc85d46bfd3c1fce9940c4f9c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.82-renovate-non-major-9bda3bfe37f21d12c308f77809b29e02eb2b2f95.tgz","fileCount":24,"integrity":"sha512-z9KiwCSgDbVkADSHyROaNrFgOGKaRa/BLaXeawMOt2OUyp7CwCScQjQDWxx3oZnU8Fg/7kXP5PAVntU1dTLCww==","signatures":[{"sig":"MEUCIAagU2lru+qk14Ad4+dt1C3+kiTBsHcUGcXEOWIIKGlQAiEA+bmaAkslyBX+LCxtXLtbNF2jKUd0zfotjlXMW2lAWEU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdIGjCRA9TVsSAnZWagAA52EQAJn0gOg1YFsX7UIMgXvb\nMxF5+Xug7E+DQvzaxcsBNyn7HJ3XDCxWXCNx/9EHaeepSRArdb/1ne2qp5rM\nQqeY73Zo68gAQQJv4fzmIWPaMAMx4ylVF0gCXgyCtGMBHrUIPmVfpzlmB91/\nvUsD5W/nskAjorc6pKWzrWFD23HubrdG9mUuNlZ9oxV3MLAXkK6A7t0Hcy1x\nKJ7p1GfF3V7EDhkNqojaS9pGtbMNTD2ic42Glwy7GvhtNjGRP1uWuw+H4t2g\nNovLk1LOCtswK2dXNoky25Y8Bk81EQz086WUpXpENGijj5I58UYKsv6A3Uad\nsZUnSRs8z5SfibpV57rDORYnRzkFm3oC1sT9l6E+0rMKmON0JLUI0lQTyG7W\nrRDaG4+168yqJOrWQUeQeBO7WtJUgj/gCrlCSnapgbHJ8DjhUnjk/OmQPTA0\nqlZrCQT8aPoH8esMmgOdUu2A1ZrF72K8F2+OwXC1upB7ybiVacwJZJmHEdGe\nwXFZnNYuY14QIkjId3ztwSZcMZoIhK4qv9KFh6Q/Sudxp2jUklLNHRwdO0mx\niqj/Drdgf50trwQNQMRyO7jODW94EkytK4VOQpPTHTnroORCi8DvZNh1DheR\ns+GfDoR0e62ri/YutD4coZxJORrhcA8/JdcrbdkXjnhOR93XlgCU9PiE8IEC\nFvHB\r\n=eOtV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9bda3bfe37f21d12c308f77809b29e02eb2b2f95","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.70"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.82-renovate-non-major-9bda3bfe37f21d12c308f77809b29e02eb2b2f95_1618248098814_0.4775438163268717","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.82":{"name":"@balena/jellyfish-sync","version":"5.2.82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.82","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f0d04934d0ce6548c6a02feb3fd37e7611e1179a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.82.tgz","fileCount":24,"integrity":"sha512-3Vg+87iku8PGPJst45/2LwgFTTEDhf90eAQU7MtJCMMzjR2TI7aB2oRUMBgmiDQ89VCUsNb3rF0JTrs6Ye/0pQ==","signatures":[{"sig":"MEUCIFvt+pRhtFevb8E/tOwLzt1qczAAxwirfRTzEWW6ftNMAiEArnVoCidNxx6hIeVfU3ljmepkElEHVGVmSbLgs++nZL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdIKZCRA9TVsSAnZWagAANdgP+wUiqu1gVfxiWKeVijsY\nXEgEjcGjv4UNOqlYOzD1XDRa8VV6dw78JOsuKvFo6cKz8nDv2ljLZqFwQRkc\n3DmRiHyLLFXBW1wipZZdzcqdWDxlyBJsFiGxhxb1r6m4yD02/STTtvpRNd3K\nAhotYg+AWQ10Phi9FhnYb3TPcan76SMhLp87Yqfcej8XIk39B9WBgQLlpCfm\nsTpZ6StlcC7tEuhG9xNrJLvCyT6lfWee8Fd27k8ZhP8EQD2G4sdrtzXvXz+k\npBIZPEDhjX/RZsliSUY+0+7/OL9AzV0r5KXGg78I9bj4/Pkj+jmLhUUi6UcH\nYmv0Kt5IcYTaE4xLI7JU32fHJNmwD8Ize74jzAaHdgc3G1v6tqU1rjHFPkJ0\naypx2+XtaSXxi1DsXYtudh2lkaMYGYO6WY9rULrIWp/0Wh+NQhKUoKnR97Rj\nSChDAqfM/xTkrbaXbIeUPBebveU25hK6HX50o2L0QGj2c+XoByLMfwVwy6Te\neCAwqZRBb5bg0k3rQu/Gao6BEW8oOMFhPTEI5nZVOEOjt29W/U4Yp7M8ai/1\nqBoJ2tWb3Dj55OEX9Zasj+xTCHAMnfDeW/GmX8Yhpeq4NWngKyi62mdqvnhG\ntqhxNU/B0L82P+wBN88BA6afw5i/iVld3nP8or+o9AU3h4KFgaFonj2/95e/\nw26S\r\n=2L6o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"dfe3d1e18086b671376a48485341c287b1925297","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.70"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.82_1618248345013_0.7979386849028212","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.83-renovate-non-major-066954795d004106e3922a3142a8e4dd00d131f2":{"name":"@balena/jellyfish-sync","version":"5.2.83-renovate-non-major-066954795d004106e3922a3142a8e4dd00d131f2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.83-renovate-non-major-066954795d004106e3922a3142a8e4dd00d131f2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6812582c26e5327aecdd371c47541b77fed5702f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.83-renovate-non-major-066954795d004106e3922a3142a8e4dd00d131f2.tgz","fileCount":24,"integrity":"sha512-WWmoywVtWKnng6MjQ2D13KTfXFiRvQb9l2PjKxFs7+2ejcHwXYdQuWvEsxPrrHsee2b9f+e7NUOxS1sxxvhFVQ==","signatures":[{"sig":"MEQCIEJmX70qAEQodiKcUSfU1sU7WjOK4uFVUiXasiOmmK9+AiBnN8Zk4c0hSHCKzYf3KPxectOdznkLbeX+BByWSkW3Vg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdKN2CRA9TVsSAnZWagAAJ44QAJyg5h667CQtNNRNoNwC\nSCdlagwJ5m/ml2kOtCoKv5OGUadptnNx5MXObHbVlooIiEIq9aBvpS2mcqNF\nxA2LsfmSpmhrOLK8DFQ+2wy6DPMo1t0GOrNLaTCjPscpwaj4bYU7rl/4V/pj\nyrSktC0SHxbv/ODW282W0z2x6IVovtX1MJJC8dz6lFw4gxTb+QY1jC/jGO9K\neI/sQk4aU/ARWRNS708Ors0NeuH1Q3UVBBpNAPDK/NQAudDOT2BXnhXaodG2\nAa0TD/PB2Z7PVHpGJT8aiakFkRIRSz09eKGLo4LK94gxX2uoJDWGeximT8ju\n+81JoYYnyg93FZX/pTTUoyWJ67dGsmmyepHNrpC3quYUbJgtcpdtvqlxlpHw\nNiXhaH6oBB1L0QORf4h1qLvOlW+uSkewL5oat+7x8uUk/d0IEh6rdknfVEJ/\nWXVxZb3aA3V/Qb2GyZqysU6bWmNxT37cqO1FlsTy5+qRT0niUrhisdVF5iVm\nJcsZVfI8gUS127/tzlx80cQzg5et+yUh0m8X1xdon+GHOZqM86frK2PQUVMs\ntfw0MxTYZjEinQpfwdCU7cFzOTwbKpcvcDq9Wspvgte4Xu8gunTtglxntBjg\nEUFRaoR2GZEA8aH0C7JaJi+v8wtRaneG/Dk3WiYSEqwybD54r4d2fMn3dInM\n4rcc\r\n=bWEl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"066954795d004106e3922a3142a8e4dd00d131f2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.71"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.83-renovate-non-major-066954795d004106e3922a3142a8e4dd00d131f2_1618256757899_0.5328290052871847","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.83":{"name":"@balena/jellyfish-sync","version":"5.2.83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.83","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ddfd4ad1ef4fe22ae8e4a0cadb301975666495ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.83.tgz","fileCount":24,"integrity":"sha512-sEoyig7Zy2wDd0yyWV5UHexcVJP1tN2jhwEwygSFeXa6AUSJbgMO9CKPGjh25ik+JFp+M+X910LCzWBX+r9s2g==","signatures":[{"sig":"MEUCIQD7tJbCx2G1yOG5pmUjcNOfJwf1fxCCCYaFINWlxzsYEgIgDWp5Yix1ChwaMl4QrumNdfRcprmOdrsb3GVCnyVmtdU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":184632,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdKUICRA9TVsSAnZWagAAK5kP/2u07nszTdngh1PmGf2X\nYBYTgedgdRSpZfHotVT5QguuGXS9B1ba34lA0YrFMKEu3uBdG0EIOn+djE9k\nETpJoFk1OIAphmTHiKtH1kqOyrRBOnRf87AFceNXoJfPzrtE40mZ83nDpckE\nMmu33ukiREhdMw0jiXWaXU62xxLHxaRG4rsILYkPW4qKmPoBNNztQMhPeJwS\nw+EwBnJLL/nbBv8qQqzV9Ra9MX4FtKAS5D/36uT/T1UM+7DAYuCbQKPjneI6\nMPcySmuyBfoXQtdmsPpDCHuCdMzwyu4ifzO/qC+l3xZhE4lhXfc+TUtAf+yX\nYD+BQH4NaI2n3dqFRhy6IamGoDSjpBmoVr63V4T0MIn08BhSzC5I89koto7v\nTFB6nOv4vu71J/Ofzr+/W2Ng71V97WwvUVVhXJfiLpmRVz4D1O5Yq88sl1Bo\nJ9qtJr5gXs3krySes1zt6vBjWTPSW3BBcTUGjYi/YSpz+1jWUmgZBXkDxuQd\np4K5NQEz2kNRr7S4iWMDntrkpRd7MhCTXqS5s3hSKDYyHkth9WP3/P8FKXXj\nCpEeIvBvRyiRNWJMbnUodKGXCwm7CwQlSba/9QoSjZfpRpkCjdfqcu5YY1EQ\nR1QMRMOfDrcwDv11w8FBIVeH9PRQInoc58brokLM7ucIVfJRn84XL5Dz/jrD\n7xp1\r\n=uiHt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6c8608ccb88c29d01c3c685b662a757603b8e15b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.71"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.83_1618257160330_0.5929423630814257","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.84-renovate-non-major-ed97567961010376499f7fd2a94bdcb72c29a673":{"name":"@balena/jellyfish-sync","version":"5.2.84-renovate-non-major-ed97567961010376499f7fd2a94bdcb72c29a673","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.84-renovate-non-major-ed97567961010376499f7fd2a94bdcb72c29a673","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e65a384161f1bb8d7e64ecb5702d68a060655b20","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.84-renovate-non-major-ed97567961010376499f7fd2a94bdcb72c29a673.tgz","fileCount":24,"integrity":"sha512-97rRSobNpuMnnJ6W7Yos2GOGYwf80wC/S34zN8J2DZt8eCFazqxcYw/xPQaJ3G4HgtXTr9CIo5KEq3fv/V32ig==","signatures":[{"sig":"MEYCIQC35jfPW6+vcOzyrnieSl3ZkeAXUqM2MT/Xy3R33QYSCgIhAN5VVbLGYv+FI6bbq0Ud3oX754AlfzgIQhbC9wkYzKuN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdLgtCRA9TVsSAnZWagAAhHIQAJThAwZR1r0phQV65s8D\nnLe2RGdV/yJJAwj+3TXiSFc86EGRJOh7Fmf7VZ/OPDH3Sgyn+8TEAIlBvRDM\n9WnjyFZpfXAFI4eZ+73p7AQAO7omObPr30b65Y9VaOS5/fC2nDSVvhRcuu39\nqb4CN4O4/XBvlXOg/Gfgbw5Q5IcnkdI7NQueWwJRbjgkZIi2rHaPsGVJYE9M\nb2enQ3Vl7qFvCUdC7a4BlU6W5/1fw42hO5GIfHlHtCUXU+/27Ittj3jKD5a5\nC5YIRfO3+ShSgVMldnYLnvu0HsZ8/VrNfzLUknF43ylyP8ejjYlOevi8ADPE\n83uVeqSQ0F/kSZ8DJIxat2eCfXP7yh9F9fY1X73oDXxpYIGxn5gU0FeDo9P3\ncUgHcy8gtlq3d6vRN1vOOfrnx9j4SIEtBuz8Mew5yjwY7mF+UxSytQOmsT8e\nvB2KVZPoyqAthVmK7zRZZPzQbt8rtGKeJr8OJbNogpnz76PL5VBxaNiY0Rpg\n028K3dsK586kytFBZnIawPvgIp3+h/PtfqvDp89rQObqgdxZbB88IiL+haEL\nvk5ZNV8v80OjHF9Lgna+AlKNjr1xS7B9VqPE/s5Wnpe/PKU1KTPzEeGyswuH\nj9IIYLrsmgDIQPJxnaadBd/z8D3QK8tIsOXW4dF50QxG5asGzg+2i/U7DW+7\n4PoY\r\n=rJnX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ed97567961010376499f7fd2a94bdcb72c29a673","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.72"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.84-renovate-non-major-ed97567961010376499f7fd2a94bdcb72c29a673_1618262060554_0.8430398886229353","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.84":{"name":"@balena/jellyfish-sync","version":"5.2.84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e24305c589584c7dfc9bf235a98594a480dc4deb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.84.tgz","fileCount":24,"integrity":"sha512-9EZxnHuFrmEV/vGrwX9y4Nu0Hsv7HbR8jxUNcutqigM4J3VGzxrb7SgmC52ihxcgFA3ADdLGWUkip8v7OhBM7Q==","signatures":[{"sig":"MEUCIQCKmgsBcPFMuRsxA65K5gWq34/4+XeeGJP4b3ezVJUPogIgHflh1kImkKyJkMZPbuRyW+3fwDVe3w6ErU841q215cg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdLkHCRA9TVsSAnZWagAA01gP+wU4Uf/ZoiR9n95YchqB\n4Zb3padKLsy55xNTK9f2jXje7+qfWDIWnhogzukwukWaCqeKXcp/iQGIhbjr\nyIuqWzVm6Q74DZdlz3UcX/inb2Eh98k56ulXt1DLhUBPr4GIKf6LsnLYNRQl\nEuS/CAB3tSOUUMUP432y+TugEWZanAzAOomgNRqWf/H8zOriuPpWKPmB5r5g\n+zLkM5nIryNSKZqCz+4zRNoM/P9IjqhvTb47uHqrdEQAthwo/KBHHqemmapH\nqbEvL+SNfYjKTbRcWgfL/LhdyqGOcKjJyAJUwPcr9xKoFXzCl2BFLnF3KiIe\nOspZaG6pUOUuNGwUU73eJhVwOf1l7HeezR2yMMLJLeJue8hsQPE/WG/0HkiB\ngMYSZ7fqkSFjt/y2KyrzFo3OQjFVI17yXPhnKSAD+ZjnJciPTiVb1giKo1+e\n9YgwI1K+gTOPNeBSazUpN8hkR1bZDJ57Y8PLESFen7MWPcgHMFFpd4DvAF+j\nB2xulphQQbLu6iXYpOCvr3iHqVPxlNeJKEZE+TyIcsyTiTOaZD+qnLDQJmnz\npIWZw43efZ7RImlRo8zFQa8ZOBD2ZqRxBRVrX8jpViavadORGm4G6Qeechc3\nSqvaNIBDYL8TnOSEmR0OOm9arsuQTPvjKiOgjjPww7CNwsxBhSbT8gUJgj3p\nw1fr\r\n=ccXA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"1f030385776e0fe623a54d6dba6f88af4213c261","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.72"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.84_1618262278893_0.9020757383526508","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.85-renovate-non-major-243098f0191da04902a0ab572b045864a7bf7b4d":{"name":"@balena/jellyfish-sync","version":"5.2.85-renovate-non-major-243098f0191da04902a0ab572b045864a7bf7b4d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.85-renovate-non-major-243098f0191da04902a0ab572b045864a7bf7b4d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a4ebea42aa05d90c095548fd7fb76bc308cc5067","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.85-renovate-non-major-243098f0191da04902a0ab572b045864a7bf7b4d.tgz","fileCount":24,"integrity":"sha512-1hMaA+iDL44UqRvtA6YrGSHkW5F9JEfTvfD7TF6hQ4eKTmgGP3cDNMkDUWsRB8OOZcDRditeBb0riQENnuMWtg==","signatures":[{"sig":"MEYCIQDfW3O9mG/+f/BefyyzgE9RKEDVvROEbAVSZtxLAv9IcgIhAJNpG6Zk2MD8laoGnYD3EfE5BIkC0517ad5RxbU2aeyq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdNR/CRA9TVsSAnZWagAAQkcQAIR56aoTXHPY0z5WT22b\n01HpYha+PRP9pamDoYAkzGIc7za7n7n+AlJmMKUkvIncJjOV35rV3NcfkooY\nsZ+z4ci4IoeHYluhcYLQlloVYcvjaNPjlgZQds9+Mqy7nMel9wIs9zFGz7rW\nJ9GYmha1gZWeWtoeRGR89jM3fVWf1t89A7KnWn5qiVncac0Lj7bwNVwh7X7j\n1Kxds2OroIwoEvDIl6pH3ZZ04EGkrfsO3whKBOB44VbYAHKAvJLWHBXpkIh7\nQoMmU4oN8eU/PjzJygq1EGd7CQ3TVnHBpWipw9czOLOSyuPL0fMonpfnkM1N\n0hB+l+ywS4GS87trruhTOH/s9/Mq5/ef/Up/kG9B5QRgKV9a12Bax8MAsFUp\nqTtm891OTpq/lozU+zreAJVw7FRxG//4uo1pX851uknh8QMeXu6ANjlsuF7o\nxsO/ePoH0OE3lDJf+pzNJPLYN7M+PcbLVdA5bj6AABUqbjpFbQW6kXa+5Enz\nnxfWqpWDJEBOmkQgLA3FBq2OPc2a5rPGCd2kvsPO648OeHztIh7tTfSa2yfJ\n4C9Jpqc0gSetpXYeqAcln+qDXyO9KVIcRr7eA6rYQkT5Nn3KFpXDNz4r1USh\nULNId69l8vBTfET8ZYWEkmvxT6785CxiOhfRP2ghVKzdpNml7syyB7PuPgWn\nKOxp\r\n=xGYN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"243098f0191da04902a0ab572b045864a7bf7b4d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.73"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.85-renovate-non-major-243098f0191da04902a0ab572b045864a7bf7b4d_1618269310639_0.1648083070476396","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.85":{"name":"@balena/jellyfish-sync","version":"5.2.85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5de866a2cf807eaeb3f0524eda178e9593863a2e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.85.tgz","fileCount":24,"integrity":"sha512-GuwqczwnRVy1cuXBrRwkHChsDTufJIFFLA3tmhdeoIoOTjd6lGCvjlBKu4/dpHrBWUJz/BQRNsTveaUicXiMXA==","signatures":[{"sig":"MEUCIHfMXYd6LSjXHw0zQXOA3THFnM7SrRFhYuEDs/Xf4KPpAiEAv/9DIBE32hiPlP4b1npazDbY8amigkcIqciPp0KF2jc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdNU2CRA9TVsSAnZWagAA8E4P/0VnHXfRjSRIKgGj6h+C\nHZe1QQfUPHL0wEtOYnKitKf8ktlqd+sNbEanTNIlskNYmfjs9ltZ1gS9bXxa\nQ0iAeVmvFFmsItiiaKW3anLhQq0iDPEiLGQqqPl8NTcEqU37XNpRAsAIuqM7\nqOjC1rPAnn5CoRdge7cNvLJThsUs1wl31HBZ0ndMl+3xFpXJbYbzV65tb9cq\nd4lLUTOMvoUMTOluozmA8ELO2HZ5Cm5BqauhLEzxjPRcgxSpWaOqBVKcnpYD\nsiaavvJt4quxJWmRbKzja+f4minETCgV/7J46wP+fvJLeKzWa3WANjULCnNw\nkj5WJS2hfIwlupgzZCm5KaPG432OB/gdlDdpQwovtpzfCDkqscjj3TIZzAgV\n66oLk9MWB0sX8p+ChrFTFGEUCHZfLFCje5OpRHZFUsg6ddjCrQ/+j54iqwVy\n0RPWF7k4xtJs0lJ+8RFIB4MD2P9VM0QVGzB6M6HlkxLWnXZLA4fp3e9PlKgF\n/Ehy/76lMM6oBe7WJvjiCs4rzI/caOawXJedo93sj9y3qTODh8tHyrvKR7E+\neMdxpXbVs4bAx9C/fFXZcvnM2f7u8yUTYlN/mDa46O0x77L/dCOvYgLcpckb\nXn+OVZm0H3HnFDCRBwEJSxvQYwi+UyGmofSijs4r8upioYcn0s6dOUdByJyR\nn8Ur\r\n=M3Sx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7919b9d1bec1bd7dff6593b9d65ebe074afdf894","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.73"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.85_1618269493807_0.7447393950468464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.86-renovate-non-major-7eff2936cd2fbaeefdaf21be30b6d31443735d41":{"name":"@balena/jellyfish-sync","version":"5.2.86-renovate-non-major-7eff2936cd2fbaeefdaf21be30b6d31443735d41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.86-renovate-non-major-7eff2936cd2fbaeefdaf21be30b6d31443735d41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3bc9fa50f71d54f6d5f5fd6e279f001d4f4dc36f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.86-renovate-non-major-7eff2936cd2fbaeefdaf21be30b6d31443735d41.tgz","fileCount":24,"integrity":"sha512-M0aSglwxXM7X/996pPAo5I5blqmm5VDHoE8UAD76JefP90j5M3OFYKfGOMs6WD6VXmmqQ3zckJXu8HuvI6Bg1A==","signatures":[{"sig":"MEUCIQC40F7iPgKAMifLQmbfPYbRokbbsG414nXO/QGqCuapEgIgVIeHAnUpmRCmnQtpsA42kxfoNP40PqrGA1bZCzZLzQ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdVScCRA9TVsSAnZWagAAYVgQAIGcLLuUFZezXAbKbVEn\nlajMp3udf6sZhuJkottc/CEydK2I1MINVifiUornoKDGlS7pOQ/sX2sPm7Bt\neONgpMK2CDDLNhRSeVP/ajOohfxTXzmVhFvzEZEmH5OXfxUlmwlSO1tdngZt\nZDCNlLsOyUDyGXHQFvuYzEwGzN5FTnXbbEXAmoi2Tl/1OSAnFvHE89BulVdd\n+4KHUnnXS12eT+A3SbltkCrtJGOAlOq5WThailzrc99rc/WV+1ASbFLo+Yr2\nG1f6nYYMIU1O3RbhfeyGdV17NyQ5MSo+/hUOPz5w0lKztAePzfmqvTdst1RD\ny3IqpSlmSYBg2AOFYUbUFtEp0fGkroDCh9zEUP8e5pAONAPZmjqs0qdCOljy\nzfS4tuADFAJvy2wAHaZe8jiwYJjPXM6WPSbEB35UZmXmLcXivSZpNfARH6SJ\ndxPfDg4zsBrXwsawcddyeksnTpfWXic09GgUkJz0AImCsdPBwzb7iyG720Wd\nFUo4opBQkfsJiuF/y8fRIJKcI3o5U79+FL2nmWp/QYgad2OptoszhxwoR0q5\nLNGbrHJTl5WCpq+IkYs7/ddw2V3e1UtrDhyPTzTkUG/458o1krgY70SYvb1y\nmq+n8WhuDXejQdI2WcVXCzkOy3LGI1kjcMK2HA3HsK46JH6VpWjLhhpRNEjg\nyhdp\r\n=zjP4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"7eff2936cd2fbaeefdaf21be30b6d31443735d41","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.74"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.86-renovate-non-major-7eff2936cd2fbaeefdaf21be30b6d31443735d41_1618302107732_0.5383631083026239","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.86":{"name":"@balena/jellyfish-sync","version":"5.2.86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.86","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c328947ee10a9f76867d7e7a7fb0a8c7950495a6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.86.tgz","fileCount":24,"integrity":"sha512-uJ1BKovUMdb104onVKIN4JLvuqRBi8xQ+ntWDePzInqQGC8FEFNbKgmqIrzkP0lBA89dSTSMG8TvuVxXHssslQ==","signatures":[{"sig":"MEQCIDQzC+P0yYXfGU9hMf/erdPhKRd8XCabef4uKZH9KJH3AiAOYiFoAUs8EEdGNb4/OZ4FtDmZIz6t90e91FWj4WIWdA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdVVTCRA9TVsSAnZWagAARC4P/RKUfEG6JzDEg9yXm8Zm\nDHTU6D8OINI8SyFcePI/4hLSPR7diXMIEKFEN3lIUpExomrtobBB+V/KKyMX\nmj/GDjDGA7CAJXDflD9acf8dJRj7ujne6dM1x2SXC/osjzNYDRjr3V8oodBU\n4xrTOxN9Z1RRSFZvP+XC06eOL8hlMYXEzkk55d7Ozf96yKbmiouXZtTbsMJk\nK+NUKNd85xxjqY12tLY7Cvh0sPKDhNpgULk5wdWWOJuyGN4O0iklweIbIQEn\nBiBBlYS6Lm2hZDrGOU+izN9/g0i2ua3QeRWZ1SRtqRyCV1qLBoqHDvtNiFlb\nutBd36faARySq83XnDa9GypB6xgtcKIkN7f3Oj5RQBsb/QcNp3h+lcYJLbf7\nM9lMwEPKdD9n2BlDFApZmDqIPHxsB+LoJNHfFas9pDxuw33lsZBphwEb4m3N\nDYzkx34k7V4DI//+uB8HYSmpbDFGw8+ptyoGrhnJZod4pI8O894tomuFajZA\n7bA6MgOW5aeYwJMy5pswcBXMqjCgm9iwdD88g0YkoiTpSZVsoRyyWCehuY6/\ndMoWnJD5L1G4vSQmfo4fuyJzSccdIkIa3ADIR5ORiPBhi1DjrsQQbjcEJJH7\nn1E1m8Oi75vGmyG2B1VDbm5MVwZQNvGuJ0JUUq3jR2t8zuA0U9XhtKvinKpX\n8fTY\r\n=RySK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"6ec7cfe9f6f3f5ad11b05e36f03b6d09c4c4a7f9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.74"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.86_1618302291189_0.8282440721557547","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.87-renovate-non-major-251a61b6d8d56ff78d4753ae89a73254fba9eec3":{"name":"@balena/jellyfish-sync","version":"5.2.87-renovate-non-major-251a61b6d8d56ff78d4753ae89a73254fba9eec3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.87-renovate-non-major-251a61b6d8d56ff78d4753ae89a73254fba9eec3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3a30c68a25c08f1faedea6476e7611e2c674acc0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.87-renovate-non-major-251a61b6d8d56ff78d4753ae89a73254fba9eec3.tgz","fileCount":24,"integrity":"sha512-ljeaeFC/Bd7Jkfv+sJ7Z0rcBppH3cR3jgwkMqPTZMQQPs6iLsY5Yx7utMQ6N9UxiqKzmDx+TrFipxfeeU0lXHg==","signatures":[{"sig":"MEYCIQDn8IuPB92DDXvvdVu2qRnzNy6zbc6lia9mtUoZvaYHkwIhAND0nSA19REW5WsM679V6R9ZInOrz3tgdiTpfbiqAtTG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdXHHCRA9TVsSAnZWagAAhCIQAInm3BLWnwTeu9YXiJiG\ns0TyJZuQ50SYe9BKaCxizb9rt+Ccqe0EKG+hqhP8gBjFRf2bTyN8DFXWo3Gr\nl/QB1L+kKHP9lO1PlO/6PUjESIPagam7Q9SYuAPeiqU9pZOspuGIlPXStp+0\neRyPwgZjKLyEtZfKAgC+Oc9L6Wc3mofgGEpx43263OLQhgL95nu0EJZS7O7u\n/+GNnJCswr3wkaI6w8kNLQBj8aHFNT3d7VlwzGpNc/kd6K1/ylf5EPIUcdZL\n6na4iFlK6/LOZyoKpfJl+dN8Umr+h6SmlCq0LZF/8qZIVji4LNjkpVdczuxi\nEPnWtdjp4jOaow9uArQ7jBQqrl7CuWaCeSOg6LyLAt1gEC57i9q9v2dN5Sod\nXR+oEN6/F7sp/cpHKnQudFlyXzSxDzZgRyfhI0QDFPYCNOhqrNT6m43Sqxm1\nGWbUKywc+msZIE1tFmfXZ/esc7bVClYLmdOuf1Mr7OP03UDR27oXGNUOqDAi\nNrKPjaSw1PWa4XAmh6cVih8bOlcayuX9woiSZwpyHxTTEIhdIxMp94W8/mQa\nVwTukpWVKOlZgOaGqVOHXPxpWl83gg3Q45dkvjYRvEeihcGytOXXnmwDzG6t\n5m+FZc//BRPxi8dshIx12bIXArIebIs2U3MTz0raCqUQ7OtSGPHETFgD27vI\nTfSe\r\n=xzao\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"251a61b6d8d56ff78d4753ae89a73254fba9eec3","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.75"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.87-renovate-non-major-251a61b6d8d56ff78d4753ae89a73254fba9eec3_1618309575337_0.46917991632730627","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.87":{"name":"@balena/jellyfish-sync","version":"5.2.87","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.87","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4b9e59719dcf9002911ac7fa5b51b47d8eb52488","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.87.tgz","fileCount":24,"integrity":"sha512-xXXiZfTdEZ7OIhS4NgMeYyD/EhD3wG6H9gSM/fv/uVy8GIQfQUqCttRNIYWN9AgftWyX+7Nacpq531VuDAZF+w==","signatures":[{"sig":"MEQCIBWHuMg6AtzHxAlqnpWwbTEMSAhnQ5U84wS4PMkmABKCAiAvRacaM1IX/X5u8LbdUrm9ext1s8HWVjZ9QqYAXMUdsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdXKRCRA9TVsSAnZWagAAHrYP/R8xBdGKGO769N6Cwch+\nJQim2KO7/E19DHxWDojpSCJm+dXWnwNQZucHdehEqNNeUcsN5I7s0X+eOkjx\nrD0Dc9DYmnmAnCnCzuwSKR8ab7YrnsRtYzsz6cT69uJAdZhULZ4fUuzew3RY\nlehfQIdZXDq8QNR7NBuGxWQj6JezpZnXt1pq4oG7qzasOyyrQD8JHytXlx3b\n4GjRbW4r0K/mbAEpRX4tLgk4ykNw0KZiPv2Vv873iej7NJBTfgTA06iVI8nV\nYF+A3uGr/9p6EC1VFPTl0JMMdkWjO5eCS5/RcNQGHarL2f8WpkwntjNudSuN\npc0lIy8xzkW1ibLktrJHxDv33wqxmEDXBYz4BDMxQ/yC82zbR0C4gk4jTKFb\nsEF428xfjEb1V7aaE4SQyLgJLSEop6Yz+6VJnngDUzPCNFaYb7pHIYwsthve\nAwzn6gPrfR6LtUfnAA0bz2VOcvpZ+j5+yH1RFwY0ZMmcV6EfHig+UsEHT63e\niNjq++R9p2R+HpW9mRfyyvrQoqOn4YP4KqVsZJPj90SXXw0UIqy8I9nJSEtr\nEWX8thKGFaQAMVXf3x1B67nTFZM4b5F6E+/Ais4iBde3EUGKnVRdhitO84A2\nQyfkedN3ZP69vPUJ2Q03hn/n9jSgRoXMUGAnotkMdfuq3D/rOSz3IY3IRiMg\np1O2\r\n=UnzZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"3f088b20ad24e025736aff988e91336c3d8e11b2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.24","@balena/jellyfish-metrics":"^1.0.75"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.87_1618309776529_0.20002741216150777","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.88-renovate-non-major-724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4":{"name":"@balena/jellyfish-sync","version":"5.2.88-renovate-non-major-724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.88-renovate-non-major-724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9affd33a1a69fafe0f89643ed1de264fab436cf2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.88-renovate-non-major-724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4.tgz","fileCount":24,"integrity":"sha512-10mHi20AXFwrpvmuulOFQS5/rBWQlnREds+gakFvhha3X5fUKDr18b1ZdNT8rIhV76eBxQ6UXOSpktlqyUQAUg==","signatures":[{"sig":"MEQCIB5u7rBE5zjb28teZRhnXF369kmldfPs2CT2duGR0xvNAiAeg/eHIzGDdjp47sneuUv0zWn2KD5JQaAzK2Ru0IOGlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdkeFCRA9TVsSAnZWagAAcr8P/RDbVnuXqdFvyuOhko7x\nNUKX4+FXcY89QyVzZ+1f4cf7ASF+1Bwq/Huw6XaQfYItZvIq5c5EnsMiAaOS\n9sMlXmfiIGCISEO9kvWyxfd0j5K0f7zC2XzXQUFz/YEurmO2K28e3jeL3cxw\nrc29RfdcB6YjyatXxDTD+vFCWtg1QmVVT4WFroUvIlwf8SYDBDhLAZiAWMjm\naWik5I/E4egdC1+dltjvari0Tqjt5HKriOG2vo2vo1Ax8RK3iiv3W3/9oYFq\nkH1CP1osTLbg6d7sXSKLwt5regShGKbgTuVdhRb2/j3P44OjLZHMDzB1gEjf\nZifhTZl2nOGgChxCX1y09YaHB3Sq4lFeu9vYKnFvL34ufPtcS5NJpBmBR/GO\nzu2qSeLOg6rSVTWpfVT1wNK2HreMBDyEBlglF9HvYqHtTVdI+FPUXwxhaaV2\nKoEdyniNL4Vl7mRhW+jPFWcTH8LpjWhxIQiKv1oa6gNgpRrIeaau6OC1SSXD\nsljbk0CzcD1OW8nN+qzn6w+VEbxRUmXGgRIFwBKwfn73QhUc3FbxxVYgovCk\nnxLw1bCYTkgCeoTcDoQ1uHv7u7Sum8QBLy9ycYPsmV/ay10cycesi3B+6dTz\nkZ1P3PbcXOkH1arrAYT94NysehsthlPIIeuBiuPZbjfg3te74qUMb2W4jHxM\nKelS\r\n=jHvj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.75"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.88-renovate-non-major-724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4_1618364292611_0.7862282830329437","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.88":{"name":"@balena/jellyfish-sync","version":"5.2.88","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.88","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"62eb069b24544572ca6a7629fc771cd4bb62239e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.88.tgz","fileCount":24,"integrity":"sha512-jwqFUWT5UEUAMb3UxZ14erSOxlNwEHnXk6mDzWW/ct3bYi6MQHXOzZK3qi5mMQjbTy2WwtgL0V5eyAA+QHhFAw==","signatures":[{"sig":"MEQCID5ZbEofNhKQQj9oCw/XS8ofMzgBbHVh46pBKyn4CAuhAiA1UR+IOAtGFCtRDN7lEQysXPNe+okn4gqxMIOyBK8zLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdkhGCRA9TVsSAnZWagAAgBwP/3MiB8bYESvJrNZ+qoU1\nlP4UYvzx7RKXw1lbhFlkl51B+5MGmUeXO2cssO29GVp//GOQo48amBqwlwl4\nFLe2RIzBkanWjF8mgReXR6xES2jtEePTO1Uo9IThm3UMRHnnERHrkgxeQX2w\n1VUhhnhnyrQHxlPUx+iun8QmJkfmVfQgKyaEhm/wN/MMXTafkuLJLCF1q1FN\nsg/XTkShdQ5Lw/t2tAmJLTzhX0/zoruL8aooD6IE1HF2VWZzIcCHxLJq89oq\nww86Uw6UyWHK7+EMjHMwQdNwzvcHX7hsF6QFlG2L38/vMsXGo3yBzXUBCSZk\nGwEDFqAW2EwJvDL7Kkn/PW+TfnQbHjLLW9ztL89ehwIiKk6/xzj6A2cWFaL4\nyDVqDKXlWo1vXUypRyTaBd29T73qE7uKGuZ2iBhZEOn9SvbTn5jTEBsXgOUl\nCgN4m3H5rEzfviLIAsv2EwzFqrFhRSpwYEVnJqVqPGfKbFycEdM+7/jSKUh4\nkPr301e2y391xsD+oTTfWMFwo22/ORy9fLpd655pE7nE8Cxf4I9ufEcKso3A\n54T4edCQUETx2ZXoAJtFU9NaqlivZ4BdGfZfhdROB+AbMl5NtftVx9k8LzUv\noW8ZljvsKTYPgB8ob217ZE8UXMZSMxEnR8rvv7DnXgkqVycNvIw8tnNPtz3C\neyPT\r\n=6TJ4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"c95b904ec616a25e60f25dbdc4c9faa65f0c9d84","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.75"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.88_1618364485887_0.7947967407752514","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.89-renovate-non-major-53f75d2254a8c9a2de16a846acc2ea665a8776ad":{"name":"@balena/jellyfish-sync","version":"5.2.89-renovate-non-major-53f75d2254a8c9a2de16a846acc2ea665a8776ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.89-renovate-non-major-53f75d2254a8c9a2de16a846acc2ea665a8776ad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c1bd44ef343deffaf13df04c390f9dcb8c1ac762","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.89-renovate-non-major-53f75d2254a8c9a2de16a846acc2ea665a8776ad.tgz","fileCount":24,"integrity":"sha512-r3y/uLvTH9J6z5MdEmAJfdvkUWBVbkALYCaZ0xJcvqRmBdzbNLj8vy/GHlDesFCwNoBXwiewNzD8ze5IOt2dFQ==","signatures":[{"sig":"MEYCIQCaHxPt7FUDDgLjwfSemSpY6a2ZdWAP8BdXjywIPJQQ3gIhAMlvtiioTemdoyjHm/oQ5zNc2WqSxJtLCkRA2EC/14Rr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":187240,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdmTiCRA9TVsSAnZWagAATZUQAIXMjBWADiwH+/0QhbEB\n0s/YXN96E8JJXmWimXhYiFZCYOOUzpD2OlFuIGoM6AZyFt3uh0x49OYt1UcF\nbwgz1Rhfvevy9FBoxTStBxMcLmwFB3npa+r/nonrWjppKSZPosltzqoc6046\nLgRV86lDCiAx0etQxiqizOyLc+gaLrwcAh0JUR6j9Tytn1F6PVdq0plOs9l4\naAlnSopxwleFZdc1bQ6KtZj33ducyI6opLJDnntZUqwseN9/QAQzWgeHyPGS\nG6hd/kdRiM8Qc0yu7gbLIpYCAvoBvz1n+jjnspnBm0Uu8Sqiaq2jBQnyCsoY\n6iPrx4ZrhPJeQBa7nQ+q8hsOXW+zk/iSd5kCfnySDYHz7i1/uMhnUrdNBLdX\nsiREXKHuojevKShAeqLkrSdMOQTyiYYuAzRCHMpVX//9VfBQT18V5dzPOhJ3\nGksMBDYPoOFcGNsvGYL8e18e6BN4ZhLWIzmsSt9v/q8VZ0Gb8ciJDeQ/vTbY\nCDpeFS/UU+cGmVe5u8Q2A0a/Xx0RfdfzDod4M9gnK3ycjrGPKSLDfwgXfHti\nBiRaiFg8qKrbpzV50YQlWQdXa2ynF0IUE2ezBDRbCUZ8/89uFoZ4TjzPVBVR\nQQ9jKhnpQWq9R7PhP7f+5mja3IbRrAuUf2gnO7eZOAEXOJ9U8jB5kkmWuLu0\nayur\r\n=VVc2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"53f75d2254a8c9a2de16a846acc2ea665a8776ad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.77"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.89-renovate-non-major-53f75d2254a8c9a2de16a846acc2ea665a8776ad_1618371810445_0.7996159996492365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.89":{"name":"@balena/jellyfish-sync","version":"5.2.89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c921e70c0a4a2223fdda2060f9828847feb03542","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.89.tgz","fileCount":24,"integrity":"sha512-GIRiXHpOkSSbl4TF018HiIj6cxswOjfS1UC7fSN830K/qJb5vTOL9yIHCOfsEN2CO8YVRuAiZZ5Qz8pmYtshhw==","signatures":[{"sig":"MEUCIBNEteYiTkwvPf3RWdfkYBQytDzLpSZu9LH+X8Kvfpx2AiEA3GHHqxUo/L+ZOO1ZBgHW/zeTmgvkPXt8Gm1HFIGGlNE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":187180,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdmWPCRA9TVsSAnZWagAAZbQP/jeRvaTzmCRDaG0dx1oE\nYQSnPT3LmO3iRLhFfwt57tlueCZchwS8c8RfzcuaW/w6eg1DDfqCN0ap/l4d\nEXoAVtijbDskzbg9udkf5A36Swamoi3mIJNL26SSptsLpm0NNrZGsyOyn9Er\nWjWd06faRy9x4koQA7ahv+5qWaMgfWjoLX5Uj5hO/JJ2FKQDBo4WByMMy2jC\nqZDX8o/kfuqJ/sA+RSx9noesWLBuy+eJu77k6seCXps8hdvIrwwBA7w20zGJ\nQpZAOLqbdp30r1eu9x2g4oOFnj0C35yBkkm+cYkzq3HFOThkaxsBTTCm7M4h\nn/L7TQUjwydm3dm+tJF7Y/Rk/s+hjokxtffcVFMJC/+VZ9v5NsRICJetyosX\nkNNziNIoU16D3xL2KVVszYDScz8AWOmrmssoUleE2wMErcG+X6KPRtM4MrFQ\n5pkTviWOo+lTNuoiuh76xCARWrUvVIN0jEIp81GbOrmhcLJNZI0j5xWJ+lIR\nBz26C6Ri5kWQiRz1qr/a4Zk2DXtXAyc7ADyRyZb+Vdn15K0Row3eKIUDIVuN\nbf7y2QlCEOkCZS9IPlfkx3h9b5A8Ivd90f21rXY2OluAKIsaFU1DE2Xji6gD\n80i/jj09eZIsBgVT/Ow37aFlTvSCb+0Qop4s4/NCIMg5L3Gn0QYL0g1fY3UW\nciGH\r\n=wPgY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"74b046e4c2c47862075cdf97ab17d9331d122ec2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.77"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.89_1618371982660_0.36353240196069936","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.90-renovate-non-major-4b15009f880659de424ef64e68261edc5bcd49b9":{"name":"@balena/jellyfish-sync","version":"5.2.90-renovate-non-major-4b15009f880659de424ef64e68261edc5bcd49b9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.90-renovate-non-major-4b15009f880659de424ef64e68261edc5bcd49b9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3ed10f94944fb1a2b0cc0c3dbd4c22afedf6ed9c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.90-renovate-non-major-4b15009f880659de424ef64e68261edc5bcd49b9.tgz","fileCount":24,"integrity":"sha512-ZaJY4LBr1hPE3DY7pjqk9F83HDWPHQyWR+v5kH3hEnvcaWpb0s8SCuszRluF0pguiO4fElcStl7x8aP14tlrBg==","signatures":[{"sig":"MEUCIQDNFCDXKEWXbXQB6LE1Bki9uuOzaSDW9NX+UN6oKoSc1wIge3kgQ741C/11tAB4t0/pmEssSPpEFJ94H45TdV12lF0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":187665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdoMGCRA9TVsSAnZWagAAxmIQAJ8bFniedA2n1Z7bQjMW\n48gTo1JBwxQJQyfyTKQgapRo3AU/Hw9ZR39qvhVL5YMFbQwwGtztnDFKC9dg\nCrqIx4QQVmRaKZtTgHDuoky0+B8wSFxsRfSzBH673l7gCx4ZHKsUwrLOOnCb\nlFt11zPxeGxish+ltxi9ZyI4NcYQ/rx0JB29qdWWSqobmPu/G3bzdg46YNxT\ngoBh+Ts0ifutp7n6ZEBzFnk6+2NEUus1qvjaXfAtyHnHKRHSGQxjod6thYpp\n707xic3XNrxQq3sl/oPmKWip3mZCdkMsdmAd288cUVBYUa+gqfsLQhWmRPL4\nVMY1D8UluNtTbCK5bNZG3Tjpv+pxC/d7GKF6g/vl/uWpyYM9kSIV8eqBASEA\nzRuTQahsAkTUjrlwRk6JbDmdu+EHDFbS3rvUOkmzf3YDwOoOiKUKt3dwEDxc\nUKoohgzybrPkbi5AGTta7gIflpM6v1f7SWmPC0475mqB3CQZywBbeBHlUR3X\nFmaVYk6Mw4SgtafzcaSDLFf+5DbSAg6bf7prgn/2gI3E4ZLo/0mYcqguegqK\njIbiazSqqBoCykfxQon/SDSESeXZhlMRKB0vgdhk3mOEJ0EEOG5PLcLbh1PG\nDolYg/0VL8+wctZPPb8vWjF4Pcz3ELVJK7QUD/sPiQ2vva5rtGeOPGSpCK+y\ncaMe\r\n=vFxa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4b15009f880659de424ef64e68261edc5bcd49b9","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.78"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.90-renovate-non-major-4b15009f880659de424ef64e68261edc5bcd49b9_1618379525930_0.24392163518180787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.90":{"name":"@balena/jellyfish-sync","version":"5.2.90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.90","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"085605b7d22f8307ccf89de1ef12d1ec35ed0dca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.90.tgz","fileCount":24,"integrity":"sha512-ibuCsxS8zFHmxXDDgtszcX5wNuJ2aBkLGT5BbAqHX/pM2bp+i/odlmnc4FyffnoHL7TLCtPTljuXaDFv1aK9Mw==","signatures":[{"sig":"MEQCIHu4p4Jh7HkB4QkD1uDNNhKdw2z9jxmF/eQI0bxb+FhUAiAa90qTnKLiSQMmz5PRqbZEYKWiEwjyd2GmzYZ6O8maPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":187605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdoQGCRA9TVsSAnZWagAABnkP/jpJu+B9teSLHRyJihms\nad1t7pBjqdxDlrAte0r9Q3CyoDZAMzzZbKaoWRLLuuOi1DhJgwiBX5Xk+K1E\nTJVq0+U67I6K4Ys6Na4YeLvj6TxqfuF/DYrizqPqP8sEO2Yj+aD+mABKT5oh\npjz6mSzmczCa3JgQVmQ3YKhyMFW3MaxBM9LYNoEn0WwNkhBPff4e+RpZ5Hwp\nWsclS4EMt/PbB+kVwkNxlpzsqxPq63ls/B/XSAhJOdzBU/vAC0C3zrbFKxCO\nJlmNb8ESv5JCdOzQN0WZE5ybW5lsAuPUN10bTDKyZFU9Wj2T7ds4OI+e8bMQ\nDmPDhHI5Sw408ElE0d68/LdyA+dUU8te1GNqzMotldTu5+yIZ3gRtLdGQg4b\nDFb2MiNkx0Qy0C2ktQVr5qWtclsrWD0AJuMtqnEQjV3j4GmDFGL7YUakTP0t\ng5BSeDMW4okyY41u3omf8X6EybH2BkVSqnHQzC4j9fACUZpt6at1VbmZa3dA\nti8xeo3RElQOS0CK6s86pLbIrooFEQT2Is/a7h/QKyBZ7IBYBxR3xndWu1fO\nj2VGSTXsy/5+gJqpBXzmkMAjtcOBCi+9WWlkpClLnWFHwWFbrJQzfnWmIjiU\nC3gqKkBJU+IsdepQjpFsQCJGGx9hch9hXJT9MGBiO6XIIx3oHNj18Y8kaI+S\n4KOE\r\n=YNEQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ff1e1204bf0c527153c14b2352add36de5a809a0","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.78"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.90_1618379782001_0.23030438843720136","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.91-renovate-non-major-78f02aecd6e3a650aac7033166faa88835a43dfe":{"name":"@balena/jellyfish-sync","version":"5.2.91-renovate-non-major-78f02aecd6e3a650aac7033166faa88835a43dfe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.91-renovate-non-major-78f02aecd6e3a650aac7033166faa88835a43dfe","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d253b8e5f11fc59bcf54f5fee46ed279c7eb6963","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.91-renovate-non-major-78f02aecd6e3a650aac7033166faa88835a43dfe.tgz","fileCount":24,"integrity":"sha512-NAnPEw9fyqOzjpJwJgC2rIawqdZHC/YNYiKbqGYXeOOM4f2J2F+pJckhJhlg4uh/lzFNJK8PiC6rg4NsASNy1g==","signatures":[{"sig":"MEYCIQCKnuyZRGksYxvAbAqsoIQa2trvKelCzQ6CRBcczmrDVgIhALISCP/0AA0XvfUVwtjHJmCdQmN1WsPmqzZr0STkVODr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdq4lCRA9TVsSAnZWagAACOcQAIKukNBw0muo8zTp//19\nb1Mx+0dgYUj9uip1gkBXe8810TD1BXgQGPrRoPAkr1UDBn9lSSdl0jKc6Zo+\n2Z3YUdwRgrmCYv+wAVSlo0u153xw1M2xUs9yxw4eLMThxJkn+caEtOrYz1/c\n3NntfLwFgTxpthLVugYows3LXr2efxp+ECT2VXVQG+xBai8txVcgqzuRuLaQ\nRoYSLoYsj/BWFpAA8cZqvwyjanwyho8kJzHmrw883Ey1qoNi2wPY9Hp8GrpX\n81rPjq7YnYNEs5nXrYiGc9k1dhEVfwoaQbW020OhNJ2S4mSL1hCgHNGpH4+T\nQeedj63aBTKNhP66Ep1fPAJ9toLaFf3YPdk5bqXawK/CkHyb9hRf5g7Bksfz\ntM8M2KBbzDwzvU/8rGubAjwQWvgY+tFCAm5/lq8Wvn6slV7pc/utd/RxrPOr\n7mk9gHgXnkV3ZmHSmvxcFRC0ZJYIXJtDz/lodkugNAP9z3AJ1XtFj3RUfbTz\nC8cubl9zJ4XldvniGpQEPafLpLZxo+4SUI1FFgcFFNE0/qoyyJYZw1xuQjpC\nwHxXp9nZRGjelXGnzPywG85Ap56a3vnO+j69YRZ04T4E4OxPCB89gUo0j72g\nWzMauNdzw7uDqGKkVTR7w4yRm2wxe/q/eOJXHn25WHNlCpRaiqA2gYRDn+Cp\n86wr\r\n=iKGk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"78f02aecd6e3a650aac7033166faa88835a43dfe","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.79"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.91-renovate-non-major-78f02aecd6e3a650aac7033166faa88835a43dfe_1618390564838_0.22303441103800914","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.91":{"name":"@balena/jellyfish-sync","version":"5.2.91","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.91","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ddaa500022ba49ca17c70d5687e7485f3052918","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.91.tgz","fileCount":24,"integrity":"sha512-WhGvy4Xv4C6tj3BbwEDw4zu/1eMVhszNMDpzN3D6IOINnMdW9LIYOkY/BVaKT3YBc4CbbjGZ8+Cmi2aGEJxZ6w==","signatures":[{"sig":"MEQCIA1O4HHpui8MqgSoNMUTHpEJq9nW+oc1zyvaqoTG6eRhAiA7621a+QLqB7dSvRN6hOlNFk7r3NOTOaeYwzMJ5416VQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdq7iCRA9TVsSAnZWagAAt5AP/1sTiffw2eRSuyzcisxR\nSY9yKRF2N27/NxepJjTjt7JMh9zG1yfOMVcXbXZ9l3fDTpIX4l/TNIsynoqM\nEFxHDtNe6lA2+gJw05vAZX2bwFAj5IpOQxme3/wn3oZu+aDS+Gnu/tN8hLde\nkadPukorjZRlUveg/LHzoWau9MH9+g+c00IbMHuusK3uV/cffRh3gyN04naX\nfUah9XWIZ3fPV/CURNQEW02CkK5E9yra686GjnefC0nLypNFObsLK0HHbfSa\nH9gYDEOL3Hp9/UPvJOIjTvVxRNLfwgexodHRS7LLUHeDjwRVJl03n6ZMa7XZ\n2RS6MnFYR4Zu3CAYqhf2vj4tRnVhxyzV610Dwve/GeI4gjp8f62QPKGjGDNE\nGcPycqtqIuFWfpk1Wn/+TujfaDIvWszoMsiq1Gt3NRaVr0ryszoxqGU7qOxg\nY48ecSJmlxTCkroYz+mZxlFesGMS7vqZTqe+LXSnQ7fz6woiaOxvXoE5/q4t\nRWw+b7RX0tnPA+/lmpwXyh7s3z480D7CQ44qjEfaTL5d/ptgh09p4kpL3X6F\ndUMLZ8WX/LbnHJNEtd64YO80IyfW2m5fTGOc/q46mEJ9Dl6S5c+b4v+gXyQo\nML2gajdcZS4byXIoS2sHycyUZndm4ZC0OcOvLdsXYkfRx+cZqiaBY/Th/51s\n+4C9\r\n=FD/c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ba7a0aa4803018a1910174db7210ce6d43d97c22","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.79"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.91_1618390754183_0.07916204989556386","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.92-renovate-non-major-bd8c1931266d30cc5a606a087d2f08f043f83714":{"name":"@balena/jellyfish-sync","version":"5.2.92-renovate-non-major-bd8c1931266d30cc5a606a087d2f08f043f83714","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.92-renovate-non-major-bd8c1931266d30cc5a606a087d2f08f043f83714","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d1b7127697b8fa2aa9383d48d888edfcaedee3d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.92-renovate-non-major-bd8c1931266d30cc5a606a087d2f08f043f83714.tgz","fileCount":24,"integrity":"sha512-aRinQulgFe5qJu5eHdp3QYzraVyiTUD/GN4LODL7VPh2k0PiY5jQ4WGITQn5wESqY/r80rPQlMMvHR+4O+i8hA==","signatures":[{"sig":"MEUCIEkt1qyIwA5ZE/ErenHKBCTxl7iPPzA0LSlgVNCm7oipAiEAp/mjaxTuydXkqF6QEylXdSStyhliKXnbiUolwhv3Iqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdtpgCRA9TVsSAnZWagAAnKEP+gI6dBkI9MT5ljTiXS+9\nB2Ua28ZNQB8BNzNi0vDcCZd532My29iPc+xUt2onSIoGCZupf15LLXv8n8yC\nkKYmi3hq0o8hDr2LlbT035gMl6MmiGKDC5HWFJbQZeo9k1BfJlPurKbHfAkN\nlHJlv5OkjtE3xEESNMObCQvqWWRw1qhSsBKD1H/OB8ZFrDspfAKeIgZTGOI+\ntuerUfsmnTLmJ3Ln4XsKwp+iXTMta544FQAFmlruI1gOYQAemNQzfwB09OM9\nXzR/1sh011o4ufcq4fKOkNbzd9tal04o8QFR7nNifo2PWAU5LH0buReu4mbH\nMa1KwxP2K8wk3YZ2yGEJTfybdAg6BbsgFvHgZt5BKFFWzdGdVDzbxn9kN7wk\nFu64617MXYoGLykEtwOXxpcrcnMlMo92I0QtCwXwdUqdaWJn3b4SmdYIzNtz\nHtG3mNqqtjQPEdbuZykpoEHTJ4pIMw6+nQovdboYIP1uiBsiTvGN6gABXd0I\nmpesHHZjuPPe64A+uNCrWHsJZT2EP4rOvd+QnANz7P4GYJnjc0n1TssX1Ozl\nOpMg6fMYlRsLX7og6Zw7H56IeCnAAolClPF05k0rEoMGzbl5eaG2SzZBjkmC\niC0jjARHp8saQKaYRzmLJQ4n8xtaBBh2YC0mRUf8ss6Z8KAGJOJQhr+Lew7g\nKJfT\r\n=6k7g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"bd8c1931266d30cc5a606a087d2f08f043f83714","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.80"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.92-renovate-non-major-bd8c1931266d30cc5a606a087d2f08f043f83714_1618401887638_0.5069308994667154","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.92":{"name":"@balena/jellyfish-sync","version":"5.2.92","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.92","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"760c856fbff4dd6514fe5ebde06b897506b3cb54","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.92.tgz","fileCount":24,"integrity":"sha512-gM16avoA9XvNyjYRvFJWPlsZNADCPqjo0zgY0iXfGbu6oMNtifhgQL9662SLkRggdja18DkaImj8vFeY+HMWNQ==","signatures":[{"sig":"MEUCIAuLyDgFceHgkO+gHrVcTT+ejfdtzZIT8J1mrz0EyAraAiEApO81spjQ1cjIy5utqa0Nyngo5Q9Y6wtr78svCNcOeI8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdttbCRA9TVsSAnZWagAASNcP/RyQr+GWK0FjCNMF14oX\nuqXiywDcXDRLZUqDHCFpFVdZMN/txXTxawZESwgKw3LpbNoaVGlYQir4GudC\neXu6heNit8PMv2EuVB6NMwlsD+lShdK9vtW9fNTj8lN8IXTH0tEgLuVNhBuI\nBsPHPZ2fBtfcmGv14UZnh3P9++p+qE6PinXqP0rRlRgddDyI5M9/pyWtyO0+\nARMLDzDbxyxdrSV8hdX/ubjtiukZ+Kg8Pw6iO7Mut7JouaU2hQr2NOa3O8yL\ngcSiIUUPYuTt0WZKNTskEl9ldJ88/AO9IGGJAXh6L0DHS0wqLGW09+ysaxS5\n+pFDnhMe1G8nIdfzjAYWxqke4eig22cyfoLYnwoQMjYdU0nCrVO5YGzSwls/\ni+p6+AETfjZtPke0L1X/Qlrh0eQw4pFbh3kAZlZWGxKGX1aWKgztZNdM0BF2\nQPUE2sqAeOjOzNZlF6zcr7moLPv7Cf/fUFZjiD3ZXgxNQPhlUR0nwgiX94hr\nrs1LQX5MteeV+uIe6chuCwEglzGLmSvwkYxb9fvtVxQulz6VcY8qAdahKeR3\nt1Y3t17s1WpuwM8i00Wx5TK12sVIf6x0lQM3bcpm6/xfuJt4ExxCk17bEE6i\nSb3RVc4CGM9gzJEcLKdfDn15E8pK07ZSqJ5FcqpJp3x6OzsNY4IRa3L9I17t\nuYpE\r\n=qK0t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"a9ad712ab8cc2bf8c3dbcc5bbb8a3db393e4eafb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.80"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.92_1618402138720_0.7218243543989289","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.93-renovate-non-major-4fef19ec67e5129eeadd1e1182288edeb7081fad":{"name":"@balena/jellyfish-sync","version":"5.2.93-renovate-non-major-4fef19ec67e5129eeadd1e1182288edeb7081fad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.93-renovate-non-major-4fef19ec67e5129eeadd1e1182288edeb7081fad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd419333b3ecd3332170ef201eba3d8553a9bf4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.93-renovate-non-major-4fef19ec67e5129eeadd1e1182288edeb7081fad.tgz","fileCount":24,"integrity":"sha512-1Tw/ku98GcyihxVhN0QQ4SuI3tp59/3sMG6Bx6UBWYks+aFuC6sTsK/caW2wdusy2z3cJTh35XeLgB50aV0JTQ==","signatures":[{"sig":"MEQCIEXukqZiLD9ZiPn1CeLOKErzHVVHcalhz2ah0SHvfePxAiAseRfILRv9aBY3H+Jw3TDSHYJXbYZZSZKJtCUUyRByqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188940,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdwBsCRA9TVsSAnZWagAAC5QP/RQWL/LmNnuzcRbjs2PU\n4jD5Qp7BI9ypu73f801cSqFlkXbNMg18CNwrwPGqLGTfZMzNjda0/ic5wQVB\nw+P561AQPbIOtk57voMJqEOj1ENCHtR5twjrlGqqxQ1Xc+wyCMXVRVidJMjN\ncFGvU+URkK6aXBY1nxxrm8tDU2hwm1LwadjnjlQxLexgmXncFmV4DSpnanI0\njnKk5Kl9Gt3gE8QMIu6ysZkZLqff6297Tc9gaKOzhCtaQnXRFk9RLDa+EE7/\nPJ43tL9vsH8LZqRa4fMDYNJa8/N7Wg8wJ182TejGGcCi1MwGn4WzgV63GPsM\najVzJa5pbKZQLw+AqoLnJX9fF+RQFGZBUC1K4bjaJFak6eq339LM45y1W04f\nwJBLDzCqxBaG8d39w0fsd2YpkczSMw8K1wP13P763jflivaaOtl8yGktYjGV\ns2ZvkZ5dMTDaVSqRpShdAMRO0Rd3CatM4UQdsg8dgWnzdBkWceH8VL1g8APZ\neCPAC4huBA0NggGfMC2qn98GqWmy98oFGYc7A7IYjh5yMNAvaFd0KVKEc33m\nKwzmx1YeFAKqGOIxrx5IcEXwYqRR6RdejDZOIgFqV9QJDnrTc70q1tNLuVJx\nhGJWsDoZuJ0Klfujut2iulrBF7BMcbF/3R0UY0VtQ4i9zr6re5Fqy3xLPQ+H\nVX6e\r\n=EH5G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"4fef19ec67e5129eeadd1e1182288edeb7081fad","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.81"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.93-renovate-non-major-4fef19ec67e5129eeadd1e1182288edeb7081fad_1618411628410_0.12464698502654192","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.93":{"name":"@balena/jellyfish-sync","version":"5.2.93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.93","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f466ae257bec749fc5bc0bde1117fb9b04655815","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.93.tgz","fileCount":24,"integrity":"sha512-mCTD7R6dFKP45MbPLwVZqP2aJoLMGycOES6W16BGFRIYZ6qXsahaENdiwGKO35OivTurhzXgHAyhbPNA3FTAeg==","signatures":[{"sig":"MEUCIAwiYpt0VFAN+UCf+79XY8a3Ti5W3gqzbfkbrTfl99q3AiEAuLpVUAspev8YsObV5bzeYMfXy8pi+Vzu71jxOET+aM0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":188880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgdwG3CRA9TVsSAnZWagAAdlAQAKHeRAVCYWtpZLxxcWNo\nCbv6hxW8z8lFgNV9XMnbGHfQqk4OOFlY5ROBaVdXkO1gEtTvGxzgvVgDgbFJ\nefq3SS7bb8emxF2R4IkLUwnM5EoDFzmL8htjOybaQ1sehiSV3j4yHC6VfOCt\nqdvFMNLpgS7emQ6Hnn4M09HCLnY6vE4PJyQtOXR5UF0K4h4oT6dK0htjJIpc\n6Bn/rollflx5A1b1qk7AbTaX+fqOVJq7uOmLQMNJvtUhSkMo21PC7dBbKtVE\nBMvSfltedRN8ktc+zKufKQX8xMi4ZfWi93tYVm+7RyjSwXbphoEaGAlANxya\nlMB6MGLpcotxwBDD7T3qpFiSGIZb4wGKbWmvQGtfIKrIaUc7ZH1BChcReUVR\ncM97T57EnHEBPWPwK1v7ef/DEPdqi/OQII2axtzhoReleLMfDcb27CHbiLSp\nTM/jPRENWB/lyyITw7rpW7AcisNpqxNZCOIH3xGFwDllsK8iqRwNX2SDoI2D\n2mmgJn3lHfINY23l6EPBTzTkzVAxk79x/XmfcXP+U+QajXes4frFladhG5/R\nAJ4k5sXU2F8MWpU8dqhYOxGx5vsOhQph2qD+0Ztu5n2eM0NfPR3mFqFzetqN\nF62O5iFpXhy3MGHNwXqsjLZD0wbwFrSd/K/rbMuOvuzAP72Jeotys5aJjpLw\nvxEd\r\n=M/un\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"caa1870924fbdcb00c4a37ad1a2f5b5c6405685e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.81"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.93_1618411959316_0.6475308314088408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.94-renovate-non-major-b6e8d2662464588f27d743c2d802dae6fcb0bc9e":{"name":"@balena/jellyfish-sync","version":"5.2.94-renovate-non-major-b6e8d2662464588f27d743c2d802dae6fcb0bc9e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.94-renovate-non-major-b6e8d2662464588f27d743c2d802dae6fcb0bc9e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"09cf206285968efa64c99480059170c237a3cece","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.94-renovate-non-major-b6e8d2662464588f27d743c2d802dae6fcb0bc9e.tgz","fileCount":24,"integrity":"sha512-CbuABFi4mMxak+nt9ktmIq/L7rOiHjznrZR0ZJFiTB/OIgdn+y4zpz2pWaspIRYBWZTspjEw8M0e0KQMv06wuA==","signatures":[{"sig":"MEQCIEyIdFjcsIG1SNF7BZDWlP98Mxw9utoTpIg5q9K83Ff0AiB+J2VAV2IMS+a0U6+uTlz4hx2ji7PL4cLl7P9DcPISXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd0FDCRA9TVsSAnZWagAAXjAP/i8Lk1dZrd2gnepkq0gl\nvWzAHvv28IEjfFOJ6ettd2hWK16N9j7xVRUu4OOewSwhM61haFKsAaHgG8eO\nX4vjt+oHDqhsd8cLHI0GxmLR1Bhty8f9pz+xhqeCUGT7cQjfhKyRu6D7k3Zl\nQETqwaCNi1/2594D3uxR5dujLgCj3rYfds2FmUWbNAE2ZhEvrPukJvTGreyD\n3GHaNHiM3ImK1DBy90RMilUaOdUKC3uwr5W94wdCI+IfYhD1K3OwjcvB4IFC\nRYK4XwTjXEdJCyjTlUnbJN1Z1GBmZwN1vZYRvMzYAgr2efzMpubG1Bbtx8Qc\nUBw2zLxwNwWkVwmRsVQrQt07mRf/nxnVa/QsDWGGyo1m2wO/rUWPmikPw/bI\n5b4hDHurD7/eLrDiSoaXob3rOr/NdEf5BXX6Rk70yaoFJmaisHy8KOfVZ3Lh\neTiMylT3lM+GW+2PGXB7YWzLCEjdnepWvr91TyYksVE8zDfpeGiX7JMSBIqA\nTJoDO1IgKr19VvGOo0doGZi8DvCRQY88WntE97yMwUTlVRhgn6/MJrdCYmp5\nYJpth/4F6Ab51R+tXbClzIx2yu+gUwAZoviG5p5/U5PvfzJGn/SLlsQgvK5F\nVhoALxC7h1wYlZ/jeNR0YJPp6LspRqWSLlzZJseAJEfBSUmZQwOFMg6vcddW\nB1p/\r\n=eZGK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"b6e8d2662464588f27d743c2d802dae6fcb0bc9e","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.83"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.94-renovate-non-major-b6e8d2662464588f27d743c2d802dae6fcb0bc9e_1618428226503_0.6608902372345093","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.94":{"name":"@balena/jellyfish-sync","version":"5.2.94","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.94","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d8475f1c1d2a6a26a39a473fe2fc75350e80c626","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.94.tgz","fileCount":24,"integrity":"sha512-mJNwTDEQWQNFv4dkWAo9nkvryIAkL1ySiY68qRWa+0QZMi/U0RvF+a0KgjM99zS8kym0kEHWPlIx5VzKbTcQ2g==","signatures":[{"sig":"MEQCIFi2Fqoxg0F3hc7LJGgbVupffibDonilejPpZ/2G65zqAiAxn5R2rg5frZXus8+ucqIMuGmOn5Me5Rr6m1huyIfwtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189305,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd0I/CRA9TVsSAnZWagAAvRgQAJ2r91/wycgLazdwhiWU\nlE4NxfC7md7A4QrJ46dpsPOXxQ6+2NFqAiSpk60JpxIdL+aKjRHXh2fE0ex+\nsQSRiAb80pXELC2E4yDiVNhm5iVtZYQijjDc9RpSIklCnnclCj/22USxhK/3\nzp4410SAAmqcnhS3Ix3WiIpsasYlnFobN9P/QFEz0Ol7oExIQnk6v9LgsvOX\n23jewfKpsjLfAzUy09hISC0fM4w/AV/3ezqA6WHhcOaTYKoJzyq477KCQlao\n1Q7ff9oQOcntsaoITsk80GhjW8owgZn83gTzEyimFTlx65Rzll7gdp2NKehr\nTljYzEtfDE//oFaXXl5PE79IhBWGfEyQXqCclCPk5u89vu4rwe9lYoGF/CgI\nej3I5BLyftNtX/HFNVQN8vy8LUnaLrezV+xZTVdF7x5Cv/oqiKsnwTzpt1To\nNLik0iKiDqYMObUqjziGvEsdpdhOlw+GBiuNqy0JF6KsJn+sreemaKtsmGhN\nsEiwHLkFGwwFlbkYMjHvymEPdGFgtMJvp7Szpr7on8P4BcUlGmEgSi2/PPDA\nXFoHQlFJPLKwn/rXehrMPzG80VRNBXKUST+NdUWg2IIodMdDLKQXnKncqrMU\ndo0KPVn+zfwJNg9zzMDK5FmWsNmYU1mEiNVzaCB9IbM7vZsHNkAximKdonD2\nZnIO\r\n=8obj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9b206ba41983ade2a0df2ef9b66f03357a3e6ade","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.83"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.94_1618428479376_0.6127770059597182","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.95-renovate-non-major-e4ef17939a18ad287ae06ab66f3ba4714a2c02f4":{"name":"@balena/jellyfish-sync","version":"5.2.95-renovate-non-major-e4ef17939a18ad287ae06ab66f3ba4714a2c02f4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.95-renovate-non-major-e4ef17939a18ad287ae06ab66f3ba4714a2c02f4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e8766652975d35acdf0aef5598ebf1c28916cb72","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.95-renovate-non-major-e4ef17939a18ad287ae06ab66f3ba4714a2c02f4.tgz","fileCount":24,"integrity":"sha512-xosvE4vcjLFVdGBXOrySgzmXRLQtUSGUhnTYDfArpToACwcelCmF4eNIt4INfS6e/XclWjtTlubWcPDTHoftXA==","signatures":[{"sig":"MEUCIQCLc5v+PDJqzIi7Jw6oRZ98ZwQcSvBVKp52lBkpEv48cAIgfMmGZagtGCssMXFPMlMoXfryiSqPUnEwq/s3OxI63ac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd1sCCRA9TVsSAnZWagAAbiIQAIiOhSyvwl6L2xE36Jsr\ncw3rkzR7zzk3/izSX5nnfnMZQ10TLkgJYrIGz40Uog0ZcrJtQBOpY2+++rzw\n1zTnlMeXWkOI+ylw376n5Ssozig+wNL98ru23328Q615H0/GabzuWUWpYLu8\nj3tbvD99buy5/ZITgt6UklfLTsx6AO6EkWVNbYWYqxn9i/1U0oLmyNCsc7QJ\nO7X+ISCIM2h6cbuWDI//7/MeR/+mmK0+kYtofz9WjvWR/kCWOpRpyjSwXf50\n4FOol43v7qbA/9QIk6hoBmOyt/SIzTpzHdNSIAB1jgIj64eFMVYnQ+knKT1x\nAOMTamtSfRHp64jZTkD/YAa0HPRh/JP8aS8aXpg0snJylDPh0DqdkX7yDugD\nmhGh5V7zADL0PMwl6TRMYL26CyPmndV79zt7Rc0G0Er1ef7NkfKxz0KwTkb+\njZKGeV/cyNZX50sOa78SoU7uWnkw8TyLjFCsGuhqZgaOXSzdSPlQOA5hO/A5\ny79bR3WdiBI2HjioV0zoBFzIKEOeidHDEdx9JvxsVLFqA86tpYLA8aFSg084\n8enx2HDPeMZGWHo0jvWFnxkqYGBtpWt2xUvxznsoE3D3FWP9y3nyLyhYjMHd\nLz1NoPYmiHcyhnVNa6oteEZqxeCMJPHVPpcyW87nFvphMaHNFL3nRTsLI8gN\nFblh\r\n=iton\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"e4ef17939a18ad287ae06ab66f3ba4714a2c02f4","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.84"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.95-renovate-non-major-e4ef17939a18ad287ae06ab66f3ba4714a2c02f4_1618434818210_0.6143046986690834","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.95":{"name":"@balena/jellyfish-sync","version":"5.2.95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.95","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"766863605a7c3f4c03c374ed2f0a151d3de0ffac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.95.tgz","fileCount":24,"integrity":"sha512-fDxck8BUrs5bIorLVArEPMZotw5snj090Z74Y5Zed8EYPCDzYZl6SDrnzgadZvV78BKzCSPqq6+U29V66GiYdg==","signatures":[{"sig":"MEYCIQCxUA4ZPhcsIgKlLN6o6RlEca8W9ijRScuFdOAazccg2AIhAIO0z6SgJqid1+rZdwjJP10prD16P6hPthIKvG2DMgoq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":189730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd1vMCRA9TVsSAnZWagAA4NoQAIwY14NFFQpJ4En9an5+\np9IFAYoukayQ5Xbf81DcNPy8gI0TjKP2pTAEAsApV6oLS4pNyZzb2bxdcsd1\njtkV7kWY0V2uJNXOxW0u9gv9Hk+1ccaM+bVifoZFxWDRGyD3h32e6QRXJJWI\n4w9J0DQaiM/cqnjra2OUpY5bPbHmFGXSXTIql7r08wsxSxOR0kWv2sEpbNkg\nLfrXx445iflAeESCVYam6DhfGEtx/zM6hr5YXwRcZdiJ/qa7VS6OuiBZxViZ\niYNwwdqGB+gaIIFXhKvKjpq/TUHGKnvroPWgV4hr84PpSxmSJ9WIeqE0tZlC\n6Q0lLC+fLAUE6d7Jb0CTVzLn5I00u/m9iTOa9BBxx0/2u6Wa8EpfdeOPci4N\nlAr8JGYvxlbRit3ogz7F8Uwx1dKTX0YO+6o0EMdWncZLhEAw1yX/eFp0jdVu\nWk/NUpqueTeEDDBRCgkT2fIRQ275BQgBG5d0DAc25OhaNJS3mMqXnyYkTiC5\njR/MiKDkhqJC2IBV/lz+aMPO+NyAOCmfQJm0aTFhYuPdRdGsHh50ZxE6uMpB\nVgbEhMIkkvPbtJBOuAnryzD+7qHJJeMDvGEpsKunDcwnd+17bsnB6NnoGpid\n714g49HFyZ7Q0E+smoB3noieT6kf1g6QgRL4AoScWNqn24JvbexEOAxvsIjQ\nS+ff\r\n=qNCF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"5b597819434dfccfb4cf4a908deb1fef5f712f4f","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.84"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.95_1618435019867_0.4113061023800564","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.96-renovate-non-major-705b3db17f587dfb75c32b04fa8e2bb2d40187ca":{"name":"@balena/jellyfish-sync","version":"5.2.96-renovate-non-major-705b3db17f587dfb75c32b04fa8e2bb2d40187ca","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.96-renovate-non-major-705b3db17f587dfb75c32b04fa8e2bb2d40187ca","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0a9391f7977c92e47688e7e9bcf3e29ea92fceca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.96-renovate-non-major-705b3db17f587dfb75c32b04fa8e2bb2d40187ca.tgz","fileCount":24,"integrity":"sha512-IJFUR0FCrniuQV/tgcA+uPKemv6d0Ad7OFEfN5Juqw/fdJzCnuAqpG64+QSRScaHHkqhvjHJf/10XxgGgveHqw==","signatures":[{"sig":"MEUCIGaF0ohXJKyvx8wAQIYFgKvpd94X+O+6hHSISnfWch+iAiEAkDRNanh7I2+qLMkWFTBHEIeW3EVk0g3IVYNUBXhRMhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd4IkCRA9TVsSAnZWagAAm9oP/1eleXc0l4XlFPuRkdvB\nuG5AgypxCIyZVlfz9pBjE4vRM2aYop+yxwL0kTQYEohZ2rfttn7rAogM8oan\nk0kqNeZZTCs4wxqOLM7BrcojndLdD/n8O5/IaTOMucwTSzOw3w6MLnZya4hf\nWK9hPdaKjsSSZuVzsB27s/lt4wVsFXmtn5mbRU+gXPcefcg+dJwY4p2yHDq8\nEp6+jHXdZYTR9T1rnVzxHzadqKRNmfE/EXwLadUhyEtW99WwDUinKE7ZsrZO\nHp9QJzsZ6opo77hMwVxJFxT3OqaVNHDf/d4KWVQElRX0sL+0v1z/+nNO6Hfd\nGS5+Bgy8xxysgQ7QlWd5lyxnj5VohT1+wwdhvKEOe4N+QWtRjj18cfGyO7Qg\n5cW0Mqh85vJnvpfRzcwgom5kzN33cWncRsmmau9tycVmW40i21XFlNSXSj/S\nJUuuEhG7tCmMGWPscjIWDKse6Oycum++6EzhMjI2rhpKWemPAi+qxvmeQmDq\nFrjhX1W8DiZP8jS9gCoD/5px6Gk7ZJPLZjmkKCONv485pULeW5474a3PaF+M\nFq6MQOtqSDcuN62rV2K2fgmu3IspUlIt7jw+DAXcTv0CvPZV26uF//BE1aUi\nvNSjjc8vByjj/mmUljj4w9Zf3tIU3D4TzLKnm3JDuOzotxLxSV8hA/04LX0p\n+oq4\r\n=YB5j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"705b3db17f587dfb75c32b04fa8e2bb2d40187ca","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.85"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.96-renovate-non-major-705b3db17f587dfb75c32b04fa8e2bb2d40187ca_1618444836042_0.7823456108358411","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.96":{"name":"@balena/jellyfish-sync","version":"5.2.96","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.96","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"32f317de166e92907127a309ab485a7e8b8f29d8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.96.tgz","fileCount":24,"integrity":"sha512-MpPnSG5/CHV8lgmrMd8fwN00tl0blIHqQrBmXBlPS2pJoiu8wug4hEtzdj/xSyBnDY3mIrUlVPoMgBS8RymE9Q==","signatures":[{"sig":"MEYCIQCGCCzZcGfY/jePhaHHZ5zY7s5Mwl7Z5X/oWS1G59tWwAIhAL8Je4pFpADPUFsiplSfkH//wZzSCMdESbt00TdIRaL3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd4MZCRA9TVsSAnZWagAA6GUP/2mGbjpWOObSpW9r1WBS\nUj78SRFtpWaSwbBwiLoOtyxrWtDo01x+ijCMG28GJ2iJB+N/sUvykdkbjf7W\nwYEgpeMjoDq/4Y6jBjZiheJbYOoDOsaA3gtmRyxM32wbJJOWpo7PDf1DbxjD\nnvyipsnYjgBSgHQjyrOt3SOqa5w4cheh59LN7YzmZwDuG/guxhquU1bAvn/T\nmr4mwbrD74XuvrbMsxDf6A+ary31I4eUfkq4xh3c7uHpX7uE069rsZHnwi+j\n8Bp2QU0v/ErAw60xhcGU4dghYLgWx+oTwTbayIMIhFALBV3vGXx/kObVFqTQ\nnxfgZI7mZc1/fRi+dghy9pcunfWkDlhSaxQV4OexPFUWwbX2RNzhXIM9YeNa\nQqNpol/RbkwGsZtvIqqOGPLh7ZuNvIJkGX/0cGtR8gj18kg5ZteD4sgzwHts\n5cxEb14BpjESWFvWtHcXA5zTg/31gmD71/XgCd9DJ4LJfacZK/xHKjM2PkXb\n+zdzJyZ7T6Z/gSaRt50kfmv8JbhN+VRUAQYnXJA6U5c76Hp22B0e+uq6/X9b\nQ4YGaXa7j1O7J9mMweDDTc5ykVu4y2gk6+FIFlxkKccbD443wBrnWvmAYinS\nsK1JCiWyElxVdy0Je4u3dltBkHP6Dn4CNNy83iLlfp4taQ3R8khrSDepGrQJ\nszGJ\r\n=o4Sx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"f678d67300ac2cec1a1e14805a89cf57cafa44ed","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.85"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.96_1618445081330_0.9271812414207623","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.97-renovate-non-major-9dcc5021ab002a3c031cd9929cb89d1fab45890d":{"name":"@balena/jellyfish-sync","version":"5.2.97-renovate-non-major-9dcc5021ab002a3c031cd9929cb89d1fab45890d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.97-renovate-non-major-9dcc5021ab002a3c031cd9929cb89d1fab45890d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8467471c5dff2d0fa2b64f031a4d783e61c3d645","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.97-renovate-non-major-9dcc5021ab002a3c031cd9929cb89d1fab45890d.tgz","fileCount":24,"integrity":"sha512-CVlFjcYB4A1QmG9tpZT8nGZ3GivZ95MSc3yZaK7LRlWzy8FyaEnJ6ue2yKsAE7Zee80MY9IhUphnjblJrSk3ew==","signatures":[{"sig":"MEYCIQDcWFLusAxd0fs5aUG5kEHbewEUEOtZj5fZvTC/o9vKSwIhAIBTxMdY7AHKy8nlXCPp6+r1JAakHbcXYXBG42sRRAsG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd5aICRA9TVsSAnZWagAAqdwP/2c01itqpXGB6LPJEUwD\nDsT7iMHVnn73Z0hDenk40FT9+2Llj0CIGvsBOiX7luuqF9bG1lGlrODa4iV+\nUNqytzzS3Ghr/QBc/9kIHHC3dq2LHaUNedwE981d1ccjYRk9uZNMT/FqyU4C\nnJX+Ykfl7rP0OZEbfKy7r0bFQq64EdnLD59c/r3OSQPFHwv/g789NGKwlBNX\niBFm6xYlJs3F427p4OEj08rYh6pWLKqLsgfNdd2DHbWGMFW1oTzuIrGpmxp8\n5qhMuhmc4CkXlf2RQb5NJzu0mZK0kPE0FMhMz1iSdB5o9AF4VHjoNrsUM1Lx\nUvBPm6JXT3mt1+KL/JIQH5Iq5B0utbps1axjxxdxLAjdGAwvdcCqFNvnRIRU\n2MvEEiE6qz7s7q0qUR3zMZdIglITbv53MwLDRRShXJyt6vNtt7miESFE5cEM\nn7F0n/myITqCoeUXwEWmihyEqFHG6XP4l+rIY7GZzDB1OO9w9CRGT9QBfUhp\n61Y2wBCikTJfG4uiDxKyttCaSO/JvqyQ1SlPfty7U+p5MkgwfL3654Ssb+db\n1YodkXdBb6WKtuYJxrmyGlzvosJz34VI0W8K9CeyVmJe15LgIehjjbQJnZGe\n5a3FqRSNLoeWw4hcBx284nZhKYKvz4ql+hD7x8y8EyPrVmry0r/UNtGbcq2m\nzlLz\r\n=/5bg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"9dcc5021ab002a3c031cd9929cb89d1fab45890d","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.86"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.97-renovate-non-major-9dcc5021ab002a3c031cd9929cb89d1fab45890d_1618450055840_0.24413738836707854","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.97":{"name":"@balena/jellyfish-sync","version":"5.2.97","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.97","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"891b01104f46ebd8c13962eeb51f28f9a87a0b47","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.97.tgz","fileCount":24,"integrity":"sha512-nj7UZgQYsgMn+MpiWQqzDTJtDQmO07m4LhMLrwlcZ65yWRL9Clu6TjuuJYcLu5iTds4IIyng4+okeTu3DUX64w==","signatures":[{"sig":"MEUCIBRRw2SAZxSHs54ADoGC24vGkgjzIPrRvn9KDvjzKdg5AiEAgDo9Z0oGHM361vhWiJEZedSK+0489g6hGlG7ZzrZspA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":190580,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd5daCRA9TVsSAnZWagAAlgEP/0DyHBJ38nEFTPIfFWX4\nS8FDBJBDsOPa2GGFihPM8oVwr890WYQkZtm72Z+FJv76q1OeRdtooKYSeCWt\n3B7T2ozflBpVLUC0nRP/yj0jCovBr6sm2CO9H3T0ebAYDFYkZcWL/ec/aR8d\n3/I0uLiNyhq5TPcu81jphTFDyI4Kxa4YZbPwBGBjys7JI1gHo5IUdSUheSoR\nWIC5TCm6COsTpNXcwWGGz5n/J/0PJ4PR4JtfkBR8vLSWBE9DvKwxrWxYAVQ9\nmay6ORiO0iFCqKnTUJfTFXXhY8N9ferEeC16kUA4cOCpj5ZOKtVXGIz8bkdV\n9/xKrf1AUdPN3i8w4SX1WPESAGhMiHYdqOguFEt4xwl0LnUTNQp5gy4c+ktu\nMhWSBlVZu8i0fNF5+9rIjFnoX7ksougUVehO9swNFzOzvTq4A79jw1rkLkol\nHFQRZqPCywgmnCAFX5LlulbdJqKBMLWaheSCAhzybLU2pbr+h7EadxPftAU8\n7wbvbsSwVXN0YRFk/Z02n1YLwj7Q6iEXqy49iBh/B+hJt1buusWqAxrEGFVV\n2suLIsJgzRLZcsgtzmD8RU4+Nmx2yzlXsff+YqaoUoLy9w1kcyFARr1e4/Ia\nG3AfJQkv5NMSl2QWZa16R5TFjcQ1GxZYsF/K7e6CJ6C/+bGCqGskRtd8szzh\nWu6n\r\n=rmnE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"8402b0be7e6c3c16d5e31623505a5e7bade7d9e5","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.86"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.97_1618450266460_0.0832510681191998","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.98-renovate-non-major-47dfc5501872440fea5fd06c787ed0dfdcb0f04c":{"name":"@balena/jellyfish-sync","version":"5.2.98-renovate-non-major-47dfc5501872440fea5fd06c787ed0dfdcb0f04c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.98-renovate-non-major-47dfc5501872440fea5fd06c787ed0dfdcb0f04c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1e49fa8816353acf9a76baec9f095bbc81f8cae2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.98-renovate-non-major-47dfc5501872440fea5fd06c787ed0dfdcb0f04c.tgz","fileCount":24,"integrity":"sha512-doVc68sdDV3vc0P2eomhTDLsfRo/XEENY1KYPx3pshPBycy7lam0QBRh/qToOq6N4jfNQOMPU9pAsuiPPckpEw==","signatures":[{"sig":"MEUCICHW8hO7KOgw/ZS8gWpqFQ79YZecZK7kDVOzIb3+P2NnAiEA7Rr7mctUa9qeua4TPZAOQjPQ1TO1d2Kol54MCFMULL0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd7u0CRA9TVsSAnZWagAAcU8QAIxDi5gyoMFqjU0Xp5Z7\njWqnUvRjNLR2LRrCLF6NGEXVWFhB8vSh8qYgzbD9NYNVnJfNrITfygfdHlBK\niIAwI0d6mbfLT1vetelasd97vgJAkKxFGlmB1Td2OQ72xov17+55xi6jg+bR\nFwvRF2y4I8RMEjnNGJOmnlouyZ+iRMuSHI4Bi41r8v87kW3HMrCjTiZeSGDX\n9v4v31vM5B6cSPVfqjs2MWf6jyVTrSRfBOiq0lNPwg5Z0Yl5iwWudEfBPktq\nlvdmrCPN7tzmzjZNaliqsw0vrER/qfbRJTjcuq2GcSDIxZNWP66BhP/808PQ\nkl2MjqjZtIR2DFiBPj59u48g+Le0vyXu6pRy2AognOh3jYCscoNZC/vm1dw9\nlbMY5p6rFuj2irywwLwCpsOUI2RGMkXKc52MoUoN7cD8NbrbvxwAcDC/LWBs\n6O689xeUaWBEsXk4zp6WkaPX8ythR3Brc/NhQGcOnTidVjpQf+8qTgIa7nOd\ncnFS+c9bqNxHkgAm9HLxnwighG+7/DVlSVf2gRUpQ6+071rAvgSNviXc2xrR\nZBqH6Vw1vrKTp87k63UCwYYr7Hdgw9RdRtChsYB/dAWvg34vP3oqb0w8MI/e\nBr0uEg5c9RExNzn1VDTVkpegF+QQOQ8FkMLZBErOc+txXGFmf7tRVrhJAfNb\ni8B6\r\n=iMR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"47dfc5501872440fea5fd06c787ed0dfdcb0f04c","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.88"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.98-renovate-non-major-47dfc5501872440fea5fd06c787ed0dfdcb0f04c_1618459571623_0.3295449766373717","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.98":{"name":"@balena/jellyfish-sync","version":"5.2.98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89cb5878ba427e5cc73ebff56120c605c40c8adb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.98.tgz","fileCount":24,"integrity":"sha512-i4TjT0SXKJSFru7//EwAqESMmohwdFLBRulEX8DomWaCo9TUN2RJ2fMgAuI1rLWaCyAWrn/S6Lb/LXW4e86iOg==","signatures":[{"sig":"MEQCIAiGQcTks2odu/8mLCbBMP+W5ITMRSufREeAWEOBRPPZAiAj75VbuSkp6kPAx+hVAOxF1PPUWLNatOk2zzRxDEbMNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd7yPCRA9TVsSAnZWagAAR30P/0KlU2Wa9F7KewOED/fy\nI+jJAxTUrx645NFPY1WELaBe1kQGVkS8//Bxzd5qlN+fkC0W3BqKiETCqWkG\nDLObQGp+dPOwkhSNxZsm/PpnL72hp72HcRUdpojL2K/6mF7vqwUTxfK8/oYZ\n48mlN5nids1PKqkkJW9Vue0gb5rAzs5TLC7xZYdIJ3ZhCivntfouYPnDTmi5\nHEVGVvshAIgYmPqe1S7+TUWYJXkEx36vZtLkHgtstic6upXCdX75XF/js5QE\nur3X7MwcWpwocwoF3pjrtyvWgediWaKWzPx8po5mcP/e6yw++LJXlxnU42uy\noX5h4llsh8HkU9hP1Ltns1lTpWovEXtXdTTCIMRcAx65Y8tmaZ/m9ORvC/C/\nBXG49tEs5aqHdbFCs55dtGbf6kyuM0TST3vR5daaJbc+XOcVOfZc7Lx40Kpj\nqi4D2yTf2w5woviUPf6lAHU9OMBUj/mAYsE5G3wpI3gCQpzkR02E+bLfkTGt\nCD6iZv5b6AJ4pBIxSthpKDZ2FSWnnEepI5Z5wDnjyyQAhSbb4bPzDHPrM75G\nrhiQN0t0mVGPeGkqYLgcPfoXdu3mbIQQLcrk6oTkJc3i7IKps2QgceO4TCId\nDEjbF1OsaXkqiodov3oDyTMlxX7iVMZWRbpkkcwhvSqr5dvy4WEOi7H2HgRW\nwNr7\r\n=hyTU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"ac11eb68a396e64db2a9a4e8a1854b19f30f78bb","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.88"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.98_1618459791399_0.051331207633060094","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.99-renovate-non-major-43adcf925f6c0a139e6875d9893c5ce043e2908b":{"name":"@balena/jellyfish-sync","version":"5.2.99-renovate-non-major-43adcf925f6c0a139e6875d9893c5ce043e2908b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.99-renovate-non-major-43adcf925f6c0a139e6875d9893c5ce043e2908b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21bacb4ce47037d52bf9cb316a96c83e41340930","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.99-renovate-non-major-43adcf925f6c0a139e6875d9893c5ce043e2908b.tgz","fileCount":24,"integrity":"sha512-RvWFazG+PlMcZM4n62ra6FvHUDmESq7Re3DSMydclTnwvEnPtt+/WtVV9ijjIEvdFHSUxVJCod8FvVr/CzZl5A==","signatures":[{"sig":"MEUCIQCXYnFKoKi4yTyifgs6lpSv6o1cQa8pGoTbxGVIZkXLqgIgFdUObhabHYSjob3AQz76mxPECgH9ZOWIXxC0pwgnzTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191490,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd9PcCRA9TVsSAnZWagAAFgsP/jGCPLiB7KEFweNn4M65\nvXt9OkLx9jkN34IIN+YVsPboTGbDYxVdchwc2zC3B2XbwrVyje/ImCTmqsgL\nrgEdrr98tss/FRFlNxP3vBspozaaGGomscj2ovLSZwuQ7A95ANRmOO8jS/Em\n+Wvw8CsD0Jh7bkPT1iFUGbM+eERhWXdJFmeSo3O/Hl0gcYxp1cEj5cprZc0C\n1GHl7TRIzx2CuLlsi4eN1J1JnGNZ+fDgk5tM/GalPZ+WkwQFWEaTUUVAswmB\nnKXsI+NSoR04Gw33NUbPQo2uszktnHsu5KGhovltpEfFH0q4cBg5QM0ts6Nk\n25gi6qzqGzqmUuylunW9KJ3zq4zFucNDWsjkDxN8EitGBAN0amlIKccR9xLa\nCM0qL7NUZg+S6urbixqlOIsAYUh03jFh1yHfRy/Dao0c1IB5dvIXs9+Ihf/u\n2NgQxaI2+VLI+9r80FIbr2FFC4lFTkH3vUOid0gDt0pwMz68vz6TzTvSDUPu\n4CQJ+ZRSamVuQsoo2ZTYgUMP2yP2x2LK4uJPj0S1fKPKYIwKhhSRowlvDVUT\nrQHc89W+nItJUDWK1LGJDp7S5wcD/Fiu0FeDaNTZcvZBWLepdFtFg0bO5WMm\nOtdV42+R+IC1O41Y7xvN1N904Uccd5carkPaGAVwH4qhe693PphlFLhz3sry\n+3FN\r\n=c45f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync\n\nconst sync = new Sync({\n\tintegrations: { /* key/value lookup of integrations */ }\n})\n\nsync.getExternalUserSyncEventData({}, provider, externalUser)\n```\n\n\n# Documentation\n\nJellyfish sync library module.\n\n","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"43adcf925f6c0a139e6875d9893c5ce043e2908b","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.99-renovate-non-major-43adcf925f6c0a139e6875d9893c5ce043e2908b_1618465755578_0.27280437980345407","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"5.2.99":{"name":"@balena/jellyfish-sync","version":"5.2.99","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@5.2.99","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"023bf14610832767011f17da455a70ed20317f73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-5.2.99.tgz","fileCount":24,"integrity":"sha512-3sMUh67Xc2GqNSJhgO3hwouBaNB3Q9Ja87KzCFfFNhN7lP0TykjkR8Wv2fRvcTg/Z8qr4KOOt/W2TEey7Lso/A==","signatures":[{"sig":"MEUCIQDpEDoofrEUfGych1PSeEJOpqg98B6uEG0/uwZyLn5h5AIgDg+xUWcChHgtt/6HYveVSfiUYx9fRmcID2Xt6UdeuQ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":191430,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd9SwCRA9TVsSAnZWagAAqBIP/2z9Vj5pzyZ1W3lwnZpi\nUiNmlwFY1v8dXXGDuZYTnM+N28u1eZF3ZAcqseq0feNHKnzb6X3y3I3b+qbL\nx8uWQWCV1FdTGZzHj35cQZOse6T8O1T0nx8M5w2U9FKeTbnOyM5Hm7r618pl\ng+MTI4yOB2UTSjq6bG0C4aIJA4N+Q1IYBn40mVJzG5LSIc037EMFuulPAjrg\n7qiGns8Z/4yFwS703OnnOwYWyDnTCuRIc5SSew4UMmK0mzB3mX/DbZP5sLMx\nzidSFQYMnlzX+99f4iSOmNDE1towm7Cn3OE+QgZhnpGxsFCmFWzr+JVHquyQ\nbl7KHvzTweuZzRP1P1e/1KE7SY9lyguaQJBdfXQvOcqlf77MPsDtC1xg5rh2\nhCMLayHXOEsFdVf9/fzuYwIjRADoN5vu+KskxqTXgL2g5bd4rEgg/qjPYTR0\nwKjEseAHkN9LPGLXGt3J/OU/MTHSW0MKtbubJc5r45aoa4SNpmVPWpG7VYLz\notRoNuU8d+0TyLgG/el8fQxS0vOTaFhzNAmBpQfYKb8v3C2Nmf3VPUlRR2bs\nD3VqYQeR8F81eLQGp384l2sa9Byk0irseERlvxfJV+i5Zl3LRumiPdMDzssv\n9PpiXT+RsjzC6s1nOtRB8mCxHOI6zZd8RpM+Tgihh1fe9Cub/JZ+4vS0fm4F\npkrE\r\n=MoxF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.js","deplint":{"files":["lib/**/*.{js}"],"modules":["lib"]},"engines":{"node":">=14.2.0"},"gitHead":"af828ad16dba7a60d04cfe9eb366776fa05711c2","scripts":{"doc":"jsdoc2md --template doc/README.hbs lib/index.js > README.md","test":"npm run doc && catch-uncommitted --skip-node-versionbot-changes && make lint && make test"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.js":["eslint --cache --fix","npm run doc","git add README.md"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","randomstring":"^1.1.5","typed-errors":"^1.1.0","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"devDependencies":{"ava":"^3.15.0","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","eslint":"^7.24.0","skhema":"^5.3.3","deplint":"^1.1.3","depcheck":"^1.4.0","lint-staged":"^10.5.4","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","jsdoc-to-markdown":"^7.0.1","@balena/jellycheck":"^0.1.1","eslint-plugin-node":"^11.1.0","eslint-plugin-jsdoc":"^32.3.0","eslint-plugin-import":"^2.22.1","eslint-plugin-lodash":"^7.2.0","eslint-plugin-promise":"^5.1.0","eslint-config-standard":"^16.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_5.2.99_1618465967847_0.9425203421665906","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0-convert-to-typescript-9fbde8ba5ea9a31528e540504e7a5fb0b021bedb":{"name":"@balena/jellyfish-sync","version":"6.0.0-convert-to-typescript-9fbde8ba5ea9a31528e540504e7a5fb0b021bedb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0-convert-to-typescript-9fbde8ba5ea9a31528e540504e7a5fb0b021bedb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"07b0f1dc52e508d854adad0c96a999830360a39b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0-convert-to-typescript-9fbde8ba5ea9a31528e540504e7a5fb0b021bedb.tgz","fileCount":24,"integrity":"sha512-w/7g05dYiT5vSjXfhHSwUvEQN+Fqha4EgxpAbmlyJIMPBk6VB5vuMaydNU7RcGo5N8ctr+jQbvJE9DitjQ5mlg==","signatures":[{"sig":"MEYCIQDEUNsxtmnVODRmAIUke4h+z+YXIl2oS/SL6W3m+B4EDwIhAMt9DD0Dg/+adKSMkvA0GHorCgIuBC46Go6GFZ3FPhCh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeARKCRA9TVsSAnZWagAAUWsP/Rm3qFSSYuqLwKMJD1Ix\nmxj+x+ZJalI4XURL9PYORpwkMctxhATa7neqR4JyZTCTrDt9WTWehnmG57yd\nRbsDHbPHMHRzdNGNNBW1KI3rhkSTAE8YpwS6YLFDtNIIoETuyWR6wMV+7IDu\nMTWkGJB0HPa7n0T5jbVuhlX/iKah4m85tubsQ28aFM/SMQJ261NCnhE1SaUB\nwqrcg0y3s94BoAXKVacLHrcwoTEPrmB1jMrhUFY2+ihcMchj3E4zpsg8TlLo\nxFOcHRf7MO2AfZbqcMEU1ErR1LFWNZz7lvyOXwCckMuVl8yk716B6c3ovHbd\n4T1yARoK/5BRshtukKcP9rxazjNK6CIz7wvQbxoo1lYxA/3i4XUPsEmt/EpH\nLPVC9+vUQBJhjZnKlmGYsb5xmtzZoK9+5PvusgOAJH8TvDGHDoKoQQcmDbDa\nZGbqG6vnyZ3tjlOTwNty4zfebsUi+jtPYa/FM/N8wEN7+Ko8c6Tuo5cfK2aY\nMCkeGPWqG/vnKyGHQOoc2fgTnBFGiA5bZhzJQI3nS8GcrPxa13A7/fdlRtYi\nyFmt5DQ4Ecp+4YfcLVqhmMtjaYebvGg67DnjUJ/XI5Zye2mWsEOEC4k7tT2R\nIS44U4ep9oUL5oRXq2yYqCIMpNqb+3BOXJAO1+kraNMapipQYyGCVo8f239U\nF1Ae\r\n=uHPc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9fbde8ba5ea9a31528e540504e7a5fb0b021bedb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0-convert-to-typescript-9fbde8ba5ea9a31528e540504e7a5fb0b021bedb_1618478153556_0.6808513202686648","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.0":{"name":"@balena/jellyfish-sync","version":"6.0.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9bd10746bf15a9fe8ffe08a9fa379ff4c3ab1894","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.0.tgz","fileCount":24,"integrity":"sha512-cxkzGsyI2FjfFhCfwHJ+cK/Rd7fmIzy6DHrk6GR8zD+06DRlKTQf52nuanXQbAuFhezYNFs+5T46ogXQ9EO/4g==","signatures":[{"sig":"MEYCIQCU56nDh+yhc0Ei21qbX/JQ3lh2XCplRb4r1sn+LCqSUQIhAOBmk7oc+WM07BrwAGeCvmukp7xkZzPYGX8AMf8FX/TD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeAjjCRA9TVsSAnZWagAALK0P/0qf+NbBdM6UDAkIxMtx\njsjLyPmbdGQkPs9ommkmBUxPOz3vvWxEzmOZ6pLmHAi85X9dtNKXkaKZAFv2\nKXbHDbcpgM5Gby8E/lmwaHZX+XbclwCxaljhwVGMA8+pzFa0d2ExTIE6EXQ0\nzyw6e8Xh84RlWc5uFsbW44Bvh/5zdhXhOrVlT7L70LFDysuaULsKc5RN0bKz\nrTXq43/O0vT3TRXUMgyNmqeXasCJAUDBmSYWa956Uto3jEGLmNjGSf40wjzi\n9LO1CDny9DTobuO0Xdm1ROutWS9nfDfwN3zRs1YpQzhi+d1YtU530L5S8N05\n14pehzwM8PSCKZXq6silS74b/2dkSJjD2Ac+3NcaQbbmlbdNPLlRoyZ+8laF\nkwwNXTNY8vodUrtXTsSrogsde+UkllWFagQj0fSNo8bXSAehWYRcUaVzju5f\nzhytTZRgg7QfyjSoNUmqZlegoH+aUZhMtaOsvPg3JYOqoepqaQmDmy5s/Kug\nqiX/L3tda1kBPldLNR671KarYoCq0buGKA+TAdHPBCsXgltJ7Bj5iDeZDG4m\nOL3ZH7P6t7HY2uR68pt4UsJ52MEdwU//DGE3JpiWW3tFvKNUMleZq5OVMpfL\nhONJvNtdJ6F5BlDYXmk5Jzvt1pWvQvHnte3df4/5mWup+BWNOwF0ARa1NdFI\n03sM\r\n=3bWZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2c36e4cc542608dc7137a6989cd8505f9dd20484","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.0_1618479330609_0.4402497303891524","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.1-renovate-non-major-999bfa1199d3813b4c0e6923270c41cb82f0da95":{"name":"@balena/jellyfish-sync","version":"6.0.1-renovate-non-major-999bfa1199d3813b4c0e6923270c41cb82f0da95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.1-renovate-non-major-999bfa1199d3813b4c0e6923270c41cb82f0da95","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0034f2885dcef47cfa8b7e373487d5f8738fc496","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.1-renovate-non-major-999bfa1199d3813b4c0e6923270c41cb82f0da95.tgz","fileCount":24,"integrity":"sha512-Qs0U1tEUZGERv9OPTdTljEdBOLliqVCnjxcTTLUOKLp96nJ+JASHmAJ0HzkakYtQWcAYi9FWVsC9dgosHYdhxw==","signatures":[{"sig":"MEQCIHVnvWs5W+5i3/rRrONU2zk0iXomUw0IJ9WoIYJbNAAcAiBV5o6jlLCfEOgX1JECvWO8U4TGrFYrPVqKN5gR+tuVvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeAnhCRA9TVsSAnZWagAAlFQP/0uHRB4EdnNbLT4iW/5W\nAuIffYgdWVe27f1HBSbf4bnthcsiarv6P9w2mtymbsuV2lufPowxDS9PZ/SX\nsRwE+tMa1WMBebZL13yX8SlfRah9KJVmnzKu2shsX44Lv+6Chx7/qu9BdsE3\nnxwfcxgbH0BKhxmkp1cXMpy0aL4ZvZB5/1seL57JiXdr4lzC9RjrGa178skh\npks3E39a2Svi6IFYGNDvdGm02KPG/p6Ai45/JsjEPnq/Cwqizb5UgF0az+tD\nmS1LbEw5eIS6c73ZsYBW01u3sl4WKMxszSFvs9IAww5rfxqJP+gseYdwIjDd\nyXzxehQLakygdvPh+ov4obk07s/8Qgb62koLvs2nyO2u0COdNTAIWny1YaXr\n8JvXttUGebLqzVBz62bLmYmAgPEfcsO/GPHDEOi1CXx9k86WB5lc3gugT7Z+\nUXc9XrS+CIwHZdDHETJi1u9ZRYblFAtbDgXxW2DzAYbQBU3KHYyALD5iTeMW\nF51ZMyDkIeTfTADNKxgKpwf7NdMJyhloCGl9Sh9fKol163Kf9+hxeP9yC9jR\n/GwJvWU3UQHxqzQU7cC8FneZOae9cgvVhAVvgGsMzOtKTO25fObtXGTvaupL\nz0wZCUCSzD4qDzYuZldgKcKhP9ULtRba2TfaQI02hayYjrJcs8Kc+5bp9c90\nmPUA\r\n=zPyw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"999bfa1199d3813b4c0e6923270c41cb82f0da95","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.4.74"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.1-renovate-non-major-999bfa1199d3813b4c0e6923270c41cb82f0da95_1618479584766_0.7869156915204591","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.1-renovate-sinon-10-x-2b792f18575e773143a557aa20f6cb9eedced7f5":{"name":"@balena/jellyfish-sync","version":"6.0.1-renovate-sinon-10-x-2b792f18575e773143a557aa20f6cb9eedced7f5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.1-renovate-sinon-10-x-2b792f18575e773143a557aa20f6cb9eedced7f5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"410e972a09da1cdbe9867879f21426c270830b65","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.1-renovate-sinon-10-x-2b792f18575e773143a557aa20f6cb9eedced7f5.tgz","fileCount":24,"integrity":"sha512-3rWlbKWTAu1MbfsqEYnKLt5PBnLSxoTF17p0Rl8ZEA1wx+XCIPTPTprAk8XhFPBAFC+pWJEWHtPp4j2V0TMfzQ==","signatures":[{"sig":"MEYCIQCNpdW242dv5FeaqVYGRzHFVQ4tHko03I9u4F1GoqZiggIhAJUASgszGjbZajZi8jLkZQXLJcsAXJpkomn2lRyx2UG8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":146949,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeAoNCRA9TVsSAnZWagAAwaIP+wRYDaEnzLbswPM5lnWG\nim80u1M8itvDZ85j7ZpZ5ZEw6veHSLsJlmJ98ifhuoiDd8Opc/mWNLnlbFjQ\njPtN5rELah1lYIIbmtJJ4tkT2w491kMj0VXSSHGnvyi0u5MtXBRsXm4Ncrag\nHp3lMb83E0sWcxjF0kYLVXoUkYP3x64OCvh9FQ8JMPBPc3lU5rYe8l2bgmSQ\nAIZikmFxYKPhHUmK1JBT6uxCkZaXUu3NPhpNAtBPO4P3CXpGsa8rSGakI/vt\nsW7JHGsYVh/BGytGfBsq1fDep7CKY/f1WKWmyHkap/fqAMCOr1bH+jttZbkR\nhoJyw6jKv/5tNQ/Wxeesy5VpWp9qi3V7Ue70CbaJk7XrDW7tx1nRSKcNbHgP\nypvGy8idBY0SVbT/r7vF7LygXiWo138ktJ/vd3y2F2DTCFtL/lzSXqkbvryU\n11DtbmhEpC7Rwh3WDC3WWLsTfkh+V+Uk77/i3BZ+KmwA8r4CTiEuINVUYH8O\nZ1sZCqsSdSJPt9ne4xzaLGacLXB5nJNjaTXHGFCP+D+7Zv/+urG/xBfeqHmu\nIe9yekjjzjUXD8Luq6Wo7dRd9Avsw440PDZeqh6BIq57VHLh3uIo1U+hi4Ud\nQ1oie3diaUYMX/DJtNJILeFDTFgSmjGZLcmLEYoG9E8khyA1RSYzyCf0rVHQ\nUXV/\r\n=93YV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2b792f18575e773143a557aa20f6cb9eedced7f5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.33","depcheck":"^1.4.0","typescript":"^4.2.3","@types/jest":"^26.0.21","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.1.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.1-renovate-sinon-10-x-2b792f18575e773143a557aa20f6cb9eedced7f5_1618479629140_0.016680320373991142","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.1":{"name":"@balena/jellyfish-sync","version":"6.0.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a45b364be2f1cf3e68655a7a70e0ff0b25cacec2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.1.tgz","fileCount":24,"integrity":"sha512-wfBS7c7CM2QKhhtw6q0ADu0G5dDV2RFk3CUWB85QZX0QluOVZRSR/mlupnQ4aGVy5joX34bmSrOKOQMbhdUYbw==","signatures":[{"sig":"MEUCIER94GkJMMVZ0OvnA2uysRUIIdeXYVOj5I11/HUSKue+AiEAta2TszQzeZ3bwftIxEkSnEwLmYn820lgNDey8LHOcjk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeAsICRA9TVsSAnZWagAAQUsP/iYZCNl088fPyAo/9jtR\nMw7yWD/5eo1wDCIHeWGEhpWChe3WUra3XBRpbtV6T9mbNhXtnP+hzx6Rt15F\nUHdP8nkUkOeI2jPUU2Z0JH2KZEZ7FwKazDIXmpSf6tGhRfdUfRRwoxrpJYnF\nH8l/aueG2449zGhdw5FuuLHliU+C3EDDaj5G+G8UscYwmBIy/8wiEXtNKC9a\nwTIn8YouYAjkPj0orVF8LyE1iTG0CLMp/DXu2oDuLfUSLdHzomfMCGTwi/36\nqvq8SNaeh6CcvQOiexKJLseJxWspVGzhTPuqYV6CX2x8gxdmifAlgyvbWVTR\nM/0+ZyPoQPA2OqEBoPhiCx0unqntYIAR5xwXQ0kq7RwGTSmOFLezRu9R+VX7\nRQM96XtT1QN1gRdAJiEb5dlIvMZ1RSZr9PjoGFulbSHY8T/+o36ZrWgkxALB\nyz2qJeCAJyXcMzGvTw0r2vDUTQMi3EWJ3Jr9YIotY1DjeD33/Du8oPUR6byt\nMwUDCwGZ4VJIHdyrXvA5Fh43JvjLwsjenmM6ozHrshOjL8GVQ88mznWzOxNi\nxRvf3EDgEsXKhMDh/16/dPRIMz/wPlWfwRDHSljcYRZ8sPzyFj54hzMcyfI+\n3j3UF2167YBn0Jf6z3IiUJSecdft36FVQsgWJZhjHqe25pxFCj7qUOjSWxlc\n2348\r\n=4M23\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"505312c126b4657cf4a86762e4fe0e3e519707d9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.4.74"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.1_1618479879854_0.20398099638800393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.2-renovate-sinon-10-x-605ee699aa254da8f281572b337615b532cd1d57":{"name":"@balena/jellyfish-sync","version":"6.0.2-renovate-sinon-10-x-605ee699aa254da8f281572b337615b532cd1d57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.2-renovate-sinon-10-x-605ee699aa254da8f281572b337615b532cd1d57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"817eff3936be55dbddf47d9aafe5af1b8dfc2687","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.2-renovate-sinon-10-x-605ee699aa254da8f281572b337615b532cd1d57.tgz","fileCount":24,"integrity":"sha512-r+XkQ8xUvtTBK47lKK07IcfuprzGvwFW1Hr20k+IRkSK4JcMzClgh3zl2/VXW8amx1JscgXxM8cf6NzU+CnlSQ==","signatures":[{"sig":"MEYCIQD9UzSFZxJbNaFrYbvVStWV2J9aAxZtWUfFUIOZ8nGF/gIhAOnnULBhnPDqOU8BnYaaGwDOZEcnk9fI+bQ2UxTvdQp8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeAvoCRA9TVsSAnZWagAA5WgQAJwl0NhlYValgdNX84er\nviI9UW7uMENY0TIAH1fR7r3T1E5jkGv71kSrxIUtWCqUi+n6b3BWrkLEjJ62\nRbX0i4+DmTtEUy7L55mON26+VTXm0jhLQySm8mxCX++zYWsMuSQrqvmKlPQC\nvWp0S1kbuYwuaMZy4Bw7kphENI2vd4YRsbZSZhqA2ey14rajA8mkJPKRsZt2\nnKA+iGUV/b5UZI+88obhn2VrRNySlTDCUI1Gl0RGOCDY95Pr2alxpYK5v3F7\nQvBqvnLDljg7LujLqgBs5hPvIyTfzklM9wK6ZGWx1xor7hDzO1yQNQ26LSy3\n7dpRxiqScPyNKD9awpBy8aPAV2cXQffJ0kcFNLiXJgg8sjAm9YV/qZUSTq1I\nOv8sFo+4h1tP1XswKgD/6+dcX+qfSq/owAqnOoCfz7Pu+OwFt+XGbX1z0EHD\neR8ri75sIAeGnRzBNlm2q3QezQ1uU/o6+grpvLToiBvPbT75yWYKf9meK0wj\nhnygJff8XjrX32o7cJEhY7XtjZ9VlldgUMRgAYQotFwgFwsykBd8DGdInrC5\nsFbAQDX4FTIyD8YQwNDFm6zDqfTGS7GTe6cAvHokrW7T6cHuWNtp5kdYpFnj\n5ub0kgUjvso+0Bf27jUw8KxUiPbjrBkybOR2xw3UgOQ5fP0uIOatRiZGLOYj\nGIp7\r\n=b+jE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"605ee699aa254da8f281572b337615b532cd1d57","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.25","@balena/jellyfish-metrics":"^1.0.89"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.4.74"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.2-renovate-sinon-10-x-605ee699aa254da8f281572b337615b532cd1d57_1618480104143_0.8295915019390809","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.2-renovate-non-major-cdf2ace9299fc97e73b8047fc11b6a176d019e2f":{"name":"@balena/jellyfish-sync","version":"6.0.2-renovate-non-major-cdf2ace9299fc97e73b8047fc11b6a176d019e2f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.2-renovate-non-major-cdf2ace9299fc97e73b8047fc11b6a176d019e2f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5272a2c4f20d2fe209fb323a1e25365fbf3ee09e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.2-renovate-non-major-cdf2ace9299fc97e73b8047fc11b6a176d019e2f.tgz","fileCount":24,"integrity":"sha512-yKvdnXHDZT2a3FEOmNROjaRlQu7FZFGvwowLDwml49jpXSdfGBqxl77z9R/3d9vKFK30DZBB8LTq1+b2RsvNEQ==","signatures":[{"sig":"MEQCIFEhO6TxcqEU9OmujHwMdIEtoWLJFQNGIht7fyqYkYHqAiALMHWl6Ap5tZkMsBtp2NXDm/ibsO00z7ch9odMcsrLxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeCO1CRA9TVsSAnZWagAA5D0P/RTcXtHJmjdBLYFt9i+t\nsngF6PGjLNgDhoyJE4mqMToHyb1irCYX1ScJhMWTmBOIVNpGsPXCa32l/N4P\nwj62/uLWIjKGpXDn5d1L0L35nqsmj1daaVgOBYaamNKbkO9d6ycn8pSPkdHu\n05r7DawjWiVkEk8WiTZDkkLpbxzxQe0Lv/dcG3xfltjwTd8BLQJp8kcohEMV\nh8TesOdbWgxgR6EY9z+El0Wzty9DgwSaPywq4eGA8i/rlvbP8tRxu5djSBkK\n9vHGxAmtHPcVyPaWpObqoq9XLXNZMvE0VOkhM5E0ZubFTwjrt9DmWU+KwlVj\n7oTX/al6z6O8K0b7bAduEupOlEDJX5j2DyieYbh52WMXkt5cSTHKbVLMsI2I\nVClFVoGc2my4/hPMxkisLv5Lw2tCUhpg+NyJ0JZIRvVWo7k5d7ULAvvqwglf\nqRPEK2cgbPT6ReSSgSt4NiSm8VSSZTA1aCebPoaGDskQ5Liz5Z12tffY2iGS\nboteo5ICcVthwdVoj8qH/Ttsg7OmpsI7FPwY9rnZrEbIU+ALF/AXT7mi3AQn\nSiEy17czgiQ6xI1CatoWimBntK1TJMHtUENXDBU4eBkzztQwcBBpoOHgIgLG\nL3bonKDKsMTy0vyArxlMC1BRqkIeupLV14k9jdM9W3vwhnqFxMBuHNVUjJQd\nWiCF\r\n=UTkJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cdf2ace9299fc97e73b8047fc11b6a176d019e2f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.90"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.2-renovate-non-major-cdf2ace9299fc97e73b8047fc11b6a176d019e2f_1618486196812_0.24511939449921605","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.2":{"name":"@balena/jellyfish-sync","version":"6.0.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0631577550deeafd001d55963ee74f9093d8598","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.2.tgz","fileCount":24,"integrity":"sha512-5McT7mGBOSdfXwmJAM7+hWqZuVklVoVEMryn3lixzQub9PaEm1Svuc0blnN1D7avYfwlsoteHkUU9po5f9/fUg==","signatures":[{"sig":"MEYCIQCraRhQRtocBFjF5hbUn6fc+6go1MrC6mKKCL0Wlo81rQIhAP7Gy75xLVZOi3esN5g9PwC0CzXIq1A1zJaFf+1JbMWf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149140,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeCSvCRA9TVsSAnZWagAArHYP/0387P5WSuQ2A4hWZ7um\nkRpBC9BXDvkGARZ7D3Woq8EsmanLBa6Waip7+jAHIdoSwBPUpoBdpDTAQl0/\nhTrju2keiULGBMjt+4ojNBMQ6GAyqRPki8u91SOKzLhm6r8YrVWbA7gIG1mN\nELaSyB9OcNhranOnk0JSnzzuYmB2SXuhRHsQ03E/Uam9cBpIYzoy+9Fqo3oP\ndD0QGj9NWluG3JkBIvNJrKfm8dmX0AeVpMXwxo0qZ0C8U9tkP0CQ1vXjdM8f\nKW69CrVrSAjSj7hJgkXJCxsp84ZRs1KRNG37TOhWJmjncw0jMCZdeUsnwMEX\nYNEP99DIRVGrzODBAjIRljygezALwqL1Pf+AhRW8iC712f7ArzaNEBGHaejC\nBrN63mxdr+Oe5bqcnPrdIPgAMQF1ZrmvAdbkSH5DejCm+qvsujkTAoNH0XlT\nhKAs/ym+ls061FYYC/J2aTFpiDnblw8JYuieqIvhyM0tphdgc0lA+J65E7oG\ngdrabWwY4/chHqNYA7qdrt/93KSfWWxYOani69LgW8XUNNy5D08mVKQx2IHZ\noUwUvu/fYWx9ACL3b0cjzacczshCTbi2lvI791/6HRCONUezQ+Zu87qLkEYA\nQMj7WmKI/DIkcdeHjMG/XCqeBCjpCuZOojwqa1W84nHcGjWfvycxWjRsJdf6\ntbsr\r\n=SF8X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8effe4bb35fb2cc41e54caa288a1a339ed8086df","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.90"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.2_1618486446812_0.25405249548547104","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.3-renovate-sinon-10-x-c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868":{"name":"@balena/jellyfish-sync","version":"6.0.3-renovate-sinon-10-x-c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.3-renovate-sinon-10-x-c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5c98ca8639c537ce8dbf7f1a7ea28df5835694e5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.3-renovate-sinon-10-x-c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868.tgz","fileCount":24,"integrity":"sha512-131ST5k4UbEw3tOBEU2yZ5sGzhTYdm972AM/HehagJdtlgDEmMF9X4PaALJXbEe5aQiZnm4VIPBYDYNLIkRABw==","signatures":[{"sig":"MEYCIQC682//5t90we+pt7fVkby3SROk2mQHsrqKCDusvLfo+QIhAPbf3qo1gZGLpQp5AeY1V8dAAINS29WJN+ozIFpb11XN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeCWdCRA9TVsSAnZWagAA6FoP/1w5ZTxnCaha0toFXMn2\nbtRhTPEDoHMC91pUdvL2iT/AqlkJjcZw/430397ibcpaB2wWLAzM2m+CFEGL\nyN4o95kloBLFU8QP1HJGspQ0R9el2lTKSubxjSpsrefiWP/GyKt6v2gu6cIN\nQna+L2R4DsnNCApv+4Ztl5tYAIN7kHw8ENw1bIVrUoSa7sTuu7cWyNartm+Y\nwaB/8c07i71VZ80+jv6vel1WcqaIVA1wDa71WHSJbF24YdKpQB9fsosMv/SV\ndmVAWNRvTMK8aPDLA65V57yorbg2zsMn2yeaiC3SsKHy4cav6bGnE+YLiJlc\nyLG9YAnn/HcqkupctJv0GSwpGcsJ5E7JHn6qQT54Rve5fj3ibCegS47swjkX\nEu7/53yNxCSUfUKBm5or6zRw704uAW+3IkVUWMIxMeZ1K3RITTNrSc38Q8ep\n4R5KEQ4qEmzpW4PRw0wVLDywZHYogzSQFgWi0x4mCfGJ0bhIEgS3f1OoiNec\nPFVFyJf0dbExSYPvdtf7Pe5cNEy5N4b1/v2Iyx6lDogPcDq/nsTo5bFbjN8v\nGqQkJQjPkfORwq09bOXEBOk6BL/C6u51/rr+fDM7iDMn4E+MIIk4iIlKtY3N\n5+YmhiwcvG8kOQ22l4ZDSQS4LmwfRH91xZ7JefFErudbs9ld1z8BkoATeqKr\n9o0l\r\n=btUP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.90"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.3-renovate-sinon-10-x-c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868_1618486684735_0.5909951513152192","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.3-renovate-non-major-666d9e407e68c8de661e6ce0daa38727e437c2fc":{"name":"@balena/jellyfish-sync","version":"6.0.3-renovate-non-major-666d9e407e68c8de661e6ce0daa38727e437c2fc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.3-renovate-non-major-666d9e407e68c8de661e6ce0daa38727e437c2fc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"592b47336063aa926978cb7d7de8a04be298fddb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.3-renovate-non-major-666d9e407e68c8de661e6ce0daa38727e437c2fc.tgz","fileCount":24,"integrity":"sha512-7Ep+fKRUk6r8AsPt8c3XGE5E6Gz7xucazpXw3gatK2rpQybJMIqoVehF/LmMGDZ3+dPzTfo/SoA2a0D2FGf/zw==","signatures":[{"sig":"MEYCIQDAtRdYOeKSbo/Kaxw3KGbww7VWW/mP5X/WcybHpYXx0QIhAPGdurMUJtfOLu0THJRizc5HAo5lox7Uva5hAasVhHMA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeEi+CRA9TVsSAnZWagAADvQP/1WWPX9hZkZCKXLdEdy5\nrVHYV52hG2VXpygUR1rSEox4xvUM6AmdV7aYulqyDh1S5DO/KdY3ZBXX5stZ\n5FzZkzwqSzIUuxmpjLpY4CSJ9aICW64yHmiFS6YZuZV0smfWuCiC6qOp6f0O\nQu1/aQKjrJrjUvgeoTNANKGs1xQqCRxVxZYMQxV4kZTQqwjPH4vq+vSbVceq\n1BtnWI/Vvuj/4k5k0x1lup+aQ/6nOcKMyL9qzv7RyH/abQ5mmLCVj9FWKqKd\ndkJe019rjZebKnfdjJIWZ142qPmBP1S0EPYsG3iBnfWEAdOyMRZTDzmGm29y\n20Jo+kQr93L99ro5FMi6/u8PWaNcAFtXroNdeJ7l3w0kPPD1FFtv6TZ9EBDb\ndGjM6pENKUZMRiFE8L7Riijvh50ASpHbXWvsVFHSiJ+duZx9MlulV2DMebOI\nvtohGjrYF5lZkdd6YCIdpB2PoyBbG4ejveSQ7y/otP/rCYjxkMjilol3OiFy\n7tNHgurbRRRcDkYPWilqhB67WIWSwj94mZzmCzxVnN90ESpTL9xHrpSrxUx6\ncr4/Uy9Fub7RBjZhWkXv1JpZglz1pEkNf5wYloDYhIzo5h2qLKEVbwgha7gr\n/Iu2CNde01l0uWKC5gY3NTdrY0uXRpA6OCgKjzYg+ZfPdOn8qTtjgjLLXyer\nvIBp\r\n=AVNa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"666d9e407e68c8de661e6ce0daa38727e437c2fc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.91"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.3-renovate-non-major-666d9e407e68c8de661e6ce0daa38727e437c2fc_1618495677945_0.6860104965383687","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.3":{"name":"@balena/jellyfish-sync","version":"6.0.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4534fd3c93a3e758b6ff9dc6ca6b5948a2fe8875","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.3.tgz","fileCount":24,"integrity":"sha512-/x2SjfIQo0j4WZ4rQtAiTN50PcRPnzJ4Wm0BDSkUX0yK9bF5YusEZKLwZbh5bGVi50PF9VhmLVrkWlkOtl850w==","signatures":[{"sig":"MEUCIQDDdPuy4c/X9oSTIzUYCRkoU76w6B9rUTmEqks2wA5+igIgVhzp3YYerOaX6pyhLUKNydBmUzbO53Y9UPjhUqBCWiY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeEnWCRA9TVsSAnZWagAAoG4P/iDmJNmSKqpZWqOTNnMh\nRfV9LsgLHQOSebfHIyF1a1E7DvCIbh8KbuInVRISq1E8twZcQa1y2odsnFKe\n3zcWZBlCvMnxa/W1Mafrw6k5iyfzmtcOS//xiCs+RQQDIPbXvwNP84EsHhwL\n7uJzaPIwVPQCFTmSBi5GmQ8E51/fRuqLyTgvhxFOuUa7X+Sa5IiaKdxMXIs2\n5oPOcKbZWXyiuoxXOx+elgfDWiswgBnqJB9qmRtDTd/NdjeU6+0Q9jt4+SyQ\nFhJWOaSHT6HccQudz8cR7jZkuPr985nFqTVdo3nCnbxn5r6w0RKLHB1tH2wS\nfOJ6GkoP4NdS55NH+bDSx8cC/lNOJjQpciYAU8iHuv1yc32BJyNGRj5R37az\nkK6kLmyHuc1IZzmotug6nYsLi8i51ZIbAWXR+muU8AofIb5VatAM9xF5nuTG\nRWRWVJZSAN4ErRiu6nhBcpXqrAyXWYzWRbZgXs+Ke7t9CMq4tBWqauUxOlBR\nxWkdvG0v7jOqj+XYnCm2ePyHfkdzdRoDFEDgjsx1N2GSCi+qJhBfj72kTQ23\nFr8OPA+72iZXZPUvYLX9lI5AkEuj/2A5HiuyEavaBaGRKIvJpszxUxnpmPAN\nlW3koNSQtaxN6kEnPAFi0fEbgt7WYpPdTD+MuWXX0A9Syglo+rv2qdFbQtI7\nyUQu\r\n=xHhw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cbb695d0152dfe73adf48191fa8ff472e4856cf0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.6","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.91"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.4","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.3_1618495958379_0.47593973356672437","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.4-renovate-non-major-882d3a40ea05a9c1177376baf34163d84470d502":{"name":"@balena/jellyfish-sync","version":"6.0.4-renovate-non-major-882d3a40ea05a9c1177376baf34163d84470d502","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.4-renovate-non-major-882d3a40ea05a9c1177376baf34163d84470d502","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9636af5e50a83e0e8e56a166de0a2a858305bc7e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.4-renovate-non-major-882d3a40ea05a9c1177376baf34163d84470d502.tgz","fileCount":24,"integrity":"sha512-GdxrdKgyNpuJ6FKPx41lRkoB3mN2ruKKNfnjecxo6YMzi95TZJLzxVFA8BOz5/ui40hwdgnAq4xbvVNEspQQ3A==","signatures":[{"sig":"MEUCIFgnaoh2dDEvTQqVYarq8HdRhH1aMKo+8+k4b7XZwZ+3AiEAhgY9IeFYfnIHKyzoqzJg31smH3sm5PW4nZR649LZYRg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeHaRCRA9TVsSAnZWagAAiMMP/1cDCN02waN2dFe2Qy+x\nQFaiyJYIzc8/RLhviN6717DpI3GS35YSbk3n6YHdhs++eJzFSDHW3h1pq3tM\nsfC1qxt2ChV428KKKauYXpEF5tYvDmnudO9mi2B712BXE2IEjr7sL+ik1d0P\ntRAOpYLPdo5RC+Psd77W58SgGpIWh7rQgdfRC9FsDgGgoQYddmKb9MYkbX7s\nRLdfMBGjzmEVcKQBvt/z41crFdOc8mRiMdmPqK7se1cSZWQcdVQauwxwihZh\nGgnOGWJxn5BiUXtOagrslfEwJRBB2F3E+2g50c7movL4o08d9Gjoq83uqlL6\nmoJTmjpdgjrYu8Kpsb4t1v9TCHS7KBWHzee7Wa3OWADvWI2DwKDPr/Mdr46b\nyC/0i+oi7mQpSPClfHhiTsv+jpOiZXAEl1lkpm1Z/H1bXpuWcNeh8noAOBbN\nXZs6fd3m0YOqD/eqJ+ppgJ1C1WW7HgoilE8uu7T0Y35YKaKhza1UmITrx7vn\nKQnHkrF+k8AYYP3iiBSkq+gkYPVwOQOC1YlvtM1lKC1oRzoPKKJdUOPxyrZ+\nJO2eOwkbZJlcbTU/3WEGMgGypKiT9c7tU4SQhCdaqhk51ujO1E4vuFtMFk43\nnOiVValEsJe5xWMc0CzwMpYLo8IMaiPtbDdeEkn1qU8tufo35zKhAdXRybHu\nh2Q2\r\n=MLFA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"882d3a40ea05a9c1177376baf34163d84470d502","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.91"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.4-renovate-non-major-882d3a40ea05a9c1177376baf34163d84470d502_1618507408723_0.13814615991618506","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.4":{"name":"@balena/jellyfish-sync","version":"6.0.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3f6219f5769f9a5f2aa6d82b4a125320389950d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.4.tgz","fileCount":24,"integrity":"sha512-twprhIUlSoH/DityJIU8CDyhgwVTsiatrW69W8vJI6f016tmy5Y8TnMlR1HVSV/3J2b0dvHcJfV3P87/NEAGlw==","signatures":[{"sig":"MEUCIE/gz/5HhK5adhqkqXu+6M0X4+skeD/TskqPLK9f/nOKAiEA0Yucchqykeubc1Rg/JDhRFoVySGpjTxuGcqXoqzFLE8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeHdICRA9TVsSAnZWagAAuvwP/1n8UlKpNLMsGgBYmQlK\nU/1+Yg1g3YYvaqONKwzdB3q1uwAauvNacmPSA8I4pBmRwftZ9YNBM32x1Qsq\n3HVe9q2TqGeIeMxJ8NqPWgKtaeGKQCwAkIZawPUnfv4IEVW71jd04jtDD16O\nAOBM+wOfwsyM7TcqdSmhjlgZBTWzXEtUZugUXPLFnliuhSd/m2fVgMtQU322\ns8W/h0Ie3V4sB9bolON57QYU/pPAKFFVyHflS+zYSlcb5QRjAoymFJuN96ek\ntNn/FzIH18HBRcCza0oTMqxudWFX26HdwCSN7T5fLNUm+LNlyQwGcYzNJ/Py\niMPOzUawHUCq3wrgl+8nUuHH8oTxl/+Hv6lYP5Lc2iV85+FUlPyxzIWjiuiD\nBFKZcca3EGkXTmfQe5U3EqQoQtqLoqdufwP8QL2mr1tGkfnCiL/AoCPL5wOA\nXMp5o5O/++LUXRFhtVUMtz7JRyaL7FSUZF/wxkXhT1HUplb2hqN8qWFa3GfM\nUVPUGKDAtxgvKHXg9qGbGNDqiv9a5nLNTgnn3GhODZPNIOuKwz12fxKCK4sv\nVc5Aj52BrL3ZBRc5AGbSMfHvoPemutd4ayyev3hjClccwZk3x4LWKQv1TWaN\nECoZ1BZSLP5oHCrVdiLqffO58lDVU04mcSqd4DRqmiyBlUiZKojchA9Y/puF\nG9sq\r\n=wR3J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9e12a2ed8c62dfbe860b83d89b44d7842099decf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.91"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.4_1618507591728_0.6268899855572567","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.5-renovate-sinon-10-x-4ab5f56cada0ea5e78c42632e31172225bb46971":{"name":"@balena/jellyfish-sync","version":"6.0.5-renovate-sinon-10-x-4ab5f56cada0ea5e78c42632e31172225bb46971","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.5-renovate-sinon-10-x-4ab5f56cada0ea5e78c42632e31172225bb46971","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ef96894d72ab35340fd1a3d64937d8d40b5d738","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.5-renovate-sinon-10-x-4ab5f56cada0ea5e78c42632e31172225bb46971.tgz","fileCount":24,"integrity":"sha512-uIDDg47SOV1yWmUUp5y0NdwwOJmUuIvAOrwRTgHd5zrJH6yxrFuANBxHGGbg2b8cyna6d+MlTYlaocjDkzgajg==","signatures":[{"sig":"MEUCIGSGCLQaQq3qIwXwZI0otnppHnbiuT0Gmf1KxtrDnQ/HAiEAlECknhQ0tKBDhLQ1Y8n1OqCsNeRuRsJAFm4bgIcljaQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeHhXCRA9TVsSAnZWagAAeE4P/10cZJQiVva5RVZY2Ng2\n5jkY+nk2Wfau/bT5dvJXquu0diyJWNGuWELJSNepYBqanncXFNdsEWhrQ2YT\nECd306KBKM1IUW4jY6zkvwuYAD6GcO2/CfT4wMABgT5dzurel9c3lqETp6LB\nFOdL4I70+BgvM3dTHlQJEWpoPVJMpVRkv7lS85pbWF+xF56URBbs0Nx88hb8\nZw1sgDBzHsskWSNAVaZy3klngmxlLsc5mPRfV7+hWHBTMSx+pSTD7pp5Nhe+\nMojlXGf4nJzwVgdaV3XhXBQeNWYPMc/6ppM6+ihopbHLBpwEhwY+AHFtYk3F\nQsjNFza0vawc2Ez5C0DXlS/40/7eXtSpsgE25vQ0lEz8w5YeL4nseh1pBdgQ\nHlyUwN8Wh4qMQUyxI5JpzIqowyUokfui/qD92kJM2ECY9WcKh6nSFXkQ28Io\ndwIXbrmLdonSXiNyeNtBJ/i48NTIH7+rinGhLmASwt1abuqxcgwJex+yGXac\nJD3l6uH0sut+e55yypZ/pD8bmPTKs9qObsTA+mzG9drA5f3oyicP0A5m+y1K\nS8mtoOgDzfi01hqktBpUpIP6gbV8c0dkw3EPD52EZhxzsQPuag6HOC9c33Bi\n2TDOxJAShBAe+1ikkonlSOUgHO1YOY8ITH7GJZks+NdFM5GDAicmy1OV4Hov\nCdRE\r\n=GnoR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4ab5f56cada0ea5e78c42632e31172225bb46971","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.91"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.5-renovate-sinon-10-x-4ab5f56cada0ea5e78c42632e31172225bb46971_1618507862527_0.49276880132354806","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.5-renovate-non-major-b0606f8facddb9935ef3b385fbcfcd5a807c6631":{"name":"@balena/jellyfish-sync","version":"6.0.5-renovate-non-major-b0606f8facddb9935ef3b385fbcfcd5a807c6631","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.5-renovate-non-major-b0606f8facddb9935ef3b385fbcfcd5a807c6631","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d12a6c32e65417ca3a0cc33ac5875bb7fee7868f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.5-renovate-non-major-b0606f8facddb9935ef3b385fbcfcd5a807c6631.tgz","fileCount":24,"integrity":"sha512-uoEk+u2CdzxF4SGCrRHOcYkwPx5zYpN61983pNY3qz22mx1qh8NpHV+MoKCV4I5/Cv9qeP/2vLwL1/wJSSACpA==","signatures":[{"sig":"MEUCIQCTAB0VLHgaFOo8s2wc2pOY+Ldx4EWd6sQrM7/Ih8hrowIgPyAFfqT/9MJqp/R/MIGthnvp31QqtNL36Iw/oDh1Kb0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeJE2CRA9TVsSAnZWagAA7cwP/idTJ0K2NRDrBJgEzVa9\ntIWZJUlLbmxsPSvDJUVgQB9+1XhUh6ZeLA9a2G+Z3Ui/rKyy9a0PAkeHJXJg\n2zjQGPSWu5TD3e/2ucFIkxVyKhGUatf7iHPTF4Qd/9kwYihKeUgMcCiVfPtI\n6Gg7i96Q129gqAFNIf3DOYdZGIdPkyVPPRQ0FbgJId7RBc85rIymHQlosc9D\n7VP+p6wnQpkLZCp+RE+y80N5s3XGgRAoy92w9Wb5HTyFiotgK6yHnE/l5Ewe\nsygY0Yp6mXosyHRMLYSr8ivyAe/hTtg68j9mvnVdTh+SO84LgECuAlufdTNg\nAfGCDKygUnr9AOBV++wacmlhx2cpLVV6j581q9bOEFaafKXZ7CAECQq3Aa/N\napyt4ZqcZrW+GRokWIj/sRVTASuFs3lmtGGpT5jZAClEoOvnrazBIA4XJ3QL\nlVeZ5yrjmHutMb54R9Scx6IraRsd3eYFKCyZTXjphOXNlWbYeall7nmx1YQj\ncrwvLCflGTaJdqAiIXm2bztd7Lj4m1QGndKux4tD8YNNkIFG3Y0URIkPMT4R\nop8ybLIpXI89G6MvsArgDdr6Ai/6G+QufQ7VVn2RmYrVvWOQOQl5E4mmaojh\nyCWNOjPzMymKVZR9rxuzORzLpdRYMAH2qf+E0kwJBO9DMdCT2C9BJF7Dt7/j\nGALF\r\n=CoL4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b0606f8facddb9935ef3b385fbcfcd5a807c6631","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.93"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.5-renovate-non-major-b0606f8facddb9935ef3b385fbcfcd5a807c6631_1618514230103_0.8799272853905376","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.5":{"name":"@balena/jellyfish-sync","version":"6.0.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"021e6c765b7059e0ea0e0edcc1be43e38158e0ad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.5.tgz","fileCount":24,"integrity":"sha512-jwkpIECVf94z/nYkrZe51RWCHX13YNPe99zMEqvWkTuN+3GbsiFAHHYVIbkGF33H67mnCAmvsG0b22UBDW/1hA==","signatures":[{"sig":"MEUCIBB9T+Dp+6EUQcYikm5bR04USzqpMJPhKUiLtjwF9KS3AiEApmn0s/vDfJkAUwPAql5UO7bpOUS0Te8TXpCaKFE9iiY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeJIECRA9TVsSAnZWagAAs1MQAIknrg6NCyX1c9sBWLky\n+OBRdmKGtDJ5NnXKn1lxrByo/cjuS/Ws8TrGhDE3TTupiHfA6RDNih4hr7GO\nlEfn2C/UsjDGNATfHMt4Ht7QyNC+H5L9uBicOb5Xi1SDIdav5d3GcB4aIUKU\nqtzzarnYnRwRgfHWzMOW4hiGRd39ovbSQ6/fLfnLSsLtP6bYf1qU0BBMty7v\nT3BkJOCXIWVcOfp1XdnPx9WDaL5a4gPnT/djWS9v4nCLo3yPC5hRqjMNfzl1\nuJYfXlbAM0NpSO/JDWwoqUTmU6Z0kkd2NRg938v0aZVt+N35DbO+QHip+8Q2\nK7yysPdoJCpj5refTv8TiOBOybSAjs6dklS8/UOpMnI0alqWEE7yWkVXp5O7\n37zHHb06YkS3xhnvqT5L6NVmvnIwUXJS8vyiouK/frA+zz/bLJ4/3OnbL6op\n5mu/2ov92/pdf3tQ+YQDDirkfr2BysF9bfBy32Qwz8NG6e+Lg+viMPjtdeGA\nSqIlqT+yKVPSpaFJDuMdQ8c1LgXQw3FaXyVBA5wIX279JCYEHQElXJLtzG0X\ng6+9FtA7yqxq9YyAaHJbyI866TZWPYx+q0u9XaKY2QZZ1XGh6YdzjLKXcJby\n3V4QvnnkyMrw3CPWW5tjkepnANO0HFmm6vNWMs5uXBc98TBcf4p5odLkRMOU\nF8tJ\r\n=CF6s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"636c1be09525bf8c6fb693510c18eba1cc52f660","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.93"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.5_1618514436189_0.7448350416916256","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.6-renovate-sinon-10-x-0c5b238f381444b908d270e9bf36d8b022f2b851":{"name":"@balena/jellyfish-sync","version":"6.0.6-renovate-sinon-10-x-0c5b238f381444b908d270e9bf36d8b022f2b851","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.6-renovate-sinon-10-x-0c5b238f381444b908d270e9bf36d8b022f2b851","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1fe0aae7c773f4d6c461fea1e2450aa5b0b7fa01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.6-renovate-sinon-10-x-0c5b238f381444b908d270e9bf36d8b022f2b851.tgz","fileCount":24,"integrity":"sha512-0uz01yOpbMWRjS0Eav+gjyR3v6xQO5m+/j+dB2TkCMmBqqHaZ14I8AL06KgGhX4qrJ7RhPiWa+vhv+JdlFLsCA==","signatures":[{"sig":"MEYCIQDHFWoDMA+mm9unrcxEaTyax/tKH0+m3HnEKrAEpIMotgIhAPsr7KiKoOWJOFr6FACaH1Ks2MwuhtxGr3kxQW8rKkwr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeJMvCRA9TVsSAnZWagAAakwP/0eOYCCYzYzSTevE5eWS\nJmN5Eva5k0MWp234fmCWgxK5qEuAjxm2uuYavjlXSCnGZPnqpLlJyrDtjA9l\nHip3j8GgxtxjGWN5y79IDUwUo3f26Sn/cjpyO1wSIciKX2Oc4nBorfjFjK1M\nDd4/r/hNcv3YpOPA+pflq8l7H3WyNXS74tlC/jHl1Bh+nU7YZ9kvtg2GXZJ+\n1G8vSqWOf2zdeC42RhikqdNFS9DDdBxtOXt/8qQ4IMQRm47Ov8GlPTXlDgJP\nS9fKoTU8z7uq+8r0uDFQlvdCMZ0Hp+wXd3yv8RCd3g0uIWXZbJtzn0TDwrmP\na5Mv311ZDWXxC/MQR6vMwGT43uFZ4TF6ULXiiCgLVB58Cf/aVrHeSq9tmzLP\nqhFmjXs8maffkg8JYFV+bSQAYjRrKOeHo075vysNKIr7gvXCIefg/A9IFXQs\np7bdyUaV9oPr5a26X4ozadUy7i0bpxMthbayWXlF2f/HH8yFatx5Noflpu8c\n55pmxCduO4NlAGTr5ynZ02Mv2AJrMZJP709CbBVI/27bYIkbXZmii7Xroh9I\nJH+aheO8JpRkJ3Mz6yyV0nelmCCTXBh3yJKZ71UZRp4NulJJa5Dpl40DMn1a\ny8fL3MfDXuqe2JN4gBa8stFONS9emXa/pn2yCG7lgh/JZyCVSwk8zgBym/fv\n/iUk\r\n=NZNt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0c5b238f381444b908d270e9bf36d8b022f2b851","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.93"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.6-renovate-sinon-10-x-0c5b238f381444b908d270e9bf36d8b022f2b851_1618514735495_0.5659686959663086","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.6-renovate-non-major-92ba8c87d8366fad8907503895ff5430aa18d11a":{"name":"@balena/jellyfish-sync","version":"6.0.6-renovate-non-major-92ba8c87d8366fad8907503895ff5430aa18d11a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.6-renovate-non-major-92ba8c87d8366fad8907503895ff5430aa18d11a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7cf4dc2f07dca11651d0049201f1c3aa12542911","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.6-renovate-non-major-92ba8c87d8366fad8907503895ff5430aa18d11a.tgz","fileCount":24,"integrity":"sha512-PqtzJhqRyvpdVCE1+ziceNgOgb5hpceegdsoi1IAMFEPaFG0Kuc9SvJ7L1AZvirbcte0dQ4il0l1tP+mh3RR5g==","signatures":[{"sig":"MEUCIQCysQgT0vgA8Gneyw3LD8YXBX696B+2sQvqA2VPt+/w6AIgLyu81c55gacQQ0bOYx2dneQCX0PuMC4507DGhiXp8FM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeK59CRA9TVsSAnZWagAAfRIQAKR0qiDb8B31HFJ+MvX6\nBMx+RuauOqvEwxVHA3n6Iyxi9mXJpfbQViJ7cFgv+5NadOnNGU97vO5bntpS\nsDrAgv+OEGYwEonDwE2/HJMgM2Tjfg7hBuN+8HX6hOM7jqw+ocQvQBJYdJBy\n/FDVIqcAyRSBv32Ix2ttbEC55XMO8QNyAX7kYgEWkuVz06S7L8VTiiwZZjej\nJttD+IZtbRj3xhpNm/haEuTDP1Uz3a/Dirb1LIRHqxetElq83KcJiyT2s3/x\n7xEZnjxjUFUNSnT9J1y3UOLS9KWl7mPP48FTysR8ztfzyXRdxwNBwUrvbbUe\nVE0QRvBXA8znMd/AS0b5wY9KDHwmY45xoM3+mmzUT1QRE9szqfVYJzs6kttj\nsWBikbM5Yo5/p9GI+jJHZnKCixvR4zF5DIpk5QAdS0R2cZ068Y9WbTjwmUTW\nOHtE1POARxO0WYXxnH06mVjGKhVKziKlTzTbS9vvivzPNG+d+BlGm2dItlTN\nRDlKlwH2ErxpYJ/vBvuoFqkS6VM4Ftfemuf9/jIEzRMcUNfPqP6U9EzGLCxH\nOls3LeE03NbUnxeONKYWIYPJIRH59x4BswVWgIDjr6V1efAE9DpmqFw7y0NH\nnm+uJ7y7fIYOTD4xdldMwHpTy/YXpninOA4oYf8/N/a66h6eccSSbiWYpSpx\nBOei\r\n=/+yy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"92ba8c87d8366fad8907503895ff5430aa18d11a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.94"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.6-renovate-non-major-92ba8c87d8366fad8907503895ff5430aa18d11a_1618521724928_0.26900713306240887","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.6":{"name":"@balena/jellyfish-sync","version":"6.0.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c1ef5739ff88bafb22149dfe163f1aeeaf8ff52a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.6.tgz","fileCount":24,"integrity":"sha512-T+HyDvdOOld/2628TeuCIWW/j5ZOLAKiM6GOY27IzA9XbRXViEY135+BWg2eyMj97GX+voxhwdfTVi9yT7wn7A==","signatures":[{"sig":"MEUCIQDYsDXsMQFEX7LlStSVo7GJnzFz7ptHv3l3CrEMmn2zqAIgIODEU/v1Lt91aOEaf32jibu9BeCIHGBEQ+JWppOFsrE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeK9sCRA9TVsSAnZWagAAvFMP/2+2d0sfoHyrwwghkbbF\nzXoLbYLOwiQrnV7xs9pj7BX93YcRNXUA66Hjj82wgJk1eGN+KKExGkiBadwX\n6E+jccjzCHJ5HvZ7RrXvewqPDjMOwHpQr1RPWICEEKbsYbh5tK2r0GQemRM8\nNr6nUjEsL+Uojrd/QtV4U8o4dXQDXVZaaqJnvEXvPorqmVhX4pIqMGjnKY5D\nLqVso7eXwtbHLx/lv409Zq+wgIs4ebKHJigsqMvjFbntBQrcDQr/qtShn7bz\nzaH4Sud6a1H+ipwUm1m1IOsSHXSFgtaIwqpLhcQaxoJEy1S2j+1xpdDJKPrz\n+LnkG7jAS0uVmW6b6cVJjIujGyMfe27rQvWUVsVUsPeo9vvFpTm4nI7nyTbe\npnJ0kVDw7NqzOv2oqSN0yZ62mnhe2csurMAu75a0o9ZffDFznpI/598b1Iyi\nz5v5wFf/lIwzs9sGjinAVcPsNzOVNuVIGgPrK/oliuKJYRIuAxKQX6s7DSBB\n44Pxr1ugufIJsGKSMiWBsiJAzuJmy/Sp7aOTB1Dx6GxAH7sGJpjEWtLk1LVd\nnD6kLD/uMfmi4/MSgjsfF2mpjkgpY6Ne3+L9xP2oGjYzZi575L2X9jSlo/rI\nKzInZTz26JhNWfUfbLbRU+1vuVZe1QGYKRPX7PWJf3XM7uWLL8Jm7oHvyyuJ\nqP0+\r\n=SERq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"34f0246432867105169f39e5120bc8985f00af88","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.94"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.6_1618521964217_0.45606366714582736","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.7-renovate-sinon-10-x-482c812d71356b6a69c03c61e4495799fc2f75a9":{"name":"@balena/jellyfish-sync","version":"6.0.7-renovate-sinon-10-x-482c812d71356b6a69c03c61e4495799fc2f75a9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.7-renovate-sinon-10-x-482c812d71356b6a69c03c61e4495799fc2f75a9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"98a91f5c0fb6860bff5e1886fe1e8699e5c6d647","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.7-renovate-sinon-10-x-482c812d71356b6a69c03c61e4495799fc2f75a9.tgz","fileCount":24,"integrity":"sha512-IDJzIY9Fi2ba44mk5i455CiE0ZVkhd7vonbFLsY4rU1nBMYu1BLlekvpu4GPRTNWWVDG/DGwgA3T0RJzGKM5qg==","signatures":[{"sig":"MEYCIQCcAl1hRNC50E+7pZTWQXoyvm2q9DIpYYQfsczlnIzebQIhALB0yE5SM1LSP86V6eVebKQGtI72862xHQqbkqnCcZ1g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeLEjCRA9TVsSAnZWagAA7xEP/1jaVlL89oUb7vy18orv\nR7Frg6nKsApyPyaYGC3e+am1eZPOTez/n6EZSEmq7vhASxEkW1kSWyK/c1SM\nM8SIzJrF9pYOGzWazg5lLurDx5DHLvZxxmcNE14fAbOj/CSPMRR74ldrin+Z\nJNiMpKZHhGFmL39V+4PeiJz5sB+lF+zR9sQRPGFq+RQk6olJzv5bIJV5ftWH\nnhbNzKPu07bBbxPib78b+LaaFdTrOnk6P5daMXZ8n7tPcXvpMW0n0mafpDV4\ntWM9U+9x6EdWTw5mpsRZLx3pGiyGwsPSxsaqT44+9AjG2225WzrAkHrDn5Ru\n4V9vraNW4oEZQwnERMARycjtjZB2M4jrlNoeiFAacvAqLt0lJEMzFnFmZO3h\nYwb3TinrEsJx3iLcWf6CX7i3DLpyaQWa2Zvo5nvl8ZYZnQAwe0YJpIsLyFL5\nTGsWibh1zJN6YDgiP+fJM5qA4gGWccvHwAwTX1Ifx4powkGOx89vZrc2f8JH\n3kZxjDJtQ4vlmCM4QIp4hyNPj9sreCCZqo7p4TK/mynkKqtFuyE9KGtUZeOq\nhllLLrG9/pNlehcMnFE0UvMHOQwuFzDA6cbHFAOxaO+kO2n2tJbarXTU0I0P\nnUX60sHhDohA6YHoy8gZ1is6e8I/qnm7iTh71S2qkF8CQW3IrDzrowWNpN2M\nQOjO\r\n=9/ni\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"482c812d71356b6a69c03c61e4495799fc2f75a9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.26","@balena/jellyfish-metrics":"^1.0.94"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.7-renovate-sinon-10-x-482c812d71356b6a69c03c61e4495799fc2f75a9_1618522403440_0.9504174272404993","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.7-renovate-non-major-14bc81aad8891708563bdcf9235244105808dbf0":{"name":"@balena/jellyfish-sync","version":"6.0.7-renovate-non-major-14bc81aad8891708563bdcf9235244105808dbf0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.7-renovate-non-major-14bc81aad8891708563bdcf9235244105808dbf0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68712eb03073623fd2fb5cfbca0abe3637a21400","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.7-renovate-non-major-14bc81aad8891708563bdcf9235244105808dbf0.tgz","fileCount":24,"integrity":"sha512-JOJ6CEQzEg/Yc7N4bA89SMBu6tEDMKeqAeGa//Z0n7tAIkSUrZ2/2tqJ7vB2/OXRtQLdMmuDIuTYIdq6S8L2tg==","signatures":[{"sig":"MEQCIHE3Oqj/0FqBYBlhiQQMPckgm8onX7ooWkiJzl/h60BTAiAvSlDWAod/2fDPjhGDBcL9H96nFDDxbgIgh82IMJm+4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeM44CRA9TVsSAnZWagAAP6YQAJ2VLdj19nXsADHCpLS2\nTPB6S10Xbkd4/69gVWgFzrXLzLhROFtnr3w6ua5RR8GofNLOIycipTFmRLDm\nPhoL8rKWapi3zTxm8FDl20ayPXiNqod83OPLqF30tD7J0YztKSHJOI2CKTdi\nICLO8OXYaKEQyDbFcAOYGDwdXrZ27YQWeWfu7HfPqgYcVW79jJxNHp6JPN15\nmDUGikZ7toz4JpeOSSi4H+Cp2ApIrBAVCADkSgB3rkccMhd26sxUbgC+xUHK\nqI0+LBMK0sRXiQY7uujv26NrmS+TPyYgg18tU27D/CVxitdT5Usi8LumFPB5\nArASOtiXdbgnlM505nIA83B9eJnxy3OoQZsCICuXuxqiGHiGxw/bccUqrwa5\nnXAZa+j3qYtMDoDPGhlAVTWRQWiB2hOGpR3bvz/YkVRZKatGiRxg0ZnBO73V\nOLvMHEVOycNjcCSf8zOx8U/CJ8GvmoKlNg1PZe4Vf53O79uorllGX1joH83b\n8JrMF+ernhOakQHO7F+Ep7aCo2Uoc+1gwTRmySZvSURVV7pRWuiflpDFx6ea\nS/wE5j1Hezxq7mIIpFFsfqzRiesRYQy8SGMZKk8nrRC/zp4OBX6sqGy4bueh\nkUUlPm0wUzqyaP9wWGlH6siQiJ/zXp7T7Q8aaU2pOtU4zceb6d2J+8DFM1+t\n+N2m\r\n=9y7m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14bc81aad8891708563bdcf9235244105808dbf0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.95"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.7-renovate-non-major-14bc81aad8891708563bdcf9235244105808dbf0_1618529848102_0.5662017668515444","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.7":{"name":"@balena/jellyfish-sync","version":"6.0.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b3ff5d425e0a8173cadf4d21df1a2bc568bc7b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.7.tgz","fileCount":24,"integrity":"sha512-PQ+IsXYEE7PpTJMkduiGA905Q5eURJpLPfz1gIHDh9yTXnfPHTqj3KtGOsYvE5ZN9NNev0R5m1KCla9hfqNzbQ==","signatures":[{"sig":"MEUCIQDZP3NGRXp1BH4MhvcbU78b1PFyAZFIzIV/b+LV7ILlpwIgZznBVRn89cxSXPUhrDOs1k7Vq4EGNtwQXegEQyf4Tho=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeM8YCRA9TVsSAnZWagAA40kQAI3gcQQsyiX727DegqAA\nGGjcHnaWCHuzmg1AY9TJ3KPDgxSyOYXLcrc+sW2gtvhPF6eb5y2CNBsIuocs\ng6GPUpQ0lkAlfQYAAI0/2uwInobVWzHuwpWALYkY70VX/rTINSzHWzRFHgKt\nFskyutLS32DaDxQmyXtOjWEl7d4Zt9483+5cg2xXk139VWoZX5YcE7Eyz03T\nesWcuAok1z2yajoI9XuZgUPow+mMVnATLI2CjSTz3R0YwI9rQGEJJfaLumF+\n6FfPeGftozSqWjiDMrV+TzPsXZ6aU9fwUZ0iAm+x342j3y+AiVfmHaTAm9jt\nC3bFROvJpQOwPSYrvLBxQTb5pIIzatpPlb2CODBf9xA0oVqhswTCAygWN/PR\nHwe01JcHYJ7YRCDQjRot3CnEd+mur0GQPWbd8qN4X+y55yb0f+L//geuJRgX\nmFMpLZhovGNw6kPe6qfBpCOSDFFcMtN7WRntUbAC3uXbR1NlzVWXvSezZ7ba\n7X3EmzdEvlHUSwoQjKss76OMiB/AH7aV0Dnopmi29olyVnjJYNI84vy6ymw7\nQFbPyI3LkoLeoxZbQaQbNiAUaVTp7mXsFpmVGlEDgpiQF4gUOoopXSRfjd23\n3BNCJ49Si99BzmdMDRGQjhVt1eObAxPHxF5m2v/CZFMXNUAJmWhgKU/TisnM\necEj\r\n=fmnq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"10992ce8a193b2d63ad99d7e5d10e2308af3082b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.95"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.7_1618530072159_0.5649380881008148","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.8-renovate-sinon-10-x-1ed728c70a51d7f212bdb1944db8ec7313e9023c":{"name":"@balena/jellyfish-sync","version":"6.0.8-renovate-sinon-10-x-1ed728c70a51d7f212bdb1944db8ec7313e9023c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.8-renovate-sinon-10-x-1ed728c70a51d7f212bdb1944db8ec7313e9023c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6386c9819744f505331db828c4f22c0283e6a676","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.8-renovate-sinon-10-x-1ed728c70a51d7f212bdb1944db8ec7313e9023c.tgz","fileCount":24,"integrity":"sha512-5mFZisVCj1FPOGuzf5DuNxGKAjvVr6pKelc4cJ6KNMLQxAlrKdST0X3Xg/9rRPhb5PuNCdciMG7yyxs34dZdYw==","signatures":[{"sig":"MEQCIB2ufTMnj3kTdViEBecxySHsme99axiEZyTw5ltt8EmxAiA+VEKP9EplZ+gdXAbk12ba9wlgBLdjbYj85Zhz2yMXjA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeNDeCRA9TVsSAnZWagAAgFgP/0lTq+0Xy8EDIFZxEgM6\nwDRlCGunsJvWzqgLTXRoUJFZV/m8nTwNsgJ/uu4CwZyKJQUMS5CrpgOgJtB2\nCX2QXjWRYdNfVAYxacxKiT1TPiIAoVwKd60ApLijxn4ggSmv7syBNXvjv05k\nPzBR5fPmwV94cRpJ1GiuIzeR8EOCOHxZ2du2R05LY1aWmUczqnIfXOOUfarw\nFkAGblcVmXP1tHYHQO9yeozjJZRmPSk5X2kVvaAbAVgAZQzkVUjph4s6bhm+\nhHiJTVS48DGcRkuaHnGQNZahjYa0og6/bqyyiMx9hrZ9q3GKhjmHzZBO50Kh\n+xDB1KX5Vjugeimk/8i3NQkVvIhgcCXjwxh2d4rmnW+R5Oqx4DGXHD3oCSMW\nw33UZ8l+CyKIB4LTinwFTFpLrcVePBPLNDbdev0DDuBmRz0yA5C+JT+JYdvU\nC1onuv6CIhjpRWr5W3ADilSfHshnNfvTR0vaC8C2AFn+3nMENlAgxKyLWQLj\n3vSEgAIeX1YRyc3wM0w3ej7jpIemtU7C0QjWhTaxvCF8DZ1nTqX1SsDG0KWw\nnINupdCvE+i+re3QWYO+cD2vUhk2DemP71j22u8M+KWK2rNb6wnXa5ZVbTjG\nCmTczO5Sg7SvnKSIelSKO19jgZybWylaClwh7rQxA7vAJPmUOm1bDy+1/G6D\nNbb2\r\n=WRwX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1ed728c70a51d7f212bdb1944db8ec7313e9023c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.95"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.8-renovate-sinon-10-x-1ed728c70a51d7f212bdb1944db8ec7313e9023c_1618530525973_0.5986328277141542","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.8-renovate-non-major-33403a2ac79e9a0341a26216f50edae98b360af8":{"name":"@balena/jellyfish-sync","version":"6.0.8-renovate-non-major-33403a2ac79e9a0341a26216f50edae98b360af8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.8-renovate-non-major-33403a2ac79e9a0341a26216f50edae98b360af8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29ee70e6701ce0412351b9271bcfa26d48c8dd0f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.8-renovate-non-major-33403a2ac79e9a0341a26216f50edae98b360af8.tgz","fileCount":24,"integrity":"sha512-q21VHxAUFXP5DjqkZjRt8UgZ23d8Bvn41vwZxkw9vS0e+sa7mTATNERr36kqFSMoxxzDq6F10cmZNHG2kGmSLA==","signatures":[{"sig":"MEYCIQCWsmqR3cl1u9M8jEFfIt521uCbLYDxlTwshf0aZDCwFgIhAJrh7AojmxANMIRmY331b6aYqOZUF9LJBnujQJafDblA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeO1oCRA9TVsSAnZWagAASNoP/1kPVOMjJsD5h6kaoa4g\nGQcq1mwgu2QkfobRFAqvy3UWPJdby2GeqYdANGs5BSiRdSTp7x/y/t/aQoQY\njSTYkLJfpkcW032jLtvAPgyYKMfsbm82chNexW3qJqE+P7HMZx5oWtEjoH65\nHKwKh14l1O+yOboerUE44NaqIKd+8xpn8ER8yjy0EEncP7rlnLzborDtG7z6\nv28xsap5llKWVQ10NBa64RasaQFPzD+cij6FSMb57qty80iujv5QULtl5ztT\nD8Yoxp3DAcM8SlF1NKO83nA33uz7Hiy3YKzFaV0V0mUJFTgEw3/4m3Ocq9SN\nv456FS0bdAyfS/OREjT57RBSz0i2gzf/ZpMXJyMUIUwfHfXVGbu9oVD8SmvS\neetM09g5Rf04lPtJbznuOjfqtnx2q4jXLkaLic3y1FcdA/5v78Qxm8fM8p3x\ntsSnXylO4H0EIWSCyaV9AJAmdhUVWZDkrfx6sIkctw6DIg8NFHG9r1PJ29ro\nfgcCYYdHyj2LZgH3JustAFzD6jF7nqEcfXrR0vD6+gEnTKLHYwv4kleFLsBR\nLVG2BtL5QNT0nPCBvcJohwtoIvy1xKaHN0Qi8bBcZ/CRxHo6WGzSy+mhqvsO\nfQH6umiuRSTVlJYVoLtcNg4njcl3VkXfK/xHu11zseIkkoG05V+Cve0fMxAB\nWk3+\r\n=TAeS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"33403a2ac79e9a0341a26216f50edae98b360af8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.97"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.8-renovate-non-major-33403a2ac79e9a0341a26216f50edae98b360af8_1618537831803_0.21594160424407405","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.8":{"name":"@balena/jellyfish-sync","version":"6.0.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f1f71387bdfa1813d2dafc93f708caa836e54aa2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.8.tgz","fileCount":24,"integrity":"sha512-sssxOU6fMBjWiEbcLPFRWrh2I1/WZJB+IKvWo82zKIUylYULLkOPZkgij23irQAhyZKRCYq2u1XGyeuW9djA9w==","signatures":[{"sig":"MEYCIQDIbl45B6mKmzOtMN5eXjUzDLJwS2sz7ZB5QeuB390knQIhALpsIeQdx0ebC+9d89lSVHzEJjWVcFD+RleXLlpIMV8a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeO4nCRA9TVsSAnZWagAA/C4P/2PqRjd4HDKNJDtcUSNO\n1qxqb+fGNMjTYZWIiWBYSZ8ZvRKL5mdV7vCzRXwb7Rh7ly3HGrrOfAtgTDqx\nl+QKS10XAJyPOudkSBL64nxmZ+dSn6NDRYpNzxBeELeWKMSyYvUf2GRS9XIn\nwxe7IIfHJ+P9VLPXDcGZNB+h/08+fu16pxhA05tMbY42/QUBdFbYXXpPsphK\n/L+Wg2TOlaQ2yKlbR21jzHEyharrumOteVQJlk9u9E0A9EBMHIJOVNSEHYFi\nfsKMQfwPtP1n5P0yyGjerMdn/+NGdg1jUOn7l0ugjdHABecZfq2aohc4lD2n\n3iPRX8bpHHUdf7EWwP0+BBdN5PEXLGYhV0T6+JwWCBkOfofJJVmLUZ3EfODa\nrD/nehWLTQmcVaJf8PrOXWwLIr125aJUSJMOI0JGmQ0TJLxTowRRnEvq59tQ\nCJ088cjqrJrTfvFlfz7aw0QrTnbXU2FEc01/fOJf6vPfcDjG3PjPr6+7zgpD\nXf5idz0Lt9OvdphRpr70vw3kZMS2sX9p2Iot4f69qNT0ITaig8UxOTXKDMFY\nY+mj+mkgY5Niq2sgvauTeqCCmTt721tTl2MqBXpsUeme0acdTs+yOaQOEhD4\n/NDtvSYWY8K4CoD+fi6RAamprRZqUjuCyYj2Wdvko9DTljaBVm82UiuvPe7H\nuPfN\r\n=T4sC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f4a3dbb102d602d8b1edd64895f154992816f6af","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.97"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.8_1618538022777_0.9974870241936493","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.9-renovate-sinon-10-x-f3af3efaacf241384714f696b9b747da9ef431d9":{"name":"@balena/jellyfish-sync","version":"6.0.9-renovate-sinon-10-x-f3af3efaacf241384714f696b9b747da9ef431d9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.9-renovate-sinon-10-x-f3af3efaacf241384714f696b9b747da9ef431d9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b86177d212a10f5ca1556fa9cdbeaab4965efd1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.9-renovate-sinon-10-x-f3af3efaacf241384714f696b9b747da9ef431d9.tgz","fileCount":24,"integrity":"sha512-aK2sy14QFD50+TJ62xXvgw6mSdxChDmw73kwEZgIJOWeVVRt8vt4XqU1y7rcQCKt+o9iGPPt1W4LqUEg3nUtpQ==","signatures":[{"sig":"MEQCIFAp+jRSL+Slt/USGbM0aAf0S+zMXK8MsbDHw9jQX575AiBqlmbJnAgvIq1K/3gIaq966IitkDpq98/rzlJal15dpg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149715,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeO9ACRA9TVsSAnZWagAAcCUP/0ywoOV5qRt+Ysm+zuvL\ni0Kt4TJWr11EQTZV38pqVueoifGjoN7wIDadYIlQ+osZw1J07KNEgKD6SiLY\n3B/PovD/NmqQ9XQxuk6ef4TpB6TJ7E8+ocUtY99wf78Whr8fB1K5PoUUNvTe\nS+cvaVBiU1UTxQ4NyJPSOtmX0QXxd0MO9LdaAic5vIALmKKq0CYJu0x3Nrvs\nskGlq4og3wD+o0H8qII/Jn419qjpCtx0btUUlEFa2Z2z7OzI9+o9E/V06ra+\nlzRV1BlxDD9cQflaV9XTw/lXVMzza/6XtVk/Q6AVwiUPC7idrwAqoga3Yn46\ngpSorCg1yTAZWNEj43zGZpRLuajj1piHZXFF6XliZ4TWT0ErH3ncsXCfYhjS\ndZVMxiR22DSQwa1tezM6RVChnhMOFl3qCjchy1oyNexqP9Z6XQraBrK5VYIl\ndxsJ6G2aPdrzQohxNgv/h+EgJagoIw0SnKKqYdD6Dg6UppSHZNPGe/giANSt\nozx59i7kLNVzHscaKQK4l+4cv/JhAePNAkNwrcnDgl9U5CD29iqwZmf0njKD\nlbK5i7ZruhOTEzGkO5q+ewvM3r0a29k1Av0vv+qV6CJ0nOJhK/Td9aO6ZG4L\ngiOz5hjsQv7/804Df+mqngCGeCVFJymy/T/efeQ/YcGn0ttcJeuNwhNUs0Oo\njtTs\r\n=rgkG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f3af3efaacf241384714f696b9b747da9ef431d9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.97"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.9-renovate-sinon-10-x-f3af3efaacf241384714f696b9b747da9ef431d9_1618538304251_0.14264028634115666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.9-renovate-non-major-ad460afd49527a2280839ec967eaf14f8b59fa0b":{"name":"@balena/jellyfish-sync","version":"6.0.9-renovate-non-major-ad460afd49527a2280839ec967eaf14f8b59fa0b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.9-renovate-non-major-ad460afd49527a2280839ec967eaf14f8b59fa0b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"301520c80cff90fe012c396e9eee198ad4e78cac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.9-renovate-non-major-ad460afd49527a2280839ec967eaf14f8b59fa0b.tgz","fileCount":24,"integrity":"sha512-VOc1jhfhvh6DxFM1TFmxDVcksGd3rb81y7HitPLaD87kHscOMQBa4Wj4AFJyhtY/RHrXDrYYjHQJZqJOiWscdg==","signatures":[{"sig":"MEUCIFntyS2l/tjYsnKxfRHswLaRLq+tLM6wsgKwzdjScRQBAiEAhaNNNNubSdikApxE+gC6XfDtbJ2ZpH37V6quo/nGZqQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeQDICRA9TVsSAnZWagAArEUP/2JVZZ93GjZif3iZT5vi\nrVgrRRfYth/B3ej194A93ovIOEBKIkJmu6N+M8rnWSbo4XdwOJyGJ34zjacn\nsrdrvDQhEWjJDqsKqkoYqkO/Azx2dIIjRUsqUQVApR7CvQ0VdQbsL544+J/2\nXWD53UfcZC0vofHfkAxteBYqU5bYYh2KJFYyk11px2EikMKLaetSRAYP9ARL\n6nk1tYO56pBZpy0nj/FyGEP5V8+d1WybCTdIRqw3De1WNb6PXFdyU0HlLKFY\nAOUq1dNVx/NVINgeJxCsd4dNqV966PqcKzv3haO/4/hEdR4FN2SnFtS7wCF8\n5c9IQCRIY+rae8PXks0ntZnPWUH+vp7FiL9u4Xgf/BANmBx0BcG2seNGoCel\nhrCTmAT4/LQZSUQVMh7MAgedzPLyEH5e+jXe60WEI7stkIsutNEuJ9yzg9Mi\nzeT/P0zjBg0EpOPobiv2AVvIGdlGMcdU0MvsppmSpxtcCfpcNyczJSLruq99\noML7ipH25PtFJC4s3i4dlXkRDFc3b2SYchz6ukZSTkuZ/R8SFIR3Ypn2Z1j5\n2UtHgV5usYc2kln+0vHzkgJD/2eoWaZoFvXLA2EZJJ1cuu3Uee1XXpbOugNO\n3xMtWsydKn30/6Xym1brl5jifJ/2JKjPKnfQqG5iVTbyB7n+IvHhYBNBsgzz\naQft\r\n=elc2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ad460afd49527a2280839ec967eaf14f8b59fa0b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.97"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.9-renovate-non-major-ad460afd49527a2280839ec967eaf14f8b59fa0b_1618542792123_0.8973710823480634","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.9":{"name":"@balena/jellyfish-sync","version":"6.0.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"727851ce18f63585c45aacce0252ec5fadca227a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.9.tgz","fileCount":24,"integrity":"sha512-KUCDaa0NoJwFV4dilXghz79528NvoEMZncTpvSHHNJ3c7h/hNzmElTR48kvMF72UF24yX9xQjUD38QzW+s4Few==","signatures":[{"sig":"MEQCIGdEI7Qd4ZRTrqZL8pCti3HRttVDUx6VuAFzarXsIE6ZAiBtv0bivz1HNwi71RImhYwCRcYwSGwJSRJUVIYGx6DWCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeQHECRA9TVsSAnZWagAAf3AP/jgKClEpNjj4+1tzKTY5\ntTcMiyUU/IDwDn8SkcnOUbyiMAG/F/3pw1oYBHm1Ummv3FoSSPXhz55z5dVL\nmXpgQRogLiRcLu6UyroqqW1p+m1clFqQzqsZb+ChBczhY6NBF6nNpUpFf5rK\nCPbOv9oZLzZhz8nai/9jwguointOzbKk7DZicNAyVY5+YvrLvErR3xG/TYxj\n6KbYFGFJKnm7SXb+A9tFcoLmb9olMPBmUSSFygHUqgaKMqduGE/s7cOgDmmD\nNULMOTVyzxlLJJRpgi58w5C4YEOmQ0RluGVIjGB+z9lND/7NSMxEWL1Ecnj0\nqfaA06BjZWOHx3JL9OKwv/FXOMFlShTAbM7EpnP+YYuiSxh9+H6Nf5e9LoPn\n36+QxJZQxTaIem21S9EP5W3X1VDZAmg/RAOtyl1SrNjzH2NqVDUCvImMf48J\namjY7c9vYUHdf7oLteM9oF49NRyXR/gBKqUtPUY42NTwPYfnMpQ7BK/yVt9A\nF39aSgjaT0wbXXvz0v5jyNKNZMFS5RS4evfMHg2IuJVTvsluL87CiMzKtFg4\npTDzbpPejdmc+XObkCGk7aMgOkq3xyXigR7PlBQl/xqYGxySl2Xm5BUs5Foo\n5XL94RrpbNiORxDQ/7X94Fq+UYiFl/Xuvoq/MYHYo5wFa3xrOSfEeupKhOd+\nTKrP\r\n=KxbW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"062e02015a0dafa20f61e85f61266d9bd0dbaade","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.97"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.9_1618543043908_0.7450100769982821","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.10-renovate-sinon-10-x-e6e2884687b5f59a7a0feaf3983cd5840ff11e30":{"name":"@balena/jellyfish-sync","version":"6.0.10-renovate-sinon-10-x-e6e2884687b5f59a7a0feaf3983cd5840ff11e30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.10-renovate-sinon-10-x-e6e2884687b5f59a7a0feaf3983cd5840ff11e30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b7374d0a57c8fd3953677c3ff10847479d76be8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.10-renovate-sinon-10-x-e6e2884687b5f59a7a0feaf3983cd5840ff11e30.tgz","fileCount":24,"integrity":"sha512-/twoK5SBVa6qo2hI8hf4W7BDjHokb+S/lZFgvm1IWciQvd5NvkzDBnAxqm45+3eMuwohDhK1WO9YY6aM03GJqg==","signatures":[{"sig":"MEQCIBtvjshXG9jTJT65GX+CxDl/LImdZ7YcX7a0C9jO+UuyAiBrXF/kVKbcpYQ4ifZV400bLapesdCyXFm6RZrVT0BRLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeQOFCRA9TVsSAnZWagAA8tkP/iaT0+rvetX6DRVX2vAi\nhdvnF9gpe233qAEQJrPrahGrQYckF7o+jzp8HNtD4R5fKoaCNs2zB9vwlArN\n5ctaCuWW1A7D9kC7OtjvEUj6WYJPWHS8c8zcSjLXcdAxVl7RxkP7676reA5G\n5Fg7F/OP8uKGxcfjTiMTGXzM/ETGUtgx8Iglkb04HBP5vFWCgWjNYmqo+IeQ\nTcMvRDFv0NVspGMS4Enm/9ycfrBOVhKQxUgik1hd8EOdC4DeroVshDBNwWI5\nthbOLIjew5ra6DOpvnh1997I+7a41VEYKHoXzYUO+hp/Pj9YOYirEHyexzcN\nS5vqPFDtNci63M8ECBN1sqUV1HGXQtTYFZZep2/Qj2YzDko8tEmxOxM7vpuQ\nGlFj8gEIkS9wYm9rKNnAkJdxYv3BS30QMM2Ae9IcAiIsfBGcVIxm/mtph4vc\nZy8oLNeiWeL/rkKvbK1mpDwtwpIdZ8sZqi4ZQS5jayycabfIy53EcRSQdV7N\nQ+QSg3Z4Bk+VOiY84n6IWOQw71ZU4DY1AhAL1giuzeP4vkOdfDAsMegJoMuf\nrLbIl9P18BOthc52DMUVRe4I3biOKp5sapxglzVfa7iVbZWgkT2y22lOujpx\nlSrPwEJJjwe+gyj7FOFLzDzZXNInqieSY5e3kZ4SjYR4HVMxrZFsuZKYETms\n/M9B\r\n=+50n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e6e2884687b5f59a7a0feaf3983cd5840ff11e30","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.97"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.10-renovate-sinon-10-x-e6e2884687b5f59a7a0feaf3983cd5840ff11e30_1618543492931_0.3949156058722596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.10-renovate-non-major-e4a60c7c0bd29d7216c5e0feb5682f61f01f065c":{"name":"@balena/jellyfish-sync","version":"6.0.10-renovate-non-major-e4a60c7c0bd29d7216c5e0feb5682f61f01f065c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.10-renovate-non-major-e4a60c7c0bd29d7216c5e0feb5682f61f01f065c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72661430f855a909123b0633f6ecdf9dcd805406","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.10-renovate-non-major-e4a60c7c0bd29d7216c5e0feb5682f61f01f065c.tgz","fileCount":24,"integrity":"sha512-NXVmvNWk8DTk3NJnK+7WBIyZiCSWOwQe4KPaK9UGRabYvCuCvubK6pcNP+IES6McqvDdfS79YoFJ22ijGMxaRA==","signatures":[{"sig":"MEQCIBi9HYAbsw58dZZHhtEOym2I+3iesEJIKHpETx0UPb/XAiB5j7bScAIwVculhsdpsXZilTiJShceHunMv5z6udoZrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149795,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeSkyCRA9TVsSAnZWagAA/UIP/00XQQO275QUaN2TUEhW\nJrRSn/Fx3x0NGFMqclAXr9TYnsDLdgLCJFeZzrwE8Ip/YXKRbvvcsR9M1RvB\n1QQMzO8z11hHNeBiCFFStf8SAMoRTwTtcgaByALaSNp0hKSRaT8pd1lhCPXp\nat0eL1r9cmVum1utKqh5c73HlVjPOp3e6wE6KFlUpXm63Ohd1r1fkRejbnT5\npFTZeMqltIs/2iolGpwB2l9c3/A6mYhMxhcrzLnz51b4DnHIBNwruO+B7xNK\nVmOuGasi7yDDx5g/TqHvWun6zXNY0x3HXxlTvXiiMaHAOeqxS2EJl59U+TXj\nFGmgfhZ2+3C6dlaH2TqsXb2739ZmOqoQKgHFioeigQx5mbLKmzDa4iJYVz+H\nSR8xoVVmvJVLp1/u2wiPKK1wFPVl33HOpMIBTwqhDVW3kn7clmnJ6wM47iu9\n2+VgIPBfUJrZDzcAeqrQWx3dQRkjRJwhhNnIkrhhA78xBs9M+alDuFCT+wJ8\nsFcfzSFMqi/8ThLnHz4Ir1wLi6ecO2YAtWJg5HphZQ1K5M4S47f9WyOs3jcX\nRmwWHE6MiJqIhjhjha+Hi+VmcEpFSc9X3HsmuOItvE3T4EjeD6xE3oPRFMsB\nDQcY1oO4vz0HQq3GzVzpNkBGakF027cN9NQdUkDWyaKmm5OwD5yDaDW/QDw3\nvrWL\r\n=8s2f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e4a60c7c0bd29d7216c5e0feb5682f61f01f065c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.99"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.10-renovate-non-major-e4a60c7c0bd29d7216c5e0feb5682f61f01f065c_1618553137573_0.9849659448376304","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.10":{"name":"@balena/jellyfish-sync","version":"6.0.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aa0f997bffe1f61af8afad2ae81b69e089dc8b1e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.10.tgz","fileCount":24,"integrity":"sha512-wunP7QFOJ9ik4cghb5l7GlmD2L5dOmCi6iAA82Lloo/lqZn/UuQF6+L4cENLuvZC8DxU5qj/xOQdCda0XCuamQ==","signatures":[{"sig":"MEUCIQC/4nGMWVL6MQRiXeUD1GhnewWIaaymvqXRXdaSS32IFwIgZRpwsackOjSc14MIMmmqhoA5dUUO/F7GLHKtuc2ieB4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeSpGCRA9TVsSAnZWagAAOLMP/1MtKIcqvo9yxKjps3QW\nFOS732XZ/29s0XeOoQPJsAs51igh8JvrwZ/IkK1cyThOwC/8o9HFcfFNrkc9\n3P55Svj+zXSi2H2pEKjYp2xLd3sJ4nkn+3sTPr0C3qHuZfb87Ay+6DvF8Pet\njLwzK9/k5sg7hvM5X+p2j/QKlzgNGTX14pcpqMT55EO3ASPqdcwUbvw+BTpC\nNFCh5aGTkHUD1mgglZ4FkJBm9X98edbhSfHtiaD/3A1OFEd7kpjpjyVaHtcr\nGMv7JDMPR0lcER2DQLU0WxsnHsJUmt6QwFnpsTmYSro3PQLKXwXphNL2rEbK\nhy7ObDQqcEBw2+eLvwgASg8ZTbW0aoRFQSq7dRe80cqfZ9ZmPvvTFvIkfbem\nyn76VQ2zp8KA7DVSi2ssX7PZUOnjdJfdqQ6h3YtPktUNjYKF69unVVkQsnX3\nH8HOZC1AlxNJh0CW5CTvNcoLEtG8hJwkH9zTrYLd7/aWYWCwV+f73FkyS6KC\nXZMAifPEkR6c2UvwfNK13CYmnS+KXaiMohpMs04hfuO5k6GjYVA5rEAwGlBy\n7YJQ/C6vDSJkzOyOzvhhXP0pD8L/lrMlDrH75HbXE7Mz5MOdd1c65DxHNaLE\n2XZxGeLxT2UCQbRhveLD283QjWxRe9dvp9tcNYaL3VZdazxal3fBsPnA1A8a\nNKXD\r\n=HBev\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f321cd3ae98ed1fddcbc67917fd4348d43126ac8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.99"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.10_1618553414191_0.11496572915759273","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.11-renovate-sinon-10-x-c13a40774138a016baf66fbe6ecaad11c3a1ec9a":{"name":"@balena/jellyfish-sync","version":"6.0.11-renovate-sinon-10-x-c13a40774138a016baf66fbe6ecaad11c3a1ec9a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.11-renovate-sinon-10-x-c13a40774138a016baf66fbe6ecaad11c3a1ec9a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"38d3cee9b5ad4e950644ff9d3c7cfffb5217705a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.11-renovate-sinon-10-x-c13a40774138a016baf66fbe6ecaad11c3a1ec9a.tgz","fileCount":24,"integrity":"sha512-oHGtmim5+FiiHHK2+LrWZBxtq4lTYErYFGaYWlbV14OiRwzgi/5x87n9YcuxkzaKoJdz5WWFF+1uYbQTxNmbqA==","signatures":[{"sig":"MEUCIQDTQvpSeJioj/W6ljvbfxq+8anVH2SuMKHjp3P8VygM0gIgFBsa2qoiY2KHIKMU2rZ0I+8A3a00X0BjkBN8BvfGPPw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeSufCRA9TVsSAnZWagAADW0P/1XqrPpSp4ns+T7zYZbB\nbuWZg4yEx9E8jN2qECgTLlwJ6hMMkpQ0ZMD5Xd3QZJ5PHg2UW2gf0r8+SoJ0\nmuvw1ZDbBuBJZRE5pDp15KX/fQqHS/tqaZ6ml2pQxEqPgeyo0JUn6fJhYi7n\nRcSKqEPA9jZyJN+nnWgdjL+UYQO+HNhb2cIQZaatTbEJDZ3q7m8iLIBw2Z9T\nleIzv0VJ7L+xTTAQTn2s/2IAL4t2a/o+BBi10FFYtvkfJt5PjnLmdIGiTBG8\ngZq7CNSeFIVVi+0Tbfvqwmz2yaLoDn0AIWHCdQRVzJMsmk7TwNgB/6g2SHED\nFHlPzza+cLpFYTfNoCTbv5pGjMTQhEhkCJ8+/DW1r0nERiID1En9/6PCvw/p\nVvl2T1BstLgkstaabRbOBN7TZJx/Nbe1jIK6gHi6eIrfdME1NH1MwmQT0vGI\nJA9czZ9txjHA9ycObgmScjL0A2g7BONenhoXy5MJ4tgGu9mHE06/DNnOYF5g\nK3503oU8s2DAbl/73u9qM+6ql+xYuGtm1Zfty+24DF6ZBMysTEpnvucBeEsW\nwW+cKabJV1eUuRJRVVWYA3SBAlqUrbQ6BQ2eJaQ7ARq9uaD8zNF4+V3ZO2kQ\nOCtl0qZomZPd+KfuHUCMcmCAR4GdhCJ3lrecp8D95upe9WckD9eIPY+SIjUt\naix2\r\n=Y2fc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c13a40774138a016baf66fbe6ecaad11c3a1ec9a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.99"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.11-renovate-sinon-10-x-c13a40774138a016baf66fbe6ecaad11c3a1ec9a_1618553758612_0.4323761867209641","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.11-renovate-non-major-bc34a6eabfd4894df9ec31475def4427323b0d38":{"name":"@balena/jellyfish-sync","version":"6.0.11-renovate-non-major-bc34a6eabfd4894df9ec31475def4427323b0d38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.11-renovate-non-major-bc34a6eabfd4894df9ec31475def4427323b0d38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef4efc494e5dfd9a939554fe3bcf380eabfcb6b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.11-renovate-non-major-bc34a6eabfd4894df9ec31475def4427323b0d38.tgz","fileCount":24,"integrity":"sha512-o/9Nm+EHl40Ir7wNKBHQw53zdBNdJno6ng65sdjKl8x4HBdt8rVCZWqEcSh3T59ftmlUwBYZtr1N9P641+YlYQ==","signatures":[{"sig":"MEQCIFof4R9dggiC9tdNlu+Ffq9KXfkQPYNcUnvARrbHgzgwAiAQkSjbIuPUGAJ40y5bt+uuZpSrwM+qKsQx0ctBKxtKLw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeWubCRA9TVsSAnZWagAAcIkQAIOnlSn/BC7zJx5JLLHy\nhnarHA6U1ZEQXeQ0DUdMtwkC5+scWb4Dp4mS/nzDyf6lPCYUrDkP593ZhJNR\nX9Z5KWRf/X5mZrm+qB4H6ztaEprm9joeHF+rPUAekT7yMS+TgroAflQKF/3d\nVIDawfQoJsimGiHmWVHy8wkjMZLFZW3WPRS8JxQJ4nKPfJAPzoW4LkE+gS48\nb1qpS0jCvQlwwgiMQe0LtGK68B4WcBQx4zjL0ARIAXy4LgsRtS3XFx6ZwPfb\ny2dTGVJaoHSc3Tj9h99QMBu1yylF6BR9hZdF/ghjJv2glYBbMGVjf2UI7PR0\nKoaVPMDdS0ITY7qz8h4b2G2Jyp3S8GCjAHldM7ROXv8nLGCSjBfKbkj23EgH\nKgSHLfXCiNuowlAkyaBcVv8rvKQg8r601OSKJkRUv3OQ4xOjk+s6b7Ol+4FJ\nBl2I+R42Ifjoi10VXvjaZczFYjJk+y4IqHu9nOsusxffs05b2pMRdjhTMQAI\nYIGQR5Wba9aiJ2trjpjqr7kvSMe/N5+/vx6bjSFg8RiW8I8/X5qb0uXkCi02\nnXmFdVcbCpGiSvqbm6i5rU6Ix9rxMk7YXPLiUsBQ5r5g5OQF+eCXelJwOvN3\nh5W4xgOCqB5nfaG/VuEuO2MYKepLhxsrTDRsfNNJWFG4WJ6LEccZsUW816ii\nHSHG\r\n=+kkf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bc34a6eabfd4894df9ec31475def4427323b0d38","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.100"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.11-renovate-non-major-bc34a6eabfd4894df9ec31475def4427323b0d38_1618570138881_0.9095160016048085","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.11":{"name":"@balena/jellyfish-sync","version":"6.0.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c588699a35b19be47f8712a5a1e84e2d628c1d14","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.11.tgz","fileCount":24,"integrity":"sha512-oZ1UhNIgMN1JD7CuaBuZOB211JYU7C66GDJY6jj9kkC7pHq47dHdrfGEva7WcuU/3811GyyOTzhmKWiTyI8DiQ==","signatures":[{"sig":"MEQCIAgZ7vPExqRxiWNCxPye3fnctvguSrjhaMIbD0/wgoR6AiBrXkkwf/pdLKhp8iklVhyvUprNbQ/CuIUbMTgqrmblhg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeWyeCRA9TVsSAnZWagAAc7gQAJjELYLg2i+YcDsrura5\nq9GBVnQ+8/r+4IvyylGsmlwIsoVZdfbBNKmnCUsqv3L3nc6dedjAFua2F589\ni8795bUk48cPU8kxjUCX8JDc5wZziNEOFCyQUW+mUIIeOzLZRLSecLt9aJ4w\nRv/msgG97L4TgX6ZNQtSMvrSaxaK06UabNPoy2o1UDJcp8z1k6hhocL8DOOu\n/2GFo06zmpK1i0rzPf0AdM8dvu6JUQ7tWQz0mPoL4MDNoaM7MmtN84740tWV\nNLZmTfOV6Gqnuua4sNb5DYnsep0gL7d5VfxVv2MDtCpgc6ybaWlBsp+tSKUU\nlutQDYgUZKfRG4oPLGV5mh1zhhgRnJq4oBo6wb7NWU5aziwHOP5QGHmQB/n7\nABvEpTlDlzsYJEiwxy7MCC36HEPYXUXiLob/zkcc+tS6SLXx9NVJE07rDPeF\nLT9i2+udGIUYOxtFxuc4pXd02ZqzL8poM7h6BL4VmT+ZppxE1O3VgQppe4ts\nEFULseODt4ndO5/+Ogz4C0bcRvBio5PHbmo/+aEjW4uWKYqtcXZADpKxgHHd\nNpwM/QlYmm3ezx9G99z0tN3xiZJeezjR+WELTyel3CsyNuI8Fpjne9wizyXI\n+lAJ/7Bpnqsrdh4RJJYc/chT+Yw6RdcXtWtLw1gwbTX93IH6NDEcqh9vDyUR\nze8r\r\n=bfWt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5b66ccb894bd959b3a0127500b3435bf200645c2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.100"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.11_1618570397440_0.5389362869224337","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.12-renovate-sinon-10-x-dd14d4b739253edc27797754b2227b7f1430de2e":{"name":"@balena/jellyfish-sync","version":"6.0.12-renovate-sinon-10-x-dd14d4b739253edc27797754b2227b7f1430de2e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.12-renovate-sinon-10-x-dd14d4b739253edc27797754b2227b7f1430de2e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5b3cfe6b89653158b7995d4c4252222d7aec5c86","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.12-renovate-sinon-10-x-dd14d4b739253edc27797754b2227b7f1430de2e.tgz","fileCount":24,"integrity":"sha512-Cd4WYPU7e2OH/jJp4ev7IEUUmWJHtoe8XVG3ks1F1Q6XoatJxjKWPaIMEyg0GUQ8gHMXY5aqusJsyaF1cWNtNw==","signatures":[{"sig":"MEUCIQCA9IIY6GDbhvHBFT3w+cr0+K54mQemTKYIJlk3yCsSwAIgPuy+0l3S/U73eyVsUpvfE8CPHgFLetBU39cfzCF7e38=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeW5KCRA9TVsSAnZWagAAJV8P/Ah+w1Cxr4NcZv7dYb4t\nhFLLIelz7oRYl7cz9Sn1+F8XnGdSzemq9ZZOZybrG2UR3xJBUbkWTUZX6toY\ntjdDzwg0X5MHCtawgyfHXv69cHjn1dQYdDmw1Ip8kzGxI5Id8atXrOQ1J5uL\nu7/36pg9XAHy9wBuZl8/j9lkPeHg1SXd9tNEJ676zK3DPXcNuFexxgKhn/Ie\nzlV0WRWcU6M7ZwtKF7BTa8wdOoGRNu4ohp8vmlrA5j2MOHTy2jDh5U2i6HCX\nqpRMCEAMIULgrYT10ORYVeqIi0Iq66usdV89/TXx+y7eDL/tKTBT58+hHDRg\nyrUaMgSLzdLQDFtxYu4hxd0Xj5iQPtFZkv88UK7ourNYfG5FlRav59jHwMTK\n/GwR+kUl8JI0Y/kbmcMula9q7wiRYUGQCCBWmU5fafa/yBtAX2MiGNu1MSur\nPe4mzv/SotPQ0XmS268AywaKHlxh5iCDLdMNPcc+Marg4Zyg+k6DXf254udy\nmkMFqY/jmOQU+jXpDFy89VPG1HSh13FF8egfez0m0pd4w53l4tPUIdOnSl9m\nnA4asp559kgs6Fu3el+F+s4Tgt4IsxafCWCkZgaUm5c79YbdZdQ11NAEPjqE\n+JBRtHebtWRIHTVsjLuXGxy2n8EjipgHynTAemcbHZBZZ2MZ7hSWDX3sGMWX\nb/xR\r\n=EF6+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd14d4b739253edc27797754b2227b7f1430de2e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.100"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.12-renovate-sinon-10-x-dd14d4b739253edc27797754b2227b7f1430de2e_1618570825530_0.08327882812863185","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.12-renovate-non-major-c019c62aaea50447a6bcb4e603a358bbd9ab5751":{"name":"@balena/jellyfish-sync","version":"6.0.12-renovate-non-major-c019c62aaea50447a6bcb4e603a358bbd9ab5751","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.12-renovate-non-major-c019c62aaea50447a6bcb4e603a358bbd9ab5751","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2b6fb6b85a9545c79c3f7f658a8542dcc373eef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.12-renovate-non-major-c019c62aaea50447a6bcb4e603a358bbd9ab5751.tgz","fileCount":24,"integrity":"sha512-Hy4SCCERr6kyzW4OrnPOq25pJnbBkxaDPU+bLhH01szIVzKIwM9Y3kR9RZqqORbbvZ4h/YhokOooiS5grftMzw==","signatures":[{"sig":"MEYCIQCZRC9Y/cn5kQ3CG3gX08wGG8XKoYqaG+5+luBCmo0B5gIhAM+hzLSi1pwwmQCMgrG/YyU3k1jcx87tYeWb4ytP7K/K","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149929,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeY/1CRA9TVsSAnZWagAAvd0P/19NpzyoscQby5OHkTyx\naZzaNO84AbIK+Bvy8j1ze2vkfY33PCCVs8taqyOtURxXf8kvimLLV8WJXWc7\nlsPBfi7Q1YnNH5gQTRDJMgLVFjXdphTZY0nGwrUVoxBb+xE6nk0SiKlSjhfQ\nHZA+iz4WSdfD0E103DOgcFbYDbQw8kViaXCqtaLiOmHjGErPEJOkostVk1d9\n/shTk12lpspH/mAHQgBgFbX2gl28dR1FdjR2P55K13QGhqwtEycyS0F2/ICt\nTsg6vTFAygOpTwvoPvGDUm9O2/5gvZ626wk28OAGvWFYYeKHLQQZBhO3v+2U\njB2x8r/ojqCk1IV9FHR/aHy5Zrug/UjHRCffEyWHQ4RU1CbXW1WXfMgvP78l\nAcUw5WnxuztwjPdhE/Pc6BhXo0DoehQb9jwKWB021x07zxdmC/5AZQ/FKmst\nIYEQfHUQ6Shs5cYKnlni2qDAFfYfPmq2rW5kOJ4AcJY9VNmVkf05aKy+GaUJ\neIZw6vPnSjf2eiLIDRiOdZt+YQcpAq4G+iYUoOpLsulzm0n1iHdbBJNYbfzu\nET0kwajSeA/rbaxk3KBSJcOV4r0Swc8kNsvpcE80OTllPbGwSwx0cHvzqcqY\na2xXvqHoNkFmjnbexx9aKJBQJhxdZfw6Xg68U46lwtXj3vZMAvTbthUy1ffM\nBzSl\r\n=6sqN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c019c62aaea50447a6bcb4e603a358bbd9ab5751","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.101"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.12-renovate-non-major-c019c62aaea50447a6bcb4e603a358bbd9ab5751_1618579445227_0.08436837118780938","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.12":{"name":"@balena/jellyfish-sync","version":"6.0.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f1b1cb5a7ba3c112cd46bc24572ce39eeba53d4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.12.tgz","fileCount":24,"integrity":"sha512-4ZxEUXdq9lCHuE7JeMIOk2IWzfNokDIRlvCS09vAfGZO22fhzqfEGQXBUgdulIDM1X1+FAy5mKHmpOIHu8r+QQ==","signatures":[{"sig":"MEQCIHeUzwzBAJfC0HREEXTloXxFh5hIni3baPtc2FhJk97AAiBrsK+sFXugvkmr9laYcv4b0dKhQAerq5ji3MtYxiiYVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149869,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeZEqCRA9TVsSAnZWagAAlyEP/RWzYqgaZJfKGxLRyMcp\npvX/3QJzKwQRUoKJeA14grLmywxLSpBdq4qFbwrABxrqCJoa+1W2gHMn52Mo\ni8HrbSw+hR3ufCCntmRY1NJ9HXb5oM86si/5SoIBLjMCW52Q+cVds+A6AliI\n35Nq2/0j5wi+e/k3p5+YQZyvt/5EG7M8wvNVWTBV3q8TtupzA6vdvPE4Bbdx\nVMOiU42Xcgk4OJXo6n4vKhpFcf4762TSISXzT+mjOsSmH4YpiaGP5s+MXNHp\nF10VeyQ1grSvIKiHebVguvGhkLAkAP6Gw0+r07GFROZZY3eed6kFGdbJ2Ag1\nL9rCUB1YnbC/oukRB5VUUGs09kFqyvqDOP8dX9W/LogHBhg3uHh2hFn6IMJD\nCP6Sq8kec4nEuFfpPt0zjkXjkGgSqjmhF+tCAxUl44fJjSAJTEJYssMhcjFG\ntqLx3l2/2VjQ/CCrZf+Yx2PE2Df/aEikhQWqOd2PK4DfwO3bJ89PHrPuuNIX\nVok7A/IDSHRzsSbhqQ7toicG5H+CchW1o5UL6FJUmeWdWFXiJhTfviKtffC8\nbSOL9bERvd06tzlN4LMbNfp0TFLsFMQbOAQ5YsK0yiJkXipUlyIecw9LqSD0\n9X1SE4vpAVTPb9S5s4c2YZbCkudxXHrxsxqC4htl1x/ZraKoWaEGcPcWVVZD\ngqCY\r\n=28cv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"624b8f13834112808c87e8c9b014b9437eaef5f9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.101"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.12_1618579753700_0.6800702420417062","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.13-renovate-sinon-10-x-f530624859b3f8742679e34c7aa86d4119e91742":{"name":"@balena/jellyfish-sync","version":"6.0.13-renovate-sinon-10-x-f530624859b3f8742679e34c7aa86d4119e91742","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.13-renovate-sinon-10-x-f530624859b3f8742679e34c7aa86d4119e91742","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1c15cf14294a6f71e5fdd718596da424a652461","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.13-renovate-sinon-10-x-f530624859b3f8742679e34c7aa86d4119e91742.tgz","fileCount":24,"integrity":"sha512-U924rgC7ybMkM0oF6sbDqkbZeYzfahfxiPHZGz6rI3q5QsMIDdFhJfu8wMYZ9Z7YQmEptOHtPQzwEB0dNdhOAw==","signatures":[{"sig":"MEQCIE2T+0tMtFndqNXJ8crciYXxTxb2TzRmMbCUxMKGsI46AiBY5ZSA4LkQ2jXJyGARyXOcErTbapW9Tj8ViKg2+twhrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeZKqCRA9TVsSAnZWagAA3ncP/0QuREjZnrX4HO/c3DsI\nH/R0sW3fmB/W4EEeL3RHInCy5yRPbx0CEEUWWuMh+uzP4LDxC8UfIdeXldX+\nYoCQuCrXDFT1seDNZlw0RxM6WpiYHB4F/aFN10o1l2xvBzii/rgZnk7zvpKy\nUIKgOMYzWPl7oneVuXLTkZq7/dT7H5JcNBgKoSnQTRFPT5jpKpJHsFnnfF/N\nROWSq9HFKUlcf0V7tzgbHAYowCtKmGXexpELv0pq/959ET41QRRaB9fHFyR8\nTPRm87PViGb8sasflBtFp1ZZFTDdESdzPRfuIzMGRPpKdZmIALOHXqhLXXnQ\nEF8BUDgmb/E+ukMdUvB2yKpYFXc18opC0CeNF2HlJZ9fWwpuPmMbGwtyc8v8\nXPuW8RHCSd1zLVCea7il7ZDv3m8c2wG/iFq9KCMFOiUoiEriuoNn7OP7RLpf\nkJOds/f4oG7kWbtH0YX7A6/9IDco2gmlR38PCmnekJKQZVqhWL/2z6+E296H\nRoSB8j8dcIzI0l/vzMgVdtdPnIGVwzGRjh1pWVId3b3xK0/WqTAT/Edk3+9t\nr4ejxkZ6jwb+SwRSbI3QB2bMTviGq965Juc5MhMcE9QmBH/6YZivaUCnmhll\nfq2fF4B0z62QYeBPgjOLqoKANvY9/UsTn2TDSMKkMrnBBk+b9oXnIdxUDY6V\n2GSL\r\n=iCyS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f530624859b3f8742679e34c7aa86d4119e91742","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.101"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.13-renovate-sinon-10-x-f530624859b3f8742679e34c7aa86d4119e91742_1618580137757_0.21604654720185135","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.13-renovate-non-major-3668b187528e2b5931863aa403bdac141aaddcde":{"name":"@balena/jellyfish-sync","version":"6.0.13-renovate-non-major-3668b187528e2b5931863aa403bdac141aaddcde","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.13-renovate-non-major-3668b187528e2b5931863aa403bdac141aaddcde","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2450ea9e4e39d57f50dd36230bb93a60f3bd47be","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.13-renovate-non-major-3668b187528e2b5931863aa403bdac141aaddcde.tgz","fileCount":24,"integrity":"sha512-npqwjkYNENWbMo61GkZePSrZIW8a+shZNfovRsmR5iRhdMG0ehuJyBxozqG/NMt5SowuCLav6nLFfZ52VHx0Rw==","signatures":[{"sig":"MEUCIQCqhBMK05iuUH8UDtG1HXJtvm0IJQO309sQVj4wzt9ZpgIgXkoijLkVZ4ZYTAA4omQNtweypHTt4l/HqA7WkgkQjvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgebKjCRA9TVsSAnZWagAAfqEQAKMEolawG0o9yn5VJnJV\n5EgFRm48vTdDRket+7JCy/iMExkwMPFfEYF9uZOUS2Ah6xmrIJVs7FZ++MFM\n6f/Dvd7ebuHKYjSesWbSUJVFSLz68PhH5n+rZksfA7U/XsBkHzJATteNW9gj\n8YzpNR5LeLSTQ/gOWfWLRWDWou3209u2/fMbBwv+SWqzi1Bry8/9p+objYQ0\nAFMfmzjkeLo3z8RbhOwkLJNPfibUhCMLwyWQki76k0zPqcE226fnpvrm+D1x\naz/9dJLZLVv9kBHUAtkwyDb4+MpvbglV9k3XgbXAGcqapenL5catJEz14Jj6\nsr28k8Unqc/hwd8yXUTrmNUP/L76lxhuuj9+T9npeK+bKeFZTOx1VpYkH4Rf\n3jFCrGop/7WW/IbLasyoszKfa7jiiiKNr9EatiGDfw9gdz93+SpSYAj/t54M\njAKIJvXlEkK7sXiPZY1RG7fSoIPyhX+Tmrq7RFNI+ozsfGJEzey/KpKXSZ4t\n0n5njfUINgZ0LtPeP7o0yTUq/M8jazOQv1H/UA6NiHjExVsoce5RMtu4fjc4\nW+tK55ZiIhCre9nbGX1wdAaaUUjHP38VNzqwQ0mYhLeNKD7IVhHw6qnUZZby\nzWtQvohfsKq2tRpnDNqu5VbamW9N2vJXKDPYaMnt2IYDJ7raac4Kt+9jPij7\nfpIO\r\n=sHqD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3668b187528e2b5931863aa403bdac141aaddcde","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.13-renovate-non-major-3668b187528e2b5931863aa403bdac141aaddcde_1618588323334_0.9000781931709889","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.13":{"name":"@balena/jellyfish-sync","version":"6.0.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a8bf54c5726729bd2542eda22f045dcc5fd55e4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.13.tgz","fileCount":24,"integrity":"sha512-IZi7r/Sv5/i1qr9ZWfyUz489s+LDYGfdJV4siRpiINHiimrC7f/MJe+SGXBkDepQRqB5MlE9GkMucZM70J/zxg==","signatures":[{"sig":"MEYCIQCHG49CJgtup/yOys5RgA1u9D5k+5NaRPKU1UIpXttC3gIhAK8Y6UR5zr8TreRjHddawyCsSwzJhgwBQ79vm0euGNk8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgebOGCRA9TVsSAnZWagAAlzcQAIMHUcSDwHAg2+PVvVuA\nlWwoS2UKLvPnKjbgzyyExh3pAoEcqcCOJz7NR4Cm7M7frBwUM+8L17b+1fc+\nONQru9cHCK7xHiJKSIhy4ozqZiMwV40LblD+MdXwjUqAFzeaUe0jcArLNGj2\nuapUn+GbEHMYaorrhHOsipCEmfakGBLE2HRPAvq95A5R924j5nXwvJtBvqVu\nNMNaErfOlnfvWvVb3OJo2L1xB2caLZo4SX5hVssvv0KYj+v9H4Hzhw/PPWWi\nNEx2Cmdu8ND744iLyXOTwxpqNMgr/H0UUf28L+yiJnwdkgj31fkAmW6km7ZY\n1qwznVHHmnWrY0fcZ9COnJAq+9M7DRuA+5uwvvgSZhw7zAxANV6sGZKoI3rD\nfSAFSSAWJCnh5v19Ot+NuBi76uX/Q5pCSVgez/QLP0K5qmbh8VLHXBv03yBX\n+mBAz8jOoM4FsZWjxx2aMRYwTSwQbQazYAok0HSz5+JbuIto8tCD2lG5ZipV\npKWiv8Cs4piz5Xu+gRazoFLPJx0a3WEXFrexj7GBW19J3HujuplEctNUuIIU\nmZBs1IbDSEPcSNk2f69ALqc6Uu7h4VX9ukly3FE6zcv+qWS9RDh7vj7uxPry\npaOxSJnfPdVuF8IO/XGkxU8jnam8lyr0euJ6fJMEA/sUJLeTq8CRU0wuSi58\nbSGZ\r\n=IBjz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19448c4a828fad469c542446a89de7d9622c4313","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.13_1618588549675_0.8838121675308999","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.13-renovate-sinon-10-x-8b50577116dff1c4185e9a0cdb78fe5151477b47":{"name":"@balena/jellyfish-sync","version":"6.0.13-renovate-sinon-10-x-8b50577116dff1c4185e9a0cdb78fe5151477b47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.13-renovate-sinon-10-x-8b50577116dff1c4185e9a0cdb78fe5151477b47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63678fcbffc7a2a45c491cd27aee0353a3c4f72b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.13-renovate-sinon-10-x-8b50577116dff1c4185e9a0cdb78fe5151477b47.tgz","fileCount":24,"integrity":"sha512-INfK5TWUZiaxwikMJfUuj5pgLKBOzboCScSxVyvso5ttGGkplEnFUDhaRHTA7yhI+s27oGi+BXNFRJOps78nTw==","signatures":[{"sig":"MEUCIFcA2qxqg0uzgOZVTYD4npS+gT2o1snBNr0DmkykHTdhAiEAyXqNfzD+a+deQCLq90BRLdZH4GoJ9vpRR/BMQnuFMBw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150058,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgebRNCRA9TVsSAnZWagAAjdQP/jpoffT9Q8Up/iNo2BW0\n28+X29p6AT1sqry7twm5iMjthUvwb1KfNXkeHWxjiuFAWooNdE7LaxPB4e4H\nmGDfj3F+GoB3wvHn7gipdIT1SNjyffktkUxBMtvgmCSDv8Q18EtzJdRGy+fM\nHKhRN73rYFV+H97+/+YahtfA54EPNpSQ1l1TLrhq45rxsAK+fXhn4mifH5q3\n9No73RA6YKgDPjs6/VOIB/rETeC5lp+ktaoEklSyQTr1mPclXDq9wts8r/ae\nPKg91jKQaIBaJywBoZDdaxTocD8e6zUU7pwzwXGr3tL9EExafo1Zcg1EiMYI\nW8NKYebqsuHghY9gqz+4LW0fItCWAKqoSEd2PKpix6G2R9HFa60hhjHd9n/g\nx4g78KVIFU91yUe6lTZ1W6TGYKMUx57PyYUXz8bZuplFsURfkBVivTgdiN9D\n6lmOgILaCX9bX28dJ+DNc6tbOEzuFFz/8lR0T0uVf0GmyhsGDnt8eixse/RO\nVkU0DIySicdpqpNnjrnBkPVj+RzsGF7waolDq+nvtlBwijEAOBtPnswsWKMd\ndMtDDez3PZqLpe+CxK7lVHtVnV3uMOmWq2y/fQTet9vVKKjHBjE4jisgOrpK\nnxPBg+fB+LYq62vrcyTyw+zeOlsVMYGxnfajpI/5pgVA5sw2trK2tetAynKQ\nce94\r\n=OH+I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8b50577116dff1c4185e9a0cdb78fe5151477b47","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.13-renovate-sinon-10-x-8b50577116dff1c4185e9a0cdb78fe5151477b47_1618588749284_0.35687836362188907","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.14-renovate-sinon-10-x-2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18":{"name":"@balena/jellyfish-sync","version":"6.0.14-renovate-sinon-10-x-2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.14-renovate-sinon-10-x-2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd760dac0e69a78fd843c070a726b5cfdb51f41a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.14-renovate-sinon-10-x-2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18.tgz","fileCount":24,"integrity":"sha512-ojbw7M6gblTlaMfdhPy04OejtYEqPopIkV8WP3Wzpsze7I9iwpY8QDXGM/G1KUZSscc/uRrzx/jZGF8qa9fT+Q==","signatures":[{"sig":"MEUCIQDq0b9awPtVSNb2l75E4MyuyH5yrXVP+jZKLq3iBp7B8wIgZPaTvOPYTMlwEXFkKdHM+lBZj19k29GKVUrjTUXeESs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgebTqCRA9TVsSAnZWagAAgTUP/3VGHPHO3mmHpaLGKmso\nYMWOyy3+9N21X8N90d7dVpBpWQDfCgc7nJaPbVSR9LsxyMUUy/yWN8fgiWB2\n5HMeLqEq+3RNqbuH/xxOGGlqI3b/Xhk3e15vOf/u94Wco4/5yHdurbF9oem2\np8sC/cPR7Y10Oe92DsIddNsdiiVEE3eODiN9RK8vu4I3Hrki4HrvmchNABci\ns2Ss/DGcZbGqmo0lM634Fyd6I+t0IRdihDwaC6xkxWPXKjr+vItnpPQPNgBh\nuzy0Mavu8hyb8CPAgH46sBxbXk4yAwEU2Phhs2A6kH3Lr+jN5Z5rEfIxbYJ9\n4aHosxoB4kF9u1AnCqQHckHf1MF4tVFPykyo+KNaLNzGPOjQ3MarADE0TBRi\nmLV3uracWjUrGcm9l1LjFBBUypdqsrP4ikXEaKXIAdR02LdAlmerzaR3Wi8P\n3q4Ut2sawh0mBniahRwCx95MRqUNYJRW5db/QsA4PEupOmdCRmHhOOLVFJzS\nj8GPrXiDZIpZ6ryn6hgIwT0aGS80jr+POColZLfzvJEvY5JsarPnGauiwNdo\n0nVOl9FxOreCpDNUaj5Us76p5cR6604MFDsXFXxg3BNAe9QdFJEe6qsfGtQH\nuIqumF8iD1lOnZQ2bp3mR2nPzPDuXMP3spHCDV3FvQqCVaCTMyBcd/BpxtXS\nrheW\r\n=5XRF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.14-renovate-sinon-10-x-2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18_1618588906288_0.1953721430241906","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.14-fix-metrics-import-0775f707f478f3d995eaac9d00cfaf37e86c88e9":{"name":"@balena/jellyfish-sync","version":"6.0.14-fix-metrics-import-0775f707f478f3d995eaac9d00cfaf37e86c88e9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.14-fix-metrics-import-0775f707f478f3d995eaac9d00cfaf37e86c88e9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e60cda6c5fbe221b97663898f27b04d1fbbf07f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.14-fix-metrics-import-0775f707f478f3d995eaac9d00cfaf37e86c88e9.tgz","fileCount":24,"integrity":"sha512-JMuG9JIvjnyzGKkeEIvOTFI21pkKn9dD7UtwgpQ77Z14l/eO78IQ/t/bYg52UJlOh0oWo1W+9No/3axz1aSulA==","signatures":[{"sig":"MEUCIFYfSQ0siNqMFW1KadgUMne+g7cpIF2LVUUM3V+ix5haAiEAn/7XKbwb8GK5kUJmQjitibBy2Ynx1w8FRiN+uWqGPCI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgebwjCRA9TVsSAnZWagAAMzoQAJcn6oO+KpuNKMX/vaH0\nlT9hsqeGv9Jw7ePpbKGKvfdWYrqUAwzdp+aN1U/iF34WC9NeSbx/sJl6gOqI\nfJTyWXilgyjoO4g2+KjZ8PIfvhF4yMBZXUUHkrJNhZaqOgHZi5tdj+WB8mEq\nDt/2n0ohaOyqIiKO3G1dme6O4975JZNubGXjra0hZiNoYf18d6LAPiSIWve2\nH0JgLdPWS0CFXgPU2dbD8WMIMe3KRphrjeTW9ALEe6AAjPEPNQLB9mgj8/2i\n0U+T1ppRlpuw534COElLKooYY+hag08Q0S80A3IkgyHRi3oDjkIGnH6zJ3H8\nHgMG7SaZoREoqIH1OGkgQE0GjYcK0wbAeoUkAfb4slN3W7NtxcgSwWCqaLXz\nR8D8YyNCX/QDcUsWbVzwGfSVGeaYxW3/WLaB97gUJqC/6zUFZ+2/IRWxftSI\nprlpuvy4FAHG1N0UZuJJWqasaQqkhIWFVeglne3ki8sC+LFeVFJkswayFn4Z\nFkO7h8rea+ts0+cSMtZBSCuf7xNhstxYq0Mb2fT8E5OmQtCuxWbCaJwdSSnt\nea42XGdm7ybVEtJK4sZrA8e2+qkpDjeqlQgmYfwSYg3XDrUWCCiCPtsKOoXE\njks72Ng9g1XxUU7duV7C740qbKa6lscGBcyyygdCouvJOUwF8lm8Y4ygHlEv\n+JnB\r\n=tv+X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0775f707f478f3d995eaac9d00cfaf37e86c88e9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.14-fix-metrics-import-0775f707f478f3d995eaac9d00cfaf37e86c88e9_1618590755155_0.19872024768889962","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.14-fix-metrics-import-a7379c2ea3fb1d2344b1319744ae1b1677daa42b":{"name":"@balena/jellyfish-sync","version":"6.0.14-fix-metrics-import-a7379c2ea3fb1d2344b1319744ae1b1677daa42b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.14-fix-metrics-import-a7379c2ea3fb1d2344b1319744ae1b1677daa42b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4093f716785e3bc5532d1ebdf64c2a92075d88e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.14-fix-metrics-import-a7379c2ea3fb1d2344b1319744ae1b1677daa42b.tgz","fileCount":24,"integrity":"sha512-O86Tsaq4ILHXFQ6nob+/ayVtJ0tY1NgbdYz/rVi6vCUA6+L8k9ihuJx4pkk78QqvwB+SYEhEvKFgIZZIodW3DQ==","signatures":[{"sig":"MEUCIQCVeFh1saWjU5INjmsgy0X0V/Q1aSi8WmECNlDcR1+U9wIgFqUCGFu2iidcOOOB67cWlkxIf5uYag8b4KQnmv6lRLM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedSvCRA9TVsSAnZWagAAcyUP/RfJdwBU0gx0UZTsMG2b\nskY1mV/zx4sc8VXGkXECAv92NWJS057zBUFVF00eTkWshdgGQvci5UClycCg\nj0EYvsHYMP2wQaO/ygHPEDVKchyMGI3oSYO5sB0zHdrPb5NVi47bsqFHV4yF\nvgrXyVJQJ6d3xRQ9OOfRgzfsdfGn4Mw4XaLDHDS35sYjxtEQnYXp1F/tXPvj\nFa2OMeeEd+BJzAauZnFtqGs0m3e2Sgr1aYO0PpGk7dPrfm2/JeN+9DvQ+pjB\nwAL5s/1LGD+EdJ5ZhT+Q/6ajl2Z194XjtHtc0cHZF/78fpAohBLfluAuXqOl\nTpl56Y+pBy+IRNlJ13f0XqQoDON2T/iva2mR3gutx46O1rDZclb2d0MpFa7N\ndlyVY+CraFSnbJmoxKnDr/NsmfcMjP42XDQP98e28KGtzOB+l9w1ODPByoYX\nfOH1JygADBmsnZLzKtOKrqpRxwJzK4779QvFVqzhpIWOoQiaYBGGCmbyscoG\nummdIOszSzJdg6refhbBDpNzfPC7tuymlw2PCn0QVLr5rK8Ya0Os06iZQyWS\nla68Ix0g+P9lL/7kKX9XlNYCouT4GWE/rKJxHqqJRiCOBiGcaGtUKc1Rd6xn\n77iHFcrk2Rw8JGuTnHtZsZnaZP7eqzGV165u5FA8k8qRorf2xOjvEIwZ4x6l\nt0aU\r\n=cvFt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a7379c2ea3fb1d2344b1319744ae1b1677daa42b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.14-fix-metrics-import-a7379c2ea3fb1d2344b1319744ae1b1677daa42b_1618597038485_0.33366136308527583","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.14-renovate-non-major-3fb7bb94f0c33f8645e190228a96c80753e3f83f":{"name":"@balena/jellyfish-sync","version":"6.0.14-renovate-non-major-3fb7bb94f0c33f8645e190228a96c80753e3f83f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.14-renovate-non-major-3fb7bb94f0c33f8645e190228a96c80753e3f83f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bcdc1cbb778cbe4e393cbd7beb7a578fe3aea7c4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.14-renovate-non-major-3fb7bb94f0c33f8645e190228a96c80753e3f83f.tgz","fileCount":24,"integrity":"sha512-kmE3TV/W/cyhFlIXBIU1fcfVv/4aJacYuMD3tO8EhT6Cg1fmpHLqlPG0MRfjdsucQIL/DWN9YOPlNAxymA44Ug==","signatures":[{"sig":"MEYCIQC5GS0ZqWDQ2o/AustjI1ZEMTVMfojmMKAesOxqIzX2eQIhAKkVP+o18nOe0nwY8DIKItjzhzu5d2CIyzYI4yRYChN2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150097,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedhACRA9TVsSAnZWagAAJFYP/1UCOZWBgNlGFhovGPp9\nMFkHNcje1vXnsIX9Nl/SywSHmrw6vjcUPLa2OQ+moiSYoUTxFo/1ZPh+jrTF\n69Jrq30Zq35fsRZhcltExXQFfW5F0lZtb97k8D6gO+U1JsZpAiW8SPgugu6t\nOM4zQmTqa41HtumGfNZWpG90ZGbW6PUO9Nkt05alOCj0ocC5vDiZH/dLj039\nXF/VwEPlr5h3bNC6zs9DItS4R6jsdwAxZLPQbHQrbhpGSAGCzRzaFXhSONPW\nrQFJj3QAbvYR0QjsWnzkw4IM1SkLQxrAlxtPGAY5L3uCauS4DBJbzZfcNNvZ\ns64onM9e9VE3JSV/cAfkuukSUaluxpdWBV/bGSvXLBE1sf1W33Jt+NGNlCf6\noXDPSMsoDlnUIxnQCrgXcUiyTexcKgDb7sTaOOWKzYNVa5FDpMGWz4frWVJ/\nNbgTSKhTp5aFbldCR58J2vKdeTf4+TX34xO+RVbbUPgr20QXsmYh2UTk8EBn\nzYyG6NHhFBJd5TuQrrZ4Gu+OyM/3xGTMTH6dt4Zql0nxxohCak3kZRjkgL1X\nqkMDGS1XyaoRfPf9D8pnq+EveZmfRrd1ad5dQIJgtvNP8F0+TPJm6PfdND4c\ngNKymrMw6m6Swh/BDXbhlGgeoWp8qYCg0sHrgtCjw70+LrtNEnS+oQ1CV1Uf\nn4JD\r\n=7NsW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3fb7bb94f0c33f8645e190228a96c80753e3f83f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.14-renovate-non-major-3fb7bb94f0c33f8645e190228a96c80753e3f83f_1618597952354_0.5721772065091144","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.14":{"name":"@balena/jellyfish-sync","version":"6.0.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8bed1710c224a540ace99d5c40517591cfed0930","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.14.tgz","fileCount":24,"integrity":"sha512-9mm2IBGOwlepk96uXlaS/6qNlSOl1+fx8N7Hfiv0oHA1Zy95UvsSc/uXhJUopiDqibaQehJmqF0BPB2HcGb10w==","signatures":[{"sig":"MEUCIQDtkTMv8sTa+yt5C+ev+z3MhK4XlZ42RCXvvd7rP+vctQIgNLRglYDthPIs2YCMnjAnG7g6obwy2Lz8HTLn7dqm8dc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedknCRA9TVsSAnZWagAAuVMP/iEPfRAsnMEjPb1+GkVG\ngc3Spm2L/CTOYmNwMbyE5E5K/QZuoPbqbUn64DPsJoP8UDDp5Knv44OiXTxi\n/8bIy0tTOb+qMo1g+TwqI/arH71mdONdMEoGD9PJlG9SeD1rMT/sClmo8nDJ\nGx0Px+/bxLd4o20K28vxwJv0csd+tTfIQHhQDCIsgRBlbAjPGWU/QcVxOLh4\nwZUYbFaaKzhhmja7sBc+IplXh5FOqZB9yp2fqaFd+gsy2H5y+aoR8hGdErh7\n+KbrumqUA6eU2NRc9quBhnuxfaOQr9QbuTnQ5ovgP15ZZqDEnXlWK7gF9rM9\npPLHWftNjGO8/IrCQLVTpXKWOk8KuRSuo6ptoIEH/iGMqJBTqBHqsGMHgITo\neX1SyY8ukmPmZLxgxB7uSTtqrLQ2xg8Bc3MTvu4q6hrrdeh5m4pvZE3VN1Fi\nvGj7VX0WhLxpTH2sKO0/BNDWDcUiBYJrMAZoC9CsNJCG9o0mgkyQv4GE4NKM\njEcbXNt+O6lwBoCXMpPduWQjRE5y0TUhTubRxjd548FHtSXh49hglO5mFXtG\nUCQFxEJExmGvYrsA79OOh3ZpCmNFcfXUDd7Kd/RdY1/72vswbJHhcg8NKHYm\n61Fs2mXK0IBTX8axJMi5ekPn3J+QEYlBucXPgdanSA+0MIR/5J1DSTy6CLSU\nKIsm\r\n=7ncT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3693c2579000ce983d92762e9bc63b404af55573","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.14_1618598182772_0.5759734679835464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.15-renovate-non-major-5f6b2bc2739f2965d3445b3ac26fe2e0772bf035":{"name":"@balena/jellyfish-sync","version":"6.0.15-renovate-non-major-5f6b2bc2739f2965d3445b3ac26fe2e0772bf035","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.15-renovate-non-major-5f6b2bc2739f2965d3445b3ac26fe2e0772bf035","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"40a1553bda5d2c9af0dd1a9af50a7691d0bb5575","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.15-renovate-non-major-5f6b2bc2739f2965d3445b3ac26fe2e0772bf035.tgz","fileCount":24,"integrity":"sha512-B2NICCU13WEA4jLh4dxvxjw4SYjM1LYCRApLHAmC4vO/OhN5rPU5hgTuvh9iB5KXp7AyaNJrdkFd+cmSG+f48Q==","signatures":[{"sig":"MEYCIQCfGIMalrW8zCbLCbM4vbleHfXDX0hqjKW3Xusa81u1vwIhAK6air29TKEdJpoXAdGBUltjhC5f8hkKe8wrks8P/MtE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedpVCRA9TVsSAnZWagAA0/MP/1LGEZYZvSdbQRTJoHZ3\na9gtTb3gs882kPgfY1NJUWmM06D8mJNj1gKrFn26osuaPGZ17T5oG5tvdAi/\n3S7wfw/kxDlUypMyGInDjdsvO0CYGQQ1tejdJf6LtEsLAEPB2frywX5IXHF3\nIr4bg6qiHkTDlBCQJjvCvi6Tb5ilwFXhklCUZe/r7L2y+xz45COWpzJsUZ2l\nMQipKl10Vy06khmy2v+D48CxAKANyzqzZksqdVX1thMc2L4wmwOZ7nUtkfKE\nPQPpE7sjn3F/ebbLfcyRoOR08GMKpbWEygELRM+A4MNTijtrLQwui0WBRDbK\n4+PkApWC2nIznvV0wgAriSoHyWZKIu9WXkfxoS+eI70z98BdKD/5esfWrqxG\n/LIk3J7tO40zLzD5QeO5Trv4pXYp+b5nkNmDG4jTL/n2nNxRI2uaZGRyEkeB\n3E8OhQ19MmP3Hda/tGHdmZcmPkzGkuPiQD214Pww1i99JnxoxXxibOkGBWvt\ndDL8HxxgG2lp/x1QUhE4ZBf04otyOCKSZDSwQiU7TLvF3lcD4DhsVzIV4wjX\nDcOliDNDgcw4HFLu6PVQ+uhn7VlhqgS41iZ/hJnvSFaBKz54e9OK6C2v+Wjl\n6fp3uU1MHhF3hifwc8CqETxPHVrIF8n3tXC10t1QlsNp7rnHjrlnSG3f3QAD\nxE9l\r\n=lVtT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5f6b2bc2739f2965d3445b3ac26fe2e0772bf035","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.15-renovate-non-major-5f6b2bc2739f2965d3445b3ac26fe2e0772bf035_1618598485040_0.4390571399093779","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.15-renovate-sinon-10-x-1f21b4757b863fcc87d479077eab42099e98b6f9":{"name":"@balena/jellyfish-sync","version":"6.0.15-renovate-sinon-10-x-1f21b4757b863fcc87d479077eab42099e98b6f9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.15-renovate-sinon-10-x-1f21b4757b863fcc87d479077eab42099e98b6f9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"74372f221a1e966854a9e5a51d6e12d62bbf0124","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.15-renovate-sinon-10-x-1f21b4757b863fcc87d479077eab42099e98b6f9.tgz","fileCount":24,"integrity":"sha512-W0/hhBV2JdbW1ckOA9M4ovlJ6R6WDRh12CkKANTtqBlFiPXYn9/hj+Q6NIv9fFcagH2BQUPIZ4wsTp+z8KCh0g==","signatures":[{"sig":"MEYCIQDW5/zG5AKaSZjBTwjBql3BVmP52BZdPrTdZ7fwX74jHwIhAP5dxgMZgOwYW6m8MvIDqQGZjY8Ty6mcYZuAQ1r8hSfW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedp4CRA9TVsSAnZWagAA02QP/juMRT+jA7SBT2rQzLuO\nnNS2EYEYcr60dBo+40m1C5S0ABJP4NRAe/DPxLuNDTa1AT0x0q0qCtIYyfY4\nIWcYuM5xOwluU3GQ1xY9KpOEwKD3mFtenPAhEMUKey6MsdzZAllpNTTEoMWH\nx/OeZBFPduvxKzHCtzseZqJkwPg0MOuCy6ese3yfmx5ZbK4fZamGH62GkFmI\nu2Pacle8otKyoTlrJwuaXB2CRY29tVUFoJ3OzJIH36gwGjdCtbHO6FQ92dEW\nEmIfAo9Efm0LtJ7VT8/mC3vnI/lT1mUPBq7BDozuQBxdDCzmn65xpMlyvL0E\nqjvTeoJVuqe9kq9OrcpZgh/qkiC7sRaDLsZHGerDdHm47WjE2nOF7J+T7dno\n2zq2PCs9NFTKpMWXVDgWHEyFLTpL0rIJy7JnDTQlA/5yqXudvjP4QSZ7vrx6\nn/4lYmIDD4tZ9pX+odbIo7nbOVzFEXQtty5A/PTF6EUkbC8UESimmosfbB2F\nNIcJ9C9xAeO144MOIwVZAcNGqVoW11H7p6gR7Qiy/XQv0yqwvZXKY/NzXRKq\nvG9EZ1lHtuT55996L2+sPprAeYyyqIXzLmuDzfMRfatYmqiw5E1MvcpyDIGm\nNOrzX6RhXll5DHVPGQUrCxG6rOxNExvCJCCaULriBCHuv36/sf+MyZ9+6981\n89UZ\r\n=jWcJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1f21b4757b863fcc87d479077eab42099e98b6f9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.102"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.15-renovate-sinon-10-x-1f21b4757b863fcc87d479077eab42099e98b6f9_1618598519734_0.07846098597510687","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.15":{"name":"@balena/jellyfish-sync","version":"6.0.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ef13457bbb290b48a9863f02f6c8db07dd5d897","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.15.tgz","fileCount":24,"integrity":"sha512-OKz7li0NGqKYBLldpG3CqVIKcy97jgSq4pGFnZB0h98gJhztfKxPOd2qiPUwgqoI10OZtQxPgV1j5Et5LJ0TIw==","signatures":[{"sig":"MEUCIQCP8qvNwiBwSZpv9bp1JGmN5Na5yEe9/pTI/LFsSFaVpwIgA8++Ulb79z82vTiuZmMzrJnWeoRKHLJZHVSe3vuS1Mc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedtzCRA9TVsSAnZWagAAzVoP/Arb8YOlg2Q3um94StQy\neDAObA/97MMV+neqe2rFBYGE/dIJV6n7iETFduwtWk2dKzzCpg0c7t7KUdRE\nEh/3hi/8/8b2qDmuN1/VkgK9MsE+De7Rm5EcutXCGNJcjuF3Pfswpte2Rdk4\nfijCQx0X0bUM/y/hmDTwmTchtbDSCQD+bj5PNsdTEnlA5H5iskkSinQhti2U\nQc3pTIZQkE8UOaxiO9+PDXj4GfaV+QG+CHutHBp1VWsgT4I1CM5zRjgff6qP\nnxhbNQlLGhZzqawrCYYXnjDrKTN+juPNLX2ebGn/EL5UdgK68DKtMQd4fiPQ\nQUF7rVjWlUjGT5rp81KkK7T4kBKDhd7sElzvv1HDYwUTbXT+E8N06GgzQgyW\ne+pkvd4rZLfaqInfrCM6bAALxqRs1weHfVBeHl9BVAX63SHoKMr/dKdcFwKQ\nirpxveVrLAsacvco6VPOzRuMsRxYnLRmiigWPXo9ghgw3RDdNwh8aAX6XYzu\ndy6Ozpd0umuTF9+/HI7kKgoiv2W/qKZHYLIQKaJJo48oUSbH4uDCPqjv1Ag9\noxNgLR89872Du5E4/BTsUpE96sSsZ+PoV9BNODFCYiFH2LrETMHqKTIkDD01\nd7+K0BV0mxHMddbNc90axyC0B+s8X8tpZ0JyDZtiGkwG9WHxlnvRQevKpg5P\n1pIL\r\n=6xcL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ead962ee6894f032d69e93bb64bc2adad6df463c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.15_1618598770733_0.2442836107784072","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.15-renovate-sinon-10-x-0b50ff81dbbc38f77d0ff4fa407358077ef5e131":{"name":"@balena/jellyfish-sync","version":"6.0.15-renovate-sinon-10-x-0b50ff81dbbc38f77d0ff4fa407358077ef5e131","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.15-renovate-sinon-10-x-0b50ff81dbbc38f77d0ff4fa407358077ef5e131","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"579cc64129fc8c2d5104d06d3a67092e6d7efaf4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.15-renovate-sinon-10-x-0b50ff81dbbc38f77d0ff4fa407358077ef5e131.tgz","fileCount":24,"integrity":"sha512-vDOSW3UgeWi0OrWKozBGDLWF/Bz8fTAY2Tk8OlaAvL5JguyBtG2+ieE2zvwqCovnSihbb/BdvMLW2z55xb3V5w==","signatures":[{"sig":"MEUCIQCSf0QE7hqLZCDZcqdiGuXDsAgPVf3fvyz4UYt2o/bibgIgGCBjXlHrQtNRlJ13S7CBgLABH7ZOTHGPnxHCaZF6xEo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedxJCRA9TVsSAnZWagAAJ+IP/0L67ODyF4cjoU7CgSNo\nA5lvVe5v941eNXa1gZwxgrvlkye87rPrZYDHJyiPEIy71T0N+Km19QdV4fI9\nXLQzo6Z/cRyZvPFWfZi2ee9ubMMCvbPJxmOPRYlGETtwD2HGp5PMzpbnAYDB\nGqVEDszp4moDpK3owY+B825G9V4/wKGZSUsD3YMtuXfKAJE8Z2tYobldlMe6\nyTc4YIerHPM7mfVxiLRHMaesXphfiwbUXpDUXJpMGHzarArAcCGjaMnbaVmh\nlDoAoy02iTFgB1E8vUigIpIznFh46SJiUtFyOgHfgKHvo63G91xDwLZJxDv8\n/RrC7yuuvyQef/wPqVPPprj/S7nd/rimbcF3ALmOhYmFZ/Mx5vXLqUjtQGCW\nkW3u1HLfk3rTUIkTI4bj8P99QwFEYydIeqRT/ZcSGr4e5IOFk4sJA1n2rtkm\nMiX59NHKgPLX/mghvXOMpVz3bSKpX2nn8NBpGQFwruTZmUN2sHYY+S9F1Sh3\n1OzIp5cNVe8LLbbXFBMm9EQvKyRGiol9dol4dGNrsHd6GfPPoOh9vhurX+km\nicse016XLpllIu1vbfuGfNgooaCqp15CWSusLFon5LsaN9RaS9MoyFdrECuQ\nRjZh0fUZ6IKn6sVp5jhmGsaEOzvpHpdsEGAABeUq8bDuaN+u2/97awPRE0SR\nWzgf\r\n=Kkdo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0b50ff81dbbc38f77d0ff4fa407358077ef5e131","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.15-renovate-sinon-10-x-0b50ff81dbbc38f77d0ff4fa407358077ef5e131_1618598984879_0.3459528238312459","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.16-renovate-sinon-10-x-dee4cb180296d3499b044e2e55d545b8564c76cb":{"name":"@balena/jellyfish-sync","version":"6.0.16-renovate-sinon-10-x-dee4cb180296d3499b044e2e55d545b8564c76cb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.16-renovate-sinon-10-x-dee4cb180296d3499b044e2e55d545b8564c76cb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2cdcffe9d1c0d546d0ce7856f3a5316f78b45a69","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.16-renovate-sinon-10-x-dee4cb180296d3499b044e2e55d545b8564c76cb.tgz","fileCount":24,"integrity":"sha512-eVUsU5B3bTTwp6LfexquRI5yLX+FkYJV8hiJID6LvXk3LguHENblTiWVvm3PjQqiySydmXqMDdt/M3K1s2B2DA==","signatures":[{"sig":"MEQCIHGqKt3rA84RA7amnrdtODhct8flY7IuoxqzqzYiM14kAiA6ClPrI6XsVXwdxQAHvcjiMw8zeFK20Vpwk761MWnkZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgedz8CRA9TVsSAnZWagAAyqgQAJyH0E46QMt+0wsZ1VeQ\nAe0/rJvje83b+Yu1qq6gbGtRQI5Q1HE3o79sQ8xVrMsn9QN2Q8D1eE/waYyg\n/XHAp/A83hQ20k6dvulgF8ptwNr1XGmf8HhLHjt57PBOENhA065jV3MvAEBP\njznUmB+VncWeMOxyLthG4/jSNWvTU8OAm3gbSSFy7Jit1Rp4eNj/wTw8gA+x\nFbCBSsiN9SDS7hH5IlCpfiLui74hNFRBw4DwOCzXTM59WwKUzvzYoLniZDZj\nQXYNSFTKOpxaejYMohSg9nB2UX9Ynwsb90FP1HjyVyFb6wLNqQir9/9dzwNI\nrkQ+2EB58ADu1D1+BF5b6VEnKk5x2fhqfudnLKQZcb5cTuz1Ac1KhkF0fzqH\nFHAmI/0WjDl4uZwUtYmMQM5vwWDeaqcdAhIuXOWQ+IUmOjn2+d2Mq7vs/VzN\naW6DghOcx0SBKsN3JJd5S+GftcE1uFfJ8YSB8tQmS32uii/nP7ykhcij0DzF\n0lGjBlFkTz6TnC46cZM2s12BuScITpvJJmlQyi+eKE/K6kj6zUVfQdNlnuGy\nGEroJCQqIpFUHT42eoy4GDmqUMM3GcFpWieDvpsW9P7NKVKKgWnxzgK4JXZq\nbB4yquYiYh+5ARO3/ZDcO3Ghi/cbOsacwpxmsWqO1otKVmgeBJsT+q370KrC\nOvZU\r\n=67BU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dee4cb180296d3499b044e2e55d545b8564c76cb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.16-renovate-sinon-10-x-dee4cb180296d3499b044e2e55d545b8564c76cb_1618599164466_0.04746853017637531","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.16-fix-metrics-import-98617e61001269d0384741eb65eaefc4271dcecf":{"name":"@balena/jellyfish-sync","version":"6.0.16-fix-metrics-import-98617e61001269d0384741eb65eaefc4271dcecf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.16-fix-metrics-import-98617e61001269d0384741eb65eaefc4271dcecf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"510f4557c5f48aa28f883c6c96682bfeaa2aa50f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.16-fix-metrics-import-98617e61001269d0384741eb65eaefc4271dcecf.tgz","fileCount":24,"integrity":"sha512-LA9D6FSgYUubQ1EYDcx1tkIO0xQIVhQlQpQ9MYRT+/5AoRBBcVydcEpOTu9htpyYrRCpgNI57qtACmhscQ8G+A==","signatures":[{"sig":"MEUCIDJ8tB6PiHj0D3ZJ/dCKlIp3Ovsx/P9668OeKQ5xHb2eAiEAkanVOxdbXzXlF2oiHFc6nM9DNrbnw82LZwwD9fjCLFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeedcCRA9TVsSAnZWagAAGbAP/1TMRXAFN0vZ+hk68wrB\nxMJX+ijk91jlliJ8JHxWK0nGKFyIf31w1GVC3WC+9O1L5H5rH41wpS4IYHUB\naNVc1AZbVNruF87r2zoobawmufo+k7ZdTY1vmCPMd++k94Ti/V8Y2I2iF9Re\nqVb2WGJcJm8V6GI8e5YUDWAjq2qRaBrpxJewKgyc4Jk4+ApEfZjlXgaCuRQ1\n3rue2mWNJQH0HDtHqCOiWXCz2qhfim0W6agTfOneYiRa+npiIbfDCKkaFCpw\nweT58102q/ruSdjaap843UByzyAXumYVqaHwCF8kB+A07PtYmcu4zo2bQp63\nUaY3LKOClgplueO9ooZF59Kc+D9ACZ1AFJj2+Gaaaz5pEiyJ+7x1GdLG/wu/\nWWu0r9oqfB/bHk18thwQp3j8Nw0JceqIWeQBT6pdq0fOyfuilm7eSrotavlK\nGHtso9UiO3NZ9xckBrZejXOhGCiVdXmQjuZmJ64Q7u/5XLycTdw7Gt/vWRhJ\nYM5OEqqdMQkjkGW8cKPlrGYj0Q9RrLXGpD+oUngbDTIyE7VE5cdGQdpXQvel\nRTbtGDQ7ngslbBIco3kzRtTXnLdqNsiebAVUiQPmaZSsK+Q2CkYAF1ffa+do\nzbmJTJIBBmNmxUAbkbLk7HOhkbVpaP1Ko7coZO4wHUdhsHvofJHum0QDYoe+\nankT\r\n=GHn2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"98617e61001269d0384741eb65eaefc4271dcecf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.16-fix-metrics-import-98617e61001269d0384741eb65eaefc4271dcecf_1618601819693_0.781919647303758","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.16":{"name":"@balena/jellyfish-sync","version":"6.0.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ac29e4290e6d49e08321959b6cac57e0c7bf605","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.16.tgz","fileCount":24,"integrity":"sha512-Vj6uFHHEsuTWxjaJKGwAiOJpKDIT6HQhR10FOjFab/sutGQ9Q1GrSwQK6lAMffVP332+LZDKJc2kDKrPxm2ieA==","signatures":[{"sig":"MEUCIQCN7CTcGhA6FEhD/LKN5dKMEjXlUvZXsbaWzHfWoCKwsAIgKlK8ea1yIhUuIexd8CUCzBIUETW3+zmaA8yDzdK+t2s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":149944,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeegtCRA9TVsSAnZWagAA6z4P+QEh9G/KeDrn+B7CO7qu\narCm3cp6AlsTveZJTZAkENO5HJqQwswX0Kb4SzXJ74nxtu6pWZktYMlYJ8y5\ny16SXUhIxZ/eHvjfXYFBIM5cXOuncev+RcXtLOXbLxL2MexjC+vQr5HCHNqC\nHYYUuGh6spQmXwf6Odt+PAqE6BU3X1sEcVkwIGfYpPHQJDbgeQAZqPsyjQqI\n0EUVjWVrYdYQdDucf192pggK2Zi/hzWQioHB9asjEoRsvujO1ia0Lk+p6x/u\nCpa5PXOL8pK+e7U7tUIAEiLckXN9M4bT/eVWNuRXHRLh/3dSbgZOCG7Ewsfo\ni3rPw4d7itOfpWB6DSMg8ke61RDJtgUCG+pdfsR3EBAbYxkGQJWBaY7LjI7e\n8KDltnUNocams7OLweikkSnRn1xsVlPX3j3url9V8a2Ho+6X6h6Bkid/rWp/\nbnpd+ss6Ggf1G+z7a5K+BWTV7sSIfPD6jW2bmX4OdqmsvCrV0zKineG0nGjX\nMKAeLfVweT02gXr3CYF7YtJxKNEuToUfuhcK/kyMcSPpVpO9kDKnUoIRVz9G\nmjgob24IYxF5XKDrjcua7ksN4lPP4q6WMX09x+dGCAuJBG6WBsBaaaQhSoHZ\nxmEBeAdPE24KILaogOp1o3ma3EePxCRUY4mWqa0XH8kR7doIHpQIBh3lGTc4\ndhPK\r\n=yzUk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bb78130de041273712165b3e6d254a6efb9ea4ac","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.16_1618602029115_0.7474144257449389","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.17-renovate-sinon-10-x-186a81d26bbe171df561fe67b4b164dce89114b8":{"name":"@balena/jellyfish-sync","version":"6.0.17-renovate-sinon-10-x-186a81d26bbe171df561fe67b4b164dce89114b8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.17-renovate-sinon-10-x-186a81d26bbe171df561fe67b4b164dce89114b8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2be5518b41dd98805cecaa47ee5151e29ed595cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.17-renovate-sinon-10-x-186a81d26bbe171df561fe67b4b164dce89114b8.tgz","fileCount":24,"integrity":"sha512-JTQyu7IO75WPdCzkMgbYWgjJ82dP9FUTgGS/CREXnP8tf46Mm7pv6n2S2Ou1N5Cp3FRa1cXGg+KCfVmvDa0zGw==","signatures":[{"sig":"MEUCIQD2QnugCuXHJbKFKPnOeVsbTJsCNEhzvkqy3wF7dhNPkgIgHud5DtNlGfacfSAVlPDdjPnBdXhg4y2Rxh8L2kSH1xs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeemOCRA9TVsSAnZWagAA80sP+QCBPSN+M0FPmBF4nf7l\nQx/imzF1jtvwC0VTu48zswHsMwawm3isnKPrHGYNkREWeElzw1XfBBgWhzTP\nC+uhH0UGgXeOqSBpaQg4oFmxGTlcIxxrzzpeKzl0k1LXOeetX7g5EnIdLmDT\noqrsfIv0sHXa5LeWeq5JpHSLr4wv01UZqhStVb3rxleiyyrnZ3bzXGVPwEV6\nKS/yzyZ+H4sKbhRzryfdVZUyx72GGZNLzk4pFJHpjiOXE9OqIRFm0efd3bcp\nWR4K3dfaZA+B0CzbiVduvQUB2tBqduJ92IHBaDlafqyHdv3uribKsQTTpcIb\nFkGoRVwvNt4mv4aGFkRfXu7eYWSBvG6VEvig+uxsh3fF3QA+vUnX1hjKFFBt\nrPt+oNQZs478O9Cp0VP4b2MVjrl1IEBcc35jrIFOOUpKrkOfmntn9zOsp97+\nWTsLWP2OazCTUONMQfYDt7uxwrBxWMTril0bvfFgW/wddF8GCTd3ktiYYX++\nVgFz3WUV41+net+chEBpMQN0lo98pRxxXYbtYB4ix7QbiwdVJv1WCzuZmPkF\n+ClkuDpxbmm+jNZRa+EyPj1Npo0MtStq4udXF0BL9p8cUZtAX/QcFD+xwN8B\ny4Ss9XDX6G3hSCKCvfEt9tA2gj7r17OZscsUI1oybWvxcBQfJ/hOUYRQlMtr\nhJ39\r\n=zAuo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"186a81d26bbe171df561fe67b4b164dce89114b8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.103"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.17-renovate-sinon-10-x-186a81d26bbe171df561fe67b4b164dce89114b8_1618602382398_0.2536989805561385","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.17-renovate-non-major-06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb":{"name":"@balena/jellyfish-sync","version":"6.0.17-renovate-non-major-06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.17-renovate-non-major-06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d06f7380683e345e4a8a86dd7f9e46585d5c519f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.17-renovate-non-major-06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb.tgz","fileCount":24,"integrity":"sha512-Wp/KUeY2qsv3ygUq3Kkv+qcqnfvKaXGYOV7iNgxFymBc8tclWPl1wyzhRHdd2zSU/DTUvYBHCJkm/OlmAywVgw==","signatures":[{"sig":"MEUCIQDSrJZQYH269DdIep8J3jtkmpY/X4O1yHhfXXRwegMdjwIgYciNnz7e6KBeYoGNjoG83cFit2g/Hki5dsSC4obymno=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgegslCRA9TVsSAnZWagAAajEP/j4s42WqwDzPGCUOirzI\nmgOfpSZdwD8IfhIeMVhsjZ5wzzXZlzKjqi8DRXYJw0K/4UbjvIHkk71CXXH0\nYQ5UzqkuZn4OW/+po2BYJWIPkHHxU4pK6xvm3shqp6CY0y6WFMfVlKebXpO5\nsJTaPWyRnt74KBENxi1zXVyhTKeYYNYcrooxP1um1WK+jQLvJjaJGN2f9PBW\nEIm2A4h0mzlGwRltMTAQjIUrDmVz4EqJ8H0M2l/hB2LlKkWG5ry2d9NBcjR7\nEfw3Xhl0kHCmE7eQYNc4GcElQv7vP/LuHg2uDNu9fSOxNuyEQVqt6PZPUTr2\nhzusx25j/ie//RdUjjeAxbFy4MUW76H5Y6y1H5i1kso70qQFvqP7GMebH912\nVgMWvLfd4AYt1AVWGMQKBBFeC2bSZ4XpMQtSrn0Mbrfp/Zcwx32cTswHpfCO\nMo4iUPnXUEJZGSwgp5cHpgj0xf2suWo0ilazlB3yncwMPbR4yjiJyEqfZ4f8\nKeAZkP4d5u+/YFxEti+YIQaiwIp/BUETPZZtqyUUoVJvUGKM29K0LZiSVh25\nHguhU3nnOR0a5K8X8Rjy6CzqALNOF4t5wXf8v2i1fjGxIT0zAsoE+EXHFCyt\nZ5zxTcCkbgIe/s03AKU2in7vPVNyO5EWtfkTZ9mvcPwTZ13pkhfOT3MXKxMV\nXq14\r\n=Zpg1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.104"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.13"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.17-renovate-non-major-06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb_1618610981479_0.5786575638539144","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.17":{"name":"@balena/jellyfish-sync","version":"6.0.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88c89fe8ab2b605870c2efeb8d9cfcd4eac34f3e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.17.tgz","fileCount":24,"integrity":"sha512-ljXD4yA3bU5YL7ssOASddhY6LmpP9vMkCzp3cWrDKNhorYOS/1em9aOOHMd2PjTr7FwOMR+w/XCQdjiL2KjQAQ==","signatures":[{"sig":"MEQCIFyO/Zde/ekFwKOoMw6X6PwQ09BBJzskkNqx3fOVGa5RAiATV645doAVzb6zFIa+SBpHKwYxGWHl6vkMYB8Z+WoLiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgegvtCRA9TVsSAnZWagAAEmcP/2h+3fjTnq04RL9cZ4U6\n0BwrNi5I7mVtVmzDEomMCNrVs5i+w9BWTkX6zj4FcuhWeio8xTmONJwSn9M2\nrYWQWJD8iBpJQwcipxuJ1wRGWkOeJ4/WCVzILxqv69W6bkFy+G11Fbp3fmVQ\nWeJCMkI8sIRhQ082WLCU/G0Xw7XcWnoWIHm3dLWc3Wdhkxcx4qFxsb+o6nuf\nToHjdhepR/I5pAEe0iU9KGVWFv6CibbPIoaXe5ai5m7fNSFzMAcfDejb1H72\n5wsGY8e5SpAUyljp7bD47RJnmQRw8hPHarn9Vl9lVYetuvZpk+fFXPjTByC6\nYh0tjPNUJYV10il27fQPogMTS01O9RoWIRGrzaQijFrAEcOswIzx08mDC5ux\ngosuKQJ3VwST+CAtNv+eb2q2ixXxolV4Af4dX32KZ9ckL81wCUVtOyVUY44E\n9TclbljE6Hclx3whG+oaZ/TKl5xBfEy2KP9kjTOL9Kg8hZtfWEdSaNNu3Pel\nee6xPOL4Ctshc2sbATXzW21eEs2/wuKbOWgrT+B1UYALmqG1Vdk0obEs8cpP\nxBW2aay/DRXMcLfP1iicEjuX7jGBUH1NT6hnaNM273xrNkWE9YT6bB4hRhV+\noAGCvR17NfqwplUfkXY9BtzbKN4o2RSoM6Gc3XVnU7oMIifHMtu8MPFBrrb7\nPFaB\r\n=qIYe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f664bac3ba4e170f7bccf8b78ceec8cf81f72505","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.104"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.13"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.17_1618611181406_0.6452313227651034","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.18-renovate-sinon-10-x-e2d46d4e1912c74ee830378bb676306596349a31":{"name":"@balena/jellyfish-sync","version":"6.0.18-renovate-sinon-10-x-e2d46d4e1912c74ee830378bb676306596349a31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.18-renovate-sinon-10-x-e2d46d4e1912c74ee830378bb676306596349a31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b438754ccf244b6492356b920efe9a0b18ec70ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.18-renovate-sinon-10-x-e2d46d4e1912c74ee830378bb676306596349a31.tgz","fileCount":24,"integrity":"sha512-68oJ3jDREoaz6GUou3bBYBkIFoahUC3uV+dYrrxcuDYz9gEdhqSoGQg63YimaiBKX/6HNTofbQzYewEJTkTaLQ==","signatures":[{"sig":"MEYCIQCNR/UO87BF7/9GTcEQU+5nhdV/MwpQX1Rz7jEGi0p7DQIhAJaTYahF0Q+jS8YJYNkmjxOnsYt3mv5lqnW6ftrE8J7C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgegzsCRA9TVsSAnZWagAAxdUP/06mmTAz9CwOHNwHrJGi\nHNo9b7FDY2IJUEjU5HhMwW97EqBfSI7l83uBz87SSB31rXO1oYiH+ERDmeD2\nTCwXpH3+sUXzrRsofGJmPGBR1VPhkSdjbwKojGmJziChY1UPgSEqKSXJJZ+m\n4x+yiVWI4mXhXu5YNq+pTvafcByqpM6u4G5G2jp95utaDAhGa7N1d6IW1Nih\nt7wf88vKVpupvCdA1Up5LKMKCBbHANv4AfWjIRXLMAhisApSM+4WZyopWa0O\ngG/C8iN0NGP6zDcoBbwM12NgxiXddm45imtDQ7tA2+XYy+r4MBwD0tc/3DLi\nwIJm5aSxHMx03AMIrMeMa2xuEw7b/vZuCml+h7R0nh9iqFnVjgY+W4Q/fCBb\nYdIIjKBjCVajpCITY7uLY04+vVHV6+vp7yvTbyz4hMy6t+Ljc9n4/GsNtNIA\nXxZAm/DhIziGFZ/2/BjoI5HqLOzm4iJ0ww1rLFL3YHFpDgYxKCuRFZqFY4UN\nA8RGwA5/qYrkOSVOpSrEhB7Dt+c3s/Ni1jLDak93Pid0ybu4p0JC3mcAxH3A\nHKC+tvLWvb+9r0dWqpjRvXkeSoC30SGoE7E/9as14YA1E0huqEnomL21X9h5\n6Vs7HHgu6911FRmp5sZfYUEDSSm7zvgkq7F/OmkA1LKD++y9MxLIGb+mYVXc\ntdfi\r\n=j6DV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e2d46d4e1912c74ee830378bb676306596349a31","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.104"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.13"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.18-renovate-sinon-10-x-e2d46d4e1912c74ee830378bb676306596349a31_1618611435740_0.6047603960895191","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.18-renovate-non-major-7c7aaa08730b96fb661e3a520bee8ccefcda7ad6":{"name":"@balena/jellyfish-sync","version":"6.0.18-renovate-non-major-7c7aaa08730b96fb661e3a520bee8ccefcda7ad6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.18-renovate-non-major-7c7aaa08730b96fb661e3a520bee8ccefcda7ad6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ac8f7607e8dbcc952051361f443a4987560d7baa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.18-renovate-non-major-7c7aaa08730b96fb661e3a520bee8ccefcda7ad6.tgz","fileCount":24,"integrity":"sha512-cQ+dp2fmQ0/O+SELR2XIw9ofWfjofilyiZWaVqfm6hFxMSFa5gJdDnjw5+1I64GQznnsiY445F63bssYGD96/Q==","signatures":[{"sig":"MEQCIF/YUKb0LgPeZlBBW5f6I3EeyhxOR1uzpy/Kz0FzlC7yAiAnylwiPcmD+aV6bl9eWhBTpFronISlFiNhPfz0ifWZ6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeluPCRA9TVsSAnZWagAAdDMP/RGJ8LW9+rSw6BnAUWBu\nAldkXHBFDBQ9ENQSG4DfWnQyMgJD1AvAifDX+dvmhBWCxL3h8ELIma2zVRhR\n+UElYDsnV8UJI16U0tzLAcMOEo++m+B8eJChTFRJvRZCIQXWa1zxYK3OhsjE\nbx6i6rU0l/TGY9ypUIQFrGmRstFUU7Nx/RYU1m+TCiw3x5B9OqdVjJLbTVkp\nojoxAnktNoSpqRmTindXahjJhLCNRuCl3MSNiQgn6PUsFaj1MD3oWAHq+RtV\nh/2wGOw88ZFYWuDiwMXJmXx6VwpYUqxvdYx5e8ojvgkxOK8P6dBnUvXyws0m\nnr5HGzwyocAirefB3xX5Gmq/OmlnlYTRbxIXuIDyExlPXv9EJqz1i9V21u9L\nq/7EvOOMbJKQEWmBfdkV5S/0ZVpHMCMRdopswPFvRP4mkZLPjAjHCy0fmo78\ndyAEotEV6a+hS64yOEYlo+xaJnRJ2jXBFhlVgN9DNTRQXIEFXJxP6aLcZ54j\nhrk8+6zdQ+TyexeQ3EhkRdq2SICPBM3oSjfqAScgTp96QAp2v0KIAEoJdQ5t\nxFvfAEDqUXG/HgDTKZB5O3mLayTX1mF3EEwPowNy+zmDWzyCAfQyxU5yE7zN\nA1hncl2MmOsOHVDid9ww7OiOC5kU7k+E1IPqqbRGNuuJjIHGDgOdW8DkQsMN\ndPgw\r\n=pSaE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7c7aaa08730b96fb661e3a520bee8ccefcda7ad6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.105"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.18-renovate-non-major-7c7aaa08730b96fb661e3a520bee8ccefcda7ad6_1618631567327_0.6451615319333366","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.18":{"name":"@balena/jellyfish-sync","version":"6.0.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a57563548b30013080d3cd66bb54bc90e21b4654","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.18.tgz","fileCount":24,"integrity":"sha512-CDCSEYzP1lDWHrL/eW+XYPVLLgubtwZ5OFCeyBlYOjP40E1c0e9hivmDh025+ociE0pe2M0eNXOgq19CyHLmVQ==","signatures":[{"sig":"MEUCIAqQkDaiQ3alxKnuoCl4YpCZPhyzKbZRlSyygO9Voyj+AiEA/2S3esH2Nro88xaCVLntVKKJHcbBXrEqvNLJj4+6CFk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150076,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgelx5CRA9TVsSAnZWagAAM4cQAIMIbIERKTBjIxGEvm0d\nPAg8cd+dnGldVuPZqOJDE243jqigWPcsunVtwOpdEGYJf3z94i2m2/WbGxNa\n+3l57jCTiFYyP+NsiVy7Q11BedJdHXWGS38A3FnldZOVWDgY+NOkpFvtKCBs\nIQWcCMY7/1qy825dmxzhYp5eTHntLjoLaI1SWV2M8WJ2oBsHi39Fhy6YEyBa\nUswOwEHCJl7v9ap1KfIC4aMG31K5Ug1+82SgbJdU1zZ6PeCRaYc4firq05z+\nOkhIDtIXxboaoWNSuUke7Q82r8W+FjgQSlzNil1hNoWhME8/QYmZmUYIMYsv\n1Q5hUu8znflGhmqA/JBYYK1d2E1/rYZ+XgUbT12V6ph1A4WGvuyHIlacZuLh\n87sRH8Rf6frgKQlJHEhycyNZLzwMsjBUFNeQOCkxGw3e8zFkHdYkpizmSvqN\njwDOn1cmQ0u42ePC6AFD+4ofyc1S5UvlIX4ViHmPp4Rmslhb3N9rBjSEHJFX\nN2/kTUuyOmCqyLfDCngzVA+CuBttw1wEj8sPszi42um7DcL7H12EnBCxnsu3\n3EL2cpGbPijeIJnGVK/oIfvEK7dPgtQZltSXj3ykuDqGbLA4H7LPva+vsNCe\n6dDLpgOlSI2lmSR9/sh13ef25QByqHIislqF0jfqB/n47JCecTbuyHeJBoFd\nxKhY\r\n=5YDR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e0827b858847ad0c953c2c8b174d3b9719f505c4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.105"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.18_1618631801330_0.6571597134533085","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.19-renovate-sinon-10-x-13a1382c5703b3ce44ff3f1365a068058b618f49":{"name":"@balena/jellyfish-sync","version":"6.0.19-renovate-sinon-10-x-13a1382c5703b3ce44ff3f1365a068058b618f49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.19-renovate-sinon-10-x-13a1382c5703b3ce44ff3f1365a068058b618f49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2faf1e4e02fc157cf097aee67eed061e39418f05","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.19-renovate-sinon-10-x-13a1382c5703b3ce44ff3f1365a068058b618f49.tgz","fileCount":24,"integrity":"sha512-+mSfev8RmC/LvksnQJvoyBbbGGG2bJ+2ONi1PEPmPz+k4LZ63NHdWqBMjNWRY6+Y/jgQybRSOA0M1HtLqB2sUg==","signatures":[{"sig":"MEYCIQD5EK+O9sVFXbTU2UA9AOqhAFDxbXHiKru/KGzqFF9A7wIhAO2poQmSrYpLOqHusvzrwyC4BmpejHO1FLEjBcoPlYmA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgel1qCRA9TVsSAnZWagAAuxQP/iRm2Yq0BvSj78+V5gAc\nbW/G0w6CUEcL+RiewTBqz9WRTfJWLMXq7xmV5QLmoX/Ud4jkMnZzlOadmJeJ\nTpfLPjvIqiK0JWrX5aQ3iKzhf8bZl0Lj2a27wzqeqbv1GcbSj00lZ/AFOUWR\n6KPHSvbgCqUa06CB22qv/jbvvqXrMGbNH/+UTTiBeRMHZRueYAq1O3/mDyzR\nZ/P7vBcUhyiFl2gen8v5G7Gj7idcsNtUP8mLB9XqreXuCu73xYWYGiznWl96\nA4+YqcAijmuXk6T3pRh/buqsgQjwMN5wMkoO7IDxC3lY8GN58KOHeRQ8Y4p6\nnoTY/JStMepDL/Bfcut8vV4MGx1rxUupmTJMpjN4K+mjcEaCfFdyNQ3mbUAh\n4VCAs9xayKqVwqNLvEfLwh0kxWy4tQZ3hswjDa7pVf4a0dh3RemJQg+DehjM\n6tSRYAJ2kp6tvOiflDsOzLY3x/GiCeM58wP1WfQUiIZ4eySTd/sivQ/G5wMn\nEamOHc6zLocyuytqowZvA21GEEQRx6pMdpTt/gpIaso9iu0PL2TyRpoSCvNb\nSvRt0Dpj9DKVTI9nEa36FRAtR6OgKk1VWaddiMTKGGND1go15wwXYmBrnTr+\nB/LA+mlTz8WeWl0aQjyDcJ64xnQdeAbbqaLaMKBPES1jv7f3o7cDpod4DAcX\ngyyn\r\n=8F/A\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"13a1382c5703b3ce44ff3f1365a068058b618f49","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.105"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.19-renovate-sinon-10-x-13a1382c5703b3ce44ff3f1365a068058b618f49_1618632041653_0.5293874528340243","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.19-renovate-non-major-e224d7a4b6dc66808b39174ef0750e6dd122e1dc":{"name":"@balena/jellyfish-sync","version":"6.0.19-renovate-non-major-e224d7a4b6dc66808b39174ef0750e6dd122e1dc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.19-renovate-non-major-e224d7a4b6dc66808b39174ef0750e6dd122e1dc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce9096bf3fb21126d89a5bcfdffbd5f0b6c2995e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.19-renovate-non-major-e224d7a4b6dc66808b39174ef0750e6dd122e1dc.tgz","fileCount":24,"integrity":"sha512-bMrGcf4Dkxj/XnUhqSvUZ9t5SkLy1+nW669J8eE5L9NXjCc+gGCNmR4SNNZX9Z5OogbtpIaSH/SzXZ9zm/koSw==","signatures":[{"sig":"MEUCIE8RwuBpH8iQyDOJrg/5L5ITpenBgUMlFaOWVY7bkOzoAiEAq4w5rFEturPBbwj64bLY+HSFQalHQPMttkK624d4Ikg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgenwCCRA9TVsSAnZWagAAjwgP/AiOAhOfxsgdU481K7JF\niJ9boliw1q4xjSXiv543oL2RNrmokxR95g7VyZixEZZ0eJIRhgwDIqMaqnDS\nJiEpCXvBfdhdgCKIfdHSXYpgZxGFYHludNcAzDufy7U3KbZ5/c5Kd4DFiPcr\nyhVLI62/E/F9aOqoUEA6M/Z248rMSLPuqPdeFDiCVeGmp1Qk9XnbKPgckobf\n/4GCOrJiRpfengKlKTxw2BBkjwaLod6OYu3NSPh2F2L6iGjeNb88Ysg/GDMO\nmKxz5q+J8BqicwDxiokofhW20dmBxHRAsQf/dq4JBxyHEQs92Lw/zvp0bMoj\nB+G2GNoI48KZGFZw4mWpzYOB5Xx46+DM0RkktipdVcRKzdPlyXOVhhU4nDD/\nilh9Ujm06/+YfG+eJBJQb3ckX4cB4SuF6j6B38mGjLnjnD4fejJ1M0L8Hdwg\nAUrqbtDfiwagj2n5iFsdDec7bjI/Jr6sFsShc1OnQdeqm9nc688csr+jOXci\n1qSAIBOHPn8mVWz1kOw9z1McTidhqleiN79woo1AfpXEoCkphLflfGnGC4Fc\nLdipOplFlp+RglqF12L879s+Cn8fNQsjgAW+pTo8r559zj+eLOchh3sBPF2G\nYiemEvlN7nrQBg54Efa2l4nUYu8CR2g6GIoIDhk2TcOdTy8/v+36hb4eeo/u\npjKk\r\n=294y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e224d7a4b6dc66808b39174ef0750e6dd122e1dc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.106"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.19-renovate-non-major-e224d7a4b6dc66808b39174ef0750e6dd122e1dc_1618639874105_0.9544967955736379","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.19":{"name":"@balena/jellyfish-sync","version":"6.0.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"106ae53b3c79d3e37e794f7e6d245956cac73fb6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.19.tgz","fileCount":24,"integrity":"sha512-zxE5JxDcGAbaAkljbVJPCAQIZ30f9KmZtc2AeQbIzZGPTqzNUxU9UNlsVsCur8kdnjcUg08rpPKgbVm/Sd+R9A==","signatures":[{"sig":"MEUCIQDzU5MMRoITmljCEUg/07NHIVuoWp1VGuECP2IAOwLChwIgctP3WZSHkqTMlAw7fCUakRnZ41dXrM5aPQxtO87FXyw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeny9CRA9TVsSAnZWagAAAAkP/0tsUbjZCjusWvHG2oRD\nRj48qQOuVvY4CegrzhmwsKU+eylHslP6hPT9A+u2ZQ6tBKnUjewklv4qDr6D\naXD7jBk+SH/ZkHGe7m1QsVJdAmGzsMfE+Y1fkmTYVo+rvdLWRY5sshR5T4xe\nzaE4n+2dy5T+QSHt9BdOeCYpHXn52Uz7gyHpLDetF6/TjmIjvk1O7igOSLBh\nCNIXnd/p2ZvHs1haN/Rfse03xFNNRoTH1sC93cSdkgtkW3XoVKGk1/eoTw9+\n3NWBrAgXWHNnZsSMa4QkYlLhM2eMr6PUhKNaHLcamNgzL5cobyVuVRBiNq2Q\nu3XPIMDIF5o6jCbJ+LmU/OrAu2LjoLCC4A1jafDnRNP43nGGjlwmjvJGh0sM\nI/tIUkscFILNt/wMreldiySz5PwGrrn1Xbd2D93OEsBOICITtBPxcQRGOW8t\nls56J2gFG++dBELh3Vh8YenPZI0KDtLgVh95BtlzrCUFhQABacHUdx0ri4Ig\nvyjzGGb0yrUPwGCv+JfzCviWxryr3i8LiFFNPvAvxxawLisOxh/4W6t3a1HZ\noeb6A4ijKXkzeEDnCxeG0naPfMPCStkP/9zDIkoSkROEh2inVaVjvEc2iS+q\nrqzZHE/4osc3LcChXN8T4bE2WpshuSVaDnvSG1rhNbpumYHrX38tUvzL9iR+\nfIDp\r\n=htaX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"de7e5d5bd832cb5d256acbfd44ae84e2fb51bd07","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.106"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.19_1618640060844_0.6988003981485309","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.20-renovate-sinon-10-x-33f72f6fce589a91e22353c5f94f5e132ef2961e":{"name":"@balena/jellyfish-sync","version":"6.0.20-renovate-sinon-10-x-33f72f6fce589a91e22353c5f94f5e132ef2961e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.20-renovate-sinon-10-x-33f72f6fce589a91e22353c5f94f5e132ef2961e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"11e6bf7df744bb1aabe4589565c406f87f6ea196","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.20-renovate-sinon-10-x-33f72f6fce589a91e22353c5f94f5e132ef2961e.tgz","fileCount":24,"integrity":"sha512-beS4c3aqibffQ0dimjBSBGjXc7mYLlc2waHJWXfnNPsxtKyFgNPVRwfIndTkbTum2bvivS5SOCrwyQIGsNZ3ww==","signatures":[{"sig":"MEYCIQDpIz35JWgfINlwVeYo+qVXhALU8hC187vHsAy/tDjNIQIhANB0Kqk535L0rikiz78TW9zh5Os3mIrfWLZBnpb4Ffv+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgen25CRA9TVsSAnZWagAAe/4P/2oKSKsW4QAsz3ZzZgsA\n+mX4n987X9fXGnHbR7ZRl2sWBziaa7l/AnMnqwv1iX6UHpkUFhmUCSEY3P/I\n+KbzjxLYB80yY75L3LRsMMfs4Fm4v+23tItFnlPSVqxto+ire0M/V+qdSATS\nRTgxb0ASxE+ItHRCixH70mG6i8PABQ6OdX6yg6BRHgQpFU+odZnYYtFKjfjQ\nhxugz8dDeo/cUNKdCYi0fEIN4GxnsSNbKSv631UeQYMS7He6ks8cz6K0PSUa\n9THz2vTS4McKOzfCFFKV95nNEY/leu6yaKDJEN2urmiszE3xLUWncsAhGG0w\nc1NB7sBOSxgKXcOmW3KIJ41YcAndsluhvyrhKSZyz0XiIZYbDr92zQVWsZrc\nHFzj8MsbbPEpt7wRiLh7KObeu6qPlO50KIDQIOfSZTaJQy/B7GoyNkFAkCKd\nHM1vmEqYq9QoTo7ZjUSrOw/5sPL04TTDmGcsorkSLNV52xbmnmm9qLqG0U3V\nv/OQ7NQ2PVYjoG6Sf1wxOgSHtvFbiUudMWWA8ZqDbpe0L/Fdb+S+zq0cp/vm\n70V0fqTLWyRWC4kiDI+GKLQ8jwRJMbbaeJfEnWAUCKgPNJMJJaa5G3FsAQco\ndBA7ztkvw7umiqxKqeNni1MAx9h722f6cDb1t0hkZX7V2EbTyaXK1T8A6ihk\nKH6z\r\n=Ehx6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"33f72f6fce589a91e22353c5f94f5e132ef2961e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.106"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.20-renovate-sinon-10-x-33f72f6fce589a91e22353c5f94f5e132ef2961e_1618640313363_0.6442775004968107","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.20-renovate-non-major-c4720e7b2e35f4df844c0596c38990ad1e13f7f3":{"name":"@balena/jellyfish-sync","version":"6.0.20-renovate-non-major-c4720e7b2e35f4df844c0596c38990ad1e13f7f3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.20-renovate-non-major-c4720e7b2e35f4df844c0596c38990ad1e13f7f3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ecb68128d77e2f872ea572868bebda9cca28efbd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.20-renovate-non-major-c4720e7b2e35f4df844c0596c38990ad1e13f7f3.tgz","fileCount":24,"integrity":"sha512-lQOlzI46PPsR30jSUVc82XPdAUR+9DptNeuTjRUlmFYKtMCXxRB6x/t4CfYyPKXD8glEJ8SZ7f0mzmywphFymw==","signatures":[{"sig":"MEYCIQCsb5+qaVdmz70RI1EhnV2yGpKVRCW1YXdKGhT+1Q2gbQIhAIcnSairPDdgr3ZlyG+g0nQqDUH9biSA1JYdDVsOftzJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150268,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJger1QCRA9TVsSAnZWagAAjPMP/RBtgxbheLGg4TAE6FA9\nlZK4YNOD+355ax3XRH873OQvZ4PUxt98ZXoRaWT+G7rEwcqknaQjghFeTSYK\nK3DJiFnzUj5tDbNofiDwwxHe5nG5fTCeQUD3MuQPEgCTd0u3Yg0HWZShAaOi\niXZ9AJdU4WMTodJ/tl4qH04EWh/UfSjN4utIZSPY9vYQ5WdoPQjiERDmkCPs\nLykYHiXlpIHwzxF7Ufft/r7VqpD1ZyWJCKO07svu99kv2/7ua1Jm4miqX01j\nleo3GrypVW4RnyISAGL3ogcKcR9oDoCFKlQE/qQ+b+gpYBJte8mq7FVaG/4/\nrS6RlgHbwjMSYib8HZ0Maq3L0vMLwSQZawnW6pvyHSkuiCnNRr7u3sUcpCkD\nHpXaVgDU/TyHAcGOlti13aT4k3uAiaE3sDzPJaQoa3Q4oYRZ7i0KmY6F1dKh\nkCDVNrmOCsU5TkT3YUORde9oyydE1Nlq1L2ECFYbk7vkVxva2XKUL5KlD+UI\novSjK3S/VSF21r1HSs90S5ExArXVFtGVb+u6ylA2r1HVbBmLZRpyd1zKsUVn\nKqCkAfbj2IM1bjKKPybkkbQSeIfci6LbYAcKB/D34gv6Bd1XaDhi3D5vvGce\naODw1Z+zZFpUmZIwZhcymCPkqU5NnNhfMwtabDQodnqN+juEYyXAhmVNFGjG\njJmR\r\n=Z3iB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c4720e7b2e35f4df844c0596c38990ad1e13f7f3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.20-renovate-non-major-c4720e7b2e35f4df844c0596c38990ad1e13f7f3_1618656591434_0.7359719868981998","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.20":{"name":"@balena/jellyfish-sync","version":"6.0.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d21a9536d4f30d2bfe227cf3e94d3f8850cf67d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.20.tgz","fileCount":24,"integrity":"sha512-ORpdRXncK6w4EZHxdGahLxz5aaMbOI9WZ71FA3lNMTpKbEWVPcIoBkv7oxALxJwXMFW1KPm9CQvhoK/QYFxbRQ==","signatures":[{"sig":"MEUCIEKnwnagmK2QEHVxUszRCXBOHC36ZUjiWii7WUgubQXdAiEAgF+p4+glH6bArUO+ltCmVYkd2DzL7bLO+M10T98usPU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJger4qCRA9TVsSAnZWagAALm8P/2so4yMQeF3IhzGpAf+e\nlM2Q+SbJHO8CeQ/Z3xFFKUK4xDt/swpp4hWYLlKYeEWNXd8Q5yg8bdwKr7Vn\n+eauVkSR5MqIeWZHLsnf4mfOV7AjJAZh4xX12/iO8uVimVb464eyzvEeydbQ\nLh1hRf8Hpyw+tQNzPY6hNduJ3cZiRT3pakL3MaDNE85UgXbmj99vg9sSb46W\nBL8jKKF3t7aCL8pCSPJsSIOHvty8qmIy8jTF8D4n/KtSjuk3amdEPdqAqtyY\nOd5DyC+9EwpvqFVAFMJdpato2IMuvue3dHRb+pc+/S7yeiP7CMGKnVtLwsbG\nSEx/ndUye59u3/WbZOptiAEFZtSj+CR6/wsosQa4dkxCu+1gkEIg3HVbg22t\ndfZUmrpYz3AtUnb8GMiB17jcDL5345QSYMK18SF5qTNo+s3J7Q3Ll6IRd5KA\n2z2p1q/AZJ2B4zk+SlOwPNIQBC7M5+cxgfIYgm96OleYF4eeztrex1eLG1Md\ne4dtVHbcl+pzuRSIotEiQrTUqPJbhokI4RqiDiAVbnUt9h02YyEpcZWPsYgh\nnkYBrgAxrUnNsu+/j4rKzF2jkOKxojOTOfABQK0OnQRdmr9PuqseeO6TXRJi\nnZmEbrwgrUCQO2EQmVH3oh1GfxEZ6plKG4RMImYqY4mRs6xnTQKp/vX36zjn\nb95s\r\n=jWI9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d0317b4d3b1caca38b23b3933621baa815ce48f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.108"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.20_1618656809944_0.3995954306418754","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.21-renovate-sinon-10-x-8fe56656a47514fe11422d8fbb2286aa586aeb7d":{"name":"@balena/jellyfish-sync","version":"6.0.21-renovate-sinon-10-x-8fe56656a47514fe11422d8fbb2286aa586aeb7d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.21-renovate-sinon-10-x-8fe56656a47514fe11422d8fbb2286aa586aeb7d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ad39f46c49120e857d9d677230a9e91cf5438786","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.21-renovate-sinon-10-x-8fe56656a47514fe11422d8fbb2286aa586aeb7d.tgz","fileCount":24,"integrity":"sha512-Oxg/NU/UPmb+cCOxL2w6O0OF+WebyMWGkYXRUNWewidTNhsUH7yr5rvkMCMzxKlli96FexR90NbHfHYkuwltVA==","signatures":[{"sig":"MEQCIB74W/Q3g6eb1TkR3hOwMhCiyWGpM7itadw1d8B8uFaVAiAYM/K+3SHRxEHwJNXQIJJxs3M6DRGPCzxgv+L8601uJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150356,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJger75CRA9TVsSAnZWagAArEUP/RDLSAzNvyKfTM2Cz57y\nwJQF/a8sCuTyAJgnycKLZdwC7H/cFBAZmXy58vVhUzjnoRJDPCTTISSHk7qK\nX4xzrQFoaTP8NYr9V5MuyeXHKwhDaV5J7U/7E6Gzp5esb1yHfi09XyQzhKFh\ndzsAdjKTdTacoQ1J3FZlo8qYvhrITl0wSi2nLf3MzSGqZIeAvNqxqB7El715\nVfUsu/KyuQtbJSxBTscEOnqRseZW3TXF5NcALLtuM83CPY4F9+wjKH71rUbF\n5A+4hIEOd70p0KvKh+eBAuZPJ1ylscKC3+0iRuDmiG2MoonpDUK98XJaWWRD\nzcUMzScw6Qi+no8xvPi29eQmRVEkzZUZY+ddxnqf3sm24GDFBHehf/35rdMo\n4YHjN4u99lotPCBaPrlgOZGRj+3+KUy+vkOiLi0rWC1bAMoMfrUXpCn4c42U\nmGebiYExQWRwzGNHlE7H/E1nS3f0+oFcIHcdNCLQzlEIIaeoPpWzVKlM962H\noFlLfGsmkZV8YrBt/W0aqAAserkTN1Tc5S4mWI1kwEFV87uYhm3Tjf6id6Bt\nxQH0MRwSUiLq70YecHfTYlHZvYSGpfqwssX9t7F+qGmjcioQ9EM3qwU8aucX\nENCo6i89p2d2LYwEps6nKen2ik2sGsbehpeJCZNf8YgoIwmgWmsjzeKW/S1H\nVN7Z\r\n=ajZ0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8fe56656a47514fe11422d8fbb2286aa586aeb7d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.21-renovate-sinon-10-x-8fe56656a47514fe11422d8fbb2286aa586aeb7d_1618657017040_0.8815293690429455","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.21-renovate-non-major-bc47424f5e884ba16d8ab448cfc58a07310f087d":{"name":"@balena/jellyfish-sync","version":"6.0.21-renovate-non-major-bc47424f5e884ba16d8ab448cfc58a07310f087d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.21-renovate-non-major-bc47424f5e884ba16d8ab448cfc58a07310f087d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b0230e05c15b6dafa28ecc90b3b313cde73f893","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.21-renovate-non-major-bc47424f5e884ba16d8ab448cfc58a07310f087d.tgz","fileCount":24,"integrity":"sha512-V4ADtzjPWQdrKZ46I2nVmkw1llg56PsjxRUWqUSm7wPcseLtlmoLSLIKc/7sCOWJG26zWRFis/ltfafMKOu1YQ==","signatures":[{"sig":"MEUCICferk9A+rcw4UPi1LbYz4nmt3v5eMU+OoIcpjs71/NkAiEAjnvBfBSt0FxMwhDIMj625torKmD3U2PVSx71wVaEMUs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgetUGCRA9TVsSAnZWagAAJSgP/2a2mjgKkbk0+sLSwIyC\nEag2wSVGubpiz+UHFtp7KdLVgdZbMxmY+CFIEP5LQzFgFJy2o3foI41gQT6T\nF3AH1cw1xYpBB2i+JBVlvdUEJnZRVfwyA96mO38V6h2MmI9GNEGXAwCG37Tm\nWhr+0v1csJNk1ora9Okcs0Ogc/qzki3ndvQ/KYp/hGM763l8NT6UjPI+GMas\ntCmJ6Bfhvm0wL84STPDQ2e7ek64Msyo3dFBzO9nZ02EYuRORH9K0Kq6EkNxe\n48NDMSfuN900TU+oumNWSSV+cQYCo0jRakmTFMeROffpFEJYd4CSLYro0Y4k\n8jx22gFUjFgLxgKEBPdeezaZ8a2qQjBQ4Th8sdV9Ykg8HGhyHPhJj7XqosMQ\nbXBkmU2ZzDKqn6Uf/D3DcYoHXKGpfJyu55NBE635uzwI+IsNcwhbslF8/r2L\nmNxgY1Obk8xZxlgBZCSvB/TMy4l4B/hGjS+wjmNCqgr+/gju1u8QNp6flb2e\nibf/TZG1fggOgsGkGoXDTOBIiUtpgac5b8sWsljfsivOm3EDw5WThu9d9ntn\ntlyH5qGFGHUcd55/VjMUoTgk+ISJ44E58hAnId0CmG2hkya1RLHdeluU3tfL\npugUnGYZulMqfNnb2CiQk7ZD+4SmDH4vNhxG59o1DqUc3QFpgQSPd16wX6ml\n2Py1\r\n=hjp1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bc47424f5e884ba16d8ab448cfc58a07310f087d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.108"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.18"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.21-renovate-non-major-bc47424f5e884ba16d8ab448cfc58a07310f087d_1618662661968_0.3769741451053126","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.21-renovate-non-major-31d0e825b5830ffae3c31467bb5eee8f4c3207db":{"name":"@balena/jellyfish-sync","version":"6.0.21-renovate-non-major-31d0e825b5830ffae3c31467bb5eee8f4c3207db","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.21-renovate-non-major-31d0e825b5830ffae3c31467bb5eee8f4c3207db","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0d55f5b43f1154def10bb3e190da1468249355c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.21-renovate-non-major-31d0e825b5830ffae3c31467bb5eee8f4c3207db.tgz","fileCount":24,"integrity":"sha512-rA68F35wzNHLKPJ3vusFVgA7It2PiNfGSS5LYNy9m5v4/TOe5KuYaEXeslFdDTHoJ7Q45pgzUnJOWkRwPySvbw==","signatures":[{"sig":"MEUCIFnXKNq7kAMD4ljsM/3XN0fX11t8J8PND+c3SZPkpctLAiEA5lfTvi6Jimq1G5CyNPH+KSawzLH2cpJBv3jaLyehp/Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgew0gCRA9TVsSAnZWagAA82cP/2ifBJp2kyC/6zW4mQii\n7PEjvVhB+AkToQwKt2uKcG7y5TRxZeAc974S3lO6XkqSyx3WLsbrENmg6V/M\noslNHvIWcIptkdyAsn2heTI067kIlOvwSm4IyYwotZv0bqoIt36kghrLyFFJ\nOErB/GMCESNCoP7pOMEwJmN7RER+eGoc669GKwGOtjPj3joaFasWv4OcLw3R\nFqioSwrximnDLz9LV9wUbfFJtSijJ9WCchxBegODO1eu4h3f8dhOu+naQh5e\nkTUqoRcCz6V8zuVcoz37BshMxwa9ohHLuUm1xWPetkIoF+z5fyOo8Mqd6QNh\nnbYmxBICzqxVrmsGDnjg1uJQnrJpwVWls5zfYa+eZX4JzMDSPKzZsiTWuGmk\nMUggyY+gQWQAVLhbw8dLSYwtO4XMmnV+Gr7qFnkUVpc8lBFYE0Zj/6Edf0Bp\nDHpVXZWgH9hng+C7Q6q6MkV38Z1BzMk2e8OXRRYPpkTGmFcdM9F9NssTysrv\nsVuR/7DRxH0DwbIpKpSm44Hkw+0n3r02Ju4/2RmdiCEjad/ze827OvawyYu2\ny4h5dCl/WNs3I28nbAlmG5Z9iRqThjBDrHmPxFnqljBpRj1dvyHQcNzCXDVB\nvDeOXE+OC1ZaEyDxW5s+hBqA05kCsw7/uX4Y5ROxm8XqfPvnCL8yqcCv906m\n8YMS\r\n=X7WP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"31d0e825b5830ffae3c31467bb5eee8f4c3207db","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.110"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.19"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.21-renovate-non-major-31d0e825b5830ffae3c31467bb5eee8f4c3207db_1618677023699_0.25843661462219325","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.21":{"name":"@balena/jellyfish-sync","version":"6.0.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"32cd3d393f5c6f718858ce8b51c35d8ab5532b39","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.21.tgz","fileCount":24,"integrity":"sha512-tVPs1E6nKMrh0ZyVMAuxuXsYYo2qv0PqMsCmwZfGhUttJY6FTKvdkTE5YgzFKef4VC5CioBSd5fuwTX/h+ZF7g==","signatures":[{"sig":"MEYCIQDOc9tvCM7E+/zvnlaWq/A0IBvUcIE20mw1s20SqhEuhgIhAMKRnHwPI4ry8i9Rl2QKYt2l37H9qD5Fv26UlISElnky","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgew4ICRA9TVsSAnZWagAAyVUQAJYc3+5JdiSFxZxYbSxA\n3hyo/R5zFeJnUk5wKeb4+lh85j+tcdeBx9Ytgcmn6ZGbBC+r9nAVxavP6xwK\nQpxdQhoYn0aKNFPpLKo+OaI/UEQ4brnRwnUgfyIpaTvzXGRvwo6DMxoAZAlY\n7wsmGK0SGkSTi+zgJWQv06P2A9+Ki4Wl/hpEjyI6bw1/t0PdQwwfFAjjaNOr\n3xIgGYnd/XkdBJUJOSOYvkcuYAz3tOcycctg7kRduRvdjo+L7/1x498O7wQo\nc0vPgm4Agv0oMdfptCdmBChfFhzLrk+yCiZX8iYSh+dB51xQ5iwqPBxvgtWY\nv549qHYeeE3D08lHgz+4/ZAQbOQHEa4whEWFOLWQAQlo2gqLqRFDY5A295yG\nw5qFuUIn3qQsSB+J3z7E1B7oSu6n62tNdWm3tgojGHnnuEScbLN62WO5w1Rq\ne//yYmpqLl68KBpZ7fXf90VrIypo7cg8DtVoXgPc8UiEBxgHrqJXBAVR6aEv\nc0w8o5CzD5SBlLOeKsAfFF7/6KTAarrNCcWeluIZuzvldfmW0BfQOekbR/yt\nlIIK3alaQetO/0qkxbTUVoHwtSCaWbk83pqLBnxWUhxneIxATKTEAjA8T7+M\nkZ2A+qTWRA2dZMh67NMq0I9/chz0KEv0t9nqaZtjEJXr+5zsbNLL3xjYWPnr\n/waE\r\n=Xqqq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"433dd2216e4a26f2df85f3cca3dc65cdaf57b05c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.110"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.19"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.21_1618677255641_0.9366715807512682","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.22-renovate-sinon-10-x-162792295837c7cfc477557c6b9e2ed31965dd2a":{"name":"@balena/jellyfish-sync","version":"6.0.22-renovate-sinon-10-x-162792295837c7cfc477557c6b9e2ed31965dd2a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.22-renovate-sinon-10-x-162792295837c7cfc477557c6b9e2ed31965dd2a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"effa0f660271d8b5243a1ca4aadd9f283ad5b4ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.22-renovate-sinon-10-x-162792295837c7cfc477557c6b9e2ed31965dd2a.tgz","fileCount":24,"integrity":"sha512-D9hpaTRza4btoPaKNtFhUAyDEfE7PxhOD/Nm7lcgiDJ2OWGtmDW0iERmLvWkceZnBppa3S4KRjkCPLRA3MzlRg==","signatures":[{"sig":"MEUCIAmose0rsSxDrVe8D4R/9HNWrPRgMmSYRDzV/qZOMrLWAiEAkoN2jiVtehT8S69Krb3Y2NpsLGrRDnIuNeX1gXm13qk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgew8ZCRA9TVsSAnZWagAAUjMP/0dhkGPdqhoMQ4DGAwLY\nABH70dWovYSrI84Z286HiEcpdQ9j/m5Hhqh/WeF0bn6OlmP/XH8Z/tStXP6w\n7/jU46rgzTuRBReJx/RZXrxwkQ2YPYqt1e98Dz1TgWwN4JA1blpowcw4UY20\nicoP3xxQUjU6rdOo998qOuvN6VE2g93bDW7QXu+yHTtGfHj6dx6hkZdKxCxX\nvKfKU1XstcntPvJelGzDT0oLdr9Roc3G1vH5vbbTgCl06CgqL54j//b4qWR8\n0sbyq2Ya9rD6F/IDNGgaPWO26ayuM+RbNs4BCWYC/69zwU12K6dqr92oOmic\nCk77xnGEBJLmu5D+cAwRR9h7JgmLQe0bj6K8DfPGE1xE4Yn+g2NTYpN1Oyf+\nK7kRxvxbV1MbBgmWJTEckM0Gb/0utmIwNfF4pc2TzdiHLZKZ1UIZ+MVUrt58\nZm2udJlame6zaD+YtfWFNWd8l0234v7Msf6fKX43Uv7SifdKYZXChUulhOQc\nihcLSXFOZ6YGaRSXaXWBzzVKtyf++2lFbgUN6NIYZduc079inJfexEy2f9kN\nXtU6ul9nDYG0odQO0Jb4fykYcUBcgEZTzhB9HNOxfnpac34BJgXJAPJ0FtFc\n0PRZjWw2QQZPjtHVLUtVgVCZe9CZYLBtfMC3BXn8fVgFriYc+/bLQ4Msg2RW\nzaQ2\r\n=EE34\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"162792295837c7cfc477557c6b9e2ed31965dd2a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.110"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.19"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.22-renovate-sinon-10-x-162792295837c7cfc477557c6b9e2ed31965dd2a_1618677529056_0.3707908691339936","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.22-renovate-non-major-9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2":{"name":"@balena/jellyfish-sync","version":"6.0.22-renovate-non-major-9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.22-renovate-non-major-9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a4540bda7c64b9313644c6f736619fccb52169d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.22-renovate-non-major-9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2.tgz","fileCount":24,"integrity":"sha512-GjAEvXS3dzSJXRNwbf7TSwR4kVByzvjizpNdX1Dt0lpqXiTeceCIeGREMOSBT7t9zs8JmocRX7JWjkXXYYTMnA==","signatures":[{"sig":"MEUCIQD0R64GgEpXUfXP49ULzQ75SHT2GSXKyYcYj8vdAtsuSAIgSshmQ5M0xp9EEyPt/HXOllB3b3M1p7xTWkue5LgTUVc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgeyy6CRA9TVsSAnZWagAA3ZYQAI1KGiQVv1ByLkzi7XYM\nE1nCuwuUM+inybuUnjarOG68tQavCNBKR9ktKI6h6swPGW9pewzgOMJggBFM\nsfIPgpHU7hjw0gGh0Kvhg424Ke/f2YVglV9lxyn0ZeCeKV8ZnU87TL7gauPo\npLKN+dVnfxyQQdn6pJaUb/72cQKuHmQU58jo1GOCpcppjAgprs3C5vsF2wKn\n3UjkKItMXLIlDEErVU1Jd4TvnGXL7cS31XHxRBR4sNv/1GpN2WDkRa1Zxvhf\n0Oi0wKOSvZmRbbGECfVBsTocevcuhmJLSsvkNiTRwvqmYpmBlLpOrUuUKbb3\n71imb/3e8tz04wXAMsDPTgIJXgzsrhwGzcqDDbikFok757/pdIj1NeTalUe9\nVdGvSua+Df4zlj1yW2ZpYaS81n+ACsIxdPd5orkNz2D2MKBhX/abr7wqxYZE\nRLI7eqHDsEmNMOZ6deWpD1ip3zDqlxitw5WshhdMxoxwK5ME8SseqBGfxudn\nO+nOSJGo4Doleyj8e5rJLVTmmW/Vw8UgfRwnnlfL/p1HKe2U6bvxsPLd3G9L\ntwjeMN7XJZIGvyIu+CSA/cuqj3fJBeCHGPz135Wjn0LSjCWj9Ddky62jhaoJ\nMKFo6CRypARqAp5AQg6H/YN4Ic6xgvvIXVAxE6F+kYEqKxCF1qsw0jJal5Mt\nxn2h\r\n=/8Zr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.111"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.22-renovate-non-major-9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2_1618685113415_0.7889190326391167","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.22":{"name":"@balena/jellyfish-sync","version":"6.0.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2162816a570a980a52255759a47d4658824d8b39","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.22.tgz","fileCount":24,"integrity":"sha512-EaqTRZcgMuXiy16cXXnhYgkCSRmHvu1Qv0C6+0pDk8MVKGV1aLawh5nc1pGKjk0X+n7T8b372u22R3XKnVGEYg==","signatures":[{"sig":"MEUCIB5cW/Xdd1fMPFGCl+pSL0Qe97cC+10rIyGDnzT2GgJ+AiEA+bf7E0X9R4wBrfs1FPk5bXP5+cTpqoxtN/Obl0/ZyOI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgey3ZCRA9TVsSAnZWagAANF0P+wSo80XSSW8ruP1LwU68\n8yQ5L1LVWT+TGyMcWEoW/3SixHoSr55GnaXIbM25HGcw2gylU8pCQcNb1OdQ\nsBGUgazhnqN5ZoHIUTZxTaf+EHJN+KdvnsjyBkM5CE6taam4CCHNgSPWZzMK\nYjQfrRXb3FRiXDqyBWYp15JLjaWR957PF2NARjm+Iq8ucUfuspB3phlh7nHh\ncY3gFms1RIpcOi3mNKsS8KPhfwLs6j3JChprgE8q7431RiKp8g4jLYuqxSZr\nyUAMw9TsosuKCubvomKs8poRae7fd+2USE0bFsfSaqZJgPqV75jppNuOV0g4\nXvqTUTs7fqOC+dXKge9++DRmVIU9g+aG9Zw0csNmT9tl/QOocR5M11FVcaI3\nuocIHm577NwBEekfW3U8+YIbwrEltlvZvPNrJFyxgBBSXGxFV7AQer5xd0Pp\nl+Y9WCnPTJdZq7PF5zdJn1wTmaYaptfWpBALAjReh/zoHnoQ4IzMvcg4E4uH\n8VlZamXlXVLfI8RslXuNTeUZZjmUg3LHPzMIxMUuwhyY5CHOxxi0Fd5MIoMa\nmit+D7Q+MClgK74+jT91D3ZoHXJjTu0nDHi5K0N0Ji7JSYE3zB8Y972yx5wH\nt61INgWZABveu170IKTdrh2CzH0yOIX7v94yKXjEHkGpyQI0wAU9mWaY1km6\nFmjQ\r\n=5C5a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14589277a93f89c283e50a3e2bcc644355871d0b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.111"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.22_1618685400971_0.9170935377559313","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.23-renovate-sinon-10-x-f8194b7b1802abfed08b0b8c0de6a82bf12ac40e":{"name":"@balena/jellyfish-sync","version":"6.0.23-renovate-sinon-10-x-f8194b7b1802abfed08b0b8c0de6a82bf12ac40e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.23-renovate-sinon-10-x-f8194b7b1802abfed08b0b8c0de6a82bf12ac40e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8fb59a8ad62623ff92b0a9d855db17ce0794c446","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.23-renovate-sinon-10-x-f8194b7b1802abfed08b0b8c0de6a82bf12ac40e.tgz","fileCount":24,"integrity":"sha512-KshhUNKjNMK0QrgbFrnQjjiVgLmS7YBqXSbxGi/zhonHYvZjdglfohVu9gbDk7mxFPrCxw6zJ7dRWiQWn8Rcog==","signatures":[{"sig":"MEYCIQCnsTsAA6oNDuMlUVyNpcEib1B96ZrHVm0RJXPwxSxWOwIhALJ8tQROdchtM+ExhbLpz4zm37Bh48bUUZPhSNgjMwMj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgey5vCRA9TVsSAnZWagAA410P/A2bdfEqU2yonUNsaCwt\negluOUlwb8K/Dr42CtWITNmtFfxy5QEkCs67Tq/V31xkSSROXoELCPZ8zY+w\ngWzUMoHFLhtJxvwn2zW2bmDJ0E8tIIfVHWPNYV403lbOzRlovsiqHkGCoRXr\nA/w7yN1KXBHTA8+rGERSTzDnuQdc0b9bo2O3FSFTYr7sLvVZ8VnSejHgdv0Z\n92+cs86Aw8yu4mUicri25GTZJxIJsiNt/YJ6NDixbgnjj/WenZcjaYRz/P/L\nhO0vpheoHrp6ODDsdHpR1IHByyY9v/1lnqE383J4i2uVLBeghwZ7WZ918cM6\nANv1XgR1yxZSU8oSyn6G5O0gVfIAmDiVAPxA4E+7gPqHC6vPNRxtpWbaVISM\nOHa8Kf57HWWGluG9mQVwSxNZYGlnep5/Z+U/ul9h0TYu3uIYATwMyHFbZ15h\nsJww4dydGXuLIz8EsmcubPkEutOZu2lm69YyLawggtlYKSxe9PVO9G+bzNVC\nOyJ6AwX4pJFYZ/lmlWlMOJmFXJe8v093fOMkD9AAmxh5bcQeD2SXiaVxJqsb\nlhXQgSHcR5RscGIEStr00IWqjIGP3QF58mkB7cMSXUZwYA8eGmFVL9NKm++0\nx0ij24KEsvNnwlcT8+GIUcVkES4b11awY9VWOBcU1Kn+y5B1WzBVFg0W6S6X\n88ra\r\n=Ev5H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f8194b7b1802abfed08b0b8c0de6a82bf12ac40e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.111"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.23-renovate-sinon-10-x-f8194b7b1802abfed08b0b8c0de6a82bf12ac40e_1618685551282_0.055792060592786186","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.23-renovate-non-major-de00dd340862f83fb388fdfe5553fe9caba67b36":{"name":"@balena/jellyfish-sync","version":"6.0.23-renovate-non-major-de00dd340862f83fb388fdfe5553fe9caba67b36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.23-renovate-non-major-de00dd340862f83fb388fdfe5553fe9caba67b36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"50ce4a382d58b23121359d0d59b2291725116985","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.23-renovate-non-major-de00dd340862f83fb388fdfe5553fe9caba67b36.tgz","fileCount":24,"integrity":"sha512-o05HS4kVbK71Ah2Of2YIPmYNSkfnt9wpJAr0Aq4MMuutzaw7II/JtcEwzjUwa750w0oPcsn9uzDV3S4ynMzn8Q==","signatures":[{"sig":"MEUCIHX84aTWTXX/SvNOC8CCebCCkEyIqxYde/gwrhQTHXPoAiEAjiJ0XCGjKWeAt4iFjvPUQuMayQ3+yR8EvIvvOlZhUaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0YhCRA9TVsSAnZWagAAcV8P/2nh15Y1ocvEHgjBLOQr\nHJDyE/TRPv8OoD+2xeZsbiqHB9rNF7Gn9HdW3c88KnAxEfSt7VIvsJ/sMus4\nwhUh4ZM7pwFKTTePdscFjfez2n+wyT3INwMwwZsntKKxFeQSEFKvCM7XYvn1\nScSRqn0fN6NRnRzdDjAw5MPcZCcdx+8p+v6kaKNzKeA3ao+lDwPfPBe0WiTd\nsCeOwho5xm3nNHr1bMIjjMepK5/sCXtWyCYtccLRlNsz4TIGrhQRFv4wL0y3\n1ZldJJvl/kdmCM5csEGiQCNRbx3BjOErTjC7YorQh7XQJ6dJQArkAno7tfsy\nV8EeMj9YnmgjGTNG//bwGRhOF0bHTqYBCqPZR3sSOdzAkIiRJCCJv0NZA6mP\nfVg12CSmsRnrUGzuh4/59x1q5yZcIWlWVivb1aXMh3BDfRX+1ZbUc+WCLk5i\nhGKpGVy9T7RpfuTK/zPOAc63Ia32UYfYbc/SRceiCay1Yrh81FHSSuRLA5v6\nYMlIVOwIZ3rnM3NoIA1CTVhYF0Cot82e1ZvPzWfDP8Hzg/Iom0nufOLxmt3d\nh4pB2MYPEgvBvUHMHKn/d+kocWdxyA0N38IOGgvHidAIWOwWib7AnwYDH20o\ngYoyizvUzmXomRN+c4aBAXcEsT7W6Iebr7mr0E5hOqRKGehgymTAVfwtxYCf\nSFek\r\n=mjhQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"de00dd340862f83fb388fdfe5553fe9caba67b36","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.23-renovate-non-major-de00dd340862f83fb388fdfe5553fe9caba67b36_1618691616591_0.718225486384841","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.23":{"name":"@balena/jellyfish-sync","version":"6.0.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9521585f3dbd9cfe547d87a5cb0a9e01568df239","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.23.tgz","fileCount":24,"integrity":"sha512-SvfGGD6rJ90cs2RNu0kDV3CIXszkGHdhMiAYUtYEORgH1Ojb2sM5imMw1Ak63frwCZNFs6J/roMfkgZijxt2wA==","signatures":[{"sig":"MEYCIQDzTQUJEOJOPkJcOwz7JbG24x3doomeMLgAekmio+wIXwIhAPGAk4F9X8BSFgzR5asVcK1bx2AEfFv/HNgEuFIBsuYJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0buCRA9TVsSAnZWagAArHMQAIRi3hedC1OVow7Mfh9e\n7y/Kc19VJKwFQj6XWt0bbX4Cavi7HchSmMrA63v8qVzC8S7k21N20aApanlc\nRAWcuK93VcPqXOdQupdVRzy+BXbDDd0c2AlaniaY3Ui0SwIZqLz7QlSTAsRy\nSQTDul6T7G62buDnyUBatNs6mAdG7OQseqPXGDdTjJll280s98ZT00UY882M\n/nGFYFW8QqtAIInLzEq5X/9JQ9SP3HxpU4xZThO46GW45BrVa2C0J4+DMikg\n1LV62yYQ3UH5JlZz2z8NUQpAKQUUOQj96Sn3faUaRieh6EZHA2wuqbUeJZN1\nULlRjUrK/aP/0YhKQNRILnJ63+Yq3bkPwtITJe5mJR1QtCyXLs5kcoSW65xb\n/l2UM9I6USm3xZNZkMnDGtiC7vS8WcDbEkaqBtUVP2AzJn4vHXc1/NQPB50I\naG0hIUwOZY5Te3IwV2ddN+Vuy8VVA4Wsp7LYgKd62w5vQx7+P9WHiJ1Y0ax9\nN/ViDAW0qvFCWZDiAscKdtceejXtWSpBeCOpkQbWO9GisV1Cw8oQGJrXyD0d\nKkTBvG9Xwu2cPySstiYgsPs50ZDG0RJIYJDdgrgTdtX4NUmoEgG6b9P6OLQx\nnvoMyLOKfAQOXVHJ8D3OU+vjZL5pIzdMdh+NtdJdjRlaKEO0A7LvY60jRy/T\n/wyi\r\n=iLgZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6fa560065f7cbae4fdb42760e2eb77151ffffbd0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.23_1618691822340_0.7126013258280923","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.23-renovate-sinon-10-x-3fd71e43c2fa21855784f87ac83d44a474d2f85e":{"name":"@balena/jellyfish-sync","version":"6.0.23-renovate-sinon-10-x-3fd71e43c2fa21855784f87ac83d44a474d2f85e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.23-renovate-sinon-10-x-3fd71e43c2fa21855784f87ac83d44a474d2f85e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"37f6c12912a3c93676ca6d3aba8a8ea30ab36215","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.23-renovate-sinon-10-x-3fd71e43c2fa21855784f87ac83d44a474d2f85e.tgz","fileCount":24,"integrity":"sha512-KQ8Ow+w5ikTHO5ADqGAmmT3GMGYQzetGdKnuAYH30M0HXOHGdq+h1ZjJ6QSn2IwwC5uWLFthwWG+IjG6K8G1EA==","signatures":[{"sig":"MEUCIQC1vfaDlAFJFF5rVPLB5MjYnJRrPIWcW54L5IDOXMd7WgIgbXbn/jX/666BO1MKmBFcPpLD2aWrrJZearkVY+8kMj0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0fOCRA9TVsSAnZWagAA+S4P/1TKbzeQlf88GlcgYtTR\nMh2pTFgwBAD9lqS5r86eiBCltF1lR7JGE0kedcnn1Vg0rvNybfOG6730s0sY\nE+sYlKRrc/kk2k0WI1PCKKUGM+reFYUl/x2GvaVGm97xakLkLpKaflS0HH4D\nOIqL8TC6fjWD0wMv1vw+yDPCCab34ZQXVd9p0OlzCEZRD0pgMSsxZchPaw13\nBeJVClEoHM1Q/Iw5neifVM6y+IKClVeglIG5F0K8QlVBSrhemk5AlyOsy8MC\novfe8hcmQdjhIdgzeeunP6HbX4GJwcVCiAJ3Zz2GvwxrtiBnaCvYl4xGP+Fr\nG7GOJxjwNp7kaPF6sA6HjY3fvRTvvO2AUkg+DobpRyBpz18RGd0rTWN+rFp/\nMPvgjW1q6soLfVtGCyeKglNVOkmwJVp0lpPkKmwvcZVNhjrmGZ5C6EGmKTR5\nu1bh++t7hu2a8mfxvCB+Y6SQ25hfiheboowaIKW8Y0n8HAxKdTAJMDUS7GCH\nrLwM3LNCKg2o/gC/9jZ42vtG8lgM9CUf1TgdYzAqyUHAuEnssJhxbPfWbgJ+\n3NB8IAlv2Cokd9lPGNdzU4OP7k3A2cNKBY0SBSlhVutuDywwVMaoginUHKFn\nH1VRfjhOq0zIE9wXuI47787U4tpYAZLu8w01swoDEpbQXVwi/5lTejwXghet\nY14O\r\n=aVaQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3fd71e43c2fa21855784f87ac83d44a474d2f85e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.23-renovate-sinon-10-x-3fd71e43c2fa21855784f87ac83d44a474d2f85e_1618692045806_0.9187247655713822","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.24-renovate-non-major-b4406332d178cd60e906e783b13c5d333725a679":{"name":"@balena/jellyfish-sync","version":"6.0.24-renovate-non-major-b4406332d178cd60e906e783b13c5d333725a679","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.24-renovate-non-major-b4406332d178cd60e906e783b13c5d333725a679","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7bcaf558de3178b3898b3f529f0bc0ba6e0d6916","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.24-renovate-non-major-b4406332d178cd60e906e783b13c5d333725a679.tgz","fileCount":24,"integrity":"sha512-CCuWwPT3wMXqkMGGinG/hhxFeOmYy7D35u+iT67bzJZ+y75xK2W1y5OnfG+fjS9W4PCv3MhtOCZVPW5iRybIwA==","signatures":[{"sig":"MEUCIAxUpM8OT8/Sx/0ubt4JbDcTdmslJaIObhOIrBH6IjjUAiEAhr1+UezOkCzqWOXHc+ikhppaQlT7PUlLt5ODfRHTZT4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0hXCRA9TVsSAnZWagAA2ZsP/A8xivecRB2uIVcQ1zPT\nh0dWeSp+Yhkc+T9079cDdqtTWCrX83QAQhSMXJyQAce7Q/6yTvSOi8vKXWGy\npf/lUR26IIRkdQrRm42KmA/8YtW2LMqKbJ8yJh9Jd1zBrBNhAGmA3cCntPOC\nL+in1uBoUydKI4MzTAiiXBDbXVqABLFgKIAzU2sZQdm7GP6EgemF36hshgx6\n3pJJN3ErR1tPS68ogApS2qafxL8W776VNlGFI2tgH9IR/hdXyMpXxv+frEKN\ndavqQ2X+bSHPam0TmvmFHLKFzhnPh1Ibp3wMIZesk/twVFkLTxPd9Ym+7wuo\nAMTxkE5mQAqYIItECU14mv2IezXv1zS8iI1d6AiYV5QDoPxjm5vjfMA3ErLl\n3HFvhO2jxCzVbxVar2ufdq4nKFr2dgQVaZ3fkVl5Ej2dgfRPUM3T+3Snu3UI\nJBApxDEQXeUZwcrho8vx8ixgLkJERc7fwG0+cD1i3qtDz+/CrDlvuD6oZjPx\nb4NkCjr4VvxgPYLTX/brsgRDxEh+11Y85jsytOmew/AH5jFMNJ6UYjZ7Jjz0\nlI/n6zUYgDouXv2XHYyeoqhusWz9XLr1blfLP87/PgWW/Y+ZKyNMGF+A2/vu\n4/bu/TQaN1+F0BkWdy0StlXq02eezl08Fiik8CQphBET4FCV+VJ//i2Semzn\n0sFy\r\n=KWjF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b4406332d178cd60e906e783b13c5d333725a679","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.22"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.24-renovate-non-major-b4406332d178cd60e906e783b13c5d333725a679_1618692183275_0.1568426546817745","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.24-renovate-sinon-10-x-364f984fd20e8fb487a94279e95d404b2c961ccc":{"name":"@balena/jellyfish-sync","version":"6.0.24-renovate-sinon-10-x-364f984fd20e8fb487a94279e95d404b2c961ccc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.24-renovate-sinon-10-x-364f984fd20e8fb487a94279e95d404b2c961ccc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9e120d298c2d243d221c9a480f9bb99da713a519","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.24-renovate-sinon-10-x-364f984fd20e8fb487a94279e95d404b2c961ccc.tgz","fileCount":24,"integrity":"sha512-wdzwjTkaieIO/HBOxqlm3/HCDW0RLAsEnMlA6rodvkYczfX6g5/QW5X/E38sXpcfqnRGJvl1ZdtdslOq2CBt0Q==","signatures":[{"sig":"MEYCIQDn/25GfNHo/gUDb4TQCURW+HK8GP0kdXKkg98/QMVARwIhAM9xEd/Mmd/AZ17dkiqhQQm+DROHLu1Xl6ro9uTuG1NV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0itCRA9TVsSAnZWagAALGoP/iCiMkxObi7xhXsCbH7U\nbxDGqGRZx/5zNvuPaZGYwQdlNtW+fdpco3IBZLrG3Vne9QbHiBRTwRNtgoVq\n6ui2DD5DjDMZZEF8Elet8eW58uR6QO8av/YMkVRrzJp2FZbb0MQ5VgjJcDPn\nJwcgcctRFNY3491430zd7a4XRhaoRKPBHw1+9cHo9XplEHCvYpGbBihZij7T\noUIFObC9jk3lizszJgt1aoaqeQ5pz2pytTbYwpnKN111RpoXLAKTCIJ8ThOf\nD/yqmDfoh4fcXka+X9FULtWm3WzgLScqoAzh0/lAlTU2ZXktOM+YowszqyHA\nepAIYMKTPNMhYl2tE0PSsuIfLzAQ0y7VOfIp7SaXa1EILU+TArJ9YrkPBBFw\ngpaWWIQJTl1+2Moy605zjjEdxmA1nVRiCUw2v91We3CSYavLTpaDQFjLeaiG\nNRcBo0lEk2Bw7A0mTp6X8W78POzA1aWTxRiHgFVxTTRyjkmxbEsG/tfAH8OW\nyto+3jZmowLtQoGGlJ6ownBiS8Wh5KFGKxpdHkEKp8Awyb68MaLltIID0gp6\nM9QRRGNaGOXpJw6rUcGNi7YwiZqVhyB+V+BMg8NDt+AaatPUDc3KmxzI+WUi\nfuEgJ2w50w7bphI/MVmtetWWYhMKovgwWC6CCkxbuSmGzHPr38fEpKrv4lkM\nr0tF\r\n=Ki66\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"364f984fd20e8fb487a94279e95d404b2c961ccc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.21"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.24-renovate-sinon-10-x-364f984fd20e8fb487a94279e95d404b2c961ccc_1618692268757_0.048437327710245004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.24":{"name":"@balena/jellyfish-sync","version":"6.0.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c917be6bba17acb4a0a5673f0690b645bb7d0702","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.24.tgz","fileCount":24,"integrity":"sha512-0HPKcPOB0v8tbDvz63UYOHPJ1yV/Kbsy0dEdGnXcVKd4FG9WQpz8CgMM2m+BsS+MbQyOCdDqzPXNbVGjO6cVYg==","signatures":[{"sig":"MEUCICQcxzvxxVYfaSc1IkQdPjjEZuBs29szMklp8YSnTntcAiEA66UPvFZG7I+Py8O/tbkT4Dmc6i36rxW5t1MgvSkfUKA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0k3CRA9TVsSAnZWagAAIH0P/1Y8Ahx4RVXkY94Uc9+C\n9qXGxTP2nFPuhKl+s6MU6WLcy5kh4IbEu6vA6EkX6M0ThPyTuWDD0ST0xFgK\n9xCZOjTJ6BOWidsrFtnMOmXcPsnJcwpyYhNcEElrVameIMy+SX/61bHwrcVI\nydmjxtFro1RQG5ulcgtSHBTU4bmBbKqepIuVLTle2unKh8bo6xMDEs8XfZKR\n33g1i+afp48yMsrV56BsYnjdCdsn5mATYB0bbA3oLpMEjRoeGFp6/R7+bN1O\nOhHYZMktU52IuAmSMVa644vZ1s/egd+AClPcm+bFDu3PimUfhTZxmbgYuw4V\nrDHNLZIWCN5WphOO47rt2Wi9L87Nn5eyC/RvomSpUGNRJ8OCp1vpyhhzfQlI\nvth3ffMvdRNDmEZwcwOs6wzzzQ+bsln60Aa1zYB8mnFoXI1mycIqU5TWiVbi\nLtJ8B/VnLoOIceuQBZck2+vUVvkrE05ajnXnSAMLjjWf46bK4501bPnVvwh2\na/QUJi6Ara+VTThFp4cJZVQPcPGOpYvvuye5Riu6ORSW6eMGlGmgKlYYu//a\nMuAZoKsOuA4ZGvE80hZ/bvHHiLTXDz+xiU3wZqlGI8gi53F4rvH4n/aXnHa2\n4ZBK51B2yKDYU6em4CMD65jd2jrWuk1RXDZNz9XwFwezYAPjjgkegP1L199k\nRkzp\r\n=a51g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5e577bb5c5fffb479dd8a868b44469addc418223","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.22"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.24_1618692406976_0.8361168584224188","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.25-renovate-sinon-10-x-0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b":{"name":"@balena/jellyfish-sync","version":"6.0.25-renovate-sinon-10-x-0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.25-renovate-sinon-10-x-0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce059e3ec54759856186ceadcd592c0de93ce300","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.25-renovate-sinon-10-x-0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b.tgz","fileCount":24,"integrity":"sha512-VpVvbKLcryvPCEnGXuIQA6FJzdt1I05pLgeyM2rVEqxRSFMW2RwYN/hCDn0pb74FFH5/FmKIMWuUU+jNtRRwdg==","signatures":[{"sig":"MEYCIQD4cXw0OOfUPj2K4N6q12XC9lwBB/YFWXB81MZIQ4vxbQIhANt8N0ycaHucIGPa1PzosQ3er3AMGHRWUGJmom+i4coz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge0naCRA9TVsSAnZWagAA1aYP/0tcOf8YbKOs0AkxKdXU\n0R/YETsbnBtV2bfs4OEKG76ciuzn2MqnMzaUD8pZyTM11X2sFHCuA0KcRfVo\nwesmjms85+sq46JK1OoNPbE3YbWOK9b9xh8O6AsHdlx82D1zYRgxXBLXJG65\nuvpfuzC+WQ0Ug4V5W7f4WRa0GFWzyoLQ34Uwf6tbSNrFkmce55KJNJ599N1v\nIB+Xn/UmuFgVZBYkAK7JR4j7HT2kBCQiAJXcf0lGGht+fpKFGwsBQZTjRpM5\nvfLsvKredGNRC4tUehKl79ZWKYJvaqiYl1swz2GA/zHvKfc4JfdGaNxTLZIn\nOdnvTVOuxhmxlW27LBy9pvMTqQ86BKpwEodF9sEAoOxbtERZeradiq0PlvI0\nb3FKSiDoDkNdaSFcG2VP58+rYv3HZI1my6fWcS6XTnVFxD9+cxmGOi6UT4MY\nc5vJbLN14Kn2c8dzjdNE6tij7nJ0aiaFaAEI4JPs0OX3eXdgt5/99Mq1nSZQ\ncZ+lR4wm4DOHAOenOqDZV42R45B5ZpwQQLD6fFb0soTWeZ5xsumebyyewB0v\n4938ILdRTN2tl44Ko6RUEUtLrEhXyieAo8IfdHYj7SKQqgeBxw66CHIY+adn\nm7ye7/HO5h1pLjUZZKsXbhD8eHODxa0iga9B6KxwiC7LDDWq/AfEBhPUxLry\nMqEh\r\n=Su7O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.112"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.22"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.25-renovate-sinon-10-x-0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b_1618692569602_0.4826025238020546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.25-renovate-non-major-8217ba051e29d110504504f6f4867327f5a523ee":{"name":"@balena/jellyfish-sync","version":"6.0.25-renovate-non-major-8217ba051e29d110504504f6f4867327f5a523ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.25-renovate-non-major-8217ba051e29d110504504f6f4867327f5a523ee","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3334adb44f6bdfe6b39d5d896c82b28b315217d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.25-renovate-non-major-8217ba051e29d110504504f6f4867327f5a523ee.tgz","fileCount":24,"integrity":"sha512-LMjvCDkQbL+6F77VJ9Db0v9eJcbGYgyWJSFXsjYazNZF+tSPUV+ePpMBuWtrKKnvMbTe6TGphG8A+rvXbRSHFQ==","signatures":[{"sig":"MEQCIEICNBsad5/SRKPnuI62cex7GP5/xnHBN90PU0QHCvVcAiAer21AxOZgemZdQObA+hGP7fmIufk8JKPmF++f230k/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150712,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge2BXCRA9TVsSAnZWagAAO70P/jdir+WfAzh/fb5cTsWF\nRxRV0QGUH8A4SxsskHpGVAGVV9d1Ak1zGf9cAK6ixY/jYQEhQhp9uuVPYhAh\nIhW7L99lCKimNRRG0hXiWiVzWKRaRAiL+mO4pI7Yf12LOkMGovJ6V/ZtGjl1\n1be2o8ujqn75OWYAvAkLmbar8bSrNy1VF+QZvB9xMmxLtimh8mqZIMXe5HHk\nS7n1lqXPc9NVgo9wj7UHF4lr2XxBBp8uNMxx35dAfPGMOaFWqfl33TbtrHvu\npDGv/00gPzu7MFoC5R0SRFWTdvJYUGfmHOpy97VvB+jkMVLfSR4UpM+L95Jw\nBcrHHkgYvHy9fsjEbdyJtVJ1M2I9wb+FKBHTvhLzg9M1mMxLn+3Mi6boSUA9\nQ7tP5mJDlEX6cEMgHTqw8Sl+COzepFXCAvov2UXMpX3bwmGPUqp8ndu71ngQ\nITSWLWstHUtl+azOnavowXtEsAMSkmm1I/svth2MKSX5hgXICkQDhQpMdqhQ\n3z6517O6VlzrHo9R/pRb2fU9gnj4AZG+303qZXlAJq9qwBh85a7M6z6afUbl\nA5eNQzeSwSr8k5Dejn4QqAUyVh4feivYnV3+LTV/zAP+uIMFPkXGd64HUdY9\ntpVtRZLB/70c/QNaT4b8KwJDSqxK+k3YFZACXdU6aIZjR2l6otEaHQivVhCf\nUSMg\r\n=PKLw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8217ba051e29d110504504f6f4867327f5a523ee","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.113"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.22"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.25-renovate-non-major-8217ba051e29d110504504f6f4867327f5a523ee_1618698327203_0.029081528286988734","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.25":{"name":"@balena/jellyfish-sync","version":"6.0.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8765219154964ea340a1d67924b6b5602d4f4764","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.25.tgz","fileCount":24,"integrity":"sha512-9n2msoidfCMqiKCP6f7uddtc3BV1nAjPJuDzhaGbu7502ScE6tA+m5ciSEFfFAk4x6ExvR/Y9Qo2pSpkwXw7DA==","signatures":[{"sig":"MEUCIQDOdvMpYz2S5u6lxH1ZQW0lhl3Gu9/6NqorM/zpyE6W0wIgJcoM7/b2CZtDsXDLE35eJvgPx6ZeVxQ5SI7FmClQ1xk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge2EcCRA9TVsSAnZWagAAPZUP/0AijYoXhcXWzDuk3DrB\nUu4GpS8RwQi1GzMj5xDIwoh3zkQH2zBuYV4mT72Yryf3H1j3kkuvM9U19ReP\nHv19OaCFBOhj9erxbULAFN24w6h5rKwZCbL18X/zZoEK1svDAmWogzU6IPmU\ni0NvV3lgH7ypR9c/g6O1LPQWyVYlKVOg9G/bg6gbnScJOI1XqtKPJfhOcnxZ\n/SG/TLUU1/+3din4NNF24tQKboeQuN0nUbUvJ+BhsRHh9MIZXvgPubNXi7Yz\nMBq6bgIRkQ9Tfk8Aw49GmDpSqQEjyl4gzMglvB5b49FrAWpDR5Z/YqB8+VWQ\n8O2hzQZevZRSf99iHOtcXiFfNLtP6WPggpG6Y64QOBoXi557kP8pDaJBTmMW\nCDq9H/ZmPaBamjL5teGRSlyqXGH2fwwkB7Wntj1F6rhZ0gZyYDgwa1pNkQfE\nNS8eNfVrVLK0QxZcAQTkSBtGXcDDrPonlX7SYujcSwJSuDUmpuwqBJZ4zfg/\nIoFuuMmHB0NbYrnjh7m1UNTXSm4gl73EausvHOrU3xnmCparIgAk0ghxpDr9\nKtTRz4rPNhi+QfYqFgcUTNT4pmXWp+MqHe2cJsDslTevtLmdI2u42YahJ48M\ni4W9VNE5AJX6P+XRrUmIpSnHRQx+X4sASONBNpFWjfNwBEuxudPEDsSJPmiL\nt9+o\r\n=hPmW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"baf5edc28f8b05735915f21b254b37015daa43bf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.113"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.22"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.25_1618698523804_0.5784908419357193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.26-renovate-sinon-10-x-18495281941c70188d4784d5bbe267ef2876a0ba":{"name":"@balena/jellyfish-sync","version":"6.0.26-renovate-sinon-10-x-18495281941c70188d4784d5bbe267ef2876a0ba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.26-renovate-sinon-10-x-18495281941c70188d4784d5bbe267ef2876a0ba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4cf728d8ff32f630d8ccdf1dc58bcf12cf3254c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.26-renovate-sinon-10-x-18495281941c70188d4784d5bbe267ef2876a0ba.tgz","fileCount":24,"integrity":"sha512-yHPgBQ1+1P4J6bczSnHjxd3y4w3SED/0uKjMfMicaw8NYGZQyZDgNCiwZ6mcgcQ/w5zqtuYa/xNnUFbkLSOe1w==","signatures":[{"sig":"MEUCIQCCpKwe6tKqbg+0njLlXc81Y6Woh5MoKf/6P1+T5q6gLgIgBJ6D2m0uqXNspxF5pmH9zCPuCAVb+OB9KhGXWbTY3kQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge2IdCRA9TVsSAnZWagAAgbgP/1cl165NB4Ki/EoI2z+k\nNFeS+3dk1E9d06UNSEB/uT0s8qTJOMjs3TzhWrrepSjfJS6bXU+LY5lLbaRm\nTkJPkNd13tW7tfJRSWPh+PEaDf0tN2co0EX4yv3PkUjBQkQs7sjR3f71Mwwf\nOaDgzHnL3Xx22GBw0EPyZRmNT7sXvWeQxq5LNt2AuN6ilHBn+2HPWIU7BFFS\n+7RYkv1ROqMG7BGUsq2pMrXnR5zoQlEEj7XnjBxRTQJYYFZqUoQDeLGxDfKU\nEq8GJlcNEyRYR6Du7vvDn2/wPF+2aPnx++peqSB0tYMl3t77daVn3WfMXJrT\nPdne77Y2apoITEeJfKegCWSRcWznY6Qic/08ndmdGo/K/m1gAaBzelUd/2Yh\noqVcKS0AdGfNEKYDagE0F8q558ii4zdR9G66C5Wfbw3dEHXRjL+oZ++4Gokk\nTjLz6GGdZl9b3jRR/0zoY2Ozk5V+Rd600u2zW8BOH/AOCJuMeYNK1B9Opdvc\nzqE1Teape1wSJzuXBBviIkvxwSFWHfYd3evH8pwPUSnXWTnCR0BbTCSClCL2\nSC5JSpYTeQuMrgr5GDJMyvEg9X63Sfo2VCxAOpIAPsWk7in2cAA2bkhw81ou\n6VcBI6e2yxNj7T5p+teNIIVp6NqUadf3MFrpOlSkinxVY+Bt4uCijFtx6F61\nERUR\r\n=t87c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"18495281941c70188d4784d5bbe267ef2876a0ba","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.113"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.22"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.26-renovate-sinon-10-x-18495281941c70188d4784d5bbe267ef2876a0ba_1618698780956_0.7192916785930141","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.26-renovate-non-major-19211077bff4399c7c2010e08239f9aea4868dd2":{"name":"@balena/jellyfish-sync","version":"6.0.26-renovate-non-major-19211077bff4399c7c2010e08239f9aea4868dd2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.26-renovate-non-major-19211077bff4399c7c2010e08239f9aea4868dd2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5e2d3d68b5c1145d442e27b9517e21e319366ee3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.26-renovate-non-major-19211077bff4399c7c2010e08239f9aea4868dd2.tgz","fileCount":24,"integrity":"sha512-sZpbubtjkEoS+yHFf8GDm+Ku/3HH3iDH07VzPwlbMzVMqCZmz/BpsIWmyhPBop0vzYsRgbKEQgKci2f0jcL/lg==","signatures":[{"sig":"MEYCIQD6hr4jtXxWcv6BCyzRMdrmjR333afu7eB+p6j25M8GswIhALLPmhy1vRqxfoWLh2zmRM6fyb+m0Qlb+7Vdw+cqf7+i","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge4czCRA9TVsSAnZWagAAXKQP/0Ij2nR7/COQOWNjmdzt\nqTExEzxgwyIxqPVEk1xgQi7dXdhCDqioBMlmd1UM1tf2qR6KrjM3KwyRatuZ\n61vP1mAAClrfxgpawbHmz1Jk7I+4HaCa/aXqOJK2A6nWJTznaJU1uro1er01\nQ3r6fSgceUFKNwy3OTzsmbvy0sHiUKMEPALoqdLnVcsIh9Tmrjmp1IpK5AeW\nMawAG/ERmwctasSuCEnuPophAKDeLF5wp7ozQwZ2Yo8+ayPkSJx4EQ5wwoNM\nQ8NgI7/SZIIXkrOYYNbd92muyse5ieqnr+3F3tjkJAEe8NZVdK4tTNl/7y8S\nun3UiOvdGcAzFgIOEDSt3XfswpdaNdtKVz/Yh+rV2354JYA1tRTqA1KjbFny\nXfByq5yLqqzpanZ9GOHpQ5jnJwfGP/GU8ipiBuTRdxfguGL/k+CWUwvmosv2\nejNPJWqQ9Jd7k+A7zsZimJ1FzqrPPdEyp6bxbJSlrXBCsf86cq7rWS1hLlpD\nQxe8C6w3LQLE1wkIXrJjoIRTrsqt7HcikzjVSdxxeGRDfUKwQnOfX5FPDqqf\nzP8Prv1r0UpeOPOzGPGG9BgfE7wF30CkFISP89msKzhpyuqF09OYpou7Xm2W\nQoDZIOvFOXKj2qN4tmJoVMeJTIOX1IBnSoj0PS+cNgmBxi/uSbjj6F50fzmP\nZr8D\r\n=or3p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19211077bff4399c7c2010e08239f9aea4868dd2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.114"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.26-renovate-non-major-19211077bff4399c7c2010e08239f9aea4868dd2_1618708275079_0.755402433378866","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.26":{"name":"@balena/jellyfish-sync","version":"6.0.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.26","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"50e9ac469147ea04308244e931eafe491a30edcc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.26.tgz","fileCount":24,"integrity":"sha512-1UYxooJcbPbqgd90YoxEkWlTezTTVr4IXNASlKc6FQVTCe+GQ669QR/AcvgAxTqjyiqfOS5nLI158DN/p49/0A==","signatures":[{"sig":"MEQCIESqsxt7Gp0zU7GpWLDaUtyP4XumHqpwfMjuaoCVALNwAiAOe3hw8QxXVCGTzmZ1OYTfGWB7XYUGI4bvD39Fxvx8GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge4gECRA9TVsSAnZWagAAUZoP/0LPCulkMVODjq9nGJbZ\nEHKRe6fTQeL3Van0XG2vHwBPiaZUmMM3j/IO+TbJRxKoxXFKCHP0t6n4TsES\nsOjPCp1HixSgBVL4dQHAEz8wvgY+iykAmSPk/C08ph3GEZxVarTS70CFSFds\nO6YSWtOeqOUSBqc6d7ehJ/WEBqMO0wjqFu9dXkeqGNXqqCQGqpcaGehnZOiU\nmv9Q9PhUmdn0qzYNNcNotME7m9ZUjAPQ4WkVk/wPCEBAIlu1T/AO4JUNXXjo\nVuYQsYLWG/hT60KSTAlIvQsd4/RwZrcWyLciZRFKMF6Ztwp117GVfF2Hy+NA\nu/APXk9IYBOT+pXNsDdMjWEPb7k9MeokUEqIoEP+ztx/c8cfqSZlEPWHciHj\nrVErl5IAeMy5f3QA3IMc0ccS+kP0VuEdGC/GsPLkxHKo433/ixV4zKhmzlXd\nvXF2nMyxMZVtK3AueVMROjQfo+6S/2KZu+HmiCEW44CpXlbpQU1kOGLJ4QuF\nTBjnvlZqlnIaYSIPVK1g9FHvdTWvmgKtSShFPkXDOmsw4qeqh6UnuIpupVCA\nCcdZxpDvVQdqhjo55gBmfB8Gne6YkhA2i4a5/aYIxtc3p1G7xC4BHFkL9dBj\nmPMjW1YEy9kDiquOsD34Q9l7hh/rl0+jac4PaeVIKJ+oXwQWALeKm8ZgOvsm\nnxWF\r\n=k3ak\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"feb222a183296d4e62242ba19ba25f0bbaa01a34","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.114"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.26_1618708484222_0.5133875307415585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.27-renovate-sinon-10-x-9cdb61519f0bc0b1632974baaccb6d288f8e9cbe":{"name":"@balena/jellyfish-sync","version":"6.0.27-renovate-sinon-10-x-9cdb61519f0bc0b1632974baaccb6d288f8e9cbe","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.27-renovate-sinon-10-x-9cdb61519f0bc0b1632974baaccb6d288f8e9cbe","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46816b30e335926f5529fedc4d41db3a7c74a530","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.27-renovate-sinon-10-x-9cdb61519f0bc0b1632974baaccb6d288f8e9cbe.tgz","fileCount":24,"integrity":"sha512-juMJF5lasAc6AM7I6OEkluPpYLAWWjGGnPrUD5mx62NM2/AyZy9jqh4aYB7iw3YIVEcaEYy40YHZXDl8KWqKQg==","signatures":[{"sig":"MEYCIQD+FLHi+3CexObGy7vVkp9qr3WzVlTSYwR9uipBgyEM4wIhAKj+2KDuCAsbKO6yIq0WG7ArGRn3x8V+6mEDD4PNRKIF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge4jcCRA9TVsSAnZWagAAO/kP/0tw01R1tMYKJTEDNIbh\nZwq8tRafzdKTZXI/HSccQ11aIDIME8+z7ySQz94q4axef780IyQLqTl5VwlE\n5epK3HaPDknP8+3m9z+5Y5PDwNB4cyW093QynMMCMICN18QTdZi/F1q7d2xV\nRVZGBzPDnljt4UQgFHol2n07Re95iYTncSnuLHWkBioGsNv6I44vuJi6faAg\nW4Yj1wbjHMMqNiVpnIZNNclQbsvrfSnyH0ZIL3RenR7bpfJSJ+vmvg287xXX\nYfERF0VkJzYODH9sDTHcX4d4SwI2iNG78gJ81m2L6xufqZsZgjN8zJfEDYR2\n4whggx++xP/RAcSSNMLq0wXZLqW9FB8f88hEuWfTTCVdP81XUpDqJzQ+tc5U\n46FMcSVAiCCy207Py1xe4u7TNEEJGbE23mwbpzLYoSxxcbyrzb2qSyD9rko0\nsqxRWTQABs+6xKX0cEb8+Nxdhk25iDkwcSkGN/RkdtPBvFFKUKMrRb8NLRUq\n7t8PZzON17RClrAFv3L11fHSdpgemUoz1IPBMTczJAiJPUSyEjaEM2G1ICxB\npwmBBGXpzTm1zwcHSpt23phmbgO/I7NQ7y+FSYtS/9oFbw7DCWSSrLHDL4UO\nA32RG6H59wT97mdXJS9zeuoV3RLLNiytIa2hUhb5YPQo+8EKukhHCxNYlDuW\nWgUx\r\n=JUJl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9cdb61519f0bc0b1632974baaccb6d288f8e9cbe","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.114"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.27-renovate-sinon-10-x-9cdb61519f0bc0b1632974baaccb6d288f8e9cbe_1618708699566_0.15672846368771087","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.27-renovate-non-major-61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6":{"name":"@balena/jellyfish-sync","version":"6.0.27-renovate-non-major-61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.27-renovate-non-major-61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2753361b6af16333e13755f88fedd2966033f18","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.27-renovate-non-major-61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6.tgz","fileCount":24,"integrity":"sha512-9cqKwTAJWhfmxfL5IRbSFoSI4WpS5T5R3IemL3w3YcFSlDgY2GReKe6nGlc6RixsUjEozXfDr/5TtM4MzihqkQ==","signatures":[{"sig":"MEUCIQDwPixdhGmIeim3AAQsenV0wc/N4Q771DrYJWvk2K6J+gIgC425CEpqD1fyhu1ckApa6/lyPnFM+ynn+98T51fmR1s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge6eRCRA9TVsSAnZWagAASDAQAIfJp/c5r0mTZyAWXV/1\nVidBALZinDEXH2RiAv6hAmMEFyMxa17acKCEFlm5v5UrxKqKG0alwEjPYPYz\ns3FyFQsdSPDqjL6f54gTHYI/d+VH631eQdHEbvwY+ZWvejATOPbQXulWytKd\neI5HdHIzhqSxCfwn5n98jfwOsQjmaoWdCRn6JuZoKckhUTCfJCcCw6ML2TKE\n/uckGG83JGcEwdYPLw52c4mNZy1kfjtiqZv8JAyAXTyJ3ggH21BneyAt6dwL\n06jMZpdedOM/6xokLsFYtZHm9p/4xN35hnAGvmzv/SfKwzjwHGa3jgiS++Fd\nBRXjiOcysAI2Bd1Pzr6flpeQoVba/iWPYHtFWNPPjY7gKaihdKz49VAXa5pH\nIx6XpP6WkuWxKV81/ZLdu9H+o2+Avv1yUcJ+VJm+TNlKO9ObfaeeSXTPV91Y\nO6vF7JDyCO6YvMnrZ49ULdTlMgWTuZtxbvWgwhz/vthFVSAhXnIx7NODvaXl\nKVoavkqqUfbquxF9oZvmzmgLzUuGludIsmNcR1fmNeQB7R5GnS0sAaykKchf\nU0gQT48hCqLrlkUqjF2xBl4MdfvGpA6xS+FJlGfP+uEHX4rz9G28yFn6w6cv\nUmJ9WUD5sO8RHqKg7Nk6oGxn2gkOD4Yc4ajP++0cctT9jIY4EFqUID58q0mC\nx1VM\r\n=I/3L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.115"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.27-renovate-non-major-61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6_1618716560838_0.44303996015614455","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.27":{"name":"@balena/jellyfish-sync","version":"6.0.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b975852f3cd3e5837129c9317b03803aedfb270e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.27.tgz","fileCount":24,"integrity":"sha512-njEoU7ddSein8M/eAWSm5iHfApiZQewFhtDtokvS5Ryx4IQlzSicmCYhqvJOMlU8/Qh+rNa5+Mtjyqmrie+qtQ==","signatures":[{"sig":"MEUCIF1YjM1KduaUEEN2sjYRnCihdt8c3WtKc66P8uCkNd4YAiEA74ljYoXF3TgsTm67vzrkyE8TWaTqtq22cIYOPLvlYhU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge6h7CRA9TVsSAnZWagAANvcP/27CEw2/LUR2n/8I0Ca7\ncdDZNelmCccKl3SKQXTNjjC346eZN1aBHx/QcS9QgteIiaf8Zs5taIDyyKfQ\nSfh5wSc2G+cCkYfOq3++AJyl9jv4asdpss5sXZyUnZJLstQObZMLQ8RWRbJP\nCiiDSD2MCO5eGHakfk1+2hMnjd+ZBtlyykAyBTtPrDnIkN00damrd/SVnUuX\nQhNEFDzbZuU5y8/a4QOxXhkRegtPqAFXrSVX759shqSQsclqGPTDFaqQTcGN\nxebre5NArTrv59VYtOLZJFJHMIq2MoGiyZ8JdB5xJqtiZTDtnvaQyElKEo3q\naqvrfmW00kPyGplQ80mCgtexG2mm4iyIxIgcxhj5ajvcMRvbHmvRFfZ/WlZ3\ndUWvGkiWABVSMWS1lbH7tvE9lssnOEpWi+cMZ4C3R/Oxa4INPqeaqBkctOgX\nDXoNIZzRocd9/tb6652u/7xuqUvZYd+Kep3OojMS7d/5dIG4OmOnxWioUtFr\n3/uVvXaBuaZkw5yOoMxIHVls0oceszMz27b/OF+pP85ttLdNDkZbAx6mlPCv\nGs7erTBtywaY20IxroyRoQwvz0CFVVYQ06oJm5FMyJSJi4kSJrV84ULqSSJK\n+5Bu57zESYFNjNmfVRClpyxj0lFCrTX3QnyvYv71WBR7OoWrpSVhymH9ouk4\nsgc/\r\n=1ju0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14bfe16dc6f524d98527561d0568afd2e50fa51a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.115"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^9.0.11","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.27_1618716794685_0.6911924896437756","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.28-renovate-sinon-10-x-483292d13b87b0fa84b30fbe612aa3568b97d625":{"name":"@balena/jellyfish-sync","version":"6.0.28-renovate-sinon-10-x-483292d13b87b0fa84b30fbe612aa3568b97d625","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.28-renovate-sinon-10-x-483292d13b87b0fa84b30fbe612aa3568b97d625","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9b789e8dc7a7d4ff8b9017f9088c458f00170fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.28-renovate-sinon-10-x-483292d13b87b0fa84b30fbe612aa3568b97d625.tgz","fileCount":24,"integrity":"sha512-+wYjbSKiV/CtmU+wJ03SIDxUsak+zNEaCC89CYbLqaN1wtQlddeGjffKlyHOoxQ1g8n6F44har7dWZF8Fz2UEg==","signatures":[{"sig":"MEYCIQCEKKeI1+tdxSxdem/jH2vTOxvEjJ/13rQJKgvsrp8v8wIhAKi6jUOIbm5L59/ijGwUxyJzgcMyW9WNl3fDOUiuoWRl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJge6ktCRA9TVsSAnZWagAACB0QAIMpNasDRBFiciUApiGD\nqpLyiAWp5JTuBT4wvlwNcaBjn8KKQ5/s2AHmTO2ITSi4/jco6MXHb/d+MuGh\niedsCLzGlBUX0aie8CSLieB43UUC5hwF/wnm29QSyySVqzrX31PrVX9a5GQt\nXrUphzEohJ4vcvnFShObnVAXYl0FnGwE4UUyPEL8aC7VrjYwNUm6KwXJNAvP\n7+42+Ylujd/OX9/7ruWeGEhly3Yku3dKr0tXAjPug6ItKFXKneqdSe9YgyKu\nRh9PE+3bhQ4lS8nAyiCmq40b6laM/OEkCUGKMZP8oUhRR9n9/0JABC7JTD7l\ngiGuke0MseBNOLsUCdeBARV3rKO0BJtDB2TmzOvUDT+JJ6Df0XvwrWX1DneF\nqZeZRaNLJtmJ5do70cYc05aatEhl5SxageNxXJO1lIjq6sujuc7FdhO6rCgV\n4oVy0riWC8q9X7ywp3a8Q8r7nGU6vVPHQXaE8VWuRVVfHZbwVhGJDN+Jkz77\nmFCGBbuddAAq6g/2ABiotuJteYuXdePPLhqx9NWB1vqlRMQ93Y6fTSoNIDZF\n0UlyAFpQgmR5S8eWBbgGqJQEjwmyhMe0dTmhkf0fmLwPGlzBJwDh1eu2zaLw\n7rHtAr4XS/HDpWXh78TSKAaREsq0huTBqHXp+h7n4Iw52gAtUFFqGDomzr7b\nnB7Y\r\n=Dwuu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"483292d13b87b0fa84b30fbe612aa3568b97d625","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.115"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.28-renovate-sinon-10-x-483292d13b87b0fa84b30fbe612aa3568b97d625_1618716973419_0.3861457230823575","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.28":{"name":"@balena/jellyfish-sync","version":"6.0.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.28","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87a7ceee28ef32fbe0135384d4edcb7591b4aed0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.28.tgz","fileCount":24,"integrity":"sha512-JqYYCiT4FldnJyiVUmAlzG9g9UNV+/OA13DUF0XzNR/BbpZ40BqzBIpMqF599qBNbvCHGJxXF+16UaWvghyu7Q==","signatures":[{"sig":"MEUCIQDC+h75EI8MHeQrQtRd8q9exuTuD+a9y1ti+VHPHiXZegIgL60xmkR804QS98s4AowHsEt3MyRFEjl2OFTU+rHK3so=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":150910,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfAsTCRA9TVsSAnZWagAApagP/iYox8XtgHHv869E2Vs1\n8jEm5EOiE//apG9qbXBobO8siJds36KgvrzlajEffGU+4TB32Ho3OwntcO1O\ntJDT+X++CvmK1mMe8S9BzhcRyJBdyXG2+D10jXcEPBdp8k4py+m+7gC5DH4P\nGXT9tJiMFz8Y4CuJXtpHHi9w/SlkHKnF3B3x5p1pBB+Do9R54gJMgbiej1rc\nE6qQZpuGsSk6Syuz57r/86rBp/WEr4XNL/k3vOH8y3aaO6oscgSKCXZwVQCS\n1EDxyVCwcANeJGrCAX6IbHv3ReqygvWsgKEEfJBRypR5WDCe8iagz2b+rLCC\nS42s2yNh4WE/erpUffxaXxIaIQIqK3ltM6eAjhJ2AdPN0eD578fm9srxL8c7\npaaXU8piwBszticyo92PupJtfg7BPrewod587/ydZgU7/ODj8aknoLgqNNpQ\nYn2GZY05owIvR3hgdMyUHT5R/KpkdaXqIdN16Iv2vN9se9iM1jF2iQBZWLpX\nw7TahvaOpl4TZ5E3pP9vMPchO+00CP/tNXncuil6GK+0Gh1XclkXJ8/0mp5j\nANopU05nzQt5DRnRxlMjXYDjvj1zY9N2t02+fONLogwqeWCF9VZubKEjf+x/\nZOon7hoGXWF+7L9a2fTF23goCTlt/09sXtzKKqc5mSwMTMSATBCMQ9+88rKZ\nGQ2d\r\n=QzKN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"88a1f4f95f1a3f22554f24942a50c6cd21d2db0f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.115"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.24"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.28_1618742035021_0.5502906630312814","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.29-renovate-non-major-49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9":{"name":"@balena/jellyfish-sync","version":"6.0.29-renovate-non-major-49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.29-renovate-non-major-49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"909695e82d9d4fade1d690b195ab209bc4641077","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.29-renovate-non-major-49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9.tgz","fileCount":24,"integrity":"sha512-2jro2vRBjrdzTE1EYhMV1+7FPBUjtGgItbs7mjvTNM/a4Ybbl6CmVEJxqnpe5uPiIYS2ugJvrUsEcdTJkuZ80g==","signatures":[{"sig":"MEQCIGYGhTbm9GTk89Na1inuUH05j3EPuWLe4wtUa5CsMkEwAiBgQXbbzcW3O8jrvmcx0b1P9PrWWNBm+b/THMhcUgSmzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfDFZCRA9TVsSAnZWagAA27oP/R+9aeSmUXhqNbOWiGJL\nk7jQbTqsHyTGv2sXLdkJd0IoDTh8Exd4dQ9WrJ8KkbEOO0dxYC647aV8w9yk\nAd9EXQd2GZnmnPZkk5ZUKBOgTXy48GUdpBYdTJtDsr7M9x2BXCTwj3PEs/+F\nGT10uTGoNa0kaPsjAHdigdF+QX961Mur/73o4RRfU6ysJPQN2b44nwkdFAaV\nfwJRW77xNxnywdI2OvH7tDen4Lxz3V7guZY20g4KAVTe5VdpMOZvh+/7OGmp\nzLbk9O7bvJk6p6sHnLlczL2wqYNbjY39IFe/8G24AdtVxAxd7eimbL3Ipr8j\nGVLSu7GwEZVUkDhNK00GMQBi/HhfjpR9maEvLYWZ47H7Z8S3DZOMtdlX0m+0\n2aEyMPywhERvWWqL6bFqVFahLL/58lYpdzT30Wd1J0lmSsySKJwohGn23eVa\nXXb461bklkXGQ298p5uBP6N+CWZGSFuJfKgLB8tmoD7rfr9mOizS5PNKQtff\noTAImc4ysgjDeLIAewM6DFnMd8Og/k3X75LogYT8f5vZC92+jSIvRizchoMm\nPWQ5G6wvZ/97svADgbqCdyliI+gJ6n0Vfo+PoGNuwSxcsDVrfOxAqKgp+BSH\nLO6xeF9wn+JWe/oamfLw5orNHAOFaiaM1GQjIwvPYDoUW29slk1ZXQQFCWSH\namAd\r\n=rjXt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.115"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.25"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.29-renovate-non-major-49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9_1618751832928_0.22490584389611445","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.29":{"name":"@balena/jellyfish-sync","version":"6.0.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0636a49c1addbc1c44db7251b36b8c65f4b1006","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.29.tgz","fileCount":24,"integrity":"sha512-0wPGkj3zrD7lCycO2QmRUgbQNBG1wrK2lZPPbYKGXr8/Yyst1UxaTmewHZi7hW1udJDhfCkIEk5UVld1g8GPaw==","signatures":[{"sig":"MEUCIQC2kMqX+IUi5Vp3uMCKqy8P36z8UWloqDv2lgzTVnqYRgIgWpAbmvzKJlgJRhr1HD1BCICPqmpShmgPN7KOoD3794Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfDKRCRA9TVsSAnZWagAAJasP/1/v8Ve8HJgs5meUeuk0\nVevoRZWa9wD8/bb8H8YbfUm+qoQvK0D5xZpWPPFRrCHEqMBoN5lPXsMgtX2M\nnrJtcG97tqCHCPmbJ8enF/d/dgV2vdhnE0TBcDngKrVFjfBpWMuyeVmdWmJg\nXg+y2QRUQiaQNbtPtE8lj1trmcvnQT7on74hXMfwQcgQLRYvARQ8+Bk4GPkz\n0XDkmToGcA0cR7FcVJ1OxRyLF5DmngpbqpDBZMZEn+iX3YVXDDTTNcGvH/oJ\ny43u7udydWg4CJFyVWVjrizS/3Cmy8SxKe6klcR2bXBljTt4L5dRVwM5ocZx\n/dqbswMtiiFNJySnMa1wcdCd4vhQ2V3OiJm70IVOsLBr6HkobLF+b+PM3JxH\nM/BjgB8g4rrT0B7593sO96+f5Xb4EMnL1/rtup1/7miqaytD9Ca70M7o8DCm\nD8Ug9nqjj2Wo9A1ksSkN2u8A/HOtZLV9drzYsl1UM9MN+5SwUHW3iyQdrQqn\neDb1wT7UyXkGwKA89us0KL2wdftyOKGDujI2wEi6vdmqxzmuWvVDin45GEQS\nFF2cNoVQJduw1cM9+M08ftbVnLna4CMJHRiImHSMHAmpO6jpOLRvsXUVIE9Y\noNfaCMZY/atr9xf8MzEJ+yggdb9onNgtsNjePO1CtNWEH/Zbuu92flhYEHs6\ncWQM\r\n=dWZI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d943487d36f018e98b10a5d755a0c03c5b4b9bc1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.115"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.25"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.29_1618752144672_0.49111207918455957","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.30-renovate-non-major-75ca8d28411d8b475775748f93bc24eecacfb48d":{"name":"@balena/jellyfish-sync","version":"6.0.30-renovate-non-major-75ca8d28411d8b475775748f93bc24eecacfb48d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.30-renovate-non-major-75ca8d28411d8b475775748f93bc24eecacfb48d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6415f860991df4965eeff534facc7ec159f6ebab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.30-renovate-non-major-75ca8d28411d8b475775748f93bc24eecacfb48d.tgz","fileCount":24,"integrity":"sha512-edhn5DHCO8FxAo/jIZCayF3t5QfFnNpOxGuQUYBh3G3WBJI4BsFHaxxlzhGXS4OqEaNvTUPHC2JJGCHjXnOxzw==","signatures":[{"sig":"MEYCIQCiWtxoTqCARqa7kYfvB/uLXZQI9guCw2xDgoJkk43VRgIhALFI/PCn+P2HJ2vvWFp18QJ8O+oT8qwS1KonrpQ9XCp3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfFjQCRA9TVsSAnZWagAAMSEP/iqodxqBkmYC7uNbCGoP\noFdJQUaJ9uEddk8f0hERjdPCu9Bp1wtSS9mUNqR1A1M0sGf6S6LBMeRRYsCx\nD9TXJwUsP3SGCVn0yy3oQV4x8apyuswDkMwh4YyUfRmrQjbWKxPc+bPzS5Cn\nhXmEDxbUsFH0qXBnO4kY5a/8bsv9WuJ+zplqKyIobnrYrARaDJLZuP5RcsTh\nosQ/O7zfdHu7reE/ccJEhiKSCprWuW3kFRZM16fvXBS2z5FOsMoUuqbFIZJp\nRy6cTgD9IKEDsKMgdLsCusYfAwwqgN/1ZzGHQfv3fsk0eS6hG90PPJYdSg1H\n42vtwb6Ai78o73D5FJD7q6ssAanWfHnJF+drk9czbeiY6+c02zHuM0KaTjY9\ns4/FK5EGA7wom7vxjvprRRREH02F5Gzq6YCu5CqLrbTSWwjiDQixH/2fh+/T\nuMDbws5zaEDpTxjyL6aP3hhDPSbio8Ln0KjYD6H4RhevFhufh8kNbm7B8MnN\n80jzpYoxTzlk1cyAKcJ6c+y0YlQIcqQ74GHF4SV+/YOYblm+TM8vUW6KvdWN\n9Ygjv6wOD+1glYIw22W+GOYozfMs7OTNGazMhsbxWFOJ41nxDXtbpDyqzTTr\nlDgCJS9wWjNoqE4Id4wmLXXi5Xde88ceeFlHIucRl2VdJ0omF1xveTkUMRG/\nIs7G\r\n=Pr5h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"75ca8d28411d8b475775748f93bc24eecacfb48d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.116"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.26"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.30-renovate-non-major-75ca8d28411d8b475775748f93bc24eecacfb48d_1618761935468_0.574025882646434","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.30":{"name":"@balena/jellyfish-sync","version":"6.0.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.30","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"faa79e580b71348fd6fe06aefc40e8ee2866ebd7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.30.tgz","fileCount":24,"integrity":"sha512-1ktF/3RF9PmlSnu7/1Sm3jbYrRzf14Csk82OtP+28Un3WjazlcmLO/bDO1u7coOmh6PZqLeeoYFqcOciNPX1AA==","signatures":[{"sig":"MEQCIBgDGYg+3ob4VbDtaf4c0SS3rQvma65081fepHYl86VFAiA7fH5twT6+7Ofk07k/k5d711eZTXWmjE4UAwu34pknuQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfFmRCRA9TVsSAnZWagAAMCsP/1yZ/j2HJABdu+CNbx/v\n8PLAdgpKXQTSfmhVFn7Ru9a66rKPrVyrBWZ5UJfqhG0IPswp/YvNoIgqbeA/\ngJaeJoCZiIB2ojWc9dBYxaofSAvEhT6hW0ZatTUdBgdxR+f+vRfXy6udd/YI\nt4qrfpsPEX0bfeaMzCb7iS1JZDd+QOiuh5JQyDxoPhTOm3QUH002EPZD3y5i\nlv5d+Ks/4mtTHb2gK9X5Fb+nhuOy/eFQG8+MOKvdm39uFiV4LLYZHcJszaUH\nQMCwFqxfb+61e1Rp18cxZzkRe4y4PCC0yMfT1c4UrSGcCtGXaBtN5ME/Qmcw\nayymXekuhQnlK8CUX7Y1m2ITMpIGJW83PEuFxPk6EHs7tbNwW9zwR0hEtGAP\nf+E0RJZbAtcRbXg/ni0OAgrYls0pYe2rh7YL2Za6wcSCRHeQas+xxwvBKHW8\nd3rWbWwvF8mE/lYWb42wlG5fHhac4yfGaI1C9AwgZMYg557uIbOC6llSlemZ\nGp8rCX5GV9yCJatVGeAcZ/myjRmGtb36An3/uOQdiYN6lH1VHDxs4IxLrnQE\nLnR9PFcgv0O52fnyQNbNhMBfYnG07rERVezNFlkjAerq06huJ29+735bCMtT\nStPXYDGbOYamg3jY1r3S4VcN8O2h7FL6LQZE9YnUC/5f+NrNFq4jQea0dzyO\n0eym\r\n=JDEU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d981228217ec2bb32f44d4e8b3ddac4b8ff14a67","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.116"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.26"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.30_1618762128828_0.6779513268810142","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.31-renovate-non-major-ac2ff799f2b4c66745d8ede8d15a3938c86a3568":{"name":"@balena/jellyfish-sync","version":"6.0.31-renovate-non-major-ac2ff799f2b4c66745d8ede8d15a3938c86a3568","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.31-renovate-non-major-ac2ff799f2b4c66745d8ede8d15a3938c86a3568","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fdc0546cd0dbc9525684e66e89a5eb68c86cfd3b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.31-renovate-non-major-ac2ff799f2b4c66745d8ede8d15a3938c86a3568.tgz","fileCount":24,"integrity":"sha512-nDa4TpnPGwPu5QG3tb2yExxpoP5zxBCiq5jucxYFGTbgyAqo0mH3Io0HxszZsuYGUcNNonpBYZwQNVWzPaBXzg==","signatures":[{"sig":"MEUCIQCJV6dbdWD4eb1dxxl98xZWZVHg5v0+aCUdtC0nkHbF1gIgAvNvsNnzmxprzljSnEMIWBxtmo2RgaH/3hWX7Gy9PYw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfHuuCRA9TVsSAnZWagAAgoMP/A3hJPg7lac3vVCrxd60\niigZQFhRvke6eTT3kTp1FO2MaPNDU6+n24I+nFxHuSyGKT0Rs2o9BB8t05hm\n+Ig3ltjJCpaF99DykZTYw6bLHg9RAWhyAl91owaQLBiciv66BYWaejXGf28F\nqdq8G9CCyAw7qbj7BH2Bg6uvYhu/TmAGlofMFBCKX5+WkNflqjeEcrk0hNwG\nNL1oCdjDSV50MfMW9W4AA7ATszJjbA86Ayp74l+/L1Z/+nYv80PDoLe83TY3\nRqHTVr/eI8orCzbWa4xUbnaloMSs6dF1ytzlXslvQTRC+kNBnMkY2wHLYMD6\n8Z5wN9QC5oROBYD4PrvNvefUEDMF5TZb9ksZnVhqgq0YnZIQ+XT1O5JWm5Qh\nsdhZCpgiN2NGCrhmhGeKxfpuI9PXnZuSMgWgRI7HKSnjPqZf3pVGpX5y/QBr\n/5vhOzNYBXveIy14HmAZcDSdF/MvJn8fu6LgdhXlZeajrzoKp7JilaYkZjR8\nm8AhDTZCCtNCwp2QySr6QZ3dSLLqymXQHzZQUOoHzifQuwz82YXtxTqWnI4B\nWGlobCl245fiXw55QbMfERktl4W40wrP0sR9/JxaaxY7fhrZEhj8z9wc6BRd\nEYNXVhVx/JwHF5kAZZ5AQPPCpTWucfDfiZHbqXd2RdG/7VDM0MPTNNpUgh0s\nEr6v\r\n=VvOK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ac2ff799f2b4c66745d8ede8d15a3938c86a3568","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.117"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.27"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.31-renovate-non-major-ac2ff799f2b4c66745d8ede8d15a3938c86a3568_1618770861685_0.2954039290086421","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.31":{"name":"@balena/jellyfish-sync","version":"6.0.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea593ce913a87db19d7b554fbc91828b3bc4352a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.31.tgz","fileCount":24,"integrity":"sha512-0Bpg84wSYsXvnxrakaFh/RsDmQ5/0YyQ86bk+T72nE99LKMYtcZ22dcbBrmmsJZteWx1xRbpBUOeZ8oXcgVRJA==","signatures":[{"sig":"MEYCIQCYK9mZAot8/NAx3Ljuo/aSr7PSt+PNU51jcJFuXXrlyQIhAKxydRQL/vdxFTrVpsrZEfyamfZpokaimR6X4V+BGkso","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfHyqCRA9TVsSAnZWagAAK4YP/3gdtzuHzxSj8zre1upX\nywM3QsLZWtZQ2kw8eSxXyO94CqqCWcz5hTG59Xb5djV9Ho5KIuA3LwdMoU/i\nqELfGqnkLSj7UB0JEHB4PGmxlHOBUD1v9aZ2hHdeWkpGwwTH5GFSfO9SUWKP\nA7HnaVLkWbisdRrH+00t7oJ2QP9thGcauWICGMu4F2d4agtWUZhJsYExCxHR\nLRSQdHvBlxuDLi6hrI1UvAmvX/Qy6Ebz92+WiizmeuOW4br1pBnANosqIj+o\nja1T22vXmJ633D6ey5YkOd8pkfSqEcG9bo3LHmXIDbMsF7USknkYTuIBP0c3\nzVIBrmylS6l9+aBE+w2HavmFurN+jsf9gNAps/Z5ebVXNpjvSi60RVutxpcE\nEXojtvvUtN7PT6Tq/F6OkCQLohTx1+DOYWPZB/6wen3EdVcbmdViZyC7st4B\nUT3HVQUw/ZOkAiFabjPKBMwUUW4zfQ+igvCnUyu2VAdiePqJpR8Md+Xdp1zl\nNooy96C4llIB/wO8Q+7BqHk5rglwDEWFjo2LWgMdAVnWnJMgjk/1AC6fK6HW\nJJx6/nzyQAoKZbjSAttukj6Tr+E9TiNf7dgRjIeclLADW9848+oZSLH06u07\nGcOMiixaSfOs39AG2DNQGCqXzIpCfLo9Wuba/y0YuctH8neNkz9gPSuoRIwH\ngde7\r\n=oLmY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"123d8d47a30e7ca0a91b0e2fd296258275383be2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.117"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.27"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.31_1618771114208_0.006515754171416255","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.32-renovate-non-major-0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd":{"name":"@balena/jellyfish-sync","version":"6.0.32-renovate-non-major-0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.32-renovate-non-major-0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5067d45128d8420a08b4d80e5d4c93f42b6f3bfc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.32-renovate-non-major-0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd.tgz","fileCount":24,"integrity":"sha512-q9AZzD7pNHR9HdaSa0divuYhHAIBXaP092O6EVeVuxey5d7vr4Hat2Sgq0DUY60T7fjWNJyWYsyXtnLG9uiDXw==","signatures":[{"sig":"MEUCIBOO6Id0Kb/pWHGiefhNZ/2enrMy4Wl7lPnY9NjH2jJdAiEApog5RxDMueLIkJAac5rjBdQp83+KkS+Q16KAHkE50VM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfM24CRA9TVsSAnZWagAA0ncP/3kC+Um7FoCJFdZ7RFh2\nyS3hdoXurk9Z5pJ1dpn5dNmngHQT6GpgOVkxkXhYza7QEG1FcMLpQtwoNApl\nK3HVpyZIW1as1ceziH/4+C48Ie2T0gf/ElOQ06L77zDmDgX5PYWkUfFvpUtC\n7BYEiyWI8X54PYUxKxY6B+jY3cgab5Ayk+iCaNQoa4NOELZwRFpJd/vUeit5\nzEMn1igTaC5sPJlxvVwo9r4ZElfnHaTUiu8ZEwbQ7xuKRI1etBZvirbAVT/W\n7YqeNi3R2u9VgMfS3hZ76z4KodoszBFfC0r6X1QaW3RkZpzbiROGRkb4YP0h\nbRt8puZ1zwkvfyYCdUEuXjNBjQpM9Npyr5tAFyS9eLvAIN9E5NC3Qo0RVk+T\nFeTqtqf2qs4cXKcE+6NgDAAK2tkDXL228oYuur6rLQLr1uENGv/chvq5isa3\ng/p2w2ugMWl+dbL5Zfl8LtOmKthiIwe/gpHxN9M/e62CIkw4dhhCH7wmDvKo\nWfgD1uYxDr96Pkurm7IVzpx/hOmIoXKCn/00JjXSAmg7RoMQNs+0qpdcWFyl\nS90gphN/XsPSWwl+OnmC8PEO54lzTrPpf6vwpwjArxdPDDHhtORbN55gmM+6\nS/W4KHzrs1uHpfQbKFXnrqfylIyfeau/8Y1APLj+bQlB0WhCmM/b5Srvdwgp\nANXw\r\n=TydQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.118"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.28"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.32-renovate-non-major-0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd_1618791863456_0.3352530975082224","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.32":{"name":"@balena/jellyfish-sync","version":"6.0.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a41c927eab2b553727ea6317a79752609d5f2486","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.32.tgz","fileCount":24,"integrity":"sha512-XogaajIRtdQbxsmuQjtkq76jSKWJuolYTDf1997m/sEa4R4Un3lV5Cblw+O+r/+cY4nfBTr6Vuspn0jUdjVbKw==","signatures":[{"sig":"MEUCIQDYZInMXkVYs3lWK2YHRCxCSNIoLVXaV+UvBeqj6lD4HwIgQZSRkGFHaY1s7zOyXtk+da9C3eAzAU0Ph5UdmG0AgcA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151210,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfM6jCRA9TVsSAnZWagAAMtsP+wU0YGbl73g0cfTU2EGM\n2nmOI7EMFBrNdaxSPaHGT3uy82Iztdgmjda0i/iOvneGU7lg0jb5VP6z9Lnd\nRMFsVHMFy3LF6SaT1LRf+5CFnixvh0VUiyEC9Kv/KFqxFFie6VTb7HV9DVzx\nylBIejmL+jRdp3iakBN6/Y53bUoQHieJSssZ3iXJXIMXqCJDIDZXYaMkiGPp\nQ7qKHLK0R0L687IJaUNeYdZlN1+OYCP0d1k9nv5m4kUHSKffh1TOCTuc31nb\n75bmDyms0IwLm0nh2vQ7+Z8a7lieHU4PWyRnZdFP+eCpcXHFycGccTKP4mrK\nPH8EXJgES/PYl1ysX6RD/1QYWQr4lggo+yCc2MFRigbxfZI+furW4kGZbTlI\nRFb4Llm8USxW/DQ7zDVplA2tUZRQKqmt1hAVBA+7Ck4/3yl3lOEsIGG8cD73\nOuSGswYfdMDeRtdPkzq3WMJIMn5JipgkjW6hGnToL1VPooeY88J1NRbXGdt1\n+tyM3y93ZY2ACtdopnb/5VLV9xH6G/3jJ5WOPjlFkvr+TfCaXiFpZdlTAXMR\ntcjJTOymjB0TENaTOUWXH8QxGvRnUjBtir/Boi8k6Rd2HrecEhexnqM/Nm6g\nifg9CMApwziCs+N7WSwGcBg0payogFxz6G8CWTnOh4ZAOpP60SK0tygCsfiI\n/yV6\r\n=QwHh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"08cce82ad900b75905a9b9e140b2ace0786d8643","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.118"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.28"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.32_1618792099052_0.564393022586519","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.33-renovate-non-major-7f15451191ea569cdd0acb5c6c6f06cfcac8b92a":{"name":"@balena/jellyfish-sync","version":"6.0.33-renovate-non-major-7f15451191ea569cdd0acb5c6c6f06cfcac8b92a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.33-renovate-non-major-7f15451191ea569cdd0acb5c6c6f06cfcac8b92a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a4a911171c4a091c1b985928c5a790123fdc3a8a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.33-renovate-non-major-7f15451191ea569cdd0acb5c6c6f06cfcac8b92a.tgz","fileCount":24,"integrity":"sha512-JI0GoRhsxf43uDQF/ZJH5piWhA1Q7FvMvP1kMwx5XOQS3T2RuyateufORRoC+0t7qS+Xl4iaHUthwrfE5CzRJQ==","signatures":[{"sig":"MEQCICR6cLTFYwUmd5ERTNPyYzC4AFHs/mfWOmkQD+GGPLUKAiBOeDefU6R8pJjdAapFySXmw3P7b9cjY27RPy+ibSAT8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151336,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfRAkCRA9TVsSAnZWagAA8JMP/3Vt+nlsu9fjQUeV8Wsw\ndKK5s2jd/hrg/GJsLIZTilgF5iU45IQIZKlSnZn1khCix9jz9Mxavy1RmS8Y\nI7tP5nqHa5J5Veh2qE2jIrg+15dud8kvxKHzBs9q4ctKI2ADmGVBOgs5Cixw\n9b645dJqDeFM0i0pXJuMTXzpZS+LEyLCF6vedPl9RMMP4HzTUUdkLtqfdRp7\n5jHv6cFPhpE+cFfOcL5yDEFeDoI+O/uKEhvV6syRr55AZLQAadDzKllNmYpM\nLJDeFmwge7ymeOpUGQhEgT/VJgCTgZ2S0MDu8H24pb7jEeudmnhhqqA+pSXq\n3j+0FU9FnPSI7L54yi2/KkE8ECW7SreXRhTRliLQI4XPELCTl4MGPsU6HpK+\noy1A/6lXV7qsseRqWoKg8DrzhaPrKN7Dp4pmguBGZ7kcYtJmehmP6VkWG0ID\nOxr7Ja9D+pEmTmoMB8PvpG8DK/Mg6quzubQq9BLoG4lXnmTWscMExcceYvqm\nLIuSjhc5h4G3XZL2CjMRXOMsLlWZsbVSOT7u5Lj5PUo/QXLKfVm+XAkHh4Xq\nWBnF8lTyY+g4npycTya2hAfVgk6sh2/L2nQNuXNVroV3PvWQGv5+jl1XJf2w\nfy6dSziIoZU+Kb00cw6AhhUVlahkcATKCD2Itr/DdwNJB08+ZFee1iKsNQdX\nq6+O\r\n=O60S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7f15451191ea569cdd0acb5c6c6f06cfcac8b92a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.29"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.33-renovate-non-major-7f15451191ea569cdd0acb5c6c6f06cfcac8b92a_1618808867946_0.07970656498083373","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.33":{"name":"@balena/jellyfish-sync","version":"6.0.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf383be73fd7b1c0331e2663386163a6c3a3aae0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.33.tgz","fileCount":24,"integrity":"sha512-GeW+Q73/giYSRi10k/tUQoYItweLT4amYRUaGzZfKyIiIdXEkBRfDFcpxyIpWWqR9eUzMGV2YlelNlbZB86oeA==","signatures":[{"sig":"MEYCIQDjYuOXtS6gvZQ0ckDPzsR7+NPng8TzXifR4uXWobcdngIhAKmv6V/kP+bIMxluCgpDrCIx8c0PTe6xmjHX6aBMkMWB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfRD4CRA9TVsSAnZWagAAvSEP/jqIRysM0R05iABmPpyO\nvCxzCqJHa6IXk040b5ZsJ6jU9MH2dn6Nj0/uIuNnWYOj78aUomGSTJ+Q1h5H\nm7fzEC2ItALs/nnX5msdP6dAdtiDMUEUAlbs15Kgyd2Du17ZOjiqJDptaGP3\nlX5Kerod0NCrq/UUZFyX4PUISfPV6N7t+1gKP+s082ohYfnuwBR4hUV/mlwV\nfkmIH4n9jlQvfJ3vAUfFNzALMVW3Rqa8OiQ+xV6kIk287ePOzNvNsVoWETS7\niFmQ8ZNGGGG7XESHzJXAmnVIezDslZEE6ZYdJq79FUroomtpT5aB5ganBR8i\nGEJ0xGj3hg5X+/TiOzL1el2goNRSZEcPSa3DwBZugU6Tas30mGaphs38ODlT\n9D8V7s8eE+nUTo0MBt1okKDaTSDOdd9X7cKb/pd8FQPT6BMQXYoRq4cDDnne\nO030dGkjjjJlyOo3kGR8O4nQozoJZjcWAburOLTwKzmj5JH27loHBagmE8G3\n5grjdtBHmv47yacyNOnpojX1vSFZ+QzTgXY1yMFFCuQyBi8h26ePG6OYgeFU\nKnn6p4IxVrQoRykCHsyySMt1mZXq3GxeFWwkh2xbb2koJbQlJZvkHn9WQLhJ\nwEvxDlIB3xlSPRGme73GwIo1JmgeahGLGfOGXHQvcc+xHdBU/x7yXN+bmj/G\n6zIN\r\n=0QdE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e5021f8692d81346537184b76ca3ffca5732d192","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.119"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.29"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.33_1618809079539_0.03971556498558804","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.34-renovate-non-major-c6db21903e0a55669abf6ebb12e10f8aef9bcde5":{"name":"@balena/jellyfish-sync","version":"6.0.34-renovate-non-major-c6db21903e0a55669abf6ebb12e10f8aef9bcde5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.34-renovate-non-major-c6db21903e0a55669abf6ebb12e10f8aef9bcde5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8aa8afb31b77d28fc6efaa3f24692f63e8d866b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.34-renovate-non-major-c6db21903e0a55669abf6ebb12e10f8aef9bcde5.tgz","fileCount":24,"integrity":"sha512-2lZay8bu5sa9m38FT3E/D0QekjbyLtFGqSyDfrUuRS4J0FezZ9oEaK4Me2uGZu0SVDP0kxrqc37Y0TIDOHnqZg==","signatures":[{"sig":"MEYCIQCIQHxvVvJN+O8RJoTKzOtD7IzC6UzOYhy/TFkdNyvrtwIhAJgxjsBqDDbBx/dP3x2bwQMHzKDCFouwh0PQ1upNAsBj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfXtKCRA9TVsSAnZWagAAWMwP/22T89oURO+rjhktnwvf\ny3tQxsxhh7Yr+Db4HMvFgHmMb41C5jWdu9IXLYM7sVohrzXDcftbNO3bG3iy\nwqmfdm5KNxSpiMYOugAiUl2OWJFD42HDrMnUq61Xalx27Nl+eToW/vMAUlxg\n3RyB+dbPyqD8uxOKAbFX+Y9efiwDYrWaHZXtJW2GFqXQ/qs1sxcdUQrS/N5I\nuFtshigwaUg4bk1ATo1YeXYFi5y4v+pxvyPsSc6Dd4eRa1zGB88Q6+GzZaG9\n5SCdfgk077qY48H/hAVZM0sjK8ao7jZIF8WNT/Gcghni17cdW48JKT4dpa6J\n1GnzMlxLB7eXmP3/r2zEZ+eRqkvAPBwk+xiiSMfkiPd4zNivhzMbdmvdcq5S\nUUyyvCAQo9/pq6+QP6B+KTlCQpfD5MGndoOuk9w6Xoi3dcHehVskDUfLl7FL\nxUUB9CD00hlK3l13Gv0FhWAUje444SrBBGp/AMXpnc4WBN3VLLFa9hC3s4QC\n1vGAjykVIiqSeUp5YHT0Vn6FxIoJeaRTW2IcfcKF9IupGkjL2BfLU8F1ARF5\nPI6fkm68Vpikcbg/TNHwo7bt47NA4ZLBJlTZ0NUb2FdPU19rBQYU5CvkMlSq\n/2zjB58rvp9Wu+/gQf3h7HJUihPRi4bKIyAbfFoZxzG+z3ypmUy46ii8KUMy\n66cu\r\n=0cDY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c6db21903e0a55669abf6ebb12e10f8aef9bcde5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.119"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.30"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.34-renovate-non-major-c6db21903e0a55669abf6ebb12e10f8aef9bcde5_1618836297353_0.14106817908170766","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.34":{"name":"@balena/jellyfish-sync","version":"6.0.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.34","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4c8cfea2b0c6ccfcb324ccb0992b041807a9850","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.34.tgz","fileCount":24,"integrity":"sha512-9QpdO2LZfxQ+7yNWs017FGe+wKAJQyLpByZVP8Lsb4McQRNzYFB+lSebcrIbvJ/Nm9DhLPLEeD4XOEwqjvGtlg==","signatures":[{"sig":"MEYCIQDjrPu9iP3pV/6aYrq0Pkn5KsBWhmcRndxcZL+KzWIpRQIhAKNvXmdBiHhQIC2Q4RcUFPGkN38thd/+AwfK2/T+adac","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfXwzCRA9TVsSAnZWagAA5pcP/3zaFaMW7H/D27EJq60E\nmI/tFKW+01+qojjw2wq+23RwXKZQNBVvo47YwmA19GOyluJ/XpAn1eeGiuT1\ncUM4PFWhQGJhlJtb9CQt6sSpzGnS4TqocDJOLp7ZID2duMvsD7/2zxv6Fv4s\nklcHV3XrQcDar8n2p7dCs7F+lkjhFPJu9z5mV2QIyBbImjICzKLM0cTJGABz\nWtE6pyfo908qPVKfOn2dk2AWg8t5WjpEGhTlEwQWnPoNfNCMYY0YXuXSmc5r\nkMLNjmZ4/tzM9H9pH7aF0TEtTDeKlSW3GGnEQcYFXhJsRUYadnVHcmCydZwx\nESe+0At0dPQVQuO9CWW7o9eIqRkKvTEdqsZ2/TMugk65inI79JCim+Nxva8w\nFpEFGIy/dDkwhq4FMrsGEuyjCuX0aFXkSbB16ElDDiMPwC54e6fm0uHbbeC0\n76z3/vB3H9ujUZw0h33vf2YMmC/fkF1UC9lLM6M88awGdlEPQPqhYQwqzJqu\n8+FBubUrwIxgwDcKekjrx5I3IyjgxdnYAW5eOHvQdR6X27o1vbRbjSbUdaOx\n2S4rdwY1OYjMzc6cAo7s+FAP1TX99crOKU6d4mgfmbaPD5+FNM0dWNwcL/Bf\nBbhbRsu/BMQ5Yx1rrwK/ZxTGvr/KSr1RNZuZt+ApalEnc4xhSUB04JW4T+qR\ns14l\r\n=zQDF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e88d58c17e0c28d1ae7c378db3319d7ea3b773e5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.119"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.30"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.34_1618836531451_0.0793087488987716","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.35-renovate-non-major-7e69eaf224e691fecd2958a892cc55cf516799c6":{"name":"@balena/jellyfish-sync","version":"6.0.35-renovate-non-major-7e69eaf224e691fecd2958a892cc55cf516799c6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.35-renovate-non-major-7e69eaf224e691fecd2958a892cc55cf516799c6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"94acf500e8caac9f446c6343f2db58edb30d4833","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.35-renovate-non-major-7e69eaf224e691fecd2958a892cc55cf516799c6.tgz","fileCount":24,"integrity":"sha512-Wntf7qrEX8LT17NMf6MQgIqXXpEiU10QKv/o0aisJf/vi/1rqbao602729sVaEUrzs2lYvrrfHrS8PwjWVgygg==","signatures":[{"sig":"MEYCIQCv70VpgdS3hyRp6Ci2gzAU55FAyF+iuXOaM25VhNcOsAIhAI2hzCBdSBw5eZCXx5n2XAQaguNSYu7idxyHVlKWktKc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfhNaCRA9TVsSAnZWagAAY7EP+waGI1q/4dMln0kUYPsF\nmZtKekz7tbZ3CtJ7L9oAKNBMd5FfKl9E0i+eHvwvpCq4HzLL9k4StvKN6BlE\nraqV29VkChSZlBBhSDsWNsRZWejH5D3gUHCLtVMw8FA6ZjB/PS3aBAd7U7Ra\nnQbig4o4MqaWjXdIYUnozQ4uaeAGwivbjPO12NcwJXX8rtmmhqHCvCMTesJk\n27rskbgRfvcs3n+VO3r7uEYitW2n3GIeOjHa9PirTN40ZgowU9r71dxiDf5w\nYBl+MEeZdzLD9Mdsxdt81uWxIyX/ylrZ9uPVD19Yh64YpHIHIlyawcr3bN38\n2XLT4Zys3gGrj1GD+6HCO13uXarL846o8grmxctC0bMyjOB5VXMfPBzksskC\nwLkexX5zWsp2muECK4IQKS4gYkdZGxEJHM1Ix9Q/s9DFheJZ+BfvcBI8vGmp\nvTPpjdS1pwRBQObYbyADw0imYRqLnKOu/en003D24N/HacKvRzk8xdLsujHo\n6drslo8abrxTwpX9l7UCfu/ham+QO6HQoCsCK2FFViDO7AEFPwd+B7CR3s8P\n7wFm88hgucvYBdKL22zRznD/xb5TcIVaZiBwhK1EHV+PwlnKM90cj9tYwBK3\nupIq4WTlTBwQoyjZXcjJFvIoqba0A0Mge+HVPpeoGFzS+Mpl4wuVxMpGXh/F\n+os2\r\n=b/yY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7e69eaf224e691fecd2958a892cc55cf516799c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.120"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.30"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.35-renovate-non-major-7e69eaf224e691fecd2958a892cc55cf516799c6_1618875225888_0.5484008201395179","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.35":{"name":"@balena/jellyfish-sync","version":"6.0.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.35","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba2e0b44eca675f7e4b3947e5ce0c8370fa2fa93","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.35.tgz","fileCount":24,"integrity":"sha512-0T3AzvX/SltkU/m1+LTfTWzakWQhSmxWBLmtGn6AhEmf6lKZB+gh+XoLGq4mLeprsVUmSDOdFXQvsz1omJwSfA==","signatures":[{"sig":"MEUCIHIwtE7h63iDdO6/+GqOmuXLslF8tvL3FHZbouu95u91AiEA1W69OuljNYvRV/Anbws/tc/fCFIdxNr11XPa5TA96qM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfhQpCRA9TVsSAnZWagAAML8QAIP+zOmQv6rvRFTreNR5\ngWgFfCHjA207kpXhLYL61yuk0U2E2ilDciJUZp+oeQyU+i3Syy8cV88CZaen\nmA0L8PzxY2Y1R8MTJkmFrE4p4WifBcP6EVYMOXNTtwV471oWsuWvEIujOyfF\nKV1uhz5ucowf2gyT/VkDkffH83fd/e8z+XS+sGSbtpzE9FuOuGNSKAyP6Vym\n4DRcA1ZzOxYsU/cV/vWpUWT+tfvl6mdLa5Bf3bFi2ABG9k99C27LyCwpt+nC\nvoGQg8buXpsQ5ITEtVMqNiIbiPSg4eVpdn2o1cwhwr2PiNmpWz0SnAAPf7wC\n1Y9Hj8hrHFFGqN0vxbP/aCCVeRk8/UDWT8HBPgBRGfKhk1Ty/uCUL327UySE\nvNqVQxWRGOt0voEV/jPgF+LX+Kl7p+81wWaFFdX/d08Ko3rPQEC3NWUKwIjH\nxGoZp7vehVqCJW1nfWSZ+n+XaDH3m1x65L8Tz6lpXl9xlAgWDQjFNTDqqca5\nxDZtOkLgEaonPmBiDAkPFffewBNulR3WPAnXtZsUJn5bbsLxHdwRQ0si119P\np3kK9DbDXRHhMuWLJHP8bpQcz82yHtGcx4rSBLqGq0077psm8uogxh1124PN\n5ULWcf2GgLIDbEoJVr43csxOul3PLjQAnMLp/RrEqrkNRm/qIfe19xgIGDIL\n0diF\r\n=OXba\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"808173ed77b2faba4580508f99c15af58ab7b462","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.120"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.30"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.35_1618875433058_0.07954731490853573","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.36-renovate-non-major-d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03":{"name":"@balena/jellyfish-sync","version":"6.0.36-renovate-non-major-d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.36-renovate-non-major-d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"06a52bc45e85a15df5e4b33fb34967375cbe3655","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.36-renovate-non-major-d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03.tgz","fileCount":24,"integrity":"sha512-e7jnBQnLydahzWhg3t+CT9OC30oSPVIBvvtebVhfdTlpY9IQUhB4bbMElSTn4iMaNDVgWcwrIUErTn5vopFPWA==","signatures":[{"sig":"MEUCICw9iUwG79r/kPKpK8Jkt1NrvS3RkBU5HHYcDy6/GF0WAiEA4b5foBLrSS6zdDaqNhd/Gs5FF60PAxbOQ7PMQNuqLVk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfjcHCRA9TVsSAnZWagAALqoP/jZZhY0fyZBe/SMhTkxX\ngSkKYfKdcxj+FvGin0iPrJv8eL83pHIogjKjgsACB1+sUe3j0NWmmktrVVGM\n6LAZp/YZpvGspr0x72FiM0jbjF8KlnKarTlFOatwV0WCnJ3TegX5efOB8Bzm\nOFii27qHf1b5TzUlPLS1DDfDXojsNQaThNRy6vMhSzwhn+iDxDgwzkr8HSIV\nGrs0GMAK0/rvpNo0pBGUtP6nuqMbi6R0Sj75VjLB5aMyt2+hsAx08BJhu1dE\nnq9l8N1JmK5KkEvUJGzN9u5qGgR3XoJBo7JN91YcrHXlW3DMnL0QcPT/plYl\n/6HtMmLF+aMXWYSdNXn9zpEQ1gZXcT/1qzfj8Ixx6cvTiRi4g1fKMLkhuNHy\nhT4dLRedAl6hj10JQujzUFCZ6/OTTxZ8jVZr8X1wQ+eLisozJieH3i+pvcAw\nTId3Md1q1lLKNGFhdU8fbPo2gu0ytvpUvtPeW6eAPchLrlSotFtByrsk/G/P\nKRUgtv/fJeNQzZMQNM1ip5bqe+ihTRyuY0RVZu8iTIripRFpzUFigYAu39+g\nmJgmTaT/GmVRW0g9nm273FPnbmfle+f2sUQFyA7zs0+Zn6bq/ivlpj4CHqfU\nHmjMEqGcQ3Rh7HzL3xbTZEqEvuBUYdF4m8Mt0GZlox2/OTcE/CMHsdrY1uvv\nJ+3N\r\n=eV7/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.121"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.31"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.36-renovate-non-major-d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03_1618884358524_0.9563630732112007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.36":{"name":"@balena/jellyfish-sync","version":"6.0.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"afe70cc3abcb7a4ffc3c43c436fcc0ae292f6ae5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.36.tgz","fileCount":24,"integrity":"sha512-rtsiwtnPqdvwJZmZCTa3RWGD0xdBdzN+Kbj4rJ3OLwpnfL2mXEBaHv9N8CnqQf+fcJXvlDzaCLgnKMEfTUUWSQ==","signatures":[{"sig":"MEQCIGq/J0YJCpuiH0KMk0bGnWuNdV2pq1sUyDpsp9lxFWLeAiAKr1ohxV6GeZyfCO0hx3sAH/UzcKJeQN5/XWFdb0nNEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfjieCRA9TVsSAnZWagAAj8QP/1guZ2QdW0eNfoW1lZKl\nQ0jKauqZuWzFAU6XYqP6t8shJN/m3RaoPdTaWvuQXTo4osqHO+tFjbqF/j9c\nMzjiopoP58fX0X5vGoZthZBzpd3MURgA9mrYvVHh+ULIqKN+dMS1dMMKIXSB\nxuPcv5Rrui4BCip2AeD+a2qfe0wshaqq/cM1gLeLRCWsNrlIuaJccw5L3k+I\nTGo5mC6rWgrtIQw+i0JgPenjCqRF8ipwZM7QT3PtxN8uSp+DE5wMtpJ4bwq4\nnl0JDpFrHnwFWhJEcjNvzSCSkp6wlLcaTrksxTD27lH7T5Ks9BIGBtFwKcLH\nVFZLGfzySXRtpzEm+CjdlRJbCpA48GrESFLgAgd3RR35ng+bCltYOufDQ1CL\nfzOaDehvyeGkaYUwh51dS38WQ3h90vte5Rc+sb3Wko+wmRYl+TFTAh+HfzcH\nKpBGfUKWi/D4D1/Ava2BqBY8eJSE2zBXaoblenelAJ5xi6QKRBhLR/F5Yn7X\n+Dw9Kfv1xN6Ei5y0/+mYK/DqDJVLgTQ79V6KCtu3snKbZq8XvYG/rHGYyFXK\n5AT1OOEkQmkOb7hjMGXDu5APzu0p9NjKAz1UsbfHM1efU2Y13iE8RLcHA4Mr\nSXrFWZ6fOEckYsOQ9MI7FXqiPpzLGDNob1nRrczANOWvbzZmRtqb7FTmMcw5\nTq4j\r\n=fKBp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"748e8f13caec0efc2b5a308074c373165531b849","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.121"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.31"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.36_1618884765892_0.33528684055153635","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.37-renovate-non-major-7936a3257fee48bcd99fcbadbd5a89aef0ff16ab":{"name":"@balena/jellyfish-sync","version":"6.0.37-renovate-non-major-7936a3257fee48bcd99fcbadbd5a89aef0ff16ab","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.37-renovate-non-major-7936a3257fee48bcd99fcbadbd5a89aef0ff16ab","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5526bfe7459142639b794bc6b464ccfd722ba21b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.37-renovate-non-major-7936a3257fee48bcd99fcbadbd5a89aef0ff16ab.tgz","fileCount":24,"integrity":"sha512-ABjNb2JzbRTs0TX9WZoWMqMWEYfRQqunw2KArphcWhRT+7bH6llSXkd/8zMHRLsjJ0GaNd64FOqrP3H1r9li8A==","signatures":[{"sig":"MEQCIHU7ubo8gT94SbE+h/PcRiZATGV+KiOihOYy5bo1YC9eAiBy6T+JsAaE4CH3APD874X+vaLPELm6x90RV71+nYLg9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgflObCRA9TVsSAnZWagAA7dAQAKOySHrakec6lgPAOroF\nBi2mIQfpbasvzjKagZyKorqp41e9aHxGFdt0one1DJBDFHR9Hwo1OKLGYXXx\nfAytUsDoXTEqKSU6naIrgqb1CXlruwKX9w5WfarhBUZMgp+Ip6IcpQu64DKH\n/wPsruWfagM1MdhppqsuCCLkTPsdA+bYdCRkodcuLWFlZa/Rs+3gpryDaPng\nWEh6ATl55Y74v9xtUddJ9c/Za3A9J6T3flWUVTYSbAy3Nh1yNicrmbgwnkgw\ncnF/RGvNPh0uJGLQYjRFskoYQ+mNyh0yVSLqxKWHGHbv8bHNY2VpUuPTnDpD\nl6mv2SXXHW6NzPeY0sC2R1lC0zUhdayOpfMZpkRUtgAdLWSaVAYSjZcDnDku\nbDhUwGgmovHJHcahHhZ1BogOG1oYpbo/RI6ppgqJgU/FT8TNfAtx5SDzcmJQ\nA9mYQturP3v+zL6e82zv9NzaSZy8BMLkejoz2mObyDXmRpvOrr/ZWN3enyzI\nBU4H0RYxrmLp3wANA9TqonyDEZC0+mH1tPM1X40bPnyve1ugaqVmTbQ/Bz2M\nQSo+Ljo/h0CzX8mNvt5RZU/8RbziKDSJ/HlIAB82fdfwF4Dcr+ckCzmQ7ID3\n4NpXB5W6PT3tQvE6p4ST+KTrHAbgo/NCT3+uGvHzDsHdgvxnA4v+o2owT6q+\nMSV3\r\n=oQ7f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7936a3257fee48bcd99fcbadbd5a89aef0ff16ab","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.121"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.32"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.37-renovate-non-major-7936a3257fee48bcd99fcbadbd5a89aef0ff16ab_1618891675392_0.8411006637071072","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.37":{"name":"@balena/jellyfish-sync","version":"6.0.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.37","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"81225ef91a9d9a92591d6751818fc92cae80c1da","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.37.tgz","fileCount":24,"integrity":"sha512-xFvowFTpApxbv5KO/uhw57s4PIUNHH4gD0Gx2KNQopxJ26aR1xQItZV0DP2z6Vmm2wgC9qkcyfT0BxgStOEV8A==","signatures":[{"sig":"MEQCIGG85qTPA3MefYUMSueJAjpU09GtFc+R2JaTGTFkNjpRAiBavGiL0ZGGSNmJaG3EYC01dYNIFlvgY0h+9cuz/yFJbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgflT6CRA9TVsSAnZWagAAhbMP/3QstNr3WHb3lWswg19i\nNa/7vkxBUcFGgQ6ZDLAY+X3nxELq8r2Pdf3WqgRG4+U5hJkW6WHl969SgJ6c\neBUH63/MwiHPrd4dzcR5kU6aEFOTYoKmB7rVfOJDP2w3OxIn95NDVMQJBbzY\nphO0b9Fl0ahnXJGk0CR8jwzz+E+UIC+UypYi0j+wojM4W/MFE+DcwZjgJXxC\nqFmeCZemr+jOlyOuyqvboqHN0xXD8n29KqzTwWkVZom6VxGvZS+cUg6Du6aD\nDX+hvHFCugnydCMXVMUdR9t2ruHsjixn1/rTLHftMK4q26XbiDaUOshsRSa6\n9imRfdNHc3NGVttMDrvxFjMy/9axdYdAQGyAS1/ZpF3uQHVTjFcqPBZHXGDX\nHaXDG0RwsH1KfzvGrl1kN0DfUk03WHSG4IaIAGF4SKyzxOwfAt+wLOqscGEq\nVuwizZEUudokXbw6k3HyRMiZKDDn/vqiPrN9xHu/L/+btVT41gQePaJcBXA/\nFBwlj9ofKF8nzWdhkLE1WmNY7B00+5GxB64C6Ix1/QpnXau3V2pZXgCSZcmk\nqbXraNrchUcFXErPlVO5D3+0TwQ06/nIWk/gFj7xV9c++XJH3zW5Yak13EvQ\nLz6YJth+6ZOFnTwLei4Tud2LYphOHLXUhSaJTuU95rwhatZF8p1Wvc0++cPv\nLhgO\r\n=rngj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d664848777ec344b725adb9bb524232ecd5daac","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.121"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.32"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.37_1618892026176_0.7921873723822792","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.38-renovate-non-major-ce432746f5e788a971ce77d53cd4dcb099318a8a":{"name":"@balena/jellyfish-sync","version":"6.0.38-renovate-non-major-ce432746f5e788a971ce77d53cd4dcb099318a8a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.38-renovate-non-major-ce432746f5e788a971ce77d53cd4dcb099318a8a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9e8cc19d7084b3a847614c987b982ec4dc38aa0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.38-renovate-non-major-ce432746f5e788a971ce77d53cd4dcb099318a8a.tgz","fileCount":24,"integrity":"sha512-ERTgplb8MhMjlllNq3zQQOI+2ZulYS4iEPzH0RzmzdMLLkfucPPecq0xGHNegY+UxFqoWwmcF3skrp56LnEgEg==","signatures":[{"sig":"MEUCIFMi+WpJ8YxOmMJifCuJfrKjWs88x3AhntHRKi9nw53dAiEAmyF6sp2gyQE9scyq+dWL00a+U+NXTPMd+rw4TgKap4o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfq+oCRA9TVsSAnZWagAANy4QAItJU/BnbXQAgIMbscQW\nh4RJ7tKU4bhu4m74x4qOt2zOGFQkGz0oA6ByuQYY8N1nsY3ir/MmVXuoxGwn\nQ4+Srhy/iAE7EBA1iPpWiGjJmSPO9aeUTMfEZJ+ZBWizQPaffcfEfXFP29n+\njcQMUDPW5eWtpBPdmj2H01/8qbCIYSgUTkzpaw+Eqymxn9co5bzKBdo/5XxS\na+UZ9xNr2moQ4UB4BQ5eNlQCO+Wpe2QQF/zfvswviXFicWcLmKNPgKVK8mb+\nl3gHhT5w9ob4CgYDyujEC0OraD5mX7km+Jnu/qMMOq40KEPmDLJLC2n9bb2G\nBGbi2j56MAxoFpOf1rMs5guoZqWT258NjpW3eCszHgk8LvPsU0PSsTFdiE5B\ndI/zkiFDcEaKSj+WK5wA/Vs3amVVc8ABjrXAt9eIyFYmadxxS4my1Ul7mKbq\nq/eHym8WcVyji0StXXWP6p627jvi9/zeYb5wY9Be0YjwwvPEI61iaQJbr3NW\nTVEghGwFb/JPmc1lIksE/IMYQp8PJBXCI+EGmEb6LmgeaziF6Acghz+SfxL/\nkNDrEB3+W4W5UqO8iaQSlWGXHazDsg6s4tNXN8xj/SabRc127/gv53pWtOfH\n2GH0KiTwARfmZbvDf6YPtDmJZpChQzSkuteybD05/A6SAPgeXb7d8celLHvm\n63h3\r\n=cfN5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ce432746f5e788a971ce77d53cd4dcb099318a8a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.122"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.33"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.38-renovate-non-major-ce432746f5e788a971ce77d53cd4dcb099318a8a_1618915240369_0.6475691734981586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.38":{"name":"@balena/jellyfish-sync","version":"6.0.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c3e25107ed7b858be273b48afd94b743d7217fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.38.tgz","fileCount":24,"integrity":"sha512-y+FqET3LQ3YM2P2sA+tgjTbraPrMZ8hmNhn+sdhKGlWvnvhjNnxt4XvVz5kQ7alzYHkbXYCnT+qZxxip7ujL9w==","signatures":[{"sig":"MEQCIBae+ogpqoHR1ZpWUtTtwDB5N5xRQDYUKoEvAnLg7vCxAiB8SW1ISBRsTaOvqaIwySmj/fpda0D7VarTyGXMYXEQ5g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151717,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfrIECRA9TVsSAnZWagAAr2sQAJ7uMHRDnurunbHSoqrz\naaRfRd29/EvTN9g7rpU+sXqtiLdEtMuAT+zG2pwRByl2kpAC/6d2JSf7Q2Ce\nAJXXDfHlkF+jIJuRV6jdV5es5ucbMraFizHwJqxlclEz5o+vz4Dqdw6bM7sW\ngTXRp4IXoWo2/pWqoQwYd4Okb8VpCMmHHx+/Hg6dvJSl0VHnrobe7YouozbE\ncdAqMGEvZQKPMpXyjp2Jv7XQnlRwP532ZAoALQ57rLE7Uy5Cno+I+uAl7XDq\n3EickOfa0P5qLZwhAVPhNvC/PqHJNxaWmTX4ILlXYF1AyRhcdjki95Jwzi2I\nBlCbwKf55A0xOI0zQfhFmA7VZrYG/Bm1qc8DQ6P/iYQmUcW0hg0NIx7WoxRP\nRDMXUVFgAyugOC+ZF9ouzRizgoo2En5gSS9jos1rQfd2LY917uOZwp+tkBAM\ngxKSUqMvH77UeExHOGzAcym9icq4dD90V8ARTVp3LeQwaaFl5gCkReNR52ma\nTXWqpaAsLII/gOgDhI6mX+DMhMNX0OQuUBbn8Fi4RsSVvnnDYQAFgopv83AQ\nCPzL+TqLhCQXcqiiPyybUcLeZ8/HLlf0fKUiCY1aoFHu4CfhDS+8J/Jvx4mJ\nqGGqQLqg61FSwiASDM83FhkC7fnPRd1yw4KygMlJ8J7lyNcUMFRgGNJ4/WJp\nOaTS\r\n=0yzb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0ae7edcd9fafddacde106364c8f12372e3e3bd55","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.122"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.33"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.38_1618915843994_0.5586228103402471","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.39-renovate-non-major-4211242a0e5e8227e54ae55cddb9141564fd3af2":{"name":"@balena/jellyfish-sync","version":"6.0.39-renovate-non-major-4211242a0e5e8227e54ae55cddb9141564fd3af2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.39-renovate-non-major-4211242a0e5e8227e54ae55cddb9141564fd3af2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd680917e9935745d82ddda8e08bf17c95ef8112","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.39-renovate-non-major-4211242a0e5e8227e54ae55cddb9141564fd3af2.tgz","fileCount":24,"integrity":"sha512-K1jTLtRXIFGd1nyxlY4Wg3HwBSaE+WugTYUNeVCAIUMpUABi26WbFbW76zUc5aZfDpVCHK9l6ekQfm771Ag50g==","signatures":[{"sig":"MEYCIQD9EBsEnVmG59v31AMDcg85NJi56RhKvjMkRtNTZ+3I2wIhAPCVGRMu6dHsYE1LBPEskYvX4cQHalRTNQQS/XrK1/TY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151882,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgftfhCRA9TVsSAnZWagAA3JAQAJZ3JAgSf0v/aZdl8ypz\n34aWJ8UwpbS2DrP4YxSfAWRjwj4WBYJ/XclX0UE1AXgm7rxzn7sw15xBg8Fi\na11R2PH2pi+aihWyU9Qfs8zcl7R4BdNHX//bEe4VCVIYK8v6z7QikL0AHpY7\ndaKVijlGbLv2E7jTLxek1AdEF0VsMsp+3XgsVCJBTJxZ2m3uJWVfU6+YfP/P\nv2QhFPvPgX0Ndr59+f67Vw3O6LyMaID7Vxfoh8za5sWNtjoVNv1YCgtXzR99\nD/Ib/D+jefZDr0pTprKS3FtkynEaEeflwK72nyx0dGiYxkpbmLMvaADhB5o5\neQYEpP+fXcCvthUxs7YgKGPVWNWsVYCmLgwvWHRnxw0KvTAi9u8TZB/XzXu4\nRb/8lnbhfqpFaGZ6PxCOXVKTchvwb1Mv0XjH4JsYMaMLlgpJrti/Z97FF9Q2\nF0zvQiU1a7X65uUiEO3KmGIcmLRhrXs945J9NYxTTb/WnEBqQIEILizZFw2k\nYmph4IiyB2zjBdKBJFc2DLGDg6wjEig+U90hdJyb7VPaWJHlgMKOAI1JJr2c\nKNxKDsv6Y1wQfdqZecVN0YmHX4oWjKdRLPMIFY1/LboAnfcNZTRwn4r670LE\nukT5kWOSlbkqT/DumdR1QrJYAIgWvILpvvYSXtzEaQ4SWNvKLs3MbDoy/yu/\nABQj\r\n=Jjxq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4211242a0e5e8227e54ae55cddb9141564fd3af2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.123"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.33"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.39-renovate-non-major-4211242a0e5e8227e54ae55cddb9141564fd3af2_1618925536627_0.008608128239605106","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.39":{"name":"@balena/jellyfish-sync","version":"6.0.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6ed9f8f98ad9728caba439c520b36cf7339d81ed","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.39.tgz","fileCount":24,"integrity":"sha512-5dn1w+twl7mJlRK9NUXSBFzxoNe7IVQtdz6U/k0N7+ExE52xfpxZjCe8EScKdNCGsq6Vety+0SKnXF6Szj/CQw==","signatures":[{"sig":"MEUCICA2ARCYwpYCZ2noQlU8HvVWm9Sv/uLA++jRIuvsLaIiAiEA6e7zJEp1mxPXwDGeo0vmYlSLRYCWMW3CzVybgjoz12w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgftrqCRA9TVsSAnZWagAADEEP/AsrbExkfScEAQInpnRz\njB+zfGpcsWGf7IcE5zusLUEWompuzBrwcN9UJsUW2P4GfdCRuP3a+qoJCIVJ\nC7wiMyLhZLP0QfOvm9cQ/shMP++tBTkml+QxcRHprcATHeLFAAbee6S1WUAQ\ne3rkttH2JSXbDIDrfyFxmkTpE9zIkTV61+kxlONHA8wno4HJbpDhX0dORyoX\nDogs9NR+jd52q+FG7DmXmf2+kE8FvV/jTYzPlL8zLo588n/iPxBOO1OXyWbq\nZeqbJO9a/SekYQCR8U1QOakwGsXBUgnvwpetqXp/EWyd5hEfAJMnSpkpslaE\nn40FA/wSJIHw9N7yT7XDWkBVaDDK1rY5w0PD/WIYI2IGztBoXL91v9IrNAI3\nEGzx5tPcna6nuD2z7ecsZUG4hRaO+AvvcrjtYbOMzW7biHYKt0WRt4DG7snS\n3gU2rVAk6AIoS4pgBCffGnabSm+Vvm+qc/dPSimbv6KaMZkUqZ+j85HUli8w\n3W95age8jLtB1rF2jEgQjOhx2NaNfMz/Q/+DjGeBZRbUv4Tas3Zskg/svjJw\nWedun9IBUvtSmgOW8ukUeqaq21pCxSl+aTziOA9ir2eo9CXM688ddqd+Q4PB\nA+o/uJXTN7R0Is0R3pW9FAQ40QFxOVAJolOT8Hcx4SYJgiKIil1n4ZLhNCUF\n25CP\r\n=Zmqq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d2f4198a225745004cf9232e10a36d569ed9d569","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.27","@balena/jellyfish-metrics":"^1.0.123"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.33"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.39_1618926314124_0.04655328228854927","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.40-renovate-non-major-f262c0e460c6f8e29a84120808c6310bd9d21be0":{"name":"@balena/jellyfish-sync","version":"6.0.40-renovate-non-major-f262c0e460c6f8e29a84120808c6310bd9d21be0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.40-renovate-non-major-f262c0e460c6f8e29a84120808c6310bd9d21be0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b9b4a01013a857d8c89f9023a2fd21254eceb421","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.40-renovate-non-major-f262c0e460c6f8e29a84120808c6310bd9d21be0.tgz","fileCount":24,"integrity":"sha512-UF9bQw0kuunCpOyyvBUfsC0cQmBSiX5thfzH/JW9jCrJH2ej+645nWsEYD0q/E/zOinddxVC+1k11SKKADgszw==","signatures":[{"sig":"MEUCIQD0Uha6LRnE/bNJG6NcBTW6mzuS03KF7Ow63PWVp/QJVwIgDkB3go1wFvIY44IpvV5Sswq33/9wmZT4wNT62cMb3vM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151948,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfzYcCRA9TVsSAnZWagAALvsP+gJAsDJviJDTOjo3qCXE\nDjUVD3g0n4w6ii/cndel2gL+tXfS2IBLmP90ADHX04dpaMYWpJ25fNGfe27u\nK3nz0eKSZKhFG6qWpayypgI/wL7ew0Wh5o6KiYE1LuUoAp7mEgrWrzaiHYxV\nUdgrwr7qgIF/ssVgacxyHisPc1epoH285UsR4SY8hKlrH/+Rrxbo4IWkq9A4\nZQJZ3ZvpOMsDZb1usS0zd4XuSq2oLMxioUmO0x8Bv328emL4lmLXS9LIndB/\nIVws0uWtCiPK+ZakL/vv20WO0gS3x0D3m/ACTqnrvVMOs8c7VjdPmiw1oyf9\n7mPiW8tfAIonF1T1kPjfRHY8Xaxj+m+6WpyE9L6HYpCoc+996604w5qo+nni\nxTNGNjrZc3A7CRgoLQzjZY9DhEuylein46XubJ7JqN3GCd9VRhUybWzHri/5\nYbZpfbS9ckrDqM54jpEUeDr6yn/vwyeQ1o2VAXjErq5elfnbjfOgcbJCau1v\nyiXcti1c4FpJKJ7qyyzam4TMBW9/FclyWsI0TFWUgqFAoMDQ+TTsPNnDXFEB\nDhL+7agkdtJ4XbueE7yUTqZhDjP0Ti07Gjeoviplhezr0y8R8dgCAKA3ZuI/\n4+Ah1Buu+vOb7ICmW7qx9AN0hjzh7e/mwJQ+f9+VgvJA3kRcindVeFdiFLcG\nYvUk\r\n=tRKQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f262c0e460c6f8e29a84120808c6310bd9d21be0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.124"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.33"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.40-renovate-non-major-f262c0e460c6f8e29a84120808c6310bd9d21be0_1618949660438_0.47085140784821977","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.40":{"name":"@balena/jellyfish-sync","version":"6.0.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"55b4c1ce76b4ab9a522048b998abccd45228118d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.40.tgz","fileCount":24,"integrity":"sha512-+sokWJbMGV3kjiCc6UiH8nbuHLSi6zouqeSg7RgLNtDcxewz1cthqHfggiInug209y9ynJSHQUQIAmYiYRBbBA==","signatures":[{"sig":"MEYCIQC1sCrHBQvo5m5yigIWOTUEDlTGJXfiuq1RchqtX8x2ZAIhALh5FxGs0NFPcF8NxlRLTQOrP7SvKbuVJbe301v3jTXK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfzcHCRA9TVsSAnZWagAAnQkP/Rn3csVTd+FH0TUawMlX\nHH29rQ2Q26R0qeX4qAYCASErSCDWaKsA1wWMMi/q1Mx2/e/PSAGpp5vBm6Fz\nWTvLLrBDARkIvHG9lgXau8Mx8SvF9BrMi4zWbQbfvrWKNcwSqfHbcxdazz0T\nZEwa9cN3off7UjyBIZqgbUVIkYlQc3xKxtZ44o9/+F4o+8hiddIjvcNHRjFo\n8+tJqPeKwuwLhlplQm2ofHw8dnaSIPzsQkjJw5hfaRg1RuGCGg6YBfJTFtCt\n6edxy/rWCH/pCkTguT2/h0bhhZZmQkJQyhiBJLC7rddClOI2sjTht0QHs3C1\no3fUsBindDXhadYKDCmQ9nnkASlZeq12B3PZX7ygcAQ51JLKJ9O2bagz5Nih\n5yehkSEBecvFVzCVkorDtNBXhf1AHLHHtbaR0/kQA/mGqoZ/lrbzXQkIHgNL\nVFjQi7j0lpDzeRRxl7asGacgh2mrdAgy0CgYFn7XTMVWX4aieNL0yzG3+Vl8\nA1qotyuDSZPYYLzFcnrBrkppTvcJOTAVTdEFihsKvgG/5O0MyGHIDhWtXR2f\n4Bu2GPJNd6Mj7NsfxMyZIJICGn3n1RxC9DQI0DYjDI/8+wyWeGClRMYKenRl\nVD7WmMaXWEEFC5417EfGmPQC4JyPpAcssM9c7mVTQqVn5j+p8DRBdTty8onk\nbMNX\r\n=OUvu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"be9f04c58c4de457c9abe581ecdfbafb9c631f3e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.124"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.33"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.40_1618949894975_0.6417130642139863","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.41-renovate-non-major-db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b":{"name":"@balena/jellyfish-sync","version":"6.0.41-renovate-non-major-db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.41-renovate-non-major-db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"95bac647316ecafc8ae17f5310db2c9b2f55c1ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.41-renovate-non-major-db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b.tgz","fileCount":24,"integrity":"sha512-NEMts7zJXWZOgCGTrvmqmRJwoz7grbpCiq5xWdiqLLw1BR1KadAfQbdNjB2sbH/vQUG1AvfOrXFT6Qt9Dz3cdw==","signatures":[{"sig":"MEUCIQDru6V9icvRh2iGBzkZCg5ujqZoXZL1YDbA4EzEiWa8uQIgELhv4R/UQvCfR1H8B+Vg57HWAJm7OsUjo4yQx/d9Opc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152050,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf+7jCRA9TVsSAnZWagAAZZ0P/RU8j+JO5Q1a0rICzb7r\nVkgSW7gcn1ysp1YEmUuorQImz5TrUvc1PpFQQmSgRw5B8+yf7qTBAVH1Jw2p\nt/aJzng1Zg7r+9flIvDA1lCqrudOpckX98vhk1yNQjKO/V8mkbft+xHtZr+D\nG5h0vcLg2pU6CivsPAdC2fCAdgF3QFjV7GONFd+CEJ/qSN9TvuJIrjtpraRA\nJisn6twtbFSsGZhExwaQNZ6sukhJ/CJiSjOtJVHferNKjrwTr+rCQWO2Z3D5\n83SvEI4andRYy6kJJQ9W76eXNQhVUkdKutMK56UuEoHgC2leAxQVGLR6x88L\nKi2fXVU/vnzBN5w6DNNvlmzuKivojiUgVXbPnWKfIAYS34krc1CIRK/1zqxb\n8Cs3e4q61d7pWHChpHhVigKeOxgfimmx+6eIpg1x+jMRkaCPSK/ffLGpUVfh\n54I4PM7MiatqFdGFEbtdRNYE0BTiaZeIt/KZ99NFT47wYcGLOWLXvpr3TzzL\nKJbdNxjtI9f4GAMqIjkpwrDDplZmk/7wpkNGb6zLPzn/sbuIEM4anqIPzWt8\nF76jecKyAwfFPzzeGv99doWO+wIJX3FWgIkOLjdGdGsQP77ngtW/7VJUr62P\n6AYFh0DbvTcgXQVMyfsqvnSO/w+KLl8qHBKdVAD8625x6oUB+pF6KvLluNeG\nriY1\r\n=+s/I\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.124"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.34"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.41-renovate-non-major-db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b_1618996963280_0.16832106049212614","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.41":{"name":"@balena/jellyfish-sync","version":"6.0.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"16c3ec3ace013217e49d02d3385b734585006201","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.41.tgz","fileCount":24,"integrity":"sha512-3aT92QQM6cBt/Vsjoye63iWNXDmErPWFE5M4r8dGRAYrmvMHA21GXii28N54LX0vzVziIiTJDYNaKsOKOAfVKg==","signatures":[{"sig":"MEUCIEK0yrJcbRv/MsDKSdlgHgrl8EHySkQ4xYZb/70Ow5hkAiEArDp1dNeVZwq/YzpG7iLK1Hd1LLfcj4wC3zoLdAc77tE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":151990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf+/dCRA9TVsSAnZWagAAzmEP+QDXIZp9XTwCfq04TL9X\n3Oiyv5Wp5GHtkC+5G/2vOz81eL789LZ4looAtq8jWl7f/S3AKvYq3wjCO3ge\nbMt7/ZBSYoG3+9QRiOMVzk/dwe+TrUEqH6l8v1sOaU4vvPQBp3tY2Ng+qo8S\nJywoni/1hr3c/0k8jpSxZ5eYJ6Ui5cJPVMvRoYiqFUd8QMVfewYqs9OUgQ4Q\nDY2HDMOprQrZ20oiRL0k5plnVDuDdSouHJ/6i9LuO8XP4/XVGlCTuFHXAlOn\np/ybaRW7+RgeeXtebm6jBj9oURxds9L+0bJEL7tvpVddfE6EnUkfkzshuCZ+\nQCCo0BKpjw0ZNV95QbSoA92GjtGqvbFI8suugB42mP6HSicucOcaAxC8umlZ\n6dteyeJa6Qc8CMeafOO9DnwHN//7YyEUUD+STOWVNpVtJAAPJGX9+Huyzjxv\ni9mWZ8tjnS7hrSYu9Bck2Jh6pwHaoUY0NaoE3uAeSuNre4qEd5XXlD5uRh4i\nAfdMcDo6WUjs0XJGw/gmj4bPLdc6ZHZDU3FZSRhTNbEasufJhnewDKRqh/dS\n3VSyDFgS1qll6fjvJp0C3GecrxyK6TE3DspWXrmytGB0nUsmnzE+0YmNTAcK\nUu+HmuNHlz92Vag8AmUQ8ItA6PyvHDXl0vqVdFwrj+t5lRyW9tonFl9gZxG3\n9gNG\r\n=YRDh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dfc955e20be02f4aa6c474c1b65995b1c7cd5af8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.124"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.34"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.41_1618997213315_0.8773292841534723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.42-renovate-non-major-dfbfac879afec2768a5190c551984f97a1f695a5":{"name":"@balena/jellyfish-sync","version":"6.0.42-renovate-non-major-dfbfac879afec2768a5190c551984f97a1f695a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.42-renovate-non-major-dfbfac879afec2768a5190c551984f97a1f695a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aff773713f7574251e49a2b4ae333cfc3ff290cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.42-renovate-non-major-dfbfac879afec2768a5190c551984f97a1f695a5.tgz","fileCount":24,"integrity":"sha512-NxJD+W3fyYRen5DDrT0aTGOeHN6Ou1SQtOWAHIPaVZzGkqegvXEDUblcm6ryIemjkMuKolPU3cvysQSi4b+8tg==","signatures":[{"sig":"MEUCIQCSS8fAaNnUVXV8jD1lJH8rEuZR/HSLWKAvT7xIOZIvbQIgNxnXbHIgWiwMmxl7CZdSaXF1cqJ9CErEsr22NiLuuG4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggBJICRA9TVsSAnZWagAA1VAP/jTNlOb9Eanyh4XOTFX1\nlvPR1eUy5X19qWfIQNGCELMY46mbuuNmXEk+Z1Vdj7FfALRqD7xswE4HNqYf\npiDFX2yZxUudAH3s5MtQfNm+5Q9K06NDbbttBjf//LG0xKHXqg1xdQ2bVLye\ntmReP+ad2Kg/5r8ms3NmrMMu3qv2yaZtbwSDGATkdiYBSgOqBtPxa5C2SybN\nUJAt/G2p3+HIijLsZoLHmOcBWT4dZbcANgqHS4Sodtsicje8RRVHNdIDXHqh\nFn5o3QdMpT9p9o66nC5AloScPpwX+tZMKwN6XAWnsM1azdlXTmjl1K0Fwf0h\n1sNGz+THHrByzTvzaflHFdAAzyl3vqlHGhJhqbxbC0Z3GDY0p/YSOquxj1Sb\nu5WXv6wJR8A8M0s8mR/6rXWWW3g1ixFEU7mqVHW5t6la+fyYeKc8ofvT7Z/j\nuo/EDbqV84sxx+YIsC6EAU/X5bnhhF9ALyqsA9/8IEKAt+UUsLLVvk+ImmIB\nOQCahidPBZPuEs13pzbRMm+SWMIt2NHoZPWCPIjAvLqAz6PhYYSD1QTAiZtr\nc5xSmPUnU77coGInNXSV6Zzt21QMVIkKTY37hB4DCgDCHE0mgVoyDJQdVMC+\n20sSJhbCEOrcls2V3fJXC/x+wpg/CA+lnhj/wIJ4frxY0YcNnhnhXH9IgxJi\nVaBP\r\n=dChq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dfbfac879afec2768a5190c551984f97a1f695a5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.36"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.42-renovate-non-major-dfbfac879afec2768a5190c551984f97a1f695a5_1619006024370_0.3055499467561016","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.42":{"name":"@balena/jellyfish-sync","version":"6.0.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"312b0e8d10e0b97c8448e354b615167c2aeaa947","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.42.tgz","fileCount":24,"integrity":"sha512-dK9d3A5zOvfvp08C1wXD/u1iqt+NL+yTxYW6MADoa4+LRb7X7uiNIFiaSvnXuamU+p51u4AQEV5XtS0euOGqTQ==","signatures":[{"sig":"MEQCIG9HwTHGg3Q2StMx01XZoEtDApo5DCFSJzO8d2HOoc14AiA4upiy82nguuUUkg5VSL0olS5HWIMDpamskwoofd7LQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggBM/CRA9TVsSAnZWagAA9VkP/0tyVw26IQJjZvLcwwSO\nDdeBx2ureduu1gaKbcLZcpnDqnmYL1aizyOrZvjNyaEP8rExg5jbm/U6nABp\nAH2wG7mrX6oA7Tr7+J6PLO9KMN5UkuHnD9mT93W7gWkhj9GOHvYenBFGhd+F\nD/ph4QxYVtnNEmpF0DPRI5pqLvIJLTw7YFDvQEExbq6dSWcD+Kplt1zzzyhk\ncS4Ztb3vmA27rr63vk6eatI1Gp9BRE+IJvpAI7teLMmER0c47UoPyVgBkNpb\nisoyn1/i34yz936HVaDAMYNkr32Jy7XtEJcor+vDEUEt+3KjLZMwHSWuraS0\n29+OK+kSfvVRM3wvsy5aX6J+ajI0OD0pB6eJN1Ger4hvOellp6yWGQ/B7Vx5\nABmASX7WJ/xifuDlHLqrYpfPViUwkSNqeJuWR1gKp55GsJTB7s2g4kcUyxBo\n1aBAOZ0wD9T4GgfucQD8iowjmBiSoUTVGAoNez6qPnRMC7AVi3UevNBPDv/L\n9HiM/bFXWpMbRU8TyE+0Vr0gb6KLjZ3fVE1Jq1VoaIAniPlFHF1UBporHwd3\nsXFNzQm9PhsqmsL8uZG62QW1PJVHiG3P4RcPgG63B6rtyZsCLeesAJNrlbnN\nDkv8h4WnnDRaWr9y/3KNkGbUPERmt+uFIjUPThp/OLboqi9aQ5zAchQKBxht\n/OqX\r\n=HfDz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"21d358dd13b09e34ec81fe00fb48d4692a316d76","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.125"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.36"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.42_1619006271109_0.7872087962505774","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.43-renovate-non-major-f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036":{"name":"@balena/jellyfish-sync","version":"6.0.43-renovate-non-major-f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.43-renovate-non-major-f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd522f97cc8998f9b749f97aab2e7823d15d50e2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.43-renovate-non-major-f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036.tgz","fileCount":24,"integrity":"sha512-X4gAwdBYGC3W/Ly+pHLtYFPfwBJlHbKymqzmhYGulUC3Mln6RNrsT8kdpD0xawYPWA+7rgJuYluOOShNwh76cg==","signatures":[{"sig":"MEQCIHgMsPue+1GkJmtdxA968bXgUaN/tCtRp2PuosV9HsP4AiBHUczN9TNDBHLw5+S9a/TEJla5QxNGMdzzYG1y+xVNEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152218,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggCQgCRA9TVsSAnZWagAALHkQAJx2CMMOPXiKx3hUOuLT\n5ocSy2kLghtuzL9ByjmK2GMCyhawvdB65I0Q9MasZJuZFRBZtuID0RDblXSv\n9knx5xDPfFtoeK5j+8JSdTaTAbbhb1L71CJ8Tfi/kqh4Y6Se++tAWtsshtqk\njRPoTkI2qgjO4lmZWadlYsnVl3bXBdeZto9AIYJetziXGg/JYxfXEE2Tzda2\nRa4CD3tRLZf5qZSezoPlPk7mXEBIbpW+NlH0UvJZYtScyuxMasdjmqx9+lWT\nNHIiffkOjzYISed3cj++QxulR3+TTnlGn5D+Nj/T4bw9cme86rtdEVJhInff\nI0Npu/tXFM0bgWkFTxshbTXOPO6OuGDQQlC8IBZ7kIH+zn8O7bQBVbilWJ7D\nUimN+sniwv2ngICb8TeIa6OIe+ZTdCnB1RdT2W+zEHEMFpHkKz+W2b5fKPSm\nIQ21BebqzPPl9zYHgS1HkcDglMjTyqFRmuj8J8qieFInKM4e+xZ/WQKzZl6W\ndDYKI1NOK8dYel9VgSPTGt7/dqtzvcUGoZefbOjhZ/xeC6NNz0ave/j3Jb6m\nQD/Ryl/AyxtBSbqecPS9YDgtP9MnyOouht0eYFJ+lBiiIfFDZH4yccslRgHq\nNzkypu7Kn6O9o6wnXFc29wM+Cf5Ve3lfGLrBDpPpFnRBulhMrvgBwmCfEF1F\nByQh\r\n=lNR5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.125"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.37"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.43-renovate-non-major-f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036_1619010591405_0.7158959155936093","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.43":{"name":"@balena/jellyfish-sync","version":"6.0.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1340793c858adcd0961676b97927503ac456b0d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.43.tgz","fileCount":24,"integrity":"sha512-urju2XlJr2zRCVmdlMjpUHt2Bw4p0x1psvKnFBiJCGkeXx2vsl/HcPYA8YZNksh6zAfaf9BvfXLgaGf5HxWUpQ==","signatures":[{"sig":"MEYCIQDfqk2/vFY0OdsWsBahKuDyvfuaN9H55Q8SoZNNE7kwcwIhALioueAteBYX/gHjzeq5H987Kz93uGdF0QxsmzsmGsW7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggCU4CRA9TVsSAnZWagAAF7UP/0094JyWaxc0ZaoDF2cm\ny8qmAT2pzr7BF68NZtgavEMqgVVBjA1xQh5IS9WYX7SDM2QoU6rVKQ2IGq1h\nIdHvYFYQholfmy9tapnbyhk59Bp1kMqDbB+m8Gb6LkU44poet8Hem4Plp7JN\nfp094QmR9Pug/6CykI1JO8aeLomeGhqHh7N/g4+VwVpxECz+jYvfEqsuU7tz\nYpbhg54u+CNqwkuTx/TZLoJo/HFBrIeorpZHfL/dyYGhBZ8mZGS5pu52LEz8\njRcPm3GeRHn+g3X7dOdZmHnKOvwY7u0Q2xNBLlJxv/s3EPxuwdYeB0PmQkEX\nFlIV3e6zbK+1zQ8mZDPCthhuIJeSlGJ9qg3adxH1bxWu0TjrgLzwnFN/24m9\np9UpUtOZ+b0PEDi/b544C1nyAUqParXSWoaL/LrBoH4P8iEGXEzVoBlUoXei\nR3V7bO4K6NT7cC8AMcCTbn40bzbquohECZkVeb7NNcB7uOlcqKlz0eRG3VUp\nvjG/iOtD1GQuEqyz0tTnwwtNA7s5HKyecvbDHxiPvzva41c5JxPZs1LLKcEh\nZrjarLVnBPoGwiWEGyfn5mQ/8Z3c3XzaYNcNNoY54SZJvuN8kMf/fO7n2JH+\n/fqNhoNDVWxt6ya/+gLBp+iLocoOLSAzJYGppYAYqLvOugoA7ssoW+vwjvXX\nsLzG\r\n=oNUK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"11a35607726d3af9ed6a444ebb6ecea020584207","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.125"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.37"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.43_1619010872268_0.8836225365400359","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.44-renovate-non-major-8bd83754c44f0f4151e7d01b9fccb63b8e8fe609":{"name":"@balena/jellyfish-sync","version":"6.0.44-renovate-non-major-8bd83754c44f0f4151e7d01b9fccb63b8e8fe609","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.44-renovate-non-major-8bd83754c44f0f4151e7d01b9fccb63b8e8fe609","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"272ea5866b500a281efa2217edd1bb73607d8900","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.44-renovate-non-major-8bd83754c44f0f4151e7d01b9fccb63b8e8fe609.tgz","fileCount":24,"integrity":"sha512-YCBS1qI465UsKyWxkTZteydeJFTF0B2zPOoMvELoWH5SLEU9jVmqtgx/LQXkxb90BpuB1AnH7Xyw8dWUSM3hlQ==","signatures":[{"sig":"MEYCIQDubkO9TU7SXMk9QvFp1OWqzb9odnLgFQ4Rrgo0aPBJ3gIhAIec6i/ZB+aEmd9OR2oXDoS5ggiuLJXe9MjrfRblysa2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggEPNCRA9TVsSAnZWagAADmwP+wbeBCCFRZzF4j7NSIql\noDm2s83XFl2JG4XU1v0cJ1UhsgrjCfNB+D0l3SmoWrofN1Nzg4Kze5+gePD1\nNXUgRn4Rv82kIoqocg0az/thlALRJn+P6fcom3M0vNRxc26o/7B7KJ+ONqkT\nPBjkAj2G4YF2AOQ7aIRrTw2aAY/YUp/elHtCVc6J/ACSO5f7RQm/F5+AJPMJ\nkZ23CVog6OQUD3TYFdaA/AgBiybsPGiZTxkWbshnlmmFXoRZ2Ht+USP3av0H\nslWT0WJTbdS084BP6B6m9GT26bfC/+4nkYSNdoHI71ypFf0zZSFMEYXE4TvW\nLdQjfNeoOjp2tF/2SxO8zDgCubaeBQOez+9yQ6v6i2USJPbp34oWYW0NPTy5\niyMpFgn7SRHRIMpNEoI7sck/sg+LDDijXupOBKR5GojVIwHdYlu9mtWRAkh/\n2F0XYilZRUcWiFrd1ePYyzLxazrldZmEf5OEBSoimDsWsOykhL2UwOevN+M+\nBKkGwYqzqCW/HcbsH1BwBnvaGlHGe+2XYC86yRWGtQhfVvT3kuoJVrtEBxyS\nWdSyxXWNqeiT55TK0yRjmBqT/q/x5w2HluQ0ephg80wKofjtor0URvFriKyG\nMHQBjQGrWsdQnK9BOpx6WrqGDg5odLV2lpXs+WDFOm6hQBaBm86Vv5pZjzWN\n6mLY\r\n=oyts\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8bd83754c44f0f4151e7d01b9fccb63b8e8fe609","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.126"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.38"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.44-renovate-non-major-8bd83754c44f0f4151e7d01b9fccb63b8e8fe609_1619018700521_0.4412155625258569","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.44":{"name":"@balena/jellyfish-sync","version":"6.0.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9889fc5aae48b37cd57bb4ecfa35c95f6057e3b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.44.tgz","fileCount":24,"integrity":"sha512-bnBQGoaBFqbRvv5XtMvjsSLyhtYuR0MQbbBuNEe/2DoTysXsH99USwt+sX4FJ75TMiCU5l9zA0hkJ1QVMG11KQ==","signatures":[{"sig":"MEQCIFg1WXs/6nIriZs1GaxxhgwXhapLaZdLi40INo144ls4AiAdWNgVOhf+qQ8uukPFKY2D9otYnytOuafYcpa6dJ5VBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggETLCRA9TVsSAnZWagAABNAQAI8Bhn1iJw990BJoZT24\nnjMaz9ZT3Sy9YIkERBJ47dCGE/J2Y7n6bnxo2D6YZqo6z73EyKqr1WCGDuKG\nGa0KVDe5WC3431h/v9sSy6j82ihIqwIlPFfDhxmvHIQHUvWIZkfMpEZrXwB3\nVhdJOyK98YHL8bo6LoSv1pnlMgukBTFDnNuxra/F59lZKCtdfztQctRHP9he\nZ5MUmvsMdhC0hmzDGKP+IqLExNyZdFQBjNVkUIXzDM27qHS/SuwjYflDL+F2\nwYCbaZk5cmtieYWAAkYRHujtrV947/RxuZ2KXtjnwbZXAKXtGMzMq/3v3gdC\ntQAHwkMilm6ISJ1YA0h9ssHYL+B9aTsc0SdkuaJG1bnJG4NhRZWVuudZianZ\nwlv5hxzIRFI/5NlDds3DIuwGsT4oRbC5hlnBCAkCambEvVCgqtP/kgN8JD3i\niLBbPQlub9vkmrcqH4Q9h+EiGqymO4qnP+0WTTr4xAp/ZLnmuf7DMUGS1q85\nsCGwJVQ2wbmpU6gbmUe44uAVguW0SUJmnu1VI3L9Pd+pQrX/HSqyR8U6E2KJ\nowYH3CnpNsc4kfVLavBum42nqWGxGzjhQmswfHe25GbhECZGpD7Tau0SPyD1\na706wS+IalhLSHMD9GUH/7tU6i0zlnr52rtkM0LyDgq06D4yN7M8oUmaAFGL\nzRB8\r\n=SMrP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"363b945218fefabdcde1233bab2b09611d217270","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.126"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.38"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.44_1619018955411_0.8320033126686781","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.45-renovate-non-major-670a68fe20ed79cee4b945a135749ff5f216392f":{"name":"@balena/jellyfish-sync","version":"6.0.45-renovate-non-major-670a68fe20ed79cee4b945a135749ff5f216392f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.45-renovate-non-major-670a68fe20ed79cee4b945a135749ff5f216392f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d8458ef61c4798a5471787f99b78d4fde62da103","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.45-renovate-non-major-670a68fe20ed79cee4b945a135749ff5f216392f.tgz","fileCount":24,"integrity":"sha512-MWaVtF8Qm02o7YklEILCj6IrnRKlO9hW4Br385la3+P1fEnZ1QuagBnCDRKamlgg93wYG7Ot91+cRJBimcK1Gg==","signatures":[{"sig":"MEUCIQDWJ/lxYddnxjr//m8+TtaFuKNfFQuW1D/JkRhAcjArygIgbp0zFSL2J9XlqP9NSBWZMVT2uInMFzH1ycruy13/GaE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152386,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggGTtCRA9TVsSAnZWagAADNYP+QHROkzUe/nHscu7ylun\n1ZpKQDFXxNc4gYFN2b4GC0BBrRou8SckbWGJpNh7Mx2290bWMD5deXb7eHM1\nrj8TsZJ5bVF0v9gOv2w4xZxmK/rJV8yJHhc7yuXC+D/8ExTI33HMDgquJuGZ\ncbtPixESRoWxQ2SlFOGdpXYNH8hIOCRslLp+mqj0rGd1tn98VSMo74h30LAk\n9lKw0uCH5NnQHTsL2U4o8byjkEYkVbm5k/5zVaMbDPc7u5SFBcNA9t81kL/e\nEI96KklYF9phpfUejklVb7V+zHqawriJFsVSmpZ2PvwB8A9k3DL8YJ3cDKdX\noL8Z7tNsI/E9MHOEM4LEl1Z6mwN4n/cR3iFSLDqOr88XQeOC9+BS36F2zJqD\nsy7MHaF25FCEzocrFifhR93/zNbJhQ3s9yueC9oIHSI5etS7QTzyu5qTM+0P\nGzn6uGhwTMBUOZ+Xow8PEUseeA5+2QBWddCWX8KuSZQtfILxVaTTaifiYwZr\nHu4PBkpwB7l5wPx/BOzwhX8gpfzIy1giPGOIhGpMTAuw4pPoTDD1QVbgEYni\n2sgj6xc6OP0ZprPKbSXkFykQOh0y8JZyh6epTFbO2npW9fIccW6lN+slKz9v\nsA9gMONctI9TmMkcPFQepD+rM9frJ6MydwJBDDilmgi/fELCbK7VS1B9n36I\nidzM\r\n=+5J+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"670a68fe20ed79cee4b945a135749ff5f216392f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.126"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.39"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.45-renovate-non-major-670a68fe20ed79cee4b945a135749ff5f216392f_1619027181326_0.2215160712561941","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.45":{"name":"@balena/jellyfish-sync","version":"6.0.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4b14ea6f4e1ada1a5cfecb6468e401f1eb258e2a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.45.tgz","fileCount":24,"integrity":"sha512-PTTnfYMC9Vq6HAj7g5Tk6Esh1opySMQvQTaz3K1JMlLqJ70K1iDQ9Mi6F1uQHVN3cUl6eELkt+7d1EHLy9JOLg==","signatures":[{"sig":"MEUCIQDRo9t0DGtg7aEKdAj5ifUt9VL6IkH1+Bfxe4qP+ND0yQIgZXdCCietSteKHmgKeQcTZ1D+TsHlakzjV/ZbEdt7CNQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152326,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggGXOCRA9TVsSAnZWagAAHQQP/AhAjq3DafgtnK6auZro\n53jwfE7K9TxLOVOXNiVfxhjQWv8oi06gOaiQxhZcVjbn6eIusptXDli1vBrs\nSgt+5O/w3WegVts91A1+JVPdZpUcBDtLhgUb1+lftzzctdG1lKylvMZEZQxb\n0u70YJP0/NR7k6OBU//9wKo2rZjtJrwKRJRmgBrgLto5bUqG95wV+8HstGJZ\n+UUMg9qK+OdoMue5GlZyHNeTvjC3s+BU5z69ihGsTuHhTYmE38xtFd6FP0ph\no7Gf6LKn8t2nsAThdW/8rT0YSyyEsC/2K4dxxiS6fVUIgczovawpAy6VYNu1\nkSJ4cRu8vs9hqPPqV82D47YVbasZNW0PI0fdypRF4OJ5aCvsXX0p9Gsu2wiI\nTE8MV9P/cIl0v6UP2SfjuCdap/o6Runqdn4Bb9CHgej+hA5a/hUTe8qVFhAm\nTTtfPUv5WpkIqvfClddTkPxcVtdaimKWFZ+2vti4linsNsEgZq76ZOMg/xgC\nBiM4NVV8DGyxohVR4G76fspykb0tcrnwW8Zvq4LfeXF+FS2Zm6wShcECb95n\nm5Uloms5xJxpwMd7wybHqIq8tGk2g2RAAezc+G2VOMBWsN6+oNaTK5HcO45l\nTKEtMvkaL+7XqzEgf8CplW0XDJtZCh/LT0FMvleU5DLGwD4Tfycg3j1ycc14\nkb1Y\r\n=qwFD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"036c7fce4ffb93f2961ed8392e5ea0ed9559160d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.126"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.39"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.45_1619027405891_0.8688188036743723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.46-renovate-non-major-b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2":{"name":"@balena/jellyfish-sync","version":"6.0.46-renovate-non-major-b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.46-renovate-non-major-b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4890369a28ee628a75bc034c90919f0209bf678b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.46-renovate-non-major-b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2.tgz","fileCount":24,"integrity":"sha512-3VZao/q3MYSkF2ufkLNRE1FuXjuAskNV6dY0pMzcLZ4SCTwR8HFpCpmigxvmFZ28U0lwmCznnzXK9yfiiCSwew==","signatures":[{"sig":"MEQCIEWXCaGZuEMqY5278KzLWFxuNz+Sy8UPGb/EDFVsfwumAiB+MxJ51yJMnMdbPd9iMOFeHgKFfoGuJpxpPFpYVfsfzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggH72CRA9TVsSAnZWagAAW9wP/1kiahDQfOQcNTQr0iWX\nwaRDBjac2A0AtYeN3dtzdRGk+zoCLT/9dzSASmS1rrqB1T5OafkaUClJbSo0\nMOGwCDNPv8AeBXYy/bz2dEYDEIMRhVSsFVVDH+/Z+rKPfUPWy9EYgxopEcn7\nrbBmdAAwjj+G77DdiTiQE4AzEgJU0O57gZ52YbBh5vcqmnVNTBpoM5lkmVl7\nOYIifufw7vYSAim1edCCJRxdYbnTIr443y5QUn9VMathBeLB7vETvjt4NWBt\n7Um66vfa3wAvEpvkEJjgkAAyyrCctSuUG8P8ZeuEroou+lWP3nyFTpz/aoBM\nEhWXJkkitrRB/Nv/k8Obag7HFabu7uO3KjBhH5yEjnpJBPLDMl2w+xioFmMK\n2Ufia6Vxx8LwYufv9vSJjq8AYI90Gfi+wF3mmoc2q+duVB09Glgls87Tfc3J\nPuzFLg+m2ZGe1ybGp/h8HCAELmBRM7aGtaSDAhRKb0y9f28M2/vOsY2TV161\n4mZZMC1m5R1mslMZrnJh4M77+CYKgwTrsFxgfRMgRwgX4/2QVSQw9HnkSWle\nRxh1yQwpJ22QDSy+ZHM27ix58eENR0K7o7hUscXyvBXbY8qgstiey7Y+O3F2\n8L2ZtkXckDAvreQ9wBQ/3xueR7oIu27BCBX2oVyWjoYKZ9ejDEkFWsR8XbS1\naigw\r\n=oc6i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.127"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.40"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.46-renovate-non-major-b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2_1619033846480_0.7786887942784033","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.46":{"name":"@balena/jellyfish-sync","version":"6.0.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.46","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2da747dad089f14c5789a5e09813ee4f4a6cfe4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.46.tgz","fileCount":24,"integrity":"sha512-RAgmii/8DyNesK2Cd7Ei4k0Fxldf8pMDFL6Ld/pBoug6wpYqqZj9tV1Cpr3VG7JlmkuAtZaPNbtkE1fRcY2Mrw==","signatures":[{"sig":"MEQCIByFPEqOa+Lndl2T3K4fq3TPOh03jgHkeCR4eIhuzGMlAiBa2wDgXTU5qN+i6zPGyu0sprsRE4dBh2cY2fvwwkNl9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggH/qCRA9TVsSAnZWagAAKCQP/jrYDmL2bJvb13jYtW45\nDtbPWK19gF9SQhlqQ6KNDZWrrs6k7wGh4NYoVftVPA+daoBInnnEy0Ivv9TA\n6+v/VEXU964hlOtNAhMMyGgvprmcy/u1aGGS6fbtyFBbgkyJc+SJcEK//0o3\nZMIMHuMOnG06SJrQ1iN909wu/69ylL5CsqwvImEtQTJR5hGfqvccHPIylcLC\nwiqHKHmzaHTIIAnR/6VFAICG1i3PrQ7jCA4Rbml5TmzM1wMy2TERECgROdI2\nVWTd0u/fx64VHwPMIl5TvZbmkN9my0P8td/9xOvw0TJk2vDHCeOOlY2/o9LA\nRH7nWW9F2WXDxiUaDsK4nwVKAJ1YZ0JCAk8sO4oIWwW9CYYS261n5XSzIAgX\nRH0b7MX7+arT0jR+pgxnmyNw38f5HBp8ZIdeYcDw+3sb1YcJ2laucxuDLNPs\nDq+jv3WYMfk+ySykpoa2q5074ogwQq26oRo3i0181DTowheOZQpHUtWMmPMi\nL8lppeGB99EJMxACuL2wd9q9E2tnTWJDfCMFoUpu9B9xY7F7vC1wcLrDXAS3\n9g5Q9t1z94/i+z8JkzX5fq5RAikIIJPnwxl7bh8x7EawZuEaYMn+LnLvPgIM\nbsgnIviI5bJu9t2sjjo0j2xviNf5evQwDdqy9ZZ5pYZUIbOEi+Nd4JkMkP7P\nmQGA\r\n=AtMY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"86854d8a94c0c4b7ddd386eca8f536f8e90d229f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.127"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.40"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.46_1619034090191_0.18270985074071122","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.47-renovate-non-major-13371f00861fe57a1c7ad65c29448731e141b569":{"name":"@balena/jellyfish-sync","version":"6.0.47-renovate-non-major-13371f00861fe57a1c7ad65c29448731e141b569","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.47-renovate-non-major-13371f00861fe57a1c7ad65c29448731e141b569","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1f8ddbb0550be8962337259ae07941b555998ed6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.47-renovate-non-major-13371f00861fe57a1c7ad65c29448731e141b569.tgz","fileCount":24,"integrity":"sha512-nc4c0z25w7Qu/JaoxeXpIcPuURSKNjxVPVAI5kkoUN/UewRM0GXXkxSRpf3zHekb+2+rHcxSYly4NrOqXvIu4g==","signatures":[{"sig":"MEUCIC0LTivFaUcK8ZiS2iTg/+UHX+JgjYRCV+utK2ApNQhzAiEA13D08beySBo8l/nuhERKdqPkdPX2hA5UmcdEoIEXIss=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152554,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggJlGCRA9TVsSAnZWagAA++sQAJoTnZSCoiGW79CtLiv6\n4BCvWdncPAN+FFbUThz7rVoI+wwLiSJ1TVN9tCyu7oATMWTlOcA7YRO0LSU0\nDYjiJdwY4lpjNbxWFWYSzKHd4Z2XT1kjzlUItqzUfyCLrXXatRL6j2beMbUK\nBHso4ONTb3GPDiEDtE68DRsX68U6nV1UrZFpvarJsbro0Ja6sVwl/Y4R4s6S\nGV2MTxp5xCcs98Lt+b7lEMtuNT6bJgzuydo+uk73MPZTZ0kheMK8uJcIAx62\no/y6i8SHG22ekXi3LaE+KPPsC17QvjMratjdbBxAqkEI3olRw/Af7AFOEFOf\no358mpwAguTnfilF07C57jDmfdHvUHaElro9HeKmGyQi2EwF862YNoOR0XJL\nxT8dM3G9hnZpp7LqxpuFXl7S8eyL6ezHzx5OjsiQxLkz4hkRBdfEibIC2SWa\n+Q2dIcK7q/OvLB1xZIk8LGYbHQ1zjCBbiLoYmJ2vKdMsNY8XoXHRr6ikev1z\nWSBTNE6yMGH9JMJ/guyh9yCNDFPIlX6oiPp6akEbKHrqeuHgddRHQGuDtoZM\nIwFqC6C5L1QdfMBT/FF8ogrRuG5wn4U3GnWR8lZmndHm8vyYY5HFjjfKZGQZ\nGLDmSDl/xM5KbjVZdc2EsUYN+JQ5ITGHQa3ory3/y4PZySnS9LbFcvFiA2OM\nAYUF\r\n=HJ7M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"13371f00861fe57a1c7ad65c29448731e141b569","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.127"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.41"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.47-renovate-non-major-13371f00861fe57a1c7ad65c29448731e141b569_1619040581544_0.533926119681376","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.47":{"name":"@balena/jellyfish-sync","version":"6.0.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bfd9ffb37924f171dcdd9ba4c45e1f93db5aab4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.47.tgz","fileCount":24,"integrity":"sha512-LiQhMRceyyTcKs5vwNKp5Lh9toIKiR0/6oWSr2+gMQnANmVdVX0JhCZ2RBz7Fcuxr4uNf55/ePJOj4DEcipD9Q==","signatures":[{"sig":"MEQCIGUOA7XwBRzqjwEVZFiZxShAPN9hI8NPrxKwQaFaxuogAiA6NhoVIcvJcZb/tG/8cF4IYgndyX/1/y+xZfs0Wd/ZyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggJr3CRA9TVsSAnZWagAAEVIP/RsDezU85YLjVG6HCcuE\nvbbvxUXIAYNbyCLQuFj46lCEnUrS0YQkXMI7dsig113NM84ear5FHaCywGKI\nRO/HXOu22EMbTVfSo1bszQ9hdnv0LwC709xylZtij7ouNlb/eRZGFYX3Zmfn\nDKNQqym+bN2DKlrROcoaczN3HZJIrxxNGm7LpeIGtPd4L9VG8AfdElXbtwyv\nWWUN8tMDRTiXrB+5VKaNOebD0sCYXfbfiScwj4vEHWsS1SUunN6j/HOjw+OZ\nH+GbHgquxNhQ3JvcHrRCLN2zLusk73h4JsCTkE42PYVdRI1dYqeoopjsXDy4\noS6/m0nhGsOfNI7TpBOi4yOmSLVNz1QCV4g+Knu9ySkKDJO6fmKpmWa8W1qX\nzpMpVbAWE162Zkg4nsTHT7U43adoP2wfV2pcn2j2ms74+36lo+z1MIrj12e8\nRRiOyzcwhjkTt3JF7vjoplTtLYc+siI7YOKfgzwXJLpko30a2u/yg0N1jACR\nt/+9BnKMW852stbi0juwHNPLHo9OnnSSY+iv8eoaidjqHv1KNe4fHflsk1qm\n+N+XBN17rL8cK3a92+4Lwi89w8L1jdHPL/sXzmmPBvZxEU8fgoWVNFcEM3oU\nXC8I/adPddMQgZnECpkDBOUYEB3dDPLg/MMShNrSYqXdaX5wannmfWmIL8bZ\n8YTZ\r\n=sabN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ef33ef02a11f35ce5a65b6317865ad72ebe9c516","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.127"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.41"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.47_1619041015402_0.2051515680269671","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.48-renovate-non-major-a9a565973bf74d16bd717482256a016f7775033c":{"name":"@balena/jellyfish-sync","version":"6.0.48-renovate-non-major-a9a565973bf74d16bd717482256a016f7775033c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.48-renovate-non-major-a9a565973bf74d16bd717482256a016f7775033c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4155825b3f324b5098ed4206b1fcebcbd55052b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.48-renovate-non-major-a9a565973bf74d16bd717482256a016f7775033c.tgz","fileCount":24,"integrity":"sha512-xmUxYQEO3mAQZ5Z7y/tDiDTdHw69mqwE7T9AK60oAAlfF46Z+HdEJkbNnd4Dk6Fw9Ezc1IBy9vxM40JP0LnrTg==","signatures":[{"sig":"MEQCIGC4lU/9rxsgElQc7aWvjbLph02pkFL/DqTSY0pztrpzAiATMLhD8gvI6mua3bEpMNecgY8lvuNNGnxlgda8nNfBeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggLuKCRA9TVsSAnZWagAATDAP/3AHAdazOv/AuMJ5vETW\nXwJ3uEi53lSJdzMGaXRdyORKlbHGoK5ovRm3hlL5SAKo0w92g4u10pQqTIS1\nsezOotVWuLzZRbtzWYeSDzt7z/VQL2coHE01DYI1Q4sq8Ln6rzHwJtWqtvlZ\n79hdvgCvie7GDdx3mzbfQvvrxZsM7F623SA5x9iyK8EPc4cKzCD29BQLDodp\nY2Bs0li6nJxOUiIFeYZlEFonlpzmTYXPRjAK1O9dwKxnohWscBOeQ1ZJmhXT\n0fVvdnEKmdQevtQrcC3KbFoSk5P5Dgox9zplJWU8Tmy1JJ2aCjmPQUpvfGvF\nkCWx4xFm+BIC6Xf0V4wE40HT2FANUirx3S3mQN7Bi3GNh7JYGZWFvYSi60Db\n45xU1Velh3WNrb8KNwkhOyy0gTvqQ1bsEEho6o9FEk5PwWQBfoAa74GKZNJ7\nZGVy9fEsx3WHl0eek/jw19NFKavW3AAlSpvxARlgwzQiVRKJy2sU5NAwJBEz\n4XZIZVzmqAmvEN+nqrXt2Ica83ob/QMIiIv1qrmryAzWBj7oAr3b85KQNDGf\nxJG3uItVdCziOncMErY1ycbh0CPaEBkZpMgSKHiSVOSGBFIgDN45SsMyZg+O\n3uVjnvEqelhyYS5Uu7R9/bedzWtA0eEQ7EKsKNmLsMc/t90YJmjgamMd67NX\nfUiu\r\n=SCUt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a9a565973bf74d16bd717482256a016f7775033c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.128"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.41"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.48-renovate-non-major-a9a565973bf74d16bd717482256a016f7775033c_1619049354076_0.8689042665789368","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.48":{"name":"@balena/jellyfish-sync","version":"6.0.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"25646a025b83d1d3b2dec1502ed301945a69ffcd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.48.tgz","fileCount":24,"integrity":"sha512-zB+zyXsAobz1skrpIYOxlgP7kaugqPcVNN+DB9uQcrmxOHuHeNIYuiZlOoDkhoToJOpl3yYIvY56wLHw1rb4Rg==","signatures":[{"sig":"MEUCIDj1TdIscpSRABYo4067rZbI/YkJs1ettRWfP+MQ4WbTAiEAjBV3141kiEd2r573zZ27jKPZObX15OIVFxN8bLj/s/c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152599,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggLxyCRA9TVsSAnZWagAAbacP/i63Rwi6A/PjJmrfEh+J\nBKSpQMMJ8fiXnZwDboaQoRPdvBKebcJyn26Kskffs10eW0aY/CVknFVJBMeJ\nqKGaT2xeZfFbhh6+2XRfWjjYkSBU9bt8Cn7pCmzO7tQ6E7I5I7g7+1R0LEJH\nIEzs+fkJohNYRomYwzEarQmVD58N2ZQIWbN9Zt1B8tf8AI2MBAJsKXAJ2UqK\nVln6XuYWBxRCI+XObj4joL0RgG/3cPP1fdr4ZgCvhn/WYvrx1tssndLidTUD\n32Iys1DlF53ENX7WQWlPO6yp/w9oO7bfwJtEnOTmEiXHVVzNilFYf2KXjtRD\nLFQUsRS70Z6hYjf+m+o43OPDMpSfCXVZeU53DbqLn7FLALZJQNQM+8Vr3QQS\nMaeFuCoBvkBi5tE4R85Jpk3uq7iRzDgeHxKci2W6baU9hAvycDE5SQ1orznL\nIotnYWvOyJIT9hykIhYHlQgCodA6C67Zbe9LcAgdHvvf+P8iYYazW2xp1XAW\ngRRpdfvcsxRSn/kL6B3+uo0IykWQMjxr3Ius+uw5C1OO+5MJfhlVXMoUDwOA\nL4OP3N9Kgmc05Z766d7gWTmJpHL11MTecap/mDQmIcuspynFWkmM/0KZ0iVu\novV3PO/G21BRFB45FQeB8LQPSqCppwRQcUIZ84uYdjfvGeZGEElJN0kefYAY\n8rBd\r\n=TmpV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"002674edf28b526725f2d6d29dc34aaf269f6ae9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.128"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.41"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.48_1619049585891_0.15891848252022522","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.49-renovate-non-major-45c43f645b1be7811aedb240d83586bf534affbf":{"name":"@balena/jellyfish-sync","version":"6.0.49-renovate-non-major-45c43f645b1be7811aedb240d83586bf534affbf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.49-renovate-non-major-45c43f645b1be7811aedb240d83586bf534affbf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"486c25e1d951cda28fe617f8716a0467e94a8930","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.49-renovate-non-major-45c43f645b1be7811aedb240d83586bf534affbf.tgz","fileCount":24,"integrity":"sha512-uGl9XvHpgqaEKtWPodbxpcKsMfR6FAqqvHVkT2nEyc5NT7wWGFbuVvozwl/nsmcHv0T3fhMp//zaeHG/iYA4gw==","signatures":[{"sig":"MEUCIGBJcXHABQAENZ/EDmQ9DmnUlc2NsB1O3q2D/uekLhRpAiEAw2WcWYRpHo1zxLhhb4RVy0ZNMuC3Z9aWoGuZJjGZ68g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggicmCRA9TVsSAnZWagAAXfMP/irgNs21ZPqknNvBHaIg\nYWguIhKEXMr3mHG+qSXsBXLcqce8zjZ4lgS+4gwlq7xm33tsPfST7iqLyxda\nSTTntlPFiI94dola8r/ijmxfXgfeowFo1UYJqbVWSUJUFLndsb/YKJ6KbZM6\nI/DB20ymG36jmdGvGsSleuNh+AiaSzukK0y3DhRjVxM7HhOzOeYtJsvE4Dmg\nioNsKjrtUBaStW3UKw0IvLhdeK6xnB68np+LpCg/XR4BxkX1yV56/EAy9HNK\nPxF25wgqmyM4UBhGxaZGVYphvTGcYo4qDdth+3KkYDKiB70NLy1kaSaa7tij\nvIjRXHOiQ5CbRmAWo+ghK+Aa9wq/cpn3XaaSKq6Yve5O+4v86FHsxsu2fzoK\nq1ZUPVfDLz5bpT+dt0AZ435mrgKZkjcLyerWO+iF0HG2E0yWLyRHx0IAzzE/\nnm0rA1dkNaB2jdDizdzhWyILH18P9g8fz/hms/afXm8MF0q9zOmY9bajpoMG\ne9Do2Pg4ACJnkmAXkBKSL2xRQQ1t5n2NkmawsRMCW3uKbzcDRlixks4jv6W6\nv5DC6expd3w3MmoerRiVLzWFIk6xv9cKPKMT0bKtpzCRjntwdfROWgpEqlO7\ndfkLnILLRbCDkI8vnOir/Jho2S3taqqCo86DFZRpqcBm1Ocpm600nakatf8S\nPIHw\r\n=suTH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"45c43f645b1be7811aedb240d83586bf534affbf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.128"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.42"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.49-renovate-non-major-45c43f645b1be7811aedb240d83586bf534affbf_1619142438191_0.027327923321213365","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.49":{"name":"@balena/jellyfish-sync","version":"6.0.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e118a1a7b4aa09e3f0a672eeeba4facc89efc5e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.49.tgz","fileCount":24,"integrity":"sha512-mqDEiPJ4+EiSAT/gzBO0CLISkkEBKcFrwlEbYXqylPCIT7x+Ya67lj0ORKFKDWM/FxolodDIt5+CYsmFczMchg==","signatures":[{"sig":"MEUCIQDwljRKQLVJ1SCrFi6H5PTsMudGbsCRV2H2SbPzHVGT9AIgTdRxVI6G3WGSYKfPqzuwBtjmAp5l4Cymc/tCxVig7Zc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152701,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggig9CRA9TVsSAnZWagAA0RUP/A5fcM3ALqw4pLQn2Pb1\nl7rr/fqOBegfjNgGn7Kd/krKpGTKdqtIcKIudFLQbAbLNc+tKnFbU50y4VRM\nrZBcj2NUt2gTexeLudysOCrKZuv07GhUI8S7EOCQtHsqfj24KqWoiA8EWLpU\nlv9hMZIrHEErr5KkcB2BnUt2/RQBnzfoZRAHImnhOPdCjWkfqo0PpwIqsy0r\nBS2C3Z2RvwOgTUzbBUYpmq3gTOQU6jxaXWFFzDl9oArpix7bi0wckuZpz7E0\nbM1TqvsXLpxPTi/w1Hrz8Ta2Wjy/saRLEO7hl+i8ucqoqsAxP82tU/uaptXL\nBA8KIcwDF/Yg0hFV+/KfrMCdglViBA5oEECy/7fje/miXm4+8noCQOrSDYyp\nKWmQQjUpClKKxxcK69h35Yz9mXlFuX15cbfSXC31BNdmQrAeRPmj0d2XdE5A\nvwcyIeVkAeo89g/WcZ31YOpY0ERootd8pU8J37gwNbpnawmvsaZhE7Nqe4DA\n2nNU+RYGIbGOvuhUmEwB1gjWjXiN6GMECFBQ0k663MFisfhTVK5xZfiZNjYX\np9NV7/liDx9sn+jC1iFOeHAI+gtfqic+JsEo6TcO4F5HcpcgQvfBUqe/L0tX\n1fguRsKk0pOkDcoQ3SyvCPrV21HvdNcnzwhdaoavPtqa5Cj4n/j5FaRB2h1Q\npgLY\r\n=L+XM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ea539fc26230fd712eb95d2b5f0f4bbc2be00c26","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.128"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.35","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.42"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.49_1619142717401_0.7743182758483245","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.50-renovate-non-major-ebcc879c60cbe4d05ab201cfef55eaeab06416b6":{"name":"@balena/jellyfish-sync","version":"6.0.50-renovate-non-major-ebcc879c60cbe4d05ab201cfef55eaeab06416b6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.50-renovate-non-major-ebcc879c60cbe4d05ab201cfef55eaeab06416b6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b4a5858d25f449c879005a14a6d9b0816f764faa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.50-renovate-non-major-ebcc879c60cbe4d05ab201cfef55eaeab06416b6.tgz","fileCount":24,"integrity":"sha512-s9ZOtSRIyAR+WaMSWFQ22VE+Mvy5vE55axR31M/AA7WFvYoxClEvoq+uJWJd21IhvR2wVHx+Svp4pKIg0fKrgQ==","signatures":[{"sig":"MEYCIQCg1V74poJ4OqS4zioKCGjYnz0CUNcbhZ7foljwjOgsdQIhAMEaYq+jQu0Gz3S8C1nS5DXxBD/dviepTB8wpIJAQVCt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggkkWCRA9TVsSAnZWagAAF5QP/RPNzEMm6TLjnPcuLIpS\nHwh2nMXmtkExlIyKsnCAl6bfU26TvoPIcyLXxkCikMcH2Z4rY0nAAoQzb33I\nsp1NtNxU52lPF6gE0zwiuGgusUEwEUr/FMtaCgVx5Qa2CzquU55XVbHDDS5R\nI8yM1Fy/d6kcuZSWGecBwVPC0xl0T8XV1wCCSD9lAiJbBjhrzwrN06AdIOFD\nDVxYo2XOPY4vqSlrHriQFgssZSNQwnoq6vnuszX3stAQWSEv3rBzpJilwvPs\njdjF4cd5wfOHvorCTZN6KkW3j9SwHnn1SaqFq96/tFO5ZOmsSkh18BU/1t+u\nEGSiRHZRPoDFiHgSBknVcIw3WGL75ttsSUQ0kRXRqeVp8jaJuKRmExo0wC2u\nV0SAd33hqAoNvLRFK5HM6pV2yPdwCOeKLx9rAyaqREGCrIyeeI/KcYlObQZT\nkW7imbuW/Ppv4X4uNhGwjiau1MPf4U7EjuNr1dZjUpknVEyTFNqRFB3DYspU\njn0+YPfVm2PKNFwFkYhHGFEWKjcyQv3M054M/k639xUAw0J7xg0Ix5MavK9h\nFnbgzmdjWw4kFdBGyBisYXHaNN2CuFn8hgHFSspC1qrpSZREz/VvzTiaMZd7\nzD5OSPU9O2ik/OjDfncpkPutnjfFxZ9OTz0FyqZHWdDxfkNBHt/FDihRsA38\nPdON\r\n=+4ZM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ebcc879c60cbe4d05ab201cfef55eaeab06416b6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.130"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.42"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.50-renovate-non-major-ebcc879c60cbe4d05ab201cfef55eaeab06416b6_1619151126250_0.441654053257323","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.50":{"name":"@balena/jellyfish-sync","version":"6.0.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.50","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8b7c9dab4e402ca33d1e75239c87cbbd1fc417fd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.50.tgz","fileCount":24,"integrity":"sha512-x5mE0TH9aJo8cgbsJ9kHaA58Vx9dSO0p8DHC0ASkWSS1yaw6JmwQTJXh0rIt6mzl8UDe5um1HPdns3TiSpcQgw==","signatures":[{"sig":"MEUCIQDOPgCFFV7B4JjdEDEW0rv0Jt1fBTDDStZvYM+T47fuMAIgIZOuyVysLhG1elLai8Kyce+kWTN/E6jd+dAUfue/+Mc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggko7CRA9TVsSAnZWagAA1Q0QAJukkVzTXFw0bENPXL+s\nIM3EMKKd9fIchlu1T9ZxAHgkV6a0RaN+Q49/QCFJWkGITjJI7lLEX5LBviqh\nQNfINBD47kYpLtoxAWI7QB8Fmj14vO9jEuwC40vq1YFAfQhPF9GA2iL/tVPh\n+gMquj2xQazs5rSQmIWqoDUU7DArXyGwzeNN65KaU1wCRmALoClNK4efSGfZ\nkOeIMjW+VHJ9Q2orGpbyt9YGYkAopkorwXQwLkTA0/Gup4qgJ2cYmf2HvUuo\nH6SolU2VQOGITJuNUVT0lGLd5yIZFFiZ7A1HpmS8WuyEQJNcXSD0nKqQiAxf\niLqR7o5FWs87boaSPCODcDSZrQPwW5kPTnLhWVS2iM/rPfPs6zYw0bLj/jsz\nfGP7SXkVfxRzVi4+cSmtI05xaUEud4HFTH2dm2apjrBVkNNm4/fup/xHZcdj\nDYzVQL+hOcg9BS3OZm9ypeu1P+9Zr9JZmgiZp2GVODxOE9H2hL17AzcCq0jr\nlyCtcAJC9KUQRFISF6bCzl4hxOJIowqzEWmA9Axt2bcaNLjpcVZv9WNUXefw\nr8MXWR3pdKEW5H4mJT3uCQY5pkFIgowwDW98DMxH4Ugh+8RUYH99NL6NgO0m\n9xEyr4z4Q6u5rB5+E5Cdadp5UrFG6Ljco0SlsBv6+w2Qo2X7ZkD39jB7PD9g\nmYjm\r\n=Aoml\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9385283ed926c4a6fc1ba3b648b7f892becdb4f2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.7","@balena/jellyfish-logger":"2.1.28","@balena/jellyfish-metrics":"^1.0.130"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.42"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.50_1619151418402_0.7974556078325079","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.51-renovate-non-major-139f0477c933c783ec8455704349b2471fefd698":{"name":"@balena/jellyfish-sync","version":"6.0.51-renovate-non-major-139f0477c933c783ec8455704349b2471fefd698","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.51-renovate-non-major-139f0477c933c783ec8455704349b2471fefd698","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1171839051a23f3f0d857d00aac314a0be0d0952","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.51-renovate-non-major-139f0477c933c783ec8455704349b2471fefd698.tgz","fileCount":24,"integrity":"sha512-7BXA7Y3OUzyGnZyxBSQB04Rvn7DgB1nS003qPfINWwAs3VIYqWAg3afB+RXJW00S6OsMcSnGfCjH3H9iUJueyw==","signatures":[{"sig":"MEUCIQDU5SIgAj+HJ6txEXgFnjUDQnlX6R5ggggKW3g6BtFI0gIgAPyDm+IByGlnFJ+q9rEc77UygrANJ4fkkH6TEt2FKU4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggpIsCRA9TVsSAnZWagAAHhwP/iBCTgQuRw40zLNp8IQZ\n/Sx6aKOmdapY6kXYs0Q0exzjg7l5U4ajyf/Y6wjbROI+IGJfEgSFjjdrsCCj\nCFUa8Fxu3Fl5Prz0HVSEwJPnU403b2iEGhFpYd4QEtRRgXzwtEcToQMwALas\nWFZu3tNh/GxLp6Xw1TK2JZI7SmBTpHPhTpDAJcyaV/OfoSqvR0PkdRWemezK\nF+8bY7vPJAOeF5UGuLp3px56vhOY2mcpNlYWHVEfXJNY4z8X0jipMQejPtsV\nbXyCT5Ajnhag0C/3jDzTJShq4i0ROb8qicrP+qHfgfDI3m+PZ19LwAZx5oxT\no8QOh24r648sj8e9NKbBKpdTgyrC4aTI9OvT0HeXaE6+vNMGn7oiv4IOKdAL\nsYEZFbi3fFUz9ImUQOdSOyJKUfVM/OddzBN3aB2GOrinB36rzkcSZncGHytA\nnAUHphOgH4ML+qnWfGpdP2U8JkoZ4xU4T4UKJg3uCyiIiJ8wzWHuzPlbJXrb\nB/X5z/l/LHU649I+Y6unnF92FWh0oY7axyr8UFhpRBc1tYby4MWgDCwSBQU7\nUPCwhSNjU/lb3ggs57NzhNZ6YuhaT3GuEGJTuD3+chTYUm2MeNvjg7Rb9F3J\nANhBWAhkUfeSNBjXedCAALDLl/S1ukfMG5FjAcaPU9wlxN8VgxqIjo4b5ebd\neSpA\r\n=VyQl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"139f0477c933c783ec8455704349b2471fefd698","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.29","@balena/jellyfish-metrics":"^1.0.131"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.43"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.51-renovate-non-major-139f0477c933c783ec8455704349b2471fefd698_1619169835766_0.008754326072291096","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.51":{"name":"@balena/jellyfish-sync","version":"6.0.51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"20711ea666db623f6e6b140aec49305f56d11f52","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.51.tgz","fileCount":24,"integrity":"sha512-yxGbYaPiMwrvKH5qsQ/sdYsZTaY80vMolflNr96HtOfi8F4IgprY4G8XkWWqMUYwU1u0XwBJceoPYa+jM5Ui5A==","signatures":[{"sig":"MEUCIQCxGzk7VMkeYQwL6Oa2lnKeM/9zr8P9cdxmghLa7jcLgwIgHg9Ee3R7MF8cbYaXmM0jG4ILRI/LSspEIQJkp6j0JAw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggpMuCRA9TVsSAnZWagAA27wP/AmRCwkcr3J0Rs3TgiUY\nDjEf6x4UcVLf/KEECb3SG0DHsFFjLaCznpVbKEmwxquq43JF/CVIeDD9kzsZ\noY2Kd+8OID1Y3o1RXwGUi08BL0AL2gPBT1ktk5maQQ7ei+Fp2DiwL9fZPuG1\nWMSLqmUWjTBxzHBFc2mOiX+HzT3MP0QN/4NZ8KqEH4bq3hPwbToeZzE+kwZQ\nIfyl6VxcQfnu4yh4Xf3fE5xP7p2WsW+AgY/l9AspV3L6+MM2KCXq8nyBWRYc\nvyQkIR11U5ERGyN1Ap1oYNOITkEQAu938Yr61Lmojnk4Nm6ferzYXD2StDLr\nDP66MvP52VQBTDUwdhGgwc5OBL+ZysdQI0v4r1aJn01nqvJVJ4QoPvYOvbR8\n8EgxzPUeaoYDdt8ci39jhr8mFU1N4dIdmTvVsTXb45myFP2smKbbDd8TF6sq\nQdJwS4idVX47HeLbE02f9BBCbjxfd7yu1Y/Q74Avl/X0cwt8ZAJ5C1oM5VSo\nqZKGHPRFX91mQHBhoMNP0/NYM6pviq4hDTMNUZ1qnJ05yDMA+BxlwTidlXuG\ngPuV2rrPrl+b+922tepRD7rqhTf/BN6jhjQeCOWLk7Uw+3+RMhod0hXQKfWp\nyd3oC2bNaqBQ/KQhjeJMCYBQQcsHXkaHtrAFHgHXTfa4jCsrbZgylHqb9mb2\nli/C\r\n=Thev\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"22b5de5c25662ebcddc4e082e87eb0bb6fd7471a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.29","@balena/jellyfish-metrics":"^1.0.131"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.43"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.51_1619170094239_0.11802847032455976","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.52-renovate-non-major-b85445771a5bb11f8212350f13e1792b1bb926f8":{"name":"@balena/jellyfish-sync","version":"6.0.52-renovate-non-major-b85445771a5bb11f8212350f13e1792b1bb926f8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.52-renovate-non-major-b85445771a5bb11f8212350f13e1792b1bb926f8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"220a0469125cda4fce0c3ea15732fd1bc4c76ab3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.52-renovate-non-major-b85445771a5bb11f8212350f13e1792b1bb926f8.tgz","fileCount":24,"integrity":"sha512-qs8aOve/XEpP0IDHQR+SPTcgKvVzNzg8IkJCHNxJbmwMcKEOsRrRtju/4pBOEJw9Gym2N+c32K4wc6YBKRC/lw==","signatures":[{"sig":"MEUCIQCHDzowCQK7aSqYUhV4kTKN7xlf+D5MTxerchgbECwLqQIgC1ay5TJ9wbYonz/XSlWlawg5N0yxgbs1ik7lq8OZZDs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggrZSCRA9TVsSAnZWagAAzicQAJA0DW9AmIPCJcSxwM0S\nIlqoSW+iLdYQQRPKb99rRtavfiyrfQMQnkGgJgxeZnNw2P20cAm1fr5+eBd4\nHtr2PCGmaGH9eIunIThbcZ3CHdnN5q7+EynG1s5P7+7BmIklk/jhvzschdEa\n4FZyLjOwlHFQcuMav5bnqB2Xq5iQ7m9KjmPaxMf9P2codZ1bcjOBFP2gRlHE\nNdt88VrNX2c7Igtt/SCGzknZj7199pv68pxWw6OKI+sqjGbU42LQRu+yhuz7\njCno1TE4uoGVgaR4M+v6IlumJEKEzkiPBcKnaTFDgN9Mn+1ZPlsJw2G0jA32\ntwMuJy0OS5Orgc+Yi2mWVMT8cOa7HrxRS19DcBXFrGezG6/yMDR9z1SCZXiT\nKj7BR29ibk4vz4nXdvcvvn2JzffTSD8tf8kbiDvGPrD5k95c52tB3sbWkpmS\nLL84BmA+LCNYDPYWKSYpzZLWYhBpUkRBRoDehBw8yWu/wZ+nUehy2nWCrYtQ\n0W8gxX53diWOMqSNyhtbFE12WGD9zjjgQjZ2W+9BZXrDWJBI1AFBKXwBmFzW\nffZiD/QfmFHYFecnipPH6LoxFwvUyGQFX0wEab6pyeQ946fHgp5hL2cj7ops\nvBAusy8CFE3NcnYQ27aC5vQrpTfAqequFK/Id+3Uds8FQiTRo1lonYG4ptuu\nmJI4\r\n=FKOb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b85445771a5bb11f8212350f13e1792b1bb926f8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.30","@balena/jellyfish-metrics":"^1.0.132"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.44"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.52-renovate-non-major-b85445771a5bb11f8212350f13e1792b1bb926f8_1619179089665_0.6554108528384941","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.52":{"name":"@balena/jellyfish-sync","version":"6.0.52","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.52","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3ed4958655775c72506f7d0042e78a204618f51f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.52.tgz","fileCount":24,"integrity":"sha512-YPem8MRrN+TNA95xrPq3ZhH59QmrS5myvKCgd26V+ifJy9Jv/4GbIjwcNt6c3ZF/BVrd3ZFLi83cYn0d0jp25g==","signatures":[{"sig":"MEUCIQC7Gd8C23sSzND79WpBtTEiwEZYw+3FKw58TLdpuyhbewIgBbJUQD6rL5YdeI2oQrOG9I4GQvpo3V9yGuRNzOiz0Nw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":152899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggrc8CRA9TVsSAnZWagAAjE0P/ijmGzkjT2hGIxeSktm/\nVuoGT3puQVLt0Ys89iZQffMLHrhg+47qZ+CaNaZk3e3gtBEkLZiY5Kidhkzk\nCdScqSGHBDt+HNrB8LMZCmBO4+LrtMdVfmB6kX69BGvvWWurkdxf2n7k+/oW\nCtJrSW84ZtcvaSQFFXdP9NFLjs3UBiO9GFI7vCKTBTnOfiqTx4AIt+P5d4FF\nGQbkZWL07CHYufDFtX3wDItavSbixG2OPles97i0r19MHCiZyiv9NOoC7ngj\ncTkZsyBqUdU8u7QvsK8AyhUb6RT6Gkpc+cwOEdx8xWDQ2/s3tOR3vrWENbAc\nLuEm8hZPKpDdRJuNZnbtBHJQzNQ33iuIswAWCSpEpgnhFzlFQYNaqwtA2yLh\nrvcrApCQm0hzz48fPvntYqLZVX+wXW3ImOEPKeCbihWSYKfl1rJuuzWyKKMB\nKvAnSEq2OMoGJlbN0pxVT6K62BznKW9n9TdzlP+v8gVs19JQ3ex42I0Y7QLw\nQWxDbcUd5/k9KO034wE00UakBLJm92zIOAnArQ+09zE2cXeQQp4tSKjr6xHz\nt9VAirCEiWZ400CKvORciDBuK415aZC9py2bLP6njssWTlBrc325bZgaTMS2\ncKID/xcSWsH/uAdVWsoB5MyytBRzOrUbLdWWfQLYjiutSpWSRf2se4A3saOJ\nT7vB\r\n=dJz8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"585f4bcf239b10a2cd7f9f8d54ad08c5257c6a70","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.30","@balena/jellyfish-metrics":"^1.0.132"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.44"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.52_1619179324144_0.3937893424213592","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.53-renovate-non-major-75230c190e786270f1f4cd7769f2641b3cab369a":{"name":"@balena/jellyfish-sync","version":"6.0.53-renovate-non-major-75230c190e786270f1f4cd7769f2641b3cab369a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.53-renovate-non-major-75230c190e786270f1f4cd7769f2641b3cab369a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4ce4f883758194d22e9c919f56d701a0310e46b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.53-renovate-non-major-75230c190e786270f1f4cd7769f2641b3cab369a.tgz","fileCount":24,"integrity":"sha512-+EQdBOJx9BPFiy9OmzVN2Kv+KakRWh9oga4xur1BJj9q/UkhWIfRgc8oZGNgKcKakoz4Sk0Pl0ipp8q4XCSdww==","signatures":[{"sig":"MEQCIG5tmNEOezO+bhVXcLLFeYRzf3uTeyq0yRCeqSc2HEb8AiAi8oraEODaPH92QH+CKnVbXz99yD86bqFPNk+A7ijL6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggrjJCRA9TVsSAnZWagAAeNAP/i455fcsCL6bzGtkM5lT\n8jT3xzJRhFBEqj1Q+7Tdfos7ZoWnJsyMv0Z+8psqO263TFLJ4rIkwZyQ0ebU\ncOiu0aesI9k/rkPaBZSxIowoh9StYeFUwDfmh973sQf8dwECcd0Gyf1RYy2N\nB9/25tfOsdvkaEREB5CKtyG9TzKGE1MKlh3+LRSHlTUO43Ye/2lkTWsCyCcE\nnXRr80cmpiqHZw30sIlC0j05cFS2lBgc0o05PwPlnstIrD/quUGfJv2MZdEr\n7gb+dHihiQmN50UDtO27r/cAKO/dK9m6LRwH1eeLw6C8vTffBqp5niOKbyn+\nJHYr9Cm70ugtbMZ/YPAkMsS9YJcjNRjY3qzV6l+4RErcVtu/8+3YGqvOJ9OR\ndAFvTs78dRE2uIpAifhiPvhDCPFzBFCatyd8KnaQaNX4FG8kBTMDbHSOcwu6\nwtIls2F2eWkjBUhx+g3O1K0EQGtySnoZswulBfw0reBq7ms6YlpJlDQPPGx3\noJcmX1ujUe5x7lXuN5nXygM5JD5iVresGxmiDk3jnM5XJF1MUd6tl2xteek9\nYphWoNuWe0jUs4IMOen3pSt8+b4bWAQ/UkPCTI0Ux9Wahow25Iq0abJC9699\nKqSPhfOPlRHIzsxd6tGbT3L1YeM4qaODcI4v31BUgOVQCNBr5gY+r95Dhm+v\nCd/+\r\n=+HKX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"75230c190e786270f1f4cd7769f2641b3cab369a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.30","@balena/jellyfish-metrics":"^1.0.132"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.45"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.53-renovate-non-major-75230c190e786270f1f4cd7769f2641b3cab369a_1619179721236_0.6855362810956236","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.53":{"name":"@balena/jellyfish-sync","version":"6.0.53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c28826e524de52fd531893d66f97ca522db2041","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.53.tgz","fileCount":24,"integrity":"sha512-BAkNMQCTEnr+5gv2dpwf577FGiZAsqcStzKbQ4Y/ooAznBvu3BI5XIV4z/SAU9kdUiVNkwtLxATvWgW7BTbubQ==","signatures":[{"sig":"MEUCIE8LnsceuTxg5Wyl6pylMkKHPsryYSJCf/7bPTU1G3cFAiEApXKDzPFGpHNz4hAtQN3ewd2+sUrCR2ltzx9SUJuMtDI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggrnBCRA9TVsSAnZWagAAOBcP/i4EdW4HnhKGpBn5692X\nOBgjRcxZ4LDRzcgm2E9bMIolR79kPGyBXC9wQDQEKxxb3bTK5ft32HygHM7V\nCC+44MCPzXdCKbG7S4L9lAP5CnqqmLf48405aRbuvwBuDqa0KfwgyhrIePZA\ntIPqBk8It2Nz/NATIZ/xifm5FK0Rnn4pjNjAuN6k4DqtTEBOKjqnf36Zp5i1\nhqwjVx5klYrT80y5FRpiSiF5OGZxLmfSz+GroOvM7xMCrIJD+lMYapwp0oKf\nM9dm56S5tedrJt35bw35j+jBGatUSG2DWRb9AMarTFi7BHLMwJQ3TrC48tdp\nuB9vZ9FfOxAhjw2pq9DXMxK3ETteAAQD2LKjKdBMVuMWo4XqozbemU6yZVd4\nIO7Vat5HasYMSpr2l0Iet4I+8QSsJ9Zs3HuMrjWSuPBMDlqeZzyyLJXRh7Uy\n/QMyHOdHTdzeolI5JpdyT0wmQUS/3P4gQ7Khc8khDmlqlcgmjCnbGUTRgFzS\nzvegm6nBPe30M3eOkNFRJM0vXNTbL14f+SHq/7eGjpuRZrItmjRM08kMQ9j+\n+1F9Ur0W0Ayx4OU1OfiaeRFR7Tsiqy+L30WDoHNeGRcI/DDxHDfIIt0Gk5HZ\n2TVyB+zI2lkUsr1BL7aQ/uGHxOjTulvzKlLcIDhQrm794SPBbUGvFAiZj95H\nTBTm\r\n=j5E7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3e3602f0241da5eaf3aca9c52337956b33eaad99","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.30","@balena/jellyfish-metrics":"^1.0.132"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.45"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.53_1619179968551_0.9816499834090329","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.54-renovate-non-major-b6c7d40f023cf9263eef08dbc179b85d1a64b62f":{"name":"@balena/jellyfish-sync","version":"6.0.54-renovate-non-major-b6c7d40f023cf9263eef08dbc179b85d1a64b62f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.54-renovate-non-major-b6c7d40f023cf9263eef08dbc179b85d1a64b62f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aec462a9e6b551dc6a887b16d2cb04fbb162f755","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.54-renovate-non-major-b6c7d40f023cf9263eef08dbc179b85d1a64b62f.tgz","fileCount":24,"integrity":"sha512-X/H9iiBGw3VAr7I38fVQWTyQ1mjC2c7DayMGB0N0fod0SYxOLR+PsiQXYAzVoN1mRtnJFEkjOi6yPvWp18bQ3A==","signatures":[{"sig":"MEQCIBo6m0+bwkESrcvCl4BXvSXv85YQPPN92STCg8pdJt53AiA3H3BEQ2s4qNRAA4z2bqZ7DfUiM+r+rQaDt/8mJ5LLPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggxKmCRA9TVsSAnZWagAAPDkQAKE2tGQXUUNG2f8Ba30o\nIsViufqEI4CYTSIFJeZpIAxfSufxJzj2us8wOvS6uLvTqRkE0iDP9TAc5pWI\n+yxh3QUmjUst1jGAmZCWSMk4/2D+NJ+BCsDFRWIfEJ4KxwB6wSqGlGmpK4z3\nfFO0Rr/8fT5gmiuq8F9KlNzUIYrhkod/Tu8pAZmKt1yjHUrICLEYlI2BfVwq\nReJbUbrOiGFtJtZ58gZq2+SE2QaMykayd8xA+O09J+dSRC8AWvvO0KX0l246\nQDuMps6DeHwNm4W2H4cKi7aI1fba75CuqmFQWT1rjIZh5+8jTKlBm0W7SOgy\nR5b4c1tS95p9OtVJ4OMdOGjw4ppPp6rrwNntdLQNbo+oA1cshS8G7FZROhak\nxrfjfQrt8U1lBGrrf++i5XJcffZdnLYe1Aykcw87S30EKR+Eidcqtt5xDeui\npVTYIpeBoSbY67LbmAjSgJ7hiePfEG3tExMYRzT6RPl+oPpXbFBovKQNs94L\nzCZjj4+01cwgYc1sVXrYb8OAmXE82STe+A70JjZk69f+36PHMPEdphmXDGzR\n1swnUMJ3wFILtk3uGb3IuE5TSMc5gRj3rr6P+80v/abwe2hY9ihMoVPUxUl7\nwlBbbtw/rvRovELIfVAsr5DDTUOsBO54Blog5tZmrP9e6LgUrORRE7Tb+0pz\nZGA/\r\n=jMZR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b6c7d40f023cf9263eef08dbc179b85d1a64b62f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.134"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.46"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.54-renovate-non-major-b6c7d40f023cf9263eef08dbc179b85d1a64b62f_1619202725745_0.44040634588150196","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.54":{"name":"@balena/jellyfish-sync","version":"6.0.54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.54","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59a20bbc5bd2ea5e8cebad7767921f885b0bdb42","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.54.tgz","fileCount":24,"integrity":"sha512-8KmFEkl38/KnNb/iSs82ZFRFPl1oWKlLMsPt4F4EF6iFm6x9RJIrqkdd7ABfysIm3osHRhOse0akhxeU63MV7A==","signatures":[{"sig":"MEUCIQDG79jDj3gCq/Q52nIW2KswTqBhf+fWhPp8D6dGuiVztAIgHm6UMFZLsxWpfxHv58J2g+1AkNjTWBWfT0r7zpknbwM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggxNwCRA9TVsSAnZWagAAZM4P+gKk0JLJrSFcUaIXH6iB\nPT3oXK4xhu3VZqTdsrJinzTXiMHmaXU3nJzMk+oIbXbS1EfdjW7ef4DZRgio\nWlvJ7AvdFYwW2zvvyxSuTTft82QYtWbsycwqcO0BDbSTcWwpWwWC2o5CJ/Oa\nfuLlvj7LLeNcUEw3Y2QlCRqH9UEEwL7HYPB6bMk6b9pmq2lY0zH4oKiu/DlK\nkPptDn+uGcxT7Gd8VroPbVSyYKEwXJdI7p5CRadCJAGtu9Sr81dVtSoLQkSf\nUFsghyggyP3EyK1WYKE7+6XPTz7EiZGwYYgU9D4UfEZibH7beL4Eg564vxFc\nwrUnvI9CeJW6qc3y9kbPz217GnS27nP1u0LiehhFRK86GgnylOSNhuODe0re\nCEU+gcidH7L9wbm0hRmwyxubAE3KyQuLbbD7gSFtbUnRnoniuh0zicrweerJ\nTkQ0eeKI2/5Ovllbt9G684sO6THNku0yaARKJrnBid3ggq4zxchBZEd/JYGL\nhRlHGAsR5Mx94NfZkrbpY53q1zeuTTqMUGRnREKzWmDb+lxM99twxfbB0Pje\nV0UMRWSQ+X0bQpTJZmwnComhuR8l491DxhLZ0sKtRhbm3t6oYZ+p2mEjlCTt\n/L9bEheRlMJgbKGXF2PoqC/TyaLPncHesP92yJ1/wmkGfHTrgwjidysIvYuT\n/Aal\r\n=e25S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"881b69b336fe19704bc0e013ce019b568e0c1e84","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.134"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.46"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.54_1619202927477_0.8486905189988629","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.55-renovate-non-major-b26f46d041984f03a0ad33335d5f67b98ed440cf":{"name":"@balena/jellyfish-sync","version":"6.0.55-renovate-non-major-b26f46d041984f03a0ad33335d5f67b98ed440cf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.55-renovate-non-major-b26f46d041984f03a0ad33335d5f67b98ed440cf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f16165dab638a6e346658f828114ca8202513f0f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.55-renovate-non-major-b26f46d041984f03a0ad33335d5f67b98ed440cf.tgz","fileCount":24,"integrity":"sha512-6X9C0WkvjH/7r2zczBfJ8YDz9o6WhDvISGPABRpKPum8EalkHn6fFQF1BKUQ7F8/vzptJMsRb9lEBxRwGVnlAg==","signatures":[{"sig":"MEUCIFuHYnKiz9sWRgqOWeK/PhaN5LTXLuUD0u8pqxiK3gCwAiEAl0TNd1THzKeNaWoqOtMYn4G1oi02MnT9at7W6ctK758=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153229,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg2+PCRA9TVsSAnZWagAA1SoP/0f8UoB/CfDBdCgwVicK\no560AVW7MFwXPo5svx2rBgR/lzQHNnxzcFmReCmoI1okxIgWMjoJe1+NLiRc\n0UM9cD6BvVn/swm8GxiM3ECRXZRcq4oZUAh+nWwxKLBk1/i2tVUDgWnSv/kH\n/aBMaqPORvNiqpLR05Lcw9ZaFspLZDJOR1cPC+Cox894opawq/g2MZ+Jcw72\n96DOSeO/9EfgnwnIZNZJXrhK8ZfrzJ/i+Aj6xwmW4lSLonZvzG8H/OXHLEhV\nNWgkZR43NIew4Y/P+PR2xnf4AiEeoSgfa3cF2XDT2qoNs6xgMr7zrOh0Ex4V\nHBr/H9KAwklmCp6BFifgbyC6qEhuY+gmzkXF9DZs8NSpjTLP5rw0rH+Qpphx\nyGmFyRYKjc15x1oV5MRBhOSvP9SYnMynjdlAlDJK8k/eydDQUlKHk4sV7nRD\n0vG9omvaftfSrb0yFw5Z/xbfs8ogVUgxZHMngamZWpQ9m4lmraMabqyC/bdc\nkKd4JiugxoAFk04ZtQBG1qu5wikQJtxZ/RD6WMzeFVBvuO7h4DhrreMmqBSw\nR/TsizKVsw0RxBLlz7QIiHWxMGsf9KSUUhYEqhytK8Uj+nCBQMLFVUaBZl5J\nwSJL45aNnDFDkQnU8f45sTba/XjWiamKuOsTrAH82NLlAuovlCal9nP0kyUO\nXzH3\r\n=V23s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b26f46d041984f03a0ad33335d5f67b98ed440cf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.134"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.47"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.55-renovate-non-major-b26f46d041984f03a0ad33335d5f67b98ed440cf_1619226510931_0.38039175201454345","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.55":{"name":"@balena/jellyfish-sync","version":"6.0.55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.55","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e3de401be9a942074f0a4f3f37a1a0e5c54c7959","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.55.tgz","fileCount":24,"integrity":"sha512-VibDHvOuiFZF7+hwwyccgT54s0hf+wj2Ba9U1BOAmPH9DWGpcKA2z1HuOlO9ipKCffMEQXZxH7H6RxLX8HlaHg==","signatures":[{"sig":"MEQCIHhaXew/rGhiyAtnWPCVuIWDyNWOVZUZ/Qa9BAKiQc0jAiAIfNZba3+LxmafiKoM3YvcP9rfowLAln2+PDkBa2lMiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153169,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg3GmCRA9TVsSAnZWagAAfIMQAJD+82vWtnLKoWVavHxI\nXc7qpogEZIVNQWTFqk216N3nDhw4CwRdXEqFmbYc/MdexiAew4tc51Tx6swc\nGHwu2RXDctpreyq+MZJmWSybyhapL27Koe96iJzHEUYgZJI1eaPP1T01RX97\n/VtK0uprH4JXwS1JiN2CVY9GFoht/GZnPV1DcKLCVzbj5wNv9ZRdl0X0EQt3\n3UmE9oJ2cx4ZfsaXIDrDm6IlORZNhxEXJnc66HLYHBcD8F4PpLhWmOo+EQKs\nHRurdJF1Nzm99fqyjJMAMMLGUK/hOjFcANSS0Dxg9RiVR+58C74O+qk2px0P\n4LGDo5GbhwgLB7bh/zABdLzwVdb0IbrRFSut7Xy6C15ZBUidvDRdnEju+acL\niID/GjzuaCyGxwd3t2Q8dfREmDqwdACk1vE4Topob0x1rvCTYsBYshwqTTAJ\n8xcrlIlo3Lr8pr5ptEDaywMfwuzja/bC2XnvqdprzgZ6F6qWHj2OIBwUH8hf\ncKwU3sCKh6dUlIiKv0azYO7U2Qn2CAB7VPv0WycAl9kpycYWfaU+7odBZxf8\nTlyb/AMhNNUlCwsfqN7z73/O6RO9eszITkTexrcmSXuY6oLkPqpXa7SJ4HHD\nGJvYh5JfCP7urDbfelst6xrjXKxKOwLSycsmKalE0Nk5Aztyx5WaWES1eJkB\ntPOO\r\n=NupL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1546826d9fa9b97e71324dd148cee4df166b3fb1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.134"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.47"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.55_1619227046339_0.2532787851665408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.55-renovate-non-major-bf4351001861468c54855c310ecb4df9d759da99":{"name":"@balena/jellyfish-sync","version":"6.0.55-renovate-non-major-bf4351001861468c54855c310ecb4df9d759da99","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.55-renovate-non-major-bf4351001861468c54855c310ecb4df9d759da99","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7193c3484e75f98992acc925c24c735ddf828818","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.55-renovate-non-major-bf4351001861468c54855c310ecb4df9d759da99.tgz","fileCount":24,"integrity":"sha512-F7DrVcof3WvknFr9795+IAunj7sR7yXy+3Fq3Y8IVfTycnyR6VMOHgkfiXyrqBTsyWTMMRnHt5SvHvlfHGUjOQ==","signatures":[{"sig":"MEYCIQCEeLTzrqG/Ja1tFfisNGa/a73VGKgWWEi0o2PKSeFomQIhAIrSyQT6D/iSM8NIt8Lmid17KX+qV7mg7wv+X3KVih8Z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg3HhCRA9TVsSAnZWagAAggsQAKEMlLGt67r3vTaTw/pJ\nd/5yIO7APM0hV3FMnMPAlm06dy67KgzMcz3pjLywfjjMsDn7qGYMfAn1eKmC\na7R+fChCDFHII+uPegb8R5TYuFx5JoA7WVUTL4cBQevIp4eWnLy2OP9y/4XT\nDtjpu3djgfPGciUG9NJ0tHSW44+2EI8HVyAQ115R+yYO2DAHpZRxrRbXUZMq\nCuPT67pD70sGN448YGfjzlIjBIohc2SDWq6vx9qVV6anz10p4+fEJ7qm9m2E\nFp+0ALorp2+OaMl1ePMW3jIXNdb5wq2tHiFlUp3tlgUajOQHVKLfvHImVFfU\n698dTmRDJh6QjHysF/nEveKo83eoPAHkAJNOeIyukeDitYvayziFiQhqfQcd\n5xWrXUh8lfWmukemE1uyfUoEzUG+PVfpOP2dMH8R/B6k4nMffv8LROhQu8Z2\nm9ItL2IlfKZ9E72uD2RcFDirqjiCOTtATpyIel2PpB5GrOLVmmkS4nFo2lm0\ndiHx0I2jOOZGxr/CXJtQhZ5CSHQ35V+gBbqgBw4/oI1heZXBsTnFZYYBhNoq\n2kp41Dqo8kR0Nm4Vzln4h4c+xqccpcCnRRsPT0UB1OfKg9p4+WNjohujJNgC\nUkLcG5BY8nDHZMLOqGfgJruc8n8j5Y0aiAZLvv718vMtWjki4l0FNpHljklQ\nE6zh\r\n=8WFu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf4351001861468c54855c310ecb4df9d759da99","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.135"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.47"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.55-renovate-non-major-bf4351001861468c54855c310ecb4df9d759da99_1619227105243_0.35474100613918536","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.56-renovate-non-major-af9e482a2fab4e979f2a76b650e1e0cdf2281dc3":{"name":"@balena/jellyfish-sync","version":"6.0.56-renovate-non-major-af9e482a2fab4e979f2a76b650e1e0cdf2281dc3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.56-renovate-non-major-af9e482a2fab4e979f2a76b650e1e0cdf2281dc3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd0ed832cb32cbec1656774a6c203b8242145f94","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.56-renovate-non-major-af9e482a2fab4e979f2a76b650e1e0cdf2281dc3.tgz","fileCount":24,"integrity":"sha512-410dEFt9wiazb4HzIHSsKUHB3oSDDxwDF9zp5On2G+d+oz38xg1sU80jVOdk2+s71CkJOq/sTFf6QVAMm7ijfA==","signatures":[{"sig":"MEUCIA7FIqukT+E0nIfDf4Db51hYhRBQnwlO1hYub5NixYrbAiEAkuezib1mx3vtCAvFAkFNaC+XrfFnl+1KzFPdGeSEJW0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg3P/CRA9TVsSAnZWagAApd8P/iOnyagyG5lM4sPNidsR\nUKkpdUvSPTYnUOQ0iAGy1yaPUfOluggvsqo/mgPuN3qAQs/fjbvA7M63Qo9+\nd+Sliv2oKD8doeqWvY8LQo00Vvk4sPG2q1DKm/aXHGYkFM8ZTsMzKmm9Cb9n\nNRsN2uPMKiwM8FtfVMRYY98BvFPJsR2hdyaMkPTRn1pJ4ryTVszkkJ7yILEr\n1Si/HNyinhRjCttg6SEHgOtAiEwGWKA62xJ4nwqEy+wrmzQwbug+sR2TfHpV\nugCEIZkVxsyGkwXyNx1cvb+PZc2GtBMz3PLQZXLUwAi7synNBdoRhUs7KjDD\nHE3MOfzD32LkbyWzve7bveULOa+6YoMZOPVluZbVw4h0MG4veNccv/C4HS4T\nYBGBNFMCqz776NRFGRi+hp+NtSeQNxjd2Ff635vQ54nKdoq6cJghimBEpVW4\nSen3tacC07ht94snw3G1XmKzsi70fuAZ0we2gnSSDcx3lFuuZuaB5Hw4fR/U\nRBBalzbAP+Y/z5JfpGIeCE1OQcokyNloYoZqxqb328s3FP1o4Ev2T7r8+PAo\naSZQeS0wGBIPNY/jX1GpL2e4Hab217acs/1OzMoF/4fnmvHL6xXPHUdNpsTS\niBfgCT7ajoCHl44VQcknJqaZgIQ0nkjjZy8bKegP1B6WdLgFFapBcgPsXQBa\nAcgD\r\n=snvn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"af9e482a2fab4e979f2a76b650e1e0cdf2281dc3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.135"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.47"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.56-renovate-non-major-af9e482a2fab4e979f2a76b650e1e0cdf2281dc3_1619227647448_0.08641208578143278","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.56":{"name":"@balena/jellyfish-sync","version":"6.0.56","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.56","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e15a11059b084d4cfabf8fc84a254cb0501a6d36","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.56.tgz","fileCount":24,"integrity":"sha512-S/94+4RpD/x8Yqf/o3+8A6+huQqCxR/T6SSP+2P9HJg67Y3RwpdKmOUUHKu18iDioPifOAD/WsGdxlBr28klAA==","signatures":[{"sig":"MEYCIQDuTxoNTJR4o9fy+KIDivWByco4q5Tar3td+1KT6zCefwIhAO0hZVd8p+omsj3ExyRz9Ee7Y36Vz02q2ddTyXBNUoKh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg3TwCRA9TVsSAnZWagAAu84QAIawpz+2bn8iexttoxNP\nxiISCE2KuOHD4qnEDf5Gj0zOeJSl4c6wDtSZJi8LjCtLrpb9ibuEvTjNfFMY\nQW+G+vkzw+EnKo6OQja5OZjt5RlCpFYKSmsbYFSDVk4U/GwbgyzRfuWlYT2E\njr4L2DZ+ZfSU8LOz5YJ1FSPCIyM/Id5nXUCE59XSlA3LRgEedRKOlOMMeWeD\n1NO9VGy1Y0WPcv1TT4Ps1MDXekTTx5sMBB2pYuu/F7+S+tHZky5ji7ZrVBDe\nmxhCwc+H51ppElMl6q1H+HUaBwT2V70K7iT46eKJl7SqUW8NUvnFkxlgE575\n6yQ5n/xyIKqs4Cn8WcJItyavMlwvMvfbmrmWYU/ks93S6yGu2WuwVr76fTef\nRex+MaFEIbqTcmHHmTE2jic5k/KW/TplNoW2fZzMA8u2wi/42EROpNWvETvL\nOFqjzTX/39/fTlDKxEmd2FFdKPI2OXRu2DUaqNfxy5oHB/ihWtjRMtbEABrh\nQC1yZvA883KDqc+UBT4BhhO4GlQtqNJRSBhI8//gjteRxK8gqWuiZdUk4IVg\nR8RHyPEap7mYNoVt32W0+G4DmVDaAxKVR2sevaTSQd6gJqbzPKgozZO8Wo9y\naaWl4C14RhnSzM3xJQlX4ySpM87CLmKaE/VRR/IwaZPcHcx9fQsxxyKkKv1g\nSPLs\r\n=TAKh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fc52bf8e33881ea82400dd41d833f874ee514f41","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.135"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.47"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.56_1619227887940_0.48477044080950016","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.57-renovate-non-major-7f93f8ccd76724a2191b95ce4d246bfad89b6fd2":{"name":"@balena/jellyfish-sync","version":"6.0.57-renovate-non-major-7f93f8ccd76724a2191b95ce4d246bfad89b6fd2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.57-renovate-non-major-7f93f8ccd76724a2191b95ce4d246bfad89b6fd2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88354e1e45b15062575dbd6ababc03973ec98274","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.57-renovate-non-major-7f93f8ccd76724a2191b95ce4d246bfad89b6fd2.tgz","fileCount":24,"integrity":"sha512-YYHPzm1bKvFwHzx5jlCOT8Z9w4aD7ul0JX+BU1KC+0xmeLhkxuaeL8eN2l9dB9QAB+mRK3MmFy6jCA+//HZzow==","signatures":[{"sig":"MEYCIQDM3HhBsF5o8U25uCDdRnlpva/zvezikQvhHxBYBuIwXAIhAJALR5t8QidTWcTozLEj3GvMEUxL9EWxhdMXCEROKAOw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg+xTCRA9TVsSAnZWagAAkEMP/ArzDBoSxkp+0v5rU2r3\nbQrz9PdYbqV1oWP4JvkJ1g/fOU1hc46UofKX63/8Y8P3UCEIRdJNdYns3QFF\n76bJr+xhFa0BF8cf0GRkc1jc8Ptt4ZT2bxkhn9liib/DUIO16TmQbqp5sTDV\neoDkC+p8SgG/PHu79aEORfrjFvAAN4pnRGej69iioA5nlUZ2QfJ02FDI+mcM\nssLZPM4DyrJ0/fCZkQqbAH786pi5rkfHkyz0VA14E6puXJstwNBiEpbuKz04\nbbqTlkcolIJENWky7mVEIG/w//f8BaYpbWkv/YY3Lk1QnbvVyY8O5gY8xqyn\nnYGy/WhZKXJBkAhyIB2904w2ln03LWUkUa5O3fKHpHR8OgnjIr5zhYrCbnVh\nKQNYhIt0pWfhFuVkH8r+EmC0Jlxmx7ZQif485IXR7VOcXi/lz0ujDUW5fC/u\n8KLb7hGr2bld/RtNHNFDWTdBzpQFcnsIIFVzWiHNn0m1K2uMy84emCjQGs7l\njH8D8k2SV1WpKo5DoWOWdsUyvOrE0ClEA+RIPS7WLu77wFDon05SHyOd9SVr\nH05lGCIWRA11gyY/AB4XsPlund+6cYQL4ORsxDAUThxIwBxEpQvBVQyg0Gaa\nC3rPBPko3ch5Stf+6K8Lhh5A1kE+A4On9MZIXUdBAJfvQS5Z2cgabLhg3aOV\nIDwO\r\n=McVi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7f93f8ccd76724a2191b95ce4d246bfad89b6fd2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.136"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.3.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.48"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.57-renovate-non-major-7f93f8ccd76724a2191b95ce4d246bfad89b6fd2_1619258450753_0.6686427813009104","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.57-renovate-non-major-5c371b3b9119c1e145ed6f853134e4e33e2891d2":{"name":"@balena/jellyfish-sync","version":"6.0.57-renovate-non-major-5c371b3b9119c1e145ed6f853134e4e33e2891d2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.57-renovate-non-major-5c371b3b9119c1e145ed6f853134e4e33e2891d2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4f7800d1fe0668e5cd26619b1d796e73896c79f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.57-renovate-non-major-5c371b3b9119c1e145ed6f853134e4e33e2891d2.tgz","fileCount":24,"integrity":"sha512-kTD9oSgQW/ZBfCEFlZceVKDmybTmnXuk59NFsjhbC1mXdWC+VDxvhUKwFMKlyZcQO3SPjPmVvPTP/6pSF305Qw==","signatures":[{"sig":"MEUCIQCT16nTn1tq4feHITEU1wMoov/HIKFPXqyT4ETkZZQN6wIgbbO5uNKJBdoDVos2tNJI8q2/fb7upgEuo8wr9BU1I7o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg/LvCRA9TVsSAnZWagAAZt4P/R1zHGQPlyZjZ4K0V0N0\nbU1lndKvzXchksHBFsmQzI/RcvHc16VefD0EtwA2PqhWfBeITMXY4uDx3B/T\n3ImYrNb4m+osU5E0p1avgrQ1kL3PpCwBIlSLmMalXPpPjeUQRDUGyhkalwKe\nif25DxSNArhJ4eGcr8OuLbqUtIpxkc1YDaqjVX6+sXN5QLW5w8P+59lA9gJX\nfk2RoMmdTlqbF6FdNKHgnzddcnEGupkHzakGIHj3sWS9ziGNxcDof1xBvEl8\nUz7X8X5CB098q1mAJhm2u7SA+RNqD0jAhcjkVjDXz3SARHHhNQxqPFzZvwMq\nAeMUexcM1fhR9NTziEWQ/hTPn9eRdzgAPJScKtFg+/lLldtUWxzdCp2CRavu\nR9z5qRGrBWd2ToCQG36ZiglKzAI6xDuJnde4g/3L0lTDoQRYdezLNiYMXVST\nEiR9q8xcBsZNiFIyytqMLoL++c/ShzBU1CwfqDoZCVkzoWdz5raEHFRC3ojt\nvkKQbeYfKe13SjoacLaLJ+RqfW4GYXJjP3mOmaIPD1FQy7kZNgW8OeBRwjEW\nIW8M0E1kCxnjNz/CFk33p8RjU9tISAPHHuxi/BMJrA8SgULRJMZD/ylMrs7J\ne8PCxCAVkcC6iDQMxBLcx7o6sa7oYuJqrN5vO2R45ejNCEaDU17b7DgYsegF\nLk+D\r\n=7LK0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c371b3b9119c1e145ed6f853134e4e33e2891d2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.136"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.49"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.57-renovate-non-major-5c371b3b9119c1e145ed6f853134e4e33e2891d2_1619260143388_0.4069404414811584","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.57":{"name":"@balena/jellyfish-sync","version":"6.0.57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a16c89e560bebeca256103a52c2a086de51fff68","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.57.tgz","fileCount":24,"integrity":"sha512-A5UIlmATk/Hnir/3jh+nMkCfdZLM+YLLwscVJBjVf7o2EW0vBLT46mk9rSgSehYKhgfwWFmKD5ce9gb8CFUSSg==","signatures":[{"sig":"MEUCIQD07lHaG6MUOWr+9bFFj7l1Id/dgh6rpYwpnDsJwxTu9QIgNgmMv4lazndGD+EBfxkrHYVXanXrtn1Z2eey3C65nEo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgg/PACRA9TVsSAnZWagAATBgP/iGWlRpL3RpD+RJD0L14\niQ0ldbD9J/JChwGTP5OUJTkDXmEGOzx5QR7/XrrgVmUaYdYFq37/eTgHbgJz\no67x8uMjy+s/Mon4KJM9biYTLqQNmb9Pi4XPiX0WavlJ4OxfQMwuQ+CqVJxS\nX0hQtjW8ZFAVvl1oNnPilOS7vC/yUeuaO2CEvX0/4NrNWYK3BFiwQq2MbBxe\noxbPQqW/PzXzUWQO2b9lBOCezBS0iT6pDxNrDkPKsEsgWEn5WQXBipHonlJE\nAMg3TyA1Od8KbXUE9QAYt7k//RAD15PUUwHwLtwLrY6pELEqyIgGgpT7bdVU\nVe2FQFdC249PDY/40fs8CNtQX84zl2yIWry4oD0QtLEXJbn1NnSczBMDBbce\nZ3/aY/QcqPRdH0EfnxCiuTu0lUB4j6jzYs3mZIx0dn1qap2UNwkHcybp0wmF\nCwalAVarrq+jPVpiRh85byTbv/MTm/5xTa3C23qkS1PWJj1YrK/0nVt6ZrBz\n9AXMUNyvYdIFlzlEAghRNUThPzKnEltT9rmibapQZs3ka/mJDRXq2qinqlzL\nZiXyCarZ/KbpbUcBkNjF5WpjEb0mMhi8gfUae6CICb46Ezva5/PHg/JU7xb7\n6uCxYXCXuLlY/hENqHIaco4Qq75Ytm1/cigSIBeJFQyB1FoIl1NhuZRzXsjD\nfdVS\r\n=daZQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8ea28cacee75c9a8a5544c6caa154212f626da46","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.8","@balena/jellyfish-logger":"2.1.31","@balena/jellyfish-metrics":"^1.0.136"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.49"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.57_1619260352399_0.3944383594987346","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.58-renovate-non-major-7c724770ba9ff6b10d1540975be184728c9bfb01":{"name":"@balena/jellyfish-sync","version":"6.0.58-renovate-non-major-7c724770ba9ff6b10d1540975be184728c9bfb01","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.58-renovate-non-major-7c724770ba9ff6b10d1540975be184728c9bfb01","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ef0f848dea9afebedb2bdf241a8f9d680a0f709","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.58-renovate-non-major-7c724770ba9ff6b10d1540975be184728c9bfb01.tgz","fileCount":24,"integrity":"sha512-OYnpD78E+BXzZuVJ0MPkZ7Nfxm6t6+siV2/EZX6ljTFXlttSnhtTX5vTdiYUAGwJHqoF0cx4XEJuBSxWc+O6fw==","signatures":[{"sig":"MEQCIFAPyI6V7km4YVev7FRp1b1k1Rx1SntUJh31avgC7Gc0AiBn8J23IwaUsyrpAwwYcdlNCOEMxhB0ocbOWYg8iErTZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghGi2CRA9TVsSAnZWagAAO9MP/i4JLr5FrdqnAWj6uvx3\nSYSXYLGzRudS7xCyAnZwlEOcQNib4w4NjO9LjPxSKqXgACmb9YdIft+F5mBu\nj1f+dzdAlqFMfCqt2XFvC2j4SRvbbdqLOAd/SzcIXiKvt3d2fcQYM/u+278l\nqMhY2ga54V9ICM6KG7yy0bZp4t2vjBzB0AvorIYhlhWuC/hzAwrj7m/94y82\nXa/2L1SUvmiveyigxN5sjBl5SnhhYlOXm8fkMYGbBiH6oiMnBYx5gPVBfcob\nT5qxGBLyMbfTUGCmxMRJtEohjgN6ToAcV8e3BEBOQWSn/pTuUXVHtfpWv0fy\nlSL8Ep6upocAXVNCm4J722RG8fyGnICp4V5gDkBUZkP6kELjVAEIEB3wAVlp\nx2O+WSy1xlG9UHxur65A1tCQOBEqO3TW5NtNcXDUF3q8MXYnEB3HaDn/Oos0\nIZfk65wu3+dGpWmGkBJHQnYZzxjYaWKQIxB+8rnlRdhdpMWHeG4r6Qa8+dZs\nlH5/YLI86hRAJ9B5lQ4f+XZj/wDSRJuo0OAzAKT2nZHLrS7RFqo0a/6B8EGA\ny+Fn3oEE0tZdL21Qee9FiMhAedU+Zk/8pprbQJJgPK/bW2x8JOPcC6VJGZlO\n6iBawQAaB+VXvaAaxw0h6W/aTuQZFOlEQEme1j4dluA9vugyMYTEVbxXQzVt\nLomO\r\n=qkf5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7c724770ba9ff6b10d1540975be184728c9bfb01","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.138"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.51"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.58-renovate-non-major-7c724770ba9ff6b10d1540975be184728c9bfb01_1619290293818_0.735643165609384","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.58":{"name":"@balena/jellyfish-sync","version":"6.0.58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.58","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f6a91764fc5883f7f8afa968c4ebe9b8dc67410","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.58.tgz","fileCount":24,"integrity":"sha512-xGBvl7GGgYfIDT4JGzD0AEbVSDuYobDakVtjNryYOd+p+WD6fX59+/CVffqBp8k8vzHwkzOSsdHilZZERgB5EA==","signatures":[{"sig":"MEUCIQD2nfINk07OcJuWO3J3VroKzr2i7LT2ovR2y2ziQG7P5wIgYxF5VTvu5Sc1ymrxz1aa/sWYesJJyKi+uXfCYqfeQxU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153406,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghGoTCRA9TVsSAnZWagAAA9sP/19KS/iSBn6J8I5xO50f\nJmABm3egfFaBLkq3Mbi4gKs1T7T8exkNHGsZa4Pjmj3hqwlBgm4ccY5Y/uuF\n6BHQDM9dLeqgL+4fMlvrV+nDfjtn1wbjGj5foJeuysMtvg69HWzcaAmf4dgQ\nqSIEsX/xp72KcQr5GOGfySmaM/eu4Dsv56nP/BKW3XifqhJOR62Rp1Sp1WYr\nr0XhoMtQRi8PQ4pXewGXEYGWBsndPCIuPBXNNg0tZLYQuIjeYr/8iETngbNm\nW74eGVbW8q9tnfBkt1pOyiJ+di1+ghBQxhjvUYPpz0dzZ1dd9mlA6tyQ935O\nPdhucFP2qcF3GQR9y7qcsfOXuedP6JRrzx13U+OwWZON24gXrShpT+IDXmOO\n69xk1UlKrLDecv93tmkkVbFLOA0CMPrEszdaPun6g65ascFko9Gys9SYoGIT\ntJA4hWwmVr1Nr27nrroTyBbkxi4GNCOVHqIDaoytYVAHjAMrEW1oqcyJEu2s\n1k28zabS6zHpf9wUu4uJVOv0EH3Zk8Ay3WEcnl/odW/KUuPzqX6ZAj54c/Hr\nPamyAr3ZBpods1HSMbkS1Io63qsJ4Sg7y3aQaMFFdvHLdRSUT2r5J42UBhLr\nT95VUdvQdgwl5bbzo57TvXMoDMkc/Td4X7Wo5fdO0DCN6W5qaa/S4THVM8at\ndbWf\r\n=n5sk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"51d7fb3d045bc887cff85829203a2c0ac43e56c5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.138"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.51"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.58_1619290643411_0.7914037264737788","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.59-renovate-non-major-85c1b9e4cdb2313dff04e4c0553928ee250d3094":{"name":"@balena/jellyfish-sync","version":"6.0.59-renovate-non-major-85c1b9e4cdb2313dff04e4c0553928ee250d3094","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.59-renovate-non-major-85c1b9e4cdb2313dff04e4c0553928ee250d3094","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"11374628b996f0e61dde9192439f3a2b65aa9110","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.59-renovate-non-major-85c1b9e4cdb2313dff04e4c0553928ee250d3094.tgz","fileCount":24,"integrity":"sha512-cidfa1wTUZXyO5s4+P2mjyYc3zet7/GlumzkTZ1/gyFBd5YWI8dtmtBDZ3EcsOM4rN0Ye/Jnbd9liZHOeyyQcQ==","signatures":[{"sig":"MEUCIGlTEcMDs5aNgSIDUwJciAws/IaxGKH/3B1npfF9MZRlAiEA9pH0yIyB5u61G7Z3j5SyRMVpl+4t2+SJOBuh3X6VUN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghPQ+CRA9TVsSAnZWagAAavkQAJEeuEC28lX+SrinM2HP\nfnQcsRFtkHv0dY8R25BI6PgIYkT94TBQZYkH+UIFjmgIFMX5S62Se3hZ5OU7\nSk9lLsT6BDaJkw1ArpV26lkaIBFoNT1aTP4HKJlayN3LZhJ/vFAfoEUMWm+/\nbS6Ir8vjdUWBL8t6PkaMT7beTVc79ZIU7zvJaKYpmIKaa+WvEPiv61vSfWcP\nS6AvEe7YI6DJ/AuO30Jbk5C1tiAowRo0f+qiQFvDQeQQofG+o02wRkqcQSrh\nNILf82EzGlG9oHFO//d4cyEbMhG44BQT0IrNrx7SYBbheEr3NlNIVpFPT0Pi\n/MY+P7plI4K7LfXN6kFNGiY77V1cUdO3EhuopiNffv8QQ7LXdHhXQmny5yJX\nsNe+IxGb/81qKYo2X3hWORnkyNLYjEET2EtxCioHOv8iR0IXklot1gLRkZu5\nV0YzvbOprckhvkD9hT6QrFu38MHB6re1mcs4STp3QVr8PPKO7Ypum8oOT7Qv\nqxT/AA+MCdfPb6BUHyuxy/J4cacdiAv1YJ5kvLykhAe4qoYSY0iTktbbFx+B\n/xmXQWYPXt/VIXcKzZIvE5HepCYBh0YCZbxI1ZSEInvA25Bq7q199L6ujMZc\nrkXTVcP/72iPFvBcuZRmYmF46UpBx0C6UWqNGt67ieFA23VyfMDJ/LKtqQpY\nlwhv\r\n=O+I0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"85c1b9e4cdb2313dff04e4c0553928ee250d3094","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.140"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.52"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.59-renovate-non-major-85c1b9e4cdb2313dff04e4c0553928ee250d3094_1619326013668_0.07852877480888609","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.59":{"name":"@balena/jellyfish-sync","version":"6.0.59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6650ace05451b82aee2d6daebd86aab465cd94fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.59.tgz","fileCount":24,"integrity":"sha512-efzSjrjlXMTdnQkZ02xo1un+j/eXFkaZA62zWR+wEvEllG1EKVuysCeMarQT/OATt05P/ZiOnK+iLAMlga75+g==","signatures":[{"sig":"MEUCIF8TYoZGFHc0dTrPg9mvlT8oSGTuqSnOpeqZcSzV9WHTAiEAvCkxMN+Wq3EB4UMw7awdeugB8JGTFP0k7I7SlWsXyuY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghPU1CRA9TVsSAnZWagAAB7YP/1lxyfXtM0zaM8VNsIi1\n7f7LQqs4wGHg3dD3pr3UbGxIutkfkpOKRiqlr5jYU+zegLQ03rNWTWDJX2tW\nUPGRtwT7WUv2vOiLV6cGAw9J9kKq21WruAQsPjKwidip7rbnDt3/CmhKJOV5\nJ8ndjp0Jnf61nK86JyEew+CNQOgHbRlzYoQ4+tB8xmvlMrsmPT2VnQEgZR5+\ngJ+xGtSBDO3TgYpLZICMg5y68NkDZlc8VcUJCYbk5Mz02vmAg3oL9AZEOgFd\nR6MOU+lrRe/Z//6ke60xbKBHnPZaxeebTyc6s6Or6cq29qdiyRt6N8rX4M3e\nz957qYtuEnBnz1/KJxtV9sRgqkbz2nby8ocIE3hD3tu2LWTai8TlOVyGWdRv\nowAZTVmX0gCuHe/Gh9uIqbos/RPbMltxNqCrXqShF1Aq1miJnhpwcVZCS0ui\nYrUaj+BAVZY4zuwi2iwXjCutiiYudTTJLfON1y8AMSpgHzJuw1MMUSwVp6T1\n5upkQAM0hi9yQ+U1+aTLhVfrj3ps0bCnqew9J6NixEesvvdIw3pT5z63J1h5\n1EtcA9NOVBwE2ICqU6906EeLs7itacOdfe55W/ghb3HjBZPFsZXOtIm/XVJ2\nAoYA9iv9NcZnIldlfWOPNZYnVjX26cLZUxt8fnxpCoM3/poA4mfOuG1556Cl\no3aS\r\n=FsMr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4a1c796b10b2b65aa074063389299e4a7c3cd13d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.140"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.52"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.59_1619326260650_0.15521871413640742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.60-renovate-non-major-fa52521588138ccfd9d45bab87e56b46a0d3de88":{"name":"@balena/jellyfish-sync","version":"6.0.60-renovate-non-major-fa52521588138ccfd9d45bab87e56b46a0d3de88","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.60-renovate-non-major-fa52521588138ccfd9d45bab87e56b46a0d3de88","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3893fde8c1675b7a11428ddcccdd2df1333a65c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.60-renovate-non-major-fa52521588138ccfd9d45bab87e56b46a0d3de88.tgz","fileCount":24,"integrity":"sha512-Tb5YxYR0GVJ0sd0+ZeKCdoHkid3gz2UEziXh1D/ugTJ5KpTakxEPRa/iw9LjvpehTFK7+6ni2ZddUPXh9MzMJg==","signatures":[{"sig":"MEUCIQD6ll8+w3+8oKV/PC0n66Y0aTXao7Q6ff72aNzDuZbXYwIgSvVNt07Y5OFTYbzdlb5gFai4HFOJyRfzWN7W3VCWkBs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghfc3CRA9TVsSAnZWagAAOP0P/3WFB024N0m1lBS+n47L\n/1+KZQhf9ezs/ddAFS+ekwQlxD+4VnToHZ+kwmUDXhknw0uV9B8uklREzuJI\nHWmJeQVQZ63hCMUMLulWpeE1WX2osoJ115QAi5Bu+zR756q0YZdFkfTUlvPi\nLW2wOfdVaUjsZOb6fTDDdJV4m2iE27ZZvEpOf0+DUwuCW2doFMUutY3gZHON\n5Nze1GvcUfpkA9dBf0Wpksi0CczhyezLfhxUqMY/XL2Po78p0vOMynZekei9\nHw3wIoz8MKcWtxTPL5CRtI74c5D49DbJz0sMKk7KTWiz26GRndaLXxYds851\nBlEz9lo+ugw1sQCF5NxRFYbx3jDkQTUoCBmQpo5C22NAOBs2OoNnF44vlebr\nT4f+zYFeS16Mr6gEDiOX5Tpn2Qd8q4hkbECpqgUAvSGv6gZ5KEGA7Dks0Ytm\nJgrP1eZSlnWM+40R4t8K5DTi2d6qXxigOdPdNPwjNGN1OQ1iOHkWiPa3/9/J\nVM3N9Uw/se4xXgLJjQbIfxdJ6UYvHXYsgujFOGHK0ieyGgH5tnBFwxT7fNwS\n0Y9rkm/vJ/OAzefjoDH+26WJUPW+sAnxzHkvYXklJ4IIk87ku4t0wYQv4ecU\nChN8nBuhAvDU066Z3GZky2qd0pTE/rCWR7OqoXWNojA6jNazjhn6jM6V3PdD\nvdcI\r\n=6RZR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fa52521588138ccfd9d45bab87e56b46a0d3de88","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.140"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.53"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.60-renovate-non-major-fa52521588138ccfd9d45bab87e56b46a0d3de88_1619392310894_0.006304993688516447","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.60":{"name":"@balena/jellyfish-sync","version":"6.0.60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.60","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"42ecf1f4a35bff93251e4bcf0ce9a0419843eacd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.60.tgz","fileCount":24,"integrity":"sha512-bUhcjJlbw2A5GHorTRY+ue+aQ9fukkBt+FnkXDyeOSri6e12+z0hdWzUTDOTe1zDx4LLix2xG+25OWBKMRHi6A==","signatures":[{"sig":"MEUCIQDROMaLN+/83j6flp9NMgp5KN4nD8Fgv4wtZE+BBPk3qAIgIvUkxTD7/gs9uNh+sLJMJEgsAqeJ7ESaA3DZ04JN8vI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153574,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghfgiCRA9TVsSAnZWagAA7vAQAIp0Gq44guSejBRz9SAc\nszqej7SUu2douxSLRCDK9tVG57baIi+bEsi0jIPH8bsjrqCW+pk4nrb6Qtx5\n00+Y2hjWu8DaoSFQ9V7+jW65wxDXnJmGmEswSZfQlDB/lwWNDVin/DtPIcwW\njyzvNbV2G4lmk5JnLT4d4vifJuTO6vNeGg8MdBHHtcKdtKIatKim5sdVMCKd\nFBrW4ywkuznc4nY67Amx6jngTS/bOu/lvIUr82YKg+EtcbWnFnCLv7KJIbj2\nJWd6PS+A1j81oMdStRAch/UaerDSlHBeoMLnM2jY0Nahi3/RZ6ixcIxDUSpU\n+Xbm+gDLOAFMrH07OYGPQHPJfF0mooi/C4cIWkbAgbpiVwV8BjSxj3y7oRpg\n3uwg9ocpN2AyYaH2w9fOKFH23W7zodlrfc8pqCx+m2IZSd2mkL2nbz1R/L1g\nzHfsg3cohV8eVPxAWeOqdEwR43hYNtNLOJxiONO3yKFim6BRdySIv9Bh6UYo\n//OIxtMoFUwzStKCPJqMr6hyfhiHVV1KPRTP5aX9x4LRkSs/IECe3Am94RbE\nNjyETWBVlAEGgXW6DDq3ByaQvXx02m8Df92Ig16+zqGUP6cCKpfPKVe5T3ks\nOr06yKcG3WZUx2cyeUbU/FpqgXyfzDJvv3tt3QVyHaix6Rf4tr8F/ClmF0Qq\nqhsE\r\n=b0qI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"77dabfe4f4df7cb043b2994759bd6e11eaeb6450","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.140"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.53"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.60_1619392545903_0.3887806752174541","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.61-renovate-non-major-425d570d9ea7d7134b43a11c68e0bc45e7070a4f":{"name":"@balena/jellyfish-sync","version":"6.0.61-renovate-non-major-425d570d9ea7d7134b43a11c68e0bc45e7070a4f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.61-renovate-non-major-425d570d9ea7d7134b43a11c68e0bc45e7070a4f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"849c271787088552ecd5fc0ba9d1cb69ba92fa58","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.61-renovate-non-major-425d570d9ea7d7134b43a11c68e0bc45e7070a4f.tgz","fileCount":24,"integrity":"sha512-37pQ5o8/w9Oo45q7GN8J6C5uAip5XE2Q8m7PSN9utDqHVD+XixgkDUdDE/B4v1qzHdctpad4OFtU+zjN9InzzA==","signatures":[{"sig":"MEUCIFpD7Yu33amPloz+Qqa2TpQZAAt2NgCOaBt8SC1wEepAAiEA+S9mCDE4vh8+HJlEC4yT+SZTk+fNTug6WDuiolwtXMQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghhAJCRA9TVsSAnZWagAALhQP/1gmUQAb5hIdX8Pi4NZK\nDR/h8dsCuVPf8UERAoLLucHPXsVtKCxtFBe9RMsNwlIWDl4ZVZ1JIt9pYxMV\ncWz9Qt924AZrLbwpMqF0J1FNtD7p9xa6eP7wOrmBOcanHB8SNjft/Scl5tNB\nAx+AHw51oUygewraCwhLymZLBbocwXrGFullLYn2QDmVcPWZnNJZlXYlnCsg\nIY1mOJ+JzWT6R5LFiLtW/WmPvRjzmhR7M2dh+ojnTGqciPFTtO7AJa66Xvxt\n340kXUieEO9+cKwhcvD7Rs1VDPYxK76THnzG1akPnhL4hntNE0aqmGpaG94I\nuMTwhcECcGyMcQWw+mRqBvFWMTWAp6R4zL1+hLFvZZ1FqP8OOgFVwoW7sr6k\nrg/QpqwMWdKv/XEBu4Wz5EoGqMwryRLDW1iFjij3JVUk3uWzpKmyLw3/Eooo\n3Z0lHKdZRd0g86MT/0S3Ic7SrWKId0Cz929e5HVkSr2uyQNPKwA8bHf4m+lW\nshthr99Yskh8WzT9dduhfxSdrVJcl8QUDisXN66FWbWabpNoHHfznPqLvAwt\ndZPlGtsAM25J4cXZAp+FOyny6HIrDEybvWeewUSO+jSPmyP7baLeAYsuhDCQ\noGqv/8yuSWX1+ijYUyqMuLwqIVBmvznWtEBg2TZgFZ7b9mgOGKM/hIYKcXAJ\nc74I\r\n=3dah\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"425d570d9ea7d7134b43a11c68e0bc45e7070a4f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.142"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.54"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.61-renovate-non-major-425d570d9ea7d7134b43a11c68e0bc45e7070a4f_1619398664831_0.19633837820645494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.61":{"name":"@balena/jellyfish-sync","version":"6.0.61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"05edaad2606f8678542d08e17dd58c74bc382513","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.61.tgz","fileCount":24,"integrity":"sha512-98RGlHAJRS1F8qgWQ7jHKbRJcFVRbHCJ1DnbYsJM9DakjPdN8wcFHgqhJzgR72Xst3uDpZtjfaUMi0YqG5NIdA==","signatures":[{"sig":"MEUCIDN261YzNx42SP7pd27gfmNC9CZprX9+bj34nHsY4MboAiEA9XM2hJLMvUXY8Yg0dix/7H6/xyNhxnZPSHpMQ265R08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghhD8CRA9TVsSAnZWagAAVmoP/AtVoiN9oxVjWjr56DGe\nmUtyKKPWO8x030oApZAN5fAzPkUbrz1GBqJd+vEAMpxRpT2pyXk47X9q0CiE\nRqSz1OCVnic3ypkVLb+6i9gHLAAJxE05a4stKhC7qdCBtKaxdCWXdQvFCK/H\nL8oqLm2XNUB2tajSYv5jiiESOYcm1NHqPt0BnXU28uD+8DffiSQISLEY/0jv\nHucfH4pUKJdAbv9yPjUgJZRZnvbr5fVAVcvj0vzSIKRPakFblvhXbauQTvfb\nORaE+bEfTVAwGPmPlRy5c72LLgjCxx7XW1DVkBFLOyRPXNniTarzLxfCnWpg\n4XeaPoF8ZmgF9ycGZNQLAJ7Anm14/OY4SvlRh6D9W0bMv9zgIpQd/kCeSkqc\nLxqpdXQPcOlyJ20qSG5yUJUusOZid2xsOi04H1MxDdP+voAOhTpfeiBuBcX/\nZvSnxIQ3F2NetM1BeLxynvvvf6urWcaDN5LslsS0qnvJ9bgMuIgF38FgtCII\nRERBTmTWlO8ov8KHQslxHoFS1+jzHYmZmHZ5jPaKsvfJ9HgNoZjjcJWlxP9c\nkP8EhsLwxSBuRQcIMkwMvNtW+sLEM2OUxEENUQyqW0ZHtta9dK+/j5Q5EvW0\noBc/vF72eLH8Q8XiofnPUc1J5D3ORpQcxrkMLSB6ihJxdwdmt4JetQljUuwq\n9et+\r\n=bz2F\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fd741e5a1a3c0249a0a378ba1849113af37891e6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.142"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.54"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.61_1619398907671_0.8882536781872101","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.62-renovate-non-major-91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc":{"name":"@balena/jellyfish-sync","version":"6.0.62-renovate-non-major-91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.62-renovate-non-major-91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3635b16269d28e1da911734f8c8dcfdb85190283","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.62-renovate-non-major-91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc.tgz","fileCount":24,"integrity":"sha512-a9XbuecAa4yICAtZb2dM8yWGT7hXW1DqORFg6EOaqMzxBnrDezuFd+A2ToKF3bhXfTQVsV0O4crcKWXTh68bgw==","signatures":[{"sig":"MEYCIQDjIwlB7ksumqUdGLkVsDzubCEN2JIkJFsPt45P7xlosQIhAODK806N98X7TEwJznIDIg4D3X3yA7Ll8jmQ1mQNRLAh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153802,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghiMRCRA9TVsSAnZWagAARt0P/3GaXk519nD4bkVR2ulY\nJefnkJJqigQVEkO1IbQrk9cGQE0RBmJcomIrtSGtow0et5Il963yW40kEWgc\nkgt6rW5M5h4TBytH3j5heqMNd6cgezorH9E+CXqr0ZtZl2axZkiI0/zKNmJc\nF+z9vQg6ysNlRazeA8Ngq43sbIatyVGt4bQgNK6paiEsOhj05IX8nb/9TZeP\nkMrHdC2kPS6m3GLQ+7KWSC8RagIv2NicVHXZkiv/+zvlrQfblbUlioC8Esx5\nBnB5vgZJ+QXNpALue1YGd2CV+1B0zaCC9AxNKjvX46PjdTkAmxuaUAUZ7Yp7\nvtq7tkAHNNXre7AqmNCWkkgGn11/AxQHzzkJJ+rJ0JB6FXYNf/kGNJETK+hj\np9mLJ5smBW10fQ+31vpjsm3qUsfYNpFPDjk3blqP2JbH5CewCS3GOR4icL8b\nCrDmGhW8XLisHSQxv1FLTMZUNn7CWkBpGjQfxThbsEFrU/fucuvcc7rRmfqW\nnrLz6sD5wqsJJ8Myk46q7XZG1nh9b/RJMzQyXEYLICzyUXI6U2AKLIy9+WI0\nK4TLKPLqeEyhDOIFuaujJ/P2RSi/6XuqWzvsOTVvi2frLO5aDwSSFzRoLnqK\nrWSeRkkXMSMFiu5VDZ1lUa7km1kYkDGIz/aBiuc8QCzSjksHmnQTUn/1mHgk\nd14r\r\n=74B1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.142"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.55"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.62-renovate-non-major-91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc_1619403537421_0.25611591378605825","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.62":{"name":"@balena/jellyfish-sync","version":"6.0.62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.62","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f224185ef21dbbc281619a7264556acdc7c1fcf3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.62.tgz","fileCount":24,"integrity":"sha512-H16k/3U/1JZbOto2cY8byjIGcyX8OGX7jiFd+70AoNE2/xC0OTxDnrueBUVXstV62kTCDtKyELzVocpPgGh5TA==","signatures":[{"sig":"MEUCIFmgXbXQyaM29NOGGsA4u1MKmc+FCFM4+WEV+GG8+tpkAiEA/gDqvhg3aEfp/xVfkAo/Q25K4al04lU1tw3N9ZDhZi0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghiP3CRA9TVsSAnZWagAAx7gP/jazB/mBIUZ/2uriTDiy\n8ONod/i3d279Tps29VO2xIuCoKenn3sYJ93IeO2b9S+yykAfZ6ZKJy2ICCpI\nJLI30zacjJuQ60fbmuQm2y5/MHQuuIpb6PK9Pk7AlgWpxolMr/UDL/6WQgC4\nelZJnQtrDVex9vlFur9Niwt2y+E/7ICmanCFg2O9gqtky2AZ0YbcYXwPUzcD\n0q3BKlpDRzYssMkNdIzNdmrPFLKKGBkNsTZasXvz49lUDWwyDYOybt+NkqsB\n2DjlLKSN3kJmUcU8ahiOQWgj4ai5MWxL3O+ylskH2NBK8+26X5Kcjs9rb5Nw\n9OMf+dhBvYE+1/PUGgcd6wHmnql/AqYK1NgFOUJw+LXIRQeSUN6/Q8mXn3hp\n7J2WX6UJ5fU7BKZwJIn+g12n1ZejL07b4Z0oSf9i1LPRfg6gXedXT5RYp/C3\niqcOqYHaFZhkVFCpD63ZmxVlpI/xlS1+T1Aecozm/36hijdrt9kCf9qz0SVk\n3Xw0654Q1pQ+Hf7XFd/7EaaY7al08mfHkXz5a2QuomXFpe0VqCepTi4H4Vhm\nsBrLKA6kgrk/dfb768geFYPnFMWWfGskYYCTpGBPBGLxehJ4vVp5dteWd2yT\niY41NIOaeBvL3Ziz03ctenwoRE7d9mOYpftiRT48PyItJ8pNoDob1EZ2dw6P\nJZMV\r\n=5wPU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5161a3c6c5f0ff284073696ade2d7c3d35cc8018","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.142"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.55"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.62_1619403766542_0.23467543458348317","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.63-renovate-non-major-66c6ab58ce16059eb5698887859917759cc5b73f":{"name":"@balena/jellyfish-sync","version":"6.0.63-renovate-non-major-66c6ab58ce16059eb5698887859917759cc5b73f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.63-renovate-non-major-66c6ab58ce16059eb5698887859917759cc5b73f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a63b221dc5cfe37d93780b38e5504cc6e6dabb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.63-renovate-non-major-66c6ab58ce16059eb5698887859917759cc5b73f.tgz","fileCount":24,"integrity":"sha512-4Rbpwe+RSogv3rYwEtw5tWoM14S6KCnfucKy6hXCooPmG2X0sOjpbIrKgRW3v8UmQrjJ5uCttlNJQGbUqy24YQ==","signatures":[{"sig":"MEUCIQCJTs1nI2QD0u52mip3nSLKJJH+kr0yyxXuif3t2r3ECwIgcbWQdJSFhyxWSIXXMpKL4Gvg9wsLLSsjbEb1gneLOxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghjkoCRA9TVsSAnZWagAAOWEQAJSVMVYsnJtt6WlSHS1x\n0YjovN0BtbfsasxjzeVCFqbyIzVom4VO4njJUKv4qquYWtLBjuLK/AgcqJhY\niHHqAcPVeZfAoI81q7R+kxfBvdbO4l0iymp3KmNYL9CQAhU8ME1rJLTjFFEh\nD6nh6T/l0RgpXGmyUTV/GIjKoC4d2Lc1VK/BVlvaylwK2X6J3tqt/nTP3mtl\nTxWMG1sQl3CBnZ6vCXp5b37D/GP22WVK3WFkIUaqRdpP0IW/QRI89HErLR8O\nKBiTf26JrEzBwfFV4e8qjIVa9+4s7QWTSZC2mUnMTdOPG3hRXSYw5BqQ1n3h\nBBxjKlnYksq9rd7npu0UGKmkYjy3GvugfGbtajrjP4I3RfKzO0HAekvJ3s3K\nSl3M16Qk4qy1B74iS7+CUJapcT/9fKHy0pEq6QWaTbYUhwYTU5r9KqOA7Dv2\ngPFvV/Ml4zEnTyfHZWf5eETLvKzXFKklT3RrYDvV8Z5yW6ywGzjY8SvfSBDK\n1Xsis98D6v1eovRhjDFg8APGU4NzqBEsqJnpOxI2ed3zyKuVIkjkW6AW7F6Z\n3mBqpLYT/KywaraknEeV4goomBmWEr1GIzZGDIJLoABAhOibTLJuUFRuvNyg\nyrQ7L/5GjUpacQk37rloTwMNO8vC38abnUqjHtK0rqR0zG4oWiI9FOlBbesB\nvGUC\r\n=3dY3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"66c6ab58ce16059eb5698887859917759cc5b73f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.143"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.55"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.63-renovate-non-major-66c6ab58ce16059eb5698887859917759cc5b73f_1619409191723_0.5352220906689791","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.63":{"name":"@balena/jellyfish-sync","version":"6.0.63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.63","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dcf990422305b77dba25d0ad28674cdb6fc2de7d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.63.tgz","fileCount":24,"integrity":"sha512-6hTI/YF1NsbvHoBy2uzPAq1ibu31vrF+c8eyvd727omU5lHPKehV1nvg8/Ev+1GYk3sjXrMCtjun14fIgLoTAQ==","signatures":[{"sig":"MEQCIFMzS96QHLIB5APIqLc1JOybQhSMu57ULgQDl3SDoVccAiB4cfXekEO3ncEmQKHpIMCPSKyiWkmiaxKBX09zSr3Tmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153847,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghjoQCRA9TVsSAnZWagAA6uAP+wcZa7Zeyv/hLaxKO6+l\nAwB8RqNf44BCKsCaK2swQMc/ZEFcVNFznUtyRdY3fxFpHSb1oD/jvX89DQrl\nQ4Q336p8z9aGwh+JoxCIazQCRSiy3T0nt6WCX7DfTlBsgmd7qXqDNPmlpTfD\n6pImuYgpipSMCAEn4yqyR0Rhnrr0+lmgBFNTIo8PMa5KHtMwQOdkKXoIDiL5\nEZWWa0bISQkmOxL8On4t5Tqih37RgsIO1xjQXu97NoMs2B8Kmm61ez3+JEDY\nm1VWNOveMjjhKTSRbD53LluEWztlHFTHZnFrrz4PMlN/h1kM2HqP97PeTKqC\n8nrsopHzoTGX25Rl2VtN+XcnuAPzJ42dDaoKAKTCAVj5n4tJ12nh6x0ZWFJO\nGW6dZJUebmNLuc0+qhiZ6GkUCZgG6+2yZ1S2tKL6aCDneJMlxRgIe/QiCkfu\nKhOCy3KeeoHFo9GPfJQI0sUYnoFVgr6ymD4+JbrcprgwVv0xRtbcxYNhuCg7\n5enn85T2WbsZtcv3QtyhT356jOZtSafIUTm1KHgpMZ31y2vw4VE8k8nBTEy1\nmEZJ7A+UzicoKv4LyIv3E1zPNGtXrgy7yhEV3O+JTKXbs2AdbI+FDqih6JsM\nuy+K8YlLDMIN5XbcS0CP1kjZ0SaeDFz83OwDVN/UPZH3qGdS7qxRS7YZv3MD\n4Xvk\r\n=ALTV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"019a79759d432cfd521a6e323cdf4b9712fa56c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.34","@balena/jellyfish-metrics":"^1.0.143"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.22","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.55"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.63_1619409423539_0.9301623433245216","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.64-renovate-non-major-4fcd1dcc766295b52546b794a0ecc912c6f8517b":{"name":"@balena/jellyfish-sync","version":"6.0.64-renovate-non-major-4fcd1dcc766295b52546b794a0ecc912c6f8517b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.64-renovate-non-major-4fcd1dcc766295b52546b794a0ecc912c6f8517b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"69c61c0c357a91dc2e672239ab9b8351f568f6f0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.64-renovate-non-major-4fcd1dcc766295b52546b794a0ecc912c6f8517b.tgz","fileCount":24,"integrity":"sha512-r/NfQds1DQ2ReW2EazY17Zh09C6UJ1DdBXZfwVxeGOwER8y0huUfKjv2UU1zNCZAIwD2k0Q7TTgNWkSjXfWrLQ==","signatures":[{"sig":"MEQCIFMFSSjU4mo5PjeC1nmA7dYx24cblLCyfnZIr6LItr/6AiApNJXvKrtccOLvFah5LK88Oukuxeqt1aGIBAF8rE1qag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghw5mCRA9TVsSAnZWagAAcdcQAIUoUidIvXeH4WlN7T4b\nYMtBqFqX73rAC+y0dVm7BkOV03UIS7rjgMdgvAZdcj66Zw5ZbZY+12q4xLAH\nwtk2n4wQ9jR2fFSO4dE4093cBb/eOEugPCwvMR8XmUg7o1tLuFFVGnu5/VIw\nOOsWXcl1tF0YiHHl8yYM8Os0dOVqaRSgfJbr8eYfE5j+KkI8GS2SOxZDAZbi\nbLepz1+BnEfmdVuzSbQpa6Xh9Aa0hcsG2VX00/dXquPKgvuBQxjmKnWUVRgF\n9x+rj4X+G+buzmDpFMUMHMh+1vwqWcLxj/eVJsEJZwhOQo5Oxgnqy7nkTlyu\nqDhXZ85RZy+aD+3ywOP7E93zYwqgnyYYuFdaGaeUNjDp7GfA6qJdRGkWyg/x\nzjsL09QjJ9cAU2q3YWaM4+MorgUrXyP3szCzIPshlwLHHjNljEgIILrphPT9\nUS8ej/NDJ3ULrScel4+wCl+OWXKyPchgLfLL5cn6VcJXMVaXF51xXAt3EcoW\nw15lsHdg7pvLRXj+e5iSPHlt7F2jFKrR7fvO3ia9yrroisV4Lw4/yUEamMok\nnLoQHCSthq4V12br2UnQsmU0a093FyL/8HIjUeCYei0dphqSjM3MHUqeYHRW\nnnrNSn4AIcaxpGvyplKt2XFSJpMd8T1wliF+OB4Uhl1T1hf/QEPB7EynVoT5\nGLi9\r\n=CkG0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4fcd1dcc766295b52546b794a0ecc912c6f8517b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.35","@balena/jellyfish-metrics":"^1.0.145"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.57"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.64-renovate-non-major-4fcd1dcc766295b52546b794a0ecc912c6f8517b_1619463781623_0.11033112943388668","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.64":{"name":"@balena/jellyfish-sync","version":"6.0.64","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.64","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"373891bc548f923af2caf3d134ed5dff70d3e7e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.64.tgz","fileCount":24,"integrity":"sha512-aGz62eTfF70dNol2d7GvfRWGauauK5aWZE/3l3/bod5pey+qAATeP3jnon2McPItBmxelpn7HIQezlUM+nv4Kg==","signatures":[{"sig":"MEYCIQDdk8q6hCFvhyBODXzhLMOUTwkiDfbWI+OTQh+euf38mAIhAPvtNsAyzcZ7ElKb0bJ0uCT9Ss6Y2pB9runiRbwDFfKz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":153913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghw9UCRA9TVsSAnZWagAAy1sP/2tmllwljgKgai783LYG\ncz62tJ92EIeM/xDMRsZxdvq3zqQxZWi9fGGDuL32AfwLArp67f49Vc+hXLDy\nPv+wGbG1wlK/LwdLXVQvgv/rDf+iy/Y9DmK9E9kthhAbHH874LH40eEJyt1S\nLyutelX7VCROgTXK9+e0wlaCa0M8iEZqnPcomb21vvSIg6D7WpPKBe77lcBh\neYvzxY0Glp+lgQvZSN22HPAqJousx4ezRUf0+0gw7DbdYzn8dTU7/fV7qHyh\nXEkH0c45K1csm9tbIy3fYtFKiVThXqmeuvsV+trPz1iN5gM9SiQ+HHV2/DUB\nSbNFVO1CeEZ3+m3V2aQ/f48anRaMwkng5YPDPPqB62MWuFeIeCVv57BKa7LC\n2Lf0BPcNGLvB1nocU1BwOV80sjSk483udhDNL1E/kjYyE/QZnhx8NrFxeDN2\n9fhQBMh5wWNIKIkssddv0u50WK9VaC5JfV2qhRYRH5Yc6cnstOYxeGblbf0G\niHuadvwYTSuhMtSjOJGx4GQle8ObsD4+9mBTvmpzwakX3ZGxFHsoSENj2C+H\nS5VIFaMpdttLby2/d+5+eXNIx9lC0IQKebjdI+T1HlYEKpE1osHeWYoquWlu\nR6I5daNwJEbXlXJ1ssDBaAg+gmo5ihD4eBeFjeGVs1otkxHMWL+sP48phZzD\n1Vcu\r\n=rQBD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b0fd3eb7e18be8084f5bb5334f9cca922cb32c21","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.35","@balena/jellyfish-metrics":"^1.0.145"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.57"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.64_1619464019604_0.46745664491816497","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.65-renovate-non-major-a3cca586bb2d06885329f9378e73f9b6d705199d":{"name":"@balena/jellyfish-sync","version":"6.0.65-renovate-non-major-a3cca586bb2d06885329f9378e73f9b6d705199d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.65-renovate-non-major-a3cca586bb2d06885329f9378e73f9b6d705199d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3377e67212e931e044718113ca18ad6c74d3b93d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.65-renovate-non-major-a3cca586bb2d06885329f9378e73f9b6d705199d.tgz","fileCount":24,"integrity":"sha512-FnHbYJVy7Oug/OX0zJs5o2r1/9ALMW8uj9D91Ze/gnFEv+9EsswsiaZu0EknagC9xX2kNJrx5OayjKpxE3u6Yg==","signatures":[{"sig":"MEYCIQDbj/fF6Our6xstw8Cby6u9dYRffya5t++QDmYFzb6PmgIhAN+soaLifumT0TlBq5oyOJYPjOSyDL/Ftvo8WsBlQA0N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154075,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghyJsCRA9TVsSAnZWagAA+XEP/2ktVQdXTTynI3+CY11b\n6tQEdtsUnfTa7+jT4isCSnhryyIEg3/Ew3FxU6vkoOK8UGvaaMCXU1hbyIH+\n1uTI7Yoz8v7aDq72baCKsUKkWXtNBxJd51uNCSYXEYSjvtlGuk5WYydRaZ4z\nZp3QOgYWfRFSnRz18Od+TN0bpVZw62PzsPnRZeopXiNLJyqpQkI4TpTkSpib\n1IbnGKTg/0Q3XqXrDJ13smco1/H2mYEz+cdiBI7HUGUvQItfk3blGChglS1s\nyTeTj6Bhk6KRrKqAYYG3eM8ENvpTNh6ltmu+twYRyQMaqpbteOgZV9Gh2arl\n0sZMfDOh2dSyBYZugLU8u94ftGvKQcpfuAMExTrpiuTzEZXbyuegXvUSYXFb\n3UsbFgqayffRCuYxRYxKTE96TMamYm1fnaqiaw39ISJE5YZf+U0QLSSyRWsw\n1ifH24MuHxHfiI9l9uDW6TuV9OBfEg3H51V1gM6p1XtCJMQ5VGh4WFc295c0\nn0OsdoRTHnezizQDzDXhOPYMaP/b6eQpnkAkQ79T2TTAU5Qff8qLdIclZKih\nxtW7fMolv0fkJO+zshrBgW63Btc6tVeVUj1SDhdYekLBopoCFa+8MRcAY/z0\nC3+tXpBStGQC0UEawErSBlC+u6rTIoqCOdHo1blfeRwFuDwprugg4KEUZLDP\nihPA\r\n=OQVM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a3cca586bb2d06885329f9378e73f9b6d705199d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.35","@balena/jellyfish-metrics":"^1.0.145"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.58"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.65-renovate-non-major-a3cca586bb2d06885329f9378e73f9b6d705199d_1619468908305_0.9907011293161412","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.65":{"name":"@balena/jellyfish-sync","version":"6.0.65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5b75f4c319c59e06ea6d98cf44b19027003de788","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.65.tgz","fileCount":24,"integrity":"sha512-ALze6NXepgKdC3MYIQzYsw/YnQs9aIV0X+53WbR0ck1DP0Hi8xhVCdqoIS5hl0OADxEnNwaVZrwD9SDoRSwLBA==","signatures":[{"sig":"MEUCIC4R5lwIgkuXEGT4ABPcFgb6IdR8JykLC0cLkO2mZma+AiEAxR6FSvBQc8PdYYJSLrpWAQEAsPwr33rLR7N9jjUWLt0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154015,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJghyNHCRA9TVsSAnZWagAA3X4P/0wIuzU3VAfkql6FhFee\nOLj6ogfaO0ZN9rr7nY3uI4tHVPBf0r1AWR7v2NcvEi9/fuMLS63Mp61PtLW7\n31Aw/93Gj7V1BMPrwwtu32ypP6SGihPkn4opB2qrJ4YPuDsfVIo87uHrLYIp\nYIco+5oOLudYsfbnVucZPXJ5dNkReabgViXLxRJz//WPs+4msSwozZH2ub3m\nY0KAuZfFzfKmnBiSMm0m48W8NVIwolghS991hs2cDP6zBTzQHmZy0lj1CReH\nT5gbpUa9MPkubIJUVe9faeme7wm10l5XCzEV231wYQzD8bby/FVBgz7tTgAB\nOcD+4R8rX6YvAiAEf2YjY7Ygq5itGUVKLpMd1dV9EYeCfk7ZwMZg0IIAgyfF\nn8ke1OfQG8MeIYvW1iqq+m3idFYhW3/joim2J/o3R5bsCyFd71+ojI62Z0fr\nhBEID6vekvSXveYFo1VvULfECDJrZzxMvyg3hkCoe0qS7YCNyexDhwYb2bzF\nrabHukMzb7a1iXcBt2nq9I2x3g4S8hEr5xI4Uwzn0pWKNVTnzOmxW155+EI6\nY+r4J0f71Cb/WmUD+pS9sx6xKZc7FDKB8odzjmsErtQkSrbjVv5+DljSMwS4\nWps9gPPFXcfifEgFj8dJNKoAEHrKaG7TTvEd0cWvWHQEwedE+4uyyIhjs5li\nNQIs\r\n=NOnM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84d24fcbb30d43de800c495744ff65c2f9e293db","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.9","@balena/jellyfish-logger":"2.1.35","@balena/jellyfish-metrics":"^1.0.145"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.58"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.65_1619469126613_0.28588840409957594","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.66-renovate-non-major-e6174f3f697e954f24479dc1c26f30bb70e1655e":{"name":"@balena/jellyfish-sync","version":"6.0.66-renovate-non-major-e6174f3f697e954f24479dc1c26f30bb70e1655e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.66-renovate-non-major-e6174f3f697e954f24479dc1c26f30bb70e1655e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ebfeb5aa3c9dd7ec2a6cfe3f83db9f31070e0439","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.66-renovate-non-major-e6174f3f697e954f24479dc1c26f30bb70e1655e.tgz","fileCount":24,"integrity":"sha512-0KGTZ3KWo2MxymIjamBIvz5rvjdcmW0e32+PNEIqLXAJwANcHoO999NR7mZAnm/Gs04WT+C0b6X0NyW9Gw32mw==","signatures":[{"sig":"MEYCIQD/99yNkLWtErPyD6zM0TY2n5Wl1IYRxQPEfm8YNHV6xQIhAJJEU3EmS2U0TdwCZWkORgCctI5vqsD3uWIGLNn2QTK5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154142,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh1unCRA9TVsSAnZWagAA9uIP/1/4xSo9wLwmcihM3HGI\nomFwzRhHEq+NaDSgjLNz4V0Rh2x3qcWlZOJ4SN1CMvyDLlTAmCYgLWHOWUlA\n0HZkCOV2oF7rHh9SqjQ7tFGpVrE2D1rXIKFGb44GP+ril2GyDNWkN+0HJNeh\nzYYMeo+RlMCZ/sJ4xnf+XQ/vZdjZAPziFpumqwvFHUUeGmM4J9Xm7WBq3e0H\ngxCECaMp3amu9ErJiLJTqyK8wfZ2wYDqdjUr7fyrjmBIId66slCRggaF61Ou\nmpp8P7jAc8epe09TSVcXuc8a2XbiLmPiGyigL59GjSxL2v4rlYPV6nF7mMxq\nv2CU3Pmn7s8kUk7uaK1nK5oLeigr72fo5dyI3zqFLQ4VhfGt6wH0tqBQ6ii+\nAhcORlmdRFBQEMzEhK/qzPkB5JbZhpyCJk+uBkK1uOhOB+8AXOedG4weXv8o\nGvWCussbZNdI0DYahV+vZ88BO8IDAUw0fpzO8EciL2ngj8dPNzmOheUGnKoJ\nscnXifv+3zd3AkGb7PJaSU+T56NuiFAAPtbA5eQzBfPpAY/UbfJ/aZPodUhx\nWWU5D3nLKL5SiTlDgwPqKTAPrSZrOReJ4IfFvO2C7wDUDlrBCUr30uKybmAe\nh864Da9veqw1XVLb7IG1il9M9Zq+i4qYiowVDZSAxEzUMJH3kakVsTEb40Zo\nS5KW\r\n=M4ff\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e6174f3f697e954f24479dc1c26f30bb70e1655e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.36","@balena/jellyfish-metrics":"^1.0.146"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.58"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.66-renovate-non-major-e6174f3f697e954f24479dc1c26f30bb70e1655e_1619483559030_0.279845198196921","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.66":{"name":"@balena/jellyfish-sync","version":"6.0.66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be84e9985fcede35190ce8caa7ff03b79c5306d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.66.tgz","fileCount":24,"integrity":"sha512-6hoRZrF/pRrLdm27s1GC+OTGHHW4WZDniFDBM4dotq4m7anXvkN7AO2Y6omjHR5b1GgNlrSH9SkNZ70gUKlV/w==","signatures":[{"sig":"MEYCIQDErV/r9DiptxA3WKxVgtOt5ff3qHn2c1huS/Oj4m0mLQIhANgpfNnRHahVxsVfDPL1FkcIs/kDNuHXdh6rfJbERori","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh1ypCRA9TVsSAnZWagAASYwQAJ+o2sp3deXVEmHoOeSE\neISrD6opHV4ULNzDPrtkfjqlKmwLDB3wQ/YxR0l7on+xF9VDy0vcixHybnSs\n3tjEUHYyZWutqJQ3V1vyDsdO+Xa3rtSQuRNJxcSjpgC5RqptNGdNxU8DEOtU\ntDSLWh3AU3WvadEeK3+hVNx+2KufcICiKJLs3IJ9vGsBYNGzJmhHClP/DZ1v\nHeOrjQlMh0qZLTC+N/x2HEXpwzCLG+Q5tIvZKITWve8b3U9UghrviYSXSh3p\nwaSPQ1qcWKDjgu29neuW3du3GeECkbABq8aX4ujSm3X45Y0DdUrPOhsXjRl3\n5SOuwCZlusJkPnDpwE2X8J7IN8b49UKRwQBRe/oqry5FMI8FzZpwpMiMec1L\nyN+BTDnKsEz8AtNqzIA/BHfvgpl10CVNoJn03SZJ1wW5WsDBeET1sJeVtQG4\nb4r/PwGHnI301zMJKHuhxcLJomYFh6LVVx7aXgNEGtCKy3cbhILpWr3v39sP\n7JDf5H3CVjnqmVdhig8pG5N4Er03XLPQHlaDzgCZ/JGjQIjMhhFqWgzvkH7z\nJdoi3zhayU06bFiOBooAmFjkSIzN6yf5843RzQw91suVzwI6xhcGSwLf91rA\nYxmFJdUw8JCdJikhkLHQispV+Wt9hzI/E8QHZSxUEMXXHjEqMOxGEO1WLQxM\ngtCy\r\n=WxNV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3a1a3988db1564f2757df83be48678ae10ca4bfa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.36","@balena/jellyfish-metrics":"^1.0.146"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.58"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.66_1619483817193_0.4921965303026219","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.67-renovate-non-major-a7589fbea739ea4689489a641e34fbdb1c20785b":{"name":"@balena/jellyfish-sync","version":"6.0.67-renovate-non-major-a7589fbea739ea4689489a641e34fbdb1c20785b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.67-renovate-non-major-a7589fbea739ea4689489a641e34fbdb1c20785b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d630d1587d08f2f8c2f37432c688ad4457fde9db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.67-renovate-non-major-a7589fbea739ea4689489a641e34fbdb1c20785b.tgz","fileCount":24,"integrity":"sha512-nsSb8vgoCgLUoYSmetw1zsZhBLjuUa2E9g7QH2cP0cxJT15IPl8qNDbeRtw1snFeVcxEeo/3rvzFwrspK6OCQw==","signatures":[{"sig":"MEQCIDHbIkqmexdWkv/e9zeSwCyMfvA/GPcMHFGhhFYgmy2vAiAF/c+YwTWyv1iwr4hleCEQrZ6p50Hbh6ldEaRM3UWTPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh23ICRA9TVsSAnZWagAACQEQAIkQlVHaxpS2XUhRPuWf\ntrZ0+B4jlVtMzpYmRrfUnxiv0zhjdcBRgeeKQzm6usALHMpRtF4lvt2mRTFO\nxsXXHsUXSklTqYCjv6R2+KD6snqV1bq9r5IjounnHiMxShGlAzYTVJT6/+s8\nYgvz49M42CB9nt4uWezrFz1lVdZJiVbtWxJrOy3QEZ3KW7ezIG8BqZbj49J1\n+xY72JRHRd65dlFB4aV3xk1xW9yCwVgEezRFgSU6K0TZIvFMOXSZvwZGUZ3b\n8JPYh4bE42K39Hs1JcSFogDO/FgEO1iVxiAGyXv75OvkMhPZyIqXT2lpXvbs\nSRDIo8JvEmGzQ9z0bmXq2Cf3zoVPZ1Qt+5PMErAuXpeIilx+sDUjvJxnd2Sq\ninc6pomLe+yHS/xO2NPQgAoD9PpDaJuzp7INGMLcOd73K2P/wwmhvciPnhi5\nJ7MYq3ug17BcaA8me/Vs72Q5No2K/GEphuXUdQ2m8i8EA/cUsDWg7NCJyh62\nqeZElflNuY1N4Rxb6CmRMuIrU8Z14ENbFAfz62gLP4H1vjjnsrNcRQNMu/D1\nElX8h9kwiwpxPBKuFD6+qyWieiGjIV6mwvGT1A9RxYUJNnwkE034flRvCsCF\neUbKik0eogkRKkbBCtMIBwbSZBFsZUpkkDvYL5G3oXpALv4oCnD1eKlRDLoT\n8gq/\r\n=S/kH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a7589fbea739ea4689489a641e34fbdb1c20785b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.147"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.58"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.67-renovate-non-major-a7589fbea739ea4689489a641e34fbdb1c20785b_1619488200368_0.4993885147344641","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.67-renovate-non-major-6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09":{"name":"@balena/jellyfish-sync","version":"6.0.67-renovate-non-major-6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.67-renovate-non-major-6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e7125486d153da38cc3b42fc4419149cb8107dbc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.67-renovate-non-major-6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09.tgz","fileCount":24,"integrity":"sha512-BF9pY2cf+X68DEXySJ7OevfPmJIOJEXao4ihe2vtNOEw3CBhZeYZ5HlqSwF+5+kHoU1lSmvbxns4VcNg8P9rIQ==","signatures":[{"sig":"MEUCIAVbA1+iSg2rJX9ATrrmXsJc1soYK6paIRFvrz/B6d29AiEA4W6M8dzjds5jo7K8DQ+V6b21s0iMOsnqVir8/blE4hU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh4QYCRA9TVsSAnZWagAA3vwP/12QCGttREYwCMnUbbWK\njOE9mw1EhuoD3pzom+nEKniLwygWGvFyyn3lbdFFt8mvP4yj+ohl7ezLAQea\niVoNCpsSfMxrWmGzC86mU3M4C5lq5pupPhcl9xeFbsAgLaOkz1/njRUR2XKN\n85++IzAg8cyhS9hS0gqR2BHPCGTO/SchTQvk+O4sSb0sOWbOT6f6cKVwCkCo\nwNPpp/7EAoTgBulfgwtj8xwzGYx2bg2svrJYrt9a6p+P4Svy+iRTNP8OIm3V\ne98IPoVQXAMI3NHeln0gKctDeRHMOgjbaid5uPTr565gXhC3W6WLqCtUBn1/\nikiqQWaScQLt+2Nd0mJfHp32dVOzqiwtXs0KBfS0vOAS7WzKwmom7GPbvmVE\nPtU/w+pQtoCNLSYE3vDKv1MoDCovk8cOsghdatnaw0Tzhbl4XY43gcFvORfn\n1J4zZ2Hc/HdPR5D7rCDHYaIVuoTDiK5pKysTBEX0eGtxmrtOGBn4VylcRei6\nRyHOWNcDvRA5AtCE6VrUHdvGW1v4xmID6cO8UpG9IIx4e/AuYJX9Dg+nNFgJ\n1l2ocMVahB8oLx1UickEC1/cGb5ZEYoYGUivvi+WIZ/rffvo+P4xaNe5mkzX\nfKpxdBqXhRjHmRb8oQPS7KZW48kvHNrJ85lJb9yFHLtRKy/do0wfySGAFeBG\nS73u\r\n=E5t5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.149"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.67-renovate-non-major-6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09_1619493911452_0.3180747743685739","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.67":{"name":"@balena/jellyfish-sync","version":"6.0.67","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.67","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d6092324462543accebfd0c819407093ba14daa8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.67.tgz","fileCount":24,"integrity":"sha512-ejTn/mRdm4wAL/YIueoHqYI6vQcblumRkm3I23HEUDncGszgbm+SZAfZWoLq9aDAm3BdNlKGf+lR0YhFTT6Jjw==","signatures":[{"sig":"MEYCIQChzjGIhwo8ZqS/dCtpi3Jt12BriuYN9SXVDHGqwgVkiwIhAMqtHBCSEkFBEG3pNiZD4myMkdve0bqvN28aPxHylTo3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgh4VXCRA9TVsSAnZWagAAt5QP/icGFWVE+PGSUaNRpx/i\nyOK34NIa+krdakhkl+gYHlvDmyyyoc5qWxB7useZUP0HBFic57FgbMeqUCta\nIOHfV5uonfl74S3Bb85KizNhGJYcHOCKZah0Vq3hmG5iyCE9ZEW+ms5lXZFT\nFUQtgylhyNdvkswYNmHpYoJmdtDcE7PIfyTHA1dMCqd9m3yu9fSdL+23wcxX\nAav1kJ9D8Tun+tnubOJRNFyy/PZc0ph+lZE/j2GPU4sT6GPfU10d+raOSNAL\nAjcHqd8i8zxZ2e0wsB5XmkefQaIwy3d2/Jt89SoXWjBydOIl1gmRvGnWj5u7\nWminS2VItplhQ14/OcPcA/ZS9wvohhuH5xrehZKLojqB8V2tyQgGPCmruPwv\nLZoQ3MPZZjtj+mIdXuioDOBokUTmxo3t8iyXLWOhEm2S6WUaTttsSMoTa+35\nZvhnHjweNhNbQ7/QhtqRVM5puQhNe34nCyDl9D9YWY4ZxOTWG5ThO8IZhrCS\nONlrz2+LtA1Kozv9k2m1+wnJWre3hBzTHkKItIZhK3zgu5rOoLeBghDkWSHi\n/tsSRPw+rgkDvH1jQj6XAdlCdlnIhBJnElKxVyqmXhAbL5xYL0EuYbYgwQhq\nCBR6o3DQaj1xcarjdC+fTfKL6ThyvgIy0azMa74xCs2FUqM3KefN74nCnKjh\npx8j\r\n=TPRY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"42cf4ee8008a0120f844d11e879285562a053094","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.149"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.3","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.67_1619494230778_0.9075760411613794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.68-renovate-non-major-bb353e5e093659c0069777f9a8f033818c584e38":{"name":"@balena/jellyfish-sync","version":"6.0.68-renovate-non-major-bb353e5e093659c0069777f9a8f033818c584e38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.68-renovate-non-major-bb353e5e093659c0069777f9a8f033818c584e38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f7381687ab4d5818b1dd27abdc3dc902c1c935ca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.68-renovate-non-major-bb353e5e093659c0069777f9a8f033818c584e38.tgz","fileCount":24,"integrity":"sha512-ougI9+yQLeIbk+ATOtJCVDDK//Xqn6cCi0c9gg+uDxJ/lQZ+RG3ABZySmItuem8TEfiOmFO2U0RNr9JzQ9DVQA==","signatures":[{"sig":"MEUCIQCSVWRWo0Hkz/y9tbMKR1j443ptzsiDX5f/RxWqqhls3wIgY/DygqEJdq0DmG6uFFReL/GbD3Vnp6a0IzYamqYMWqo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiC3xCRA9TVsSAnZWagAAzewQAJuo5AW4XEEfLryfFD7x\n/b4en3YMy4nAmBni/7mFtz84nSh3IPuNfcXEv63s8zOTWBA7S21fMWhQo4fL\nQifPEgcFBr7uwRk0LGbUfSnybBd+0sayfK2q8HYo13fr/ZVtNLFb9nsTPJY2\nmPyU/V1007FAPmc1jK04kxbPT5PAs5NGxTPeLfs/VEo49ZeJOPJU//TSD9SS\nPi6s/MIv7870B5OccwJdxxTfRZz+tt/Cdjh+zXoy2i8Z+jXnejzgkV0hEfKF\nDzfISHrS7PpHz8Sg99Bb9ciXP1aPm5YBjGBQcEefvBMhSb87ZYWQS+1kVHhN\njZbXcyT/7/55lMhwwJ62tjc5AZJxOSY9pKdt5VJmlCIf7gvrM7gnZg3K6JvW\nxTj68YbSDHBjt7EjWDpJvzs8TKNY+gt6xprkr0/YwAhqX+6z3bb6FkVOU9X0\nTeCShN52N8YZS18EXWnMQNkOAaRnkLv00DyKytB4R5NZjr71nIRjuozs9Dvh\n823s7lowEFo/KbpDwovT8n58YaxMPnAX4ZHUS7mELH405g/pRiMOKvTsv+5a\n+f/4Wk4f40r6GKYNtxKKn+KGlyj09AI6yoFzwCkzU1t/QD/gKEyhptkNx482\nNaaX3QDletBpJeBIwK9SGCYZzl9Dhv3s6ecix68qZUUK+8xUdZz2xZj3dejU\n54Lg\r\n=GYB/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bb353e5e093659c0069777f9a8f033818c584e38","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.149"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.68-renovate-non-major-bb353e5e093659c0069777f9a8f033818c584e38_1619537393024_0.8779906215638742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.68":{"name":"@balena/jellyfish-sync","version":"6.0.68","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.68","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6acfdf823e1518c37d8a4f5728cddd547ce9c9a3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.68.tgz","fileCount":24,"integrity":"sha512-wxShp8pyT5QqHgnZkG13m/4wDxdkN3nRFCdeD4mIhpYh+EP+KYL/Qh7jThRjCWHpgaTHLuVpxjzEW78bn4tLXA==","signatures":[{"sig":"MEUCIQDgu/bTrJKIbl1x7URaSwQQjnNrNZ32wopiBgxw8VImdwIgLBVBmvoIwGKoFry7hFhXhyv10cCC9U9yR7uLtR40RgM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiC7OCRA9TVsSAnZWagAAWesP/RF9sblZWH8d5FyP/3OW\n6EiAhggQ3R1J6qMNHOd9Kr5uBanDZxAM2Muf/6OW/GSbtl3n3CF+wINBGwAm\ng4z1Oh8BDgmRQDXmpHmRJ6ssDF66Qnc0+bvyCOM0efHjLF0oAcm9xsgdQDRa\nnuQKmWuo3mst81glUGuarf0WSQLdHuCp58J1f6NPQ2GDMoREPJHG0K5V1ijp\nGkIzvVH6oZowYbdFOSZs77eMnOiSiMVPYHMsflx0AtHoIinwygCm3IXGoxAy\nxP3ejbVBGkbc+k9774MjAnwiaZ4om8IPDPZNkhAcBe0I5/Io357icu+IrEVP\nRoXAimAB4qoRP+c8Z94IBcVYGXxnC53aOx4GdDD78GtGjiQRniOkaOkSzbK9\nveSI+Tbofhf3EAgjYe+m14GKZNb2mBth4i9oVAjAYbPH7awKHyDNeDEBdZHB\n+ZXj3NjA+E/1LVXavZen5c1ObW1Fp9CpQ5yY39RsOFDB/rkPisvg+me/6v0X\nes1kMV6yHS7VonXdUOCNT2kn7zrckb6yyWGlgn8+itFPebDPCOumeZ9P8nax\nZpzRRdXhJ8Y1DVEUxfQTb+RyMIYmyEeaq/IUHXvbqOx0iwnr28GCqb+W8ZPm\nCGupZY5boQl0sxF3kDvxsRI0+48aJozxyUdSkLuo+NZXyk3PE5JBYAumVIEJ\nFtoz\r\n=fc52\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a0e9ddd7d017198111e2b443cf55a8c502d39cfd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.149"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.68_1619537614300_0.49363620024379107","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.69-renovate-non-major-5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3":{"name":"@balena/jellyfish-sync","version":"6.0.69-renovate-non-major-5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.69-renovate-non-major-5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1d764a255fd893c153f8baa9bcf61eb3b47bc3b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.69-renovate-non-major-5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3.tgz","fileCount":24,"integrity":"sha512-AIAeDvDkN1/2ekf+qdnsUE7UWW/Sh3uTvtUwZ2wep33uA6XaQBdhC6P3UJeNBt3MhIntzqE+fYzwVUCDnxAZLQ==","signatures":[{"sig":"MEQCIG7DkDoGK+jvBhoq2FIcC60TD3c4Zg0RJigSgHLXzuDXAiBWAil7mzwk87uHM1hyzr2HeSnlkfX8ULGs67FDcQFCSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiC+0CRA9TVsSAnZWagAAsYgP/iuOkBM4Aqvg9uPzf7to\nmeeoN14LyFWuPLmN8EfIsmU+AjZOKPVw5e6RDc3X7UYahB2FLvyShNqlN9ky\nOZ3ampGrQ5XudvxuwXaU9JJFKiOUZsJ2kqHE3chVXDJAYs/l20hONtcw2rmA\nLOpxGEvLqYg2PoaNl3FYq3buyRh1MBFzxgmdVJOwwrZv0nbVkymvPOGncF1S\nHoOWTvQf0jLn4k5p12U56h1if4oGLqBzyZgy9BDtuX9V0goCDINUBUX9YOID\nGlw1oJe0UDNRNn+UDEkb+97xCh5tojuGzGmshGCbR6t4ZheY2jYFyTzwrwvB\n0KOiGqQNYzP5xXevNHs/UNv3VpSFhkQLqWMvFCJK/LMQH0raQiW/KVsLMWNp\nwnPvHrcAKNt6SMzh2fcjXne1t2RONLlyG53tdrRmRAyx6B+SljfnnmUu/FrP\ni82Juc7OWa253/LsdYCpvRK1mWkaoxu2DWT+RF/d02EtMit6PrH9yD5X2pLT\nKUMZkOHA0tLiMxBqVXkld0X/hs8uTzmnpaVWYWlS7tC9xsGkNSddwdPTavDo\n9PlGr7vBcXjwlAu9Jcr35UJ/mOlH1MzCyEmSiMkXd6IuEnzLtelVusgqMqkI\nw0bb0Lr2sdcSKEq64pUch2QAqH03D7zKjzfU+Hdk/peO2I2uWBvolL6cJ8Ng\nfXG4\r\n=dizC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.150"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.69-renovate-non-major-5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3_1619537844349_0.21974533501765414","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.69":{"name":"@balena/jellyfish-sync","version":"6.0.69","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.69","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3afffc86849b0587498425ff560cb04286a6fdb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.69.tgz","fileCount":24,"integrity":"sha512-Am9TI1y5ymTGdqoB6PwWP0QOMiUDlv1EZ/+haSNyeJqh8F4QbbLVM8INkH7NbwZRp6KsFZiJXmnnybWDXFl3RQ==","signatures":[{"sig":"MEYCIQCtf2nwCNVmY9brfpz0yLBibVzG5NysB14iqwghNXHE3AIhAKyiZ3BznTNwJ2ciIsUHUOG74LdVLpxb7W+6GWTrWUqA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiDFaCRA9TVsSAnZWagAAPX0QAIKMXYtGjLtQBXW511Pm\nTe1y8ZFHAthQSyDCP/2trT7VwZBZcEn5v93dXVaZyCOpK9A213k6e4cFw0Kl\nsW8rgy5wjDMrrSHw+LqV/6VOB5cfZ/uR9N9fydur/inp8BbeWD6ey8N9DI25\nDqpj+fwkwLg3+D0Ilx4dHOsS34pV1DoUp8ZGKHSjwTR0JG3PdeXA95MCBgin\n7ukMMSGgwrXIHZ2CbCtwefNXxaUkgPl+tcNstOqLuiuaOjW8AhuxIRM71DSh\n6nK8L1EpFlqQfJKqfJh91sz3LYe4lLvGzjwfZGbrl9njfUYctLWytp78ooF4\nbCqgl9z0ReEaMEpVJ4fA79KvNayZamiCb3pzSJfOTk2rj/M1Mc/EKA2OEoOB\nBowwDDUXfmBh5eJX70Ipwd7MCgBga+HNTYeezvoLsSgyfKbGSJMC3fDPocxf\nHnhpgjEYdpQgHE0PfX/5Y3Yy1NNLYzxZpo2cin0FRtW8xIh3eI8lQ1+MsVCk\nTgnqvDTPBBMSxK+By2iHAQfHM6bXCpvRRrKNDea5w/Lr81RjqIPgJwfAFyCR\nA/CgddMWXsHq2qpulc/jXn0/MkEA0UTNL2u2BJc8q3y3pyquvM7TsKul2DNr\n5y7Q9ZILLy0ZVqR9wEIs7PJeZVMCQdvt7YvG3tmtsjd1bpM4jz+DW0pdWjGR\nOydL\r\n=tdPy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9c2aa6959b772944cd3d7a3b4024d851a0c8f4d7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.37","@balena/jellyfish-metrics":"^1.0.150"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.69_1619538266438_0.6093447687670923","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.70-renovate-non-major-d1ce3a93ed0945e4abe5a120fafca8dad548104a":{"name":"@balena/jellyfish-sync","version":"6.0.70-renovate-non-major-d1ce3a93ed0945e4abe5a120fafca8dad548104a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.70-renovate-non-major-d1ce3a93ed0945e4abe5a120fafca8dad548104a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c00d1fb0ad7515f16e357c13b96c68225b99f9c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.70-renovate-non-major-d1ce3a93ed0945e4abe5a120fafca8dad548104a.tgz","fileCount":24,"integrity":"sha512-4/+O+em+WH+Wn63DkyCnHhOX/mvgNCInJWECysHdAORbwsGGAIL88HrYfcXSBzfLHzElY22Zmz068BnCkgHSNA==","signatures":[{"sig":"MEYCIQCKpIczvAfwpoAFRdRzwUvfnWJ2NQ7bR4LmYCD4rlOi7gIhANtCfcr5bHdrYgyuuN1wxqjv/LYs7hcN7WHzvbKy4xAt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiWfPCRA9TVsSAnZWagAAIvQP/2G58zTgj6ZpQZERpEs3\nScXbFwIezDtaBoFZsd61IjjtpziSk8YOM4V0AMioiawtVZa0ORIXk2MYwCKz\nY9UiKgfFuAE/UVP0U033RQqWwdaXt9ze7q7A5uP4BZss7fGEbu99KO9NyXFg\neKJgiIzMcve2H/gvHm80YP+P271idEzMckcxnIHZvPWCCDcAWxph+kcczRbY\nkBdakJX2CZqG+Dqsz0Ni6dZKjvNwYCOPvdqoptBIpdxNvA9F/ni1nW+Bb/z0\n8rzlGs4LV17duA/WFVi48Kx8PS23BfAUSha7cQgkDlWN75vZWEImIxsFPJ+3\nOnuStwM9Lll/uhP93fE8pLMvqR8yqzEIm1NyMDWdMGzIkRv4xf8Wib/lBcTm\nKbyX/jCmYUQxK3/jKhgPXK/RxM9hfSY2/bSduyUwD55E44NZJWPP1veQIPq8\nHoBNQAlfu0dSG+Qp4q+646xE3yhbl5Pi+Vi1f6mAFZS4dwYNI2QMM0n8o8rX\nDtee0XCOuthfmx2sJtQkaVDi8ZIXXc0N97gZU8gxuN67Q9bTA6SHbHesEx74\ndPfcW6FZgjwJRazSF2ibxhVkDJDti6mN5RrwTlt60aCr4gBD/20dP3QxIGbU\nSrrWgPMRH4onBgzH8gxNYPw4HAMkNmm88xihPdSNJkzJoCCMavyjqSWZsE0j\nzpkd\r\n=s9AN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d1ce3a93ed0945e4abe5a120fafca8dad548104a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.70-renovate-non-major-d1ce3a93ed0945e4abe5a120fafca8dad548104a_1619617743415_0.7857819354761297","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.70":{"name":"@balena/jellyfish-sync","version":"6.0.70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de05913d03278f69f603f638af1517dc89dcfa9d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.70.tgz","fileCount":24,"integrity":"sha512-PBKdLkSSyBt6q5qiaci/+reIl69W41whGpV3EvpHdC6m//BIIjJOBSgSsn7LMfDH5WCJqeuIdIrhlFynDTMwzg==","signatures":[{"sig":"MEUCIQDt4ocNBWxlA23tDKQ+BJl8YE/EiIe8fNsWWXldjCJAFwIgdaxPwW/PzgMKS8wfWFHk8aedAqu8tcMtSwppcFXdZkk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154403,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiWjJCRA9TVsSAnZWagAApfwP/jvFa4FR7ufIg0LtdmUs\ncCdLjBJGR74LOgqdF3J2O8pjy4SJ05lOswnVXw9gkmzqZyS2Aux2oJQSddsS\nFd/tWrl/qm7efYgG4Gh9pqt7tt72hJpqQf1ISKGe2b2kvPPaUi3+Wvp46mac\nj/zq++jfHSX/Mtb4henbW50ijikdnguyt+kZIGh0137bua2tBYKVNTe2XDQ+\nxBc1aa41aZ4djyOkz1eZhtdvFJJ+Q/y5cvY1nR47Tbeu+pcYHjG/2fkoO2G4\n6+qfVH+p3WpANy9Ot/4kO6rn31RKowHKbUjoYeVnTMlmAp1oyImsw2igWCkD\nz11dT5g0gmGuNqtccq971+EGHfMQF0mcuxLdz5DPhsGwxZOyT7C+LCNS854Q\nGQVqAz3Ec4tORA3K35gSSVrj6KIajctwZoL0n6xISYIrlNJUyi5/hCe6DnIy\nv96VaKBIVpbn/roGR99Ss2/lztVBKtQb9J+L4ZEabVNtEnoJOI9aev+6V9Y7\nhmCONADIiaRVAg13kzbdkaxvPQTAUDWIFPDtpifi1ywCwhtHOuHapcvDITC3\n+1MOGqGSDgGj2VANemm0bka/KP4Vc8S1V1IG4ZwuG4zX6fxf4OsPk1D6kKuo\nHA0cVQVoGG6uzYhRucX5JkLff8p2+hvdQiPK8XgU7ShAP7Z1FvOv0lh2EJG1\nxKY5\r\n=SvUf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e7e4fd6eb6466b29d4b98bc97616512224664295","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.59"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.70_1619617992965_0.31894879647051844","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.71-renovate-non-major-ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f":{"name":"@balena/jellyfish-sync","version":"6.0.71-renovate-non-major-ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.71-renovate-non-major-ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"819eed5e5aff51bb7ba88a3ae2e2cffaa8459493","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.71-renovate-non-major-ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f.tgz","fileCount":24,"integrity":"sha512-teyVRokTilJjsAXoySJw2xS5MKPIGfyPSz0UgL9BM5xxNTKXYtqOPtMUuQH8s9wxOQCyxYh6JqsyqgLxmOnT6Q==","signatures":[{"sig":"MEUCIH9MUclSzJi7uXtJxWqOr9vd7LDRPFBxiA6iON77bX8KAiEA2uQePh6YEJNFkQlSg4CqJKZKHt1AFUL78UcpUuyEB2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiheNCRA9TVsSAnZWagAA2JMP/0q1iRZlcYsOt+9Yplzx\nTYgP3Yhl3gGkV0vTh81XY79qKA5L7dC8ug6CJVOqkL3SUU7dCIk3hJtORTLP\npMICxf7l9NvHTGXAJ2g++rUdurmMxMwMzdxzov6I3cI2HfAz6S3kCm2urO7O\nbW+vfF2Gnz97oG6vPPEkPUE+XKC+TjVAv7GNJ4Qi6FCXC+RNqOcTsJNPh84S\nSwlSTnh3vJ46w8A7WU7aKWGGCnGcv7yerGIePWaiep9mEZTpr5xwZ+XgJ4XY\nRHja0zj7K4XZXKIV9u2xcdvKQippflTEkGhU3F1aPWrWmMFT+Zs6u/PnW807\naah29sAQPLgprLkA1XQhn7BUK2VaWS5V3iIPSxL4Edm08E0DPgRSs2iLy0E7\nthoZc7CMZJsK35GuaMD0+bswnULyqCO4lIYYyxD+abvDQ368WoqOP6kuWUCf\nOfBNzMSQJ2g3CDrjp6fRPM7NYLreK3mORuONgdMZH1MpfiTOxjXvDCOPF3wY\n5ZRh4cubhscAkiL+kAtIRfklPYDMWK5qI7VRruL/0C2BBPsEloQ6FKMPl2A6\nN+rhY2Fsij9Pjq8wqRnl4MS/sfpd2tZdtDhsljYsxQmxuOEJwINWqhguLrOg\nQOLo4iNJx5xjCFTCOkm3tQWpJAEeEUjkUllqO4TJ95BXwkzr752XQ+ytJF+Y\nQlAp\r\n=aXne\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.60"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.71-renovate-non-major-ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f_1619662733125_0.14463172837081983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.71":{"name":"@balena/jellyfish-sync","version":"6.0.71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.71","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4770ca189539fae89feffd91386284dcf293da11","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.71.tgz","fileCount":24,"integrity":"sha512-itts8eHdqZuxEqD13wqtWFQsbpdFfp8B3uUDX0+LS9q9XTha/UDdiK3ZiRrQBa6gvunR4dSFOxYXAZtiHvO9rg==","signatures":[{"sig":"MEUCIAn4YjCKTpVw40sy3rqKQY5nYQObOifKWO86I8px6JSjAiEA2zK/QS8yVJwkUmaKGaHLee8sE5aLoEahy4Epy9XexJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgihiRCRA9TVsSAnZWagAAvZUP/A6mZgORBEAAwm5c8Xz7\nCkZ6+8T5SYxVYH1wrRAwRNwV/q3qCoLgxJFjxPviGfRhDeZUb1KHe5Zmc9eN\nLqiuTMr/pY6mGTYgJNSQYsMqdNQlUOHWwbOVjLGF+kKtxka6K+JohOWRJTXl\nTDvckOIkI/nVfFcp9HKd5r7aIjR+pn//y2UrAJg0kRvXxHgWfza5+t5rIElF\n9x7754UQoFzAWcLMpJGzZjLXgJIa4ENVTk6TGY3bq9NDOIEzwCpz2XRe9yhW\nAlDpF+iswVt4wis2R0FNGBAD6i9ofgctwXkotoSFG2q/fQAdMxwH0Cd6Zkzh\nX3XtwMTzYf8R8UhoKp4vXzDDn4LrO+nXWxBokN3ZSJlRCqNBgmRdGFy1z0Yh\nkQRvGOCMKgLL70IS7Iq2OQCYvkejeJNji+oiRQtytXR8qn2/1oVSnOaSfshv\nkUO+miD4dvUC5fGVM3o8baB2w9tcZOJdWaHMKowZqtC8BBYFLRq+PxOkn2rp\n+868Es3yKp757M9SwYOKDPnhWi4gGpxLN3yMs/O9tA7P7pTAiozves09RSN9\nDekFJCpVoaMpIRwrUV6rCFKJ/m472OGbGE4cF/kZqpzTyHosusXi4LUvd+TM\nOvLx66XtVBiS27NTlUAzCMtOGQe4PBonz06jh4vfNfhBiEOd4STF/pIU9edH\nlpIe\r\n=SEwy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2ceb53279514ffa7a067274e40f24a4995b3aca9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.60"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.71_1619662993244_0.7948352593527355","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.72-renovate-non-major-a20e0240fbb356577c60e136c6771e66b484481a":{"name":"@balena/jellyfish-sync","version":"6.0.72-renovate-non-major-a20e0240fbb356577c60e136c6771e66b484481a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.72-renovate-non-major-a20e0240fbb356577c60e136c6771e66b484481a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3987b62708d85a995b5be92410cc269bd334d35e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.72-renovate-non-major-a20e0240fbb356577c60e136c6771e66b484481a.tgz","fileCount":24,"integrity":"sha512-1qxucPKAQGMXnuVHNkRyO9ehUrrg12IdLxuzoX6ypUMI2K2IN/BM8NLbBHOoBWnDmFjQa3e7bur82mCxYXQdDg==","signatures":[{"sig":"MEQCIGXvqLWvHQnnl/E5ZZgJwITlEbZwvIXMQjZuz0rc2Ry6AiAOFBlOC/JbRDpqT2TpzwN5u3I1NivoNgKItbqX29LR4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiibyCRA9TVsSAnZWagAAq1cP/1qJaQP3PiQ7zhj3w5Km\nkIXgPdpmWC5fbuPlOhjOgR/H6M4K2fclKxtFkbfwK4RmD4SHGuwC0KNv3rMJ\nknSAzgbxIypox2ATqKOhjEmoCSm1N6018EJ50hbP26uR5S8t+r1PWDwOhF6w\npmQzqSIV0O5IQ5Mv7l2RY3om0k0EnW3RrQQvMSwQ2Q0HARG2cqETA7yzBjzg\nAMzLPeYAvwzEypuJ7qICm6q37luUH/NwoN/7V3tCIEvRPcJUY9n1gfDRfp40\nbcHwb7hFEDlDWNy8qCc0Dojj06AUbNFjGq7CkdH1J0BGWRMiDhb4G86jbZv6\nVXF1+3CtpLkgKDeW7AqtFjVNQydX8Bj8QhA5hkuHA6vjMdjMukyR23qjJuc2\ncjwVNcz3/yrT3Svl/zb6IlqqjVNHx5Up7EckxwUEY2CZ7MME8DdVKgZU6AHj\nGo78/4S0mnSvVOPDl7wjlkpj+Ej87zGXiZRsGxS5YeRJJXDSUn3VKs32+pFd\n5Ju3ZTS2EP63hY0Unm0FhLH2lv/f7y70IF5XqqqmI7EtiFrP1VldPTOiBQpP\nh50XjoykQe0furYmaoF6g8vEXfLHo8c/3Nuzj0kS/6QV/l0DSvLiWsC7Y4qO\nuJaLisdIhLxd5w9N0W06zA2sXf1pl07omA71aOgls/vmucYO+to/5mXbui1h\n3ZzY\r\n=L1He\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a20e0240fbb356577c60e136c6771e66b484481a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.61"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.72-renovate-non-major-a20e0240fbb356577c60e136c6771e66b484481a_1619666673605_0.14822968550869864","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.72":{"name":"@balena/jellyfish-sync","version":"6.0.72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"833b6cb8cee9fe828d4337421d81778a08a00634","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.72.tgz","fileCount":24,"integrity":"sha512-R8ZFdPE4XNVpmYql/Pgd7AgktyWgv+HrkgQScsSYbuiNZJDZBYQngxRJFPZDdlz1cg98gUxZBQTZMJnuV1+g2Q==","signatures":[{"sig":"MEUCIQD6IoszVbcKo2ZIcCkhMZ0IyyisoUkC1lVy0veV8aKXKAIgCW00ppu0HMhQHSE2DgWiuAjWKmd/ThztjIKURuAMm3Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154607,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiifkCRA9TVsSAnZWagAAlZIQAJvrsSpzunsDaYnDZBmx\npSN2sFkzLiKn8c/+ijYU5UdH2VIL7YSvzpK4E2ebJI+0Vy1fP+Bn6XpE+X2j\n/x3ZK2/EsvvII/598dWqa3zxngpcE5fc6Uuo4jluPNt/Y2+b2/hA0D0z6I4T\nUbR8Tuu1tENw3WnU61y3mqr0qEvvBe/mPOloiw3hi+9PNmj1YnHXDCGL78m0\n8S0DTsyR4Et2cfZMHMRofsUjYG++4xoHZqpfEHYhhS+Mxn6ZC/NEAm9AWsfZ\nVZxjpu9SWbUgbpMkOg1wzQwcpycgzHWuexLT1Erf3Z/h0wrxn2kU97RpI0XF\nPiyJynIY6KxgDyGO8XZidQb8jI/H9YQe9MvVOXb8GhN9/0d2N0y+UuPbpzgF\nnVMNkqKFJphd28bcYFDiGNQbk2yaZPjyaR21GjHve7u8lrVhV7KCp8goMlaN\nocgkMWntYo1RiXGTDmBVrffFMHMe9t1HEmbnnmgyZ14nSEledYm2vfLWSHuF\nwcWmFfEeROfjJWvldwnfOnprBy7A8wRpIb69Kjs8S7e+C7RKZZV9eXo88Vvg\nALtcRj0bbBfi9J8xWrM3bypKaoICoXxMb6zdi2zlQwHJ2PTR8Xzynk2THLXC\nxwKRN3S2y7AklTOVAdOhQysdi+DDhzGu9YDId/tn3AvSlf3rHHiR3GvsZOgc\nbBXu\r\n=goGD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf89f23aa93c5bc9eb3dfb491f8bacca524482d2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.61"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.72_1619666915829_0.15933407357633445","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.73-renovate-non-major-7d46f72915720267a8e8a775c0d533d5c5396e1d":{"name":"@balena/jellyfish-sync","version":"6.0.73-renovate-non-major-7d46f72915720267a8e8a775c0d533d5c5396e1d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.73-renovate-non-major-7d46f72915720267a8e8a775c0d533d5c5396e1d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72b778868eca93d9e15ef81f1368ad09bc2880c7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.73-renovate-non-major-7d46f72915720267a8e8a775c0d533d5c5396e1d.tgz","fileCount":24,"integrity":"sha512-fSBNUUuPGTfp4XLFbtu3+kyzL0Kleq4BPR23cO3vrsJrPEbwelzQjUc5n5XSqoLJVQOClbRRNREspwl3CH5ftg==","signatures":[{"sig":"MEUCIQCutJLKAucsacbVonomevP3Eg/KhY287wChYdgPJ0J96gIgNjtp39ed8TqcBE1mKl5Za3jJ2EkUIk3Ssf2E5vGJXiA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154769,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgijpSCRA9TVsSAnZWagAAei4P/j83A83iyXAa3UT9G8LQ\n/FQbYnQPSSbafOa+VyNm8rwVVa5ED5BT8czWchQBbT74YXYKhzIDzNR/Qru0\n7JI0mWYUTeGJZB9h5vsdL1lSQWDLSUBgq++Je2nS4SkaZSg3qBs5VElSd+PI\nC+Y5tfZitjlLh2IFq9O8wfdjqQqrJ8LFcnCfwLsYDpXrgq3VZyk1cUH+XULc\nC9+59xkd5BRmtK8nF6o1ZH2T3iC+KnFonS0fOlUoMe97yKZ4rhTiMNGKsp3E\nMI5+PWQue6s+uUrkbav2jQymF7JPJl3S7xD7Eb3xfBYPcWTjnQsexkweZ/P8\nMykqagt32wFLWlUruhnu3msM9MWqpr2bhcgN48Eaqu1K83WE67HkmZ5812NI\nOOJ+hjFHKmXvQraDb/O1xbb1/cRXUHYXBcT9xoFi5OCfcslhtEfCOq2H28KI\nEaIMGk7PHo1uPlmcU800jmPnBkBaUoQtv7rNCPO2WvylOLLL1UXSOkiAQLf3\n0R8TWoA7JJ5JsPCRrkQipyFfo+N9fSuJMlvz/0K2PPkIbytvTQxhSLKS7Du0\nF4Mz4lUpm3H2aW00+qJK9k0fWxxczDJapsjDbve1ft5fhJc9Ni32qy/izlnt\nsOcNzOCAum6q3nm/XmJVlIhpdMUcHwXmM6Cf1EL1qyoz5QHahG9V1YeHkf78\nBNAa\r\n=13dM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7d46f72915720267a8e8a775c0d533d5c5396e1d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.62"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.73-renovate-non-major-7d46f72915720267a8e8a775c0d533d5c5396e1d_1619671633858_0.015965501944138705","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.73":{"name":"@balena/jellyfish-sync","version":"6.0.73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b91ce9e7c776dcf390d5e5717d054ddee77ca4f8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.73.tgz","fileCount":24,"integrity":"sha512-h7yJgtfyzK7iNXbggomHZa0MYrRceDuzCmoWLffX98dBZTzLNQbu0+grsId3xxAaOPQWtctSUfhAzlJdp7FyyA==","signatures":[{"sig":"MEQCIF4EZk122X7tIXClPqyOpiWtPQqNFVf5dbyoqV9HZAHEAiAaXF0TrmI9sml/MZYNFNaCeRo40WWXIqteYIwvAbXvog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgijtNCRA9TVsSAnZWagAAq9EP/icZydv1w8o981BGk1SH\n5spXO3+HP7S26F6CNuA18YnTYZ7a4WmHTZYXJxYBExNKWSxFgsDlrbxC7eGc\nPKhFp5VFN6edyWYzlhZHAeJrLpUeeGw/5Xu3/TYI1SnPhvBUJIIrw460yTMl\nj3p4GI+eOoX+rA86jsG8MBuqH+a/eY1FfByDz+WjOvQfssXZdhmw2aCoa0/4\nLXcTHepfJviZsu2KxfkySsr9BtzoHxgXGX1wgHipRCScm4/SdahD3OXAlsTi\nUnaa48jRbnXabNM1TDBa1Wu7eT8/4rRes4VyewUTISJoRRsuFUQG/KU1IZeQ\nLLywYTKXka+yXvF1xLfRG64187TFPMx09SdVFCC1OuQJNUNwAIDc3LQlSd2K\nBB/WZZ5GktqduIBO0mpcmtC8zQE4UN7Pg3sebnyRVMF/dBLl/r/jxt3RBV7+\nGsjAS8WAqnKZEVi6pEbLPCuZFxplz6RVcOWsfsPOYDfl87FDR7RNv/ZIGlY5\nk7Th85MfgD3RlSywg+SX1eBxPPOSvmnqAILjdTtTH6mOnQvSmqJXVc+ZXF3F\n4WWo7MHQ1eLUGOnqow9isOWEbO+duAQkNZ65eKSc3FjpesDe3XolVJW22jw1\nBIGtmr17brL7pw1P/+dlQq5/sFbY5jdVc1G5GgyLKGuszUVeDcO41F8cQLAn\n76B5\r\n=h95/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a63332847762cef43028b8fadc8333d549cf4c28","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.151"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.62"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.73_1619671884587_0.6924069467673131","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.74-renovate-non-major-69b21d5bedbcab4deec1b2820e415d350489fa40":{"name":"@balena/jellyfish-sync","version":"6.0.74-renovate-non-major-69b21d5bedbcab4deec1b2820e415d350489fa40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.74-renovate-non-major-69b21d5bedbcab4deec1b2820e415d350489fa40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ff568f12e1027aac57e27775ae916652586ad29","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.74-renovate-non-major-69b21d5bedbcab4deec1b2820e415d350489fa40.tgz","fileCount":24,"integrity":"sha512-exn4MXculZNBCLimHBL7mwktfYyB1L6gHtIrqUNVC5Cyw3ScFlLG8C7WQbb8mL4rV6RcaQ11vS2MaSRZC65ptA==","signatures":[{"sig":"MEUCIFedupWZaxzRiDAoPUDuC15JnrVFpZYgVJpgAtXsOSQHAiEAjyozcc+UhVFnRf8NxpOefNlgXg+V3yK4OptAcGyneIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJginXeCRA9TVsSAnZWagAAp98P/jY/ZulGSUVHm6uGn/1I\nDJHXHLxZ+BnVkJNg4uRj5lMZix2fGzHV6zfOEAeukaABrMpekPCeSHcpCteM\nscu8CmS5D2IGGrMdLVSxh5IU6nmT2gM1LNWfT1Zhh2KCjrzCnqbUi3zKsIqM\n2190Jxh01SiZzy36LhfI2jMJJ6CRl2N4pqWK5+XdRlurpGX2FHumrp4bEJaQ\nOFUyQokLeB/vq73ORibMsldBuqPYXHkrJ0rZooAf8pE4mVkb5t7QfdRXjv3f\n+7jsW8ICjmuuBwaf6m87lKPRVjsYSSbZUY0OAQip5zJw2Qp5OozQeCWvciFs\nkHkLURJ620fq2nX06QR6F8OpDeeJ9qumZi24gMaL+HYrIId28atXTQGKAJV+\n/9pm2oR9/9I9f7RuoOd5nC4zb5Y1dN73kxCRIJw9AG4di/x6OXd14zeTDlBM\nw1okMpQyaBF2Nn6BM8CkXj0YQgQwXQcobY0F8t+wEtHw2HR/jceracnjyjXc\nEWnqF04+SOkgGzAsfXxAAZMikWoI56++LG1bTkLbLBKnnaPIIsMvSwntDEVz\n8ewu9llXv2RuJPPEO4RJANeGESwfi/8SVbP6dH5GWhi3UEw6+wCwWWRbUEmv\nLfW9agNxM/luMO67C+0/x2+3HxgSeITj8L9jaLGuz7CxI6TK8XzXJr4ZuQu1\nADwH\r\n=mEeh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"69b21d5bedbcab4deec1b2820e415d350489fa40","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.152"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.63"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.74-renovate-non-major-69b21d5bedbcab4deec1b2820e415d350489fa40_1619686877639_0.22823228756123304","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.74":{"name":"@balena/jellyfish-sync","version":"6.0.74","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.74","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"58fc0a385e8759b52205cad90545b385b4774335","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.74.tgz","fileCount":24,"integrity":"sha512-yx2gwxigjmsxU2P3DJ32HXUMk94bUxEtC7tB8EuohLM5OPXZerArFcCZGK0e45JlEzf0Ya8umVI3REu8Ya13Tw==","signatures":[{"sig":"MEQCIHG0r81T8PtcE7fW8woUxM9bhmfe+UgPjfltF/wXH7VoAiBN+Tkd5LGDUxkIc5PieYFpEBKIp4fVdFU0zDmifOu1VQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgingECRA9TVsSAnZWagAAz8YQAIQRjhWsTmMxZB+j+0x2\ny/zdfl6iAGz2ph9crxgZse/y7dvP4j/H3HMe8VsyYgJola5BIzUXdb2chlQ3\nq73Mewlo8ce8FJNzm8LfqPyLoq+V5nXJJENqcscAuHRZnfxn4Ly06+W9QDCq\nFbKr4+z3oR1lrb898OJsKvF9Q+81nlxT2X0VmCkDQzCd22xlM+jEZ8A/QCwb\nKLrvq9zQUm6XB1SPZwJahGcH3Gf4IcFEKTh+SMrX5IZqqyrYrHj/IQWTocT9\nxOcdDqWZnUM/lyy3vjak2LQNlAH69mhOWVpsumQogpBg9+BJDuLRA8jtmiNr\nrEX6I4xxO4UR5qnAvlNx/6xQkfoSv21wCh6YYZG9Bx1izpq11be7wh3sHlNS\nuv/6kdlx7vupWU0V/J4s/9MCcOFvLIRLp5h5NACdHuSF2arO+3gyIgJKp+cu\nzqm/EKElbXSsBSw5ijiDviCpQPl4d25O31WmpADZfxGz2ZnwE1Cu9b7URjk5\nJbZrs6nWC62qxixe/ptiK19iELoOafJG5sMize5c+mfGPgM4RGVP17oA7J0c\nZ3CI891ix8sC6xupCeZep9Um8axYGC7iUIpB3tJ1hDgUgmMqHsXR95ni/vMm\nLgECJ0nDX8ynZvsDjKOu2YZwg1LLT2+ofQ6SUwALToT4UMwWfqGQ/u5MZc0S\n2uGF\r\n=A36E\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"26dfd8648bb29214fa57126c830206a52c6cf08c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.152"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.63"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.74_1619687427838_0.8390535022114562","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.75-renovate-non-major-211ff775d5d91fcd26ba3a538077bc91d4025ec8":{"name":"@balena/jellyfish-sync","version":"6.0.75-renovate-non-major-211ff775d5d91fcd26ba3a538077bc91d4025ec8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.75-renovate-non-major-211ff775d5d91fcd26ba3a538077bc91d4025ec8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4ce40fe5acee03c01f3ad308d0bc8c1fba853f3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.75-renovate-non-major-211ff775d5d91fcd26ba3a538077bc91d4025ec8.tgz","fileCount":24,"integrity":"sha512-gnGIogA3bZLAtf3HjxQs4Aa5Z1njtgWtQMBbQJFE2lfvIhi3hcU5FbzZ8v5dhMz+eSwzHk4Byiudt86ZzTI/sQ==","signatures":[{"sig":"MEQCIDzz63L8AnsGDRSpJ6xlyNPPPRRVfvgWSQzqqw27jfRoAiBibyKD12Mwi3q80BHcOXBBrdCBRKF1PU9EPgwsZXz1pQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154901,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgioQTCRA9TVsSAnZWagAAwyoP/RdgyD+lGqxDhb9HC9EZ\nyY7d2OkbhNwkT7znL71hYgYsYWQG2B11NEfoss3E0Sr1t1BfjiZmWg2+Z9/U\nOzmEzLScGF4juiU13vXrGgF1vXPAZIpF0ASzoa5QgZCW2yPM39Iom7sfl5a0\nm6caYdwKf4SVpq0JenRbhAirlxPaT7rNfSNDVwf6qPpgxDLuTFgnFRf4ru9U\ny7uMw0/FXlId0SCiqqIub76UdEUZmk1Kf1EElzoL6LWua8TaLytLI0enKzAj\niiuJNnZntChLIwG7jp+7CvpKnVK7q6aYq0XUVwsnPzqPQ2nXY42ms0icThTe\n3OOvFTo6cSqpQvfnM6GLYsSP214HrqwF9QghD1OvYeybOB8gOBBln7i5J5SG\n9vAY0GcN7kIxU0Fjhiaqpg3PLgQrcNV6x9Isdxk2zoJ1cdz3u5BDqxN9pZcX\nZFEjvNQM5Ljs9gy3KASXi2ywtfzpZDOEhTBy3XJ9OKz4/T2ktJCWXtPlcMlV\nQ8qFXxG2lbeblwfCij/Wo4L2SGMWs0HEyGXkAaHdVotMmfCBoPjANKfosOAF\nQFNRGZRMXonsPh2Xyl/zca1cvsf+NzZoAK8pPYvJIaImpwCFSP+x8YfXeTdg\nuUbRo1xpLbetZ1lQnMbwtJUBPMF70+RJnV4MSyYFe2MP+UKUj/9srk/pjx9k\nd7CH\r\n=bd9W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"211ff775d5d91fcd26ba3a538077bc91d4025ec8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.153"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.64"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.75-renovate-non-major-211ff775d5d91fcd26ba3a538077bc91d4025ec8_1619690515173_0.1404484523899101","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.75":{"name":"@balena/jellyfish-sync","version":"6.0.75","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.75","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"602c2f4abb12802bcfdc3006b6de140e619cb43f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.75.tgz","fileCount":24,"integrity":"sha512-/B8vgZJOG13EM580PN2IJtDIz5Xad8LsR1tKZCM/XdUzrbtGm5YIcc5gLFu4Y7hSnWoq+rq5gxYs8dP7IHDjxA==","signatures":[{"sig":"MEQCIED5b1+bpGLXUOrO0F2ETUAd1LFM2Nkl/AUDlqm9esSNAiAmWyx/56lOq1D1P8AniXx4XDxzWBOkcwu9O9OssYYNsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgioTtCRA9TVsSAnZWagAAsRUQAJ/UwQA7hTzXPVudIunk\nVS38fa/n48HE5aFQTnq0nY3Yt0KmtXoAcyAZQYXlCgU41xvapuL/NXE6bfJz\n2RGvcRpAkeAM9EG9+LkpMMcc9Bk36o9w8QJiqdjz/H6HaUV8aMy9ot0xFHZe\nGhNFp98E57VON86+44TP++//m559mXNnOpHiYcLcxMa0DDnd1c4t3hl/rUEI\nb15ftW8g6wym8nTC8uv6KGacTPGYuVF/nH3KDVynWCAMH5qZJB2T6/epURV2\nqjwfFW54v4C7RFM2XS09AZLHVGxVuYCoMp7bcNxcwNsOBVJq+n+0tIAeaKPU\nktIt3WckudWpzz8yDDDKearhw/xRR8VWKZorPEPypNUwUtc+Cd2vdT2ghyz/\n/pkjkdWiAwu4G4+XadKKKPOa6VoiJBJ8pY7iEdWlGX4BKBIkKW1+xVTtqzoc\nOjQ6tnh/45fwCzh2Gv0JCs7L7Ff//Vq6N8jvWjuenCxXJGjVW4ElZ4+OcIME\nLzjxhQ1t48zQhkMKqdr4c2wmONBOr3lIBINH2nj/kH3Bg1YG+SiuNPE4+fdN\nlMQmO+YC9dAHIlWTcqN7sve64IRHfE7QrR9aiJM3jd6Ff9LB2lDsNPAEWQZZ\nnOQ2ZDajilb5pVvSJq1rnXEDMwmrMG3y1/b3usk1/TgPzc8ztH+LqyBFUftH\nTwAL\r\n=CVQh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a186332117bc26301309e221b5788365aa21f417","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.38","@balena/jellyfish-metrics":"^1.0.153"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.64"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.75_1619690733021_0.9425688548724771","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.76-renovate-non-major-93aba996fad1e0a849671587ad16f9a4f5d21b24":{"name":"@balena/jellyfish-sync","version":"6.0.76-renovate-non-major-93aba996fad1e0a849671587ad16f9a4f5d21b24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.76-renovate-non-major-93aba996fad1e0a849671587ad16f9a4f5d21b24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"053db4c9c18233c852e3d96b5ca19cdc5f1cc416","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.76-renovate-non-major-93aba996fad1e0a849671587ad16f9a4f5d21b24.tgz","fileCount":24,"integrity":"sha512-Fqt3kFkoO91UFf0tKWeF27tdLXT3MvbWwAEaL4ocQ4gV7UUZwaZZ1Xa6WDdArfhp9f1aKv6bCJHmqzVVt8nPlw==","signatures":[{"sig":"MEUCIQD6xEHKeouRCpY4ONUkHLR5cZY3Z2HQGxYyZZ/qL546lQIgYsRhMSAekwC3QXR9mW8ueM1yArMU7oyG9EYjOQ3kMWw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgioYVCRA9TVsSAnZWagAAdgMP/RCixR27P3q5qla3QXPQ\n3VaegrlAVaEwnCXQ0reZ/iLlf6iL0UWBGgEBBm2l0YW0xx1GabP3TDKyOj17\ndtf6uA15n4C7MZS69w6HMhvnUoGwo9+mpu4ufnu/Wc3g48mGKr4lZ3N4qZmS\nLppFS90nsgI/0hJguWKJhAaPMRyswxIeVOc8m0YIp7BGXCXCK1mfAk7cpv6n\nweRUPphrOO6NsB+gHaEyWfr2jMsSwsyCtCA7WxoBB78w2cEZBDBePMm6Oois\nWaPCgQrOAbheclr5PtCP9ORvtxVxxF39o8rMiIAQjfh+LtGDyp12cRXlk110\nMx6sopoO8kbaU+icmqvxllfai7iaSHLPIPD/OpWBmLwmOqUrfdNEaYCns3Q7\n5FRINvMaUJAnpC2ROhu36w4J4A3GlVvlub+vYgucxxvjOGILUN+2UNNPoH3m\nj+lH8i3XrNLjNa0z4lrX8z/8ROXrgEVaUZNbiN16AL8oyW6301NNfcuP5Ryn\nzokfdKx0GsAnhRHGIpQ1hUv669D5N9paM5SowbEiltrNsTytA3SqF7IDi5ix\nOXDw8ZHPzX2GGENPqhNvsH5tjYMCpigxxC1PZMbQV7jAOgubDC+fazI4+v/0\nOo2fgHw1+e46OdEnfMRMafv2eHeC8mC/2NkLiaumU094aXSvV2kGiY0pkYN5\nauFQ\r\n=wWlO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"93aba996fad1e0a849671587ad16f9a4f5d21b24","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.153"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.64"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.76-renovate-non-major-93aba996fad1e0a849671587ad16f9a4f5d21b24_1619691029080_0.019860230577415594","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.76-renovate-non-major-262cd0a2675cd20ee207c55a13af4b20d8c62c42":{"name":"@balena/jellyfish-sync","version":"6.0.76-renovate-non-major-262cd0a2675cd20ee207c55a13af4b20d8c62c42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.76-renovate-non-major-262cd0a2675cd20ee207c55a13af4b20d8c62c42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"48bff65a81be700ecc04dd6792eb97e65f6e2815","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.76-renovate-non-major-262cd0a2675cd20ee207c55a13af4b20d8c62c42.tgz","fileCount":24,"integrity":"sha512-AiHqtwOnqsKy72IUcI7zKVq5BBiffDysKrofo6VsOsHC00WNE0fPsj01XXUnabMFIFihP4YFO2p2xML1J18ZKQ==","signatures":[{"sig":"MEUCIC84YtLbVCK4yl27rvJHjby3+8vfbiw/nJ7lekkh4DVwAiEAuw9tNkmAJQgX6j2s5DZesogKN7zUpnvyOUbXBOMgkHg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgip9uCRA9TVsSAnZWagAA8b8P/0iXeHGo+9jO4JRaVodP\nKXx4zWLF3u0SwgSObCuvWCZIcaF8eXafuRrhci0BngdLdkcyY71CsFpzgpFT\n7FG1hqkQK/7BYxAXP3+VVAZsHz6vTewDLjmYhhE4fsZgWHNsxuOkPgos2Mya\n2pL1g2NLsMGdb+JPSEaExCkuJXd2lvSC0W8mVHYkDSsGoJ+RF3aQJx4te2JB\nZhALhreIxMf88L57AIwG1YzftZ/uU9OsG6qSu6vqtqLzIZDLwlnIGPWSnh/1\n7nbR5G8SMHrUtzcbQbecB4KQvQ48ExseiOa0P0sSPLiI/6xdq4NCBW/vc9yN\n7SZVMcBaVbuSS1CTI6RdL4uJr3t9nEPsIBdOnlE1RwWG4PJ5Mz/aSk+NXZNZ\nSCPJihjyi0Duch4e4btbuKoSFzVp4JkdXeipN9xEjNsHKZX21vPalalzKHAT\nU0SPJb6T8ZcUxLWAgenwH6RstZLQmmzL2Fn6NgShs+7q6+e4HNjNruorSni4\n6+gphGS6Dks2XeJmMsVpA56lNNodM7+aDUIo3kSjyF84c49iOQS32e2OdxfY\nGzQLdRD8JmRu7DbXNltdlakpLf/IFojPjNKRjWoe3kGG/GwEtB2o/jkAgOIB\nYJ/XsXXpPvu9amy0IPTEyguIuGqaVROgu6R4/4rXYTB8fSYMDHh2JJ+R3vWQ\noRfe\r\n=Y+5O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"262cd0a2675cd20ee207c55a13af4b20d8c62c42","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.154"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.64"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.76-renovate-non-major-262cd0a2675cd20ee207c55a13af4b20d8c62c42_1619697517998_0.578219136286741","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.76":{"name":"@balena/jellyfish-sync","version":"6.0.76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8d26dfd5fd6d736ac802e612ec8b81cad0bb15cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.76.tgz","fileCount":24,"integrity":"sha512-NDJOKWlC7BTfb8Ozd+qkZOjpggGB+9BDw6x0nEBpfJHGy2sHFfLxm7jAz0La7q+pTpl2G7QECLVGjjntu75F3Q==","signatures":[{"sig":"MEQCIH15rbPZs16zrL/U6F5ts0piCappJ5TIdQW04pVoRphfAiBFHaRjrIzzpSAh7gHADngN9cCpLcUi66clSN0Nyw1b0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":154907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiqBDCRA9TVsSAnZWagAAEgAQAItkQ2RTiO21MsODGh6B\nHOMV7T2/bT8IGoxe3Qe4jp9uPmjqph4bcWC5dLihxzZd/UG7JNy90WzXeUFf\nC7fd1qG2KwTcLXRhKbIbHHOlUT+JdDV1P9M1SfIlwi4BtC7N/OypDlIWeY4u\nFwvh03WyDjw/UT3wfkNy+ODErSYd56rKPWtjkIX2qIGSKy7KnC5CCzD4uWyW\nDov9LM7VfEGK4pChYw4FcHgq7rQL8u/JJHhzHFe64bHmllgfX8pvaRvDRKQB\n0lKqp0vkkynR4dLj19lMEGe7IHDSJcFVej0ozBmBxDKB24yPQVI8fGy/hWOs\nThzj8k0WPlQCF9E+Uo2zqZ1mqa2YYj1xk0/BzZFkoj4vPX7UN39tPUFJkcgB\nhfvth2Tlf6DZb+9LvqV1k4a0FsB8J7JTJ6TkqfISj6xrs4AFLtKMysC5qrPT\n4GEuMJaVcsAXuWXXSUV/6P2yEOuUL1HZ4t8EzRQfKLNAPtPQ9lOmw0nHaR7G\naIH61wHcbaw0AnngK45lEbAmQCt+IxD+HEknFJp/Z8y0zUpFpFCz5Ry8e2CX\nK3FVjPFMrE5OQxA7GzPXUCmLKQU9pMjemfnZyw4djX/x0cex/ha/mH8yLpMT\nHHiLOHFj5aC8xZVyRN11xVneiD77yFkoEUb1tYLJd7/z6FFHmNJZGg1taLl3\nIZTE\r\n=TQnO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"536b2416444e088f5d45d8a769c1ecd507a9cf41","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.154"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.64"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.76_1619697731314_0.4623814146502194","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.77-renovate-non-major-ecaa3adcb36f106703f7795ddfcdb090e5c06329":{"name":"@balena/jellyfish-sync","version":"6.0.77-renovate-non-major-ecaa3adcb36f106703f7795ddfcdb090e5c06329","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.77-renovate-non-major-ecaa3adcb36f106703f7795ddfcdb090e5c06329","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"beb95d487ae7d020ccd7359671fec163f4596104","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.77-renovate-non-major-ecaa3adcb36f106703f7795ddfcdb090e5c06329.tgz","fileCount":24,"integrity":"sha512-5MvHMkTKAz0M3UZGvjDhKr2ar0LdExNI8ECerZPuOL4GyaoR+xF9MXjVQaFWOKpG+BkaYtn2X1yTWcpS1uQkHg==","signatures":[{"sig":"MEQCID2EvztX/JYUQjMm/AC+DMDbiF6Mkuhk9m0E+8dUwpIuAiBZ2s/+/5Km7jM2IZTFvMcEs37uwY14Paf2bU+dxE5BzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgisNZCRA9TVsSAnZWagAA8MMP/jefrNOuLmkVY5QJNl6J\nV2UfN+kFIznTdlrlrXo8IQa2er4mJbHKrjia7CmabZcl1VIDnNhCOEx6ke1z\nBKcZamUt/B/pf0Fxd7jjPDSopVhi1TXlhxRjeJUhQ/9ef4znsvWe+lLUklRc\nUt9wsjTUlyITRcW31v9DOgwDuJ7RINvt93uVlMW1tiGyB7IvCz9hRShaFMUr\nApcM+tQaLiBUvqxr8KiiSgqHt7I1mScE2ro9ZORuHRpRr/yW2+KUTE424cmo\ncVK9wJBd1C+B3N8dlqud+YWWSWwTGbpp8XRdQOAMcnGGU7GPk52tAWw3nw/q\na5W9ixokFU4hW8qfowYAQB5SLKtzKxRk+RIGN0+cfnE5evyG6Mptwnm/5H7r\nmn95rVyxrh2dRwevTmeMjxjbTwOO5d8HUIb+1UJpAML2/FRZWyX0Df0USeD8\ndIKePND9XY7wkDP89MHtk9zZrOjA34LI+kEuzo6lccvKKZ3JR1+Qt9vrVguY\nYaGs3Ayr5yWXFmZYxw78GZmYPewMTpO35rEF5mYNsnuuqvrMMM39Zj+MJQr2\nrSDHvWc4Nidj0xa9T2Yj6e9h4pHmcGhm92a0DKiBTLkAxcPCtKMyc/f09urX\nTuMjYKDkPfMD77NjrqqmOeYj/Prt+uKrangKujK6b69W9ja7Aj90CJme1YQt\nifbO\r\n=GOEI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ecaa3adcb36f106703f7795ddfcdb090e5c06329","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.154"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.65"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.77-renovate-non-major-ecaa3adcb36f106703f7795ddfcdb090e5c06329_1619706712729_0.24902465362524429","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.77":{"name":"@balena/jellyfish-sync","version":"6.0.77","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.77","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b69ddc0cf2f7e27b4a34f446bb6aaddac62d0803","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.77.tgz","fileCount":24,"integrity":"sha512-QWMWuBKDal5wDBWED640emhCFfVcIlOw5MiK0ozuKKWHA4CYmqeQOkeqiKSHzGgWsX9N9gjQnLMa4lPPNabeAg==","signatures":[{"sig":"MEUCIQCJ5MpG2BfP0gxm6Bo4nrsJrgwEXRIo+3oE1mMSQBuo/gIgGNezLtlbRKOZe0rJraaRGj+IRTO1qD2AQ/BnqnMwVsw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgisSJCRA9TVsSAnZWagAAyn4P/16YC5T2ArcDAevY+H0O\nDgBSJaxNRTkzS4L7vsb/1R5wZk7cBtf4kuAoQ53vC8Xgh8ci1N0KDg11dD5l\ndE5FOMne3NDCm71Y0BY4LTnxRbRc3mewcENSELbAkqj8y+7uad4RUoUo7pqQ\naU+HKA8krrLW4Auto+oUR9f3wU79/aBUreFSoZMp3cD9o/x3dXyNcBnSnj3r\nFFcZEwMGCZIhlJ1N+hO6uB5p1GSi8ZQVJ2sFKzsh/SelJvFAzTsHAF8MytiH\nukSy8UCGEDQ5/iSkL+HIKuFKdn/0HPp96qpXlEKGC1ZQJohVVrCvtqjVJYxK\nhKcmwIfxlfw2254a93zjutJZ2OHP7itKYMcAKGze17BD4st3kizo7bYGpg4B\nRgL6R2mcVUYK9Fsj2yw99fsHB+AxPa+6O3fUfPPp+2hkef4KyG0OrFk5mYpB\nZsYt52jNVrrtLIbdVwDJNCkFglIQjB1CNAORUEsWsmtnPozNkuQdPNcwfnAX\nkhSA+Ycku77xGnnTJWU64GqtC0uDoIspMz8k4ixC8ADXM1QkA3zCitOmvZfv\nXB0iq25MsQan0CMPh6REAgm0++9RzYbUSgpLwKs8qYG4r9T3M4cQUPfmdwi2\nRUcO43rNjeY5NVDgV+OuNHPPzTNmjhFzRuA6CWheK630MkDEs2V3V7mxA3fV\nLvZk\r\n=6jQq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf56d49a62d05c12e65eb86f1c023c94471f6f3c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.154"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.65"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.77_1619707016914_0.8823760011390265","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.78-renovate-non-major-b00b476484a351bc0485d8d7ea5d876800737a4b":{"name":"@balena/jellyfish-sync","version":"6.0.78-renovate-non-major-b00b476484a351bc0485d8d7ea5d876800737a4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.78-renovate-non-major-b00b476484a351bc0485d8d7ea5d876800737a4b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"614ac1d5782650ddad64465893cbbc5114a80847","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.78-renovate-non-major-b00b476484a351bc0485d8d7ea5d876800737a4b.tgz","fileCount":24,"integrity":"sha512-y0PM/YGxuxfrZnUNzpwh0uNvj5B4zPtVCftcr7P0AXPaJDW+XC6kZtZ3ySmMsY3VFgOhaId6zXIJynx1K7ZeKQ==","signatures":[{"sig":"MEYCIQC85yeaibwYqwB3C9xIKk4g2ET12WDWT1hVJcdxsLeRdQIhALWRR4VmLDc9mqLwlS/xVMLyiBNmoCrfrKjRqt0HqzrN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgitxWCRA9TVsSAnZWagAAL8UP/jcPpn9FTyRn58pSN838\nSLlAp/UAMMtWBETpWIbzRjzYiFAwk+sNfyRxcJtE+CYB013lo5aZ4lATqQ5y\nMYcnYrCpdDekqYnkwH5k93ZDPK0n7XnTQ5HDv0gjZf/DGPodHRfwEX8ynmQ+\nh1Yr+LFltt9GG4UgI02nenN708NO+S5+uimVZhY7Obyxy/5pQ/z8hajBqN1r\ncIAydGH4xdRZGe6zqIGY4BysycevjbsivlSdHbw2UWa4sjLdH7J7fheMEqBj\nrtlEvsIhXECM67WThUl9GkYYL96BylmSq6y5Ovmbls+L/xI/1GtSosGx8ta0\nvUO/uE6l9/A4KiMFdvLLgJNhzyAXenLkFVxN1h3ILOYcZNY9HglH8r09cQ+/\nUfNM+IjAfySNqCA9oY7sXITYh+0qqSWfOMNoFDP0nvVUn7ps/cNy/zZCuwVJ\nm+f2q0UREQ1hdlh/twnTR54nq9tzFtavDtM+amXRJCS/ooCYCHLXHOBr53M8\nbikha7jpycTqNpTyRfvSk60gC3Z4TzjXnJ5aAv7uUt4CLJIArk/mFHdj0R0D\nmOTiuO/mB6LjjxdNgEoRHNkcoE47sO1oRC38R4rn+gDiNC9Oli2cuZDUEISl\nSY5byBB0V+KZ1/vbt368tSCesy8qwdXcEskK4TUhYTwtL2cZjj9WXdWvQhed\ngOFn\r\n=55O2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b00b476484a351bc0485d8d7ea5d876800737a4b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.155"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.65"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.78-renovate-non-major-b00b476484a351bc0485d8d7ea5d876800737a4b_1619713109970_0.6716243916282274","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.78":{"name":"@balena/jellyfish-sync","version":"6.0.78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.78","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d3518c7d0e56a883628ffaa9f1157f98e8e2c26","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.78.tgz","fileCount":24,"integrity":"sha512-xpletO59/5DIoyB/Ogt8UcGfGro3BZ3yQrtwOIi4Hy4o5DlDROM6zwUOt2hWe0mJc/HMBP5/DIhKOb26JcjBaQ==","signatures":[{"sig":"MEQCIB/rnnh8Tjpqw2Sy/2d3n2v5bmUfEBWPPSGGkUVjXxaNAiBPS8EYjqaAkMcyZFyI6l7BA+zIo9Ztve5jiXnNXIW6TA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgit1bCRA9TVsSAnZWagAADGYP/3n2QQ5Qz3syoJZJQzBy\ncSCdc0GArFJeLoGYBLvS0xc+UiJGOZ7xoF3eiONgKedsDE/dJH5B6+j71iRj\n4Ble3nfnZWefqAMTAkwVk5rslttY3xRoLQ7JOPwLMlVSgoZeUVvCeE/HC5Oz\ngDTqqph2N/4rssC1wRXavq+G+tkNDPg1X9u1gJVCrf4PRL/5XIbh+LuQrQ+X\nigadjzU/AY2TRDZf672i9WNx3V3vX+LOYPhVkTbmiwQQL5iV5K628OV50wdf\ntfgEY5V7nZZvlZcWs51O63z40SwCL4b8BgMaALrr+3p4sYHgWlIth3GC0c9C\nwjyY+x3H15xg81+QRFtt/flbna/jPXc8V1em+V1bZwfGxLQK04GIX8yHS/di\n/syvOGcnJJyEtP0BcC/RvmesQUByzlIHR2fIhepBhC7UolpCxQUONcZ6j0qF\nVmKjwBvZPr5E73nLsHhR9C9D7Ry9BNDrrVcHHHIfRYRL3fdBQf8rLChjxjX4\nBt0sstUhoIqGYKzD06VR6V9GKWhxm6Cl/7U0du98a+9GdoUXMBH+ToYFt291\n6OlLf25N4W0InlPh/KSE7w+68yjsi8qDHiVV3h5AjiDXLA7hTJdW/MipmsAU\nqlCKKOnoMshTMl2l9MRSbI/s3xxDN7JVt+nNjsHojza6UKW5Q3BrN3j6WmlU\nYhx6\r\n=cr2m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ba29d0dfb8f519050b23bc88534d432c4c8edc99","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.155"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.65"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.78_1619713370608_0.9581094687378047","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.79-renovate-non-major-ca04523dce267c704cb22512b232d84bc11fa121":{"name":"@balena/jellyfish-sync","version":"6.0.79-renovate-non-major-ca04523dce267c704cb22512b232d84bc11fa121","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.79-renovate-non-major-ca04523dce267c704cb22512b232d84bc11fa121","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"379b51be3e7da6ad4a76f188023378d93123eeaa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.79-renovate-non-major-ca04523dce267c704cb22512b232d84bc11fa121.tgz","fileCount":24,"integrity":"sha512-mHRbQ+IpcZbOovB78LqK+Wc4mNGJ0J4DfSG3owXwYMXe+CXRuWzf4TG6gGa1Zosvsc0nhVbYEKXIaLRJMGxg/g==","signatures":[{"sig":"MEUCIQDSbcu8K1Qi6JWXyKSjX7kG87qLR1Za+ilzRuCAmF0umgIgKLCORnwLx38biGWvmcBEhGOKOIJBTpKsONfnOiRr/34=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgit73CRA9TVsSAnZWagAA8ScP/3Xv3Hpuar7EUO2288i5\nwX2UXkoKrAnYRBM7Td7e3nFIdh5iLXwVGXaOH9r/HpaaXEN4ERJabQr5b4It\nFV6TZzAWyOcfse544AMx6njs7xPxnULwm6tlvsv1zEh2CCZ5ur+g4cvzXTHd\nB9H+z+1IQpmsxgRo3lSrU7tOs8bGhKOwewfMYLNY8v4EcLAQvCJh1mGy0NfM\nDb/2VrBj5gg8lrPNgfRYtSa9HOUY/4DP/YSOjVBAws2U5NmSs4T18wgUZXqG\nwZ1o7LGX+RNBrV0SFFCO9vDY3ImjlRAz+/oiWpary2jR24/Yf/OV9MKLlyD/\nrYOT7a4gPRMJ+cB/kYe8ca4dQoArz4fZRoEVP4tj8NhWTnF8EIOBCE+zwoxs\nNT7/2g+m+8F6ITUa1eqPf9uTgtg3pYA1f1yzslXt+GJI3McwAu+wP5B/PBRf\nuSMa26WzmK1bJ4dqvHZCIfJtUBbPNeZr3lzzkaoFPODENn08TfffEGRz8lWN\n2zC6x1aXLlnAMhlpGkmSMxdTLvjVXRocCWZW39WDWSbEIF85jwR34NxdVFSV\nv7ixZHjtaoJlbhetCQOG4+KZ8MJyXpw8n0tUR/kJzhOekIXdh3OCi7bjDcwT\nVkzm2SryAosvzSGYvUCZDR6NiDziWqGCEvKF3gtw1mflXZfC0uWmH3f4Ee1J\nzx/c\r\n=w2lp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ca04523dce267c704cb22512b232d84bc11fa121","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.155"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.66"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.79-renovate-non-major-ca04523dce267c704cb22512b232d84bc11fa121_1619713782962_0.38186570638903494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.79":{"name":"@balena/jellyfish-sync","version":"6.0.79","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.79","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f426ac3400bc95ea1c0f9158b0e261a62e3c334","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.79.tgz","fileCount":24,"integrity":"sha512-49KWAsFGEWKNzjuPEhbjhLqjqUHltf/JUCXD+U+OR9POWgNbXZaQqMP7ZwkuFOV2HdprC50gAgVep7kcBDWspw==","signatures":[{"sig":"MEUCIHyidd0NmbTjoGW0ez6zARDtmSMt06oZ1KuJwXyQ3D0GAiEAtI3nu4l/L88VqaPgCKj2DHLrgt1C4y+J2RTMWfwm9zc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155216,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiuA3CRA9TVsSAnZWagAAsnYP/0k+nNpC0p+WujRwHa84\nJZ+oCYOVmJmEED7zHa3YE0prJFan2Yydr4gE5v1kqOywu6VxyaQSv5Gd/NQC\nYEu0Spd0NbAnCjBWoBriYBTtpTgVtvytTm5IqHA8VLjNYOgISEdTZ2Fbc3Mw\nrdasX5djKemOCsSviO8UAuJY6ai2bBoDUwLwRDElr5FEGq5+4FXwQWC3+chc\nNsIkiMZqeySHJyXaRAugaBMF3ccTn4fezlcWDyTaKfKRALrOWOqTbhIeG52B\nRhTOjeGsRnHWZYaPFMqD/ppzpDK1kXn4QN4pdtnRMwKRXfG23um7qmaFK7op\nKnBvDazyz81WPY+QB8wlUy+QdrxH1LyeMOs9wyZkIxEADC9QmLO+tcZBJsw6\nWXjrtRotXMIF52xPIM7EMhRkJFo5xEpSKroS+3JXmQRfDA758wHtjO5y7JtX\n5oOMEVjOw5EjPKdzK5ceQEho0fysowqe7ImoONVpses4wJBk0+HzjUKO1W2c\n6WpSEBCn/6NpU7BC1JzEUrEt52jA5gPo58Ch9K0Fmog27sUW8ht9qQSHILSA\nkjfhDEbuEkAOSWx4GR7ik6dsyxgoj/8B1cd4+Hd4rBoksUU7S1c3mK56GjWa\n9k+tl1SMd8WjTJmGGd3vqXdIrIBjoswVA94h94MJRpVXVSI9mJWuzkInMxKN\nTHGe\r\n=YUAm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"382d4c8b06890449a746795f8ecc22155abefdc3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.155"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.66"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.79_1619714102789_0.9035992356489089","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.80-renovate-non-major-a7855cf9973379d037f7a9bc7420d29dd356a0cc":{"name":"@balena/jellyfish-sync","version":"6.0.80-renovate-non-major-a7855cf9973379d037f7a9bc7420d29dd356a0cc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.80-renovate-non-major-a7855cf9973379d037f7a9bc7420d29dd356a0cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e255be98cc297a7c7aa73cb29c36daeea9592ee5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.80-renovate-non-major-a7855cf9973379d037f7a9bc7420d29dd356a0cc.tgz","fileCount":24,"integrity":"sha512-JrxX/jOpKJ5wCXLKg6vBHTinc9mVCCqdVkDnfTFs/g6kdPuKxpk2/wqQ/4UCyU8sA3enTnWiBi+eT0UI9rZfMA==","signatures":[{"sig":"MEYCIQDpGGvu6OeAHC1D3GuMBcUAysvmmIlYcgM/NH/LPsQo1AIhAPYY6hnnIH3jxPzAvt2YdqCGOX5ZuXQFdlM+UzO4YgIz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgivLDCRA9TVsSAnZWagAAh3wP/A0U2eBbTK1yDstMKRoB\naF3h514azmFej2XYlCokCxKvPacOlUXtjD1LhKTyOw4VhdBonQkLL01UT/oI\nEnk+nb6FLonHhgaN3/6mhUWwrn/c2IRQB/3gYtZu0asM1Qc+rxrzu3GpsAmY\naWqMnExVPQYWJQ6+AK2cMNS9OHNIz4+DXiSpLL5TFeKISNXmDfTBdt0J1mW3\nqj4cDVH0k6b950Lk2/xAD72SIHIqDm/MWrj4C8+1cm3gAZ7MKjeoFTNaCoGr\nhsjDeBG165lwuYmVWnWCG/LtpE/ahvbSA2qULAF8Hz7PV8i/sVS7tIGP53La\nt22nl/Ijrsy2jo8+Kp0fjrXVbdpxUc5w8IuN2RlvxQO6TPr2/PPHlVy/WhQ/\noLdaegAWWUOtVqXxdgyLn2L9mZMeLyvqe8iyE1JKTU27N3VEj+ihNXJm15a7\n9kn5mxUqfoa+mel+v8H8gNRu1ygXscPLpHYw7am4dj2T48MBCynHl0NYtLqP\nPG1juEOoZLgGq2BkcarAOaLuvJe5BIU8QQ8PZRao3qHEgFXPTxwB6m+Qae1e\n+S2ofojc0gfZNTyfzl3yKH9bc/++FT13w5vSO7HuBIFF8EyUS5z5ySjdN0+5\nX8aasUlr68SWK6FYajZn0guPwsBL80CiBTMUMOIFbt9uNcfgwERfgjJyTqk3\ntfDF\r\n=a5be\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a7855cf9973379d037f7a9bc7420d29dd356a0cc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.156"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.66"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.80-renovate-non-major-a7855cf9973379d037f7a9bc7420d29dd356a0cc_1619718851001_0.23516264353315397","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.80":{"name":"@balena/jellyfish-sync","version":"6.0.80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.80","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f1ac8e4224f871164c08cb1c7dd3e90e91e30a0f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.80.tgz","fileCount":24,"integrity":"sha512-GzU0hUtZF6ElSAG3FzDcoe5MOvkwV+cqLG6NTanspzvZ2gTkJvaO6gjXpkAO2JtNssdCXg4InToBKjh1vuHCkw==","signatures":[{"sig":"MEUCIFlvvy0a5Ux7RfSPz9gW7z/ZlpzRC+mDsXyu2Nz5/wYuAiEAgQinXNo2M9+rPmezcfC5BRFGWpZT26PjOXj2hJmuWu8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgivO1CRA9TVsSAnZWagAACxEQAJjpkKwa2P6RIUmwgxpi\nTugk/ia2NXz2vlsDNvzfvltR6CNcM3/nKMvyScvyWaPmEycaMbnhB+on9WSM\niH99xVpc/E98IX9ItDXt5KoPSc6ZRgszYjQsRE+aDbeYgRy57mUWgZTVlr3p\nqNx3NsfobKbuKz/vEbBJHcsFZDR5sFycXy3G+7yey5/bKT23QC7fnLVBosZU\nELYQ+Ivzod3k3JL3JA+Q4yza59/1qaLMJcfd2CeqzZm2nKjLcovHJTlflmnu\nuXyEDZoLU+tyMJ8uc84rA5SDyymrTGo/Ybt71lSVvuqhGt9R0ROebUpuaq0r\nlf3CC9Vjp62HXoqE/UrF4wSrefjb71upBR3Z9M12upaJ77x/t3T8RqgvRRjM\nL0540cbsRCbBDav9ISxnYfiWH8Tfgn5nqCHJgVuFIiHUw1NvL+s0IqluTukg\nObJRDaNzggi+Lu48Nd3DpLg0jhEDYCWD356SXWA4Qyz6JM9EOd3VHhMrBwtG\nYr+Dd3GZvOa+PeR7fJ52n1WSEXqF28SCDqF6HzXEFudQHi0nQtyQMDFXQXM2\n/WwEY+zHBXavjIG5zw8iQYqUPvG6DnjvfXQoODh+dbnLIs5k3/DKgD6K0OGk\n8kirpcgFvfm6CKpaE+B8mPoTzBrHVWlWy7HHIFoKYsDa9d/tsO+1QzGvVOGb\nS+v4\r\n=LJwA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6c1f857a5a4e07b8812ca033838b3268f362b3f0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.156"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.66"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.80_1619719092725_0.6550797543946716","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.81-renovate-non-major-1d4a26149e2cc6819857da70212003d2da174cb6":{"name":"@balena/jellyfish-sync","version":"6.0.81-renovate-non-major-1d4a26149e2cc6819857da70212003d2da174cb6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.81-renovate-non-major-1d4a26149e2cc6819857da70212003d2da174cb6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a433586eb7b49b90ff5f1f47e2bbd993c4aea491","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.81-renovate-non-major-1d4a26149e2cc6819857da70212003d2da174cb6.tgz","fileCount":24,"integrity":"sha512-IZcj4Gg/Itgz0pF6iapL9kcbyXFN8FQPj463Jg2Bwb3D7Be6dCNMueRzaEQJvkgAFu8uNyeip75vypV7tNJpzA==","signatures":[{"sig":"MEUCIQCYSOGQcCyJX0CX77LeNRGWYvhoxatBfS/K6+E3R8YC3wIgURnKlOGOrNT+SA0UlUrjw3NZz/VanhDsxQZchXX32vo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155483,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiwTiCRA9TVsSAnZWagAAN3IP/2zGXGY+ks45x4i6TPKC\nC3DffpAXZiCnOGNn0dgl9F2dA+2v+QBu9gSMpKlyxiCTj0CeQ8hjj0FyveDP\nzXozzlRg0CTI07Q6L8rP7gZdZtfQDU7x1c8e9GWRC833jXmtGFfzhQz7Ce2R\nMCQ+FVaq2ctM+aE1B0uazb4PWjVCZMLRX/3zKBVS8MXeLEpAvmM3nGw/a6Lp\nb/eOvHILQRPWM5FdPGln99YSohWv8I0h2m5zyiMpJGhQ+DJURI35vEZPDQuT\nPPgUOoCT0DSHxLoQR0Ysy4gAGTEDttTtdZYCRSSofKra1LdO8Svlb76ujUcN\n8q2jMBX57xrsxm3Yd9UtB1yhAhLjhEQOjHnYtnWX44j4n553oqvS4Xyq2uys\no2n8y0URydOFb2OXnofGrzQfErhhk4o9RHesERsRk/1HHuew0L/o9l+0sshj\nsTM8NbJmpj68icpJTpzvIiVA2qkZSPjlps95xpaLLDaqv4wb5QaXpnMqr8t/\n78UpGv3bMOeT9juTaPLw2PcWbFtSA1psUD4RjTLAC+DC1WWVLcOp40BYQ50O\nkzLDSC0oaaXV+BDM+d9bK0/JxNKIfB6rlcidwhTkiZYrEeSvAM8woPZs3Y0p\nXhx3kQXwaiqbFv+N66fz+sORZEISiCex2tlFQvaFoyQINh1HZFcfyEzXtvSA\nnwW2\r\n=0xvc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1d4a26149e2cc6819857da70212003d2da174cb6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.156"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.67"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.81-renovate-non-major-1d4a26149e2cc6819857da70212003d2da174cb6_1619723489842_0.18466280544864389","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.81":{"name":"@balena/jellyfish-sync","version":"6.0.81","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.81","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4edc7d04a4b2f956e5ea8cc82cc7f32ef48daf31","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.81.tgz","fileCount":24,"integrity":"sha512-uAVKDqrD18RXzB4shSl2sqQjmLz7bnbft+zvENpzPTHv1U9/Gfs7X/s3KoJIhE8X2po6UM1ht6JcCtSGkUw86w==","signatures":[{"sig":"MEUCIQDPVX1QdwHi0HfugUko8R80NHfJhaSRrwCW+LDKDwIp5gIgGw9jyFcU/nwB/KCcw2orXZBGL+kToeVok67oydJ1jrM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiwWeCRA9TVsSAnZWagAA5NEQAKAQBzWDRqvBKUYn7xRb\naEJTa2PV4RC8yyRYUh0NJiQrTKI9MkOtYZvsFOu9ZIVZTuAbqd6Hvwo2Ur6R\n9qUnFTTYwFKRyJjdwRylrV3NEIsmdicUal9Y0KBD68hxwlDHZiByGQCApNRB\nVrgb18r1AjWIWR8ZFBj2xzlbdfLZfHJGXzr6uWVRCc63XEwbnajXheABXQs6\nICYC6hMCwTGbkL9p55MbG6S/xV+JcJuFXPUKLevG+TjPj5w76R1RPaFeAeYa\nK8EU8IMcPQXfZ/MLE77eylACw7ro93q0uBxMgYO2hNFIAtgy2NhJkckStyGv\nG0SMtqk59tu/GYFkY66VK9vcwWBRRJqkrnjEPUwXrKjob3IqeWOqC8j8/2Da\nNm9H5TJcv7HfLGrpvVbx4O5VgjumxtYPidwk9uzfxdVgduZQ5kf/pVPKTvwm\nYPx1qTZwnZi75YV2l5CKtPVip8EOgpUt9nj0pzYyUwAPq2fUvfJV84/RKctu\ni3laEe2Fjd6igAF73SZPlKUIN7rrPYlXZxSkF4FypSVDh931vf4GZ9snmAIe\n+1odK/IXx7jPCLM3JdC/kTCB1LDKTeGgXG6Wsu/qNZi+HTpx/Ep+gtOTHN+j\nQHYhN+bgVfhb8G3RLyhmT+J7SJwFtUbD7Un/zrrYDGtVM9l0dcWOkppleW3D\nhd2Q\r\n=XFgX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fed9c0d4771e335b7d9f96a042469ebc786c288b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.156"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.67"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.81_1619723678305_0.4724460753272335","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.82-renovate-non-major-854c5226e28fb34b04757b167afe9cc9f1e1bcea":{"name":"@balena/jellyfish-sync","version":"6.0.82-renovate-non-major-854c5226e28fb34b04757b167afe9cc9f1e1bcea","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.82-renovate-non-major-854c5226e28fb34b04757b167afe9cc9f1e1bcea","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef872629b1176de527eaae7792457764f14e0cd2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.82-renovate-non-major-854c5226e28fb34b04757b167afe9cc9f1e1bcea.tgz","fileCount":24,"integrity":"sha512-UguyoZyqTdr/fJRjvniLpChcl8c9FRxV4ivP7Fmp7V6rj7Vg7/rvxj/ZijwQVuiK1Jvit9tsCizL38Fur1OZcw==","signatures":[{"sig":"MEUCIQDNaaUNxwfvbcXJEEwPNxbr8ixZNxYmibw/0lU863ZNMgIgA1CLmUhxZp7x167EMe/djIFTvpyC8lbgepetGeQJ4f0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiyJMCRA9TVsSAnZWagAAmP0P/RsQxDfXdP3rim6ykx8d\nsHtVoYaDxMO0pNnOCxoHbdzmYH2QnU20mgRcDUZnSKfvVmkV+0vFrWKQV3W2\nQPg/edoda701TimKak/2I8piYEGpFalI8E2dMysFtMA44LI3Stg6inhZIHkX\nQRvYStsnZYyN4y9dvb2J/N8rlWxzC5Y5F9Pr8qt7TWWZjI9M5fhYIKfR+LTR\nARSX8S7b+fwpJoYhmRSBugkHpxzJ3Ku/2lLVfyK/9waTFx6s/6j0uMfoHmnn\np+FLyRkI4aZWZ3EcCCy5377uAofcqx0EgAx+6F3X3jS0IJxpHw2X2khPmbaa\nP0Q/oQdWIlNAaCMt+JhYYE79t5Pqg7l+a7QIsgFKA4jSr71cUG3sPMfTjT11\n+6qztGf6IQdQVmeuJ1We3qe2kPPSZjTXYTrW9wVqBTMD/EWWUJNC2dzzdjuu\ncL/Jm2IdWLjBd0HoeA+2yAMtFWIxOvcUvOw8IG1mTELz4GeKSvfi5gXGwLLD\nSasnfwgoMmTd/0AtLnmOGlkEnysHQuaZqwmbuvXAe0OHjJTBU6+LnyCRqpO0\nG0VCQ01Nc5sfxEakcYyJpGx2CDoc9ltBlDQHSDSRHS584shi0reqpznnLcEv\naJZjS8rC3Vkr1sMwtjDtwgs/s3ZCRwBuRxqMZ5lsqjKD+2FbE8vfbyhxQUGs\nQzR6\r\n=zWEj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"854c5226e28fb34b04757b167afe9cc9f1e1bcea","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.158"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.68"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.82-renovate-non-major-854c5226e28fb34b04757b167afe9cc9f1e1bcea_1619731020178_0.8655187964886439","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.82":{"name":"@balena/jellyfish-sync","version":"6.0.82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.82","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b6c404ff5fa0c3d9ea1d65a99ebc0fa5990ca8f8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.82.tgz","fileCount":24,"integrity":"sha512-Q2F3XaYZM+5inPKmunT3seT1jqYg4P/B1nFPNs7KpzK0WYwvpep4Lo1dEU4BEeTaAf4sjsGVZP3c+SN5wHPtKw==","signatures":[{"sig":"MEQCIDjwcBKVxVmMemzA1AtHbTLYwk4WhJZU5Snac2aSQMvBAiAkGik9moIiAfc0RE5lVEDpX/NPzveAuessLxFUacqTxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgiyNVCRA9TVsSAnZWagAA668P/1DLgFTCrq9fTNz8MGpP\nTtIdtjhYvkmIkm+1D4Q244RwHjaxVNeo1AD2OXKB0gYOQlyAHT0BhCzPdUU4\nkl+pwDm+HdrPO783ar+lUxWj+OR9V0AaZxqtV2GJ0rfJYhvc/66gwZtt9BAi\nc/KzxXbnYJXXJNlCKpc5oEVbGvdSoM0D0HouN9Ivv+mZ8pWDtFgX8Sre16ll\nyMpUCF5/pLp9R9p4ueT/vW5eLgsn4ZdyloK7ecxh1QIh+Ygn1sZvbW3uqR1Z\n4t6l+odWayimTpciZ4j8yLtbl2OgfESO309cgV3y/uENunDd5b52oo6/hdJS\noavFUgEblc1ckla1/aAlHt/IjgMPGftt89cI8ZTQZ6kw17V4fYQ0mIEc3mgl\nH+IzEiK4V44HQAxsex+JuTnWrMbl+jCEolfPOxMVxOqAlGHZ9dPIrD+Tr20Q\nrBEXcyIMtYOIM+50FVTYXscOAX033AnQR8e71QeJKR61GcTcrYH3fIkTxFX1\nfm/4NNbrcbJVLLZ/6wJ51lcPm+7W68O3CLQGAUtz8X54GFRdo9zbQHMSXHMS\nKAnHtY0rHB65ThXZYE0o3t5l7iYAqtlMuzvh84g/seRS2uLznx8WP+NZQKXG\nak3TCDRhDhosnT0+WEG7kSM0ZdvqXhZR0GNb2GljHlQnmTq4sIha4UXVQw9N\nt0jd\r\n=VKxW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6af181285e0db6a85fc6cfe4cecd7ad2971d057b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.158"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.68"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.82_1619731285242_0.5375750912467698","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.83-renovate-non-major-c4f0e616e649d802eb790fca10482638ca04b302":{"name":"@balena/jellyfish-sync","version":"6.0.83-renovate-non-major-c4f0e616e649d802eb790fca10482638ca04b302","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.83-renovate-non-major-c4f0e616e649d802eb790fca10482638ca04b302","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1806231eb1a08cc76bd830888052ca76816c6c89","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.83-renovate-non-major-c4f0e616e649d802eb790fca10482638ca04b302.tgz","fileCount":24,"integrity":"sha512-ovfkar4lIK4KosYvUaJtO65S5MkJx6faVY3QtJzOE7xaHiFB4bpC5T4rm3gbEWMdz8biECwsrD6iGMIGB1j4vA==","signatures":[{"sig":"MEUCIHacE0Of3o+O6/xaVSBkbrcyl1oHKqye6xz4K/B3ZDVtAiEA6c6tRySSP0JDomigIrEE9TCYFvFN0AEmrW29xkbKTo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi1ewCRA9TVsSAnZWagAAvWMQAJpnBkKOtszjihHkMIPy\ngG4zyweDLDK5KWjXsTgtTo9bDeHkPrbZKl6j55UkVH6XjaXR0vTlBedPJn/j\n6nANtPAh/VDoUZr0Ex9ghjbEp9BrK5iHIVD55RZvKh0id9/OTi1T7ElW2fiH\neOod/ssR5RhosqPa0cR3ew91pa+QfJFnTEVkYRUyoKPg1D7aPMlZPU+IdchW\nCpKJ5JhPf33+vJFG7BJiueT1DTwQeMaksejhZn4twEFJvXB8Pcm2TkEnfbkk\nfPWBDdb4LrMsfk59zcvZK6Lp20Zfy7XvVgtLAW0tDhg6qGMN8VxhxFk2tBiF\nc+cDynfE3L8TgBYj04x+vq0j+VDq2Dkutiq//U3PE/W5PacaZvC2eKdF5O6O\njlcK76jT7tzF18zWaU4exs9AwpGw9MRKRDFQ8kRU8fp3+JtE0jSoJBiegsc3\n1B+7Pp3XomL/LvQeuc1orOFODxsK8XyPjDI6Sj8JEv/uF3VlP4gl9EOswblw\nnEboGkarDxkost/cdwQPws8WGyL74aasRkQSfhed3wAziSSLufqNNtUJLDaP\njGAGRT12bhvY7K23iKP33lUFjirg6YrQW3mW2uoLiX3w4xWw9TspCzQKY82u\nfgWZGVK1tKRbDEAZu8yP0Dei2pXN1yDNZ9goQK+6ODcHyWJxP3pkIJR/gTl1\nlKdX\r\n=IL2f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c4f0e616e649d802eb790fca10482638ca04b302","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.158"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.69"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.83-renovate-non-major-c4f0e616e649d802eb790fca10482638ca04b302_1619744687908_0.9570711957794871","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.83":{"name":"@balena/jellyfish-sync","version":"6.0.83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.83","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b8c97c64a36b177205dad2bc905fff8f9fa7013","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.83.tgz","fileCount":24,"integrity":"sha512-L9inPgcfrqZxpWoJ93S4ExKlY0FG2sCAH7s/ydURNMawlf2PbnQLfL9TPC1NVgAjYHUQHfAE0ta8H6k0x/XzOg==","signatures":[{"sig":"MEUCIFRIZLb2H2sz+UNNuwu9cubrjn/1peqbspI/pPXICzh8AiEA/+DzLIzqgp37SJJn0GR+oV0z+yPEayHSNhB+2cqxqNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi1iECRA9TVsSAnZWagAANqMP/A1FtQwYqT5w/GXGkXlf\n35cX6CSPYgbv0OiRLiHnccs/RaGWxBnKRCmjfRCm/vwqV2c3zJ0jGxNmX8+1\nhLxL5IupyfnmRWpxLPqDQhSiIwgLh5hkf5MK6NI+RCYAk6hQXP7HjYPO45Qq\nO3p7UXzEsAZgbdrKHIbCcDmdsHLK6At+KMoURITYKyUz/RLaynpWVqduoViX\nDaxKuuRnlkWHa++SNPRoFbraHUwWBXa0oGQY4zUNHPe7+uXQ5aLjFS1O9dn3\ndby1WOdR+BVe+Ncz7JrS3ig5AZS4xpbacBh0jhKv9BBlAAjNxVNMmP3cVq6Q\n8GVbjDQWTCmcFHcuUBfe9OvMwCoOLvu1UzQsYMTd+ATxivB/1QMAtcGWX6WX\nS+uBl/ZLP9enEfuJFun7qWF/74odzZ5WR32sqbz049GBgn8osdkWoljuzi5a\nAsSYNapLNro+sMgcVpEGms+VZkR7C1i1YTcG9fH/jWcqiXQxeroMVYpseg03\nq17rc8fSCnUpPLsvfHRqWmudJqt8cl7j/Hr0LeXxC8+0zRvyX4LAkBC2kYI8\nexqT/G/jmks0NKg9KKIkRsve+Hf/qSkFsvaEa4LPu3X/QdCErWWmJzDyw2MH\nEv41SmiYUqLWLdnJ+uBhAEEmBuCP9J4CwLsUrLYhylztB/nhK8T3tobnerla\nwjfG\r\n=+ia4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7e4e3cd586d63a6e24ff1eae36561b34e77ae467","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.158"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.69"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.83_1619744900271_0.09638131461511135","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.84-renovate-non-major-cd53940df99c2924df400c9c1ad44c273df8c350":{"name":"@balena/jellyfish-sync","version":"6.0.84-renovate-non-major-cd53940df99c2924df400c9c1ad44c273df8c350","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.84-renovate-non-major-cd53940df99c2924df400c9c1ad44c273df8c350","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"664e9d202fc85fb35ac658aaf0e0c9c5ce2b5fa5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.84-renovate-non-major-cd53940df99c2924df400c9c1ad44c273df8c350.tgz","fileCount":24,"integrity":"sha512-djfXoMOwya+QrxbZEDGQVMN25xvacgQPaHo3eq9kQEFMm7lV9pYJad8UKn/QAa4I6vYfk3bctJ8UImbV9h0atA==","signatures":[{"sig":"MEQCIGczBFFQyBbwWjRm+vAOHMmOogiEbyI3wMXp9gDQrhesAiAJaxE66IFXDE11x5DOzwtrTmpiBc38Pz9J8Z6i+MDMpA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155753,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi2VECRA9TVsSAnZWagAAbcsP/ixQzuoSfJVR/5lu98c9\njFEsuAF58wxGJfx2mV34TjGkcPdq2QHNBLkCHxwv4rbxftTSzGfOIGiQeZx2\nAa3rI3xq54JZDRikk4a8tI5CIoED73zjmVZsl0Z/Z+TlxGXs49durT5b/GTj\nMt7Nf02xWlNX6dNEPezkV8x4XKRzmwDYb3lvPfSE1XthlxjZ4icMn9bFdSgv\n5p8oWqwq5TYFQMdDArxkDqXK7ZME2ZN4NemedIKlqfzQDY2blnxyl9HhoRqr\nVqU1qpFg88adLIfHWtNNQVOKPq03wKUIDM+Qc6mB5Nj/saeLtfxyEBZ9jO57\nFNvntFXCXtzMHYuvJa84Asn9H8MsljUwztu4jIu/15qGynmLhgH8NBbYn8Tk\n90wMMqiPaQfJ58ju9/tggsvq/ap4dp8WHEWbhOz1Ee9H7U1lIvmvhZZEXyhu\na0HS59JbHnJv3x6l+7MsqFieMPdzDeUpMjmNgGxpyPAhxA3EWSZ3qnSamy56\npXRGq8lYXGRmyUCKdvkZ48z6uBDvqN2hX+JYdZnr3nxSVFoXcAJssvrHjL8q\nOf5gdZ3ytCb1gB6TIoB4WqsAZiboUVw3SHoO7fm3k/lIV5VLb4mUlvqb6OMJ\ntD42mxWdBvAHPjjO3PsRBsRA1KBZB0GEirpY9+0hz7wurS6v/51q0JAdUT2C\nC0HQ\r\n=Z83l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cd53940df99c2924df400c9c1ad44c273df8c350","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.158"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.70"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.84-renovate-non-major-cd53940df99c2924df400c9c1ad44c273df8c350_1619748164396_0.46330050363576736","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.84":{"name":"@balena/jellyfish-sync","version":"6.0.84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"575767314228e295846f427af8b8e5742e14d75c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.84.tgz","fileCount":24,"integrity":"sha512-D3zZV5mlfmYIdHkyaEeh0Ffu3H+fztVP28w2dIHXzEdSlbF13ShLEbNFe63zRHQEph+l5Xq1Q5mwTd+yVlrRpw==","signatures":[{"sig":"MEYCIQCzeumL4SRaQocH4KiaHNH3+ke0JnYfggEFC6GggYiLWAIhAL8CnTx9O+M3aTLtraUqRorrO3aDxIb4CZ1AgV9++2R5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155693,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi2YSCRA9TVsSAnZWagAAQYgQAJ2kkFl/N+3OSiLtTT5D\nUpo6nb8jjFMu5NxMSWbTdam5eUqqF8AhcmCgFF/oDm9gargtDWiCEfDeXMRl\nQ5zhNv38tYIvYkH/iS/uO/0fnITSaq5MK1aOOasoEv3mC6MkyvqB0gyA8pP8\nw0CZqrA7gNvkwqNuPIc3YSz1v1GZemfoeuJly8wXCTDFOLBYAr+Job1jZaGN\nhbBzErCBlJ06iJwpnJoy4pi0qY/MoCzU6kbMj7ZTHcU5YFGZJ6ypQrMdpnGT\npyz+qXP3RXa/48nOl7089rrtzOc8+iOE0aohM7LjbWkKyzHuXxO6L6xYnI78\nVmtH7Px0dUbJczkQQwcCLntLDa/YbnqUF+cAXB8fF2WwQjeTgYDZVQYS398u\neudRPq1wVJ09W85eZd7+wJo3soPmHKOs8VKXEGvrSYpA0VID22rkzPN0xex7\n3ydDswCLj35bVi+0ikAOTj8LR73FW7DMKDwvfJI43Fmi0HeJ4Lzoey1RWRG3\n6FitTHdMaDz94jurwbrbPSgs3oE3+MQAp2k+6YIl3ug2pSiVZyWmT1kyN/Q/\nc4hbOAeAVWZXwtHCSN8H1gRRyskBYKGblzUb+UeJytGvlzG0T6+FtGlVzMR5\nQP43g1kpC14OA6gRrdCmpmu7IXE+VNuomBFYoLyYhWm0jB56ItcbutLxH5v0\n8sKk\r\n=N0vi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"33b85f0b1bcbceca9de853ced8c9571834b3e9a6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.158"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.70"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.84_1619748370446_0.25277652720158716","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.85-renovate-non-major-e0049cb394bcd21dc8181a1201ba21aea360c744":{"name":"@balena/jellyfish-sync","version":"6.0.85-renovate-non-major-e0049cb394bcd21dc8181a1201ba21aea360c744","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.85-renovate-non-major-e0049cb394bcd21dc8181a1201ba21aea360c744","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"098376b9dbc5da7985ab51807c4ade35c7f4767f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.85-renovate-non-major-e0049cb394bcd21dc8181a1201ba21aea360c744.tgz","fileCount":24,"integrity":"sha512-wMAY2y1jSeKN0yJg77jhNyGcX0pdrsB+Q5sT9IBNS/xy2M1qbndf7Aj3+Cnr0fS/zSWVAYeRBfmM/NhsG0Mvbw==","signatures":[{"sig":"MEQCH3sJ4ghCRTTgi5W8KK/BM0/2rXVbNUSubCx7kHwDl/4CIQDJfmPgbKFZ5H3Nkf9TygUb7xtNGR2hEWEoUtEmIVZBcg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155819,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi3hLCRA9TVsSAnZWagAAxHwQAKRazRrJznUesptWjqn6\ncozRya/ti2xDEqyMxs7cNrMLYAFrplXVnrqbDEDRAlBSm+QFxRlrXwm+ilPx\nXZssrAKuB6CLfRs6BSbR2au/Mj4gS2Ed2yVSKyHLOHjkO//JLAQMJUBvlQp2\n3yvubvOUzNbiDrsN5F2BR0VFEcnMfrTlFO9i5zUgsQlFYiMcfFJ2MMhUNvVh\nxQEcsF4OU4Rplk4+Uz0rMVIzBNJUHM4FZKW42GHc9z2Ry0Mnv9yxCUWPW4r9\nB9oZVZwsDReWSAK1JiziWYXwnr3JimjUm2cQstSvxBMrg58OcEEDf8VbA92o\nqdXDQLpmje4ZdHwxS2apla16xdtKTL1E9p0qMRa9l5f/d37LlpqbEayEYJn9\nRFyPT0xmoIa+3zCHKDP6PWr9qCczNXH8CxyDc9s5X4repIIdY+TS5KksTEUW\new9jJYUGEzViu2S292h/R3kHYDTpW/jNSOWyfJv17m5DoqWxB+cubUKJXCxX\nsI21PfzTjVGbcLmtUQIdF6niQABzYx8AgXngP37g0/S8sLy41aYp81sOhFV0\nDD1Ba5CUJHFQn2cNq5QOgjG1fd2RwadPLiBKMJh4k4i1/jhge3SvOlgKqLRL\nEEc81bPVC9zTfI/NvH2/dIlcd1oSdNqaoF13u5bT5SEo+wmvQEZzNgzsc6y/\nf2iD\r\n=vdz2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e0049cb394bcd21dc8181a1201ba21aea360c744","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.159"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.71"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.85-renovate-non-major-e0049cb394bcd21dc8181a1201ba21aea360c744_1619753035274_0.20544711831344364","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.85":{"name":"@balena/jellyfish-sync","version":"6.0.85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de93a1f6f6f6ffaacd9d914dcd758468fe9bf165","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.85.tgz","fileCount":24,"integrity":"sha512-jtkwZX+qxX6q+Fc6nh+yVTyrcj4ygfWnzXI3A8an07keDVYDT3v/fsD8EDuZwraciiC4axMXSDz/DRE+tZ7BaQ==","signatures":[{"sig":"MEUCIQDxoJN0OZOmjpW6ts/juXNdPRiX9G762ePeOTcZnozZQQIgN1nY0nBISSrqtO4ukm0MBAvt2VY3uyeMlxD0fZggaFY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi3kQCRA9TVsSAnZWagAAY8EP/3oLPveq6zqoKymWU+3X\nU0JEB4jcbvRW3pjxQaE6IbjydtKawG9i7/vbsGFwerLqNiYbagFZ016qwCwf\nUgYGuSTI/SYLvpLdyWjYC+lZZ67MrpIdWQcLQm6hQAynDdAd3txK2yTTApe2\nOtU2HQFxLzT2Qj/noKaA1WO9vp/LYKGbLAvfSL0OngP/5AyXRDVGwodb/W1e\nD2Gc0h0/bTIzP+Lsjwg5GSgmhkhNflZXRnX5cIc10d1wRVWg0bTM5JU09fxX\nHFxpv2FheVdIEQ1gSBgB9+QVga7C7A6MSltQ15/PCgDbK/6yhssT+lwCSGb/\nnWtGZaECI4815dMlhGnKL/enJXfpsi/TihylOXbZ1HopTYXwAJ74iKx6GWot\n+K4E7vjwQvvZIdfdNPBxineVZwt9z8e+X02Gn9agaV6jfGyE0HTEEt88G1Il\nPmaGOd/NCFb5Qas4N8uw9biR5aKW6BnyUmjiWuEYi7RFsIYkj2X3AfuJJTEA\n7xKveHQaUrOASDhrLBDYeFC2uMkyK+jllP1R7Py++hSay/oVuLRXUTgRlCVl\nd2poxS/lR0Xalnh+03j5GB1k2H4fU0TaHdGmv7REHzuciqT83TcpbHu0ay/i\nqi/wa1I/sPY1XSb6b3Cn19wYDsFg7LazhHYzD0QyVnzLyi+sGQ+fl0t2IO09\nQYcF\r\n=+Qeq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"af2cd5e45f2eccf50ae1742c823c93df18a3fba9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.159"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.71"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.85_1619753232304_0.9964886811168956","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.86-renovate-non-major-d68a95e955ecf84681d59b1e1cae400becdcfbbc":{"name":"@balena/jellyfish-sync","version":"6.0.86-renovate-non-major-d68a95e955ecf84681d59b1e1cae400becdcfbbc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.86-renovate-non-major-d68a95e955ecf84681d59b1e1cae400becdcfbbc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a06bd9fbdf917fa036a0964e57eb67a616bc8e06","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.86-renovate-non-major-d68a95e955ecf84681d59b1e1cae400becdcfbbc.tgz","fileCount":24,"integrity":"sha512-NH1nxReFSYV1tX+ykmMIWfemCGy9fV3qwgFDQTsBjLjf5thRzKOd/7cMfkUmwl4y+C4KK2+GZXj6Qn1DYAh7NQ==","signatures":[{"sig":"MEUCIQCiOjhC6SQK4gemqazyEhaQ74SmRpTy56ECBGvEI0JLnAIgExENIE5CXVrqF3w43f6klc/ALbCqYFZzhGaUWzoRLag=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi5QCCRA9TVsSAnZWagAAw9EP/iVqBmz7YGprh4gCc5jF\nZsPtQJ2OHrMRzvbjvtwiBXc1miWqa1SpLrhIzoTRrfTWKo7V2K7evVs8gefn\nXRMQbW2v5u/Y7p+q5ftJ3YKOaDWD2FJUEUgR//qLRM158Y5z/cAqnGmZlVi1\nCrPNgVcZQe3KPFirCVFVBa31RtkPbMhSJrgLaOoF2nQbBRpbo53yQnFhLlpv\nRfbaifghqi4OEARHrHBYEL9vEWbLZtFIWCio8haMTjzIwNdCHTcVCnrIAz9N\nDKPgDgskPJ5VdgKHVOsRLXeoxwRbzan5wmBbJsql90IKtU43IR1Dyn99O2l9\nstKeaxS8Rwgd4bcFY4MebQ7gLuX/aez4/amh16YH4YCxh71pSvZFd8EUm/I2\ngR76MKnioqy18tUX7f1KSBDoxxnl63GdMXsexZKvqdwuRRXZeZXBWpIQQLBh\n0yJJ4Z1kcOFudKPlA9tKAoBVWVvy7gV2h8RuXc1ftChwjLQdEt4Op1jB5DWv\nO1PbDupKFIu0qnwCCeJSDp1+Vyranv8pb/X1IKysH/5ZOKy5LImbZe4fewUs\n8QPLIMsZOtdT0Uu1PZNR3kPWS9lYtVHXSdpSGixfdTXUuwRnWVrbEEdLbiIS\nCMvw5QvGFkB7fcFsYdVKlSdwKAqJFtrYxiuACvOnN954PplkelmLP5MAPROW\nKd+b\r\n=RrGJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d68a95e955ecf84681d59b1e1cae400becdcfbbc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.160"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.71"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.86-renovate-non-major-d68a95e955ecf84681d59b1e1cae400becdcfbbc_1619760129737_0.8063749966482758","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.86-renovate-non-major-4bfd580c5fe1dc647f0889423f0f760adfb4979f":{"name":"@balena/jellyfish-sync","version":"6.0.86-renovate-non-major-4bfd580c5fe1dc647f0889423f0f760adfb4979f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.86-renovate-non-major-4bfd580c5fe1dc647f0889423f0f760adfb4979f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68524e65cf533be82199ed7d7134ce1e7ec6fc15","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.86-renovate-non-major-4bfd580c5fe1dc647f0889423f0f760adfb4979f.tgz","fileCount":24,"integrity":"sha512-G8rJ090Tm3P1Q7pW0nJJJPfNakUzq6gS8HDplCpxavegmpKUKxYiRq/GPRljUXoPsRzmA1mIb5MsvxiHzNsMrQ==","signatures":[{"sig":"MEUCIQCv4Z49/e7ZrXPMskTOcQTiSEFvu5+6vpLAy3CQQyGZCwIgEyf8sHKMPqIHDVLe2HaoVGDrqWbE+J95nAB55bnGU0w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155885,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi5VICRA9TVsSAnZWagAASHcP/iFxaGoO4ARXuv+QOoQx\nseE2E8LW1k2KxoyhyDAAp4A6pv7Et5hsbeN+LLC/yGTp9x3qNDRszp2zspq/\njfhVW5RkOwRaYMmHosVcMZ8W+V85lJd0POUPlbyjGgMsPjlN1usjRt9qmBjd\n207mLHN8laJAPMmKeSd1H6LoIi19vFNO94s/hW0nzyDNAUSwo1K4pBVMqghe\n3bMjjVsk4gg3XflgIQJdwuZQPfBcKTe6jA9+YMEZk4D/MuJPtf0RP+hcK4Cr\niUb7yDX/Q52pxg3EHT1+dZu9+2wXs3CTFIZybYNV5JHnBrkSIEx1D280/EJ7\n2+cWJjG97BAU+nrmsqVHPDzVYGa/9IBEYUDfYxUCwblKpDtEBaxu7EvU4dG4\nhZkXpBDXvv8/85BYZaX4MLgBshVizlFmXeyiTwGZprNkYoCGj6PJ8RJJ57LY\ngHQeJ7BIeYR/rtLeu/f1Rw068s8O9KfwfPhBeWlfDAuXGzVFhCrSq0uouerF\noR/yzeorcs44+WbaK4zrrBFy8q1soORQSti9/xiSFq2tebdd4Y3aWHPuruI5\n9Nxtg9AC+yA9GTBjp14UJwnsoVFGlRQ9cyw6Jtu0u4PiwCDaRUkrx01OOkxK\n3pLlWQlwKrSeFFG4RDA7Ste/bsesZctQvTy59KdvfiEENAoCLO0seYRMFpf/\nc+A1\r\n=uet9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4bfd580c5fe1dc647f0889423f0f760adfb4979f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.160"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.72"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.86-renovate-non-major-4bfd580c5fe1dc647f0889423f0f760adfb4979f_1619760456258_0.5792270696445798","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.86":{"name":"@balena/jellyfish-sync","version":"6.0.86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.86","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eede293556d8293421f25ced79bc51c0b49cd4c5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.86.tgz","fileCount":24,"integrity":"sha512-p3nNdRIYckW/83QeF57vGyGOvVeRmdU+9egvdYaOaq5051FbMhfgpGukmsm680gyY/itV+f1yM+SIBVO5nU0wA==","signatures":[{"sig":"MEYCIQD/Xr1hpsx5YIMpVDCHncm5OR0OaG17ZjdASsfUu1i4ZgIhAN+V0IhunbKiRyxOQl5lKPzHz+tyJDT59oF419Ii3svc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgi5ZOCRA9TVsSAnZWagAANKkP+gLkP//qrCG4/0FYjzEF\njLrPsgrKgwBx4fzOpY9mjbXPPczxB1BoqjA9UORWnYInzgEGVuXHAd8VdDdw\nv9OUztIidqyKaj3kMu6kh0oyfqE2wAXSpOZQvycJgcT3b5xSqSgoX/Xva/kq\nMsaPqnSiUWo4yxwPsz4BcGBN89rQF7D94fVz2v+6ZdRy/zqDu5e9w3BXltJG\nGPGI0EpzmBU7gdo7NQalbx5hEInJRlz7gVEpwV3q09mu+50aB9R3OWSxfqjU\nUz33rkS40UmpCLFtzq4J1arF8QCVcXH3hUUPAxm6BFKrNootV3j5U6OwL/ky\nWSO2Qr1zs7KlNMvoa/zsf4y6gW3aaUBzMJ+MeBostN0Zp6SJcStmxehO3szR\n83vudVjsu4KHJ4MPmhreHcGKp9iZFmT5JHWMR1AVPGLnYHCXJujo7xQzRtUM\n1O7fHGw4qETNum8Oi9wSqXSgZxn+B+Wziujl6aiEIkWvRQ0xKfZh3uBu5LUz\nVfPPmyUcVurgHPcUGIeCXCBdoDwFzfp8MCKyZfGAxjyY/OwqYzhEQ2WuqgqN\naC08j5cSR1imJMDA1hM1c4fVUWhi1oayGSzhptSX21A9AjQVvqDI2K+4lSnq\nNKIGlmrcP0LQkAa0/FFYzs4viIYvxmptt55oPFvO9nk0G2BzKJZv9CDNUf7A\nTpow\r\n=yhEr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1288be3e801eda546e2c96d9eca87a57078ecb7a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.39","@balena/jellyfish-metrics":"^1.0.160"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.72"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.86_1619760717560_0.42265305056081703","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.87-renovate-non-major-cff4558c7efc6e410be60893f94fd73ef085fc29":{"name":"@balena/jellyfish-sync","version":"6.0.87-renovate-non-major-cff4558c7efc6e410be60893f94fd73ef085fc29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.87-renovate-non-major-cff4558c7efc6e410be60893f94fd73ef085fc29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"84f26f76704850b14529ad1f1fd18ed4092cd3d8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.87-renovate-non-major-cff4558c7efc6e410be60893f94fd73ef085fc29.tgz","fileCount":24,"integrity":"sha512-5ZdMeBYb2hKZUilPgRF1YrnNtWH+w5gcE1w1/XRNiSHQ0r0H+/HTJ3PEHVadBnn9mfcPXNs6wMXWImEooGcp5A==","signatures":[{"sig":"MEUCICZNsQwaZCBu+GoUI1MXY8NWfNU0LJC1NV+8SSKsMkc7AiEAjwP78I1iS81uTjnmzz+ONeadI9z1Sys7H6inY/R8WNU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155951,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjDVwCRA9TVsSAnZWagAAsQ8P/3zEtGTlgtTvvygB85Mu\nJ9xZzM/bP2lzHC7lgygrS1m1Y5sBh+YZpvsDlTSq7YQtQ18yHjTwKyp2QlAw\n+HsDNo+wT17tBVhovllJIimJuHRWOSOUT9JYbJmr28lljZQqrLnCKD8cBEkK\nHZdfa5KS6R8W9mntGqaKB31rBCXoki+HLNp7mF6NkNA772U95VqpysRZwOHw\nKVzOdoam4eKJvU7ZfAH2A1y3nadXloB9ra1kDzUaX3zdlKOOZN4HiZs5I7+o\nN14Ri2bcY25jq48FJUa8o1zDrcLyBko1LjiBVzB/UnrYQHuAZ+ElvquOU4WV\nMo9Uv2BCxx+lPCBwGBy9d9WE4VB5f1/cjLWL/wC9ZbrPD9B9hRmL3UlXK1Ug\nFRllMTmWgGkDLBscqKLJH91luEBuqwSA7AsFiga/NAGw1bNsP+20SuwLEq7F\nFiSKmnarI3mq8/DxlqlaBOLJH+PcwQxo8c8a7+xdP2J61xGMfy1kAdB+hRO0\nTlbHbVS8Rh2MMGObOArFpZwOjcC+tZZpuOAWQPG58rG0CS7yjg9Mt8vjqIpp\nJk6ukBcCvMrnWYpteN+VHzN9H6zl+L9M/e4I/or6thuUYhNGtNXjPF+wouQw\nZ02+relycscodQw1hx7/XvMIPW9D+FFxKfFLqFkJYy/7cAcp/98G1hPh4nIA\n7R2l\r\n=yEQG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cff4558c7efc6e410be60893f94fd73ef085fc29","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.161"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.72"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.87-renovate-non-major-cff4558c7efc6e410be60893f94fd73ef085fc29_1619801455946_0.28488757794917574","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.87":{"name":"@balena/jellyfish-sync","version":"6.0.87","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.87","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f049fdbf91f92630dc1b0be9f73c7552ac57f9b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.87.tgz","fileCount":24,"integrity":"sha512-4hewJYQMAuOQcHm19TiG024f24bqXaJu9ru6idwqjPAAU5B8clN5B/l8g+79TLmzOIemctMc7bs9Wwn5B1xeiw==","signatures":[{"sig":"MEYCIQCXvwf2/0ODQtyvqIBnwkQOh/N62eAbzcJvqFd0HiY3RAIhAP1zgX4E4q9qpPXuqYQ3Ja1NM+mq7OKj8ubofk4ZFdls","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjDZnCRA9TVsSAnZWagAA1F0P/1sYGVyNKulc+2grJTeR\n0XVRngX7KaKxx+CTC+KDAk+74tDUrWjd+QfCgjvgOgyXO09MygksIwT62+Id\nRvZv6b9M9/sivs1bYf6wafQTCk0FUlkp3jYrOSL+VHsoQdqIEeusautJhc7D\nNanoXQCUg7X9nkNyxUIrWeBGngJ2rVsE7kWha+JZUuM95rKP+4vlbj9anJHc\ne826cDV/v/0lXs07oxycwozu8N38D7lr1aZ8/vZzTrahg5TNRbPUvb4aKBG/\nZ6AIUarx9681TmtndtTKtLqb9md8lfcossZz8I4Bpx/7eLc0/YyDAf60/AWJ\nAxw9dDiC9O+jJXHlwQwkSJdTMcRkGpTGqdUdy41JJrHsbjq1PHjODOjLB8ql\npkEG+JP+jGMHvvyahNhScwa/Zyzi5qUqE5mUIWjWfR8An9vIJ9xVohK6GGeg\nRGqi37XVsF+iOK5Orsn+3ZEiqrBUVHKw9PeVo5JMJqcWfIdgZBG8kWUvBFP1\n3xZpXPKEGhIjwxh0tWdRvNev2xQgpGAgIYyXYjtcOFvuFcOCYJMsHdClqGb6\nFDnN+9S/5+tfLU2wIjl9XyvYSz3AFJKMqYI5RpP8rB2YLrAgIxPA5DKKiDlz\npxOvs45qKhyA2hBLoApneuNRSc852e0vWAv1B6z5iWe+am8Is9Ohezb/JyLU\neGHW\r\n=XE5g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c7e5ba952b6eec651c89406a20d80840d72711b3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.161"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.72"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.87_1619801703248_0.4185420681120964","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.88-renovate-non-major-0d1fe867bb24f79ba1d2ec674b6d48e729632e76":{"name":"@balena/jellyfish-sync","version":"6.0.88-renovate-non-major-0d1fe867bb24f79ba1d2ec674b6d48e729632e76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.88-renovate-non-major-0d1fe867bb24f79ba1d2ec674b6d48e729632e76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"402805017b9d40a50f7124c99a20bed930ad0376","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.88-renovate-non-major-0d1fe867bb24f79ba1d2ec674b6d48e729632e76.tgz","fileCount":24,"integrity":"sha512-SZSZubvV7Qa0DHyUqjFIeqnM3P8Vmtq/m75fMvGXnkH0rsakD3Jg34OmGcOZCzJr8w9gpQBQnPfdN/3k0SlAhg==","signatures":[{"sig":"MEUCIHTn+6YzNNir0lupqBAehHUN9ybypIj0UureksAoJ2EVAiEArYO0/yp58RUorL3K1Lv73lYbv91ZymlUvT06XiX93TE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjE2gCRA9TVsSAnZWagAA//IQAJiOWoT0H17BUoar0ruD\nZrdNV7ir6UHr3GILcBlx0L+hPm0UhDUPJsF7zqvO9VydFCzjjSPO6RftmK49\nTKBN3OJpvHH/RyCnZDuRUi6Gg0WoOajy9trdepqBNgS9K6q2qA7CGEt07/OO\nNfaMnqiuz8bR7NmM62SYSkVtObVEeV3nSh9aWjoqYxN8XyIfDHvI2M+zzBm2\n9ck+8qJekelAJ7ok8hCc6XBgrCU81OKWUxH2kJl8+Bxlu6u+dpzslWMxTRLO\n3b8glAUlfBc6X4TPbg2ovKU18R9aOr1QaoiKKzAIfurCcMKElKwa+4UU6fws\niPORM/Ei/hZPlVXBMvC2DrcV9u44smsY/KdHqMe3JtGbFQ+EUgaCX6QbY573\njFWTOIZbV3Thy/OsL2ExYBr6Xl5dDjTHSpxCUxmfR4X4biHtQGA99E+5S98U\nuDLfTbb9prGNkbCfaDb5kYNiyTkUoRmc2KQ9/xUqLV7t36kDQFKl++CFFSXs\nhoMG2CQhk8mT/MYj6VvAmvi5gHbRe21wziJdzMqysi3iTcxuwWhm7gYYdvVh\nJ21em26rciS5yS7NEKk6AdgAyiuXv1mVfGr+Qwon05+l8VDrvgnS9Gr1dHMD\n4xTbKJ5Qa/ucl3hZY2BExR+CIiYS1FAyR7Mt/OLjkdHIOHdmtboWkj6k94IH\nrB5p\r\n=syf7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d1fe867bb24f79ba1d2ec674b6d48e729632e76","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.162"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.72"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.88-renovate-non-major-0d1fe867bb24f79ba1d2ec674b6d48e729632e76_1619807648159_0.6912208449671264","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.88":{"name":"@balena/jellyfish-sync","version":"6.0.88","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.88","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e25490b0f278f246220400a5b672200590f3081c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.88.tgz","fileCount":24,"integrity":"sha512-OsCkOQbbKejg2FiEURTA69f2qwuVP+AurmqR8QH15Z4ul8PSYtZ4zCtLnw/OSDyH2VK5/J9K8Gh+TwC3A+QxRg==","signatures":[{"sig":"MEYCIQCtO8txx9Zzu6Vg/iDwgD9kiSuUizJ5aZJ2b/PsjAB/MgIhAPCteLz3dxRdb1Z2UJwnJ9hGc76ksZ8ANgIgnn867tx7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":155996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjE7yCRA9TVsSAnZWagAAGzAP/3NJxn+c6YKR70LNxXtB\nY9GA93lxTa7azZIW1uOF7yn4TlzTfzHTs5H41WmrqqYaMrVRGFji2bcN9tsO\ndZK6njSGhjevDFmCiPNbKiDe8n0GXvvRP865xJCX/8nLaPtrhQkAHdWFTen9\nHS/yLiLnlOAEWbijhC38+PhGPPRr8YATJddBmlddwapaam0xtW6/yuwnScdg\naoM3OiDLmwkuHJxyGMvPtfZdatFT7ZyL3Fdx7ndYdOAXe0pQSXQEwzPfcTlx\n2X3ZnmR/G5FxD7x5qSX4aYU4tyj+glIFRnrvRTGqRa3yxBt7WHtdbLwmdBZj\npGTBlg6pgYqu6iY3Gf+oTvzWBnqSX4jefni+Fm5xbswVrhYGM078HVjCoId5\n1E9M7/dU466AlN8Wk6HUeDwzqPM3WJuO5EbiuFvpN9oyqZo3kqs4ssCyREmB\nPbkiiLJ7+ymjDccrStwqsGNGRDHyFy0rbKFnz51YEI91AJzeokyhhO7HpJ4S\nP24ueznIL2kZqF8qO/cPmEaI+Ie9Bi4NEtYQkO7eQ+WgJzImBj2BgxEx9Mw7\nqIJhD6K1xXeBM2rkqqBnv54H2x3DoP8CDpaYOG/Nwu1ligGwpSOwd5scFqu6\nebO70nXvVsjMZFdCWKM7cxMfiK3wQfSvorBqpgo08/fVwvXz1qTMHjnLfqnu\nri6/\r\n=nMHg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"29562fc310eb6975de322c5cf9d03402393c1dd7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.162"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.72"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.88_1619807985800_0.18989133603645203","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.89-renovate-non-major-3449c659c981aae1b2987c7acd4888d94fe63443":{"name":"@balena/jellyfish-sync","version":"6.0.89-renovate-non-major-3449c659c981aae1b2987c7acd4888d94fe63443","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.89-renovate-non-major-3449c659c981aae1b2987c7acd4888d94fe63443","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c409c3b94c5c2535a284c66d8cac3c30c2cbf3a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.89-renovate-non-major-3449c659c981aae1b2987c7acd4888d94fe63443.tgz","fileCount":24,"integrity":"sha512-pOq/JDxOy5mh2XM12l5XUPdo+YpV5E4dHechmag/33AA970bTdFQgK8YetbSyzP512ckmJVGnqr6gxpdCAEMyw==","signatures":[{"sig":"MEQCIB9mOolTCJpvlIp2izgY/1MqHdOGh9CljKEf/nSHQrX2AiA3/tgK2fTzZGlv+0RwIKf2ZEqlhtYEalDDTs5KyzyhBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156158,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjKThCRA9TVsSAnZWagAAqtUQAI/qWUUPOiqBjOrDlMDT\nhjRt3eF6gQsxxumbNhwz54TQ5FK0a+NM4zfhKBsqpKTZmbOAJserDKBvaCQ0\nak1PUb+WrDQI94h0MX4sHosOQ1SmJ+KQ0s0Lwg4Xbj3KT2RYDJbMkcKVN+QS\nZXpGN0KKNEiWuRdSzcolWYdwjzhkxfAamExucwhGFTrNiGE0+LqwY7TbGk0I\nL+2ywsrAxGCS0A8HYCV7RYvkZbNycMwvb0fEPXHf3aZUTo4NNo+t+YzpkzYm\ngT1Er+lcN10FakTR1uy22d56PQ66k5HD6mXyJjCaPAvqxcz6BRk749frh4oO\n7mnMX3Cn9Vvj/vdDky5v+wT2xrpF1PwoVg/b7adNyC4oZRMN618HwFhL+6Iw\nh+vPk0mqBPZHAGRW644NuKVKYQ6+LlrmErWdkMpcI0iw/wfJP+aO/K5GKS7H\nVab9JNe5S3KWMutVVhHR8mAy2GB7E40zEGmh0IE6oVLzNLYbkKzgm53V40FD\n3+gcvgT1K6nuU//kQ8quspK819NKJuYNLvE5FJN4f/2tewICUAu1BtVutTRr\n/zzMuT0lmuFWD7BaLaZ+EQCZKP/vTRXr7v0kFw+NA/oDcNNQgUzzm75PLvGF\nmmOkRVFdueOyu1VK91U/rL7dI3o5x/V2dnmawNoVqw9uLdehx287KXWwg5N0\nUbT0\r\n=Xdl4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3449c659c981aae1b2987c7acd4888d94fe63443","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.162"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.73"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.89-renovate-non-major-3449c659c981aae1b2987c7acd4888d94fe63443_1619829985221_0.06704767575886339","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.89":{"name":"@balena/jellyfish-sync","version":"6.0.89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d87de035c52c7a0c0b45c5e29c709d851195f0f4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.89.tgz","fileCount":24,"integrity":"sha512-0v1u6+lafLVSB3e6KWJttI0F+AC0n0z//lElrcm4E2fNjynRNj727t7xvq5DHW/AFPAwqzHRndaaxHDW6L2jwQ==","signatures":[{"sig":"MEUCIQDhsUNUdcaMhnji9wF9y/nv1H2gw+b5Nng8IYrl1m635wIgUM4B6abgGyR7DM8oqie+Q6RLxlczc6QrUQuxGlkf4Qo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156098,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjKWwCRA9TVsSAnZWagAA+ewP/RvgK7hmCS3vu9G7zpHq\nVOsIerYh88+5nksx9zlcu6OVPymIQl6s5ybGGtH3rLyZNSuralAoDebAULLh\naPOVxyNV11V7k+b6zzOn/pWunfkvaLzK0UclyXpjYSCSF7Bze7hjx2guUfU4\nlJiidpW4EV6zYcRFdbvzhcw5kEoXSUUvi0tNepExpe0x5MpeiLM8a9WEiKJg\ntxqdiebjNSYDJdOO8arDNaBXUTrcmUsQQokZ2qLhlfV/TyAsFZFACZFM5wfE\niiAt+Ca2lrlfaikQexuGMMqeTo31wK1I3Itr10IvVXB5q5KbI+niH1wR4WZX\nhtnulhH6LU8CkxYY40JpNeYlt41SuKZ3RT8aGXEUnnAJvBbNu7aKO4k3jqsQ\nKBuGA9dgz8z+ZT4hFsY3N2xBNIPxJJXIo/T6SwuGpjdzNuzOjV9oVDJSjjBE\nDCn1QAi+yOe2me4+F2SeihStx/Y0E6zjIrbbKrGG8k5CqPQMz2aOcwpVsGwD\nHgv8qowvPShKYXoTzBhdb9C6DN9LVYLEravOiiFjoe2o6N8g/f1g11zjIK2C\nkZsRrR/aFkUkrJowDNgy1PxU4/GXozyEOHOcLV5E5C7NM6HgPllg4WX2ApBh\nIqUfXd/qAYro3zteQB3JD8tF9fOe3WQh1HXp2LCNqr3tuBQav8K62GUwD9TN\nrKq3\r\n=OLga\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"12240075cbe14af5a81d0576ba3403f25dee8594","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.162"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.73"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.89_1619830192018_0.40483738928860546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.90-renovate-non-major-bed6e57c7fece33726b542b63df2b088fbbc0c66":{"name":"@balena/jellyfish-sync","version":"6.0.90-renovate-non-major-bed6e57c7fece33726b542b63df2b088fbbc0c66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.90-renovate-non-major-bed6e57c7fece33726b542b63df2b088fbbc0c66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f4205b1c911fce8817c37cf7d79250144bc9c75","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.90-renovate-non-major-bed6e57c7fece33726b542b63df2b088fbbc0c66.tgz","fileCount":24,"integrity":"sha512-9vt6wlvzOFyEMzma41PL7LbEEa/R1mhzR8Yma3dJ5iuGtDIrhFOivv1RMcwjO9OB3jf1Y0ST5a7/K633pGSj6g==","signatures":[{"sig":"MEYCIQDwPUSUNKLGL+9nbx69ixf61wW32wYR3d7RJkvHiKXrwAIhAK/l9fVA75jnR31N6RnnYDoiMjw+DatnHvRiawId2OeM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjMeXCRA9TVsSAnZWagAAFg4P/jOUAlC6pFSiumB5R7Yz\nGfX2jzLV8JG7nse0iHKQDy7ExoblPekv8b2weSUQ70dy7bLpPgpAFhOne1XR\nIQ9jFtqiWmMfRcgUTEbiE0bS3W1iVKsUKG85qjSKQr5p0eNZMYo0P5niEbge\n9XruaSgtJfQD+bDCGychYdGYBqn1P3r6i2/23oKtVDcaeilZ443Q9M42gSf0\n3WoTzo1qCMKsIXIuFuaCno36/SiQkgAXcPgp1uQzia9C442y82MQ2HpMVkNZ\nVeKabSa5rHRYn1CQWaLUCS/LmZj4BLlwA4xfZwFBx0LBzGlD0ZQN3pFYtzqi\n6PDW1DPeu0tilEdqiS4eI/2IT6U0i2SRB8ITrF8yU9X7aPgu35qWuJBDVOUQ\nRg8SVgS1znFIdzmN2yWZpZ21U5dZgf4wdi0KAoI9vbDn4c7e9gpMwcTrKJsJ\n/0v4PEWpTZ75bEFF8rpdvFHvwNpZ3HNoskjNMUqDpqxsPEb5L5McUco0ZjGA\nVCPDMpPqZGOAqOR99tOGiaWlwIARAjmKy19xfA17ifq/tE/ie+3Bb5vPl3OI\n8yJp3Ii7QyA40dUA4Gxx3fHK5lk4kkWYEpqPrtN8UAdxodYh9Jn6otMcQ/OV\ncTEphG6m35vfgrjtPbg113D42pBAqCI/djUAl2CjTOXLkXk82JoEKGxIFQwK\nSKHn\r\n=h7KA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bed6e57c7fece33726b542b63df2b088fbbc0c66","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.163"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.74"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.90-renovate-non-major-bed6e57c7fece33726b542b63df2b088fbbc0c66_1619838870940_0.3447393982683724","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.90":{"name":"@balena/jellyfish-sync","version":"6.0.90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.90","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"58dace48897425f849f30af9aa8f5c45d2608b9e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.90.tgz","fileCount":24,"integrity":"sha512-tQtyjZ2m2Hte7iSOCubJ/sZIPeqJtKzAI3q0rGbXdWxA00KyddPiCi0PF57JfazRP9nr/f98VeKb8AbzWY6nEg==","signatures":[{"sig":"MEQCIDzWZPW6Fwmyid+KdN1VKFEVs/cf0+R3kyh+TYko4NdjAiBV7xvjTPNjQvAjIe68C688dXJYBcKC9ZWbiPbJ+M0nkg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjMhnCRA9TVsSAnZWagAAGuEP/RNtNeV67iefAWpAHoan\n3gQzF+/zxAXiP/9fIcRkQ9U+nt2W78Z19c5JuLbkbEBi1iGstjMHkV8W3Xv5\nclDGDS5cm3PtZ4xAmzKcRBSQMFepdKOJOtoCulfiH3ymp+oR/a7G0wNiPNda\nNh1goT6pnwB4bP2BuJj20lAzSB4DiCubL3HS0iATkvNLeULPSNbFLBnVOWuD\ngmobhbPvhwsS+ZXn/V01S+/FDSW+AnqPLq/E5vLs924S2ku9lX+NSlOuuhlx\nBP94aLxChev6sN95nICkoT/M4JadtOwbMgB7mnTp2JxvaJx5N3F7VtPt7Rke\nyc2lUQjwddfXXLZOyht4f4N5bl6Aird5uxp0XLca/Dxa4k72dTIJa8LDe4Kq\n15Hl8KxrQ4mK7GzjTaZijcwdKQGxdWWgjuOuT4cD8KGQu/3UUK454iNosJBI\n7PtqchZlpiEBvWKGqkh/GLrA8hJ7Q3pw4YUVzghVCOTYfaoB6JyaI6Qah3Qm\nFsqR1sTjrYfearQAW2Iy6MQcF4h55X4zvsE6oyXRPXFeKHnjo3PHlmX4bazF\nEScNipDyj+1PFFvYI6AIGwQHAh8Fbz9ECuuN64y5aVHMw3OGfwtBD5UhOc5L\n3y58sf2+nRjMdRQ6/Zhbb2BPns8EwFQQPbdIYX+vNYGjiijFQuDezRNKauSs\nqUyb\r\n=BLL2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aea7df80499cb289aec4481018854d25b033c5d9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.163"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.74"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.90_1619839078915_0.9904172476788857","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.91-renovate-non-major-f5df843499644e8c2dc1e2225834f319f4e63469":{"name":"@balena/jellyfish-sync","version":"6.0.91-renovate-non-major-f5df843499644e8c2dc1e2225834f319f4e63469","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.91-renovate-non-major-f5df843499644e8c2dc1e2225834f319f4e63469","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de8e025f6ce741104b49c89e6d304bdef23b1718","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.91-renovate-non-major-f5df843499644e8c2dc1e2225834f319f4e63469.tgz","fileCount":24,"integrity":"sha512-MRXJnUmkN3zodxH0s5SndPBpDaF/md608fEi8aQDnO4WkTjxghwuDQQ3jJBbG3c8kEYBqsoS6JZ2pQkfAxprJw==","signatures":[{"sig":"MEQCIBhO19laPui9t8OxvqzdI4Q+xTR6aQEtmEJMOsWelr9LAiA6h1rkXFRIE76pi7ABwH3bBtmCf1YENTjwt/SydKOx5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjOu/CRA9TVsSAnZWagAAauIP/R1B/XkouGmyvDONpaQp\ndAhTlisIAvyKJxut87bu8pfDz1TKXklTaLjjG475D1wQBJBHnW+WiKzlyQV5\n2zK6RHl87zKDKBuqsavBOZ9ZSW+V9MQhPMhbcFDDEdEywSOaStdyV+vCEwDS\n1lDvhoB7imr+7qhwYOstrf8wCgQw4hoDSk0E2hTIEL1skhSH3ZBjOU0rQM9o\nooMCA9MwDit2pBM8wjqCcev7IGc3cTjxStTsdWsBph2yL8FQMqQnJE8woCE9\n8Ayabc44vuOQKIm2BnbzlszUv2EilFbHYS4W1ZhHVB199xSi1Wp7NpQEKrhk\nYO2DeL8oXTcuDQtpcy1JH0Eb+Dd3X9aTq7nRK1hPmtNT43Yo8olNG8s5Atqh\nkPcLHDCppPMbDl/JxCUZf9ObIsb9C3lYKYEmHJPpVgZkgni9rLNeE+Me+bOo\n17TURYmbavaoA2Xz2ANT+hNXjbj7Cvjs6ajImJ4poGwA6ccQqRheoQ2T5jte\nZ0EzBd0eCgeR9LLiICXp1JlqNao/iUotjwsPImb5JA8Hf9uHDizBjRRCrdiL\n8ZvF/MzjiadD9hwwAJXvA377ZryOEmSgIou0ITNA67li7dcLl9Lz0UnowOCW\nCBDgxUM8OKEBsQ9MUCiLkSpo9aX0GD3ilmBNISa9UYPdxdccaLCf83R1Nqvv\nMXMS\r\n=6rpK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f5df843499644e8c2dc1e2225834f319f4e63469","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.164"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.75"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.91-renovate-non-major-f5df843499644e8c2dc1e2225834f319f4e63469_1619848127349_0.6110463942909301","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.91":{"name":"@balena/jellyfish-sync","version":"6.0.91","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.91","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ac22e36556641d25654ab60d2c61a1935df4c81c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.91.tgz","fileCount":24,"integrity":"sha512-QHTXvVJj8eNzaC8t2scCAiq8+uWnj4yGqFOQcSoS+jzwCXfmIYxeXN+nxtMdl0kJQUXm3esA7vXjYP/OChRlZw==","signatures":[{"sig":"MEYCIQCGqhvVXfCT7acfGfwDTVaL8ikMPBm7c280RcLvp2SNtgIhALo1wvy+zm1+glTIxniYFf5yw182bSB8imbVh7fwYT/3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjOyrCRA9TVsSAnZWagAAeucP/jkgYVgZe1Q4Q27s1gnE\n0VTqNn8EbVco4qYJUa2rYcR2DvnmdpjyrBsExjM/yj0zyHT69n2R20Q6Ln7Y\nzi7TL2xCWm3Y4IkUl03JPXKWkyuyhoeTCUeeR1P7wxRdcLOyn1Ndesc6LoMJ\ntHJ/aVM6r+cnFey+q6L0OTHq6+h3OSR71F3PtJPDubHlmwVwMX1L3VcsplAG\nlTjjk5Qgq6M9HZBjbAEI68YRmtZeEVbbIVVCdEoLD5d574lAlUqqA47vd+vw\nEsa4Tfz7Kv81o+Ub9TCC+3gLkj6+aiwOES5c2szPLtqKefFJskGkKHZRlv7t\nIzTsdnSkT0a4wiC+adj/M5s7gEX0brahkOrcQY5M5obhIADX0yuDaWsq+z+K\njxrx6FFEdWS4Np+c1hawVpKP5G2oRzwtqwU1Kgx6IMH6LNZ2a3hiq2NjWJkP\njLuNDLTEdtLehPAkyWAWkAyHrcI+cvjxlwM1NxE6d32P6QP/9Up8JURGk/61\nt58bGovu4WudVS7jTcZ95+mJ0YxOzVvff7m+P5sVX9d4cADpo4TC0WLA5auj\nTSNEu3mCgTOlGc+4kXeM4duIIJYAujHXLR7BetpuK0s9YAHQesb5OfZyRbfT\n/vy5mfpyggnMA+Loq8a6BrdKVqXXgDivnyPF+TTfIVhp8ICntvHw/hzW/JbL\nXZFa\r\n=yuL/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7c4c7e2c4928c68a6eeba5af3c9cc53b63fd40af","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.164"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.75"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.91_1619848362762_0.2919143267278552","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.92-renovate-non-major-a9a9a477f1c368c4922b098b51029b7d1247f950":{"name":"@balena/jellyfish-sync","version":"6.0.92-renovate-non-major-a9a9a477f1c368c4922b098b51029b7d1247f950","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.92-renovate-non-major-a9a9a477f1c368c4922b098b51029b7d1247f950","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b20d1ed0117e59b5e7aaa856620a916d38280be1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.92-renovate-non-major-a9a9a477f1c368c4922b098b51029b7d1247f950.tgz","fileCount":24,"integrity":"sha512-bGVqkbXBtj5Hr1Pq9kCAPqUiK9sigAbBCmCTAg1bmD/IA9bCAZ7KHhvzqkSsXZCkbRGqh5Gnj0/Kt/wbKSfmyw==","signatures":[{"sig":"MEUCIQCR+fFwzSK3yMowwgzHqTAbVvWztdg+/c2q2K9qOwPSrwIgMdP5pXZL6U2uEj6wbVyIJ434VsqD/w6QJ2k4SzeakzM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjRxXCRA9TVsSAnZWagAArp4P/ivHR8czRHkkQjb3mPYv\nHMcvDUXQEoxshFpNMpbOPGCqqgTFmG62YpFG9SUIY3+5hJkgtGilZGq/gyOU\ncBHB7O3eD+JPkhBpPrD0aeMioVSrS9OKjosf8y135Gy1eFwiOXzLVW0y65Vp\nSnDb7l1sEPLw1Pdt7BbjLlPRrFZoFr+72Z+LMiQ+BTCrTH8MqSfS5Iyn+1up\nCIG4f8V9YLK+RiikePFjsEHusb40Rifdz0xg26CnymPSli5znfoA9T/uaWb9\nqhwlcU8+iAJA7+jTGwBox0RIMCADnajF0+BJftOsxoFQC6ytBsv7JRwJSZYv\nHNARMIdZeWledp6myg2QXANg6xDNn93VOPEGzXIdf93tSvuBOO4o3OgQALQ+\nKd/pvv39B21Rn/GbTukSgHTtAPEO6o4WBxdt28OIBAvfqP/F0MNCV6S+EmmO\nJCAUamK/z0SS6EzILR/f+odoTeHSSx0WKR9nFJIgV60g9cX4FFjA/LZ+qkRI\naXcmlKHy89ONWNU30xJZtg0a2kXkFGOcjj6cKmtJukWHKB6/8sdQVfiYzNCW\nXhyrWEdXb0xgkpYgjTPAtqmPl0F86I44jxw7/2CMkFIoqL449MexUuaPOQN+\nWlTEY6/gYj9ivAh71MrXk11VJ0uCk6SvFWsz62IHiIzoRFDHnrexm/NL3CGj\nS1RN\r\n=kNJU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a9a9a477f1c368c4922b098b51029b7d1247f950","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.165"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.75"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.92-renovate-non-major-a9a9a477f1c368c4922b098b51029b7d1247f950_1619860566751_0.35161523717882215","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.92":{"name":"@balena/jellyfish-sync","version":"6.0.92","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.92","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61f11cd15b63666f25a7cfaaad743e7a18ced169","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.92.tgz","fileCount":24,"integrity":"sha512-TUjEHj/gq5subn3F21alPJw8ilOAFDIaFbcnJKCo2oxyt3Ex+tx8QokTULBK2vMtJQjTTBvBmwm1gq3ysttVow==","signatures":[{"sig":"MEUCIQC1Xdswi23o1IwU6DlB/icCW3j5a5dwHYEwFrDHPIrInAIgUAwPYqwK6oyIPCOtO/TZ2rdM3lNjg+8sZoKYRTQGj8c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156335,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjR0uCRA9TVsSAnZWagAA11YP/iSgEJgbd9bSAPrUG+SB\nijmV2a5ktpBdYm+AY2eO5EHBucHOfbmfysNfo5XH+69UFbS4JMtFXWqxMsK0\ngZqhaor+MbXHiOCYxJqPwf2j73pCEdv4L8SzsBwdvwW3ubTkHwOccns8Ssre\ndN0QHVtPuO/F2LK5k2pAd0TYDahjD9bc7Qlognhc7DtJoNWsKU2MfyXk5a5M\nH9XTqW+Bnph7w5sDkJmefN3dSPHq/xalppujunCn2JK7wiOnJ/EKfvkjaoNP\ndpBvRfHY7VznqGG4i8Ki8+FROnCrwuXiGJmHiyjD67zXbucjoDqYegli9dQV\nU97lkpl66D2D+ReU4jJCUAGMI0+DlDTnv7uIRjHLL4/37CCo6LHfkWst7GM3\nb+F/oBpdFndVJY4Q8J5YSQ2trSIl8KVA20GKJJyrBUerR9nyM7QPXQkFW8h8\nacRWLONfKVQw2reLdI7E7qcF1W9umgI1yrWmpah1Yc/Ga1uP7ofFWkOyrcES\ncADWrQrkJEEwMkabs2z6ONrgayatlzKMc0zx2GZ/Ljk4QZtajjLlEGDqlLfs\nz03q0nDT/T6msD6ZGRG+A0aq4cVHR1tDShn0Kf2rCJNioRioV1b54JmOyy5v\nhzYJV7EkEEtQXb1ZdTc1fCth72pAU3O07Q+pWs/I3MAo+YWaLSCnBaaMZsYe\nd/C1\r\n=vZVm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"156195eafea18ef15a95ad5c56b0957cb091bb06","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.165"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.75"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.92_1619860782334_0.6443545189139892","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.93-renovate-non-major-770889efa6f6b4a8671d2cb5d4a46f1f908f4f42":{"name":"@balena/jellyfish-sync","version":"6.0.93-renovate-non-major-770889efa6f6b4a8671d2cb5d4a46f1f908f4f42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.93-renovate-non-major-770889efa6f6b4a8671d2cb5d4a46f1f908f4f42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a23e920db1e4b5461ee19321fce14ea3f479aab2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.93-renovate-non-major-770889efa6f6b4a8671d2cb5d4a46f1f908f4f42.tgz","fileCount":24,"integrity":"sha512-maXol8GjrLcMGeejq4YmCtJhAbC5A+9gDoWKOF6pa33RQ1aLsQaWavo5vXtc8VcF+/Ym9tF0P1lxSa/vTrEasg==","signatures":[{"sig":"MEUCIEVueYgtfdVRCUH31PftnCjSFaMH9Op3ZyWq31r0JCGFAiEA7fIFIUse30ZykpoaKx1nXiz3JNiTSx+nnL61dZRa928=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjT9bCRA9TVsSAnZWagAA4F8P/j6OX5gO9NtZcMH3/SKd\nhr8E/iB0H7bSqUfI0LjgDU1W4vN1LE4AaBw6PvZDJoFxlvGRLZES+KiNqEYF\nYc73OYTbZDldJeMSJ1c8z2rOAZWd4R+bIEYDwlQX37KYH610d/waUhVJnHk6\ngWz3Fur1aXfl88+33aok4yCztqx6DrfkJKtzuDYaWHuIVRGUBXRUsGKG7IR0\ngiSbrIqB94J6lRpEEB7HODpvPiex4fbfpV9jBgNayTFArW/K0mAkFb91xbZT\nSC3AF1DAcnBdvH1lxcFbDO8oQjqrN1ZjbYuu63i6IFn+6P8wU6/vzLHdPRJa\n5ncJ93tFrh5UVMIgSztneZd3pYKtp8A/TCNxWwkBEtgbl+3+/isb24bRJaIf\nVFqXa9BF2RMIVDzDUTRMgkTtcJ5c69OBx8KhEbmWd3rLlWJzdyjTYaTaFtKj\nV1t8uCW4qz7ambL0VFQPzDqyAp8A/QivqatSytg/RilFo2sbvxYXOj9ojxIV\nhfCCjB/6DzzGHqITy80vUlS+8JSVtcJqFbh6EXoyBpxJMJGS91J6LRED2MBa\nF3vJmPrndMJkq8C2TL2Oo/vT6irxHAgXN08PdgtpFeZW3dYGFhxYEhJNZLX8\na1uSTHwy0Rs8Zf7s/zkbtkXDxAUrW9z4JMSLad63kA1SRGgUFrRVy8sWkImN\nH+xi\r\n=gsrf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"770889efa6f6b4a8671d2cb5d4a46f1f908f4f42","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.165"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.76"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.93-renovate-non-major-770889efa6f6b4a8671d2cb5d4a46f1f908f4f42_1619869531311_0.2258215376765098","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.93":{"name":"@balena/jellyfish-sync","version":"6.0.93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.93","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bd02f9788b3d47ef68c1e12bbab562f25b6ab72a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.93.tgz","fileCount":24,"integrity":"sha512-nAI+bEY6gO/80p/TOBkoqvi5nKRflQbm7gBdcN/4LPWm44edES0eGkLeqCZJDcjPmxt4fG/gbPr6vWOP5G49Cg==","signatures":[{"sig":"MEQCIA9ZupqDbHE58ElR8R88iZQCkrsR1u8XYDH0MTGz5e59AiAWywQnFGpnQd8oh94F6MDs9iGS8f/kag9N9R7bk/RFTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjUBCCRA9TVsSAnZWagAABBkP/1c0pKM8pMVpdvS1WCqV\n/JB17EpDym3jZ4X30pI5QTUPYmHKFTR9L0qrKo10Bfjk9rhyuvl19rezSZRC\n6UJqfBBXitRpNWohvOhOxPAJrOfK2wnNf/WtlkrwZDf5Ur33V+un+q59CGhY\nCDvDS/QWytifU+hZ05HBhnqSpf3xrUTvgfIPyhB4BhP1+VLvHOMiPASS1foQ\nigsYNIQV+KDHn2bwyD+pxy2VVF9BY4GckDmBQPDKKt3oIeyWEoOVLcVd5bML\nQ/Fhm3Es1LYW2j6yxGpbf6veLpzzlnTDshR9pfQ8iXQ04rwxwEt7BbPq94lI\nT7zrb9Jua1ocBnjIfB95JiBrgHQCNQ2LuNlnTjLqmayPtceQY2p+2k8F2bKu\nVGkxWM2gxenQhU3+Kpyy+XYZOJPa/f8Ohsa/KdeMKOelvsasDE+tKeq2DXqr\nOBJIsM0qHpOQ9coPVEsKcxUCLtqNk0K704c3SG072JZYKx33hxPeGj4GWSU9\nTxFXIuNEemHtTslcC0BByKJFzxU0OLaDnQ2z1IF/DJ4ZIN98JLEkgoB4XCDS\nRekF67rWge0NU6EbE6Dt98xnM3eOUtJSkz7asn8uTI9SJQo69xxnr/1RM+w+\nZRfek4b6bFd8kZUv1ghtGvYjyHWlU9mYciT+/AmaspW2GBtYHFjnQME6k9Jw\nWINY\r\n=kin0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b174ca2948b3fad667fc718e3fd26e9439f5d00e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.165"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.76"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.93_1619869761716_0.796146574230481","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.94-renovate-non-major-27da05678ea0350ceb138e2eb92614126ff7b1f9":{"name":"@balena/jellyfish-sync","version":"6.0.94-renovate-non-major-27da05678ea0350ceb138e2eb92614126ff7b1f9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.94-renovate-non-major-27da05678ea0350ceb138e2eb92614126ff7b1f9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"98814fbb6f65e989d1bd6432128ba6ab1c45b4f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.94-renovate-non-major-27da05678ea0350ceb138e2eb92614126ff7b1f9.tgz","fileCount":24,"integrity":"sha512-Y0JnQ/gN0N3SSqJ8iQ5iCdjzqnhgME++wlwCspADRAR2wuXaFDGfOphBPtmty75X689YivZckeMK6Gr8Cxot7A==","signatures":[{"sig":"MEUCIQCBKEHAtEVs92eqkMX3tK5S05M6eVFIvIsEdim5g0SkMwIgNH4yTND9EZZ+WPRwj+t4yiSZdLr3IAGiJBd8Pz8YmYs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjVTaCRA9TVsSAnZWagAAzLgP/0z1+uxRj1chY9eyi+2Z\nsrsMu8buiPlJsmwPQcbZ2Acs4O7pqNobgA1r44ezrIm/0tg3AqUftnlLRcpR\nA57g4UJCSllzgUKqvYP5UqMadkJMEKamxSrTpsjqUY/v3Bj7jcrH2b2foIJb\nr5ePQPFgabNUkFB1sCF2Z7YazQnVWUXp/SXqEX2CtaB5bupYx4kMF7yTMBqr\n5jxkkHB0eSQhPObtCkjfoNy0DwxaEqK7c1NlfXU7OLVtvSsOCrctV+/aVV/G\npvQKiLgTMKVgdBIORD4UurAxyU0umfxHuzJyPTOUDN07VO3m0yI+CxuXdbYQ\nnI1BQl+DAu0vyF85SJe4SXlKjjYCBQLxKfTB2qq6luZj1yX0qfls6sIBrUry\nLQtGjOctHIM/1zMzVtYivIhG2idGT3BvXQ84IUjYfojS7uepfETSegdhrff/\n2s5q+1PdnC3mNg5L17Fgql0Y7wviKJouFnEjB32k+GZS8MDp22So+eZwtUhk\nc4SL3QObjkS6sK4RefvgoMIwYU+e0MZY9pWBNZYvxEKMED0dUASOhjlR879Z\n48oF6icVi2Pl+WpMpsbq/+3JOQjTvX2fAOK5urkWn7sx85Q6S7s6/R0c3k1W\nZd1KK+sQWsgtdAjeR+zgsc1nfovyGPIo9MY/vZRudUipB/VyhMDlhL6fvPFr\n4jvl\r\n=QbFu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"27da05678ea0350ceb138e2eb92614126ff7b1f9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.166"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.77"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.94-renovate-non-major-27da05678ea0350ceb138e2eb92614126ff7b1f9_1619875034234_0.4363982801136035","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.94":{"name":"@balena/jellyfish-sync","version":"6.0.94","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.94","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"85a80f6df7e5c08ec134f66bc2ead655082928ac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.94.tgz","fileCount":24,"integrity":"sha512-r7FiS7sHCybPKb/Q+24i5GSW1DNhUPCsbRxUPqy+fUNK+mh4j8TTA7EFGYiloGIzjpRydcUcTutUjsht6D8fuA==","signatures":[{"sig":"MEUCIQDNWF2k2uFBYpynk8tet58WQVxPtUkiXVqi2ywMACgTeQIgfLyYRefD1NHiom5NYcG8bViVKgkn+vhpDVOIDUSBfY4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjVXOCRA9TVsSAnZWagAA1AsQAIBg0n4081p3APALYZ2v\nWCOkURaJrfKMuaGjIeIIqtO/vD7cCeFoZWtPBd/sYpeCGIkjZb5PhCPW9Vy+\nSYR8/TYvMcll0syumXyOe4adi0RXR1eMlLW3uJIBkgxmZSCyU7dU3oFKFZKs\nbdxucwVbhWkVlz94CW7KR86/rciV2n+WjG8Q5VJBHtjH5gTQY5wrA9oN+48U\nKy4Zpi4waffyMyxbtGNHztlJO6F/TLkkUbuTvnQLIXmtVNTfJyNhscDidK/a\n+ZjEY0/GmzYdgibEmi1o/UIbm1bsXR9tarJkABBb5PvdLgS56oEGz5cMbFdk\nmfQR2C4D4nLgXpPGcIV1XVnWEMb9Ml7x++z7zFCd4CDKjF9VW0H5z/18o9nH\nYEnB+zj7QQQVMQ5RLD1fQrtBgKL7gr2xhUA+lmCWkfzqC+80c1u3JeZPVGWl\nTD5AzGIFUo5iFASf9MceNddJWTbLdP0/QbN3MVuVJ7elsMNyRI0aaWxvBheh\nUntUoyZqsyYVJdqB4RR9PfBRUVrYlDCFmSHAnkzzo9AeDunjd+yxEn3oVNIM\nfSnkH0CUqNEucI2UbZD/jvGTtPN+hhO7YWCQavd4Mkfu0z27DbKyBppzLKAA\ndh0EAln/ki9/Qtc4CjWl6m+wTv5zpFgc37DdwGiQywI7oE8h2aeGX8nQ6cMu\nZ7vH\r\n=9UQb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2c3d90403122c4771cc1b1cdaab763f6f8f58693","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.166"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.77"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.94_1619875278286_0.23120084197552693","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.95-renovate-non-major-badf14e1b8c06d3a67774c0955fc7112d42cf9e2":{"name":"@balena/jellyfish-sync","version":"6.0.95-renovate-non-major-badf14e1b8c06d3a67774c0955fc7112d42cf9e2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.95-renovate-non-major-badf14e1b8c06d3a67774c0955fc7112d42cf9e2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ff046e923a70280616cf9d5f498c8718d5ebd9ca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.95-renovate-non-major-badf14e1b8c06d3a67774c0955fc7112d42cf9e2.tgz","fileCount":24,"integrity":"sha512-J/VC/imv5H6NdJFjRgKJpMmrt+sBrj3iSOd6hNeexf21wuLF53K5EYzHg5URBUASvBBDnRgWH1CyaUzeYoiYVg==","signatures":[{"sig":"MEQCIClEtD0bd0TlG/yq/V9zV0K2urhcAmsNV2Jvq+iBLMuZAiAregqqbK1t/YQpsfADA5OfiJK+JZBW8jdok/VQ/dojIw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156629,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjYF1CRA9TVsSAnZWagAAhdkP/Rl0JfnxCZwwZoBuSEkw\nXcFtSanQFE5ttjwsW5EangSai+uss6+6Bm99R7jVg7Hsoq/LA+qsjrv880U+\negjOGaOeMg0JUGWLfmicfn6pOIaw/BsTlYxIVCvMWdZgl1++NZN7NOsFrinR\nyx9F9KcfG+BhRq6KEq3FBqvPvlvv9qTCt5SCHV1r0FvaWytldi2jKOmcvCwk\nJ1Y5CXc4TdDI8no6znWnlNhvfd/K5yjwiUDLQ1cjBEZ5YUOK9FlIiw6fuuNH\nsfjgjGe1u9nj/N0+yFvCBydsULywASUezDz4UymjUYvSa5bx6uTffba0LDei\niVQx1kupOHzdfY29PfTYtmG3axAymL8y8Z7nYBEqEiHzCGNrBFSHolyPN5oI\nuYBnUyPxjhZQvZMdAQSjg/8SqlUL/SeY5dqaIWC0MtQtZO3eOFv5R+uFtmzR\nT+4Xt6UfQNU3fQUBRHU9U4qTI8ZvdLb1/xRcuiENG5dtUJn/mzKO0QA8nzgE\n3MQ3NARp5vnnsWFny3Y1dSccfr+98/wSKdo2ImkHhNNXzeZiIcYKZ6DefHYk\nTImfuO9BQyhE2pnYm688xN9zc0ui4UELFnM63fFFrW8+QF7jZcvf/6EL3oSn\nk39dnXIV5e+wkrYGn321+wWgBVeJGB4pf++o2Hzzg3eeVwIoATHg3rp8BlwF\nxvtp\r\n=stNt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"badf14e1b8c06d3a67774c0955fc7112d42cf9e2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.167"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.79"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.95-renovate-non-major-badf14e1b8c06d3a67774c0955fc7112d42cf9e2_1619886452755_0.1599445913127464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.95":{"name":"@balena/jellyfish-sync","version":"6.0.95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.95","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3a1889b14a775e45d356133725cda1fe485b06ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.95.tgz","fileCount":24,"integrity":"sha512-YAsDHF1obxWp/Fxk5C1vmVUNMzx57KA/CZBIhnvlD7bmS9nZfi3OXI96UnPkM04g1JpD3cgoNThWavLkGO/0gQ==","signatures":[{"sig":"MEQCIGw+UPRU0Wknbn5GLyaKkzLUIJ6FBkIktmjdt3nA7LxTAiAg8LRDBcSybknsn1QNecgzxP6qc5gzbg4vwcMhFoxPYw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjYJTCRA9TVsSAnZWagAALfYP/AjGqaSEvJ1t4Vurzx6f\nNwEs767bQxoEMwiEpMpMDWiqz+7ooBUwC4Q4r9MXb3mCmAKyBNiQh0cQ3fNE\n2gutQyk73Yd26hrMoVg5T6/N5sNUKZr5yNbjxzmMzGiMl+Q+kKUJ8kjjmjMO\nNjHdvvYAL1h8FfJ2hw5SFzRiN3HD0NLxTL410m3xX00yxrqr71h6/WJRbFGF\nf7zjzUaM9HCXvUSMzc7TY/HJe7qTWUL/VCsyk0Qra4bdFumEFh+k7rJdABPp\n5BfVyT6gfOL7ilSGDtY3WpSfYFD4+b1digl7nP2b39z1CoLWVTzDHkvA+g7q\nLv37427z/Qf1kIpxnQbrrj0wdB1BWQcEbIhCpgpSm4LvsJXgO/O6iCNuPdhh\ni2yzaJA5tvOtg8hvcbEDuKPvPXxqzw5t299OqtIDXJGQjZ4zEmfER5vnqpV3\nMT3NkxUEKEAVOS7LQVzq7i8VROVi22kQaqJIiVr4MWXjrzc+z0XcAi1o0H3q\nsX+M+j8Kht84jyJO62/aq5zP01DGcebt3lkzeQxczy32GC9y3N8+Hl/k26bG\nXXxI3S9GA0u5ZQa2PvcF8LrYmH2FKCxdkMY5ygKt2uU/HIBqurUAsWwdoVcS\nhgaSIEJBxUEbC8gn/qPeiKeJ7E8pfW4DcywiCQyf83yzVwl7u1KgJeVDI+KN\nWcnQ\r\n=BdaA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6bc2d7e696c25dfd255da6535bac4957abafa96d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.167"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.79"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.95_1619886674875_0.04072232203267112","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.96-renovate-non-major-23086986bc4e3d6c73c439f910fd2f5fdb40f3c4":{"name":"@balena/jellyfish-sync","version":"6.0.96-renovate-non-major-23086986bc4e3d6c73c439f910fd2f5fdb40f3c4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.96-renovate-non-major-23086986bc4e3d6c73c439f910fd2f5fdb40f3c4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"42622f4b8704c8c87c2c6ef97af9a48c5652286b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.96-renovate-non-major-23086986bc4e3d6c73c439f910fd2f5fdb40f3c4.tgz","fileCount":24,"integrity":"sha512-xQxg/+fXzENoXDCY2C+uTzgODe/DYHGlM41vX0h+VNxjn1tNRyTrWM77b5lhnJ4T61+vZ6Cazq7UE9242DSG+A==","signatures":[{"sig":"MEUCIANyrzmVC8Fc93tiLlciwkrN43wS3pMu+NkArfDZegtEAiEA5wNlDvr1NDWmmzjIZLWH8zTA1UMyNl587pNtdS3NqcQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjZDBCRA9TVsSAnZWagAAzSwQAKHdpgZVQ4knUP2Pkl03\npdbzIsMppX0HmhLQwj+yV6BmOGFwv6V/BO2PmzrCa6Yej1mJL7ebuGdDPBEh\n+w9M3idDXNnIheEJz/sRlo0Uy3tm0KYuzIYIDuUunjsaT/VBu1dTYj+YsnbW\nxE3P+yWCmGhGcQyCP9KhmqgR+xluRmfwJW8wWXCA2l+Iahu20Tu9ms5mzR+Q\nq2j5DK7DJxhj5fnwSrPnxUMocYzl65YUpZEKqo7fHexETMlg2mMqKlthBE5I\nH923qh3FPM+gcLhW3izhjFo3UNNqL9wkHc2ixYYvk9xMXlC+K71KKX4hBiQD\nELnch+AzcuOA/XXlhDApKnHDcmC7eQP9ag7nZ8PtzLWUKROrUP+OrIJSPRZJ\nu6h4HlAilpwQuicWmmlDKDmuCoaluaIv4lWKsNWQTOlTR+Z6jkO34v5AYvgK\n/+zCRvdvDll1yd/QHBcv55eOp9TDmsedIAzaofTKGww0RS9dSwz7awATh7Jo\nHdwzmvzIOyD1etrYBDwpO0DP2AJgdJ0WvBzS7GrstA9lNT+sAmyDPJXvyLrS\nX1srBWVhhcFenU84n6iQSzj7ULa9Iq2OdPSZtyehxgGiSdWiUiYu6YM9lUIE\nCVbxt0heecYqH55M6Lys7n6D0eOygAFsI2VYWr0JFBmmgdUBeDKm1kFgJarC\nsyV7\r\n=AKDb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"23086986bc4e3d6c73c439f910fd2f5fdb40f3c4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.168"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.79"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.96-renovate-non-major-23086986bc4e3d6c73c439f910fd2f5fdb40f3c4_1619890368729_0.5033896827561695","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.96":{"name":"@balena/jellyfish-sync","version":"6.0.96","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.96","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1e5779cb2047f780fb6e02bd13f3f3897673ac9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.96.tgz","fileCount":24,"integrity":"sha512-EkMXXAm7IV5nXV17MdOSPiLPCpAbdsbDrfQPbmdXdXuDk3wg2aj7vZhFx48fU4prV9R4Bigw/EdbE4JdlAWk7A==","signatures":[{"sig":"MEYCIQCLuJeYFGhj+HgZM3Qe2IHV3b57FQPXf+juLkNqEKJc4QIhAMg1eu/oWVxEoFRItsdgrLqaNq0rHR7/v2BMYztaeMhY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156674,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjZGMCRA9TVsSAnZWagAAex8QAJEtLfnrpzhDFYTr6Nlv\nviTtYS4mbmi4M4Qsijf2TDpUIyr80bqDR8dsTQfj6YGV+jX12MiPE2URvyIk\npMe0SACRb2dU78Zt2MFJiEhL++KNS8cU+8x+LUeIwtWUDBxOCPWbvDiHKRAE\nYRR/f3lZTfJ5R1PRYJZnAV4DDgmPgDWtqJsBamll9vdA4mVDq9MNJPl2TfKY\nnE7c0CkEwb/dhNtSh+K7b8q9CelNOg5qM1eAYuFegxkWHR6bvOnbTcMYMJqQ\nCUGjK3va3UfWwwdn07FUKLy0qer57xeTv8I4j1jqV+NteatpVz6JXrVj/SNx\nrTjhfdjCwzDfJGn7EZb/Ujvn4smgirDRJ5FiVNeiBaZfAkQ/HNSOZEipN0vY\nWalPyrXQmk6NmzQYP+N1KT8iPbOBBmmxZ5jXg3AeiXwj90Hkd668YRUA74tR\nP/mj2pDvFwRGAwscpigqG2BQqdso5xvpSZw7q5FZaMOkHJx5Uo6A87CjuDme\n7RrWEV24X/J7UrlMA/d8leu7Fkm8Bh8S+pPORmbPUbuMQxjFpuWB3jPG1tSn\n/0NjU6aALjLSAEwOXsoASFbufj9HJOD2Gt8ias2f7SoSSfZd/X4H9vmefmqz\nQUrRA50nE7GkQKRzBGCaGxLSTvPGvKQQqx6tEdFMsnKEiZZw0HOf+b/ggQ7I\nYHkC\r\n=uqg7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0802653359a021b2c71493cc2cafa75b76f308a9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.168"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.79"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.96_1619890572020_0.8015440740235382","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.97-renovate-non-major-85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8":{"name":"@balena/jellyfish-sync","version":"6.0.97-renovate-non-major-85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.97-renovate-non-major-85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"71c0283fca55ab2ad5f6b5958502f36cf09f787b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.97-renovate-non-major-85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8.tgz","fileCount":24,"integrity":"sha512-E71EoDc+00GqrgEESK2IWAzheNYY3r7cu/qxrM7/GdxuyfCflJr0nXxGzpp4lLwqgc2fZ8UPlxDFrHJU0ZT7Fg==","signatures":[{"sig":"MEUCIQDOobB0qdgw2fve89u+ybYDxK0iAvwaopwmNa2xJeHZTwIgFnyXDfn2zQD7AlngT0vMAydLZBb958F0IOe4NbBvJUI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156836,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjfthCRA9TVsSAnZWagAAYYQP/2vk4leWDG1MbpncXSmx\nXRPt1jn78rZvz7aOwLCyytJsCsggQuw5lMy9BjmRrkTsmCX2MWY0QiWmTmAX\nk5vp0ihrSpgTnM7qLTcWlLQZ3lryiffmY7FLyorzERqcmKGbX8laQt5J3gMy\no0TjRfybJdmhKLjQpRgSgrB2OWJCCrMi6A+CX6P50eDtwFtDWTfoHJyGI186\nfCmZkTwSwHX0rCAvnfb7hO2RxoyI84WvqBS89tPgwvD2bSpp3/vhjJllOEGs\nW9dflYCHVrYBigx0hl5R0a3vsczndYRzQ78Am9OmbIzsAxT6Ph6e7IED0QGG\n8F+sjsOvpPXpMEde8v8XxKtMYANS4y0q5HAcFGDpnnBvuG72ngH8xs8sTaAc\nRIZRA4FVe5ZvQp5dEuvmIj0+pJFzFkaAtnzJBdYmMFXsAwvoVuS3g2QD0GMm\n/WzBgpjp5ku/o8FG3Uj5U+fn2XYXw/IqvE5uvBBFIT7e0WZdLR6iCIBUVT8y\nqIlvoLQ43jRyl5OlO641hR9/0cuay+U4W8bsOWLzqLnsDFCdlAQdwWwPNFNx\nmOmK3nuC/w9SC5R9u6YzZ+R/MlgZmteE+/V3gVZjc5LXcvE9oufgxncAZw1R\nGms+6OHyYVHGwv7Ywvl7K9FMRY6xEDCnGLkLD6vWRGzaZUGNsya4PKWPO18q\nvmds\r\n=nrE0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.168"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.80"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.97-renovate-non-major-85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8_1619917664599_0.6617644534341303","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.97":{"name":"@balena/jellyfish-sync","version":"6.0.97","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.97","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b73be9bbaba3fb09c0ea5147cd629bf509523de","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.97.tgz","fileCount":24,"integrity":"sha512-ePGl27m/VWPFXfXDD87fFWn2O0gQ3yzrHxmQqbsIbFFp6/cddliGj9zwCIxk6rpZ4FfuIpt3Q0/7NMLvt9BAQQ==","signatures":[{"sig":"MEYCIQDAjCXY4P4K+QDey6rNtP+bCW5CBS+aakNBmvPL8Ray1QIhAMzp8GwcqEfyScXPoyMyLg2sNF6yewwYTlaPK1570n1T","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjfxvCRA9TVsSAnZWagAAfhQP/12hu5dwaSQvxjQXvHRf\nKiackjKe1AELwoNLp6Fy+937dUkhJYJvrzJLYx9lJTcMSoZhFkdniCq4/cV4\ndUHRpFIeM/yM4HG0Kv5FtS4TNdBYs4CMiwimA97gPP18kUaD/wJTVWRC/d2k\nYeNB4TvzRrW4rBGs18edEMk/lgo5Ol5PVlxJjXFy9BYHoHYccNkYg29RfHhE\nZcbJVZTzqEkDkS7c0I+ZzCqIfOZzRl/XT5ytt7NozHH8KBCElrB2h14thDQd\nfcU1Y+DgFLQa3U6AWr7Vr5WWLQ1Om7Ez51jhq8M6iVicfdcqSgQyBwA4Jd0R\npanH6FzwSQrkWCfSnJrbn8pipzI/MW7GggXfyu3XspitPBXhP2bE/d0ajTHn\nkmMyMLD2oooxrapKzDcOD+Re5EfJtwKYRzrwSTSKu/b/QrLv4kTC8u/nil0l\n3RcolIFhWmaR6iDXAmhWsWZn2zHZKUxY5bbeYT/7hsw6og2nq5eFYwtGssC2\nS6Rf0dHAp2kf5ObEo/BC6G6B4TJgz12EIluL5KB9ib5ixyH9jC8QvCiK7GhQ\n4OuWIoKzHxRb+l0WQYeXycq3k3ERA5X5/7Cl3mTtZ45jFMtgdN+vgZE/eQMD\nQF5QCEaiWRYuCHrnCwpy/uOf82Aj5agqsrTKqeUMedp203S+r+tiSz6hQsLK\nK7FT\r\n=UWou\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf39ae8b6e49d16c6551875cc69841aeece64946","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.168"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.80"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.97_1619917935068_0.9444901293370482","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.98-renovate-non-major-c96c770e5a1f2ac80994886141777e884059ec7e":{"name":"@balena/jellyfish-sync","version":"6.0.98-renovate-non-major-c96c770e5a1f2ac80994886141777e884059ec7e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.98-renovate-non-major-c96c770e5a1f2ac80994886141777e884059ec7e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca2406661dc6e829da5399438e429be542886f6e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.98-renovate-non-major-c96c770e5a1f2ac80994886141777e884059ec7e.tgz","fileCount":24,"integrity":"sha512-WQ+LS4quOi7AFwzv1Esaj9cOFo9WqQPsKZFQIZGmepWmc6s/dzBMOyvJFK7FvZqR95V2T0sLdEAqefzq1wlMSw==","signatures":[{"sig":"MEQCIG6D0HhKHBr0yetEJlFwhjADx0qYwStpKC+iA5S8JS6XAiAF8GQ3V98EhaQPujwHxcKa3Mn6YTBFdIxDjpyYK+3d5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156902,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjhrCCRA9TVsSAnZWagAA5y8P/1Ckh73O8VuUe/fejspM\nBMr11p+I8NOtTJL80LDjTDgVyqDOWjtfG5n2oo+lvPo25uYX6kCX774/A0+x\ndOgDNDpCB+qPgf+t546KtDxnGTq/VLrckG9cr6AEaqYRe3dYNznkN9Dh4YDh\nk2BFXsjxggehgpKW0sSLAGcN5usXSu/JYyBcay4JaILVDb0chkwni+G6TQAv\nEOLunqZoDKMxJtLVxTaXtqboRFipspmDQtSR9sTGCemDYwy0LT5q9jKYJVwl\nkUmv3eWMvV7K7Ta7TCqjqVhrQsR4+Y50r5w6xgndMd0SO/hkMl0D6YzPBVCu\n4gUG0AcnUY6Ylv+V4PGalPwVZsxexO7uYRzMCCKEXxkwqsWRLxt5IVlWhrDF\nkxjrdr1qI9gEi/jK9Uz9BITk8oklX6Wdvv+yEARPS8IGrC4Eh22y6A1CgTJ3\nTmWZsAWbx0dp2GqTjv/mRXdTxa7VQZH4fftNXUUkYXEYDJj4yKMWEIuAfPbT\nielsJwPj0g1L4sihFO4y8oCWDtS7avZQKQChbu2we+lyaYjW/2nWm1WTFuVs\nJb0Rg8hGzgY74D/VXoMXSle4IxaQDrq+2AE+Tafu8Srx4vq04aLKh/81PXKB\nm5kWHpH0ZgcsEovmUS466r2AnhXdKvUKAGdz9y8U0H4OH6geqbbnxlacaZCq\ntval\r\n=DyVS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c96c770e5a1f2ac80994886141777e884059ec7e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.169"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.81"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.98-renovate-non-major-c96c770e5a1f2ac80994886141777e884059ec7e_1619925697776_0.9439273175419807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.98":{"name":"@balena/jellyfish-sync","version":"6.0.98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3004f77c2b9bc40789ad8e25ba4919663778022a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.98.tgz","fileCount":24,"integrity":"sha512-Aq++U4rIpYwfRh0Y81wzFEKxbqUa6WjQPSRGfWznPAxCK7vj77E1rUdfYGkX+eTHlMan3HK72NaPA8VMOK2a/A==","signatures":[{"sig":"MEUCIE1cfuN558SfxWFtc32YXkPyejB1JugJ48p2xsZ+rzd5AiEAz5FIaRrmFSvivy5cxQvDQvJrrMpxipnZgMVY85lJ0tw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156842,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjhuyCRA9TVsSAnZWagAAN9sQAIdLB5LYyKbF7il7rsZe\ntAlX0UkBa5972HEQ7kcV/wRladvOZs9DYirGKJzINdndLu6yX9//lGyjwv9g\n1e1h04Qv6H9YWVFF18xNXqNQF6Hpg8uXBPYcXTCcOBLJNpOUK1yBk/KF7vmc\nbK8kNR9uQfzsUK87bLEVwTP0fPge4tugMVoLKG9sg3IyiTMVYzOWBoIW7L9U\n+ix6ZtlFPcSFxTIeo4QAgSSD6cWi4Vh29FPMWpkKKPhn1es1RmxYW+EB5CQI\ntY/5nygmVyrMSz+UP0ygE27D7ClTRlDiZPz5ZEr9wsN9woKGdGoSGqXYn+MD\nTe9vp5SlV1NLCBr4vP0Vk+i+eXDsMdHvv6sDOnNR6Bw+cwrEQIQ8PqsuXh4a\nNwV5VOV4RSaxsVglujylhyl1TBvNHo+oWTgJdUQZ5G7qbPj5jdfQbzlcJrgu\nWbkMClDwuRKiioJvCcwmShpGVWQh+NIqj08ip3wK34AJhrHnwbCPIX2AaKgS\nZgt8UiTyFKJhJfOJ7qxhOObUvoGvNIXmAx8J98egnb+UkXCKusM77PpMyRj2\nnVG+xpx+oeKZ35l0AbJpSoT4yHRcWKLnCpFB44ZgmCFC+0F9L6hzgEw321J1\n2MnkqNVmeMc/c0LgTaatOZyk8HNtiQqX/oXfH3Pg06B2CcDTx66MiR+1zUtg\nADjV\r\n=635p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e0e846ac79b16f4577cdbc195c1572f7f57687a6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.169"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.81"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.98_1619925937942_0.1796668975528637","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.99-renovate-non-major-5d9852c76a22aba078930721d433ac87b32834d7":{"name":"@balena/jellyfish-sync","version":"6.0.99-renovate-non-major-5d9852c76a22aba078930721d433ac87b32834d7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.99-renovate-non-major-5d9852c76a22aba078930721d433ac87b32834d7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f92991cf6351d750b28b44cc856a8e3f7386805d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.99-renovate-non-major-5d9852c76a22aba078930721d433ac87b32834d7.tgz","fileCount":24,"integrity":"sha512-KbGqT+7PAiP+qi/xF4lzTJNzfDhQN3czVvXXc5uEbv9C6nVAefXwoI9Zoh7aIev3+vFCYaa75/gZd7/kI3E53g==","signatures":[{"sig":"MEUCIQDKFEoI/45PDDRqRwGBuxMCfvUQbacmGjtzq31yU+k12wIgXnKscIj0usfu2y1hyprWejocryl27d7BU/x0rigBGqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156968,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjjYXCRA9TVsSAnZWagAA1J0P/17ofPXIfoI59giJ7xqs\nhRfDyhsI4lWcafD35BZrTOtDMRcEQMk7EkDoIVDZaA2VZogj0cOwKANPqcgh\nF4OcLM/7M32w4a6c+cwHlMaQVexALOTXSCvJx6Q3RAySkxVyskyAMpgyFTxR\nqJEDt9sROE8Yx9teZ8XzzIcQt+WYPLs60f3PO82LNqi7pu34PnTJojRK/I7v\nupv2rGE71rshx/oVddh+Pvsoq8QN3VY6y2dtoTXEp9vU23S7BP1L7HRqZINJ\n/8Ot/b0iBDrEzWf43ODjxNGBr519QMFTAuaNyFDuQz71wWDxxPm//lEsZJKy\nkm1qlA6NVD/9h/hJLa2RCNsSyjF/2yARVmgkf495ph22FS8/IgXKKANCJ+Rm\nNmSoq+aMYdUB+6UrbKvoQQk9zH2KdsKJ/v2e/mHny5GHzvlF/OHJ7TCToCRJ\n/HgR6o2jMcFwyd5tXN2YPyMBN3ha34KAYiNRCYwngluImpOtrsf6WLhk3tJt\nI+vP/RQbir6oMwFpFn94NhoHUE8sdNeVWG6XZujxe/jR/7HojwX/BPCMy4A5\nd/Sh3pRMfqoW0YA0BMNjm5Ah9zuM46axL323mEIzXuYX7dDDmFHEQUXQXfrg\nK132IdjsAxb+srku0PuW6y1Zr9muE1LT3/aWvCt4I4gvhaYjOx7JVl2zOeGv\npsz/\r\n=t3HK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5d9852c76a22aba078930721d433ac87b32834d7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.170"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.83"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.99-renovate-non-major-5d9852c76a22aba078930721d433ac87b32834d7_1619932694571_0.6334399827379849","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.99":{"name":"@balena/jellyfish-sync","version":"6.0.99","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.99","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0122e48258ac30566f0652a72eea0e092d010e23","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.99.tgz","fileCount":24,"integrity":"sha512-dub4l8/L2YKRYkl8oC8ZKT+t1L3kTvBluvv+/Ot/Sgke9hV43fNf8j8RkeKIQnGJbAIhMhymtDJfqGPMoAz03g==","signatures":[{"sig":"MEYCIQDw6MlJt8rbP3SJNMVb0mMGvQ/VJqgn1L+2nAxc+Fl6aQIhAMEprqxebSOX3hSKBNNJkaRUBXyJE1rAs8YBvsxFVMBe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":156908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjjbSCRA9TVsSAnZWagAAALwP/25+A2n93+d4g9ORTFaU\nh8fPB8Solpc5jKhcxy/DfjF6Oc6ORmqv3bdwUoeiZwDsFaijkxzkRxQLj9Ur\nsxOLJHxU2q4n1o26isWjpM6wqmvFJERa0IVe/Wx09Q+y+lOFrHYhtUC19UQg\nL4xUkSTfxwf+aULewZyGBCn/7m24EvM3hNPh1s45DAnFrpcEh/a/cWsupnk7\nC9WZcc83P97/oNJcMO+xLOjQWn0ri3AcjBXxWUhEYjf5cpIY51vvztuNPNMY\nu+5qJzVKW9pywq9+YBlIzl6LukbVEabSnPoPBMv0HyozuXhlnRyUaz7rdPCf\nfC5OzykdI65s1m7PITzmUEhxWKgOJl1l7398f/1f4/qlgh7roqtDpEJktcAD\nXKvDTp7fCd+goUV6viIgGxHYBxVy045yq7Zz4Ts6szdYBww0rrrec3BotQKD\nzDsYTY/NkapSCcVU3dqXh1sy9z7Q+o+PMxzdrD0WCSMP9dmtAimEFIhGk4TN\nXqSiddofr2VNmuFxruD73ERM6AKj3KjXaDTzYWopIwSShz1CQKS8DOC21pZC\nKG8NH7y0jqAymXxyQf4J/NYvxsmC/z5k8xh7TkaoZO6IOXfizlBKi31K8GfE\nSSH47FW+Vx8n0XTD4IXw8vofeQD2OPhruqJDK8Vxhuyodff8ZPXbyF7Cf9if\nUyz6\r\n=rUbt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ecb1d948dba29ca64b728e3a3ed773dc845967bc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.170"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.83"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.99_1619932881988_0.732334288115666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.100-renovate-non-major-659e868757a7c9c3662914e672a4b0c7dc24ff33":{"name":"@balena/jellyfish-sync","version":"6.0.100-renovate-non-major-659e868757a7c9c3662914e672a4b0c7dc24ff33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.100-renovate-non-major-659e868757a7c9c3662914e672a4b0c7dc24ff33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e5d0c4ea848376f6923862c82383762fd4652fdf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.100-renovate-non-major-659e868757a7c9c3662914e672a4b0c7dc24ff33.tgz","fileCount":24,"integrity":"sha512-42nt9dl/Uj7kndPh3ki47tb+Nk/SC8VJg0HKCrTL4mNXmb4DIdHzPvnrekchtX1KyeJAnhB0pTpNXWFxO8yebg==","signatures":[{"sig":"MEYCIQCmGDfYTIfRee3RMPKBr0dzI5r1MNB8iluDxBKBSkI7XQIhAKG1Z3QK8N25F8fZ4rroLkUeTdzMh6ljkqTr/6lLdDFu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjlyICRA9TVsSAnZWagAAvMMP/A/pzWkFxizAqAz9Mi6x\ndmRh/hhz/SpaqiwDXen/yqAqFm1HOUQekj0cjLcwOCb3AmCzfOJU7AxLtHM+\nsRkydqhiQjO2+9lVwLo4R3LK8IrF6dS/8DC8ZCLtAcisAYQ4Cm/WkWgOe/8a\nxhTgbyyXcygnEeCgNR6wfNKdcabb04KGyboW1ul5GeRtIpydN9ibXwf6fv0U\ng3SBfSAm9xKWOzxh3N5CpQXt41K9rrnF0sqMbFQyd8WIcl62BUjAgKhS9MqI\npJcyzBy9zRn361355zO6vgxzHK7vSL6MzC9Zu3GU88cxgnFMFyIZfaAOPKny\ngR+FibOZaN4MdiENgY1s9AzDulVqYAhuY4TeLOczfJ04CBK5QemRryxPti2N\nliCXhwJyzpCWwdw64i963ZSvxNPOj1KKVCZ9CfM8VtQ2J5PMANf63PeEQySM\nazFCRMqm5OkVtARjAs6Jt+pft9sIHNi7GSOpG8/u0zDF0ELoTXoQ4J8Kz7b8\nyECq/QZb3sHG6fjFqLlilVDGNcFwcXa1/fkZfH57SbBmZlhxdfEeyW+J9NtI\nrMvtVV08l0FrISbNsfYTs5QXZYkXGSBeQzLRxTw3YqUFaK8tABtHZhox5v9p\nrs5Q4iIiIuzFCW/hTNBPC7UaZ3rX1zITTQ95gq6Z2VuNVvnvv9vRr+TbHvba\nKo8s\r\n=AOfN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"659e868757a7c9c3662914e672a4b0c7dc24ff33","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.170"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.84"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.100-renovate-non-major-659e868757a7c9c3662914e672a4b0c7dc24ff33_1619942535784_0.6597321113997889","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.100":{"name":"@balena/jellyfish-sync","version":"6.0.100","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.100","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"81ad0201a6d4f1eac9c62846820ae6479fe69b5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.100.tgz","fileCount":24,"integrity":"sha512-odh0chMeYnD03yOXAlFZbdaiEoLBgygcZrZ3mpGSKU2aORsYidxA7Yf2+Az0UvUX7jc2g3xlZv5cnwWaYsPPug==","signatures":[{"sig":"MEQCIBo+2+tqrDNtaB9hnpfAqsmUx7ges6jeRS0TMBCWXGQ+AiAO83ylSosPxjre1Q4W9ZFyMSXh8XL/CQUBjgVKKXci0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgjl29CRA9TVsSAnZWagAA6+sQAIYzD4+6rXks1NYuEdSY\np2sfBKqUsVyccl+wGK81RIxdOlaO11XxZ/nehF2dRMHBiZFKD1bBcdOuzeni\nq+hqYjBCDjFRXvJfiAr1BA6FFAdOCJVk4Q54+iJtOw4JcrFKOPuCi3rk1wo3\nprFWbSpo878/pHKGAPjTJVgBQns2g8VKnswtN3cvDAs9oA3nbtzbUenHrVs2\nUabX96Ws0EP90q3syUCUcFtw74fQIT9fE7kWj6KBP2HQQXvkkoKoRvQZCgY7\nuTgjPuQRyAur2WN7/ys1PIBWAimuj+wLkxmDCyyeEsrexCFtQNM8Tl2O7TmE\nninkMSsrb7iGl44/gdqPo86olaWQ/yVx8vHURPR4Wj9POU8wjCi3CHG9yV7E\niqLyXS2cQsC1pN4h5Q/h28casEgD+jAHeCWLFMo4VMyrGlPvWuSUmWYZ78pz\nhscTyqwc8fWB5pIg7h0B6DaKVlzuXVxbxArk1BXLysstMOiWmnYmSff5cqMT\nqAuxnJE2a5DR3jLVWpJomEmpO0cLZyYaKh9QGIm2zJCDtj/UTWTZHX+E5ws1\nBC3ddG378MFGkWMyM2kgpHyOgdZrcXY9SgVYFA/rxpkmpNuxKGZrzcwFSR8j\nq+2AZ/DY6K0Fg0t5zwrQfMrc1ufUZAMzEZ6qQwRZpHDIIOsYoPwjSX1NCqPJ\n5fUa\r\n=j7Pt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"503aa5aaf3f8d6b443e592eb979639f8b1900e0d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.170"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.84"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.100_1619942845159_0.5918561281896635","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.101-renovate-non-major-2fa7b2df799b6037ac2877f48afe1404b373178c":{"name":"@balena/jellyfish-sync","version":"6.0.101-renovate-non-major-2fa7b2df799b6037ac2877f48afe1404b373178c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.101-renovate-non-major-2fa7b2df799b6037ac2877f48afe1404b373178c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2879391e80a8854c2eb292a651474d9f8dadc719","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.101-renovate-non-major-2fa7b2df799b6037ac2877f48afe1404b373178c.tgz","fileCount":24,"integrity":"sha512-dtnMF1u8h62PtMLz4C8ekqEZYCSusFsebjr6OgeQ0HbeJXVykyTX1qCYa0YtaZxieou75Njg2RIC5VVM0YaFPQ==","signatures":[{"sig":"MEQCICoIA+a5KlETDx+wb/0CKKrAq6kMjFtulaqiVSvegwuaAiAbUxHLTb8vS5lgpypURKsVctvBk2xxSvtx0rxdrJykoQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj1g1CRA9TVsSAnZWagAAcYoQAJxqEFQDpMCCFVR2Ybzj\nbwar5vGLpCdude4BkvAzdPfGsgNId8K73L1pVEf5ggjMzk3LNfMNA2BjWXsg\nQAX6yltt+VtSQbQxDU0a6scg1v2EXDuwhd+ce0GlVziHQ4A3A+C2mdOvjNHz\nscE+RGjK2E4wBL+PU9V+Zgnb7aEoIeOFQJZmvN0YvXxPKANnBN+gWoMChyto\ndovtPe8Nu2nBRq24Y1ArKuvAA06bv0+eGMfzbPiOXPgij9dqvQV5xh49J1RM\n4JO62Ff80mI/ayHMNZ0dVmRA4BgNN5xJVBtk+eWaElUw3TtvcLE95cfOpGSd\nSnaG53mFKRlTECmupwBa0hgbSy0ap5Eny5E5hpMKKcB1IEwF4sy21behRCb+\nopMVy1dP8IJV0AqPTPC03I5JsR4rZP/6+RpaUyfp1MTTPaMCiOjfDStuYs68\nL3uxshs1zk2yAtGx0UM6HdWrZjMV66F/w6FLXMDoMBRvWVc+liNTOyHJSSuV\nKiyyq1aHH5/YffZ3D39eKoNTWNfbA02i7+Arq21doP8+34nVDJJm5j3g+1ys\nfLg8RHDoly5HN2UdEXquVSeTJLJ2DpldoKU9lnbCdaAkjYPXdWJnrxA6+ICE\nH5LoTd4qr8Jo64ifmkjpoL8Tn5aS2iNn8dhI363jJDjr+33x0tycXDqdTQ0W\nmtH3\r\n=xVph\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2fa7b2df799b6037ac2877f48afe1404b373178c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.171"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.85"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.101-renovate-non-major-2fa7b2df799b6037ac2877f48afe1404b373178c_1620006965294_0.6493758279415485","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.101":{"name":"@balena/jellyfish-sync","version":"6.0.101","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.101","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"203c869b1be923f84b3c532ed757e7d78c6a735a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.101.tgz","fileCount":24,"integrity":"sha512-Fif7aB6yNhxV2ZjbC67plUTqGXlJ1kbC/Ca9mV+J/iPFILZv90+ztgrrsWkvVjz+D2s70GIRGWSg0sTRpCGD9Q==","signatures":[{"sig":"MEUCICUxwTP3shoWFyRk8ts5uwlIsNDHqV6QSWlwU/bNM10ZAiEA+6jSUP5QmJGEmYSqa+KXH38NWsBEZUCHNlQokt68osk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj1nFCRA9TVsSAnZWagAAiAUP/2iSto73eVfNuyZUz3Dv\nT8ZGJncfBfbupZlAzZZ7zs1nTzq+DO+V/2ppu6dzixQtTa4EQ2zBrhoapkyd\n5t/JytSIV9AtynB9+oIyhHzeusTg1PbuC9Ofq7ZGE3hfh9rbgoQrHC8Nn/vO\nCWZvZmoE2Qesm+GG1IvlJ3/Ml6a7zzT9oNHWniCXbq+xxZsI41FV3zJ1mnBx\n8XbWnZ4amR3dsZn2dc9zz8+ZB0XdOVqo5h9mTpcqIVDj8CEIXOdZaDqSOx3T\nknFcKNfJsGcukdP5gG2p+A9L8Ghej8Wfa+iYZCb7O5oou2ZYHewRyznV4G32\npEhv3k8qdwYZuG63+SukqbHQ2FcFqpySSxHk1yWlc6oIhJ1vlD/un0iQzfWD\n3AilRhk6nZNVjL32fEdGivfCGE0mxOubmMIqOtzEy9H/Gw/pUHZR2dgoGGvZ\npQ9WA5Pzu5b0ca8tovonBBz3FHfNlLOeS3pNryYK99/yE2NoywynVnuxTwK8\nwEtk7iex8eu6/J92E84KBIaZ1ixceRmfqjlLsz/bXZqXzexEYTZLaQeygWaI\nWYMr46OKJAp0OYQne3kqnTaVbPU0qj+S0kREzuRfSB22oyu6rby1JWzBlDe/\nkzzmbQOpA6LKmsiIzY6muRBHrPe9BkaQaKcgmIg70OwaxnH04lrSAPZzljTq\niMVk\r\n=Yzj1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2616501d82aabe215e7f4bfa508a5be02c0201fc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.171"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.85"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.101_1620007365236_0.7240344599727035","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.102-renovate-non-major-dd4a599b44cc27c3911aa007f99bb0c19b799f00":{"name":"@balena/jellyfish-sync","version":"6.0.102-renovate-non-major-dd4a599b44cc27c3911aa007f99bb0c19b799f00","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.102-renovate-non-major-dd4a599b44cc27c3911aa007f99bb0c19b799f00","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"096236093f3661b85b94e61c9aa35703e383cdc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.102-renovate-non-major-dd4a599b44cc27c3911aa007f99bb0c19b799f00.tgz","fileCount":24,"integrity":"sha512-y1FESmvfXY331ZFwtOzWsB0sKMimf3CJneERVwy3LKC20AbFKnRLpn6NKWLWAARgr+ZX8jw6IviWcIhHQ2BdLQ==","signatures":[{"sig":"MEUCIQDdPgMJYIcOIis05eL8SwJIIi3S95AaQXHi1lIHXHJkWgIgQkMyn2qMsi7WE6CRsLgk8iz6vwNUVgeQgVhK+gs9w5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157245,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj3MtCRA9TVsSAnZWagAAypMP/04TFjypLmDJ8jP3Yr8J\nTwBwKaVxQd/FxAZRT+6CUYPshGVr8GQ5VuLuHxPkW8cUXfWtZwXtSWLXhP5G\nfyTYN6Bj24Kxufb/NyRs8YmhmlWEclo0yJKj5CZApyZOxa2/Og3ogfcac30r\nvNd5TIPaH9zTwVCJkVX8j738jg8sjJbaUyrYlnDvmzdxn5O7cwSIpxm4Yu6S\neaB2sAbRzs/uONi2U36p7WcFIuglZAnALl3hrTSsW9cdDOEpfI4DG+9ueGNm\nc2inoBtG5iVXXSPAHES6zib5Vv7W4CasLJNtFHdzRQNQNzA4/LP7+5BbG9n3\n1ykmQ/AreK8mBFaki9DaTy4e8/J46oYw9aJWoGI5wxNkzbQqr60qeAYorBVW\nIiWLNMrSLRbXoRViAHLpdZOnVsPznuZELX6Dgh68Ih1+TLfTeQpFNlL47EV3\n3sIsVOIhi9OLpJw8vpznasiD+0fskGWGm0HIpdc2fdYMIJwxACpAOzekXTNj\nPuZkibQC+FlEUX8SA0dHKkA0F8bPMc6zLYYtSAidcB5sFLwmXIgVY/bdWMUk\n/8gQG3kfheozOguvjl3MGGSfkx3nnDb07Yoq4XyS9opO2FIaG6xsAMfr8rIB\nm0mGGQXSHI50LSXh/30nJOFiSoGLHQXq7YbDPlhsco2ms39s5n0vlobpXi3s\n7F9Y\r\n=HfSO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd4a599b44cc27c3911aa007f99bb0c19b799f00","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.172"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.85"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.102-renovate-non-major-dd4a599b44cc27c3911aa007f99bb0c19b799f00_1620013869069_0.16642407239115675","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.102":{"name":"@balena/jellyfish-sync","version":"6.0.102","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.102","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b758bbbf3c3ff595da2111c900952817165e4859","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.102.tgz","fileCount":24,"integrity":"sha512-t1TBxgwqejbNtNwN2yB+Gi1UCU0ixRA9XNijL0SzYPhzChNtTYRNUJJRCC3y8IUgmU+8+lxVSCDYWk3Jbd72XQ==","signatures":[{"sig":"MEUCIQDULa6dQZJGeJWw4XAdb+uUNhrkYewiTkh02RYw2JH+rQIgb4ck/owJ3ZHTrlP8yHJQrJHCNzFTu2jqN3rn51xLqqc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj3QRCRA9TVsSAnZWagAAMkwP/1Znkh3qePCTFs+o62e0\nH2iYgDiX7s9+6PDotorApOJs1sLPCeTK3JPmlrNHGnB2tajcmRMmjgQfGEa+\njem+IpRCBIw7Tnw0KaWegrOlQ40qbyAUTWAE2id0Q6kbHli1YrO7bbwljZLR\nX5Lr/62I44Lv7PLsDattjB+DUe4l/9ZnSece/rnfqvpn0wsnPmOI3pQgbOUE\n3MRWZgtudK16C4X3MuJZEFj1cIYjlaUpMeXwHw/m/21DlS+km2KjTWdpmH9i\n/AA35HI78GRYG7SJ4S8vC5umZQC/sMwvziKob0F3Zz9b/BzOv46ODgo8gbkQ\ne6ezgw5lk4MzYFtnbeplJ39W0z1ydjAu1g3FLeFs4ZHDdrUqFw8L5A1DqgDV\npcefQ1r3CBCIiUTm7NK2QPyVrUMMU1fkr0eHZRlfCifUIcHVDaazEX3nt1Do\nEA2ez5gl/4Anz68deITwwJ05cP/oucJ5u6dhr17GfMNyiQTdHF4NAx2DDwSH\n4tQ2wicZ9woWgsq2vuVBcYigOuw3zoX0/lTupELzkUxevA9IsP5KXUX/ycFp\nDgWH6MT6eqmp00usjh74EvOShfeO/ZL6I8oLBTWffEKxA6axvafgAhb4IuJ6\nG1GTe5MgXGv8/wKT8DtwYaBf+JJg/khc9GlkI3LR8AHedtZo6b9XdUQdITsr\nYvC+\r\n=U9oR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"722450fce85ccacfb81208536ff45aa1fe0a9f3e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.172"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.85"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.102_1620014097080_0.9905588811489194","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.103-renovate-non-major-a80f81ad55ce4169ad584121d1a1f9b5ad3c6263":{"name":"@balena/jellyfish-sync","version":"6.0.103-renovate-non-major-a80f81ad55ce4169ad584121d1a1f9b5ad3c6263","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.103-renovate-non-major-a80f81ad55ce4169ad584121d1a1f9b5ad3c6263","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2f784d8a9a0e3b913285a44df6e6f2d48752a36","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.103-renovate-non-major-a80f81ad55ce4169ad584121d1a1f9b5ad3c6263.tgz","fileCount":24,"integrity":"sha512-yuLJ+bb6AH+wNB9NicEbPd92Kfm0GdooAr3QoZknNNMr34mo5/FJCn00QMCiGLbVroJVlGw8FHah0FZy2H8Ydw==","signatures":[{"sig":"MEUCIAYGtajQpfwYrSLx8rlVQdzhVjPSad22gGSVkyiVnf6MAiEA7PLUKYIQmROkiWgP5491/QTv6pUnRTJMJy3jYkae5Oc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj4xDCRA9TVsSAnZWagAAgsIP/iTiZyTSHJ4BUetjMKgF\nj+B5ocfX6+koIq5I2krg30ZmOSKSNKOxf6S0M8SnGrQ/fq8SCODhvgkeMs//\nZbTEmDgUwtgQn28o5PEzcn9546bMzOr1czxsjFyAyYJsEMQppw9X3VBE1I6h\n32dJ7KXHKw0P4GcR6lwXeWZw3JdBNAIW3tQfNn/2gAdQQL90st6UIAQydyya\nmuVnUXa5rzZkJE+LFeaS+ub2ZfBSmq/o4PDd/VzkhPxJTzaL0TzF0Cg0ZdAi\nPmMgZ/tFMM8/xUuypwylmB1lZqJtKDzOQkNrRo8fFcRTjUhhUkc5FopSf7Zu\nXwg9W1JE3yK8GIVS3x+8xFzh1ADCv87Di+mP7hcSOMnGWc5DjeLB3J8H9Bpr\n+I4Mh6ufV29Cjj9NXJjQ3k/5YXTLJcexY/bUSb5rz+9qTwvyQogo9gRloZvC\nXOkC2GME7V9Pgq7blCja/WHCm1mgVeZ1K/eQtf8Q6+8aGxR+RQp4Yz9Em5/m\n18LyA3Myl3BoPadpitun0bwspT68qdkCIFYLAgTQLyzemu3/iG5vsup6Q4d3\n+clXVzj/1A5qjdDJMbWeIvcZpZfZoLWAv6NHmhIZTWe3toXvtX4k942ubhCN\nLj+qLYsM+MkL/sCSqEKnQ3Ssu2cSAXFFOwq5fyg2YfqVyj8XJrt3hQ2u+xum\nAu1x\r\n=8/ma\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a80f81ad55ce4169ad584121d1a1f9b5ad3c6263","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.173"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.86"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.103-renovate-non-major-a80f81ad55ce4169ad584121d1a1f9b5ad3c6263_1620020290768_0.6493208335772653","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.103":{"name":"@balena/jellyfish-sync","version":"6.0.103","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.103","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"844a1a1cb2beda1d0d580dbd581c8fba51ec4eb0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.103.tgz","fileCount":24,"integrity":"sha512-T6bHwfJNp463QK/VwqqrRJnd4bk7I5AWdMg9APeP4Byr96Ge2GedIae3KiFQILcJGz/Z303h0opXZC6D1gvmzA==","signatures":[{"sig":"MEUCIQClKeqIyld2ngEBl/lvbYisLv8k2U5Xv5q12IbHnTw2dQIgUrjkRMgc9LEMTn8S0aLkgwWtmMlqGH4Po/bd+z6jYRY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj41PCRA9TVsSAnZWagAAdtcP/i24llePFipiCAI/cmu+\n5jgnog16cxQYGCXvXSMr74puwzyz6KtnU/Ayr3DiomQYOvjC1uL5/OHNxFi2\nDsqfr4aROInTqILcpN/CwXePBSNE9+Jchz6FKyeqTPs0RDyK4pSsMpzSujx/\nxooLxljd4QbhwGQu0Kos67siw+YDAIcEdjPYS8JZo0LI7zL9FekBFSWmLqoF\n2J4+dktlxC3NRFwvXbYd097aEiPLPpt90/ipgFs0PXmVkltMo5mpDC+BBYQl\nWwkx7NiEvfjJs2gxCXCDHb8dSRRQZIjDkKbqSV7+XN0aLleGHuY00wmYOvhN\ngJ4s5drv9iO5ki4KiTowmqcNF+oO7q7L0Xo4fbqkHShWkU8SK6iq1P4cx7X0\n3gaVDd51PAyYUZiADlMnUWRCCSisFgAuhFDV4n6soSLTM4j5BwxGxrq0Okpc\nl7ObYwVSQ9RQQAD5fXk6keOdTnBthjnOwF9WpFqTvIn6OQXY76T4BRoHFEj6\neZIIIzN8CE3wvZA+0LQ/WtDrZIPnf49CHY4oTk4/CXrniCIo+/jVVeZLZWTD\nBd+inM8QO6w9QmY8BeDp3C/lEBWXsppOD85JJGOaggG7LAOYJ96d4es1se+Z\nSIpEjM/9tGP/WS8Z434NXSfucmE5ICqzwN1UYnRUz3j40uh/jRKlEcDtadlZ\nY0H9\r\n=DFUm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0023ddd6a7a2b95fe2279d2545b137e4bd267e92","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.173"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.86"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.103_1620020559013_0.9086246509790996","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.104-renovate-non-major-1abacf109832b593de9d86bdd73877a90d0129bc":{"name":"@balena/jellyfish-sync","version":"6.0.104-renovate-non-major-1abacf109832b593de9d86bdd73877a90d0129bc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.104-renovate-non-major-1abacf109832b593de9d86bdd73877a90d0129bc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2f05c99b15383e146cc41efeb98bb95cb3617e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.104-renovate-non-major-1abacf109832b593de9d86bdd73877a90d0129bc.tgz","fileCount":24,"integrity":"sha512-FG+ahHtFL8LsTCX9jv8YnzyYKvcSUaOJWGN+2aA6Uc0LX6yUAh2T3M+xEhL6uW9ZctSf/DHoMHxWmpspzd6sqw==","signatures":[{"sig":"MEUCIQCW2KRP/q+KGSYKxI4LC6aVQU4Am/aNer4/22TK8GxRwQIgBQNjb5RzYlyKCyC1Nco160myyXjNWkanYjjH9UcwRx8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj7fiCRA9TVsSAnZWagAAjEkP/1Q72HOcEQbNWYpwYrjx\ntokQLGdiN9MQwRRNY9F4TftBB2DQ9XztEUuFc0kokTMSs3qqBhANFzaHcJMQ\na7cJyYUA9VSKWnRS4MTWzvjgWRP9qsHflUyDp6+2xTQ2jdeVeDopEJqagYLI\na0jEHiNjMCKzcV4xNCatbsfx9UGkDN8G5/jN3NShxY97m9Cbgxo13zpgFUUW\nld0LlBUZfDIoGOSIN9xcrdq/mfcQsRuHezjOgUWcbXYw664xnXvoguXyqYRu\nxtsuzwJI47SYmEXO7gXG73VUDS57HvurYRdH5NZERpFAv2swmO2/iVRi4P3L\n09Jad0xbnNh0g2YNpEq9Mxb27fQsw1XDahyPtZyz6YPAnN5l97SYFjFsOPFP\nHbUlHt6qyK/t6p/Vsl1dy8TYm9By4fslCyj5Pvv4vGZPM4dEQUNQujxRj9gv\nMfIIUKzB1UBzgaLPE8RmdbIOtcqMPOQYA/1t1n/3eXc33o8j2pveq4P7O+kk\nwXVxv+uAr70OyjNvFzsx+YZ2uQuyQIGsHwfV7PRg6jqzLJ9XOl3vZun4rysV\nd6LS5Mh4LiGyJvOc7ThL0lBf3obRAE8ErB501h13iqtJsLjJrAUnltBju2kC\nP8nJycisxsbv5argDKLCj89/6GJqHPnOUdf+F+pxT0/whdMYwWchvH5cesZy\nKhF8\r\n=/4N9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1abacf109832b593de9d86bdd73877a90d0129bc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.173"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.87"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.104-renovate-non-major-1abacf109832b593de9d86bdd73877a90d0129bc_1620031458450_0.1436657002869528","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.104":{"name":"@balena/jellyfish-sync","version":"6.0.104","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.104","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4a1f49232444f1a373de06bec95da09900a06f64","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.104.tgz","fileCount":24,"integrity":"sha512-ry+Y9A+i8ku2YwkdEW6oW1b3HYHHnjIzskx0PyDtimCqCzRy7d+7ZjeZgK+uxYtoJx5quT8WaPwBGVWmlAns7w==","signatures":[{"sig":"MEUCIESiGiGY0s0eC5d/s9XQwyKWNjG8zHpt1mpWU4HYYrTZAiEA4eQsiGcqtLgxRRUovNT7BZ45u8CqLOgstRK3gClciss=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj7jyCRA9TVsSAnZWagAAm1MQAJ80dcoHSlfd1L+O0U+j\n6hMvCLr1Lti7yx+QVAndxFPBXJD9srtEYNIkd9wK9xjb6IlKqII9Pd0ZWd09\nXSMwRqcaV8oydtCqqAeNeEi26jXszXDbH2+QG4FA+dKU+HhaG7dBq5Yx4LeA\nDG45BUyYDgi7L6t/nuXyje36e3klqnVUNwTeMvTCG4AkxKyuezeXOACuI9Sc\nFnGgoy5zM+sAgQ+pZdVImb8oLODbQX5O/KSBiaShn6L2N3/CCsCFy8bn2YT8\noaY3NdRL3fgm8OVoCBCf0ZB/vmsmCi7S7Ov3LfubvtYGi5dkfHK2AB48Yt4R\n3bFy2n6Eq+UPJtb+BuFyxhW1czQCjWLgVCzrUXFcXWFGL5/F+f8GbFlcbSIw\nsqpTQY2yLu6VbZbyUgiNgRRBc7FbiDvBy489OrdauUn3BNePpLr4vELpVMeP\nILDTVBVEFNJGuKDeH3JvkhIcPmNgeUNF78cInamhO1A2CBIUopvDxdLmkZMJ\nChScllRKhiL9365gBhEZr/5Vepw+IOUgRzXhWOH7rMd48kIfDA8VGn9GD+RF\n8UwEKMdMJzhtG/Dy+VNOmpen0EosTbAVjjNkFIULTxaYc9PwNi5sZmXwEoDg\n9W8NUhHznTSSt+LgH0a3AkBTaK/YHAoMd9T+2ZFnXDV8B/I6s7vWCuUigpIb\nrbc6\r\n=es6z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4bff2240bd3875a1d5d80704d8f04b6c42b714ed","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.173"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.87"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.104_1620031730059_0.7150069552292122","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.105-renovate-non-major-f2abcfc5b5035af921a114ada8fea4b78c0c6ef3":{"name":"@balena/jellyfish-sync","version":"6.0.105-renovate-non-major-f2abcfc5b5035af921a114ada8fea4b78c0c6ef3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.105-renovate-non-major-f2abcfc5b5035af921a114ada8fea4b78c0c6ef3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"71b5683d26267653b69af4d8a6465c420e01772f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.105-renovate-non-major-f2abcfc5b5035af921a114ada8fea4b78c0c6ef3.tgz","fileCount":24,"integrity":"sha512-Vr3M3aRk8CY+0u+BdMLwVtWgYJ/QsqpAu9kD3KKPeIs7ZlxvVAP8ANnIEyDfhyoGudh0GN8YvkDO+KR1f5VuEA==","signatures":[{"sig":"MEUCIQDFZzHucCjWQRmhGGF7XeLytwpF/fJb/PaaBdPAIpF8GQIgHdBDW/r+ePhIgeQ6IDl0ssa7cFcLvShwQoTV8k9PTXI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj80KCRA9TVsSAnZWagAAUxgP/jMv+7lHMjP5FPqrko8h\n0iNIFDj0M7ZjTQb8U7EqnjGi1n/V5KxGOqld3AFSEgQADZLDKMGBYuCOUWXY\nQ5cI+fwy1pPO+ZKhkapVO23p19WrrVmaBHrVqTEY4YPaAttL+1UuNmfTjk4m\nn9x0thGKriskKfkypjn3ttsS9D/bTY47YQfp2sMZWOgByczsqGKmp4skLnc3\nTLBUKgO928eOGy22TNm/uXsJK8iR8k67y6pXM7CQhQye8ajgiGu4Pc30TYBI\nrLUBxPVWtU8iOwEfk+BCt9tKPLK0H6prEJRmt9qlELbKE9w0dM0bi50oHCgt\nzYu+RW5GPi22PAb/P6ieLuNW/trDYi0smm3U+t8iUv0O/8jRQMOsnWfUa2/K\nlYQ222Cqf8oDcOtDuUVBX9dRq1DssyyfqTZfKtaLJnEtbjYMwmX0iQ/Tt2nh\nmhmgPoaTQdViY7B1RfV3Zo3/am17+mXSVyZJ2imMgGtn92lR//LwtGCIm0mt\nlxVWmvDM9h40J+jiuhllYhZqR4/KeKvOl9ggwkbfQTwJpeA8ssAqI+EX8x4z\nkuxii7+C3jARpXlJLEw086MSr4Yj7K59zuZrucZgGwXw3RXOBLJhtd4nmdqz\n2h29WXD6ha4bcIhnPtvCh+YZndCVNdVZ8XqlovJMPkbpaCfi6CWCOLZPKJR+\nbFOT\r\n=vufg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f2abcfc5b5035af921a114ada8fea4b78c0c6ef3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.174"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.87"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.105-renovate-non-major-f2abcfc5b5035af921a114ada8fea4b78c0c6ef3_1620036873876_0.5090099762897127","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.105":{"name":"@balena/jellyfish-sync","version":"6.0.105","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.105","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"437cc28f36204de7e3a6bbf07e212807a664077d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.105.tgz","fileCount":24,"integrity":"sha512-9hXsbpuJ96osIWomaL00t443TzeSz9kYM+KN/8gOsN12+RqPxaSx5pa4G1OLxs/IKHW3iFRE3hvju9w13pqduA==","signatures":[{"sig":"MEUCIQCo457Y+phfgGs9gh1gXPyFTxqWHrZm3i5vUO00Ie2xhAIgeEkS538uPakmg+Lad0yyr7GVY2dzoThGVDjffQzYXKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj84OCRA9TVsSAnZWagAAMi4P/iOO/MMacWN8ZMd2bsT0\n8d/yLkePx5pO8KltRXnj3KDkeak3BnPJPIZ/ZQqBG+k3g+PGngIEP4DsA/+J\nVP9KrYtOWTbXPAcDDvT/5bE/Tqmtf0CSsXMXIUxyilKLYobsW7BaSdyV6bvs\nPw5Z0BdSxAfEPYiXBpxsoMzKJOcJuBOhLXwR8IFWKJE0ExHFJHoxWJ0TCJpT\nGil2vId5qfKHVTfXfzh0f54D/GSKkOViEsx+RODCMvZrCigwHEjttON+wyn4\n1b3/ro7/oGTRqgESQtBzmaHioPUVGUIJotZjEdyYbAg27LAeEvGzTIioS0FL\nMjA9bVEk8Tn2E1V8BdSOo8q6hacfYjWqtM3VL5CBiFOFTvooet7Yo63tdp0W\nl45/ZovdIFsX7YnKS4FbkWyPPZsyleVTO+BN5GXXjqKIaFe7C5uKE4WTjvaL\nnJTeLvsWdnr9H1WyVi/plRVsPqHzwFmcRXjtzw5cksrZ429kx0guSCs5e9EM\niZ0dmvTapaTWFt3zqfPbrhzvLz71pd3u0JmnbS8kPomRuAlLwdwyYVKLM33Q\ncSpfFbJcn/DAp+Modg4CbfR2Nfie8bj6WH8W+KWsnqUeZCb5QS4FvYfZVn1t\nbLb7vG62IASzOi8yqobBloeA6FbcR0JsZJW1FxT/mejv1a4d3/pomZbxZUWk\n5Xb6\r\n=vKlh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ee85d1f0018f41fda7c7994f64795f88c49aa9a4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.10","@balena/jellyfish-logger":"2.1.40","@balena/jellyfish-metrics":"^1.0.174"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.87"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.105_1620037133808_0.9397050955502155","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.106-renovate-non-major-3ed87c829d9c62fcd765047bed74ba39e16b5cda":{"name":"@balena/jellyfish-sync","version":"6.0.106-renovate-non-major-3ed87c829d9c62fcd765047bed74ba39e16b5cda","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.106-renovate-non-major-3ed87c829d9c62fcd765047bed74ba39e16b5cda","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"570399f94b29a64c6df3efee59f5f99f8e646c61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.106-renovate-non-major-3ed87c829d9c62fcd765047bed74ba39e16b5cda.tgz","fileCount":24,"integrity":"sha512-3Msm4DVzaQbXk+T8DpFpNVvgOFYndoXVYnqxdeKrOCez72U34BRWM7diMcnxqD1mv0iARZdlyL5TLUh+LwnU1Q==","signatures":[{"sig":"MEUCIG5H5eio4CUQD2uzLkA/1smbiz9Uz/2XfmXMzvMtXTFuAiEAi/cgCofuJ34SHMoHqWJNwpPuoXEUUvrSynTYefk9k3k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj+XgCRA9TVsSAnZWagAA+pMP/2QiiRB41w6EBMHFwRgn\naW2HLo512PU/vNpyFXT8a6mFQtE2VGbbXo934r79TDdzW5YfEHWurL2hIGw4\nZSwmF+38kmpjyEx4GYe+qoiSJBsDb4PLkr4hCrwcs3nMz4pRS0pGNydzxcmV\nwKidVPjjgY5d3glEBgpjRV0eSo5pTppOCcdMXugibca5vT5LW9YfJdzQYtCG\n5AxJbdZLiM73+EBxdNJfSzGNT3k8QzOUBBO1+PEyHEMPIVZ9EEKIuO/Dw+J2\n7R13a+xw+bIvGcjECr82I7g1wLotAZqY2yd93mWoJerSq2Fhh9smUUyLRbEe\n8ARS1zAfXZQD8Q3yLSujX8j4+N3Ve98DxAgvx0X8CRP1ace/LXh2T4jt82Ar\n7rU2hopoecDig0VKdg7XLlcQWnvALIxiDnM9MN/+VZPHkBp0hQigXUI8cx+6\nQ+6e9U0cYgH1vR5wKZjwuncVHe5nBRVk7ATBHZKask0qmXDlt0zsH2ngV1dE\nn3tgk5vSVV2a6ec1gguVjfxepUirx3Xk3FuXmaVM5QqSTjxqYO4m45w7Nuz4\nEWOZWrDdgkJksPYkcRQzotgH2nx8xYjNb/rN4v2UKqnDfbZCHWOv78cgk9mP\nAjnRyRa3h7iSCHkniBZGR0mgbQ43blkboxMJ7kSOViGWolCXPTupoKX+T+c2\nHhHv\r\n=ShJ0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3ed87c829d9c62fcd765047bed74ba39e16b5cda","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.174"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.89"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.106-renovate-non-major-3ed87c829d9c62fcd765047bed74ba39e16b5cda_1620043232151_0.7479964989070529","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.106":{"name":"@balena/jellyfish-sync","version":"6.0.106","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.106","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce6328f4f499dde4e1aff3cbd4f4b26c2a68ba55","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.106.tgz","fileCount":24,"integrity":"sha512-XEzwCC3IXbIPU+IS8KCmR+W/7U5j8R61KpEKPQ7yLmwKZ4QGgT7PWgVlKGMxL0mz/lHZTRYCcfqbsnvPSEz/kA==","signatures":[{"sig":"MEQCIBwuvOXRvDcxptU3HukcJRYFoNuoPEcw+X3CwXl/VikkAiBNAGrSUHV7tuesqDp1DE/MPVYHZ/YKIDCzdyzT+58W5g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj+a1CRA9TVsSAnZWagAAy14P/3AhAYR+7KwVxSXErLZb\nUymQyhPTKV1iUenCE5H8e1lu5ib9D9+g0ITGmbjpHIM33vM63HrEGtAYi7r3\nFBUmXAoHNUKeCzIh3dgTorauvLtVK5Vgz6kfvgPima4FQsaHIDmk3DHfxFGg\nOG+ksKByJKN/XLMLzZAB15rrX3c8NFYWY40c845GQHWlzI19rJQyUp8318UW\nP/1LBpDE+H5CzOkTmatJyPtvkikCz8iy61d/K+RoqgrOeecvSREjDY5O+g5h\nsQ1qgkJy54Ngl5/UttfWRSsWTeAlkyuoE+nMjeP3lUlwAURiCxBAF7kTOONZ\nB8WedGhlccvIGO72ZlUwEbkP6a+ktDyJ7z/oZKZ4k75F4Yoh92zixG7tlnYE\neN88igHPdwhb9bUXW5VwWRbP+DFxTFVdYiNCifcJH6ZN9Udk6gDo42F7Wa6k\nh9ByYzX3lZrICKKIEyszEXtxgMETrCIDIqtxAalwjdBrazzT1ttbJLqzRHK2\n0LLrN75Q1ac7cifWwLq89g57+PGACmrXJnHfhkj8LDTdf/S6Zh8Fp3sWcI1K\nQYoiDN13pZ5iJR8HebNJ2CYVZGGzN1y7+HAG9bdmiUTvhERGmMyQEl4nG6PN\nI/Uw/sYzMhuWS5oaVCKlsDaDQ7fjfqMDx9/CgWQjZxND6FPnAwbODtOH5+aK\nAy2U\r\n=z7yi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6da2225a4047bc836c14b0f9b6532748c1c86b41","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.174"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.89"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.106_1620043445191_0.5614815014203454","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.107-renovate-non-major-e8a2ed9e75deeba6e59258a98e1fe2e958e23c15":{"name":"@balena/jellyfish-sync","version":"6.0.107-renovate-non-major-e8a2ed9e75deeba6e59258a98e1fe2e958e23c15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.107-renovate-non-major-e8a2ed9e75deeba6e59258a98e1fe2e958e23c15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d434731c5cd30363399af1d521effd2f555f4798","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.107-renovate-non-major-e8a2ed9e75deeba6e59258a98e1fe2e958e23c15.tgz","fileCount":24,"integrity":"sha512-hCGrG4o5S0MdVvZtjlVdzeP8xhaYTCOmRDvhX0RSzYWVAi8dJc4KMyjDnzqV7uU8thcqUSeV7BoF7bboEF3WgQ==","signatures":[{"sig":"MEUCIQCJjfbt/eE6Qb0qXz3A1hUHIJB94Pz2HqZYWheSinH6XgIgQjlEscxdQNeQ5HYjvDqgiu+uIhqPYFm+uuRkIOvIaQg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj+fjCRA9TVsSAnZWagAASNoP/j+7guBOgLc+/Pz3kDA6\nt9XGH4kaD5Wb/ZU1ELNzAXyd1IcDJ992ZgmSZAhttii/e9StrDRFyAzwguiQ\n9S7D/sPQXeEcx+EdNDsJfiuBDZujEiygAQ2ID93WSGQlCfNDcAhKYpz2z0gQ\nUe4VV5ZwCCvRgDIvD9fqt1ExxEibKXD7GusCUA/taisuwlwWn7DV2Hhk213y\nHbBEdgKmMuhdtqRB3S9Eo9hH584dDt2m9rahA5LFrqLWxN8FNonDbRTHY6vs\nVAwmKJXt4zQI57cSLpvaD+1Zo9sU5CXEz3i2z8i6mFgeLZLLNAlIaIslJWr7\nNxvW/TP/bq7OziFBQbWYhK/JAgHV5Bth8wCTnk1CCjpLt85dBZQ45WF2uPX+\nJCMvbzS4riQyHPZh401pJjgNc8uSRUW2aggp0rW96BhU45qWxCT4QlTce6Vh\nDhP5qWsrBnIMFHpkNcttip7sd3/fMlJFBx6kwMwqlPB+drpbM/ds8tDtgQRB\nEoniFFYnFopTGvyDXuYaPE0b0skv8UZcTwZOO4LJ1QXFN3IHZLXxpiiDedJs\n9CUVPA9x0rBgbbTT4d/eG2thkXukqwEH7NOaHSWRloWWA9vCKggYWfaa4asq\nVm4cpvhfR+b5cPckB2+rlKKVrfD88fmZxLvdnTLqNNfIVnd/Rv776wRYChH3\nKqXP\r\n=YXz+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e8a2ed9e75deeba6e59258a98e1fe2e958e23c15","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.175"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.89"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.107-renovate-non-major-e8a2ed9e75deeba6e59258a98e1fe2e958e23c15_1620043747005_0.634349455002122","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.107-renovate-non-major-4277b65109f4c8203c83338ab27efcacd933f924":{"name":"@balena/jellyfish-sync","version":"6.0.107-renovate-non-major-4277b65109f4c8203c83338ab27efcacd933f924","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.107-renovate-non-major-4277b65109f4c8203c83338ab27efcacd933f924","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a1ca58f1706231440c392ba3365dad9ca7a74e3c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.107-renovate-non-major-4277b65109f4c8203c83338ab27efcacd933f924.tgz","fileCount":24,"integrity":"sha512-Xg2m7y95MZYhb0THhwnjMqImGrRzIp3Uc+m/79hP0MxdKc7uE7A3J21GmxlS2YnaNe59eVwYNfjPHaBRGc3r9A==","signatures":[{"sig":"MEQCID/FMZDK3Rl29qLCiXx4pKIrg1vd9Ct5YhXKnw+lgqBcAiBD0uHxbiydu1nMKINgyAzLTPQ/8/53c8gKGNE83cm4OA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj/VuCRA9TVsSAnZWagAAn00QAIjot3UoNTXay7ZdF9Zw\nrz89w+nx4feTRM+P6CelEfs7bbPYFjCy3CRjV3GfGDQ+Vj6yxlZq78pMgF/K\nY5W+FDR+cPU+URyPpD+qKNyg0QXX2H6z7m0NFI4E9IkeLnmJGKmK5zzhh3yE\nC1Rwhm/HhQ9iyZw/jrstK3etKXXbIM/yyAK17rx0bTiYcq2oW8dEWdITyFwI\nMpEIBi9qipNiGcxHQoMmkKLWvCboIi56zZ8gXVfH/dLeh0i/I5HI4KuqFBcs\n6VT31HmC8MnwLxliMC1w0EJ37d2jD1BycWwGYSV/m7ibs/so7lMVe5mZIwtU\nGo1dKSYW2SuGcYZOwcrzbhW6z00/y2bZIQ5hZf3jODg0YXhUBiWN/E9Ta35K\nzZMM35BsvjAJFq4VJBJ2mOU8CIFa7lHUQ1CxbxKiT4u4nTq0kwvNc0aSjnb0\n8uj+Tk4gvkaf4xLmFA6kvrfIb56FiJbxHirfTVx1KYHMSgvCxzFwRo1ns8ja\nDNmgiOUOTP9/OEJKGp1UgnyUNn8wezcDW1RflVIT/htb5L0zEo4VEEwFez+a\nnhb3ytSqNy0WXPh/0j2uixMV1J3/s9fgn37D3sKlQGjKnBvt023gY25e/dZ2\nwS7PVmqkSpT/f6UvmBMYWmJXqEmLPf4bpEh1tuNAkFwWNjuhI3MqQ4oeRQmz\nZi8B\r\n=Lhy/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4277b65109f4c8203c83338ab27efcacd933f924","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.175"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.90"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.107-renovate-non-major-4277b65109f4c8203c83338ab27efcacd933f924_1620047213695_0.8104233545051822","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.107":{"name":"@balena/jellyfish-sync","version":"6.0.107","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.107","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d78c8c7d509b8a1d3c93202e9e265892e3d7a62a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.107.tgz","fileCount":24,"integrity":"sha512-T+D5/ubcrFS8Z1kzVCUB6cU6g51AlVfmL2Jpq44Kb6mJurp9ubOoR0xI2j+rpFXz+/yNfl4sURJdcsqZHrqCJg==","signatures":[{"sig":"MEYCIQDy/V60h8XUrNjOlXQOPGYIc20lzc13ISRbCvSFzNMetAIhAIKFYZpHq6FpAd5rfQWvgy64IbjEOzK5BLE2Y5vqkra1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgj/aECRA9TVsSAnZWagAAfpkP+gOqkLKPfHrCPvHJRTjJ\ngYw3BSkrmmW9FhSEawlDadTokXWMkiKM38V/cb6UCia11bGhrbqqiVYqkrRe\nqvZSQbADDsvmU/SN2+sLyMJazkQSBUyaF2rQO3Woeu+0SRgmVfMiOJQ6/dU2\nLkzNok98gHLSpY6Z+DsCTK2OY+s2KVULP1Ut0+5Kq9fGZU+ktFXbm5cM169N\nP3FKKDmP8CDLKadcUh6tf2yA1bqhMACwHrzYDeaGqJxjTiQpmI9RBW3YXVPA\nKm+NS3rliqbWgAesIqABtOqcw3pYCVX+a40GmTkGtnKvPh23PikSBhnmhbRC\niqRGiXruONnzEx+fesCQsFFGpSLSCVHEM+AjL3Q3QBv++WSUBMiNTYIu073D\nXDp7/KU1khrnHjl49TvTMd1+moZ/bCxnDh40qdLeIQ099cMzTsLeTNeQN0Wj\ncKPzx7fgE/38P6wWomQgJsa6JUiNimIPZYHVzYQypt+5jCp4stVc049omRb+\nKqZBnf4YdfyiJjY8AhF3UPptdbSdj2mFa1DTM+qKhsyTDq0qlSHBMluAJZsf\nTUKe6jo2I1gtcOHW4aqlJhaULgUlIBchzb38ZYl13F2GesSjxNO3J9hCo6L5\nu8SCDgiQAOLfJB99ADkurB00htTg9MQdxwF4ptQVwwWTJrstGdg7gbno3qIX\nDE4u\r\n=BPPS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9b37d0ec28ade9deea6948a71a3ab8781f231dae","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.175"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.90"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.107_1620047491649_0.270436207339005","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.108-renovate-non-major-0d263697a034cc220b40897f14ab00da8ebcfe44":{"name":"@balena/jellyfish-sync","version":"6.0.108-renovate-non-major-0d263697a034cc220b40897f14ab00da8ebcfe44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.108-renovate-non-major-0d263697a034cc220b40897f14ab00da8ebcfe44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"870e0fd394d9d3703fa68f0393072d8ac46b0fb7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.108-renovate-non-major-0d263697a034cc220b40897f14ab00da8ebcfe44.tgz","fileCount":24,"integrity":"sha512-joMxCBhtscMm+WByxHFr5bnza0Q4wZKf5ryQtS8qpT9Rf3fYHRDGeBEQTNGr4oF9s8v6pFJheHq/PKjKVEXWWQ==","signatures":[{"sig":"MEQCIDlW7pjdH5VT6gl5pOJaqA4AprEQpngD2ClA/NnCMlaNAiAngKAW5YKSTzLEb9L5y3jNZsLU8KlMIYi2jqSE4o+TjA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkAYoCRA9TVsSAnZWagAAK7YQAIlsvrLWjCZDn8/sFrct\nwiksPx64TPXofmVxdmfPE3I0dOk0wp8CRFP+6bGygFycV7l5GQLYypsKY8aQ\njXn+CW8nC09OHATQD8srkYM9ysgWPMRoKq9MtLQJ4HNjD4RjHsrBebds5asT\nuHFIV1bbm6Aal1zGEqSHECFgWqkrADrr2b10IHdOUaIWnImHfiUf64hrSZHJ\nR4+Klt5sFAI+ZQSubve/xlU1tuyl2MkKJ29M8snM2fdyfdpnLLveIicSosju\nl8U6MmfjrMYc6HitQvSmAKvkEPMXGkx/InrlcXB5aqY0sd7ePfhVYMVxhtsZ\nWL8/53mwfF6OgyOZzjBgYajCWva/pgo1Yn6ZxSjDi8eluJv2AuUkxHj+6NW8\nUpaB2SIf4/3ZW6nt5kGddyhRo+otmet4YyY1MGeiNYT1+PcQuvPKUrEmuPuv\numnTAfuro87TlEKr13qFn2J9ztoHu1+UoU1HqRATMBfUeXF+lOpA/lkQRgX0\nH1yfVqK3cOt+oLx8m7NXfXdD1BBNCEkXlP2Z4c5Za863MDUvsKRMnZjBAX9g\nyGgVr+Qm04zX1fqkZRKGepkEsyW8wwwGgVPVCd/EemZWvEbzzbD1R2f5+KEH\nasnj9mPIwKfzWVdlQVx/ehKTKOJ47xQ6KvPBtOxPjQ7qv98Fsj38Wa36Qsgp\nJA97\r\n=6m+5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d263697a034cc220b40897f14ab00da8ebcfe44","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.176"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.90"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.108-renovate-non-major-0d263697a034cc220b40897f14ab00da8ebcfe44_1620051495609_0.7929943388062384","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.108":{"name":"@balena/jellyfish-sync","version":"6.0.108","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.108","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9fa26c28caa52e63f791ded8cc2433cfabec241","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.108.tgz","fileCount":24,"integrity":"sha512-b/b5PuZx2RNsc3ACT4n5+KbMZVWYDjldU0uPoFd4xRDbFL1D3vye8egG3iarulNufpmfvs7diSoCIApadnQhyQ==","signatures":[{"sig":"MEUCIQCKR86wDth1q7WpmwDBFdIXC9CNrHocXmq/XDi2ZOUxxgIgQQ90mTaJgEXgPu4utUhlpZy/YcNxsxzXgyrQeCTkSCk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkAcsCRA9TVsSAnZWagAA9ZsP+gOGpzTZBVajTsjKHfO8\noTER3kGzSU8ph3uzx3K1/RgwU7KyfayTpEY00kGSf6zcOWD9dBjoeU7U6dsc\nolgaQ2IwxfvNnQmd206cjL/d8XbEzB7gw8p3+I9AUnfihqtvO4af8kmW4ejj\nH+VD3rB7bnzrTAyQOl8zU/hxXRGrj3uj6E/54c/W8BOFR+aOCSG5K5DrtB83\nb1LyufNOQSUjQuhMRxJ9uOXl2FV6GT1xypAt+Al1EjYZEjE6m24RTNGxn8Tz\nP1KcVMWaEXCubMGM4QH/OBBrNsHF4RLkHBLZvmLCInyNgnvbRa3EIAAPuar9\nFjAnFjwlMgNrA05M3AEU4oA1dWWVA2eIzcyTTon2Jyh7DdDvGrfBN2QaLll1\nnJS33z3/hvoVnOH+qlNq5VXw4PmyJKMqagYMC+lugJg3ePzZTVOfC6naLuKC\nTNELzruivieJRCvwvjMj8eE3boqzGxjXDA8g9dj1pGHSpj7f1rb78sRAFb+/\n0Iqps1NTIkvJn+9qnJF3Wl9MlvoM7mHLP2xOW+U0aaDuaxdt0qKCS/+lTWas\nIMTgJiun6KnceKwEReFkyUq/6yaRu0UdTyn7WaNN0IcQN21dtN4LoYLqj1oP\n8dqRvviKoyWCXSUzb37dVT88R8TK6KhzjNH5uSRTqVFrrInrGYD/FzjVD9Tc\njdVI\r\n=hhif\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"47df8e77653bb785947095b0548caeffc1f4a9f5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.176"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.90"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.108_1620051756193_0.006405695456825677","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.109-renovate-non-major-c658f627972b90d4f0eefd883f1882b2eb9cf7c2":{"name":"@balena/jellyfish-sync","version":"6.0.109-renovate-non-major-c658f627972b90d4f0eefd883f1882b2eb9cf7c2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.109-renovate-non-major-c658f627972b90d4f0eefd883f1882b2eb9cf7c2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3581e8db6c354a09c18d65272af994f2fa6a9026","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.109-renovate-non-major-c658f627972b90d4f0eefd883f1882b2eb9cf7c2.tgz","fileCount":24,"integrity":"sha512-V4f8WsQCcipZUF+gGM4IHQRM7zdO30rEhsHPtwjR27oWCMbg1MERL0j8E+6OqUBxxogzco77uTzYZhra8Vo+3w==","signatures":[{"sig":"MEUCIQCDqdKQltAoOSN4nUW/652gKVWW25gwaj0/c4RQhcuzHAIgF9ST32ETHZVz8YHuWksXV5biemwhh7WJJOBWOuSd9s4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkCyNCRA9TVsSAnZWagAAeoEP/3U0SeWvJzMS03L2hDx1\nvtnDC7pcfaxeDFzaEwHxQbqAHE42HLZ2zYi6dbSImszBe69yrlBWlVXRW00D\nte7TpGoj5WHSKRHYN3mspR4d0oyjfhrigU1MSVbapv6w64jCB+wN9IM2pTVF\nXRbTKcw5uDE/fVPCIxPXwGcM7or5cMdNi9A4/dO05Z9eKzqdJRLqwrRhS+Gc\nxenqSjS2a+9qfvkQXyGOrYzV/S5aLZdHZ+Re4iI1yW3rezcvvJl1TnmOIY01\nM1E/Rp1nzUX0ou4uh4LwdS/9Sc+B3EWL/zQzShj7CNxJ/FOPF7gAmRa+fTWI\ntw+mLSCMsBPehOTwoxMqWsKgi99WlEcYclTZ0zfRdDS2UfARpxgfUoNxzw6K\noY5auDXIUqIOBy+lWrLys9Tc13DZpKBNuSCd8MwzlsHIspxqpUHnttmV0Lll\nnFHvMC02anTPaHHn+l830Yf7cstgok0+vk9aAIbTVFGqNsE0NW8si5lgbiW2\nItMr3SX5jyRIxbLUd3kBFwrkaItCN23wa8/l3bpiohRM2gcbosQ/WqKRy43y\nrU9xWLe0su9LgLT6r21KqN6OPdAEMutqynIeEn9tlh/72KmriiaHycECXGkB\nMQbebePSHZZiIvXZ5VZTPHHSIY4jinLVkYsYte1L9hhO4WSV+35wgRaBAgb7\noZNN\r\n=CIsG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c658f627972b90d4f0eefd883f1882b2eb9cf7c2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.177"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.91"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.109-renovate-non-major-c658f627972b90d4f0eefd883f1882b2eb9cf7c2_1620061324471_0.6087222783867026","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.109":{"name":"@balena/jellyfish-sync","version":"6.0.109","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.109","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f69d461b57aacd16345219e6da7447c803246c22","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.109.tgz","fileCount":24,"integrity":"sha512-ZMLlIwSKsKpLHIvr/HQaB0R+/LTDD2k1QMui07G8nEelJuPasTqYuxlaCAyVHT2QfdVw64QuHBthmHzoK39/bg==","signatures":[{"sig":"MEUCIBPt5slvqFyLrH/0+S8J3AeWtBFjmUrTk0dNApfs8mHxAiEAm5qjUaEjR/lti6o9TA6HESBeGSzYQalHXe01MC1SB/E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkC10CRA9TVsSAnZWagAAJ7sQAJudF2UK7WDtaE8+M1CQ\n7Ky3pk/WLX9FUqfkD3aRj8iASdo8c2x1xp7PTklzOTPbhZR/Qh50gSjBdRX6\nCRhqGNeeUHK3iP6RIyLOcV6LqumYxBn7ZqcF56y9TNguewDd5lsg2jlSCDuA\nrklgWnnaHTie6AKiIwOR4xeuX+MjtWNpGcqHff4WLMVgPaTGu6QfItMNn/EC\nGOQkSngYeNsBxodVO7sUjAJheb+xWQjF56hwDFdtFq00GsXtGE8o2SZTWrOG\nGRRzNwL6CIAF9sQz3OndY++x+NffoL28UDATvELnrpfjRVHesk/Pn0fK30eh\nVPz/a8UpcZ5juOyBx/n6EGzFdIzhFc2M/P7KvxvTKwIhZIKvOQkoco8JfSU1\n2QgMxKTl0TMnTHNM+tQC0/nBOMn2pG596VXFXjoBYpXib0OGA2Od+LrEN840\nSWl4wGN+xoHrjjMKkJ96xSk7tZ2XmGsRwWH9hc16Rx5Jn8wigqaONjySHN0O\nHWGN/jsHRsQn6A9BgPkLfsqpYIAXaNyKKgYj9MwIblCJCwIiXlkAY2PomK1W\nG/SbNg8kDyJX/6wV566iMgp7Mhq3APZAu+WIzSu9Ynf379kyEtj7hBjKMf1C\niSbRz9cLQb/FvCuqUc0g6nCvxOFI3B5iVcCxqwolUdWH5Gs12/Liq6m1DbNS\nOU9b\r\n=AiPU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5724ff7c835d3793d4210b9c85a85066d4898ec3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.177"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.91"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.109_1620061556095_0.30739517431542773","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.110-renovate-non-major-6d7f521a125cf189753cda08d3d5e285f693c5a9":{"name":"@balena/jellyfish-sync","version":"6.0.110-renovate-non-major-6d7f521a125cf189753cda08d3d5e285f693c5a9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.110-renovate-non-major-6d7f521a125cf189753cda08d3d5e285f693c5a9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b6c4780d934383245c73417a3bffb9f3f01c9c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.110-renovate-non-major-6d7f521a125cf189753cda08d3d5e285f693c5a9.tgz","fileCount":24,"integrity":"sha512-2hXT7r4+jZ010LHHoXqyTgoYHJN70AVZIB1OGYld3ynyF5eNEgZ0x/LD9h4XtoWXbSYOCvEAkMl9ZwOP86Ej0g==","signatures":[{"sig":"MEYCIQD/AG0IUpGMhAr+KfRsp7s4GdOU0MGNsJg1fly5ikL9JgIhALrWhu6SAJiswoahyiHtOPoz6v/Uees3FRdEB9/+46Pr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkDniCRA9TVsSAnZWagAAFaEQAJp2SDEXsgcHsVewOaxP\nbsXd1cOi5MAhSbokV1K4EkTd8MqdHFcTVbxxNotfcMiHotSEfSzyrTitBBiS\n7uBfgNAZZSz4aMhCgJFCmPoQEGJtliWOXBObls9GK8y7dHLNOgSL1s/5PqJt\nv7Tg9svFbheZiWvCWLBTlLD6Z8XzBiG6iltpfODHRrPLerv79O7NtGLFeLX6\nBC593e20S7aqlp2omUBRGHgGD6+MnTqzRKbJ75/Oqiec3IXRriJU1wPXa4cQ\nGKvQfDpmQ5Pcqt8akmroGYMfGRYsBaVazZwbK2oowGAHGikObY8rNHJQQ2Ci\nwLEMNLf3xNkEDnFqOX4VWU6+7vnCXWNEZYWgp/c8ygIggS4Sl49RQ6I53P3Y\nP6GR674F6Oq07HqIUsTu2Du9cOTOl69q2863JxA36kWbmd6Wsk+86FYfxyWT\n5MBnh52nxBRGyqaLdLcv0OoEP19j4PN+4w4Rh2H1USw7/GxINy+AySglgI/V\nAwob8TloVf1Y4J/j4+9z5536EfHiReyLUP3lLI9pPeVDuLSFcgQY96Cs5mFq\nRO2bJXi/gWiiE/KLzsLXWtRo611NfWbmrQVahfLFTLEwXmmksMWGTeo3alSn\n4apD7WtD+c+YqrYou79/iWltUpWPCiG8khr26QO56PZS1KQgBlDXYaiqf/e2\n9XnW\r\n=4I5m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d7f521a125cf189753cda08d3d5e285f693c5a9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.177"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.92"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.110-renovate-non-major-6d7f521a125cf189753cda08d3d5e285f693c5a9_1620064738158_0.8724717979569672","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.110-renovate-non-major-9b136574ba8b5e32be1cd39ad4206af36c26a935":{"name":"@balena/jellyfish-sync","version":"6.0.110-renovate-non-major-9b136574ba8b5e32be1cd39ad4206af36c26a935","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.110-renovate-non-major-9b136574ba8b5e32be1cd39ad4206af36c26a935","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e62ea67454cd3edf3f45be708dfa9e160717631c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.110-renovate-non-major-9b136574ba8b5e32be1cd39ad4206af36c26a935.tgz","fileCount":24,"integrity":"sha512-lg1av3rX1kUpXYvvumOAzpwc+WGxnPuAYGIup4Bs3E5naCQmWe6PcV7zYw6gAGLWBK9mzVKxoLWKGjN9CXf61g==","signatures":[{"sig":"MEQCIFpP2QoWjMM1nrbR5hUrEsbVQY7I6hitAwrT9kWlf4jiAiBQX/d6iJ5chBFqWJCV4MBNFgKkgsifpLLahG0tr6E0Gw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkDsNCRA9TVsSAnZWagAADcYP/RLuvBHKp4dIfcKTay+H\n+vMJe7oJY5X6sskQx5fr1x7PvnTlNoEw0iBPC6NvcH+tXTrF33OFrDXe6dPt\nTzmvKsHXj71RHRh4ClUxqMtMEmJU6TYn27+L5ko/8KDuRsbvFUF8xb7SPYGQ\nQQsnv1r+HDSuIrfsQbRgPSlRkefeJVO8EkXrAaSYQLnBmvwB+daKSqC5RGwA\noXle7Nh9wl2Ejxj4xYpdAIezgNjAdUpDoxrvcFE+Z4ipYUVUPoDWuLMabow9\n4iBauEntEE1563FpP8yzopN2Y1NRKE0yG4nPaKpgL5lemOFQh+xfxRXxTQoZ\nPDZDkx5iuYuwVk16x5Es+aMqCi7WDh6wqpQH9hR42tIPw3dZ5cUnI+HELI6o\nfo/01BX8nNdJGJvq09cN1hyR2iP1bBgfNMNUCJjoBz9FG/wjSjF7DVDwahdQ\n3iFdUNwqef1Gm6k147bCVWjVYf7C5pxhz+14ji6+IPbIu1McOCz2i3T8uC0h\nJkY72kDJEb7mPYT2kjH3KlKAG1BcAsqdflr1UlnJbt7Z+qvZ/9uuIVbumrL8\nK3VlUILipEAOlXwpXKzN6UYQDAoN2H/MKqrcDOqfW/lAlSbUQuZM+ESKdwu4\npaaUzBpY+oS+M0k0uyPGeB7MOa2PKyrs1txSx2G37IvC1fUBSa8wakx7a7un\neT1c\r\n=z820\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9b136574ba8b5e32be1cd39ad4206af36c26a935","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.178"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.92"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.110-renovate-non-major-9b136574ba8b5e32be1cd39ad4206af36c26a935_1620065036597_0.6962319762449909","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.110":{"name":"@balena/jellyfish-sync","version":"6.0.110","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.110","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"107cfc26c187da4be15c769ff513738ce782d418","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.110.tgz","fileCount":24,"integrity":"sha512-C/QWpx9xXhJKjVLn6tB105pQpcb2CnwXNkoua9Y1aqVUz0215czSvLCB4ztNTNhDhEX7s/bxyRZXGqtKqNuarA==","signatures":[{"sig":"MEQCICwPcRebCpAROP25T1dwiSuIxXw9dttraYE6heWfRj1XAiAOMApXSADu9CB2AFyZGz2MmhybvUgwjpkMWuPwebkYhg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkDvVCRA9TVsSAnZWagAAefMP/iIawHXWWACc0N3f5qQQ\nTfScefj841LiCqNIfcTTaJVRUTVTvUIA+wOM0TplbyuoSyEwcGFVN+EuqtP4\naactqW+bEaSQY6ODBj6jARo3N9OY2epd0QYCIZynnpPB1cdlcAoFoJublBHM\nkiL/su270xIi/EOCjE1WPRx46VTz7O7mNSzdm7XCIbFpzGOinLBQO0cNZkgr\nADI9DqsNsiOO6a22/1RA5bOwFTxiJgHhzuo/WRfuX0yKFfAZsjuh5Wc9pQuk\n4bGRNd6PT1ZutVkv4P/iNTCYvQ+sck+77B8VTk7nwyxyulQ2qj0SVjrVB8My\nR/N/SYgb1GWfLYccdX0DM0uXnsvxtzk3KAP8Tqy2GMYzlP6lNzp74JcZvSbC\nG5bbVOfFoLnRrQqaydBgv1zpwPjyrLVmA6rDtZ1d83KYMWRvygEFrn2AYFkd\nvjq8BXXqndIymjUj/Gw3KMSkWyKPZJi0QHXd7eCjuZlyGJFQ2rl+dnYBmTuI\nvGL6ieWb4g2HreRNZ0KsMb+cfs6Lx7350gy9qO75u8/ntZI6QiD4fhEIKV3k\n50vXn+Q1b9/35w92H/+BeRKrf5OKFNK3PaYFu9iHLoaCGKizJl/VfilmtPIl\n1T3Uwvhum0qpAjm1ep+YT7zarew2ktsraqxGDHEQQFF76fukOENs91y02PRl\neG+q\r\n=hvAn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f808a9c589eacac4a8332d9a6e6e1bccb58d7467","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.178"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.92"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.110_1620065236901_0.5235051809847082","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.111-renovate-non-major-cd849164eec4719c63f1503e2f078b8ebec71085":{"name":"@balena/jellyfish-sync","version":"6.0.111-renovate-non-major-cd849164eec4719c63f1503e2f078b8ebec71085","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.111-renovate-non-major-cd849164eec4719c63f1503e2f078b8ebec71085","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a14475e791221d623e5d7f0da490581cda41de1c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.111-renovate-non-major-cd849164eec4719c63f1503e2f078b8ebec71085.tgz","fileCount":24,"integrity":"sha512-Sn2FrUFtFtMf6OZqhZYwqtRoa4Or9FWZmRzrcOEZoYsFXQPfodleE6hfHOvLdnow5ne7zHGPwt+oBbso82LISw==","signatures":[{"sig":"MEQCIFAqxDN7yLV/P+r0S64WIQU+HtMnahMJJ7OWyvimm/NDAiBBHHN8kZYoz0lsEIM93hDGlq63+AC7w2UCSoRyoRDRKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkF22CRA9TVsSAnZWagAAY9EQAJA63OT+vf7O4IWtYdO/\nT+hZq7KI5SIGzDoxURzt62i0nxMR52818HhBtSfU4ifVTC5cdQMv6r9IEGyQ\n4rpzfWWflAI1f0fyGg4NBAhICtzWfZibbbkLm+F+0n20Hw0sWqlfm9skbi5K\np1Bt2lF1U6AjYcsru1IOzxfVz87/82NgKJ9jBMAdIrImOfKvsf5OdXkSuUOl\nyneWsbVM86GAbEeGmssqSZMxZqL08TpsbUndsolqAzdryukanmZi8tAVpSO9\nbN6C5mL4+EZgq+uXNBGgq+X6C6Vj1wHnXJasIevZuPO2RLFt1y0zjBl80Uo2\nZYk9QtBReQ7+zKHJcWD+31WFo5rJDcCP+tWrHW9N2i0ej92WIXTlMKZGMz4U\naozq+VXQyUNnXDIvLf7jSC41OWYgY0mH1hN1P/R7gbEksOaqySgVGydvmRRD\nnYmK2EzKLTyKSK/2reOJ23fgJKudplx0S6jHikJCVQqCqEKrzWm+G6j8EJiC\nmkbdE+24g1uC8f4paYpoO3MW18HsaOKgxH6xrEhjYuPWHSZybMFaepgQkXW1\nZAs1LNB1JUGpRKt0AQ8k3NeLlGIGf52TCoMNaH6cne1Pk68B+vDRr9Bst0U+\nFEdyXT1yi44DJg1x0BASR2/kVtQeC6fb/6rPJWS4xB4OaJYAhPeqk39o1Q2E\nYylK\r\n=+KEZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cd849164eec4719c63f1503e2f078b8ebec71085","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.178"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.93"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.111-renovate-non-major-cd849164eec4719c63f1503e2f078b8ebec71085_1620073909629_0.3476958657665945","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.111":{"name":"@balena/jellyfish-sync","version":"6.0.111","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.111","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea86e5c830ea85be9c3f2d2b243e6ca56485c83b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.111.tgz","fileCount":24,"integrity":"sha512-NIiowsyZgfNx44PA0hRYegE0Bgu4L6nYK3ulLXVbvXrVNeol++EyrD+hBIW4/Cn0Mn4h3kg374DL4Vyi9viU4g==","signatures":[{"sig":"MEYCIQCSovPeH4eJqmOVsF4zLlGHBdufbXr2MArFjYfTwWbx7wIhALCcGyFGavXv4YgypprtMguQsOKYryDCquZj2e820riU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkF7PCRA9TVsSAnZWagAAcBkP/04PQjEuN5CQ5DSsLuoD\nYEd3IK1m3EmnLiERptLNLXX08ngT2bklw5fTs+5RqsTTLQr6c6D7moUXDViR\nBAf3sinQb1jG7Y/AGg3qRxSiUAdExAnsshVYGRstj+/5x3tCH1pnAMCgqdEK\nEPUc3TcHjPq7hcalLLAM3cJelb6/0Rey+gPgQqftA++05d8T4lEihoHWe9UV\nCMns8hKt/WhGjXsYrmGpMkQcmubXXJ33Nth2J6uV9X8fnc1EBwhP9nUugfQV\ni2AS02eQQu2z4JJyogKpLfRMxHYRRI7bg7hgkrA/8beHVptw44dhn3TGn1zZ\nf1f4p2qWVIuo/uePSQloDalIQG23DY4soAhFpb6kQzizCfc9S+KSFxmZprnJ\nZcLp0Bcgbf201EMlHii3dqs+jULbLvveWHmJKljPFk6XO3XEt3u5cxRLe/MZ\nYCVGW/xr/blwiVFRh3GyGPOTkaBvLDbFUz5fGsfd1FvPBhv2rwGUWPXaLHYD\ntT1oLbHX+Nh4cjIoV1N2PB1prVt4YbTrf3KnxIINIYA0Cj5ot29LeNO372Nx\n9x/ToiHam6sJAtKyiO78aRxr+3zCW0DOJe9kP1Pf/+39m4nefWIChM/lFEav\nHERtAwyK4zDh2Q5jloO/eeiHbi7MAvUY8JHd+94r7HZlA981jgV1in5nx0xV\n2gJq\r\n=fAMB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fef066859a8721b5258a9baa52ce845987fd8d26","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.178"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.93"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.111_1620074190695_0.5644805538233368","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.112-renovate-non-major-766135c7d6dc44d5862c5d019dfd2ba76a96e906":{"name":"@balena/jellyfish-sync","version":"6.0.112-renovate-non-major-766135c7d6dc44d5862c5d019dfd2ba76a96e906","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.112-renovate-non-major-766135c7d6dc44d5862c5d019dfd2ba76a96e906","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f66d0ac83f0632e3b08e58b941adeda7ad814c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.112-renovate-non-major-766135c7d6dc44d5862c5d019dfd2ba76a96e906.tgz","fileCount":24,"integrity":"sha512-97kfuzbDPLPCJx8BROgQuDwitZWT/R7mpHr4bL+j2fHsXMu3q4LPinF5Y5vT4U00UpkMD2if8xRQM+joa9Qs8A==","signatures":[{"sig":"MEQCIA+RAvhi7Y3ugi6P4Eiyjd6R7gUi8NvqApxI5xSO1mohAiBc+dMm+PVj2RSSwp7cXlgbLF0rfNcalTDCTK3hfVXoZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkHarCRA9TVsSAnZWagAA33IP/RCbq7WLDkdSAGxudOXx\nCGW5//bG3/hAWuS96lKLp4zw8nHxokj7PNjVsl/eogpioqB9KEQXzqYIaPf1\nnzXXfv9A1Pq3FjnZNdJZUES/EuXbw/hj5INCb0Jyi+5QvNBdfMgAQqPSu1vO\nmtKTsJXrTR1QV33pdvcUTjrHqTosrxjG7CFv+c6KDmV6oWE5SPmFSntTMwFK\ncUE6m/GDB5NhXzaAZwlRO+k5afdo4RuR31bJK8jorRuq/tsFggOVCAxtyYs7\nPKbyMceyOxeSoMVk2aMcV8RbzHoJSWGNNwjc/jKnUinp2he+5QYDK0xPddm/\noXab9jBe+DEqmk/1m7iJvMt92Zu0Byf/rKs7dXubvh/0V2oSNV9Gs0nfOX1d\nLKAQ3OBM0oKV7/+YbUSiGUCoMxxb0bjrJjMa4GirzSRYFcRQI16Tmhsm+P/C\nq34TsOnMf1jG+0OSLOYj6rNgKcUQraKLk2I5gIYjfiwWAu1qS/CPSLyPaVrn\n2YuTUjDuLTjIqubUrUeWU54YqgzhNthJMCZtIqF2BHCjUuE6rX4yXmZe9FkG\n8TPNkAfyEG2xjkLv9/8uU8NdkIKOYo6IZFYDI/y3kRsRWBnVsDk1085OCJrk\nirPUnXpfjqfZVmw4bqGiwhE4QHY4IUB3qVnl/98noMUhwpTAJO8pOnknCQQ2\nrQEN\r\n=/h/B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"766135c7d6dc44d5862c5d019dfd2ba76a96e906","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.179"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.94"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.112-renovate-non-major-766135c7d6dc44d5862c5d019dfd2ba76a96e906_1620080298842_0.9773167666333527","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.112":{"name":"@balena/jellyfish-sync","version":"6.0.112","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.112","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63b00d9fe4c23bb16e44bfd89849d2f61cb35cd6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.112.tgz","fileCount":24,"integrity":"sha512-tNZLL2OCITu40dFTrpGfe5YNb90/VV+k7QkaFLNkeYloRnMYB/jTT5OoTmA5hY0TdM3JY+ihkua0J6biJ+mTww==","signatures":[{"sig":"MEYCIQDIpmgTUx5cut5YM1E6i0S57nLeDXXyJxoh4mf6lAhpXgIhAL0uv1Dye+GUFFT/xlU9WI9at4yY4iK50EAu6ApB57C9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":157966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkHePCRA9TVsSAnZWagAA4x8QAIZOLaRJoI1pHUFSmx68\nNOXBuesQJ1DsoNqQrOWb2mkmnjleQrE+XzD/Hv3tFR7pa4Dik+BHKp6JKypN\nUAM4RKBOG5ZjCliRsTv1eaPXUdBwSerxF13xArzjZZb4tWPa2bCbZd94FxK8\nhRErvtm15BS/u164jQqQ1jM0cqKhvs8lgpo/NiwGyMZ1buR+pGqhIirGxNn/\nkAV8zqWXsTX/vtW7z902OcMetfa6kGt2P4bnQDdKNXyoHpjWOt5GLQVPoWM/\n4TPF6ZZkRnj7gxG9qaHEAEjespQBtwW5kMztImPTT22HJtWsSn9HGNB0dSHL\n27HcS4tJ2ljAf5d3orP85DvgZ8W2HfH7FgTtoE/5DRjAp2we+bKo9Q3O6c8P\n32522EA6DIwc//XDY/cg3e96POQh9tMunSQGL2huF5k4UHBNYwAzlltssQ7F\nbsi8Yfwizt0eHIOq/fzNvmMgYvNsVF4JfeL/4dQu5SCB4Ll2a2kL7nCL0gDv\nVrpDOmgupx0rko5nNeirtIDgBGc76itOPRoeAJ/lyt49ZS9GQxa4ZwDZ0jvX\nBK2ut1UQWxM7/4V5S2So4brNxDfhNk9y4yUuU+G4tXQ3w2ZkPmOM1ZqrhGG+\naJMsZT3hCkIA8kXbkSeJ1JJtAt1VJZ5u/jolsh3auvTxZyVW87tx+4ZpWgwE\ngo7J\r\n=JwU7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9b3c21ed9f61bb9b34f4a2977cc9469f01da5c43","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.179"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.94"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.112_1620080526872_0.3539763150167956","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.113-renovate-non-major-4895943966599c4cd1829e8381413c98404d63f3":{"name":"@balena/jellyfish-sync","version":"6.0.113-renovate-non-major-4895943966599c4cd1829e8381413c98404d63f3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.113-renovate-non-major-4895943966599c4cd1829e8381413c98404d63f3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68c196b8cc5e27cec5438c0cc390962652d36ad3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.113-renovate-non-major-4895943966599c4cd1829e8381413c98404d63f3.tgz","fileCount":24,"integrity":"sha512-IX8a5bEHUfs4s3Mtq2VacypEriVGEPtoOx5+UUEm2CMfRad+4eOV5MpH23LXJgX9WmLY96SWK5R6tk2W5zb1pQ==","signatures":[{"sig":"MEYCIQC21blc0GDZeGb7BTiIxkF7Xnx6pleYD8kWWVxvUYWmGAIhAN85GWjCfRltHQpbA+75wt+iCgRJdjmnB/DZ5uzTK33y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkJZiCRA9TVsSAnZWagAApQQP+gLAWdArT8o9ETmn0jnc\nV3120ISovP9XpUhF8AQyGqbk1BUqvCYkwRbooRsejhHB9TUxv7rfFmO3jZL4\n1i+nOrrOmAGXRZzIus4h7/30MDTaY98RHUO04psD53W3/wELrLwDhU0+0gEc\naGeJdRZL1L1xP0rhHVnCrNRPbi7jAnDQeGFpMUzh2s6p4XH3ObNJeQvNmVxi\nUad4pvhkmIAvgZ91V5J/EZYasi0mHrCCV6Us4vtZDvU0k7s38z5uyDsjaMvU\n42mK8pC20le7sl/PH1y+wnecvZx5hkOkJgK0bihWy3rJAIvvUQs21aSNp3gP\nGpeLKW1JUp8TUuhpxmVz3EhE6XYoIADer/Ue5J686+uuxpB1c2QxLcs1Sbml\nAi0WOSV7DUtW+w8LdUhlTEaXKKMGIBV+z1qas9RpGy81rmf2Q0GNAQaJyIfw\nOBQOXQ8ay/ipRzQEUp6bZRtTP+ce6iovApZBA+ooub8aPdIYhKQJD/n4kwm5\nipjAmsO5EH+Kwk8MqawNiwjosxiq+my+fw+mhVNgh42r1gmpFcHXeOvGNwEP\nFFvJoB1B4ikgwnLoEpleeBXQl7DIAutLOvHu+//AM+kKJuH3ma/xVmtoPOi4\niD22rZsRRdxQj6URtRST8QF6MIKhgSevmfsRD1psmIJ//RPKR7uZACOXFWYL\nJrtL\r\n=+eae\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4895943966599c4cd1829e8381413c98404d63f3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.180"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.95"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.113-renovate-non-major-4895943966599c4cd1829e8381413c98404d63f3_1620088417602_0.38777138585363","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.113":{"name":"@balena/jellyfish-sync","version":"6.0.113","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.113","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b78385b966e5bf7b4a1231a4b5dfa11bfd0bd4f1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.113.tgz","fileCount":24,"integrity":"sha512-IplqAmgUMoaD2eJzI467ZAL77v8yfjACFM6cvIDPefe/LGLxEwAWO3+yLekYSZzbI+CJSdfGOV60WpxXwIzHvw==","signatures":[{"sig":"MEUCIQDb9ZN7+Mke7ukZM3weikeV2UjJUV4jz+T7Q4BG0HC87gIgW0XgWRjMKPnKHlGvvTpqrTmWpP/QleupWSkQ+1hskyw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158033,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkJdECRA9TVsSAnZWagAAzucP/234mrt9XlKBFc6xtfEW\nGrq6oG81WCYdAVP5eVqMcShsKcXDM9Y4axHnB0UguKh74kSFlv1CPCxW1c65\nPgmop93kMzxLd+zp5FWYCBYOe6uKhYTDOeKzPWG3R/MOE5WW4CAgbzLDrSzE\ntk8H/GmW0xItRn19zLciMvg537tAK4dOgd+Vj6EgaiVvYvOljP7lSZNoo3+R\nhSCbE58KlDECIwvDMjgAz9eD7ylSo2AcvF0osJqIqP4btUbUNWXZt+Daf3O2\nmfNtEasGhNQZPPdSwGIkcnJeGTLzoKW+HjGwxYP2I1StTN+k7+5Lqo2eDnYm\ndhRr/YoOG58Prn18y9BEmHyqYiymp+17hfMuISn7R2Qe0EMestbgBXP9Magy\nlEV8wHSXYKkT7xNc9nCxGrdi5qU9caPOh2QsYNXGsnJyiXQD+ziKgGM0gJp4\ni/m/qXy1lT5u+AUxik29Z8q+tcLb6/AgSbB9K0MwYTaOVzme+BKxrRXuck0c\n/6tSSPAYjCw0s61zKIXv3YnLNTn5yJE3jmWDEGG5Siy2JrKtj7Pt1R/LTZ9G\nd58M++mLNTPyCW9SCQl65N1NBoo14ryu/++CbrHkVjfymZ7WQ/20N7cW37UY\nSqBIfLDm38oVgH1StMf8mQt3MaH/IAhRMYj3RlW8/4IfH58Bu9D0D0/JtVSM\nqmau\r\n=Vrb/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f1122bb264e69440b3734680ad1a0aa23db54cce","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.180"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.95"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.113_1620088644231_0.381795813447354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.114-renovate-non-major-9df1499ccb8818d9f431f937f33ed7b747536ad1":{"name":"@balena/jellyfish-sync","version":"6.0.114-renovate-non-major-9df1499ccb8818d9f431f937f33ed7b747536ad1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.114-renovate-non-major-9df1499ccb8818d9f431f937f33ed7b747536ad1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d27038b9b6cfcd2a68b4d2a8f699a4765a38b056","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.114-renovate-non-major-9df1499ccb8818d9f431f937f33ed7b747536ad1.tgz","fileCount":24,"integrity":"sha512-NEt9JzHYwysM9YfqgQqmMCBTQ5NkTZlGWZDM8+EWVQ7BJHsXgWSi958w4kiz3/smj0HcgCPtBqxlzC7fXFU6mg==","signatures":[{"sig":"MEYCIQDXgSorm2v+SaijupyXXF+5CTGGuHLLN6zgmQ4JFsQ3ggIhAPGHrjPk1E93oUw6ireg1pYLkKbCjhPYCHhNitGnsNv5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkKiXCRA9TVsSAnZWagAARsEQAIk4pY3IiXNxBJJ1WIcU\n7NPG96mwWIrzwb3o+4b9/AYzHiTbGAvfnS373R2hjYBkcumQipobQYWHFMnj\nnzlCed83dQkhciHe791VQ8GXhCnvr79eRnwmqNUY9s78P2aObNjmEVgbzkj3\nOvSpOEGSi9UoIcOBEHVtWEWeHctf/HZ+1ziqgfUF3bXCKi3OBrseDnKM0Yly\nzh24kGnZx98T6g3Hr1TUdqLR0dYcTUnWcRY/zt6fTLyvzOwYiWCzp81KkyCH\nuFKh+8nnsLnPKB6N7vDq38bmfCUtzDglbib41ph15tlczn68GNfCno0Ylf1c\nql52HWyxN1/ZGS5gvY547rs0l9o+i1gxHZNS9TPe5TPLbAQ5l50eQ+d1a8VV\ntrfvfTScMww76ieVXjzvA3xXTIbNHprJnADmBg58rEBPszOiX39pq1gxpk4h\ngFSu+hs4twFql6CZJHwZrjgP+I+hexJVrBQnjN4QOPcbC6TknhkKbcL8Zr6N\nQ28OshZPDPRxXM8J2PWJ48doqjvJecP94vydjzdUvh2JJaxGvm5kGnUR/1KE\nwsTbovA+8BKQSMR/t0i3v67SAx1zLS2AuFR59a/iCoLpyNE0VrTlcrjk/btG\nArCN4rHZ5sfjd2WJsEsjGnnAU+J1X9iWOMjCcidZFZ2gvEbNi4RZgnoExEQc\nSKLS\r\n=BQTC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9df1499ccb8818d9f431f937f33ed7b747536ad1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.181"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.96"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.114-renovate-non-major-9df1499ccb8818d9f431f937f33ed7b747536ad1_1620093078724_0.962960684572898","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.114":{"name":"@balena/jellyfish-sync","version":"6.0.114","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.114","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae2cb76b14107ac2886d886e11af462531c3e277","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.114.tgz","fileCount":24,"integrity":"sha512-QHLdZy4qFhlDhWJE5EcFNOUNx0SZSHHu777JoJqHZCgC+6yWs6X+GB0l4m/jUVZzyr/4iKHeYvCbb0uPJg4iIQ==","signatures":[{"sig":"MEUCIQC8NgaQJHmrQ3/dxJxn1zss40Ah+DJNF7WF/wWVrovTWAIgDLDhXkUNFH6a2MaEj+EVZZUeH9fiC1RLgCL9M/XaWug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158100,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkKloCRA9TVsSAnZWagAAgQ0P/0OxJbIrJCXVwawDtrKE\nj6cESVu4r1QuxsVSOxrWHetx+C2TPUdSp4IXhScmQYn7dX7zPWpP7r40lLO+\nCaJVGgq0ybxWeuzuEuZTTciHIPJTH/PvLFh+6rTSguzGIJuHqmi+39Cbk6Xi\n5GB+CL54YHf79Y+RwUsRVWfvlhLCt1G4JySlPqhUvS9/nfXm8/11OFNFrNKS\ngnxa805HqccPxeiOxYhzLSbwCbdBLKjLwB+mGZzE0IN9zdAJZ9pGg7Qzu7KU\nncr0UdbLy+CgqzmoAFkueVkByEHDYmbfzzQ5emLk0OKvEWdo4B76H/n4T6ED\nYyDfMGESk8B6UdO8mYaZjuLAPoLhLin7IbBKq1NrX65U0AK9XGyLx4F1w0QM\nb1DEjagFFUmK9uqVGzoFRykgWRUf5b66V3uG/MFcmYf3aCcTrElrn38r/v85\n1KCig2VuAXcsXS+FnWkmF/+jg6RtFkld6mQxWAQGmgONRjI05mHBFGO3/OXn\n1u7A75pss6xadH0Bi2JLdYP0Mg90NDvWgZazu3PpLTZyb2LmZ3xi/XrRx2C9\nDrOIUioMS8qpWGQO6oNefgtxNbqOH+hsrVaAAFx8Y7/MD5Jbugr6/Gt3o4qD\ncjxkuynUgFPx+8kjVJ9dKyojp/1Er4XdaYHQqnf9WktpqqOEEBFIBHjeDsmJ\npzv4\r\n=B+fT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d00203e8686ac5b4481a2bee62d6b9946d3f67cc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.181"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.96"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.114_1620093287735_0.35898094143686454","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.115-renovate-non-major-0a9d538760b179b69395b8e863584f2841db9a73":{"name":"@balena/jellyfish-sync","version":"6.0.115-renovate-non-major-0a9d538760b179b69395b8e863584f2841db9a73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.115-renovate-non-major-0a9d538760b179b69395b8e863584f2841db9a73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de81c5ff584d61f5566ae30580435932ab7b00a3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.115-renovate-non-major-0a9d538760b179b69395b8e863584f2841db9a73.tgz","fileCount":24,"integrity":"sha512-wRZHk7ZzoBkA7ghj6TflT10BkgmkPuGSMslu+BkGEUK9t5VBqEGug2IJKc7WK0rCPOdSxZmACwVf9nkeg0bihw==","signatures":[{"sig":"MEYCIQDKnxpMGoEVyixem01mz4Pcq/JOTMdKpgku+VVvnmoksAIhAOUVNE7mHT1ixIWc+hfel1opI4028PpciJORXEkweJ2k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkKqSCRA9TVsSAnZWagAAbvkP+QETNg2F8Rg868wMpcY5\nEI1OWy46epa2U7j60MNOCeHeUTiczGvSC4iWJw1O+GX+7CnlBgI+bTK+gr2M\n2s+Ig5Qn+lJVh/563E68inF6Rg3vLR78bFPnZCZdu9vpoZZjk26aieihdpaA\nnlD72LHAzNdtpYS4E+VcrmWCzbSLJMYsAs2lWX8vlUDfHwQVqxf49mu8yzG8\n8pwphWafE7KSFNV16o4u99v89ANDxbS4mK8oR4UPx2hKFlTtv3V3eg7MTP1q\nMPX0YoBZVPM4TYd2MiGwfa78OrLnaC9tWerv26wjCxcxVY5geo1kbrjvLiOJ\nD6aP8XEqooiw/b8dJduJ2Cg6SovYPqh+fe0BbFNuM1Um+nH3PJk1XOkVulbg\n5B8Nzm0Zr32c0Zu+vHP4S5sSEcqbTnEEBlLoyerXZWkPlMuY/0SwIV+yBP5c\nNyP4UU9pUd0tKXW11VSxTKYezAYbhoL4Q7nS+cKkm2zx0g6LxUjXFo9m/4a0\ngdEgmHPyYmGEIl7xmYd2v4OOObzU3DJ4c2vErIIRC+YRANaKu69+VX2vY2xB\n2y4Uhe7Ib5PjffEcRgurYP+7dtLPOIq3BvyC4eueE9T6WqMIUK9dkCfgdhnw\nOH7/XNN8Gwv1iCFI5CEVfkIFcDByL7m2A1J1yhtFzhvc7/l3fweuMzanN87u\nw6jX\r\n=/kLo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a9d538760b179b69395b8e863584f2841db9a73","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.182"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.96"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.115-renovate-non-major-0a9d538760b179b69395b8e863584f2841db9a73_1620093585934_0.22396363049879153","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.115":{"name":"@balena/jellyfish-sync","version":"6.0.115","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.115","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a73fd1913dc44bc2803905bcc107a16938dab727","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.115.tgz","fileCount":24,"integrity":"sha512-jHNirdSEuJbmf57NqxIGKnLszJnm7jOoG+Cvh2HgpmVKMBdWZ20jzJnBgV8ZJm+Xl2TwkJSMzrwip93TooqwCg==","signatures":[{"sig":"MEYCIQCY1SNfnxHc0YoaLLBpU6AZUrhcXwQOuSk59YXNP+UStAIhAP++qsvaCPHZKaVc1vj0vQae27Oyy8gypmRqw1VAnoxt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkKvvCRA9TVsSAnZWagAA3bAP/3FqFoXZctlCrz2RTNGr\nn0KmXEGJ3q6Ryy4kLe4CsltIgS4ruSADBSOjOHWT7bO1G+Zl0CnEq/FLrsjh\nydpZWZBWbEDp6rTs5peUaGpADRCzPyREFe5OxKlah+VybOWEJzQzGLAmm701\nkAhqeE8u5g2gHYuX4aD1nZCoRljvePXbrHNBMkM21jv9Pn33AtGPxsZEDOzl\nMESk8WShYUS3ijRSjNnAbQv605lmBS2KrwQTbhbLzwHRKannhajBbgAj1Cag\ngDV4hT6IhjRvPBogsTkD/1AC0N3yclQxVdB3sM/pV9b3A/VYyDHfL/sYIL75\nmYhwp5+s14AILkU4ahCQpsTIb/3KwfgiYILJJAxM+3oCBvf1Wp5W6QmUZ4m1\nYLMPkkQ8PpdYWveFf6iSt9SVMjev0qZkoAbXlFu8ju7Q8zsgfOMayZJb9/xW\nb9S+tjetiPsB9o6f/anV3fjT/vZuTgxrbvRUxE7UHEu+LAJLl+Wp5jUHyhl/\njB2WFYYLxoSgkZi2XQqdSFHO/gRlmIrC8vWevzxPQDhfij9BagXiuI9BSCvi\nY+I2PZS3JL2IOV6T3tpNH+7BPsoQeMCVI828TRaWSN0+jKZW/CT2EZGKrFvL\nm6RRT9En5SeSlrhYoa6eLWCx/XsNUxey8YLT7iv5EdHxqQYYHk0yF3dYYPKB\nHBFB\r\n=g7xH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"62f8999481210e85c48b11e526806d5e377bee81","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.182"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.96"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.115_1620093935459_0.1787656679005707","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.116-renovate-non-major-8cac790f03c9c2b8d06b3415832d8cf56fbae416":{"name":"@balena/jellyfish-sync","version":"6.0.116-renovate-non-major-8cac790f03c9c2b8d06b3415832d8cf56fbae416","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.116-renovate-non-major-8cac790f03c9c2b8d06b3415832d8cf56fbae416","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c7e1b69af19595582038c88b1fa002b02d1f3b79","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.116-renovate-non-major-8cac790f03c9c2b8d06b3415832d8cf56fbae416.tgz","fileCount":24,"integrity":"sha512-XJcE/NkWBlR+37r17QRyt6mR/w4Y3qfI7fDa2SCv4g6WW1Nqba9Bw4FPWnAfxLzWMFH2XZPFUYZ+RXcdlYaKnQ==","signatures":[{"sig":"MEQCIECizTy/rvQiyMW9m24oxT2GB4wVgkpVIZuoBzumWYFFAiASTUZDPIv1vgfHEI8hT64TIH63GOLFBT+v+M3w7hzE5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkM2OCRA9TVsSAnZWagAAz9cP/A1iZKLFFZW+hUHz9EzC\niqmENTGm8ZenjOG2dNs/dkzxLI8+kycXp8dt2KRoDXwszqOhnc0fZFdYk1xK\n8EsmHDMJdJjZVgJ62mfMfVrFRtUurH6NmpKnfPK7g3GIgkdGv2ScjG/Xg1LI\nN1Kr8rjGNHCPvUwSPBGbiblQpDeQY8/FtovnU3Hj1dHtH0lmOldgA7XXC0+l\n5Ebg6/30BmrS8PDdm2ZsWajVbvZF1RiCc0nD3fOe3pAwFqvZj57QE5761MGG\nGwl33Tfp1WzOIgOqk9FnxERXPx3WX36acU+EJSToqQ1lmx2o+to5p/t7Y4v8\nsjA1aCf4ZOzBL6MJiogvqzSno7GunRNWARbVaCoOeNcR6uom4WMIhu6WNYYG\nkNw54AkHgUOuno9c/Mrcmr1HuNUKSMDFA2HMk3WD/gR3dLKxq03exEboZRrU\nMD44XEwmHtQtanoQf8My5zQD8arXaEg8TWIESGDkl6HJbNc7VC2+hqfHESQ1\ntJo6iDuuYEDq/0GzyMRZH/yv0pGv3MI2MEdKHa1rhJK6ndUoG7xghm9gc2dw\ny0htDS8useRfURazbRUhygVHq91t/kvl5zEa/ST0K5IBXcN3FpNBKPLYwFON\nvJZlDFJcokJfJ/8AZDzY0PUC0A4CGknPXkjoNRrfh8et3BHtHSoYit9Co25+\nXGyh\r\n=mMvl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8cac790f03c9c2b8d06b3415832d8cf56fbae416","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.182"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.97"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.116-renovate-non-major-8cac790f03c9c2b8d06b3415832d8cf56fbae416_1620102541614_0.1358143370615157","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.116":{"name":"@balena/jellyfish-sync","version":"6.0.116","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.116","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"418a1436302fabfad7acf96f2cc1373674612856","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.116.tgz","fileCount":24,"integrity":"sha512-mhHClkQaKkA1NINrQAqM0nzRxDX66LBsAejoHpLujr51CuZia5+AzKhva/AvNdXNkEVq9Q8aN1WDd/Z8kMVJZA==","signatures":[{"sig":"MEUCIG7RYTSZfTyyF8/zl8FBbG+Qx2Hoao0pZt4al3RSI/lxAiEApM+fc9I+T4KM9ymGeRAtC+/opjMJ9qzMWqBl60Dd1bk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkM5/CRA9TVsSAnZWagAAScUP/0yGMrIgRZxCpcy8qv/t\nydVgisuOg3uKdkiRFUtueQ9nlf4aUI4HTz+rr9f1lM47PWICk8Njr3GBpx6m\nf+XcaZoj2h7U6ZRpGOd6MCWhkc0VQ7j1T5MhtKuFFsxdnreGxXnsWdxkyLkz\nc/BsV42YXxQ0LM/5t2y9ZGRdjKdHbttmFXOjRZ57+U+l+SXecYwFBsZLdVff\naLxPHCBAb1nOhG9wy7htT4umoFFWonGu5866VFkRbccyZP7s9B6RM6BB81Vq\nRuCKkvmJPeUuVnQ2j93aY88WJ5rpJ503MlH0rxAILx+5AiZ/B4i3LWofdbvf\nzbNe+nWXqsN7UILqbE+6b28npbh8OiZEYiou7QGeT2ZAmsGmiKeSRg7j1ln2\nr9MMFuUsMRkl4bV8hzDpzR4pdW0VefLYenzyhosab+Lwypj43AI+OC3iIplf\n26zBaVSdNGsVUv8b3RqvzVkxkN53DaszBkWjBR5Fca9FaMi43l55q9xiALfW\nmNKYf4g7pwgMNFaT2Fzm72UG7qOS4A0OQsOe2nlrehnJszNXk8ZMOCKSra6g\nm2CAgsZ7cAyw1BVx9iXpX8TtY9SrzvK4VfE5wndmOgmSSBbJ5qdGgmOIIPvq\nf5oZABxrznSr2HAYROHkjx28JU7KzwznVUMixssefHjpvlHvpgxVtlnpUmdD\n3/Zg\r\n=EK/5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"34bd07af470f808b882b6c3395b8bea31c6c4b7e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.182"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.97"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.116_1620102783334_0.7486163078041492","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.117-renovate-non-major-191252c5cc7c5704021356b5c65496908eb5620c":{"name":"@balena/jellyfish-sync","version":"6.0.117-renovate-non-major-191252c5cc7c5704021356b5c65496908eb5620c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.117-renovate-non-major-191252c5cc7c5704021356b5c65496908eb5620c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bc4f3420efe1ff59ae7b13e86c180c9962a5f280","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.117-renovate-non-major-191252c5cc7c5704021356b5c65496908eb5620c.tgz","fileCount":24,"integrity":"sha512-2xKl/4ZKYUYCy4kTKbeDDkPp8e/4y6zDGROMKL/uxdskPwljxEZxf+mhxL9yv6tMS8+eq18sRWt9y/HN4y3whg==","signatures":[{"sig":"MEUCIQC+bD3u+kbyXFDpC2hpmjbViOtfG2Z67LaMvACnxdNvxwIgCPUSSc3W1LDBDaCS/EVUykwaZZACcK89Vw+U6Sf18cw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkOnwCRA9TVsSAnZWagAAc1EP/36LqIgDR6fSo5t5NBSz\ni9LFHVUzJCb3YANqqycJC/XDJ55h2RegSaAqGwy6yLi2NFI7tDIdTZYis2b/\nA+FS1HMWPPcK3lnL5aOvSDBLRq3PW1KnOo35oLYIXKYXg4+chB5WNjS5rxjZ\nPq1KB2blP+gP8nZJmSkKl1/LoSC2J9xKqFELWPBj9ibrHcJHHMs+vhxuvz2/\n9ssNw1sM8hPVXe9IBubhWoTK+TQf/V5XAi8YKtdTFOg6F0LV2fxNGfeQHtwy\ncX1AgEmBG/Knvt+cOZ3B++AR8JtltO6tJ/s3e07tiiG09bEI7qsKVcl8LOiO\nH6+8Ek+0lSYFKas8rF26pbQKkajytkXAsk6gSX2gZ+wISSPl2OJyoCYaoPQE\n76+M/kL1a3urwmnf2ATuK9udSt62r0/KpQ599IwxVCrra4lYr5Jxmx+Ahdr2\nhEdrvOoynbRFbk8KYUfnkQeTq5nD6Qes/R+cy3xTMReLUMWzTNwqVNQ4OHpQ\nOCNF6uXy0Iv5wMKIq0NI7fShCgwiMTCA5/9JVRavNdSHSOsZZdx6VsZj4SYU\noshgH3jqps9WCrL613kJQEsYBYpi0xk5B0aOupZdODk57/mLwp9Q1IjSDkm4\nC6dTBDpu0dSuoU9Sez/ezeRBX3vZX2tAKhffAlJmJnLEhI16pCZtgCdwqFge\nznTQ\r\n=eGaB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"191252c5cc7c5704021356b5c65496908eb5620c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.183"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.97"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.117-renovate-non-major-191252c5cc7c5704021356b5c65496908eb5620c_1620109808076_0.04728602981562169","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.117":{"name":"@balena/jellyfish-sync","version":"6.0.117","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.117","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bb41f0c37a382002d2ddccf41fa82d80582d8677","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.117.tgz","fileCount":24,"integrity":"sha512-p08ZpY2vjtgzw33tmg0WAqW86J2t6kksGpiFP46xsOPev4tHms73eGl5Brn5kZPWaoxXrxDzcbvAbnEOOZNQJw==","signatures":[{"sig":"MEYCIQDomceZWtnove8nvz0LytUc3ux6Xhr99gfSulx8YFzf7AIhAP5lTUj2g047Ciz3x9/Z2Y3OcJoriG+bR+e8AmKaCVvd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkOqzCRA9TVsSAnZWagAAKI4QAJgwZdZ3TskrFwWkyNtL\nRxAIlRl7w2a7tOgsykBYbGha4ft2/FtdIX6BvY/6n0kQk6tQrDFILxFg/4od\nba73vrEBvx7zWHQckX3QXEKdCfhVu9HqhuXb/IDvMRCFQnAGs8NiHJuvXb3s\nUvDWL50TpYoOBrsZwp9/T8uN/zunjFT1Rn27+TTxwwUyGxjK73aiGbbzm/xw\n7tfZRlXyH+5pX3KcJfGWCZBSsSyW9qOSiuUgLJy4C0Jl2gkJJGVh1YPdsMyo\n9Dq61qZRUdTF6HLhyCRllArL30cEnWaqpyXnrtEpKkmBPoEfbvjRTK88mtFd\nALTzCIalW2/NT5cleVcEC1dTesBnhRO9JcoJwEOULr0TTNCcY4+zY2Ii8eqz\nCYynP5Opdwe7E7T8HGU0F4UAHVz0nO1AC3k0Nh14/HbnApyq3V7uUbs/iOoA\n6Bi3LJRWGo1l0zNq4dOLIf/QAnnRM8wHkAZtP4qC9r18TfkEj1Lyv/QZDBil\nrIf0YaEUStFnnW2vSYeG6lmqLiTJqgkccsqRYrOPLaa2LqB3ZT6AncWjrKKc\nj/Znwb2+A7MxXGPZhVMXLyg22zd3fvJMyJS5HMZoUTw3f2ek8YeCxCb/n2Z/\nBNJk57loOEPwdUmElWaiPy1t8vPMBO/vNzlO/ubpRCMEXFcXB2ZB9rCLIMQI\nouIa\r\n=jG18\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c18e8afedb5a58cf78a70f68093e9b83c54c15cd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.183"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.97"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.117_1620110002991_0.682109024791973","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.118-renovate-non-major-b1a9f1f7804aeadfa31975a1f2bb76077b05fba7":{"name":"@balena/jellyfish-sync","version":"6.0.118-renovate-non-major-b1a9f1f7804aeadfa31975a1f2bb76077b05fba7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.118-renovate-non-major-b1a9f1f7804aeadfa31975a1f2bb76077b05fba7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46eb7d95835e91656c10a83f83bd5c22f79f00eb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.118-renovate-non-major-b1a9f1f7804aeadfa31975a1f2bb76077b05fba7.tgz","fileCount":24,"integrity":"sha512-/lxPjyT5EuYKJf5Et1LjXzbbDGGHYRrOZlydSYDtzS5XkOqOLQAkDg+8bPCGHlyBeOC34EZCMkMdhQdy54VZkg==","signatures":[{"sig":"MEUCIAL/nmZpkbPC8o2qfQUnIHyjlD49pOeQ+Jp0jtr21WeHAiEAgI6USsver/2gQqZlkjlvvSeHj29cwXgaHmXvpwOswt8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158542,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkP0sCRA9TVsSAnZWagAAzYMP/jPRoMx8f1ZvPpN2yDHT\n5Z45Rs2dELfhwbagWKDR01wx0XVObjUaXHTfNVJK10X5ETmQohlgKz0cs2Vc\nmOTd85cBd3ZJFP4grJZCQhGBIeReN3278q3X+j7vqRlQUAOtQcU5lBcHkBak\ncMARQ8NNPPI7njQgYjXh1HIg+VCubOcYMpR4nKYco8EbAnC76aAIbD5qC14u\nC+CW2sJi+BVPkxA+UfKDp04VewsQZEFSCfoVXg+3ScBvWS536RXkEcBnw5W1\nwDlZrZvwTGURh7VaKZ3YpPHen/VO5ZQNbAVcJAIu/djjjamUUxIICKyhcAXW\niT2ZSMuoJjCkCvmf640FD8qwSs5e1wuvKtNhTfxMjVRkB8cvg3JSg1zu4+5r\nTddMUs4gz7hH6N4H9wXRFrThLGgsEoO8b+/Mk/bZjYY7951Qtv7Ix+PXojLj\n26h/tXi6oogDpWLPDBFBMF6xK+8Eve+0q9UMAn/+pb7gXuXA2Ew07nap0BDr\nqJzIvvjcL4aRZK3Cmw3PdOFGeg1jHmkSYBHf0A9fH5DCzuM2TOlXJWqWJ41R\np8xYvHA5XXc26zfdRO/6QWFOX57D0TwAbkomNLEd0pR36Aazcz7yf8no5rF0\nek3tYK9Fn2gQlblbydXrSrnt31OisVY4h2s0APxc9nvKi8IxW2Dr8YnBYMPX\nEUN7\r\n=Wckf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b1a9f1f7804aeadfa31975a1f2bb76077b05fba7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.184"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.98"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.118-renovate-non-major-b1a9f1f7804aeadfa31975a1f2bb76077b05fba7_1620114731742_0.0003528560206569331","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.118":{"name":"@balena/jellyfish-sync","version":"6.0.118","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.118","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a037e910bb64f1cfba521eb0e21fc8af574c57fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.118.tgz","fileCount":24,"integrity":"sha512-uNSS/BF/cmF2ac24NaIQQae5dR1YCelpexAM/m0BvBF9aXtN7QrlFRk+IBCFGSi/uYqfjlQ7VHR+3WbcA10Ubw==","signatures":[{"sig":"MEUCIHCRYRnqjuWgSXmtWEqnFrimdKZUUqHYom7Q9IE2NiiyAiEAriGx1TzsI9KVGFjUwPEQW3rJAvtyCLnCSccq34h3WZs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkP4dCRA9TVsSAnZWagAAJbgP/2NeAHXrIGNV0OPlQhxZ\niELEVWhAx1Amm8zm5LUW2zYEUwmtAMgZaoVaYOscMnqsjsqZMm50/Z3ItRDO\n26dmF7V/Oe7+s2lP15pX/+jewVp6tIL7YFXBisS/wXDm/Eqy8fHFJ9+S+xDT\n5dMzalb4cEnwqOu3ZvEWEkk9QFd+SKvtWipTHpWYTowg6TMik3NyIl4cmWQV\nUDu9aW+4+P30w3GTpxn2A5KhEDR/cxwAvDbUDH/hbP6Sb76RBtxyplkPkkQp\nRy/K2b5osjI4MFif50YNAcDdboTro/9o1cwH/3jA1B205vQjj5Zspjq8IL+u\nbZnbddNywNVItUZXuxRlfgyq0fWLocy3ZJVqVQSwWGmS56P1w05B0+X3nutG\nBFnBhFDuXI8JTHSSgE1I8qu1EJKs2iLQNof2jkoS3hRxa5OexMkfVCjStydI\n0O6BxleQXECAZez1Q7Bs/cQozLQX9rEyTljFEsUXCwfZGi4gi6XfLZlM8024\ng0KdDBdTTIEjDSJz24fNDjyQ6DlGlh4bjk4o/ZoDfcELmB9l7TTfRxG7D/v1\nEPy3FrF7dGSa/mQWZfsaRHaowaXiOB8qvuSLSBT8fvbawlHuozySKcU3h4ne\nsdpbHlCRc14uNigEroGxe+eDit24fC4ppQ6p61aSLhKTqlwvv6Yjq/fWuX4T\nkOhI\r\n=wvGP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c21b7e53c21a5e6da287d3d1ed6440f8fe21c317","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.184"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.98"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.118_1620114973198_0.20650472411652787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.119-renovate-non-major-aa7c929d54ab49701c3650b639216a6d14c38855":{"name":"@balena/jellyfish-sync","version":"6.0.119-renovate-non-major-aa7c929d54ab49701c3650b639216a6d14c38855","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.119-renovate-non-major-aa7c929d54ab49701c3650b639216a6d14c38855","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d1fc51847086a2c88d7c2d945163cec6c2998b2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.119-renovate-non-major-aa7c929d54ab49701c3650b639216a6d14c38855.tgz","fileCount":24,"integrity":"sha512-oxzk65YZhxpJGyKzCibSLKKYj4PZSEYhOcQ+iNR9DAzunSiAURNkBk0fPtl+zE8LvYbxxJu/mBuuUga9Boq2zg==","signatures":[{"sig":"MEYCIQDjZ9kVj/fjbzVICjjypgQvcrsTj4uj++w0VsTPlmLsPQIhAJdcAAUQIqXhqKJUNanNcu5Oj+bBagXsYnuMbAUjCsP0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkQ4uCRA9TVsSAnZWagAAACcP/3uIEuSaSzVVGdsEbYAx\nKrQCqQHgiXGS+7qw6Ms3jSs4qoD61edaKQ/qf1NG7wC975UR4JEysSozZs4z\nrEoE7TQPpT6CTveAOuzrN1bgR0DCYzL2gw7h8zDrw5iQUlq11fmEuBCCk09G\nCAiXOmUgwTbEgfCRKKBNaoZ5Sno4fzz0SnlkdOjBVjqfYziDIF+GSigSLfmz\nLpqmJQxv4d7iLcLZJPvlfUbBS3dsT/PNeeajyVJ+ewjqou6gGywz7k3SUKui\njK/IccFRlJvv/F5xgt1sgZ+QMELFA9r4qAfuZTe8vDqiK1ld0nHaMS/VW9xd\n04HgA8NW5JgFTstTbbxLeOzmB6w88joRbndhtzk5lCJWorq7jpDhrgoRZFLk\nW6kIH1CkVgpr7rCBWYXOFDoVf6yVxrOWc6seaIf8bCRnSCJuOx7odietAhdz\nhZ6IZmaLDB5P+NYWHmRZg93afYiUPwa/2oP9iD70b0HqKJURvjjmqkStht0K\n+ANLc84OEu13NdbJvVz8gBWqlIbOxGpi+ULSyRJswlH4kXDS9PfLTcXHDQZ4\nLIxEwJfWzSGkIAuWRWIYsbHVopGOoWd+LJUMrrupPzwgNSNOrm+FcgcgUkhn\nlMHXUaC34M35aKX0McvXldz5Y98LctVP7TaLxWvn1z0FCTa5zLB0d2DbfK+T\nqNIz\r\n=trvk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aa7c929d54ab49701c3650b639216a6d14c38855","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.184"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.99"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.119-renovate-non-major-aa7c929d54ab49701c3650b639216a6d14c38855_1620119085732_0.9841448529309811","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.119":{"name":"@balena/jellyfish-sync","version":"6.0.119","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.119","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa506e2edf80036411e9b112e676a418095f12cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.119.tgz","fileCount":24,"integrity":"sha512-kDhnfuqnGT59n0khu71Jf0T+oDWTOybN98gg/p+2M1ngV4Gh1aoWxglXPOtuMEmivZopAOhUnYA5SsvmaefPyA==","signatures":[{"sig":"MEYCIQDwz8spBhcMxP8eiJ3fEY32g3kFUavlb0ej+dRvsDA4FAIhAL2LfVk2PxX2ob2fHMndVs5p7VRGb2faiIJlrsz1+8qL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkQ7/CRA9TVsSAnZWagAAyMoQAIO/PSUNMAcpNfHSEbDt\ngiHyr7FKpQxgo9jzp3x2zhBT86HkVxyLL3zx2hSbVgagqbqFoFRMt7EYSXSi\nXOw2HcKnnpOFeDODmnRJ9ErZeWLXYdPTLPfpkihDTkxRJmHba7EMeDfTss15\neA3th+MF3yJI4dQlCliIpr6X3pzBJKtDrItXW6OvvCjqkWpk3YHi0kLSyv4n\ntaUjEpIg6LZ5kFDF2xTXsgFnWVuxk6Y8MsK11ng4Xb4zIPquknsb6oAmm7jY\nZXtwkl/NbH7ITCtXWA1M7AzM/0HKnv/Tk7d4UcPYYuia5BMjCLMsWrbHKFXk\nrnNHLc3bpuSvA5W+2j8ZV/x/EHbaOyrlYZM46SJlr339JjyAA9GwKV4J9kqJ\n/2w/1PwFxa5BDg4IZ0erO7aUbECBM7+d+mFJPJLb2rjFN2f68E+zjL4IKkFp\nRCg0arx7RR6MlabR95oDBzBEPYJE/t6txr7seqjUh6rWIuZv8wfTfGeKghS2\nEr2A+tMZc0t1i3OTD+WT8ZXgwN8YSNLXTtUimgH9lGUgCpvhAVqOjOqo0xzb\nb3HEVfuuDH0sD2msgXCJDip93eCWL+CpKwmuBA3VLXQdEdNqIelgyIdANcVE\nOk2ueZ9LSiHsg0pBYOXsJkCP0qalC8IcmF+wfON8zmW9buXeDf3ZIUSoqpPW\n96Bb\r\n=cF45\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14786863e8af06422f49b5e4a1c1e769154beed1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.184"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.99"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.119_1620119295053_0.853588682448144","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.120-renovate-non-major-b99034813bc73450b132bed93c4c22c573b134c6":{"name":"@balena/jellyfish-sync","version":"6.0.120-renovate-non-major-b99034813bc73450b132bed93c4c22c573b134c6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.120-renovate-non-major-b99034813bc73450b132bed93c4c22c573b134c6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"961566ee8aa24325055fe6f0b9d367d24e63f437","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.120-renovate-non-major-b99034813bc73450b132bed93c4c22c573b134c6.tgz","fileCount":24,"integrity":"sha512-RoY4OzrGdXsD3fI9LWyEw3Q5xdM/wqOSjwOTt9TPi63rpV6aIfd8nWTH5YPh4Dnr/GB/XZeLsQyfqZp3Pr+D6A==","signatures":[{"sig":"MEYCIQCZpReMg+4Q1Nt8/YbbaqTyT4GX+xo7rq1kB765l1/ciQIhAOAgXRS8h3+uay0qDqYKoj4S4THl77gpVvB5d4XHxAhW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkRHmCRA9TVsSAnZWagAA2GIP/1Z2tmTli/3NUy+VSJd/\neUj9ULFg2QqgtLZ0ggOXBcK+jx2vieWxOeXVMhHbMPoUtHDet3hSwzJqU7eE\nElmzi/SG8Og3TiiJakG0cyBst0WpusVp1dzdR6y9KHicDopBJqBDfm0yVozR\npT1zUk8iyaXF+miR7Eo17nr36pe/dEvt+PFDef9KQrehkTBYih6jRY5JeB5p\n1jQy+2iTujUmsh4ZnlvMZH3l9QjBERXRKp2FzhLpQ5A3hBaxkm2DdFpKkbMq\nNgFznP1+vHifrWUwFuuvATnQIoocQeqbNi4YqJ638PJVwI/R3cBsAnWP2aRT\nSEPkk1xv9Dod1XdOwsDPWZN+TQesfwS+956JQnxmrqUa/ZDIw0eLKPyy6j5O\nrYV4EibBlxqnOUt9vsaKk3D7RGZ24cx/FO8Rd8X0cKDtSC1f8Ud7FKiMxIr3\n+0ASiJHjarLMzWtQ+lAE1fWubqaDWiAiEP19jP2lmXpH38No9tXVEPnzNfb7\ncUmzGrH8mufFOuGIbSPWGx8DFXnI7MkQEGAfzDsnDVTYa0unX1KCTyc1Qzsy\nYD7h3KYd1ku/TmAkIzEDLcA8ooEs0gi6I7Vx6F/M2+Iavtf3uZLrRkWxBg/m\na8zAhIarkl8ejnHCXu5+z6aC71tCRft3t9UGL0M77/6bPa6tPiX5nbnjURI9\nvEsV\r\n=D12o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b99034813bc73450b132bed93c4c22c573b134c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.100"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.120-renovate-non-major-b99034813bc73450b132bed93c4c22c573b134c6_1620120037784_0.9257015466333331","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.120":{"name":"@balena/jellyfish-sync","version":"6.0.120","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.120","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd8674fe4d6d3eda449a9681773460821d4e98ed","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.120.tgz","fileCount":24,"integrity":"sha512-NlcCKc8qdkqSze4+NLeXRDG8dRXTSeRdHgsmaRbQmS+q3ru6CFuRtpwmNRo27dAPEvyUQQirOxrxQN+kMmhy3A==","signatures":[{"sig":"MEYCIQCcTnaCXJ/+GuCJ2xljZeCyDUc7iTR2/ZTwcqV6R7GbugIhAPaJjlN5t+k+qGUc1PRzDke+Z+f2Mf/fnZPb0L6hXPfR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkRK7CRA9TVsSAnZWagAAYsIP/AxIdUi7BAe6diMYvGZA\nLLla8ZxstvxNpukPwtxlNj3NXQkgAmSKbAh0inteiHhU2a6BDxYlodwrlO1M\nZlUGnR5SQNxFTqvmbZSTQ3p2iKILTI8qVIO7OLaChVBdnHpj4aY6hhclNLyd\ndkG2TmOF+czERC/dGZNnaFQ/cSmMaWU48G0VM8d68btQ2qZTHa1HU7NMts46\nnUGe9XMF/PZqeszik6HDUBP4FpYX7s6atuN6Rf56vYs9bKNbKjDM7QUdB2mk\n0mDkxk97D/VyYWHUfW+c2RdwlGG3L6IsxoVJChaWNM9/IxiVXoG9EpX16IyX\nsfU4gh+pF8hH4oizyqrgCZp+x9QfEn47Qb1BAQSQoRBsDAkzJQ+gXcg2LHHU\nHovW0PKavQm3t29QyxLoVu2qHqm9FW/+Hx2oBvSVD8XMklMwFkY7NB2JVV9C\n+7a5HGu7MYh/efT7zpEEzKgaNP4bBqxJQiOvlu1iJwos8ZZJ6Q04ajz0n3HR\naeYwIeLw/V5P8E4TmsOfXBDvFJOdGgg+3LVI8Li9BTLMObThSzObOGypSru/\nCVQ3aK+WiTopiSHvtVEZhwObLArKmtVPr3oRxHrlPvXmKWvX6FGOYof6Uzmq\n4fwps+0noXvAhkz4zWt3vMhyCh9k+wz2W+WFJoadgec4Mj6GfsmmezxqPj4S\nS2g9\r\n=c4L4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"995c96bd173154f70ad1f967ea2e1a7522ef1f1e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.100"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.120_1620120250646_0.759099392661494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.121-renovate-non-major-b58cb5cb857c6d2b1d3f385d9315d1b8a89de786":{"name":"@balena/jellyfish-sync","version":"6.0.121-renovate-non-major-b58cb5cb857c6d2b1d3f385d9315d1b8a89de786","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.121-renovate-non-major-b58cb5cb857c6d2b1d3f385d9315d1b8a89de786","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"92fe3646ade6628db03827d88674174f8a8cd36a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.121-renovate-non-major-b58cb5cb857c6d2b1d3f385d9315d1b8a89de786.tgz","fileCount":24,"integrity":"sha512-fBsrVC7DMJ1NOa8y0irSUe2hg9Sw4DkMYed2dNmckUPX9FAVNWw+iU9F16qO8fC0zFHfJJ7oiUPJUUN61UerLQ==","signatures":[{"sig":"MEQCIBqnn0HYk9O4yBn0sPw5sAC5X3LA/SPM/hicf8KoqWAuAiAzI/U3pqN3rBL+8cC5ZMR9tQR106wK8cjTQtZ/GRqTEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkSx7CRA9TVsSAnZWagAA1UkP/RJvR5RPBlhrHJdvSAKE\na+fijzzDI7IC4iUhn9goqvu4vbQuArvynuZtv8a7pLHoOWnzYR9MeAIrOIOL\n2tAPihOxIIkijHvuwm15NmD0JL3+X46zC8nfTyNYb7v0/tSIRp3vi+VHkMOn\nAuMP1GkIU3EztZfbdzqe+pWTVidwO4Eh2y7AI1UAeGEGdPNgdgq0+0mQZiUb\nNYl7WoskP+zf7dUujvLxm5+yxGX5L1iwTIzPX991hNwL/w1M3WzsG6HJAloj\nUSzZWDgkY2xGP9RTcN1z5XP89CevmUa+W+2VUSl/1+t2TCn1n8a/75x1e5kA\nWqf9G6J2ybqgOz99bq70YlVnSW3G7kg4ObkmwjeMgRB7FI1HbbNYunsPSu4U\nHTUSjTdxyEzIWAVoeS8TkG8Nyf68778jLaXPeZaCe5GNSmRaK5p3ZEf4YsUH\nT/Pr0qNsdKvol87Q1tS3wAGufbQkfGo1lMVVtRwjLhPfpx10Jnp5UgSOdLkI\nymNL3F2vNDzQvONebneiR5f4WE9esGEUMifXSDID495x/meCN1MEaavZC65P\ny8K94YemkZGOslT1D2oEoLOUe2UjNdT9J68eT5qgZSDY1k+dG/fHV4EucztM\niMB2y866s1wLnGFKNHrbwMNiWJJZwIX4YJNHQnlRV5NPlQj6LvMmy7uw2cu5\nN+C/\r\n=r1/3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b58cb5cb857c6d2b1d3f385d9315d1b8a89de786","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.102"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.121-renovate-non-major-b58cb5cb857c6d2b1d3f385d9315d1b8a89de786_1620126842609_0.5330242203350268","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.121":{"name":"@balena/jellyfish-sync","version":"6.0.121","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.121","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72e3f573b490249b68269445dac7b8c6fe96c63d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.121.tgz","fileCount":24,"integrity":"sha512-pt2A5AFQiYFBbN7CAfNvOnt4BP8Hko9bSTKppAjVP3oGsd0ds8S3GB8Gg8stmiRZhKYbf7+v9dUc8RgyuL6uJQ==","signatures":[{"sig":"MEUCICVFjIsg3uRZL8Q5ARC4ppEn7hVyqbclX8dpRxPqKCEMAiEA3C1V1tDHyG9dufdKSktSK4CaakGWmtvEduAPyS8AvYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkS13CRA9TVsSAnZWagAAcYoP/2YVDOEoL60ba6qCuTRy\nWgZYaavTXz/2Ha3C1zRZ1aZM9LV7HIlDFT22BoexmsVQqlqZEDitZGfm2naq\noPB4XXmz3bsUB9wcn9VPyWMmunrhxJKxB4aOCi70hCEg97FSsKT94uiVFGc2\nx/UfJIWJR6oTTeQOArNZKZEAxzfCaDR6uA6JDmnV9hCUgvJBaKyTveqvCXaZ\nEnU08aRIoHf/kZsfBKxe2me1a+aPw3YR1cFLp1pj+2Twd0bcT0iM30p6Lzp2\niB0nscQj9fVrPFnV8CthMIm6jUGEw2QTkUtruC8VBNu0hTYujJNsoXHJSG/Z\nulpagx43HHZ9vmR6haaTjNQJo2go472JNG4+ROgkV1qlwIrjJf4V0+RsDFtg\nUtEADit6ZIXQ/5/xrkxuqSHIVQyH4hy7jIzCU/9YCymODeZQX9HPQsOhiKQL\n93saRPDXgO/xVHi7a/zzTX3IwPidTGRX5To+bmIUAWKPof3PVjj7Ju41A/zj\nuSDqXYfrvr1w5/h1r4Q9U370ki3PlACBFmb32bUKE/tglOpS56zUBcBDtIMN\nFzDsbgno64T4ifTgymocGfdDZC7VPZi2kCr+2X3iBR1eAa7Xhl8fB2fOWQZi\nTHBTIIAzwngJr+4yWx3Rm5S2a+zmEgA31jVOMa2dm+NEwa52ziLIjVIO2u/O\nSe5x\r\n=LRHQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ddb8b1d485be48a47a46372d4a1abe8db8972585","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.102"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.121_1620127095046_0.6429588985496437","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.122-renovate-non-major-19577c8a8781d1f134e4e1b21cc5be2645482431":{"name":"@balena/jellyfish-sync","version":"6.0.122-renovate-non-major-19577c8a8781d1f134e4e1b21cc5be2645482431","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.122-renovate-non-major-19577c8a8781d1f134e4e1b21cc5be2645482431","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"afc930b13e491d0c05eee56619b6af81873b1050","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.122-renovate-non-major-19577c8a8781d1f134e4e1b21cc5be2645482431.tgz","fileCount":24,"integrity":"sha512-7J5MnLMDpZZp+GhXZ3QBPoJ2k64hn+UGbKLl3hUpmQDP3NRCV7ZSg/ExypS+kWMidKka41ujcnzLqDqdAFFmwg==","signatures":[{"sig":"MEUCIQD1zKn1nCN+nMzS7v6bYOCLt53dO4Pp3agWAwrHuza1hAIgCuZ7CGYQzG3uAeDdQjHDpVA5Y7CSsgWZcMYae5KoFWY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkUZeCRA9TVsSAnZWagAAvqsP/iWfOXi+80CgtUgOxDJ8\nYf3R8bLj0eB5xK85CTjiRw9GWO6Z8+DWCupNSwbRusm5wFDIOyl91PRybhmn\nZm1g8QgjdE4rGN21wvMLlvmsB5rT+ozGMIk4FFs3fQyg/615JSls+3fSKXeU\nwj/DA0EleKiSsgOv09Z5BVjF9O9p6vh2Fsj4V4EjRC8rqobeebdVPvgQnuQO\nrCj7y8KwU8T9eLartGIiep91eWBw/Fxt90aBJD3EniZEyIQs9W1g3W50XG/s\nJQI1xn14Qpl670/2zGNt15lZeoepLl8WCPJKpkQSjcf4uGKFwoUe0JeCMP2c\nSwLTyudi1Yo28ypkq8ZATP+8d1aRYKxwzVyPuhrnprxqxHOqFJUceQ/sJXhH\n984/d3ZTLJGWt7wR02BvPB2rszFItZXlGH1e4bteIsuycVkgkaXOHkK1UkhC\njf7Jx+y7OTBWw9wybVl8Vp9nM7iIU6MVlw+um8Nz8Z+vnb0Pe5G1L5B+uhrn\n/TRuIrLtrb5bfMBqda8h8PrkMV09O/8rVcfYAHXOoApm0QCCOZ8iCNZFiwvA\n8Gsokx0mcx7pdfNCzZDCyPEHB/JUD/KjuYbmJyi8vIobQBLG+T0sMYaNnnO1\nUPOkua8tKSLJVSVz0AvIe6yb8ZuqQb8zFNkVqhvTYSGp3KBbWWZgv2WkdWEn\nbrzu\r\n=Nn+3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19577c8a8781d1f134e4e1b21cc5be2645482431","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.103"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.122-renovate-non-major-19577c8a8781d1f134e4e1b21cc5be2645482431_1620133470331_0.060449522406950784","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.122":{"name":"@balena/jellyfish-sync","version":"6.0.122","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.122","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4ef818112b8e4342aadcd7eb2682ce75d6daa1d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.122.tgz","fileCount":24,"integrity":"sha512-jOFdBWW254oJ6OSlTdZWuXt5Cg9u4BLOuieQ+UFd4mBITzQX5wRc3BJW6fvQaa/puRneh2DFTmCc086XLRefKg==","signatures":[{"sig":"MEYCIQDfp0g4AeQbKrhorFshi3TgG7uNvaoo6qyGdzDnica5lgIhAM9isEZDR/cvePB8yYZ8EMXOHCPvS1OhH/YDpprifNIP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158861,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkUdWCRA9TVsSAnZWagAAsToP/36sOcum0k9Isxv5s0fz\niEXmZkB9wmR5OjuBTBTjotiC4IOh0AbRbQ92NdT3GrGrpWxC41r+zyANPcNg\nsUhmyc5D7HN911r4qQ89WIDQf1VCoThiTnDOGfUPnA3ejZ4JmxySqdYLI5qn\nCLiHM8AXtxQZOV47r7rtGhF61X3JPmLWvhZfN2A7XTY5CXJqOz/w2mB69M4E\nsHhbk6FVP3/757AFJDgvzIQCYIZwc0vo/eF4fJ5xJYXbN1xCEeX8/F7gsAeC\ntBp7Kj6BYhIdlHPoKTehuvyz/RvjM7OFlWdAUjm09iA31tSr9e5ByK/DcChZ\nHKTgYbluU1dJhSff2tGfPXZk6+ofavHT3vN6JmoZGFJ3dglWuIf8y5d/SDim\n4wwuFDezz6SjYhYztfryhA+TYjMp/Ze8EsHcz/pCqKPe6PHIhj6o/DT8bk1V\nwy2Sf+qRB9z/6MUb+NisR1RBGFEb+5OtjWRifJP7nVDXTVFjkyus/R7sQzfb\ngkt7CMumM6Cv/bbE5APfIhjJqaQ9Hl0bzA2JPep+UGH9nw++2MrwPi+s7giP\nrodPC0dOnrThR94I/UncbH+h99yswdO0X8F9nbfAu5b+TQ+p9U2iffQJUh4F\nyl8dIz09fKNMd0oKiv02hTTSNpTnoaTjz9ul959uf5PjvVQ5TQ9HzRBAXsli\n6DC3\r\n=+3qt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"105abe505ac8bf4d0d5c26be591b9fb15441c85b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.103"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.122_1620133718509_0.6882332693286894","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.123-renovate-non-major-201eb216dd6b265ebf772548dcb129ea6d0d5cc9":{"name":"@balena/jellyfish-sync","version":"6.0.123-renovate-non-major-201eb216dd6b265ebf772548dcb129ea6d0d5cc9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.123-renovate-non-major-201eb216dd6b265ebf772548dcb129ea6d0d5cc9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"641ffac46e377fddd0f7519e28c81857a4b2be4d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.123-renovate-non-major-201eb216dd6b265ebf772548dcb129ea6d0d5cc9.tgz","fileCount":24,"integrity":"sha512-xtArD94E967Lqsk8qc12MxypoD/Oiw9E36NV3ASUfkNqCJJhb9MWbzjW7h/kcEOL9Kf0lxy9qxgwozNjoM9xQA==","signatures":[{"sig":"MEUCIQDDTWbxCjELju6PYWFywQqJS9I8AtAwoGyNSl+8S6bZ1QIgHgA/xDdTPGr0ukWHwOghJW4NSpErNnCpptxE1aKjfrE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkXDWCRA9TVsSAnZWagAAPXwP/i9ozilzeMbBCvIreBYL\nLjCk4+Vdh0FfU2K19ELiEM9h/NGXoKIzCCB3SNkt0if9N3PVaEmX4miVfW2B\n8lYWPgOqZgdv7ghf/XjY87GdsivOVuDcVre4aW0OQjM+RtPCtLpUDCPi9V+m\n0CrbJ0j2Au2+VXO0reNJfl0m9epL6zI4tVELT6JoyiKQpuVuk9SAVgN4gkuJ\ndJ7dUz+dA/eefhGYGD6Q1wj90Gr6roBa3sS5Lqqnnhs+hxDYhrfm2nwt2wFz\niwAix3gZdpDkIqe1l0fjV+1r3ClEWui7WlDlF65ThMaxISx8ga0OFPiOKp/8\n+EfF58rfPHdIa2FegnM3WGS6T/LT+URO3rw9DpGTJKL9GIm3VDwOH2vx2kPb\n/y2iI18tUoG5kapX+/8wD+xFpazjwxRl5OHwFzkp+Wd/mShwvPWUQMqG/NcJ\ncjc+gSGONQ1s2lcT2Z+sPjUL56Tqssgq6oomk1xSJujqT6s0JwgtR2kuLJOj\n7YFlxDGG/40orskd1xT82gAvGAe8f/BDk1E3Feq1aOHHhOmTatPwYEODcYxf\n4i/4i19PP7pn0gUlzF2MPez5gbyYtsrQ0UKdM90QjZiSq+xkP4+foBcHcwZx\nbrh2qY/7Ylu0l9uzBVR9iIy+fFkRZAROnwOSlFhsnq5jn2FDYmMQPR8eAy80\nk80R\r\n=7K7X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"201eb216dd6b265ebf772548dcb129ea6d0d5cc9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.104"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.123-renovate-non-major-201eb216dd6b265ebf772548dcb129ea6d0d5cc9_1620144341769_0.5341181038115066","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.123":{"name":"@balena/jellyfish-sync","version":"6.0.123","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.123","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f7ed765979396a4df54e80c81df84bb2cbc88bc0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.123.tgz","fileCount":24,"integrity":"sha512-iaQNm9/InCxrSsxZ57zj1d8YpMZO8KkDihVYBx9DP2rFJYkx/mEoGY+CxLUEQiaQi2jWauVRVgwmj2k514kKDQ==","signatures":[{"sig":"MEUCIHRYl/IHCfKsJlL6HlyVRIkxKcYR4N4gv2sgAA4DYs4iAiEAgNpv7xb4mzrHFJnXzp66dJYjYp+HnXakWjCzi0tE5vI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":158965,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkXGpCRA9TVsSAnZWagAAfTIP/iPJqmFtnF4vj/wmlYqV\nuNnKYa2MH9rfl3iPxq0bty3hipcDzodgI4gOmkm4DTs+lXRCRuB9sc1pfQik\nvvffGajjD399xosM39v9Oj48psFK4gY4P3a0QlACqaRdBN5Ghj5oKTPDcwf2\nHvxu7wc9JcIW8iqrUEk/VpPI4FBQTWBVMEtkjb7INFjL1+heBpJpiNNcH2nU\nv1G+OYTQENZvFBCQ0JvyIqfIPCYpftdPwb17fevvW+6Q2tywIW/mAuXuAsg3\n1EHPp+y9pzDQi0wOL8PLDsr7A5QI1K0tlOje4NDezFfYSR4QeA6HHyvti6JI\n7AnfKfA1wFN6utOCc8UWTmQQeJi7oIEzRS4N9PAcRDPCvxY+Q7dRJSPfCxjX\nWCXPDExK1xAnqqObCeT2N7b0ylqb3i0Ht58fNvYuxpURYRrUYiIVs+oWmGjl\nBmaHSKoaE7YxRtBIgYkzIftK9KdWL76qXBZs+rIsh1Ja84vzvnyTfA0FGGAG\nPtSnWipJD0LMFl2QE46spqtHaY7LXiV0HZpNN7B+EqDhZgKPqG5o9O5VrZgI\nFbfusT5AKg+ChAuFCUKeTbHjbV1uHVcPJSUuMcMia+feRKMehI2hzK7510c2\nAjCF2fXrvUbnjxOIvrXuCSdzATLUlSEsNgz8q/mOqfv6qzqwTggeskpUG8K8\njXId\r\n=deAQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aae0e1aef32c3fd017f438eee112fe686f9c30eb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.104"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.123_1620144553092_0.8408467730975429","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.123-renovate-non-major-50542e713b8c22a02420c055faf2064b9673ce09":{"name":"@balena/jellyfish-sync","version":"6.0.123-renovate-non-major-50542e713b8c22a02420c055faf2064b9673ce09","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.123-renovate-non-major-50542e713b8c22a02420c055faf2064b9673ce09","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7817851dcee593b7bacd0150dd72a742f575a4d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.123-renovate-non-major-50542e713b8c22a02420c055faf2064b9673ce09.tgz","fileCount":24,"integrity":"sha512-iyVYbZshHkwnKAPw0R8bo8mC9zwClRQ/HsGEmOYCrOiT4gQ36Oq498KrFIuSgzcCmRcYqVM/Y1kVnjnHT69Krg==","signatures":[{"sig":"MEUCIQDbFtKGfHXGwQDtmcDad1L5kjaTDy7cImTUjok58f7xdgIgTiM74udCLWEWokvKt5AgfvLwkpw1xdQ4dYl+TXFGU8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkXKICRA9TVsSAnZWagAAUc0P/3ri1A5m+5QGNtGGlva8\nrQ2A0o2gHjCZSxlmzzStXEtRVsHMuMfU055Gzb+yXdoLymD9hllXBUVoeuZa\nEsu/RPaXEEJfXl9oAfMAi3qpSNl9kvObZS50dCdac4jciWZLutNfBdPDQllm\nhOKpaCzTBTnsC6J3WZNWfT3OSxgdnoPnobO7O88qGhLatsxiAmtB6b1Y75UR\nYvflq10/+26GDc9KBhNv5jSNq92DVVrwZd7fAEBjaeJN6UBCFPDKQnIdPAuR\nYcPwDgqCpt/9WYCpGDPqT6LLsZG9SK2uVoocnFJ30CYYX336IZtydGFFvrwi\n/A9aCPGH3/LZopoebYkJJHH2A3eJgSMhgsm46ek894yf86qT8ATKqKl0tmkD\nPL4a3tlrVaGlsOF4KVnUFOMbGtiWSl0WT7bFReI7KdVGRotEQQ/nzbpiNIax\nGC9dD4OerXztUUgB5cSbSm/Gl/w2ykvjSVrYIz8gxqA+aOQjymDqSWm7J78e\nJHMUN1Cs5RbTuLQEnXlqhWzQC6kF/RHBzzc+y0e7VWQKEv5vqeWWlfrGphlR\nolrWGKqZB+qsTylMCtmLY1bSXSEMt7spt+6DkSwdgqzOSiCcjZST2GlzXm0Y\ntc4KJzLyi05iKerNrxCxql7E2gMuC+o1fRpSTeqMEIGgw2a9thmjBmHf9A7x\neZva\r\n=UJQg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"50542e713b8c22a02420c055faf2064b9673ce09","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.185"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.105"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.123-renovate-non-major-50542e713b8c22a02420c055faf2064b9673ce09_1620144776238_0.4501289548417713","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.124-renovate-non-major-778ab470d4bf02472c434a20350a2647c01dba23":{"name":"@balena/jellyfish-sync","version":"6.0.124-renovate-non-major-778ab470d4bf02472c434a20350a2647c01dba23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.124-renovate-non-major-778ab470d4bf02472c434a20350a2647c01dba23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7794a485f71c66a4de0c7bef3bb730b486401014","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.124-renovate-non-major-778ab470d4bf02472c434a20350a2647c01dba23.tgz","fileCount":24,"integrity":"sha512-aaKKhF5u4V/S/5yYmPs885tN4nvmos1qorcLnTqQy6fyqR6FgHuGXBMeeaWmmEQ/+cSmmxbirmnbpfsN0ESzAA==","signatures":[{"sig":"MEYCIQCJ4zHFEHuJEmLUCakkEDCi0YY29AuoO1lq5Ag+Be+0iwIhALmJcJRpHlmlZc1e9PT8b+9Wj0C3JEe7wZTN9hyPbjQ6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159092,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkZFRCRA9TVsSAnZWagAAnnMQAJohTUHP/i/tn1nBzPCd\nHUmPXYSNcGcBl/apur1gxB+GQx0Sj4c687w2MnnJY10jcUWag7yrkMEXyGxI\n8982yWivcflqCB+ctXupxTpkUo67euZoLQhvGm9XvqIsGxZNLcsUb2tCUw9R\n5S78YRpZ2PI78Mf9pL5nhdlwrjuzKPVYAHqJbWG5uM8HEq2Vw6vyeccdSbsM\n7Wg/G04SxiYFS7fWyS4iJYXOd/s8cdSo8q5fzNfp/F/m84cvwVPLKPlDQo0s\njIvzOdU970ot1df//IqW3rsObXB7IDF7ask/1gke7dCva7OTbPfulZF4OzCK\nWADs5ir44PtRLBofYuptZR8V7ehyC0XJAXaEVGtpr/E7E4jquAq3h44fYgNc\ncxmb4ii5FgmkieZB5xomqc6qqNYQ9mi9SdNN0P9i8qxHYsYTcS3ik1Z1H+mq\ncy/5GEmrzxk3nf0GZX3+hH6nPgUBjlAw0tN7mN0l7lYZUHPW2xAwajgj3ceT\n+tAxOSQ7uD/h0LJblaLLLnucj3Q80pLmRSL7qwgyDvdvAQ0ng/zWFJqBPhYS\nKXSWQ80bT4SnJD6Of8CunPxxeTsI0JAbhxA9sqiyEUtdtDAN26Wc9olU5cZB\n+v8UTawN7Lm2LAKSkwKEpWRgHNN1yJJDcYyQObFbE7wRYQLCqunJbfJFGUHw\nMn58\r\n=Jr3x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"778ab470d4bf02472c434a20350a2647c01dba23","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.186"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.105"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.124-renovate-non-major-778ab470d4bf02472c434a20350a2647c01dba23_1620152657177_0.8676662220611475","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.124":{"name":"@balena/jellyfish-sync","version":"6.0.124","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.124","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f6815f527011336243dd16880228ad6ffc44084","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.124.tgz","fileCount":24,"integrity":"sha512-RujAI89ECCRxXZxSviSHR50pI1L37sygFTCT8VK//6s86VLl091HGqer3EcWrr4crZLW4KEceYU+igfpaJVf7Q==","signatures":[{"sig":"MEYCIQC8b4Yg9SGqZ5P6i6Eh9+5HgFL7jhg1lRReAIba8Dk/+QIhAJ1Q5gzzAMFGIqXLPMuop3c/rsvVhjYIqu7h0bkfQ81C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkZI8CRA9TVsSAnZWagAAkDQP/j696ITyWe1+pqYtU777\n/VRl3J1yGOFzd0WkiT69i6ExY53A0dJgep8PBHw7sHJqqzkgCU4Js01vAY9H\nYa5F8Zf68yQoOmk9AY+gXlThwlA65o+PDVIg7RoRxSBqYfPFse0MMWX74aCO\n+dOrp6ZWBSrWHkyVPX5E7fvYAOmtWNC1Kg5p5AUPTvSoV5AwNGWVsyQFMY2W\n8HcJY1QdR4hgY75Hrw5N+CVWxftL1kPSHu91DpPS3qJbOsn4xaPrF1AUL7f3\n1R7cRNBa8G99vTqWsARESheR0zm7zqbtC7ADu0dM9QtZ4KfF7ezwUO/XewhG\nhWN9tntC0h+t9sJzk4tpIzHJoay3ICOPDhquV7LNiYB/Wk0DRjv4kgf/+0ua\n23J4RDBYPMPZ8aWyA8SpEl+zmr9MtpgFS5nIY4HGSXyTTQtGWo/gSrhy1A4N\nQg8WdRWjlGoKZpnF5dwjLo3FMZAdGXcaH6KDhgzaO+IEEwtyGpNpVBAaKHCQ\ntsLLtBDqb8oY/SN3D8WfsHQ4X7E8awgPYcewtYLrNzOPscfSRqPj2vjPYe0R\n2XGUke7QeAQmqLH1btBVJDJxfvWRSqwa78Zu2uh3EkG3zTeSnjeukEgIrzaf\nr6CH+diFCrKVsVl1WR8Wes/aTVfK/y0vRLt1LyXuRY2ze2YUYcxej0zPdrmY\nsOhH\r\n=eHlm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c590a5bcd55a5364029fbf6acd7a4569788403c7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.186"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.105"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.124_1620152892491_0.5688925816842123","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.125-renovate-non-major-e82a28a35275fc04ece62b7db16b5dfae651221d":{"name":"@balena/jellyfish-sync","version":"6.0.125-renovate-non-major-e82a28a35275fc04ece62b7db16b5dfae651221d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.125-renovate-non-major-e82a28a35275fc04ece62b7db16b5dfae651221d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7ecc796eb9ae10066bb543c5718c9a853f7e6aff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.125-renovate-non-major-e82a28a35275fc04ece62b7db16b5dfae651221d.tgz","fileCount":24,"integrity":"sha512-L3rn18O3fIU85DEzqKJKjRGDFCF1OXbgJQB3Hw+JQo+fgjbxcyVXY3z0wE74aE86/T9VXTmBV6XlWdI5Hb6RLQ==","signatures":[{"sig":"MEQCIERO1jg6mpUQ1hV61YCYzd+motO2QAotglrm+HeqEb21AiA/DFYd9Pxgy4ezOt7tsYjN46qIaLYzpmLxwCgp0tjgLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkaR3CRA9TVsSAnZWagAA4ugP/0M3h0NJZjelqfYTP82s\nhFZ5tv2woXQyyI5a7pmTJ+sPdzDHDFwomUWVhU9OazkeC6xrlU9/fhs4sEsE\niHngPhjPmfeMmZyQ8XfNnMZundxzeIzLpIvYCOdJEMcWva3+wjy4oHyMiEkD\nVz0cFijulamIY/9pzINRvTMFs+5f1QRcC0eBBNFiHkOk6rcYNngx9+TsOzZ8\nJKu4RmgG29dWNHj6svLWVmV5NWI8zf4i2Km34w0wcnsLQmAANhgRir1gsNbB\nNkEG83FPMZMEio9+l5w1SjqC9PtCJn5DafzDTivOsbY/blZNtV64j26MBqjZ\nv1iehrRqsbXWvR5nBV6QAqTtwZ2z8K4ZNqH90sPHI7w3wvhYs944MeEF6cLy\nFu1KqSgCtu4T3bA95x6lhxTg9EDH7vbVQ3DHEaSsXWoMfmN1v/VHRjAsQz82\n4T802gcBr/jArrjdTIRckpIdZ8PRsCDEWQHRCX4dK+cj/OknUebu5LStIjrW\ncPfKs7Rbx8JyTqf5w0nQ8YUbv6SYLtXxuKTk0kFObsFRh0QhShj1elxZer+4\ncG9h/CFLYDSxnm0b8cvq6vTHVEneQXJ8qp3oLl4EE1LHp/f2cIT2K6oyAyej\nsIw32sUwmqT+tFrdzsLjDV/ykVkJC/wbJX0IdF5XDP48xD2yrhByvrv34ttN\n/hzT\r\n=E6OX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e82a28a35275fc04ece62b7db16b5dfae651221d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.187"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.106"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.125-renovate-non-major-e82a28a35275fc04ece62b7db16b5dfae651221d_1620157558553_0.18812888210360912","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.125":{"name":"@balena/jellyfish-sync","version":"6.0.125","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.125","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cde8d753e75d8c6daa5962352e01c43ec25546b2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.125.tgz","fileCount":24,"integrity":"sha512-eb/d9ESVJ9WSIU6OwJB3tr8XXIQltK7yxZE0NmIaJAAbhvh8f2hg0SmNd3NSYwR2ivkiSnCzl2rsnkoTpUoY+A==","signatures":[{"sig":"MEYCIQCIn+pyq84nI2bq6KXHFTZI/PLRuydpO8DijOSUMe2f/AIhAIy6rJrP+9gOcN8Lj/OnMj9gABo1TLSnvC9XE4zpALjM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkaVaCRA9TVsSAnZWagAA/9YP+QC6JMWFU3G8y2PqxAZY\n/R1JlP5CAUQ3WO+BIhiu/4b3CpCl1avTKHjIakZCoRMSEpXPWkY8mrmi6cmZ\nQRQG5W//ffzQZ4hkFeuuiiT9nCYY4j4NfPPFym+jsteAvbO2lmxC0AX1nSnV\n6dJV7t2XNiL7Dbgl/m0iK3cYhrJSDMW2VrY969FTvkPhpuLcnJXTRSctaYRz\nZEnR0RqZiO4K8vNY+FjDRyuD8x0M4CssVJnWPhYhjh6m1zeaBYGAz5cDq30h\nrKfbJQwy28tKT+WdWvsHukd1SrUhNN4y27I6c48tByBm6e2vp0uvu4kZ4ffx\na7gPmCyBUHdQZF8u8VrpqzR1FuHLKsIdhZEIBMGLgWb1o5xSSqhQBn2GzfE9\n/hMieCfK8JPOkCovsDwCpjmUu9jf1XcML1FXb8LGeN3wYisEaosPKHhulDxC\nJPoOMRbX4rIcvZM3LmCZLdX+ztEsqrtik2VzvpxyluC/qa1qnH80lrNo3FQ0\nPbEc5WisGQAOUkCR0oC+s9UtGMrQ8hBJtFfH4sFu3QaTP7SjIGL733xxZcLR\nvJhvi1en/mNb3DjbpCRm4YxHq3lCnfGyre54680/2fhvOz+YCuqhX+dgdVCN\nNrpe5JNSEjnRqUbavqu939nAVX2bszfD7YTloDAVv0a0yoOjXUwzOFGerkh7\nmYug\r\n=RShc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bddececca7dbc134572f90b9de59a266730255e7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.187"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.106"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.125_1620157785973_0.484281590111995","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.126-renovate-non-major-ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0":{"name":"@balena/jellyfish-sync","version":"6.0.126-renovate-non-major-ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.126-renovate-non-major-ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5d32c3beb54aec5f5f1c2180e3ed6acd29516a4d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.126-renovate-non-major-ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0.tgz","fileCount":24,"integrity":"sha512-rd/kvlvsvawwx9ZaZytjIZf1TdMLtoJxZguuM4TE+KmifWl1dHwycs6/gXbVALgNTlHv2h1nE/QZpfeJ+lotNw==","signatures":[{"sig":"MEUCIQC5wKTMelVUy0Tv9TQ0aUvoIMJPMZFtC0qt0dMbnuZi3QIgICO/nwmRaM767TsDRvwr9/rB2cfEfa/H3F1I6p5Y7hg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159263,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkbQZCRA9TVsSAnZWagAAtbQP/1zcRgKljHKTcmvKoXUK\nq6dU7Xmt0p57F6ecakDMKDn0LRRBj8sHHS8uyGS3CPdZD/wgCVBwEczbFBS6\nogg69vZIWfn5KOoAG/UzwxyGe06JAytEZNrf1LpcYWTnhcwo5IkPDUYWBBgP\na1R/H5cNxpxJkmYTQLgSsPziry1fxPkR8xZjZIbuQh+2Ela/5oPhcgLwba7R\nuTPkEUxC7xHMjSdp141EHPSWytxv++j+yYdNFtsOaLhUkDR5eTZ1BPHFPGqU\nlQHH+clk4aWuU/rIBJFRjJqKd/0DXg7ljYOTun68I0aoVG0PQU9ljLMrRDvS\n87kqhC+wliKfnGy+PMXKQWiLpatqlTWgRDgKoAG3i98c3VAcOYJ+qTDNDGOY\n8E8LcQ2zsFNYXRnhogHtvKzYSdkZDRUyTGBZUjYD3cOAsDxSr3a9xsMsGbBM\nVZna1ZZ7onjYo5rhTkeolZ+RmxU3STwFeVuKF0K7qcP09XK6LfxgfShW/q5c\n9Ne3zKyV+39WOtJCvD9PMOdO2VA8bv+bMSPHnyowTZvV7MflurPGFyjaskTh\nubEvGjF+23OYrpUmkFROJyuCBbOOOvE155QZsjQVKF/UPnuFll03XtBr3ekK\nMbQ6UyNYYHMUW7PTBIKWn3UMnPfeJRnb6zFVbGxPBv5X27LC2HOi/LD4L16T\ntUj/\r\n=xCGu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.187"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.107"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.126-renovate-non-major-ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0_1620161560840_0.16445391892841843","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.126-renovate-non-major-bd947a2ac85c9cab3b98beacc3a7113fe0618e5f":{"name":"@balena/jellyfish-sync","version":"6.0.126-renovate-non-major-bd947a2ac85c9cab3b98beacc3a7113fe0618e5f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.126-renovate-non-major-bd947a2ac85c9cab3b98beacc3a7113fe0618e5f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"49b8b9aa86c7cfc9fac805a9c42b15be0548d779","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.126-renovate-non-major-bd947a2ac85c9cab3b98beacc3a7113fe0618e5f.tgz","fileCount":24,"integrity":"sha512-aU+HFR87O1KyKiifdk640wNCHCexnRAI1guLlkZX+T7nrcQq94ZUGVAf5OuSFsx9g9afOE5EQSW+/YCNn72r8A==","signatures":[{"sig":"MEQCICIsgv05oxO7Rb4oCifEI38VFe65lqNmoD5Ow9jJ4yRxAiAy4kA+Q4gHsYJMz93okaboCYhBpX2PPJbomr4w7JOg5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkbWZCRA9TVsSAnZWagAAF20P/i05lPbiPSPyCYH0jgHN\nHqxzQnMY5+kwUJRQ1BoaaLhEUOqsBUB7id6Z5588IqZiG3Icm9ZoO2Hk8tVR\n3hT76HaPILhdJ25ecM9YBJwuBWfuXIc6gTjaAXMudniiP4CcHgSoccTKdgAk\nUBaYoPm3m/CSMLUYJD8cqGmChWmJOtu96OqY5NSKtLymPdojVJ1zUegnrjlA\nbQa6NNFtnJnsTcVYYGLFLwC+HEPolaFMwMdSDWcYEA9o2otshzJ9FbXWoNww\nAgL08Zdd5saC13AImOtTByE41A5FmcWcJmQofsKVev/N0OksGVHgatocAIHe\nNbiRVdx95Ht0zR+nDD2iJ+dHE0Ah64VTQcJqIbeCt0QGOVGeao6R1Efh+d8O\nR0V9mZN9nxfSmdmnGrK6lz7wDkzolEaNsxQRUcNu8g9BgnDKRSy39h9YVLTy\nz9j7/mzom2qirVrCCLRcIonBVH25g4eMBsJZn7HrwA2iExyZT3lQOVnT4uY6\n+sFewLfP2ddSPqM3OgkD507RNHJiYuM+COxmbgf1xbI6UoY+jEu27cr+wDKM\nI7hp9FfwuZFw0kBf4lgWu4qFQCg0iX/mua0XmzQiWnYs9ZzQmMNvk2PxYZma\nC0cBxvOPDoaSZREEoy3NJAnhTTjw8ojCNsWLFdtnBpsIYtA/h6p92F0ny7Fd\ntqoB\r\n=6Yo1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bd947a2ac85c9cab3b98beacc3a7113fe0618e5f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.188"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.107"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.126-renovate-non-major-bd947a2ac85c9cab3b98beacc3a7113fe0618e5f_1620161945462_0.869242817097666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.126":{"name":"@balena/jellyfish-sync","version":"6.0.126","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.126","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9c37181f1e9caf058c0431a9cc4d36e9cce1d85b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.126.tgz","fileCount":24,"integrity":"sha512-1PQ8jYvxxd5xSgkcvF0U98EY6ZcDKOM4G3Hg0wRJ/ZWwtlbL6/KVEZw9l/yDJejK1iUy8XOtYRNNIpxAwjSNPw==","signatures":[{"sig":"MEQCICjU2hDu+eTXFHkhWPO4jyy8fff8u7Too2wasT86WhOGAiBS6hN92DXX0wZ4T/WfWlpaUW9vxKKsDU6jiNi6O96rJg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkbZ9CRA9TVsSAnZWagAAQWAP+gIYLa2j58yjLmN+uz6h\nCN7V0xLsCIcNRITC7Dy5EN6eFl0tlII4Juk7Dcf3oDMQX9A0yQ2Di0lVVmlM\nmb0NFlvJiMRwL33q10ebddbNmYW6OH0aPUoEhELAuTJKA/VZpgm8XlN++XXP\nvCrJOBEnrw/HRbJUfxDuJQXlhIEjMSHpeqlriMRvbYCO1Y0QkJEidQJOGzjR\ntz04szwcUE+DI7NIoLV655RRCKlegzOyJttolykmXwv5JiC1OZ1XGt9lo/6/\nGyoikEn8Tq4XuhhqRAdY7Tv4rQjM/YYU3yLzpffQaUvUNaGp3b8JUgPMuuHA\n0pm8ggNOA8r95V0wCAlPcGwGVq2l5B5HGl7DqOJqaBS5tbp2YMNSSOT0r9rr\ngOZEam78Al4yWie30egUzH8DxSUDRRATwiRNSxKwLP7bT9QKOPfPH6uAnOZ0\naMP4eQl2rO6zvgyc995vflbQISRk2TLmIRKG6yDOZAUqne5i30f2OsrwuG70\nxtZgk0swvcElawuPJ5qjOwlihv5S0DegheILGIWqbyWZ82udLSHPwBt6ptD1\nj7IeZJ9jwrq+aUCPyW7hOzaINv/gigxBfh2X7zyasv1MxX/WgBZ+iFGodz8+\nFeohyB0mqGeTqkGKjTxjaWZ6KrZ2v0nttpU7NoU+QGfteYOHUhsb04dRkDxI\nYWLc\r\n=enhv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b9fe6713e6efb59eeb377bd119b09a84b1e77344","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.188"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.107"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.126_1620162172460_0.3463059358652012","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.127-renovate-non-major-1147d260e9d08ca8587dc5f552b17003e172c840":{"name":"@balena/jellyfish-sync","version":"6.0.127-renovate-non-major-1147d260e9d08ca8587dc5f552b17003e172c840","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.127-renovate-non-major-1147d260e9d08ca8587dc5f552b17003e172c840","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5c67a67123c799987b3f4baa920574344cb649b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.127-renovate-non-major-1147d260e9d08ca8587dc5f552b17003e172c840.tgz","fileCount":24,"integrity":"sha512-rsxQo4ltDEVpqXItA0VC5fCHkaqRbnWU6RwEujtBxJ1hUb2dy26MKRn7UV+41RkmBG8CfPOIwXJ9rN+/MqcnrQ==","signatures":[{"sig":"MEUCIQCUVY9Z0GeFvKhCInkwCzMzAv/yHC49maQCXTOkl8Vi+wIgMbMjSixU8DtHY48SsWUd1UOOl48adsK3NhLKLN6Bjfs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkclsCRA9TVsSAnZWagAAO3IP/ihstIDOqCCHrYo+vlkV\ncfsE2eq7eOftIwKDJAMHWy3Qkz4FWwNR+p7pJQvwW4FnuqnRgV31BeTKZUQC\nx0+sDWXmdaL1m8hlFLgDslCAIBRp6z1xecn7p5BWSb85UB7zE8so0SeUWaMN\n/PD4Qhff9WdERiZUHyUaJCNHIp6N1iR2vhkAtw7ty1VM5Cfa35sKgBXw3Kjk\nF7mobuM7gdBd7fhtnLIMPVYBrHDjLpcwTPgkb1crl09axvCBpwF/RSn4dtmJ\nNTT9r3V/GDhmgtFLyXJPfloCyjI0z59cwuE9ChLK3gDSMoR5I+cnyEk7I1Mi\nunis3uGvlqsaCrIFqwrHyB8MeiU2wQmvbH21MxLlgasnbzGbjydYnZrVkrv1\nG7xOf/aKlPkl7KxdPkqPlG+xBJzFYXORiVVuE9Crq8FQhUB1VXZkAIeV+gyG\ncUMdQPe2ZP0Gsa4eftpZeSLsx8FIqUuupM1BaR8D2eo5bqLt76bRpa/a13kE\nPG2+TMgaePJOPM9c192Qya0zIQJu1/IgX8gSIgddfbZ+7SporNC35a/5WkDH\nRm/vNEC5TXDcjNA3jsC+YIjaykBRLjhNIVIdHcC590UInmC1Hziy+riK2Jw2\nWlgsh6aXv4nqXrclduSkT29g7/0irSH76cTIG4bElNTv/prdKqf5ne717/1T\nps8W\r\n=k9GK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1147d260e9d08ca8587dc5f552b17003e172c840","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.188"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.108"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.127-renovate-non-major-1147d260e9d08ca8587dc5f552b17003e172c840_1620167020380_0.6529638242464788","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.127":{"name":"@balena/jellyfish-sync","version":"6.0.127","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.127","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1cf86193c04bd78384ffbd9491ed45820321267c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.127.tgz","fileCount":24,"integrity":"sha512-PEpbvyqTM3qH7xf/ph/VWmLYiihIyBF8mv7j3k+ro28qgLpugpNKiw0rlIggi7L2SJOH+vyVBxcybjn6iZ+opQ==","signatures":[{"sig":"MEUCIBQT2z6voiUVSy++WxfVFh17nH/Z5tp6swEzO9BhfmTwAiEAmkUHIjiMTiMILb1Ot//eblxZ4Ukbu//SvhXiNpRrTk0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkcpSCRA9TVsSAnZWagAASfEP/R550kJFRgnK8BUyoKY0\nmcBTZBQhYVjiTmVUoQEcBCaKkVHvVMmRjLb8M3Wrx+b+ZJtmiUxwHpx3m80d\nYpwMbVKBpb4Lk0u7WR0U2aUbM6Xqi4YZpZSCZbR51h0KUWfljggA1MUXFwpo\nr9h8hbt7sMajscbFvvFU6agXWtH5nmO9cy24wkEL9+Lw1A4w4UfNF6+X0A7V\noE1AAFqSOFIy8uFNeh0lde/GEI1x3uYTnnDXpWHdiAxOVv4f2ndMbnss+lal\n2pC3TgtSO/JHKE8kWl85ZpLfhiTwHDhPDpTzbxWtF+9TaJONJ5T0DRImgXo8\nawcc6JwasQUK8mgy5lMI43siPRMC7LwzP7yhAVeIwyGZ2bM0emtu0kHM0QnS\nNwlhDFie+FXw8GZdP1OLywZHXfYNAq7fUR9ATe75mhwMxo4lWpaAJhCWVrLi\nPcAcuF+IvZnwi8xl5SaRttKdLWZstB4g+ggXITXh4SPREuGFZMUgkGw0CxHF\nlOM54kvuGNrBA+t3fl0MZqnGxrkht/1UfV9mEUBVTG4VHDGaj9CvqUT8y/SP\nHSiB4TD225d2fwqIWM1BsOVrJCSniSqSOaHo2Ym8XmARmd6ljxFURLR/W/wm\n9ki2zvMBdCgB4tMifwd/kY5CwjtlZsfYlLBtttryr4cdhpRk4oNpjS+w/4K+\nJWED\r\n=HUDU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"79dea38596b9b552e8b5e3833204a03104c8ddc6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.188"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.33","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.108"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.127_1620167250046_0.8689763279743248","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.128-renovate-non-major-ac5eedeccdd66c50652c182caa0f5608681cea80":{"name":"@balena/jellyfish-sync","version":"6.0.128-renovate-non-major-ac5eedeccdd66c50652c182caa0f5608681cea80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.128-renovate-non-major-ac5eedeccdd66c50652c182caa0f5608681cea80","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f8718557a32d68e2e713c66279d9b6cfc2426956","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.128-renovate-non-major-ac5eedeccdd66c50652c182caa0f5608681cea80.tgz","fileCount":24,"integrity":"sha512-vJdZMk3W6AIi3vgK9TJpGdT4/B9zoYnLgfzO7rdBgjn3IYIFDrSVWcYwllZbl/ajD6l8fugpinZ++4dRmH3aDA==","signatures":[{"sig":"MEQCIF0B6JVBLaUweiz1G+DiQ4+pnxeTHY9CnQXEKrip097zAiAp6GJu5y9nvYBvnj0vqvwFjVhnjv+sVNhv28MOR5bc4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159397,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkd5vCRA9TVsSAnZWagAAubwP/0ZYKnr4LFRLHd3ue4pD\nu47jNzjKMlvtko6kift40dN2x6RyFmX+pNH9zbJrJ/s1WnBPNBkbs/PskWg1\nUwHQ17eg+RVzgPqe0YEhtwmxjjV485KguvXicOexHjss8kcTbIlXjruVzG87\nPRIL52z2FcU5Ys3JBBmczUKC13+aGexTlD6W1kIhbaFCv0wC+lwpfND/dDni\nj1JJn8CvRo9WBRpxhMvq15wLp5TYiaKl7TGPqmZCdgeo4jDm6G1bTiDsAsdJ\ngjWNG3QJfsn4mLoRMrDKMBaGmL3pvak8rPnlTOX4YMbbuBk3Pi707xn+USQP\nWbzPTmozieuLIL0kVpqqNM1IzlK2ustlkLQdicmES1CiTWHRJTpRPFWQcR27\n1dthEBAqn9LMVLc20KGRw8HGzpqbEqKtJ0QJJq/xWbaCNzergdvjuO5p80YB\n+5D4tUsjm/rVgZgfxn+XH7T4H8OsqawYQ7ZWGC29eZ5pEb5GK1B0QQuwl7t/\n05whRdVFkFuEdjDhPLxeC/hvYT8rWaJ0OxA2ynmATHJAOfk2yN8rtKkHVTCT\nF4CKG2AS1U32gqXYyIV1UCgfLQg7zfoUNNwmMK6j+sv9/czxybzVIzfQJije\naQG1qH380auW4u/vGRAUP11HtZIa0ttU7JWaqLJdG3mRLIjUqxJjCTYn0m8I\nwThl\r\n=q4m+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ac5eedeccdd66c50652c182caa0f5608681cea80","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.189"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.109"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.128-renovate-non-major-ac5eedeccdd66c50652c182caa0f5608681cea80_1620172399116_0.40349420156058535","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.128":{"name":"@balena/jellyfish-sync","version":"6.0.128","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.128","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d7718922ced0ca9bc97aa1d3ddd21731da45eca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.128.tgz","fileCount":24,"integrity":"sha512-dyx+jbUcdr0UYECxrqK0AxMhBn9YIehPiZM8ZIvZyKicdkNACHxHw1Xvq5Xw83lf2hUC/n4UBtFvPbywIGXzkg==","signatures":[{"sig":"MEUCICVJ06L9V7iObeyVi2A6n/fNNKwKLHu64OEcpTKkIzh3AiEAhXWYhnevRGVMOHILryV21YmhvCYTJK5zQO8QSXbqjy0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkd+sCRA9TVsSAnZWagAAFsYP/jYx5RkfXmSYP76Gdsc/\n94k+Zt53eu+1EOflXjA/S0y+vIYFe98wJ3qYSW8l/ksx76h9QOqLBEhAw46A\nnJc9KHszE4uVbKj/MSTnVeOmD4VLfVweBq2MQci1jFjBdq857kwyAatoLFvQ\ng2WGNg9PA9uQdS+4NV5lwDkvF+rKgxriRl+sKJn0pg6pxrBKfoJdwY0qmlGE\nIRJ0MIgxn3W6AJ+UoO58VGoqQd6yo/VRI3BP51un++UFY6ijCBh366dsurG2\nJV/+0mcC/sdPGt1CmoilGVZJkqNBm8IVA8IAdv/w6lagXMN2CIAh6tQNuF6o\nrer/fyoByHD3ciQ5FhyIUavLiwnG3N8khEqiQIZ9msZGPLpafDbqJ/O7p/JR\n5JBUt3LqXNZ98QXun0pOjGN7PEKhcuUYWl1q9SxBK2tVKzlNmFVal0SmVMxw\nFZAXIoCaNPIwCVcmBinMfMKU+LEPgdIGcaO+7/JP756ieFN8yxlYKkfWsIk8\nzmBKkspO6+YHLUUpmR/+DhSWauL5g+W/L4XxMwtNUccpMxwiQbSyxNfBmTGr\n9/vwPs7c1kTS7ui6PgdTWQKInV8wDO2wW6uo8lP7d+G2lb7mT1/p2YB6y+ef\nmTzMaQik8uZRaQabOoQ1qVWsX7xy+/WB7tLWYB5kPeVp1cAu4hBDrw5xjPxm\nYCDT\r\n=K0AL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0b2985b34044c3545efed0241c2702d0fbbdaf29","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.189"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.2.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.109"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.128_1620172716220_0.40778260249596054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.129-renovate-non-major-40f49a786db2a31063b0e510b59493c3b3cecaf6":{"name":"@balena/jellyfish-sync","version":"6.0.129-renovate-non-major-40f49a786db2a31063b0e510b59493c3b3cecaf6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.129-renovate-non-major-40f49a786db2a31063b0e510b59493c3b3cecaf6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59e5c8b7684d8daa04d791e471a8fbbb330d803e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.129-renovate-non-major-40f49a786db2a31063b0e510b59493c3b3cecaf6.tgz","fileCount":24,"integrity":"sha512-PcddQtlr20U4hGftXw/oMzde/SlWExUPszBkJ/kZp4Rwhcc8deCF2ORfEe3w8Jj0LMv8JRbif2tlOJVMi9KlMA==","signatures":[{"sig":"MEYCIQD7ZxT5fFxATfhlrEzHB2TNRS6BBf8JOT3h6o5bWIHP8wIhALbKIRDZPyTX+T0+EbgNkhD0iCfl3fwnIFFqOfIcVcD5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkhNqCRA9TVsSAnZWagAAaGQP/1sRrntLSY7VgT9/WdDU\nXH8vXPPHheCc6KXlP8e99tk6WyD0YMaFkfPEnVcfkt1Q0PU9MIi5+CbBnFDJ\n/Rp4HoqGD04TEQ+VF6DoJLH+QeFIFbiHtbo69s2ojdrDhDXG3PcAwRLcpIOE\nVhvt8ZCsddMf2l0FoDsRS97kpBwfIwiWzT5YC1aZcbfZy/41eul686BwivnU\nBY2Q0d1uHF6kDv1/3jVKEcnP7ON2o8rUB1AGrkPNXIoQopQ9heWJlbXoZ83S\nAP8+0achITx2gxsMl8gmASCS/EfzX5FA9r32XUzGAWbeIwWlvWh89gH2aE17\nqQ55kyxL17AtwhTeRINnZkYzSDXNxm6joi8pl55ZCSCuL3wrmj3BdZrq4lRe\nlsE5k05lcuo7ceLh5zRuMJ7qlogAwFkuOqGw1YilYpRmfmYB2sIlqHHPFnk3\nCmV6/BZFpqITYFXBMKTlrJamcZWrNDSjUiLmUEWD1Blusiumi1rFXhycF/mQ\n9hTDdjSLhDsBVjP6TOxk/fNQTE0PU4kttH7ldUNeoKLLagzYySuSMH0HeORw\nKOQzduf/JVenk0XJXCrLEKleWfHymVy85m2MucOUSNgcohc5342GdhGndOwF\nsI38QIMbOxSf1pcuQXWonVpNBPDVpl0PO2QArCxV44J2pjz7tWLrF4piRlqs\n6YWg\r\n=kqb5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"40f49a786db2a31063b0e510b59493c3b3cecaf6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.190"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.3.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.109"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.129-renovate-non-major-40f49a786db2a31063b0e510b59493c3b3cecaf6_1620185961622_0.29178748133316623","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.129":{"name":"@balena/jellyfish-sync","version":"6.0.129","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.129","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"83c72e1939b242c8b5903cc07bce33ab85ad4800","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.129.tgz","fileCount":24,"integrity":"sha512-DPy4PKuWxvBv7yhZowBoipFA1QB4K/G+4GFVBzV10VjbFP92CqXyYcmUeV92A1Pro4pe0/CW9Jyql6ge01BWDg==","signatures":[{"sig":"MEQCIHKGLspRJ8Tw5aH3NcUq3ED0H3NLAwNLyHS3iDketECfAiAh3yjDMjfSCdCyl4gNI/4iNz7lae14ZglOlXWFQOQQdw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159404,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkhQoCRA9TVsSAnZWagAAp44P/RfiDJd5ygul1SrvizuK\njPJ6up9QOC19NhKW8b8dVWl88Wbkunb8Kn0yRWiNyBVeZAmHjaleFtTSZ+FT\nAsrIpv8u5GW6at9TotGk2d5SAWtMwTDDR3f+hvXdol5BQwjis8HnSWIL7Lm/\ngHh0T5IKT1+I8p4LcY+eLrnguZRWvRuc7YMvA91YzDkxhzh5n1UU72Dh9p4D\n9ACY3Ugk/84fVjb9E1kdGjlr4C7pToORGxrDPRzjmPLwCN2P67C4dStMj5fH\nXFd1k0av3Orhpmhct1i+bjOngbANzRQvoPFwma0T6Br/GBntGTdvUI6s5hBk\nePC7HOE5YB5E0gMuOFqgtSCMy09RbkOC9ZW+/Xn7KL5e9l41in+1r7EAV8VO\ntPDLRIknXxPaDniaR0TB0wmP1b+jAFfEMC2YgQPrBk4/SLD7+eyH/ChRxSvp\n5cuJgbOukd+8pB5ysKMJ3eQ0CX7KjiXZDPTEqGqO/6ebM+u115NqqzhMaD/J\nSNS9i2dMssSsLD8XCq2EfS/zsBA+YrS8Yl+VvnUCpX3LW0DVbVEOWpie+9rY\nj4bC3pYr8ajepMfyOBPcy0aUBBp4tOyK40ui1JEPrpVzTH4zrtDU8I9yjnY9\ntf29qnLF2bUfYjOpa3bo4DVEmvABbvpwOOUBJGVNGd8FAziglUc2MZvoI1Rt\nYv6G\r\n=rEn5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0ab7a1f1f87cdf3569e369205cd5e2a67a28c98d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.190"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.3.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.109"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.129_1620186152082_0.5463107392270161","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.130-renovate-non-major-686dc41d988f02d609f7b6399525b821fa1fbfaf":{"name":"@balena/jellyfish-sync","version":"6.0.130-renovate-non-major-686dc41d988f02d609f7b6399525b821fa1fbfaf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.130-renovate-non-major-686dc41d988f02d609f7b6399525b821fa1fbfaf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6fd7aec0d6d91efc3faa404bbe7aa3695dfc24ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.130-renovate-non-major-686dc41d988f02d609f7b6399525b821fa1fbfaf.tgz","fileCount":24,"integrity":"sha512-7kW4JU49QufA4e0dXkJN7ZjemYq//iPKydmB/pfS2IL3XAWtoJ0u0nEjLW9GmKUrjiizyR4YFUoDh64AbyCtGg==","signatures":[{"sig":"MEUCIEtCahycAb2nrRljEVH7QrKoupvT/1tEAe5qw60B+wjXAiEA3R+khoSuF4GgL+RWAHPvo2RQ7v7sJb0ko+alRDf+S48=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgki6NCRA9TVsSAnZWagAAeCgP+wf2R1SdAh1Wzk6H7ktU\njOtsF3e2uKeB8qZs72LPR329T6ZjfSJheBrdzAQAwIx0NFPI+BaaM+Ckgk6C\nki9ABnvhCMmnyOhbojax3RAS0Czv/+hY9snd3NehREQjATFvJuL+l2c/s6xz\nDzwcr7kysvh8UEMoXtaskz3yvFOkxXIV6/0yAxbLVtImUmHk0W3jIm85vTcB\nncOXKPCYvWOFJnskwtI/JnpngOObnE8JEgWVllxJgFL2tXi8L4RXXhxKc4C9\nK+s4BsbajWfkFbrZ5uXMW9I0meXq+hFO1tvok03wFmJ2szUuYk3drqxcLYEI\nRSlR2bTVy2gvltHfIA21pJmJVlFCs0ezzgmk5otEvo9F1Y/qqQh8lZ1jQmmQ\nqZFecqORwJnOQMgy3IlJbqaGZI6LVZ2bodJlWWB4sfE5uUWOCwQe4DyuRbav\n1Ki0VJ32B5DOw4b7e5NzzDx12lX2KCtXatqWS2LXxh4oBL2hnKqKro+vx+PF\n4UCrQYJGM/tByWQoh5U4HrAPejQIMXwEDdLLAl43DE8i98QJtY18QW1JqV/1\nqAbkU1pzHWeqDMsnplUTkhGO/bwPFsNIrtP+pq3VNTl8gefNuwqCpGXSXOHd\nRFbEpkGiLCIy5eEyWh+ZqenIDhvJoco7W3gLhEk1rXukFDAd4IIQycQK1gvF\n+9+U\r\n=OsMB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"686dc41d988f02d609f7b6399525b821fa1fbfaf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.190"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.4.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.109"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.130-renovate-non-major-686dc41d988f02d609f7b6399525b821fa1fbfaf_1620192909218_0.5251447266165294","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.130":{"name":"@balena/jellyfish-sync","version":"6.0.130","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.130","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"28ad4f791e245e8dbbf8df3fcc47ffd85a920078","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.130.tgz","fileCount":24,"integrity":"sha512-jk18B3At+5Yc5glVmSb8VIi7e5rBIF2NOgpKn1tNUwBV62NjANSV9QQX5g0XfN4/vqSbLBqI9T7vXkkJIX5y8g==","signatures":[{"sig":"MEQCIAVVkZ3GgdOb9BAFNae46qMpI91I/H92dUjnhvWqra+nAiB6lUisItS0ZPwsYwWLoUVZfKVTE80qwKQIGKl+2V7z8w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159489,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgki96CRA9TVsSAnZWagAAO24QAIlRQtd7bzdOsdta7ZXG\nxFu8I2QEWdcBj+G+gE9ls5yXpugqt3Q1VKfV2WYr8Hk7rQHR1gfHst7zDiLD\nKlfkBXRMIhPCCbkShxYuASBapuP4e9VO+unOH/Av2r9tpBUnJFSZ0n2fPuA0\n3ScFPjOBepatg3uCpD3RU9nhgWIIYtXLy5fJZoykBZqQ2Lc6xEoHIn7kSd6L\nZ3/Yp02QnXQbkZNtAcQELG6rkB9Hj2/APiHwEQ0bRvBDyNNfVBPWz9xYph04\n7KYSC+raLVRQhN4jhGA5Ot6804NTj4BFYMS5cEs4oe2cwkSGRZalR1m9LT6b\nnXn21c1j7Ixp7W+JEbH5SEh9gvJZrLuVvXANe9qT1PfzDjW8A/5Qk8QE2BYQ\nSpJYT6tU/T7QSbXMCnAFJMCS/CXXVB3FGD2goJfv2R19z5DWKzOoRLt6gzoj\n2SJndrB1XTQzrTF8W0HrAnbsdtO83WxyCICBwPQazvd758u3jYNxW32NU01Z\n74lkmhRYm4jN9BsEpckZ9hyrGiiYq8WagtHzelmBzBQcT4FEdEThGPc4/0T9\nfjcILJlD82KiJlBQFmzyd76KVZr6rXk+f06ENfKL55zUuyiQp9zyw5oyJECP\ntCB31fX/dX24G9rNrAviSkPtVTcnIKCOwTnGtT2S0OUUDKMIaDbhO386KiKQ\nrUmg\r\n=1krB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a8d2dad59f12f8d7a992eb6655b5ddc01870430","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.190"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.4.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.109"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.130_1620193145817_0.5809061627707244","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.131-renovate-non-major-e5fe04419e06d3a156b6bdc985ac0c019b5a491b":{"name":"@balena/jellyfish-sync","version":"6.0.131-renovate-non-major-e5fe04419e06d3a156b6bdc985ac0c019b5a491b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.131-renovate-non-major-e5fe04419e06d3a156b6bdc985ac0c019b5a491b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab62e3ce8ab9b4a58aaceebf700c0dff7f8cf62c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.131-renovate-non-major-e5fe04419e06d3a156b6bdc985ac0c019b5a491b.tgz","fileCount":24,"integrity":"sha512-VHQGmk7FfQhRyiyLxa7swTTH3zBoPiUM0LyJ4Zk9/AxSg8+RVKuN78g4nd50lJRaqorS4bYQ/XkDc4yhaNRO6w==","signatures":[{"sig":"MEQCIClOeY3k71ahkRNkTot2NI+0G+tO337r8sros5AuMmC7AiAeiv4qdRu8r9gkxwLc9iJILsN8qedMBLQWdSu7bGiddg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgklcACRA9TVsSAnZWagAAc60P/3fc2MwE8FgPPslSRXu3\nqJTY/Rr/ILUx8w0sQLIiYTpnbn3jdGNrtFvVa3XUxm0myBlIX8EQPYOIjSqE\n+uB1xj3I8pkspg1HBQhyIkNmlEQmvcG5WDsENPRlotFSX6SjunkfQkWRQdXv\nLhWvX8kuHC6OMsfJIQpw90l8zJSfl+SyUpZgCWuKwUGDvrIv4AW9C8+/oTrW\ncXbxQYcQZmqMVMExv4bKu1jpr/o1eljlIKcUPunPZHxhNeA0K373QvMqyYKn\nDJk8GKpes4kKLuA8wvDR8DnDZISoWsdgPyeSa8tzpUwWgZ9CdOrH7IIn344q\ndQeeuV3Yhj2n0KOlcaUNoZ2AXGJfASBo9heh+1YNkBgoWpGeGeDoKMcuYAku\nqAlpua3h6420QK+99pivUoXcI+23xDdCUkFpfqIerL5FYH/LlMFzIZQubbVk\nsOey2o7B+7X0LVCh7Wq19MqQ0sav25SDnFeeU0lGbYqw47EzSC1+1W9BER8o\n0Vdj+RF19rr97mKhwWr0MT3ntJSrZDghZCWnS1LEqh2hJIlwSlr+Qp0pdE9U\nmF8o2P2+1nbQSJM4Ql4/w30G5wgjtnmeHqcct9fXRdSqL3TblWjfXWswZap2\nVUJYGSORakNt4/Ek5vLZk7HkQE475rWn6xlbV8ob+h/aIKjkenDxavnJpVNk\nVOYU\r\n=l3Gn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e5fe04419e06d3a156b6bdc985ac0c019b5a491b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.190"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.110"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.131-renovate-non-major-e5fe04419e06d3a156b6bdc985ac0c019b5a491b_1620203264136_0.8920559906684833","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.131":{"name":"@balena/jellyfish-sync","version":"6.0.131","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.131","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9121ce824cc8d06578d50024435e3ee3aed1c357","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.131.tgz","fileCount":24,"integrity":"sha512-fw2eVV8f91rN6KTc//QznZMCv/2LNJLJGIQyy1s6HKwCxeZ+wlYzXtQMC/YR54DV0vSlyoiDzxayrW9iHFPTZQ==","signatures":[{"sig":"MEQCIDlnuPuNHnvYwvbw/BtpLDjSNnlbisVvRzGMfwEyiJoyAiAjMx0Pqlf0Qib3PZsB2RuWK/B+P/eW3VGblbV3QA24cg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgklfnCRA9TVsSAnZWagAAqDoP/RHzE9hmCiUdVVJ76tfh\nc63RI7eN1QITfM788tPQL9S0V+bf7bIwxFxqMx5Qq0Se1/n0tBydoDvkSZR0\n2euBnl/A0ELqpPhMnNoj09uHcvzCRcfJNg5TxBFYEOL+pQBi6NCOp/uLHws5\nIqS2gx3BnHb9E63km/19r+US3XQxgRe2QiJXV1VTEQV4GzYGNIqaVt6kA2uI\nEwYk4Utg2RqHZCsyizoz1BvSmrjQvucOI/rfMBDsK8iQ+v3Pd1Y2ii2MMhwJ\n4b1eS6MIhjGrkK1UvuIhpsFAC7+RK+mvikbcPuGTKymk/JzsqR2FbOV/NGow\neXHioDyJMIE/Gm5ZXIw9N9aSCSBd/FNyfzUtTX53lbQvliV5wOsRNfCbLuhR\nBKbCo3atxsQZrLoz42EoHyKZ7holjMPr68F+ytRiQ+T3o7NStKGBSnbwfGeo\nRliV1Y8qCJRATo4r5LavDoky9yRF8T/aGwfZiBYLwxItDPpV98eDjJ3gWK94\nMwqS0gxslvGsT+fH/Api2GzlszeXZpoh/ua/+vMWIirbDqmS9PI/jvAcwwwm\nTYxnNBcFLC4oD7roAdrhu3HSyC88m1Vxw/7WJsMU52HKO6wrqzWfWDNyKFa2\nuUFkFX1a8hXsCne13TgGp7phMbCNfc++2Gh//aYs7aYdJCBcEhmICyMoEehk\nYGTa\r\n=MHhv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b9c86f0a6d2349bd7fc40d0b8e04dfe2e382955d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.190"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.110"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.131_1620203494877_0.5525405921489974","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.132-renovate-non-major-822b005e6eeb40449da3de223c79286adb62d7cc":{"name":"@balena/jellyfish-sync","version":"6.0.132-renovate-non-major-822b005e6eeb40449da3de223c79286adb62d7cc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.132-renovate-non-major-822b005e6eeb40449da3de223c79286adb62d7cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"601ac125c8b437620d4f51a8418bfc6a62b830bb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.132-renovate-non-major-822b005e6eeb40449da3de223c79286adb62d7cc.tgz","fileCount":24,"integrity":"sha512-vTT9n44jduFeWa6tEaJKhSM/QBuxjT5AfHlhJUTltU+OqW2C+lw7mn/rztgyirFwTDDTSxr5pJMewcZxa25v7A==","signatures":[{"sig":"MEYCIQDlISG2ThsTKrqB6sRGI4wzBy+ThuT4KcZlecDi2izK3QIhAM7hOFTZHe4isZW6M4C3XIoRIqN0Cldp5D+Uri6ZsUvu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkm4GCRA9TVsSAnZWagAAAvoP/0HQOLsI3rbutfZ/e3tw\nGY/rbzspdvrNt0+Yx4y6U1WQt/KpPuaoTffUDVMvOzfYEGiDTNRyHJo0XKog\nB6XdvxHOiEt+Dfv7gXZ7LOnUEVEHmQBoKOEoUnFj5QLkPaugQOBBaFWqqGZZ\no3UXJpdkjTPoPuwcjzXqUJmZd92boP+j1bYFEV6NQi3Uekumb54lJxz+0zK9\nz1R8+LDGnqN2NfqXHu9YhceY2hx2zgRPMNco3tX8+WOTnF8ETz7dIuWdATr1\nsWZwsF4GoKjvTSg5+8/shYfLCBrPzVIuxwJefyBhKdyEcya8UIdHg06JVcyn\nLJGqzvDX/ZGQhUJKypoOTc3uu37g3RV5l4lttbRuIUAMCYFTK95b9YKxUd+N\neOm9JUjR+KvvwiVaBAq1SL0GdpNb/GEC+oTW1JdEspuFHLrAHJKvJtINXwDG\nvo/ewIhHdvlyVIoRWXIz3OtJGOldZRRM2Ek6TGwqPmqcZn7WKvJKfyleOerN\nZFz5+tVgePwfDX0sOaQqIBGrUeMFKTM9uLbOczr3V/B0fou5mGQdpSaUZ9Kj\n5iKc1myHjOJvBBs9BnfYpF2YPE0hRr5dR3zGsScPxqk6JA+vC3UdMZuKWf4L\nKqKZjsPFbRfRDucDRss0PDHg9e9aBqSVL0cerdRWFTZr8neMyyX0u8iQFoLt\nDQha\r\n=wBtG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"822b005e6eeb40449da3de223c79286adb62d7cc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.191"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.110"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.132-renovate-non-major-822b005e6eeb40449da3de223c79286adb62d7cc_1620209158109_0.31027599803456263","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.132":{"name":"@balena/jellyfish-sync","version":"6.0.132","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.132","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29c6f2f3ae8add88b974864b3911025313afcfd1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.132.tgz","fileCount":24,"integrity":"sha512-WvIYg/R6QLtN6HU//L8A1gtBgv6sZSiNjwHVUUFV+Vw1+PZ5CZSoibfcMWHntthcFhfA1/4suSA4j92gMMeP/Q==","signatures":[{"sig":"MEYCIQCDUMd1CO88EnGjdFeD8c7L5jKP0GaGOUGufq2SVF1B1gIhAOp9ZuMIlVdSc/z1dhZoANXMzuUTw1bUPZpWMZ+RyLI1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkm7oCRA9TVsSAnZWagAAd+IP/i53KMgvAMt7T4dNPdC8\nllMmf/JUlSzmx16lpTkQ0s6cvTFAfqJiEIZHttFBGJxG5ZTcddsffJek99KB\nULjo6YSTw/NbrmI1To0askXk1sx5G498zUnJLAX/p5FA/A/D3hE5BHYRwywi\nBSjbyzp/HKgNrnHDxWwy9VlDXN+hj1GChIprTKSBEcDh581E7Wg9SCMqvLE6\nYQpwuRttCjML0M1iiLMuo+UoSWA5ucFvVizBVsGvhfVvNI03ureWbOZqWToX\nvjyx8Tnh4malN5PIoDiwGQd7WWQ1ZogFqASHUCkVW1SxNIuSczlWvzRA9p0t\n16RlAUGfXhPyG6cVbfHDiPfcExlqih8vPyOyvRdkzEuxg0pWe2csRLr5SuGg\n5cSvBagXabI2lUvMmP6kCq6lucrSxm/7UfnUrurAMin4L9a6G3nBdyBsPHKl\nmJb5tPT+f16C75qGwmNLlkTUeiozPPwVuz9D/LMQokzY/JY2X3bBDSL4lwV3\ncC/XY7wbSR9X089Ce75ovveSlx7lMhUP1j2Vs4AG/jxKZAEuigVtadTWWegI\n+EAFub0TO4HPosgW6eiYvly76VZk+eF+K7WZSiDPvRACW57ekMn7pPI0roWN\nTvOsJBEtoFUcymGRUG4f8uZKj7+BZj3I6FdYHZMZNUJQAR1/lTPSmykEz+8z\npAvF\r\n=yD6h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b6c6174d47e61a500a8ce136672bdf804e2043f5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.191"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.5","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.110"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.132_1620209383696_0.6902305096709629","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.133-renovate-non-major-4a7eb0abd9f2cd9024b8ca5404751ce2945e7175":{"name":"@balena/jellyfish-sync","version":"6.0.133-renovate-non-major-4a7eb0abd9f2cd9024b8ca5404751ce2945e7175","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.133-renovate-non-major-4a7eb0abd9f2cd9024b8ca5404751ce2945e7175","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"170a77495342c4b189466e768514addcd7befbf4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.133-renovate-non-major-4a7eb0abd9f2cd9024b8ca5404751ce2945e7175.tgz","fileCount":24,"integrity":"sha512-CxHqRp7pv3TV5G9VVKRoB7id3GhaLFed5ztQFbhNcRRpeMX+eDSYl14BPT8SibzdAqpFqcXWsY7zmUiZSBk5nQ==","signatures":[{"sig":"MEQCIDadfVpK442MhvQjwpk7MGmTWLtZJupTd/4CFihMluxVAiBOszpcgEvxF1/QTuBAeCBrjEuGhCsGzNgvBNNGX3wk/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159789,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkrApCRA9TVsSAnZWagAAPNEP/1h96gcZCvSMAmmm/Lfu\nWkkr3OQ1RkcBJJghkxUYu/59JmKDEtZzWrx/dugFYYKKh3kLfQ0hVU8o90GO\nQgn+ZBIcEYIc46u7ybZhhaYK8LP2+2P39cxP2lGoKI7II0S7RyQPp5befxl1\nyvbMaYh8oEnknKqST1zBRRNNrunx/hY7ZmqWErE5NUy0/LCuV+UvZMhfnXeZ\njuTjijT2eJZMrS5+SLOwYXppydwkDgTRpuHrZI196TD0gpqOER53ArVm+NV7\nPr07ZBZ0RQ7eYTo4N3JwZKefeKhUgn/Lza5tVZRMxIBnrnx+Q2MgL46h3v+6\nMyS7V9NEXWn8ZcujUcZZwmAcle+ddJCubwEZGBIF06O0l8q9v/bGtu4mMYWW\ng2KPybQ7Ws1OHil3zwp196/i6HV5PKpNNJuQqCQIRngxeVP4TmCVsfxpNF+N\nbIXIvDNOEsrQeq6sCKM5g/ruOpmAnTbW190i5+hfZPOdmt6HTH37UPTh0vWb\n3AFxWBuTv2FhbF90CvFXZH29dn31erzWGrduCMqGUwz7M1oddqoHHk6/MUhF\nkJkd8NfjhkQkNUk4lqr19Sx49iPmdPschX7DQpa6jS+fd2+Ueo8Xc+EGD0fV\nDpNDmIOY9wkZieOqbVt2DqlzI2qIjtct2HeDcwbfAE1ka5XSAefzN7PD6jVG\n2g7B\r\n=l0en\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4a7eb0abd9f2cd9024b8ca5404751ce2945e7175","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.191"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.133-renovate-non-major-4a7eb0abd9f2cd9024b8ca5404751ce2945e7175_1620226089286_0.12714485126443842","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.133":{"name":"@balena/jellyfish-sync","version":"6.0.133","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.133","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"54f8d8bf46fd3ab3d059b4066fb422366d767a55","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.133.tgz","fileCount":24,"integrity":"sha512-o3gFKJw0wkmIMmG7W3R2XTFIMbyKu9qcu1lYiUMXMQjUzwt1qSqjrKVO0FA1hgBHlKEnx5XlpM3AZUQ0Ek+hYg==","signatures":[{"sig":"MEUCIE7YhS1r0yZz5OjVyPTp8yuMzGpzYpnAIvv1oSNMdVczAiEAmacz7v68Fv343ihPbQpd4hneS2680RNBIMY/Dolt/Y8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkrFUCRA9TVsSAnZWagAABYoP/3d5SGGuAwwwOZkiLXoy\neb9zfwchf6qrnsXq6h8itbvf3cezIDriFgSdaieQV64AjvhSnNInIUb9A9EJ\nyv4i5fgLAN0hyRDQGJ7xMRnfh0ZY5SObrzQOHRcvSEjuUPWD1X4cvqyvVfVo\nElXsaDhqRawHfHmJfdT1yvv4jtUsaYwRIBD0IGoa7liB7SI5pTjwiNEK8Lfg\n+82HbxVS8r7zO/VyjCSV/v959KRXTiqdKAUjJbOHX+N6Uc1blyVo2GKPAzrY\nHPRV5AUMhNbCfyVPJ3devdQjJs+hggG7F6GFR0B3vzP0ac24BKBbLtsmrGUm\nGtHOXPQ4EOY3XN+QV8wsMkGXiNmRhjHfMcH4Vga7gmLv9xm94WY4ocWdi7G5\nSxkjnffBUWl/AETNAZsDqGTcbBxAeiXRNNZqmN/ao3dSzbtwx7UmABzqNAGO\nYRayC8OMpZ2XEGlLE4G3ye+lzefBOVc1BCaiRAk9wu+szaw4sPU3AKE3kNJE\n/X1JST8kFr3yuQGwizDqJnZo45xebpzJLlky7djOHNgj6Z31wJjJy+qrcODU\nrWcBo6yFNcfJqO4VwgZKu6yYDGaHHD71P5dIYdWpq7rB1zyFMXs5wZF9z1Bh\nWfag0ZPkpiWToNCg0KBkXfsNm6cLVkyF74qn8rS2x6MAukyjhiSaJRUIBAWz\nVuRe\r\n=/sLK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3de7bb50091ddb70c34c2613b7b0869a935abaae","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.41","@balena/jellyfish-metrics":"^1.0.191"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.133_1620226387610_0.26575303511992354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.134-renovate-non-major-fb1eb5d5684298d9e17b2a868d169133d95a0207":{"name":"@balena/jellyfish-sync","version":"6.0.134-renovate-non-major-fb1eb5d5684298d9e17b2a868d169133d95a0207","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.134-renovate-non-major-fb1eb5d5684298d9e17b2a868d169133d95a0207","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd66119cf0673e78e8f3a54bb632a397dcc8fadd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.134-renovate-non-major-fb1eb5d5684298d9e17b2a868d169133d95a0207.tgz","fileCount":24,"integrity":"sha512-EJlriip7tLEzprJW87a14mD9qrhmePyQPLO7sQelzaZcAbyeZFcBZyIaCMukoU9bn80vAQ9cshhmGOXnnhBz/w==","signatures":[{"sig":"MEYCIQD+YgO99izlaQ53jgRx8sN1usvAO5wFohpFL7mfGPHd1gIhAPvTwJVXVU/L68k5Hay0Z4OqRQZk62R21LsfWqVexec0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkrxPCRA9TVsSAnZWagAA6hcP/1BT/2D/h8CYFdAMzODG\nOX/YOaQAy5b983VwDzCeelKK+sH7Qtg6HKG7e6Q1/B07n+bY3Euu7g6heHEI\nrZaMRE9WzZdiTq2PJVR3xqb5VQDFcEHiJxTjn3MLFyNR8jxaRN8TRKgeTMgo\nWNOFoN57DVXp1AB5IdeCBkFtkn1ogBTMsvdQnZ2obLQI4dRTi/eXnq0cL/fX\nRruvbWxH60DxcXpUHPF8Y8+rXonsAWUEYcSytXUcBU9Qzs9s9M4vIAYneyoI\nVvwojAfnJHtzHTqXGlY+65Uemu9qLnzKEnvzK9kgYx7Z1suPzDOi4HIJCj29\nMgtyanV6hTAk84QgUdj0fz2YUPdAuJjEru2usnjrITKjDmGsnFDodjUnVu+h\ng82AETfyTxgTT6zOiuoIVjgkhit61RO3+ygBzORASFJpCRRCSlnmkrnSLcRp\nC5Gt26IMY+Oh31WS6q+V9tTlexLxjANQuiWqIapVGDzs8/P52VwyTluIgnj3\nS7Fxvc04RUBJ8RzO18fIu2Cno9b0V3ClbYR/4mIOYsEthkCzLGeAhMAhnGzm\np087O7givqrYcUV4Mvg8OHaKnfhcUXt1wu/sfd/uA1V2GLUJ2OUivvG8xXn5\nCc2BA7lCvZjtnlNai3t4W1TAtdS8u4I3hOu1nDmK+/QZDGsBfQ/Nk+sT/LOj\nmT8d\r\n=LpB8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fb1eb5d5684298d9e17b2a868d169133d95a0207","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.42","@balena/jellyfish-metrics":"^1.0.192"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.134-renovate-non-major-fb1eb5d5684298d9e17b2a868d169133d95a0207_1620229198413_0.9673476931699794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.134":{"name":"@balena/jellyfish-sync","version":"6.0.134","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.134","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f6874959eb8fe8aee41feaf0328f3151348fff95","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.134.tgz","fileCount":24,"integrity":"sha512-o1tf5JfSZlds6bv0vU89ADZCKS5A2xCGPIvGczD1HSr/aBCcyTwIA6m6Q+tljHUpG2zqLrwB3OLy8RYqyo2gnw==","signatures":[{"sig":"MEUCIQClOx/rA0Uxs62XTl+8ThS75M810C/dcIk1agFAC1IrUwIgdP7e/oLG4aUJFwSjc/Oc7N2ZP5/eS1Tnxb82qcvDtZ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159796,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkr3YCRA9TVsSAnZWagAAGt4P+wTd4iQy2Q0qUkEpRx3r\n/Xd4vK4GFEvQwANCBzokoxWir3X2BElfOBw4mUkSxIiVbWjqU7btLf7zzSiy\nOZaOPRqAVxcRKVJRSUI5geuM2XQw6goWqdEg3z3/kciXQRZ/HNt2mpvwOcxi\n3+9pvBMRKdY4n1/r9kki9PN9GVheYIGKHrtkTeg57U6r7bQNvbmwy+fHvT19\n12fGr/1dg1katYU1kG5Duun4ibuWRxlJYzgEWhoPVRFivpTJwjMR6W/WIB74\nJeUS6U5IHjocS6jR914mPKET2LdBo9ICXrblgmZtIEue7PDNRijp4iVVtVXp\n8R4G6OaIpJMjFP8smfltwUD6zzsr5Act3rYH6bt8Oje49Jgvovnq31K6/NJ9\nQ+lyvcgUf2FHk9jHt3E2eCiia+wKvgZrrMLVA1zn8CpyLs1mAYI3t1YPL/Tn\nwvh9CphWdDvoLHTn9w+fssvhpRvL4OlHn0sgNHA8rEL1M1EaIDfC+g+xEsiI\nwWYZupo15W7kKznswliVyUgnwvsljMLgCuN4Ns55ArzjiziOMmCPlMGUd2Kw\n6+uz6sx3TT4dPCbWyurdER2HQq9dvr6txVA4pCkBQ7CiRXON5w62KMejx+to\nr5zLfs5nLdD3MHRXWsZAiXiFbAcxX3ETKTBQwvfvpdWoMVF+0as2+md6lTUk\n9RGx\r\n=OcKs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"da69c209e9deb630bcf3499460351b557b1e0822","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.11","@balena/jellyfish-logger":"2.1.42","@balena/jellyfish-metrics":"^1.0.192"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.134_1620229592244_0.06566922687347487","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.135-renovate-non-major-344e8b78244095dc2475bd2cc3f685288daf9e53":{"name":"@balena/jellyfish-sync","version":"6.0.135-renovate-non-major-344e8b78244095dc2475bd2cc3f685288daf9e53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.135-renovate-non-major-344e8b78244095dc2475bd2cc3f685288daf9e53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"489f8b7592c6c5c73c53cbee5fe96cfbcbda7cfd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.135-renovate-non-major-344e8b78244095dc2475bd2cc3f685288daf9e53.tgz","fileCount":24,"integrity":"sha512-kwu41VwhoTca3DY+QZRHR9dULNi6Wn7APgqiQraAaqlEP9RPNKoRhXJDL0pHG2jrPT1MMnX3xPM9QtM9mUDz4w==","signatures":[{"sig":"MEUCIHBIeJ7j+cqh3pAwQtqaW8NxF7ZcvarVdGR8oT+rUJemAiEAk/tRCrX1pJGLYovvPGPXME5PCdVt1NqOFY/JVNHnTq8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkr90CRA9TVsSAnZWagAA3xoP/0gA87jWu7eCZzQ5lE9B\nM1KUi/VjNt9dlhBVJ0kzyRyR20ieQOnt2u9E8MijLfFMpcH4AcZw6FUZDhjv\n60u0cvzoeVZq165Ng3FrLGIXmx+T6hZPmvL3OFkDwhhkZWK8pBiVmRWyPdMd\njGGAX8PjHsGikGBV4ZpqZC+HiCxIlzzkNssvv1QwFkRdVhLdS7L2nQ5Kgmdl\ncC+PrmIp9hp8UEGDz7vwfsFIlOydufyjKIUTG8axk2Idp2s42SCd0Y/dCP8F\nUQb3m/wQWvhtlHRcexenwSGBPglhAATAIkQ3Gm/zNm8yzSZKglBkugqAOO+M\nQUAWGf1rSuT9mXYKRmh5d4CjXkvf7YQQJeNfH/EeeY33ooWw8cbk4v6KJfC9\nypQWoxDstuqDAoUFve/7noEAkqS1dT3787R9U9f1bg9NUsceKc0NG3negVM/\nXq7tkhZNTY6pUMkdbdixDRDhPoT+ryTdGK6Nsb3rr/cwA+1Jjhxw1m6ozHbo\nW6sB7ztdta3G9rB77M3gQihIVQBppALbiZC8SkR2ky6sQD9n/i/TaYXgWZCE\na+UmAaI+8hgKTtnofWJ/ZcHobtnSptKZm7pLbSC+NEBwBAgpy/I55pOsF2qL\nSeI/amolqeeysx7/KHVSnLSABV7Q+A2TR1t7FB/GyWqyDQyJCLuN8XwWF+W7\nssx9\r\n=5ghY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"344e8b78244095dc2475bd2cc3f685288daf9e53","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.42","@balena/jellyfish-metrics":"^1.0.192"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.5.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.135-renovate-non-major-344e8b78244095dc2475bd2cc3f685288daf9e53_1620230003619_0.928664402242303","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.135-renovate-non-major-f3077755d78c2699483d6f4555357a570e76764e":{"name":"@balena/jellyfish-sync","version":"6.0.135-renovate-non-major-f3077755d78c2699483d6f4555357a570e76764e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.135-renovate-non-major-f3077755d78c2699483d6f4555357a570e76764e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be129e4a36c3ea4e2ac62b41ae6bc2c8e5d50c8e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.135-renovate-non-major-f3077755d78c2699483d6f4555357a570e76764e.tgz","fileCount":24,"integrity":"sha512-XO89OjDwg7kZmLBXobcSQDzwwG779HDHzlz3hg03M70qgAYFP6TXXWTlcattprP2eF18VOvzSyD6UOsC7y1ntw==","signatures":[{"sig":"MEUCIFVLMdrysP+bHGyCoAjhWCxBEvuQtG24Ir+2lb+FtIYZAiEA137BgBmjyEmFqzV+yd/Dp2dNPIvjQjMTsR5XMw8JFbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgksC5CRA9TVsSAnZWagAAzWcP/jkUhF6rTEurrSJK+UR2\nJ0ysTfPXqWR2S4IBLU1FADMmWEZxwFvp93xmJpxlbjaJVGw1QwoFVDcmQ5/y\nCYfuosVPeVB/gh90jFT/BmIizjlLIhFcRG5A7PMW7uO4evb205+YYCa/eKi5\nw7PgLavGVSAopruFeKYM5lMfH6zuC+WnuTc+I9YhcOcKZ5oRjX/6+5eEuOmU\notVo7XwUNWuEy2Uh0nW9Uugu9EQ7fS1ysiKuhIRY7yOskIq5Mu8n+Th9i9VG\nMrYZaVJ1Ya/S7YEuVYQSF6/5eJs7rALBmsoEpiKRfnZe43IY0SyLXpHdWBae\nifnnxlwrPkbe7ryruhBtTYRDk1/6Tq3Gk2cqkMOSXFPwuXkE7Y2mNgGV0Ofd\nKI9PLWv/lsjw4a7g9JYdCZZfGgb+3T+6CIf0GwDC65BeWdVQtYatI7SbORcL\nA16eZv7zLD7JuV4n+FmzvfUF/oQ1gAh31nY9sRZSsGIWSGJCKnkNP4sBY6ih\nPl6v7gR30Vk/yOz3jULuFZxdkL1T2NenOEsCzxIDuHp7JCFpsgR2iobv9qBB\na6j1sxAjc4l/7RDxNe6hc/0IboiZjWuuy0ZwhvEz8IbXFh83WDKBiZGCWjDs\n0Zr0TWYTy105TzzrL7Sys0bRN4YhfuYY9mCcFz5H2gW49yJpjsyWzzIQB5jk\n178G\r\n=hXSr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f3077755d78c2699483d6f4555357a570e76764e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.42","@balena/jellyfish-metrics":"^1.0.192"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.135-renovate-non-major-f3077755d78c2699483d6f4555357a570e76764e_1620230329312_0.4303975479892055","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.135":{"name":"@balena/jellyfish-sync","version":"6.0.135","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.135","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d0cad3088b8a54010e2640830f7d1b48358be7e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.135.tgz","fileCount":24,"integrity":"sha512-dnstXuAEUA9uWhHQ4tHMd27aPdS3thNkirEut0LAiJGx+Sazq5quqezP6OZm0dqa8j4GtnQ4TPbeXwMi2O5DsQ==","signatures":[{"sig":"MEQCIF2NQ7hCW2FTnGUU0NyVFMwVfv6PiXrSUKNgjf8mV8dtAiAeF2J0PKA1IRn2AmpPdCpQSqqRJSlLJcyIx6oe62TO3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgksGWCRA9TVsSAnZWagAApeUP/j0zqSBq5uyByD07eSYv\n2TI/55vmFKGJm2n3M/UjTJgTjfPYYqT02GByJ0OREPcOeG77df/+CHwoEJgu\ncZpFMRwIApMIpb9rY1AtStlObeddV4pBBFH8xSZsbyjBY4wXESXKtB9AkQXz\n1zkQz7fOtX5dpcWqFslDOWErXQScuGJA4X+83Kl+RqOjBTcoey7ScUMfNWXB\n8t5CDc2DBD+t0UpVPFAD0k4OZzoWBIEScVMp0orH5+GHVAel8Mo8JBBo5Opo\na5tZbBo5seB6LxaG/Lr7vJ/WLKSujcG9R+ofM5DKlSV/jsc+8w25Q1nmhBL9\nAgNnErAK7CXsAsLJTwXkIus2VcBN62NsxSdMr4Uw9HSMLVzRK1GTRMW54qQo\nTZVw6nAdXSTP4euP4I9ErubrzxG8icgjrJE24e02jM3iRHB4muqrHgcs/YSZ\n1SLKKaZ5xDQ6n3F/znXnRXl0SUh7Zj2lvfcjL97xY3zr2USIIkiK9p9oRqL+\nv6NoFvwfHJQe6kFZ1CSOfEJ6+GaHu9IM8y+N2CF5UdygYsxm18XkuGC8DO0v\nZp/T0NG6ZJOxbhkdJcQhTIdgRHNNA6S0J4GcL75tY8ZFFbOUn56ZHZkAqi41\najdmuuU4ML8MFLyMVrhCna+ltv/gpCNMrX+xQwcu/Mc32zQT8eRSuaVBunA3\nSAyt\r\n=8zJu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"591c52d2228d37b8fbbfd9744923dd6fc0514e97","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.42","@balena/jellyfish-metrics":"^1.0.192"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.135_1620230550355_0.9309681845937439","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.136-renovate-non-major-9a8e7b69085e7f9def0e98e106e8c5254d81886c":{"name":"@balena/jellyfish-sync","version":"6.0.136-renovate-non-major-9a8e7b69085e7f9def0e98e106e8c5254d81886c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.136-renovate-non-major-9a8e7b69085e7f9def0e98e106e8c5254d81886c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2737c7fab24886b0a2d1d44aa78caf425ee6fcb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.136-renovate-non-major-9a8e7b69085e7f9def0e98e106e8c5254d81886c.tgz","fileCount":24,"integrity":"sha512-R6xVpKYaxUGLpfPuS6XP9xSs07HJ+DSTyJRncQBj63zVNXvDID3Hr2x7pf/GbN0i4ukWWWrd1bafqM1lUEJYAQ==","signatures":[{"sig":"MEYCIQDWe+IX9dUxsq4a4HNA1v3o4Em+sQnTWCDJv7KG6DY78gIhAOINPk/eLIGME7rbsCBeASJlq6k8937k427zCuHy2ABw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgksKoCRA9TVsSAnZWagAAToYP/i4IxeUXj2JQ6WGwna7V\nptEtE5pWs9lHGUymv7q/tywG4TlnBwqd+mJnEJZhYYJ7O27TsEIfoAveW+Qj\nE8F6np7Rdz6zGryhZtAVdlZeh8+fRXTvbjWZtujjkuTSVOPfn6zLgspghYmT\n+N1+u5oTsvdzmzvP3Qkb5eWxtnQwPZOHRipU9t68sXTvhAcTvaJpZ8PSj3GJ\npegnpET3mmYk+wujOFW/6kvhhXYnT838c635Ph2W4Z6LMjbB7G2TUwi1TW1h\ndR26mi5qYQUyKPiWq01fs44OwqegZZiDpaHVWm/rs5vTyppd5I3x2jTmTWSD\nKoI/EJ22GSVE4iaEE8DB0UTMNPh0quoB6Yw7yz0Ok2c4TCK3+28qb1Y6rIXy\nd3MRTdS4sTqA2x0TONrQwoh7MjlaHxw46lqzdd88Bd/h3PNX9bQeRjXp/p4h\n6tWAFs8icXJUC3qs8eU0d4SeWfBodxxD0V1O/kuJTaGgH2TWObS5RhKHW1vA\ncQFMkAVHYyf/esxUb0gHVIxSnKndnGDnZTrFANlsUdy+HHvmOzYq8h+MU2yL\nJPFmd0TPfkwYb1U1JJQe68+tNbVEObboTJ4dSYT/7PsXURqc4QDXySm8KqKZ\nNOdJrTnxDJI6cXqXwq6PfHT1AX3KKD0gpLdYWy7QaMp14vZQ0jeChKpkFW/w\ntK6M\r\n=Dm10\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9a8e7b69085e7f9def0e98e106e8c5254d81886c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.192"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.136-renovate-non-major-9a8e7b69085e7f9def0e98e106e8c5254d81886c_1620230824150_0.7056897826117441","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.136-renovate-non-major-ade57165603812a68022089fa6255664b3544d13":{"name":"@balena/jellyfish-sync","version":"6.0.136-renovate-non-major-ade57165603812a68022089fa6255664b3544d13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.136-renovate-non-major-ade57165603812a68022089fa6255664b3544d13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53c39d42ac98758950438fb276c1442ab2ef00eb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.136-renovate-non-major-ade57165603812a68022089fa6255664b3544d13.tgz","fileCount":24,"integrity":"sha512-PoHgT0jex9iq51tzAwWhhHj00JcZUNtfv8vnbq3M09goC55uf76zmrukuF5tQmQJGBhY44cnQkpC/hX50tMkqA==","signatures":[{"sig":"MEQCID6BkTreFq+STVVKJdMifkuGIgv974L+czcUNRetBuzMAiBHR1XgwGGJlb9TFcoJb62PJSqGfuhHzUtaYZlCBQi3eg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159990,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgktHaCRA9TVsSAnZWagAA/xUP/R2jQxLTrVBcIWZ5e2Ja\nnVnz98nwvfxiPtqiMWUSf7VEIsdVgGmvkSgizkncfjZJVbhz+SWdDRTX8ncj\nucFE8fyI/q2PuGuBa2ZBoOBTjOqGFlMtAvJdjW2zEpaXqhKCpBRtF95Fk+m4\n6cTwzaZoKEJkJZCoSKQttDah2QlwEjnAeD3igVActcVTbQTb1GB5K1PtElTT\nvlKgeLiZV+11Z4zCA+FLEi+Jj+SZYFHvp/tF+CK6ls2hpYH+XFdXZekKj7xP\nkd3cBA31TI/1X4GINDUmsnJ23WDUrrGOAtc4P/6KB+lBUKwrhLeZgGzI/ZPj\nV5jna2M2rDe1DX41SZNnBHtJy+l59WyxfqrN716d0R0xZTrPsqqVDKbrvyyC\nHBLu+tdgCZzxjb6cKyyAL/4OjtKLnSyVF5opKFCeQTFcneIohmeuEh1muATK\nVk3wQWOAxdZrgXv94ozPjYCka9tr4eafCGLRxWAkbngL3foBJ2sGt0FtPfIs\nZg9Lm8B9aJbdwN6DnPzkhR3anKtDUkPTSQtCv3mxZQ5MKmEWzYdzhWjBH0lj\nAEYWdtEYiNeOysRuPM2QhwUqo3wQ10swTdBWotiqJIaQnERb0/VzJc0+7ubG\ngZUA0HTdIl2LHsCcaCJjZwNoscNucFr2yxbp0kE0AftU/0kIbNAl334Cn2e4\n+fXs\r\n=v4wQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ade57165603812a68022089fa6255664b3544d13","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.193"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.136-renovate-non-major-ade57165603812a68022089fa6255664b3544d13_1620234714014_0.5275071244714069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.136":{"name":"@balena/jellyfish-sync","version":"6.0.136","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.136","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b0ff354d2dab9b09e4cc6a9e4e4b3ed7b835f191","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.136.tgz","fileCount":24,"integrity":"sha512-hgYrOejkuVB8LErzjFojO1S/SgW79vM2XcnExdEqQlaLTR4w7d4UzaXaehbtS8SEyu1Zqa7PwDyHBDxMTjEcJw==","signatures":[{"sig":"MEUCIFogJFbqfmra7gLyKiACSujdVkNutVk2QDEwhlqVL499AiEA5j0GsYyn+sqixU/AIrqSuHmNRkQtmuToTAWnnutUW9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgktLACRA9TVsSAnZWagAALaAP/jxcqW0H5oIFr/L9PJrR\npnDr7fU6eB9IVUydPJgu0FiNG/oTK1uoUz7KGXkmlF7puGmTcUtE2Nip7AJy\nJlA1yMOpgNiRc6h2bSISZWt63HmUL0/GK6Y0s6gMbuMj7K8WrUgVupNyxMxw\nELKZRtEek0ipr6M4OaQM6lhSeq76j1P1Nt27CT+Woa4EUL+Im/96YrJU3ANz\nP05bguKuT2Sv8Bz9WLfVryrWBGn7wAOY6UdJfKaQsASMNrgA25TNQjuBLDcI\nYD6EC/zZ+Fzk7FfiiSL5LeGDCwvCaH7tVjH6Ugf9BTWyVb/3dpVo6uQoBhkO\n/BPYn00wToIgdPnEsSNQC89nPZAg6dalC2VGnxpvfqe3cxDzVnfW/dh1sUKz\nUDRdV7upVL9dJmGKwtnUeS/fUdrI6CHF403/Iyp6mGv5R/k+9YeMzNScHu6j\n/u8Kwf3QOQcVjaHiiQTfOq8Oyq4obrBZnbZ0GFaqeZGLlR7YenJTlgJXV5o4\nl+64p+dRlMlsV6aaJnjO8Sns1fEvL9lhsY00ZWQ9Jb/doXKOG4vKXWWm7rqC\nZAJ78yn0HArO3EnDtwdSiDhsGjX5Akr0N966jgd+KjbbsAsaYrwy5H9mn42A\n2xliAXSnh1YObvbrz/SYmYTWVADtFP3T61am3SrDeUlZzR59bUt+lHFl/2wk\nTIzd\r\n=CotY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"925c9359bed6e860a1bf267875efd19c9e8e3c26","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.193"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.136_1620234943916_0.9099504745783842","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.137-renovate-dotenv-9-x-1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4":{"name":"@balena/jellyfish-sync","version":"6.0.137-renovate-dotenv-9-x-1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.137-renovate-dotenv-9-x-1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a1d11befa80364206ac6e1f970c83e56cf53b808","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.137-renovate-dotenv-9-x-1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4.tgz","fileCount":24,"integrity":"sha512-pa22m5UcDlvPJ17mVN1PEZxd6zOiWTyaiWGDG08aU+mdulxjp6tI78nr0PXlWfr5b/0/h67q/VErJo03YvU5ow==","signatures":[{"sig":"MEUCIQCGkjn7sek44jqdSvvnqqAeQ5NjcKPUQ031c4kRj28g7wIgXA9X3fa9ubIpEvF3TYddmQDxXQY7A20YZcmUNUgvIFs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160072,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkukoCRA9TVsSAnZWagAANdoP/2nJ/no7cZbrrNIFOnqV\nOZX0raL+fhHSLg19iIuBmKG6jbE+1fMFt2E1AZX50PjncqgQsdXVS01lrwLO\nkkmc/lqhRDRZ0lAVyrY1uZnHSS/SWCvO2tKbUN8lIR6JPk+upsWT03/60BgA\nm4bkA5NdluQ1uo/nkP6FN5nVfBc6t01TTg+hoxcHN7Yfb5iRfAf3nsVxx8qj\nNbHxLA9ejAsY4sNOsPlcoROpG9AzZUV5Cgb9YO0HkbTHwRbtkyMt4jmjTrQE\nmjei380pWcH7S8LR1QKGjeamfIQ5DJ5VNklUsNxHDTL0QtUHTwMq6yi745Lr\nNDEvJltdkGC61HW2WzoWSiXQf8z+QzTPQlT2423jRU5uEqzSYFpC1Yhx6/x2\n5241M4VaIaCwh8FI8mWpR6RdaXh7ePfdgjACI5QiNvTPwCxxIWmgqwQkJvaj\nzZfq4bUvGL8Prdg28G2r/kWgLNPCFgbQ/N2WuQBKInjZ53lQqqFbn4GQiVqZ\nHEnudufb5baj22Y9igWi18XxCWpU27DSqop8JEg4eCmKVoFgKP6Pu2t0xy8h\naJlrGARA0Scc6ZnvGJZF4cuq5xlahv6mwfQI/QJHv+qsKt6d9sr2Ew2St0LH\nNV/y+WaQ8bHoz9oIW7Niab4DsCf/hnWk5iTKMQ1FijkvqxhEteWGo40BHPIl\nkb0u\r\n=DOzr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.193"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^1.6.2","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.137-renovate-dotenv-9-x-1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4_1620240680226_0.36170038297690454","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.137-renovate-catch-uncommitted-2-x-53c7114f3446502923d18f643e987ebb5c89aa0b":{"name":"@balena/jellyfish-sync","version":"6.0.137-renovate-catch-uncommitted-2-x-53c7114f3446502923d18f643e987ebb5c89aa0b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.137-renovate-catch-uncommitted-2-x-53c7114f3446502923d18f643e987ebb5c89aa0b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c2eeadec8df52210b9e1d048e120ac095aec172","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.137-renovate-catch-uncommitted-2-x-53c7114f3446502923d18f643e987ebb5c89aa0b.tgz","fileCount":24,"integrity":"sha512-pU5Jql0uqFjMrrEO4SRSGgE6XOuINYGZoxRX9UY3SUVnrl7FDmjbk66Jjcr0Gsgg7EX5PaoxbBRgkUIJoFg6Zw==","signatures":[{"sig":"MEUCIDF9n8G+m7WSaZ8X5mi4Tqt8iVVTenOXHd49gNcXzOjAAiEAlJ83D/BClSSRjpXYzu3N/iP9l1PLqEY4qQw8etjyIi4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkwNhCRA9TVsSAnZWagAAb2AQAIEXTlMvhCvWoc+fUekw\nGsT/UqHaaLBPwR3yGOPDtqG5sETljnJqQLN0fuswimbCuKtYbbFjru18q4wQ\nxf5kfLZMVpyobeUsLtVB8m/XYtSQQVbd8WDn5z5wJKwHu+IWVw9aep47yU+b\nxXeCDA522eMCJxuUbqrVyy76UFXX+6PBff4Y2/oYJHNf835D3w2wzYaCHpy7\n2ZWUpgTiwEyVMj6f54NiOlyyu2TS+bmVFweUqIowX25PvQbO62pTKFEJbIWR\nZAWNeXBsZaaPCd/MLb6TTGzbvrlqtRV01Jeh/XlM+ZarmnRIn1tsU31kAM+I\n662Fka/z3swhYNhjrydeO3Kfp7stjcMd10eUrP/0cfKxOy+nXJQJD3Zomt55\nygNPLrAZWMiKjE2C2iRoAENgHjVA7sIkpZ7df+5EPYc0PEUjDEu/sauJb0uY\nCqQA9jrpHCUAiEx8pSgN2KZt+bxRYN7c7t4DADjo4Z0ljNHu9ifU2NC/TrE7\nDWnahFvFiZqvCRmCRr220QCtXMnd/Xa2TPvCmQ8XLysHUDYhooR181ZmJRrm\nSgqkDaIO7XUdJLisl0+O8DCvdd98ZmGJL51sowYf2iGpA7gMbzRMGSgHAOQ4\nv1iZmYQ3FT4JCCxPo90QGMkleKhD8d8gxIqw9gBkTnEY0O2CZRz+26gzfxj0\n28pj\r\n=2FJv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"53c7114f3446502923d18f643e987ebb5c89aa0b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.193"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.137-renovate-catch-uncommitted-2-x-53c7114f3446502923d18f643e987ebb5c89aa0b_1620247393275_0.31442976568944747","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.137":{"name":"@balena/jellyfish-sync","version":"6.0.137","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.137","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5c007f9a51201179b7d39689dcbf43e4c2522b4e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.137.tgz","fileCount":24,"integrity":"sha512-+u+BBvUbrn95H1uw5YuzZpzBk52qAYAS7tmNcdKqzQB9R6VdCX+P5wNsydhB1qZKrxW67ipAOrgijmuhZvoy7A==","signatures":[{"sig":"MEUCID0WQPSaRg5tiron8wuDCBFGN9iY4e+A+9lCTMx8l3pnAiEAt5t8p/wfccR8J2ZpL9uWtOMZuSTmX1ULR2FvYBeX34I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkyPxCRA9TVsSAnZWagAAXbAQAJvm2iiJ3c5kThUutCAw\nMZGm2Era6bXWSF6/OXRwZN6cCTH9PQIj7n44aKnRBPSlE/WlfJHgBJVCjU/I\n3OW04BncMCKTSe6cqNrGFAf9foCxmN/txHkm+WNeyWiZ4TdhsbOUHpkf+3RU\nHHi+jzuMsnygVrtpsPDOQtqvu8EX3+0lPOBE+lESfGUJIK+mbH3vI5pQkixn\ne6Rf7KMokCsKcXZWSlPgwgmxFj3YIj0qVUNoLYDs/uUleFjPpHJEaM3DFSPK\nol+INHpW2sB05c/RD3A+Yfm1ozmXbwTPN5i1dO9PIO/0WTsZkXh0DJdsCvO4\nfV3ZyWSQjZZ4OiUUI5ORCzdIltZ91U97BNy21zFRiYjAxumlC4bVO2ujVnx6\nh+9a3BIjsgyDsMdV49snW3Iq2gLj6TPFC4pWeK0hFQJ4OukR5ZOg+A2x8INq\ntX7u9WLwh/iJcXAOhWE4TDU9z6oZYbvVsAt9S55hDepvRfwy4GE/y/rtbhFs\nxFQZgYoGxF4egixd7+rHzxEQOpXZeEqLDCzLx5b2qBu7eqmf6DY/vHWng6rJ\nHDZskOe6eu9kPrfJfVpb8Knp/joitH6pb0DgmYMjZB1XHod55Fmqd4wrkUz2\nAP3j7KrH7goimquWR/YxI2KsduvW/COp654XZd8uZjHsfiXHcQI4QRBgKARf\noFZW\r\n=vbIv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d1b03a94561b6404dfc6c9d7998f9c679ae3e991","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.193"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.137_1620255728917_0.19668394093186858","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.138-renovate-dotenv-9-x-2aff00563c8612269dd7be3d18acf286673992be":{"name":"@balena/jellyfish-sync","version":"6.0.138-renovate-dotenv-9-x-2aff00563c8612269dd7be3d18acf286673992be","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.138-renovate-dotenv-9-x-2aff00563c8612269dd7be3d18acf286673992be","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"64b4ef9282e8a741957f88dcf5aad299ea3f66b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.138-renovate-dotenv-9-x-2aff00563c8612269dd7be3d18acf286673992be.tgz","fileCount":24,"integrity":"sha512-b/y+FQ5gEtslv+stY9WA9QGY+VqAIEt8TAhlDQjJSRzGRF9lwj8lYrEurxEEPleIyhTs/YWzSWTHNoqlmKDzow==","signatures":[{"sig":"MEUCIAXjOh616Q6GT/mDUy6q9ewrbds95oc6cL5Vm3iHZy/oAiEAosd9mlhgEGxKUH63T8r+bzlChiICKZukyR0KdsLY+rE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160164,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkyUICRA9TVsSAnZWagAA1yYP/3Be5ErUqjV6et542vjC\n2c07UsU5N8l7LG/fy1+VW/VwpJgUlGM9I6jcpgUWiSr/X84pP0muZXvu4AYs\nTVNDV3H/GaQx79pbkDMZm+X7onVsr9Y8ba6mQFD6QKNzHZqZJGUYF1fylvDH\n3Khl04MWxnoSIrkP2VVcIZqyLJXFktQWyA76I8EftqC0Y5rVtAUc8hf97bg5\nkua0RPQ2ylMM27Bmg1sxojRfN1SalR5odpoctn34JeJtjWxKZVPFLfHRx7hx\nC8easdgO7bpBgtVSLSCyOnEVDj/X/MYHshfEywIYlB5D5T66nspzdyaoDJt9\nd6V4BTLB77VN6TanG2hJT0gn9Jxk8LhOu6U4TaYY4tm3QM21lcbxZiPCTtkk\nsBj4q4KGbqcdY9X4+LXmRX18VIrdpmn7034qdyGuAIgbimulb2t58rTxrldZ\nieOnkxlsJSk3/ZKwoMwWCPqflRbRMaB5DohYbt7ZK5pryeAVPsrfHTVPkz2M\ntsKRzMOourH2GvPoXbVQvjbnD9akpxsGj1o9Ia57rnINf4dlCTjY8dJK79Hz\nrQkl7BEaEmb2ehL9UofUHn7R8u6/GSK8vgMzOTyCu/0H+EF09lUb65jWDFjf\n81UQm3w/XLLZwFWbF35WbcEi0nGTpsckAt9l+DnnjS2MK9nn1ickeHeeCQCd\nUUhd\r\n=P13G\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2aff00563c8612269dd7be3d18acf286673992be","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.12","@balena/jellyfish-logger":"2.1.43","@balena/jellyfish-metrics":"^1.0.193"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.138-renovate-dotenv-9-x-2aff00563c8612269dd7be3d18acf286673992be_1620256008531_0.962885708872677","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.138-renovate-non-major-d7001f87a3ea29b37588b4b8105e7a31b16cedd7":{"name":"@balena/jellyfish-sync","version":"6.0.138-renovate-non-major-d7001f87a3ea29b37588b4b8105e7a31b16cedd7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.138-renovate-non-major-d7001f87a3ea29b37588b4b8105e7a31b16cedd7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5c6d107f95a56ad4733e7426b6671f410a0369c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.138-renovate-non-major-d7001f87a3ea29b37588b4b8105e7a31b16cedd7.tgz","fileCount":24,"integrity":"sha512-wHx9jJkigFHfssxkTRTKAoiQqExWCzLT7J1GkD1xHctZdftoNlOB3GwLvkb92TtMzvIXcIOSpfucYgfUTY66Rg==","signatures":[{"sig":"MEUCICuSX4zuVOyhtz+sSzI8RdbbKZ2UEo9LALTjfS6wggtrAiEA/ETRr181+dwvNIRT5a6m3luBwBkzO9vNP6okmTseooI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkydkCRA9TVsSAnZWagAAYKIP/0MQEwvtXMERnfk54KVs\nDCoFw0cJboVnObTWqwJyJf6d5jcXBJaLaul33UllWlH6p2YDoLt+cJG4NQmf\nKJXIECoqSi9Vqevt57Cp/4I4MwHtV+v80KuQFLLFyUNYoUgevGjC6cFQsfUs\nQa7ttcL63jaHY2r/8ZEX2ujjAqCDXCqHcGJtQ0oWCFEQwXXYY4QyPulxvqu8\nzQUUU+AQm4Yhy3jLMWRbSuQQ2evpD2fhMTY/hOmJdfzw2RN451NNm8o7A05Z\n9AS1KbMFQ3iXxEcgf1a+donHV1k2/5vTZOEOb9tXPzWuL6r9qudVwinyAvG8\n1C6DegGJnCzZWs7O4Atq8TmvkNVnmBtKLhQJnHMKZ1Yh0PT6Z8y3uADwDqND\n+rqJvlhQOMTZt51el6oOmQDIjVLaoCbcde6Z5hCHU22RD/oduJKlJjG8En4A\nnJOAeXqwuikRxaKOn3ZcSqkVzjzP1cLDfIioSZ40YUxWNacokIlMzfRjFQ4a\nawE/0pdRrpb/mU05nJsEVS8KyzA8EcCNHu1gavT8dz3MqjnF3Dv9ynFcXufK\naGC/3iYCgN0affNEB43yRFp0yXc2I3o19xHw1iKOlPvvoU7l2X9WTtMJwnnX\n1XQ/YAYfcqb02d3nn92LVi1kzMt/htQ6M1on5ywjuiklFCKiApEu7Pd4NdII\nKe0V\r\n=WGRo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d7001f87a3ea29b37588b4b8105e7a31b16cedd7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.44","@balena/jellyfish-metrics":"^1.0.194"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.111"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.138-renovate-non-major-d7001f87a3ea29b37588b4b8105e7a31b16cedd7_1620256612288_0.06870813721323699","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.138-renovate-non-major-4c6b4807cae854ec9134522dc8db73653ae86df9":{"name":"@balena/jellyfish-sync","version":"6.0.138-renovate-non-major-4c6b4807cae854ec9134522dc8db73653ae86df9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.138-renovate-non-major-4c6b4807cae854ec9134522dc8db73653ae86df9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4295e1f7c9894252568f1ab85ad1e7722d505d5e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.138-renovate-non-major-4c6b4807cae854ec9134522dc8db73653ae86df9.tgz","fileCount":24,"integrity":"sha512-vmnVtmAb0doV77iGKxa8XtReL0JfVo9mDMp7fLIr4uQ9hI67Ip3UFuK4hfJyRgqVu7ajuMnXAmC7NWjkvY3XZg==","signatures":[{"sig":"MEQCIAs1Eo6bSOjkdsQuabRSuZ/FhYbb1OWWqPhCymo/yPu8AiB9YDNeE/GxbdiOH6xaqJT3PLAzUgtonJVbMg4YNWghkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkyr9CRA9TVsSAnZWagAAJmcP/2ojJ5EzWW0QzeE3+tGJ\nCg5R3HFIwgvsoEqdgunVafzszGj28cWgsFGqR7QTjljFOoNT2wUqtFEHSG/2\nG3TAWUwFYh78jyRYlGg6F064JXJfO+em9OW+Ws3Ig9mrEF1D0lo2S3BNzHHi\noTJ7SJ9OcdZO4ZIDSAzQ0155a/7wUUawrM39jeeP2SJjZSlJlyfwu2z1cZMx\nBetiiPu+BBT2MvZaYWOL2x5GASJBUw87ifihlg60nksp+ORI/k00yUdtWRP8\nrHjVAds9f65IF0z1MRCvtBPNbdU5tW4aau0w0PjC5Ygn7TKfqX4ZuvNXqMEB\njUa58Kxl8GAEqH+RL5jrJD4RmFFZcIfjNntqeCBWEQOB9oCfgqp165jLSCXZ\nqImV5rOSAdQ08dYHWtyZgpTknxvmkePT0DkLkiuWedQdsrKCPN4OGhEOBE3K\nVn0z2BnWMXMWoMDsqGkJMSslBYTP5ifLI+cS0oH7NXvtYwIvnYvMO9t9RbMd\n9UjgJ0cRGNFMq1zPJySj20aJi30GFRAY9f34j8rb0jD+YCOhdoTyntG2UMMj\nJ942g96Iygid2bNgf1/XHnkGVqurZ6Wym//l/SoIQYgQZ2V8h9HSk8z2B5dp\nfPxrMRinZNyy8R+PuVX3vd8/lEfD7+rj+//ABORzHlnsLLWoV9NSDKCX3ddX\nCAGe\r\n=H9uG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4c6b4807cae854ec9134522dc8db73653ae86df9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.44","@balena/jellyfish-metrics":"^1.0.194"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.138-renovate-non-major-4c6b4807cae854ec9134522dc8db73653ae86df9_1620257533247_0.38873726993123303","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.138-renovate-non-major-ec0cd532c8d4e1880addf8764534995c9582e2cd":{"name":"@balena/jellyfish-sync","version":"6.0.138-renovate-non-major-ec0cd532c8d4e1880addf8764534995c9582e2cd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.138-renovate-non-major-ec0cd532c8d4e1880addf8764534995c9582e2cd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1525d81250f466233605b54b5b37594185d0951a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.138-renovate-non-major-ec0cd532c8d4e1880addf8764534995c9582e2cd.tgz","fileCount":24,"integrity":"sha512-0H6n/uhxWGMdgx9vGDYfZ3OtsSn+9lHYIUzBGHK4H44sGBbiEo0tu9vjEkx0HPUI/suKxyYQ7vSZLqIMTnZD+Q==","signatures":[{"sig":"MEYCIQCsx+igUZ9YJiyaZ4vwwpl7stG/GEzVStQ3UO5lqM9oFQIhAMxYLmTyZCufQ0EqlkoFvVMUpLzonc8B6SlbQOTlk0vh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160149,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkyxsCRA9TVsSAnZWagAA/+gP/i3YjG4u7P/tjxY7ipAf\nCkbUvSWefq9Klz6d2RhSVIT6KSjr1xdYgcQXvQ5WiXTMbc8e+N3OCImQIHy/\nCLN+AbQLk0qN5qaLf+4opoARLB6a5FvdGSj6fKGbjqCuVELr/0HhA7TYu2bF\nnzJ5EnXHpHN6NZMzRtMy7nuN1VVd3SVaJB6jVm1CAr6qyWhf8M/Dc2dJBsNy\ny96uVy6BSpeDVE5xODEqdF6jV0Y9X2LsnzFT8UDEIEtd+YXb9DhJ71Mf0y22\nUlCmcRPVqHt1r0xTKq+Uy4OKmW2Rm5In/oq1hucna/p7VegpdarGDLj4OuV3\nZUAe25nNvjol5yx7M44VfSGiScJVk9uL3A5DzDjOttMLXj2XyKGOay+9BlAr\nyfXI69Y3R0hB8uRYhEkMvEHsYVjU6+nhLOn+9M3zIksBh+N7gPm0m/syis7y\nRqwMCr9hbwB32AqIvPWkKSoi19X2Db2BIDsj5oEAHuGzAFdD21ZRsj+BlDW1\nXKNr9oKckxAYpaUU8PMZcGBCBr3VsDD2EgKKOGrAOWdLjZ+n370f6HOjoI/B\nxv4f0z+8vc1DwqfGZb619SENJsUiPJ+75b0mngmHNB8gOdUhjdxBNSpblmoR\nDl2qYe78e9gQWzH4ht3+pHNBxWB4gn5S2ffzk39PpxTbeJio2FyAS3afQPKN\ne4U+\r\n=ZT5/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ec0cd532c8d4e1880addf8764534995c9582e2cd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.195"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.138-renovate-non-major-ec0cd532c8d4e1880addf8764534995c9582e2cd_1620257900369_0.16984504138609546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.138":{"name":"@balena/jellyfish-sync","version":"6.0.138","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.138","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7f7dcd7796ce334cb046def4d837a031959075cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.138.tgz","fileCount":24,"integrity":"sha512-Nv25cbGHCfk8UHm92Dqny7/2D1IMqGn8VI8YW2lNPf9LGXAl+30SLwos/nfZ75n2ufjpixftRPlFrwaBvr9kRA==","signatures":[{"sig":"MEYCIQDXddkDqckcUkCTpQrGd/ih4vGMhfv/XiVBClSn8jVmRgIhAP07JQrKi5ekAMWO5ikXZ/pBouQ275UKXDRiLjcc/TZ0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160089,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgky1kCRA9TVsSAnZWagAAeXgP/3Yq2cc3XT0i1BQi98Rv\nufmo+HqO0O6l6fK8L33dlRhxrb67Kv1GrUK1VaLkuppx9bdSIAQQ8tNHuTRE\nMi56fwXHKATkEQvwc5qUZuSFO7P6l1yyDr/KTv24jwAt79zYckq7X9LQowm3\nqBLbRFIqQkS3BIysmpanMQ2YPDugvpVCO8VB+oRJ/j41wF2Y/UNbSklu6KBo\n5E+6rUs1XJdtIfxFM7WN1EVQNIEzraLlrWWx80HWSUg4cLd6dKT9J2qt0Orl\nawnSSOIirw8dicjKRCbu+LELuXIvx95DwA8qTIWVvcA18K9BgdzdFs+dnxnY\nXfEnv1XxHPILseG3vkeTCJt5D/X2N2wliqkKkxGxuSxG5NPhnVobHUdDRkjw\n5Xefw8xMJky4W/dcvLXLkuEGfHQn87p3j4m/hDpGXvHcYJzMJskG71l7v/su\nw3CUQfQkZ910o4yt6YVycBIuRMzgFBkh8I0PSN4YQTOxmx9c5pHGtnzCtfVU\nUHnQ4xzpd9KxkSVmP49IkmEhLM8gr953VITC9pSEgan7NOvzV+2gbzOaHxt6\nHtZNlK8pY6xSZAtMhv2zsQ/3Wb8NIJWO5DuRZilz9itny9njD06f2sP4/Urn\ntRoOQ2qhZGHfA1bK0dlKndyWbfT+B6J7MO5PlHyfy5diirkIwumElPm2sy/1\nAcwC\r\n=QR69\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"43675ba1da047589f8a1dd52e7d593cdd5355c2b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.195"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.138_1620258147844_0.8738885749049379","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.139-renovate-dotenv-9-x-0e1fba85c313a0d92469d4fb2a80ee2e52d2c398":{"name":"@balena/jellyfish-sync","version":"6.0.139-renovate-dotenv-9-x-0e1fba85c313a0d92469d4fb2a80ee2e52d2c398","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.139-renovate-dotenv-9-x-0e1fba85c313a0d92469d4fb2a80ee2e52d2c398","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"949f15d1e347b803c4a1749bf7fcb73ec76b4a11","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.139-renovate-dotenv-9-x-0e1fba85c313a0d92469d4fb2a80ee2e52d2c398.tgz","fileCount":24,"integrity":"sha512-BnKNMerAyjvyxgzl2B4znekKThFx1EfYia+We5eoovKL5SM7sIN9v3qzmMnfuNTeoFocxjRU7wEO9ujJfxjrmg==","signatures":[{"sig":"MEQCIFHgFZcu/uxcx4gmdKYAngEm1ZmzkPUZQQ9Y6kOQZkhlAiAZy5oOeyu4E7rXSnGSiweAFHf1kpg1fAFXhDn7TgZAHw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgky6ACRA9TVsSAnZWagAAjuoQAIHbrnoT7xB2C+fFi5c2\nWZnK7Lxll+A/DdHSSAfCxy+2GmJcSdPDn3nck3/+tQxwSgBNjwqYr2G/NKv7\nCDGgIujsFJWQv5/y90oUkQVf3V/dXAwUeUKViSGXUvdFrjL7ACAr1LZPYJR1\nCJuJAp2lmzXs9awtYZJwIeMTazt2vJ6UGvXXU6RGDCH2mRH7rcGAu+Tmv3Hm\ntq1IthaPNhZ+4sUl00icN2+4EP69YodGLVx/2hOACYTYt458fk/1/hPA7H+R\ncC8DImLHADBMghKcbae30I/nWLAcSZWie6OqR+98Rm9ZnTHMjeYcecs5ZUtd\nBfVGGQmGsaHq3vdkZRFSMdmYeNhzTk/3X6fwlh4UMxBICSCJfqkNoRXEKL74\nPwHf8M423ujLil9wAr5CBoCiJ9Ar1EJm2g/q+GFMlFqJPmX6UQlSss2KCLhh\nrjHJ7mmtrl2cq18vsYfX0IJLQMP+j3kuiKOuQY2xu/QteTezHyyHZqQvvoRU\nxvDmSGTpwc7eIXAnpxuBYroNtjsKq73u0v9uunmiFMMIs/6bPqgwyTjSvZut\nC60enno5RDdE1FHF4Ky6p/OQWaev1EiUd7594QbzbbvJy6pt7N4FjslaK1Uv\nDEOgEF7Nq5pXZBk9whRUKxkKvz3KJOdy7KWPTn5MltwvAMcPZrfq+zCIB54v\nzVpO\r\n=oWui\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0e1fba85c313a0d92469d4fb2a80ee2e52d2c398","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.195"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.139-renovate-dotenv-9-x-0e1fba85c313a0d92469d4fb2a80ee2e52d2c398_1620258431916_0.28426601502530224","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.139-renovate-non-major-d166d764e779aae8b6f500efcf465d656283f484":{"name":"@balena/jellyfish-sync","version":"6.0.139-renovate-non-major-d166d764e779aae8b6f500efcf465d656283f484","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.139-renovate-non-major-d166d764e779aae8b6f500efcf465d656283f484","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"887bc1768bdfb99a4baf7b9f0e7c71679fc96fe4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.139-renovate-non-major-d166d764e779aae8b6f500efcf465d656283f484.tgz","fileCount":24,"integrity":"sha512-G9zl6I8CQq9vWdUizp6PtHknlTUOj/7m+SB2YCwusd3OKSJ6oXa3rLBLWScD5pYB5syaitQ7vNHUTPXLVjnd2A==","signatures":[{"sig":"MEQCIE0xfsTbLeItDHTPxyT2cJMSD4XoQaWDwnuG65zl+PeVAiAgKNaeGX2n0OV0gZl6A94oPLus9RjWWHAiOj5tcW3z3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160255,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgky/LCRA9TVsSAnZWagAAIPEQAJC+oj5r5DIVx06hPM5p\nvJuftKXCHN/LzPmNyU2Dc+AIVHCRniWXMVqtuPqY3Dc18UaDQU4RWqZvB4QL\n9NNKdjlzBpBVmEeajlxZfLmjxp3aqvfieKKzZRKsgiBLIb6KionY5dqoFQff\nDvJjkUPOES6rGGSsFpMkF9hcZiYatwt5LnnCMUZjdce8tqUE5dm9CRUCeuKI\nMDIYs+Ztji6JF/jv6/Eahd1CHggYyqW2rIvJGxsVP+V09cIS8ToW6a1rcYYN\nudccDUSGtY769oWkQabZQBmLF46iI7mpdgNXKF7PAV92SlAY23GmIUXcCZI/\nNw+B7eVWtcywVzs9uiNw7HBCYRo1xJ8jZywKElvJ8NG8k+J2WGv6URW2Q4ij\nnce4juDX76/S7FaHHYxWW4dA8SETCcKMfo6XLZUKmlk4BsD9DNBgAnxXVHM2\n/VZiZ2u1yxrODBm9r9BuwmY9yjJcV1RBiEIMEDeM2Z32QmWLl98ExQpwercQ\nf4XqH8YT+001VdyIi+e26a6bG8hwGq6J3PJdhJWgDRjGcBOfh04MiS5qNRhE\nZLHlYhOOE0bfKd5V+iNubuQefIxPuh+0IC3MwIzItnL3aFAggN1gz5VMujWJ\nDEXA0mnqAxV6zs9oviEWNscAmNcEdRB73/opxxfScCFUOZsT0fRsGO8DHn2h\nwS37\r\n=wb9l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d166d764e779aae8b6f500efcf465d656283f484","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.196"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.139-renovate-non-major-d166d764e779aae8b6f500efcf465d656283f484_1620258763523_0.026797034638051054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.139":{"name":"@balena/jellyfish-sync","version":"6.0.139","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.139","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f76751232ab67fc7d0a8397e9abd43379633c43","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.139.tgz","fileCount":24,"integrity":"sha512-175508m26l/kfuHTtpVhVhasnKo9rdjPBXyqql/CsLKeNElkL9sYuE1QNKXZCOxwf1OJxnA5U0Y5o8VmC8rKig==","signatures":[{"sig":"MEUCIExu4dpcIgedq/K6EDj0W/GjuPykt+tRD1lwnh4WaJYAAiEA0DbE1SFNSZHgHm+Dc3z1XslWo3oQZTl7ehMwbKENY8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkzDOCRA9TVsSAnZWagAAeM8QAKAfIoaMHnNbZg27sWNR\n30WsZ7U/IznYz6wbYtKfjyWu5ATPfKfUrjgpNUOpLSyDx9M9+5FPFyaO1+4B\n7iABQDsU1tKN1eSKzS79s9dZpGsoJW5/I1OIkXEnrh5PIaEXHZBtn7mAxWuN\nl5FMca5T+Whvj0BVpNy7QT7DVUOpPShd+bzsPPv61ZmcQxit1V9y6OnuFizp\nFvs/vP4cEHYB1NsgzkB23ZFl7YpFWjwTf74BSDxwBdaqpCiGxIwE4pJtHLg/\nu1Ez7H9Tza9fKZC0u4IL/i2NN5mafnWJyHh1v+KsX6upuvDKRdcEPiLjcjnM\n6CnF97yWq0e8Oqp46bm4BI6kNTtcnH+iug5j7BJK85uCYdPBPJxY4vqctmiY\nLaVkK4O4OF55W4vV2LHn3o6jO8e+uTWoYNyCZRUTKlB1JbtLckKVDBjOS6C0\noUVrAfY3xOBaBRXTDX3L3MCHqDCtPbUPhxwFqK5hM/GurcxWDO1kv90zPJLE\nQilBtAre8V/X9u7zTHwiiHVfjWTemWuOVoDdh0q8g1EIOXxREyLoCThvLdQ8\nHcEQ+KgEKyIr2KGosGIM6eWxUC8hU3OtLu7NCwCfQSepWcypR9c68G8EGfjm\nwGvK7skol2YrKbBwYD4LlvqvZqR/TRW3wCJgY0n8IyCoxF/SXCn6fDtMbSPi\neu4R\r\n=DwDT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0fe010633b27c87657f4d8d7ec04dadf58599c97","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.196"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^8.6.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.139_1620259022187_0.2026267898331211","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.140-renovate-dotenv-9-x-8706fe008eefc4160cca8d9cc01a5e227860868b":{"name":"@balena/jellyfish-sync","version":"6.0.140-renovate-dotenv-9-x-8706fe008eefc4160cca8d9cc01a5e227860868b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.140-renovate-dotenv-9-x-8706fe008eefc4160cca8d9cc01a5e227860868b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"971c2bb9a1c4bd1fa35a80abc08e43d61cf18b2c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.140-renovate-dotenv-9-x-8706fe008eefc4160cca8d9cc01a5e227860868b.tgz","fileCount":24,"integrity":"sha512-8tkvUApf9wjHSHxUfbUV3QXXHuOfD7R6/Sl8sA25hhvYP1LHS4+3z9lXs84k7terW5jnM6hOX8hVvVrhcSvWiA==","signatures":[{"sig":"MEUCIATvKkHNV8dEuMOIhXLTlG+17DrKSGwyjGMW3IfaIK3zAiEA2x3NIzHMlYNSSkbRKCRr+puOjlPzphA4de9hl/aHxLo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160337,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgkzHKCRA9TVsSAnZWagAAKwsP/iHnZKj+cRnJSE4249K2\nDibzBKvQaJ0sQY/ZUs73+rz5OjNp1dS4AYmfgIrIv5AGUx/lUZ5evJXhTnD2\nf2+thWXhoE3pMP2gAjqREhl+Fln0bRBhcWdpeMjVJkbfCD5wLBZtcGGltZGT\ntXIvnxDLCEu0YIWhudkrpbWMow8qpwCwZSy0fIy3EQBMK6uVHPac1OEHbntm\nwxBoIOwjlHxB8/vA7UfLA8yaY3yc1xPX6yavGWkvG6ToM5/svleuwb5wrG7q\n6wjdmTJZFpJX9ob2HRGl4QZ3nIz5WWPFxGhn2/yB1cbv7lBBb/uWmutv7Orz\n8AmbPYFLj8N83osVbyogVCM83xRssJhnwH2GJ8vWFO3hY/IHcJshPAQWXaVe\nbkhHXCw3xikQ65KzYHqrEbeqUjWO5vo6QaHEeTPuw3GXrVpTZlV7Z1xuw5HH\nKfSUEVYOIKiSZdYm799H0m/iVkCjDdx0jxtWn3hbGhgH5/auO/gq6fu+J41Z\nPdu93zlH6rH6/rBGPV52tsbinbvfIxZQWZFTwJnCp/R0pTfkBOw4FNKlYXtO\nz3biHqhnt9Zt8OV4PEhPVsy3MGR3oNo3z1oxqlhWPWZZW85hUXxGt9gkQR+G\nNdyBUunFLRs252IpWooApQPxLw/9XC5SKpcUgKf326114GcEupvtTfyg98qV\nRlLL\r\n=UD0y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8706fe008eefc4160cca8d9cc01a5e227860868b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.196"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.140-renovate-dotenv-9-x-8706fe008eefc4160cca8d9cc01a5e227860868b_1620259273772_0.7223060913422845","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.140":{"name":"@balena/jellyfish-sync","version":"6.0.140","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.140","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d0efe65b309720add4adf56a5d991bd4a95d02ca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.140.tgz","fileCount":24,"integrity":"sha512-GCD5xWHj3DHg/uIggLV2PnKIcmf44XupzNUX5qQSGsT2iVm1/P0UZDSIVf0+XV3KGkS+qu9wFCfWWAd95XhRfQ==","signatures":[{"sig":"MEYCIQCATqit75ynVWYpxZQkPPztyT/HiLTXGT5eLDhUJBGbJAIhAP3nFm7ByfqvB6ctSxwhKoUFvtUV330azeGhQCY5ecw7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160276,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglIEnCRA9TVsSAnZWagAAGn0P/06ynT3klpp6v/sM6/il\nU9IqD4nfFV0AvpUP+nuNIkRL/LUn1KbNe2WJHxi+7zWi41W89CUNWTQTAysn\nyzq8QhwvlwhS7Qgh368or4CCgMW7NvY6KxR2Vc8oDcwjTc25ft5pL+OZIsxj\nNMYW3jkTHnAW3e+TWfAs0p0P8plt/lwtRBEpVFY2kzhxmicDbXtvgyWfkDNb\nD6IylXJKBRPFmzX/WEpkORhAxMtfy8bxv9UhJ7jyLDUsVdyNiZ8maBRUKdOZ\nWnNde5jNpw4xGJ+evVecIL/GkeYxo3HKE8dtzN232pCbkOeojeD8Jsu36G30\nYXpowz/7VHWEm9o2TYhz/e/c/G7ZPh0DqK6nbZ/iSPOOVfBzUv7qZh+PbM9F\naZcE/C5t2cWEIbH1OYqDqQKCtKZehCydBpa3s9gin2YMDoZmrtIeI5Lcnb/U\noAjudy0sHxN5Pin/DawtMUtzFKOCiN/9pSCuh47LThPIUdLWs7ckxUQiOQra\negaLnLVzakgEgQDXEPP6H/1VNuWaBs626crSyVkf4kUWl/1AskfttWSZ06CH\nEgVRYelY2fkfqY9/FVVhbmJ+5QsEn9rqOr6mNf8DiFjZ0ONcoZFZp7hD1a0H\n+L/iLOqfiuHsPHFYFDPG+6D6TsgMZ+uYP8tjK64XAfuOvFazjipcE0eINJPo\n4lyK\r\n=fSIK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"841962261af8964b74f6609a9f4e8c0c2e410cdc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.45","@balena/jellyfish-metrics":"^1.0.196"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.140_1620345126775_0.6090637293140648","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.141-renovate-non-major-96fe4c48512fb87359a8fa606d1435ff54345353":{"name":"@balena/jellyfish-sync","version":"6.0.141-renovate-non-major-96fe4c48512fb87359a8fa606d1435ff54345353","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.141-renovate-non-major-96fe4c48512fb87359a8fa606d1435ff54345353","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2bbbb411af33ecf1313510a1155879832da36503","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.141-renovate-non-major-96fe4c48512fb87359a8fa606d1435ff54345353.tgz","fileCount":24,"integrity":"sha512-cDnr9HYEQXH+hlq1stu9CjiecTqdy/3wrumxEfbkICJECqGqW+xACeRUqzRQeDAyDcJmxT/uvILKZC3dUkfChA==","signatures":[{"sig":"MEUCIHZm1/lmEoCUZXk2Di5Zgh8+lA+Z13VXnRcVq8ebBx17AiEA39SODHKxOy9vW0a0Au+ReSUgBBeFwln1BcTdQOjor2w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160440,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglUHKCRA9TVsSAnZWagAAlpoP/23ehymOQ6MlLBoTFLCx\nOWh5tfq0MISkRvE8wIZwaB/Ct07TOFob2VaGhrRUcSfq621iJdSTBQiDkEX8\nDGlT7kFemcnmyq6jyE6ceKT7+ZNF/IZeatcnsMdkQvIOxbNfgqEZAZMgRlvs\naWHpocfqUjKEMx+Hyv8mTpVaoQiq1nmfoVV25nyIK2ANMXpYCZQ+pPT3gxLD\nEZCnDNyrGGD8e8H5gkeYYXUv8OhvRsjmJBHqX5r5yXQXY8EOGdrBsnv6h3WX\nSDm9/RIFcbLNU9ckMA6MetFppVo03k4Ymhg/wOZr4plcCpZC+ZsE/k+T9KRg\nDxk14NXHAZFrVqNwq+5puQqCUEAVNeY1CUz0nd6kehddGaXyg2BZr2+3RWsp\negRZKszLoQn3NQGS61uRs2KaRRm84kQL6H+ftcPZCxdk1k/0Ca181ztaHFiA\nqa7vBrG6TVGEU6EH6b4rxq+xCkc3vuHE/xDh0gsOmNNywwd5oqKvopoONQkx\nsLA/gh8I9ZwcoLgavGSJAlisgdT585ctf2BQzmr2+gL9ZEHYlvQEp5T3sStw\nOyt5UEKLFc2orh7vo3JTwXvheig48mLY9NvsyC7ylQZYgNM2Ur46AGjFOC4J\nGh810D2m5QijPBIbWs1h394EmEsODJuJtPXXw27xmt3BnnJgU6Qfes6U4ric\nddYp\r\n=thff\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"96fe4c48512fb87359a8fa606d1435ff54345353","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.196"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.141-renovate-non-major-96fe4c48512fb87359a8fa606d1435ff54345353_1620394442131_0.9109509135798615","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.141":{"name":"@balena/jellyfish-sync","version":"6.0.141","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.141","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d73ec52b1fb9a289dd532db26495b0a71ef8bb5e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.141.tgz","fileCount":24,"integrity":"sha512-fImF2kDJ45WNc7AxE00WRqCmjr6gcATs85QKaxvQj1Wvus+dRY8VtrjlQ3LPfoqxJAdXDXjmmcdb0qsaKQKXuQ==","signatures":[{"sig":"MEQCIDUj+uxjjexZ6969Ri2T9WjJz8W5HbuRrwWf6jR127KDAiAH9P8adPCEVunlxjE5z3WWjijQePUMcXTMn3EqZCHSVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160380,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglUKMCRA9TVsSAnZWagAAK+oQAIU8pX5DOftlQbym6e1p\nHy1HoASmP65LJrv5121rLDikEZBjP1zuOX+l4d4kr6RTsGq5c9G9p+3Pka/D\nU6qqH0aOMh7eDO6Fyy4RsW2vCm03skidoybVsw404YOn1tCpdIDsuzt15Szn\n6H7JXyix50EjYVkFMbzO4wNhrsNFgmFgBgQXmV3uxL4dBe1FGdEJGo+BqKKc\n5Mo1unNEnt8OAQAvIuOimVL/T4prhSdl+A7GQZJmlBqz2NKXI9s05sgiwkV0\nQ16LXDq4vWs+bmCYnNYVcGEXCofKZBK/SD4qKrwgNgqhZn+1c1ErJs4NrsOQ\nQIMIFWaBcv2NV2fQFKpmmatwiji7xUgDDl4qo9dQSHD3doyQCFMhObxe6vwY\nRnRkMszOJx/IgeZsh9wiPKb4usz7FIK/8ufNYLDO8gKdRREKiADkDQltFTDC\nKKsnUTgcYF/gYK5Tx3SuTu/mNMQnRO+fuJEQxWOUKe6tJ9yZFhoyj3LRjHtc\n9hx0HAPVD0wCnSgJQEj34ygJmtgLnW30QFxtLpvvvUx33tDVAMTm9s4kCexz\ng1syBYXAVSTDNBwbd0w/B9eLAljKGrTi1w2tmgPD63DMthJllNPltycyBvlH\n6jlEtJ+96ML0LbDK7TV8EA+KWbDw0c2ifG2tT+Y2T3s4iZyFf5VKYw9lQmVM\nWcmn\r\n=5eb0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3e9a14c0c7fe8d0d000d5f6e57a9060245af317c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.196"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.141_1620394635864_0.9750437888214911","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.142-renovate-non-major-843849468d848bd7a323e4f21ccb08657071a979":{"name":"@balena/jellyfish-sync","version":"6.0.142-renovate-non-major-843849468d848bd7a323e4f21ccb08657071a979","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.142-renovate-non-major-843849468d848bd7a323e4f21ccb08657071a979","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7a3bff47dc9b7c059da872858acc9303f03ad151","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.142-renovate-non-major-843849468d848bd7a323e4f21ccb08657071a979.tgz","fileCount":24,"integrity":"sha512-ktOGpCOO5Mxt/N6vYvWBcOvv8ZHH0LGN6GaVaE2MQso89eLrsxqLlsY3ajo/ueDZgsbzc4VcCT0Wfce6A5RA+g==","signatures":[{"sig":"MEUCIQCQGZIv69QqHwB+2yCTR1DleKNlZZNkbaBMlm3rsU9kCwIgbpKWgV0dRBklQvHARo8kUtsAEolJHrTR4zcG0OqqFbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglWi/CRA9TVsSAnZWagAA+oQP+wT4gPi+E0vwW1s0bp3j\nFcpCDXr84JWidabajqbZcjJ5IA2l3/RXUmzWT6dAANR4leanL8urqMlb7aqY\nMV5NI9qkEPxNH48kq8sBo0U39u1IQ2RHv+MDlE09OGJsDRxfGYClXJztoYuq\nFPDcu1PhZQcWtN357h5sGvSMZOF3rPCf2NhTM9ruzEydr48TD8zc1/Ay5GXG\n+B/asiPiISfx1p1Vs6DGL3Ee3/N6dM/MlxoOVTxFHaEi8hxbU1Vmk2XqJh+6\ndqrqFniYh5qdLDOCuQ9ztVoJJmuiGlj0LbaI5mUOGPfmZY2DMGKH9lI3OvgY\nGfP9COJfLbJgLfoG99qmjrnizAVDMPIjq/LPATyqaCpeoFxkkIPpSBxy6vqh\n1xeo3sWg+IcqNO0bcM/yWN+Od9+2FTlM/3MaUVW5W+H7YOINInyd+yFujjKU\n0t0MMrl24DcPGqfIOwKdU8QG8hEr/j04816wS4A6gDU+0uwHPzl8bg3uJ4Kq\ntXzX4xOLdYm3eHwN0eSbL7NxjhKyfSKwIaNp/y66KstUfCHE4aAccmfvSQzk\nsN4/yPSLbPUPDxnHIsEZSIoB0tpiMLpJ08eO/AI7xk4CMfyaLgBcH5OVV97C\nQt849pSUXvIFCO/VjXJ7c0tK8JjtxFAp38e9gE2YxJbXPgIjAPsJVZ+maVRw\n63Uf\r\n=1MgT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"843849468d848bd7a323e4f21ccb08657071a979","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.197"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.142-renovate-non-major-843849468d848bd7a323e4f21ccb08657071a979_1620404414539_0.7093641714632548","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.142":{"name":"@balena/jellyfish-sync","version":"6.0.142","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.142","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"da8bba1fe713e83bbf30d62cb237c295655067a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.142.tgz","fileCount":24,"integrity":"sha512-cot8wr5aU4twcLXB9M730hmVJDDykf8wNiLgDlxuEo11ib/8e9cXFxDoyf6YmjcWXXuH2qzog28xYFceP4Lfbg==","signatures":[{"sig":"MEUCIHFF/g/AfjtjDRekhgOO//L1zwVJIp3LAhwQhvQYBU5VAiEAgIOQ/21I3Ll5gJy+iYY3j1s3tzmDJLL06WLEBMe7Kzk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglWmXCRA9TVsSAnZWagAAuB0P/0T1rzqGA0mhmXUIH+Al\nbV2S8RMrYfvw00IGlXntjCNKoQMONrsfKFEAh69bpJdV31aZoexsa7XEuuYu\nnea4QKFYY6EYxgolEQN1c1JT/OKiI6bXUvIHg0sv3pg7r1MLQio8SWne9DYb\nOaL7Scumns9ZWgfbtgZeZPvOxyv9Axq+or8UGA6tVBFKHdapUUflNbSF4U02\n2q7qhZEwSMeiFAZYvcdpbiEcm5eTO63EaaA4KPN2Mjr62xgcuV5HDzlXhSwm\nIJ02/OBxNFQ0bZ7IHhumZgYs+Gqg/suaShbe3qJe4abdVYPuWRWmjGxGJkix\nhYzdWeg6lsn1E6A0a2FNLJ//4vUDqqP1fqNIe8wqRSe2Zf8kpHEXKwIfYMvj\nN9YCvVlwPaiWSzxvGhvMrWkFlFIzPvCjlhpKtVXjzZShCytxglcgnPVpMMsj\n04KieXbn5IbUZsYFT6Lh0NR1OV0CqM/IaXF9Zv5dhJmhbdynjl/n9E2qXsJH\nTFsK0i+tYPJ4dglG+IcFD88AHKM/OKGcCq1A3tHQJNhh011saNNtrpgX5etV\nlLCq4bIKfPbfAiRRlziQzpLGQaCGkpGLLo5WeE1k6+BNO35RxtijJEQFnWzJ\nPVHkSYautpHJojc/E7lqMqQVO9neNWPE+ZEmkgYU3sJeLH8PELI9IA/ZHdAr\n5P0v\r\n=F+N2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5493b64727441d2350ea23455b17bfe0ec0edfce","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.197"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^10.5.4","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.142_1620404630652_0.9841616344261404","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.143-renovate-lint-staged-11-x-418a407795092cee022425902bcc9bfa47044a7c":{"name":"@balena/jellyfish-sync","version":"6.0.143-renovate-lint-staged-11-x-418a407795092cee022425902bcc9bfa47044a7c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.143-renovate-lint-staged-11-x-418a407795092cee022425902bcc9bfa47044a7c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e72afb756da70097e18d3fb326c72b7fc96c1ac9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.143-renovate-lint-staged-11-x-418a407795092cee022425902bcc9bfa47044a7c.tgz","fileCount":24,"integrity":"sha512-eGc1Gd8Z45fLN7OAHFhQ/aThrIOKy4jyupcR3z4zOcUtM2KXk04zeq+e4fkaIIQsii6osyYwkUeLQmJke2jlzQ==","signatures":[{"sig":"MEUCIQCzT52sHcJHVwj1HR5tkzXjFaMen45doKYwK7a0vaBpGAIgGUsFPy67VZJyseRgkEgtsMhrVRA+60C9R4w+oAPA6uI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglYIjCRA9TVsSAnZWagAAJ/kP/RJb63zzfQB+4xNbhir4\nu+xKdUUCMpGQKxLT+2Mu0aS+2HzWPx3ttHkdTo0IiDgPSBUD4mv+j6sXbO4a\nQ4iQEq/YGF2c/yiNWsmji56ibR8qndpW+vPABBYm4l3z2LqMK6cqSgskN3q/\n3ALaTar8izVQQx0QOIEisTfazAhugDPyBKfIIDfSph9XqIGf9EwZ3h4P/2qx\n5ktNGGkWrDrbEcG26f0C3VfFskSdMIh3iR3EGrcDhdwdKuDz64HU0hX7KaPi\nT/2kLuV6kgj45PWIvvWER1Ecbq0w/3sEKM1fXshmbGgPvDWnO0OsweGibrZN\nqoIFLTtZceJd1D6B3SKW2us8APpwYqoE5OAvnErxpPvbHh7ohXZ2KQAiK8CU\nyW5GTYdOQg/t/J3c95k2J0razcChxK99ah4ykjXf6ZntQvWpH4Y8xMs+97nF\nRqR4XrmcHeFFqJ89VV1B11tBKAIRLV5QuS/lDHeIOTEv21elWsVZCuN1/Ajt\n8mTO033TpFSPgZtsgfHJQaTIV8NHNIsqHtHCXJd1Ct7GkjN6Bs8KdYAQneea\n8dhHidetsgXoRjQf9brHZcNwk9HOLnOUgyzKPMvUkbKQKDWeY1/fcUN2ho2k\nHROJOZyjYeCdRGXM8FJwMSTr3JzIY0gYM/mYygeSqN3ANz0aN6LHP53VMxOj\nJEqD\r\n=Tzag\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"418a407795092cee022425902bcc9bfa47044a7c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.197"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.143-renovate-lint-staged-11-x-418a407795092cee022425902bcc9bfa47044a7c_1620410915475_0.6366715241725232","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.143":{"name":"@balena/jellyfish-sync","version":"6.0.143","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.143","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"97623900f784fecab5f8ed2132ff9d5ad0e44590","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.143.tgz","fileCount":24,"integrity":"sha512-GxGra0s25IDjJKJRvTHUuJZb2aOvB4yJ3R13LluigaMkv9U5sz1uQbgIQRyWjnvdg5NO2Wri+AHFp+k7kTmUAg==","signatures":[{"sig":"MEQCIHGD9SKV7uK38hbjLn5O2T/iyJwP3Zkh8MHpm7PwvPhsAiAuKpGUDBsDyE/zBMf/JFl3ngzkJsGNKvz71Y5GIECKJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160573,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgldVgCRA9TVsSAnZWagAA2eQP/3bUECSclPfnsTX8zHAq\ng2WKpdr0xF8nMRygCJSpq7eqLh8XFLR6DJiyEJUO8aBV5KukP+6jfgrj3keh\nzd9gCV7BKBTsPGYCfwhcETQR6zX4znprE3h1nMniQRU6BfN2Ph8s5AFhm5q8\nY+LOD90Q1E66Sv0CQb2BNMz8AKzz6NllZxUcmp54Nyi71vYGVcCsHzdhfgTt\nkLWNDHtIc0YcBpz4nHe8hJ0Ii3/deMAziSEqNfwlONEDslPq9g8BJoEKpDqu\nsu5b21p+hC0MNfS0MAwhpV9Ed7+aGgIJHbFKC7G/mJp5gUB4NtHKy6rdc2gZ\nQ3A0ZJPxXIj/lG0nlz4PyFt0UXUFSAPqFc2Lb5Q28d5njUoAhKWR/qjnGnwU\n0kMRJw2l2NsEDGx+lF+Gy4bY9BsKiLi0Puo1MkE+K75ThNpisqpilOVT6ZjD\n82ZqaZ4atq9h9CI6qL+WH+BuMikNyZUHw3s/0VuB9aruEAe3HdMDJL+Hf37j\noYbvQmbeeC5LSbPow6MWOdxUuwCgvUbbHZTJO7DI9Pdn1sZHktC+NZAMcJEk\nCMZOW/xAExFD4pV+o6YkLL3dTbRgzVHnfnSFAb3l9OGKHsShjwjMaoypgfX8\nAF8g7tRa5O7hyRbFWC6QP0gDjP0Xid8rHJ5kK0CUhTh5eRLNRHzeEFtearDb\np2H3\r\n=A5NG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"09a63ac66c785a2661acab9de93e89d305e31a37","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.13","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.197"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.143_1620432224394_0.4556591555486469","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.144-renovate-non-major-2222e02d8e18eb928f001a5443e53ac567dc6b20":{"name":"@balena/jellyfish-sync","version":"6.0.144-renovate-non-major-2222e02d8e18eb928f001a5443e53ac567dc6b20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.144-renovate-non-major-2222e02d8e18eb928f001a5443e53ac567dc6b20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a6533103e4c6299ede21869cb19a9857508e72fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.144-renovate-non-major-2222e02d8e18eb928f001a5443e53ac567dc6b20.tgz","fileCount":24,"integrity":"sha512-W5oEA+PJntkKDzQESGScNQITuo9BnTLLFDbjV1/W84P5alY/5vSuL8YIjLfF4Z6pvh7LbbX6GhDNdK1CdPbhtA==","signatures":[{"sig":"MEYCIQD0ZeOjvIZnn+udwEvqEuZIC/dfCxu5AIK/7lE6Avl/6gIhANx9abBYKetEzDfCisJAe64kYO9IOBpOnQa+YRFd86Sr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160737,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglduyCRA9TVsSAnZWagAA4lIQAIDLVK8RMNOKPa9zLn+r\nMaqpqlZMKS8pAcctGd1scmKn8AmnbjRg97uXFED2pTUtGcsnpiuVXw4FRyGt\nVdxiUhG0iqPqMV+h3WRcUrFElRhpR6z6wyKwA8U+WoTl3kmGKO9EWSbTqcwB\nN7woceyDPqOw+e8+TcrS38zPFemhBabtKs/ZRzwREFBo9AZfDG8vhKlUwuNC\nDCtUej38/Wepz/sjBBBKPOelPCbKcPKiUGPRG/b+THBQE33TSq7VsoD79yJ/\nGf+Dgcg9ScDDYB7PAdL7OhwtL/N53TXV94h1PjI2ln1BdNAE+jlp/p2onOkN\nK4dpu/Vn/xm0WVHhiNaHfMEPmgBqU1hPoWJIAOsNN/vi5mff/9OqXCm9Ajiy\noOup7GE6TOFKIuLQZUFs6KaFBAgiUYTQ0INalS9bkmqsrs9INVPeyRiGhgiO\nnNuC5ACJnWHRaiQLLd1Y5EiAsVK0YLXNblqj+Pck9DVcA25x1iAWg3lUpOet\neiiPDTU2MfbTPWo5bhoqmv6UXpoCE67gR/LIe6C5AeBu1lAtjEtdCRRcligF\nNPaXuWiUDzIZFZcxndEcr81QYdktpyPBBxr8GGn+pf5ecEQOkVRjWzbJOPC1\nrc4aYtsmU+IQOptcLKdVzB+Pxx7MyabrAwuD92SuvXKV5rHpkGg6iVjt0UVU\n10vQ\r\n=tEsD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2222e02d8e18eb928f001a5443e53ac567dc6b20","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.14","@balena/jellyfish-logger":"2.1.47","@balena/jellyfish-metrics":"^1.0.197"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.112"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.144-renovate-non-major-2222e02d8e18eb928f001a5443e53ac567dc6b20_1620433841866_0.30938280716150435","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.144-renovate-non-major-73760c6fc99e640a91f5eee92e3a219a83ead3ee":{"name":"@balena/jellyfish-sync","version":"6.0.144-renovate-non-major-73760c6fc99e640a91f5eee92e3a219a83ead3ee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.144-renovate-non-major-73760c6fc99e640a91f5eee92e3a219a83ead3ee","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8772b14ce1dd35cdff40eb397562dc0433f947c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.144-renovate-non-major-73760c6fc99e640a91f5eee92e3a219a83ead3ee.tgz","fileCount":24,"integrity":"sha512-DdMx91DYQvlr1ekkf+OsMtorEPAocWTPGr22Rjsti9Elbh56X3zs/A9XpVcpkhPp9m7ve86Hh/cYSllFoWFGog==","signatures":[{"sig":"MEUCIQDhA6OPtQzUhiVEmjSPA6Z37veFK6pU+EXTePP/TzFemAIgS9g/xdEONV9hg0opmmQn8kGSPGAe2w/8CGJlOfkRy+E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160700,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgle09CRA9TVsSAnZWagAAqkUQAIiq0NmkZephXGft/9es\nsFLEwUDZOs1bDpySSsuXvB02UZC6Z7CXdn+gBdLITSGxaasJ43fGQGZLVZPM\na1/y9k2xUuik+4qFCEM2xqLyBEcMY8/Xi1E6O/kIvQKUjZJde5O10/CjFS4i\nEDIid5U2DdkK0NMhxk/Wdg1Wlw0YK26XbRc6IV/zqYIOhp6x/cfuxyZhaV3e\nBuBa4Ys/w4IkWERkk1KJZOH8hb4jlzEnnY3uo2h9+FtSzKW+UHwJb3hSHK/t\nIqwx23MHwmye1FZPe/rUfKQ+qP4qZICGGvmRIPb5PzzyJTxwFvpdVBmFQg9U\noAJhpTcI7804dHlzH9jWPfZuQ370HqyJmFTGknZHFi0H3mWfIGvAZIZ8fFRp\nS3JF4oQjUvsK2QJLmOGufPtXgxK/YgF5adJSFFE8xbLfnkxAE6JBsH/870d4\n0HC7UNNZvOT0tPL7s93EgQCdHZZdgK6K3nmlWnDXghlGDP5OBIPdu8l6EVSS\nsXc38rwqolfdNobxaRMmfV+4LEeENcGlDgUckxLPzCu7qqnn/Vjo8eH++QH7\norf5DHMC24GQlHcS/NH0RhDqWwq0gyDWblrAegGMFVZsi2/XPzwdKJECcPpJ\nAtEZnnzj+gSzlFIapz4ZZjtAQyYr7WzWoUDwLQYi7Uu+i3k3yBcng2OT84ZW\n6/Fi\r\n=BY8a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"73760c6fc99e640a91f5eee92e3a219a83ead3ee","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.14","@balena/jellyfish-logger":"2.1.49","@balena/jellyfish-metrics":"^1.0.199"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.113"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.144-renovate-non-major-73760c6fc99e640a91f5eee92e3a219a83ead3ee_1620438332935_0.1348679851397716","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.144":{"name":"@balena/jellyfish-sync","version":"6.0.144","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.144","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63a63bba18b5f55df7eb22c5cd246564d167906a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.144.tgz","fileCount":24,"integrity":"sha512-60nrV5gmuoKPQv40/gypHFuFycC9T7iwhCr7YkYthMOa8DRc7NbiP0bAGjqtRYtaRyidPgQ7Gp3uFyzM8k4S4A==","signatures":[{"sig":"MEUCIQDQOCDfLnBfztCr8U8NYkD6EZiIJyr1COkAhpmVJZTZBAIgeETGjK0uSUAuN2XN/o22H4bx1yuh04G33DdaQzK/5R8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgle4hCRA9TVsSAnZWagAAACkP/0VrUjASPO9G5tkrR7/V\nTGVp3Qw6FHOpw9txEsRobHZL/VFe33yX0Vjpjw6F5+2pR734gu54McS0Gihm\nxdKhZiX3o0MFgODHGQ1NQTRWvbjopCksIBqdtKg2rHjXI89nQjgxDs2QKaQy\nXBqLYLiNLqB3cw1b641E3q4EUQYf2xLID2trClOikxRYDcUlC45i67YznpGW\nY7hzit6cCS6Ok4S1GJn95SP7iZEGMcoJaYONZeZvNPFrHPpI4sxaaBP9EEXn\nazr5jNTCuwacgozpOY/24x54fKhn/vh4qy+KpY0THeUqw6GIOzk4I3uneXw5\nV/D2GGIFlbOnvrd45Jcmv2udoVvKKvyXWwnRv1OgL9jkn49iKBirb6l5/8xx\nYPyLu9uqFermI+R7+SUzoGRq8ngWcXA2SThBw16ndxot93zCcSVTyyS8y6QC\nU2w+AMHsTcRLtycmqGgKaB5kd2EjS9/mdc7ZDYyfSRW1Zt2KP3s6xGR+ECT6\nexW/avOQyG4AiwMoWCMVN1DntPR3vsytxwAAGUUtRTQhi7ECAZAKGVhzpHDk\nsTAreTK0Ar3ffqqQjW4w5Gv0LURxIoW0HXzeGuFGHYajEr5jWCVQgfIXVdxv\nN0+/zhr0897rqD8ncyEBNk/6EhmAFHrgjHzWQLxUna/ftgsZRsNVayRaWzhp\n4qlm\r\n=Ilsf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cedb0eded0daa285f359cc524e5ca91df5164664","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.14","@balena/jellyfish-logger":"2.1.49","@balena/jellyfish-metrics":"^1.0.199"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.113"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.144_1620438561106_0.6711442658250579","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.145-renovate-non-major-226d44be8b2c6420557f34a3a33f89351251b3d0":{"name":"@balena/jellyfish-sync","version":"6.0.145-renovate-non-major-226d44be8b2c6420557f34a3a33f89351251b3d0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.145-renovate-non-major-226d44be8b2c6420557f34a3a33f89351251b3d0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"75bfe5a720679ebd2ef044d3b9cf9d2a7f046ac9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.145-renovate-non-major-226d44be8b2c6420557f34a3a33f89351251b3d0.tgz","fileCount":24,"integrity":"sha512-qmSvhkgXpXh2XBw106nNfXK30Tm22ijGJHkYgQFuPDx7rsfYqggTwLnh+l1fA6ktgrecPNJ7KYcHRxqOH3UPAA==","signatures":[{"sig":"MEYCIQDYEbKyE6dX7Mv7q5SnluqzzzkFpdZD3oX5cWT/ycfkUQIhAJcxzyT1A8/3iN4eWaSNBSyuVC+mlxSjZLu9/m5bL+jF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglgbyCRA9TVsSAnZWagAA0gkQAKTj4XXk546YfVk9mXbu\nMsHI/1A4gE4pVBC6tcX/0qgK9n/MdRFJ2mwVJcev6Jvz70OLiqbcvDgowM/u\nVRC+XAliikpG67swzyE+Kq4n5N9lRNwkX9p3l9ajgFI1zo76H+cfvg/9Kisk\nxxs0nc8KyRSJCoIFO6WR7Ah/kKGT779JMTCbIQXmktUaLZHSpSEONxJJ9C5a\nPO1TiAmJcnGuprgN2LrDZbAjFwS/ewHnyohCYLN6zZPYNZNrYRvoACA/bY6/\nPH+qSszb83MQc6UkOdPdMMF075pClD6U2qugCeWmZOIXoy+1lbLiY3xJV0eD\nTncGle8PSZfobtKWKPMHjH0Ijhh95TX9WTOs6N+5q0rhsrVfrYtMGE3GKJrh\n5i22AjMLQfQfSuPB2Cwo0PWqXvlEXgnaVuQsAJ/PG/wnAIx7CQfHtuRbEdcO\nf2q4LaNXrv/51kWV2EAB/QtVxWA7a7BTG9rzgV7O//iIwLIn+wx3aQoK8h+G\nvifSfdpXVK81m2t/TUIru73Quc/+c15xKz2TXDsgfKQ3B/borWXw9mtg/ghv\nQGXUuln0GLt8mctzCjoSexM1lcYInJpB/FvOjsnrRNc16KDlETvEw8PQm9EK\nQCSCuh3wbAnJOJQUZ7k+NsONNXZKcqnyr0Fz7y93g5RH5j3p1XqarPxbE0O+\nhway\r\n=PUaY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"226d44be8b2c6420557f34a3a33f89351251b3d0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.49","@balena/jellyfish-metrics":"^1.0.199"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.113"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.145-renovate-non-major-226d44be8b2c6420557f34a3a33f89351251b3d0_1620444914229_0.0981190843448283","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.145-renovate-non-major-cbb33721e7c8c95e53ced85449bb0a25b45b72b0":{"name":"@balena/jellyfish-sync","version":"6.0.145-renovate-non-major-cbb33721e7c8c95e53ced85449bb0a25b45b72b0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.145-renovate-non-major-cbb33721e7c8c95e53ced85449bb0a25b45b72b0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"64ec382ebf054408b6045caa3fa8755b2198688c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.145-renovate-non-major-cbb33721e7c8c95e53ced85449bb0a25b45b72b0.tgz","fileCount":24,"integrity":"sha512-rfHC4hgwmxxPUEyzH5FJRN44QrBCkCbC29EyuUs7x/ecncmqINScCiwSRd+O9DRK+zFVFR4YOjTQ5upgqjbyVQ==","signatures":[{"sig":"MEQCIEodYfF46PH2JZITZiEwQOcDQkCGK57anQ8zfLKrmLQFAiAQ+x4wvyWCDZldE7NT/DVMXZul8Cx2kiiBGvdcJimsbw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglgiDCRA9TVsSAnZWagAAZ/MP/RdNbshTHo6s9M5gyw+W\nweatboNtCYZ7eDCqOBx7uIgCQloXL/IRAgy68e0ZAlgy1ZFBJvDv86qDMhDE\nEZars0Ex1zHma3+n0/9fW1M/kucZCFZaa4nKiolGaPLV53RGa9/JWJQRQTN4\nPlo6ok3zqLfJQLC/8+Vg5FsCrIZWbNq8tZSkTKYXMkr9TIMpf1EFf4hXD7N6\nSivggDtwGpykMacZMfuhljJV1J9q05g8m0okYt930OTBs+5aicv+QCtQNHnU\ncRu48y7Ait10mrVY9x08DkS3SUqocPWFSUjxU+qt4naPN/q4XEothQRia6dR\ntBnmWyiPE3Xn8uryuoMC04jRVkPykFacOurNytAeps+1aNKLrMberR4hK7hp\nG4AjXNLFHtpoNnOaN1cb3G48FfTTBnA/+6vXNBbKRsBIwmXSJYsu2cDl7JSK\n05AWZqRZbidHvGqdiV3ByPMNP2Yh2jLHnNUglKpAvDW6XZUQ9l3rBkZgtvzp\nGH56Pn2HqDKi5yw2mo+SP+lG59BysiulmnZ02ltRzXavUa03ul6Wb7aKbbUs\nAUqV3NCbzDsT3cJXFWKZdDhRoNdZ3Ays2OtNHtDx90X2Sl2W3I7kakOFMMvW\np6PpaXpDAEDZ8isbdQdmTlB2r27iYI9TanlTXJXSIQZXHLKE2WaiHegL0NN+\ntSJD\r\n=u3kp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cbb33721e7c8c95e53ced85449bb0a25b45b72b0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.49","@balena/jellyfish-metrics":"^1.0.199"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.145-renovate-non-major-cbb33721e7c8c95e53ced85449bb0a25b45b72b0_1620445314726_0.6132603730139701","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.145":{"name":"@balena/jellyfish-sync","version":"6.0.145","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.145","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"51ce238c651eabe8f73ca83fb9edf8237b01329a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.145.tgz","fileCount":24,"integrity":"sha512-OxqlUir29H+p6wIQwiuaBpLKE/6hfGuOYb09ZeXSRkVDY130wGtwhRHGUVA0UZl4D48/Nj83uBjZM/h838jIJQ==","signatures":[{"sig":"MEUCIQD5J8BpCwkb2TbynRyaE6hrL0i94D/L/Hf1ffMtmbj9zgIgKHYM12WFZwqI7gslE8b9p0FOY+H4MTXUikzRX/4oAvk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglgmeCRA9TVsSAnZWagAA7QMP/ilZ+Ri/NlMcGWEBfdXc\nwICPIK5n+UGolmdruCX5qc6pDEeGq4XeERqkzdsNyfEBRP0rHrrgUKZ2ztxh\nICQdrQTE3v9ptmg/T9oOJ4ioFSZ5A6OdBsl0/ajq5iZwNcB2X4HbMXTapm6R\nAfCDyQwseW9T5uUnMr5CFBFeygcstWrf7AbVbsqEGfwSmcYK4BrE2KmBoX/N\noa9sF+eW+kusHZObO3muWv8cbX6FNKhl8eYJQQ25J38aTd/iNrMHKKWX3Z1b\nz3tccHeJpa9fLjdqYFu6Rmk3hpN/pgHNM35tsffSWI3j2/cdeLuqDFhsPVjq\n17y7lK2ubwkHPIik40QixX9B5kQF3dWFG/Wbu1uv7yNVIAr4/7uYHXUpTUq6\n5R6yKzTC8lLWSCbj/5VKUu4g1VTbW9/ZVTBZupExpvCuWU7L8dNy+eRRSBkX\nZ7qnHAV+/gmzRuR/hFlb5CuKPT0aA5KqAceMHc8PmXdXfjNIKaRIwCXGNQie\n4bIKddx0kIu7HuL9AkH0zAIzDZkK0jm0rOeeg82uPLVvr6lh6NvfW48K3WXP\nOAKTqqEHDYKSr+o+gUXFR+kGIlNXnqZcHgKIKysSGD0/KOqny7xSNEUGVvpa\nX6jI+0ti8KGY0+L99Mm5oFEMEzEOhog+vXHXv1yBF/BrHCtuiTtwRTndldV9\njOS3\r\n=oZVa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"acbe18affd33d7080faf1cd6f40f2c2e43316221","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.49","@balena/jellyfish-metrics":"^1.0.199"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.145_1620445597912_0.37031819320605686","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.146-renovate-non-major-e3a0348e788ad43b85eabf12d79ee7c943a7316e":{"name":"@balena/jellyfish-sync","version":"6.0.146-renovate-non-major-e3a0348e788ad43b85eabf12d79ee7c943a7316e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.146-renovate-non-major-e3a0348e788ad43b85eabf12d79ee7c943a7316e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"abbd3a6e08f56868f32709f750578eadadc1d044","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.146-renovate-non-major-e3a0348e788ad43b85eabf12d79ee7c943a7316e.tgz","fileCount":24,"integrity":"sha512-bqXxdt3PAQ/hzxbQBDtErvsrN2di/LVMDnj8YtyndDGll3wTCiuKg3fbuAMLwo9Fq18/KnvLswS7A8smVnxqSQ==","signatures":[{"sig":"MEQCIDPVT3xBKHbw0HjzYrdseJi0zCplInpU/f6o/3z+XgdxAiA+emVNWNHA9d+Czy2BHd++DzZXRFnXr/mH/KLPF4Bmjg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglhr4CRA9TVsSAnZWagAA/AQQAI4IMzomMH011tlgQR/n\nL4kboEw2E69JU0LjIXm28Fs6xGjfPKPV2se2ZJMBs4K8v9Hqgq5T6iY4pM3C\nWKd02fTONg9UMOeAbEnjkpb5Abf09w2SJDwErHBfTZHoS87FtOe+pUaF70I+\newMnQ2ebD76gmSiXaap8cpSLIQ5rOX4Z9ciHd62KZRp3RD33IiOpHzVKJFLS\nsCa803JRcKqFgN+ny4dkVcZglLKsqlZYMLVBnM7y35Bs3gruvMfb9o2uh3hs\nsn5KiMyKdc9/TYlYrZWdgpDzSyuCcOw1iAu+CuJWttFFD0YiSEfyRF2ffIze\nOz8TTsQuARq9Uo28uGL2fIFw0WMWdKFkn8QH0vGRRcRQyYIuuAZdaVyxtKGD\nkJVd8CpfU0hJFPahzQGlP4v/PbDl9uEOV44ECz3g/ylk+9oUDl7vjwFRIEYf\nZMTPRZiqr4m3X9ckhVbDLEP+ezmqK43ng8qupFLGSNfgL7OGbbnuVMcOGGLC\n/849es82FsnoAkr+1EJHiwwmOAGmwhxqYsIG3dnN09n0nM84fL2TvBNr1od4\nm4J3eccaWaxmQUFBknAJ5VlbHeJOhn8W1kQKtYa639P/fKK7LzkQYnLa9HFf\nEUN77LsGUzjylxbNde1cI5lrED/MSU/R90TNTOKufey4zjzIM9g1SiPtw0id\ng3yt\r\n=S0IT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e3a0348e788ad43b85eabf12d79ee7c943a7316e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.50","@balena/jellyfish-metrics":"^1.0.200"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.146-renovate-non-major-e3a0348e788ad43b85eabf12d79ee7c943a7316e_1620450039719_0.8377452319672494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.146":{"name":"@balena/jellyfish-sync","version":"6.0.146","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.146","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"73fac6a9e03c8e11526bc992cf407b988689be67","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.146.tgz","fileCount":24,"integrity":"sha512-ISIl1EMmC/hf9yhSV0UO6Ft2QIL678GI5g/ruXMDWFlOrF7xfm1NZRP5IaZC92WFPlrKgnFGRsfU9LqIYXoyTg==","signatures":[{"sig":"MEYCIQCYaThHbMpPRzQW4Vf9ytCo9lvfA3BHroMnyR0ZFNDZHQIhAJivhI3Aj0yIpfduXMd/14UwsjIxkPHrKblrZTzp+P3k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglhvrCRA9TVsSAnZWagAAl9UQAJ2dPoIMj8F4fcyvUy+M\npg1DJ8QLyxDi1/2bHTqjQepHwNgobbrKagHrusnu96r5JbfTJk/5tKGebFV6\naSXrxQqdt2KQUBFP9HDs/41GIQoPrgbbAYoWwQMHOqRYLiQNKXlamJ1WHHDc\nyv3Fk858Ud98iAds0LuznJPe6CJtVp/+pulcAqjhEe9kH4ykapsQDJ7gb0Z3\ni6RLNaUkNT0bi/oEKwuEOCsZEoEp9FhLXelorVyZZIrR2fuSESVHT1hlLuKz\nJ3cVRb0ml3Oh5Rbasw2agNtKvW1wpWeJDAAU8uCTi0WweNnD3qu5flb4HVwD\n/G/CYR9+qz11eI3Sq+yqc0+v6m8YdQNXwx2TEsMHk8Cf73QzMiz13IO2UDVg\nnlW9WR6t3MB8VVTpcgb/t98G8E1PoKJsHNIA8PoESvrZSRkhMQpAozwvBXKa\n8g9y5/qvtp3q28GexJy6xt0CGsZ4hccqMRD6sowvzYAKjQvWEUXHO42JQz74\nQirJ5kdRWCpd2gOIHqWLrI+VF7GPv5+Rkse1zvOiX/Iq+iJBU3f7/T1TnbPr\n07Ef815v3EHzO9021Iq6poQ6xz+jW2kAQxjaVJzRJAROde28+6TEu8z0+dKn\nYcU6nFSKzw7Dq8SUCSwdqf7YPTWQ+W77+4ExzN0BKNQ6VwQZreD1rr3XA9Ey\nnq2A\r\n=bP2N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"36ac00649695fdb64b778a9fb5ffa0ff71390df2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.50","@balena/jellyfish-metrics":"^1.0.200"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.146_1620450282900_0.33713068530943446","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.147-dependabot-npm-and-yarn-hosted-git-info-2-8-9-4c54290162df85b2587c89ef8f1a98c52b79c943":{"name":"@balena/jellyfish-sync","version":"6.0.147-dependabot-npm-and-yarn-hosted-git-info-2-8-9-4c54290162df85b2587c89ef8f1a98c52b79c943","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.147-dependabot-npm-and-yarn-hosted-git-info-2-8-9-4c54290162df85b2587c89ef8f1a98c52b79c943","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9f8f81a6e742afda773c07dcd1341a6c2c4ca3a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.147-dependabot-npm-and-yarn-hosted-git-info-2-8-9-4c54290162df85b2587c89ef8f1a98c52b79c943.tgz","fileCount":24,"integrity":"sha512-+PIQMpLDEVi22RU+YG0cSsiiMgTwwUle14uoizgR0vrC+6WHD38DRUbPEJfMvYtlNcI9unw0j3RiNLb1xtXnRw==","signatures":[{"sig":"MEUCIQC9FcxHlGmqsHRRtoLsDyNnjX1kzAEIfKGUG0ZxIvlvHQIgJS2dn0pNj7lOIyqNTSyZnvFeTZy/z6spPeeMu63d8k0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgljglCRA9TVsSAnZWagAA744P/RpcAyLcaDGmjEwSEgYS\nvt23yI9Mn/8xBTMmbmSv6Iz8YcjajdS93FZC5KhYf6zGJh8bpjaF3BtTG/mf\nJQjt1sO73iiQJK5D4Uq66GuwcAAG0Xn5g/ojtFpu5gLIJaNBKtdX4pQ2q1cN\nrksQsDJF/9mb6riNeR+HkSgOYP9orOQwmf77DwgMkdfrtbLDp4kBy3Xhk3WJ\nHR0e1JRyqe5dLiDl/Snd/I6kjf9d547BdfT8HNP9j/ilJ+2cQ1LBvcQHUXZc\nAUCZqeJpsiuLcadHai8iyn70wQMF5FFtD6XCrRulGIWVI7Xw/ZoSpcqrZTcJ\nGnnbCP4VybQvH+y5Jz9KiWG/tk8wMx2kB1KTJuyrhOUSB+MtLqYo45np1g0U\nsqXF5BlAJ1p5DuyvjdUkzFxw8RMvK2+z8TsisJJ9vTVKWyoR3zNU/2Oq7TsJ\nucmIqtu5YY+nkUCWK0Ufs8TlUpR8s5FakJCNk11hW1LClkGWZl6QjMOueKbL\nVXCCoRz8BMwWVHSQQb5h6/ObcEl6PLXU9fU4U7CBHqe2lLzivWT97+CHIm70\nuszXEkWm9SoUEejqtl9JO6jgngJIhVpTeS40Gda38gDjgRN/GP/81iCHgek9\ndwa6rY7IUtPqoPPwyhpZU0b8etPn9nKRYBOrT+MBchAK3iTXtgOgAFfU0gVG\nqWYf\r\n=e3GL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4c54290162df85b2587c89ef8f1a98c52b79c943","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.50","@balena/jellyfish-metrics":"^1.0.200"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.147-dependabot-npm-and-yarn-hosted-git-info-2-8-9-4c54290162df85b2587c89ef8f1a98c52b79c943_1620457508807_0.3972902466843673","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.147":{"name":"@balena/jellyfish-sync","version":"6.0.147","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.147","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d20be2e6a42e786976898055d74ddf5542ad7e93","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.147.tgz","fileCount":24,"integrity":"sha512-cC4PRS6CgmgXB6avrjttNnkiB9/kzf9aa3HPRe3BTFeckYXtXyWFAxdHyCSSNM+l20qUy64bfxELscyqjcNHGg==","signatures":[{"sig":"MEYCIQDojCH/gW4WKcbJP0lRhfXK/lya+gLsHFwQZdl1HN90SgIhAPqs8Lua7e8fL8Kn7F8V9rllSw3PcLdsyEGw8r0EBH2E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgljjtCRA9TVsSAnZWagAA918QAI1kC6BRhOihFRXHrws+\n+DnLMWKx4vqomNyaM5B890Ocalbw/tfIR83WPlizdQCPrxs6MRbiGWr9/+xD\nnOAq+8AQ/KI/aZRzFyj/LDNLrKmZouqHmaViaOQH1wKMnxUYywlBuCBMwlNI\nAh/Ji9N+oCuUkwG/PT3QBIrTDYI4i48UgxS9wmcVsnSMBTJ0t2zqG5BUDSJa\nswyfb4teEcU1dwqEbx2QmX4lPnUkW7B+f/ezKaxq5E4Fzif5c+f6XUi9sWu5\nCYIJxSl6zAfzOi0EgHu5ZfL2aqYTz8eya8DQlMImkZJTvVNbuCyelEM4CUHp\n9kaKNRtz1dLITG8cOCyRpS2EZ3uPdQRDFG10rsk+l52Pnv9OlCkf6tB/GDnv\nNCFsuCIOCifkXVj6N6j/jcyu9/Wu/n1UGWqMmEVsagJGQ/Nn7WCpMz7GiY+V\n5DrqCxouSxD5awHJPhaBmBOwlhw7vP2Lnr74vu00mgzmoBOZpq5yyOrHP5Qd\nL05QK1DaRJ2YDud+InTcQwbEBIovJzYqna0so26jVTDYEx24kxLpWIYBAy3q\nYD6vz0fulKZt3F8EVh37bIuEr7q+fSKIhyV5Su2WlDuZYEC3Zjm4AmLoTNkP\n7+NmfUqoLvITwNc9QRZrHfoNubpjwJtZpUquRvcXNQ2MNPCYyuAJVFxZw1u5\nY7yU\r\n=g1LO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d5a92539509e531c6b67212342f97c769bf54924","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.50","@balena/jellyfish-metrics":"^1.0.200"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.147_1620457709351_0.598813419494461","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.148-renovate-non-major-f4a99f0a27987cf38069cc7f8a9b82a79944c1b1":{"name":"@balena/jellyfish-sync","version":"6.0.148-renovate-non-major-f4a99f0a27987cf38069cc7f8a9b82a79944c1b1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.148-renovate-non-major-f4a99f0a27987cf38069cc7f8a9b82a79944c1b1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c4eed5e85c2badb32d4b19e57b3763b2c78aa382","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.148-renovate-non-major-f4a99f0a27987cf38069cc7f8a9b82a79944c1b1.tgz","fileCount":24,"integrity":"sha512-7FA4F/GRstRgBJKEQzkQer8mxJuiT0gL+LURFCliQxOi45qbnGbXbGpXLCJEj3LIrMCRBFR5lwjVJR3STNuP+w==","signatures":[{"sig":"MEYCIQCDg27xbSQ4Yyl0m9QIRXRNPZO/7GAFZCCq6rJ2RzZhMAIhAKwBr9D0/MHyAGJyDEzC+f/hrHHKh/k47TEtWh+DwpBQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgljqGCRA9TVsSAnZWagAAq9oP/Rzw05kPqeiscQa8mk2E\nVYwzggAyCB7Jn2Jwrd2mr+weNTee7EdCa3rQ7SuEWnvS6vJRcDqliu5AU57J\n7gTQPk2doWTVqgSCwUc5Dvjz26afTfxnFwOK/Z46XTdGcb2oLz7BbNAd9qgb\nUx1Qt+BUeZmeZySM5gKqibs5JJYrlmvizjXJvxurXIQM83vi9BEaLz24Cy0o\nip24ddf86PZcTr8Axt+GSSIgS2do3Xc2N2grXAJCG+42u8XSy3RvDTZ1e3aL\nyQv0ELOn0ODNZKusFVUGQDQDEywaUFj0PqeVY/q+zVoCCYaXZGJSQTekhVdN\nvuyG9Vfc4G0BuIfuA+f3lhLhP95sYFSGWLxuwjOYyjoT/9cmPEyeDXgV9qAJ\nwoNx1ySMSoSnIBk2J9N9drkRr4BBNf4ZIc4vy+yOlMX1Ko3xPN6TOJc5+SWS\nion/3oBn3kGPrcyRjnBmvSwWtv1kNOzh8nQFemd1DmrA70la3fTGjsuyxCmO\nyhqlxT7bv8TPdTgunI2WIkvKwKXWPyy1GVJkntVrRu7woC9SuoUtR3k56ldU\nKmsUtPQvZQuN+sZHhCYOxwNmKdgCBDQxNz4pwv4Z3P+R1hqEYkiH7MXBe0Z8\nkHNUPMXTOhsCdU6HTOK5Og7l3CobiwS55EZWtTMbYROuzTlWP1b+xPKywd4C\nxrKh\r\n=wuEm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f4a99f0a27987cf38069cc7f8a9b82a79944c1b1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.50","@balena/jellyfish-metrics":"^1.0.201"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.148-renovate-non-major-f4a99f0a27987cf38069cc7f8a9b82a79944c1b1_1620458118311_0.43772287524253395","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.148-renovate-non-major-66b047ee7d0cc90bd070d3a2238c56e7db03b152":{"name":"@balena/jellyfish-sync","version":"6.0.148-renovate-non-major-66b047ee7d0cc90bd070d3a2238c56e7db03b152","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.148-renovate-non-major-66b047ee7d0cc90bd070d3a2238c56e7db03b152","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9baa0094af334f14aa4247820ca3138b02687e3b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.148-renovate-non-major-66b047ee7d0cc90bd070d3a2238c56e7db03b152.tgz","fileCount":24,"integrity":"sha512-wpr3Ub9rf3TMsg+J7K0MUoSHU7/RiwzQ+dXfHLhLKHo5fE+qY/+Vpu5HPS4e/Zx8A+KX7Rqx1d7zFr2OzadFVA==","signatures":[{"sig":"MEUCIQCnlZOSzatU6w0J30fPFWForp2I9pu+zrVIeZVBrIJ/hQIgPl9BDnom8793vKEp2POr/EPhI/a9KqdD4u23WU9rgtw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161001,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgljuaCRA9TVsSAnZWagAAXcAP/jQQ6qLeTdN4GeMRzbjF\naStDmARqb1KGlHMoVQ2L/SgLHV2vIbbf4lY3GIkZ63ShgTFO1WH26uPGQJ0R\ny/rIbmQ8doxqt/41OnUYa3O0+a+4+azgM78AA84PhJdvtKUcjq+zLEDWIAbg\nf6tc3oBMgxB67WHc9z8KbGLVjv3mijLv4izGX/28e8XifEgLcSDwgeJVuafz\nXy3A++uL8iQfHBk5qfo01skqQNGzyUpVxkf+TDRzjU4GqjU4v/JNIrWCTc39\nrNi50xAI2/k6hKODRKT4YfOFgxJ+XlYBLmxGcKJGz1yXy6Vx7VSw9IhI0hv/\nCnx8BRMI7+nSWLO6Y2ILF18g47f975CDzcqqevDkFVVUWbRLTfPePVuPxlnB\nEMSmwYnnzNJpvfrHkqCRUgPLnAnBN6KQppaLWEzPkZaxX/Kh2oRDN/56tFU0\nZT3Bq00aG1vndVuVh60aZuh526/O98LGdHV/3t1RQNzS2pDFHIlakphCr6sU\nlhJ8gLLgCSAQzTC7L6NgcYZtoXcpKKrVF6Gu4IXFCPHdlg6ANjp6bOvq5Uf1\n00RHfeaK1MpJ+CA5CZiUOJbmTfRZfcDubAbZAr3RVuPvAvUebO7NUdgZqjPR\nVEnQL/nmDpRCmSgMV0Xx61WlRCRots195zA5wws24WGeSG9oLV5zVYfEi4lN\nFqmg\r\n=4/sx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"66b047ee7d0cc90bd070d3a2238c56e7db03b152","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.51","@balena/jellyfish-metrics":"^1.0.201"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.148-renovate-non-major-66b047ee7d0cc90bd070d3a2238c56e7db03b152_1620458393991_0.07240666372601479","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.148":{"name":"@balena/jellyfish-sync","version":"6.0.148","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.148","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5a11045b7d3973e3234623209a396f4baf1b1b60","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.148.tgz","fileCount":24,"integrity":"sha512-HzImp2PdBNDAneRa4PCt78LHQ9tT/8DgmScVnCwiGB+2wc9lvYiVzP/QjWMAyNRUEchhhIMfHmNw+HfIOjpjbw==","signatures":[{"sig":"MEUCIA6pce+olMy/Y0jS6QTxZTutQ4KzCpN2qFKms1alunM3AiEAkDjBEMk+VZvhkGTIc/ieGof7nkweT+F1U7yrv5BaV9E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":160941,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgljx5CRA9TVsSAnZWagAAwFsP/1ovtD5KRxKizLj70VV+\nM0+ZSxWoXWs1vR4yszd2KRA1SD/bBBW1JAjJUq2gAC0pZo2Vm46hpuxO/qpp\nYuKFhq+bCpZCjaYmxrZJ0MDgKY9zH7q4I7V+4pdKUmDot04olxGKK6wo//Zy\naCcy/CeBhVfAPbLHQU5TZ5TxF42Wc3J9BbxVXYkFmv5YlVIURVtXVFtWqjrx\nxRvIUV07mtkyRfwIYkAmm7kqrCay1hDSBuupyIIpz6PrfM66I5M8YcYAiMl8\nZu9fLp7vvr6SVuTstjelJfLfUlwGaJfu0W3F1fK+3ylGrZrMNxLq+PmycX0z\njl7ull+1pASPHivty6TqsoAOjaiDweLo7Mxd8BoMLIAOOieCG1ZRbv39r/Al\nqPgIn/dXQEfsUvpamh0HzwEX+wrYHKyYJ5loiTCwN24M10sjAJOKBg5lHcjT\nefp5Th4wpHZQIL1nCKpsM/Ji3JSPHOs9pZ2StUFXGtMrdOsjpDeuVJvJNWcN\nz6nvcvYwhb97m4G6p1RBZNR9c+A+HKFVpkZQTYvxsydGHC1l6jnsrZs58LWA\n99LyxK2rDR1jBAonjzBz7Ztkh8oFdJuWZaPm+a7TKsvkpuFyQbW+naArFtEh\nZc1KZdAQwso67F1lTsVPnmD16L9AtLz5WYpnrY2MHyG7w/AkR4dLdiYRLReY\nhdwh\r\n=lfvq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2b2651afd2bd466f10a3eca617af7f79271f2013","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.51","@balena/jellyfish-metrics":"^1.0.201"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.148_1620458617205_0.25611395124841807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.149-renovate-non-major-6c18f2d438541d0d53f0cedb5689e09f6475aae6":{"name":"@balena/jellyfish-sync","version":"6.0.149-renovate-non-major-6c18f2d438541d0d53f0cedb5689e09f6475aae6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.149-renovate-non-major-6c18f2d438541d0d53f0cedb5689e09f6475aae6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b7b8d5a33969efce509eb84c3677f10ce77fc73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.149-renovate-non-major-6c18f2d438541d0d53f0cedb5689e09f6475aae6.tgz","fileCount":24,"integrity":"sha512-WKr2C1lMrE9+u0XnkuDABuFmHowxnoFgOuxu90yCoKe1qLkvdQx3O+HvvxoTjsgzWtOPuAGVclmVQdf230wT3A==","signatures":[{"sig":"MEQCICIQF10EQdlceLHME2K2OH1NpF9pHl58y/JvtCf3f7ZsAiAkXKbyMHMs7JkXj5lex6NQWXVA+c26mU65Ni2S2GsVEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgllL+CRA9TVsSAnZWagAAKFoP/2/S4IKvT0Z+HoYkXyfe\nOCj1Fklb1yDfz5zHV13TduElxy8DmfmHX0LQXhuvDgfOYMLOcshlIWE1L3aw\nP3oueqtA32RX+nwJXyJ0j/1cmBwyxTT2Mc/09B8b3iS/mbmtXhX2c9f41X1/\n3QM7SHMJEStri4IfUAgzxhEmbDHlul8SHQ0YTo1T6eJlh5MD67SqhLuOqlZ8\nYVwlGiTlye1RglsRzGklDu6xEg6sK7EzvqyseDh7tdyoMGIOWhdp2BvGqpzX\n0Lb7lDrDci6dfE5G8QSrecgQTtwZC4W/PwyjpCF9YoXXA0vs2wJQfAAWFJJY\nnujOPTND55s6ezMwryg5DMDiIGiMwqcprQENojCT9XMtm1U5MvBuof+VCFf8\nSgUV8KJYVV/0JDYSGvAhNoEj9/3jYl1j9Y71OIiN1WLT8gM0YpIiX90bfUrM\nC/KqVODOPS2ET69/yx+gAyc2vjPwlbu95hPzKyQxP6Ct17Rn+ysHAuZCoZS1\nbQVlqBesmaBvHzW1WZ4qmv23XyAhxlPmMrhkSWdqSNgykiTT6nbjuAAqM+cA\ngoseHTyXouoI1uQU2338h8B81ppThEsR43XROBkugRTjZv0S5O2L18GquN4e\n0p2t1SD2wkvPJ0YlUPUgJ22fZVbs188N+jxK3XssZWfN7o+j1m0ap3YOdHNB\n+Ou8\r\n=ny9R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6c18f2d438541d0d53f0cedb5689e09f6475aae6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.53","@balena/jellyfish-metrics":"^1.0.202"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.149-renovate-non-major-6c18f2d438541d0d53f0cedb5689e09f6475aae6_1620464381727_0.4744410198314897","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.149":{"name":"@balena/jellyfish-sync","version":"6.0.149","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.149","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88049eac058ed27f3e383ce68abca1dfbdfded8d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.149.tgz","fileCount":24,"integrity":"sha512-Vw7lW0bMuPOrhSD5JULMjgC/b8e/eEh9MH8GBkLA4p48/77TjzJIKbjHXZ6z1/+mnrDY23f8U+LgNE/CvtyC7A==","signatures":[{"sig":"MEUCIQC1CU9VVM2YtEn/sBNu7l5TszRrnZs7q+xpmoKxsGeMwwIgBSMxM/iKUVC3TFmVriHOjZx0tEyb4ZLRzTZpzJAuZkE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgllPSCRA9TVsSAnZWagAAo4QP/3rvTsfqNdyW2STsTM06\nk3dhJPS8kXBirsC151a5ldP5uKly6Nr5zuOHeZKMIb7O3vMHnXkQhFM6XU9S\n515Md22Mp3AiuxZmHELVXJ8uBfas8PnupcaP7d26+RpLVCHGroY1l2P/rhnd\n6p5TuKFCE6Hnuxh02PAJcSL6IS2uaGJNrR/IWl61RdYo1CIK6ZO48c+hGwXl\nD2o7PNLrL+riB4n0Wq272Xp2VUBFcerGmrDwfVVgnFnIF9cD8BYYk9w6fOVW\nzHFsUNPIwRFFjR/o1j/l3bGVezGGHHBbJdnjaUGRv8j22DmnURKrAJvhwa9d\nSXF/GbxiUcWWtFEY/ltnXMYL/AnZLXcWPVUyInzsslUkuhEdGIn3+3mJ6qLb\nwl6Qq81+ELvzYhf7p/EUqcWMCzzpS3aUj90egabRKMHNvkfvQoM++s5jGtKl\nasDbGnH/sgssZA7MIUg9nlW5vS7llcUiLY6nJnrcoAnLm+5XYI7P7JXv3QfO\nZ8RSPlkLH7dPOR/rfoZOmAtOKMseuAntNrV7LK/Rz4QKl3RIjyAZAayatsYe\n8h3H4ajjr5i1cji/qrxUHvaYOdkD+oqONq+sAUfbdv+mKJaS47uKE3lr01jv\n/8vqiEgW9x0B8N4xY/9naSPrKE0fH51hCCTBFxPkvxIi4l24BJXUAF8UGXXc\nlzNA\r\n=sw/x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"293751b814191b95976dee5a5e017cebad545784","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.53","@balena/jellyfish-metrics":"^1.0.202"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.149_1620464593612_0.20584491215836032","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.150-renovate-non-major-c4e6228ab926980b69744b67fb7a3323cf74bef0":{"name":"@balena/jellyfish-sync","version":"6.0.150-renovate-non-major-c4e6228ab926980b69744b67fb7a3323cf74bef0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.150-renovate-non-major-c4e6228ab926980b69744b67fb7a3323cf74bef0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"28b6f5a91f9c00bff02d0e89c69cf6bb82a08cd6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.150-renovate-non-major-c4e6228ab926980b69744b67fb7a3323cf74bef0.tgz","fileCount":24,"integrity":"sha512-En6dNrgZazRai++qi9f5k0fgk7qi3/ImJP6hUGGmljINNJn5xs5MPW7rOgkrNgTiSvZZhXAZp+a3BdtN8ZQx5g==","signatures":[{"sig":"MEYCIQCDdvIRkxRGELKkyLdjMOS7HxN9856EmUFu83SiFYaP1wIhAMKmuWb250rzq9Nx8C2Vt2nQgky0yGjZX/F8WIK1YUOc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgl5XQCRA9TVsSAnZWagAAovsQAKM35Z1/1g21jPyE1Tx8\njmZv+gigNxHysgoj6UarENlzX20/KEX7LyNouZOONzZu72C5eW1PBt4cA+3m\nzAUNjGFfJpcSVCj+FyiVFTTC9G2yN4pGbivL+fBZ2ks4QvdDCSFFMyGOyhFo\nI1Jni6b7ODX1uj7UTGVIhkzx3MkmFPtJuYMipTOPGi2amSwNsq131kdc3Au4\n6HV2ysIJKOmKmVu6rAFiArA7EvhRDER+BWUnxKbrmFlJWfL+2xoH40eczILC\nTGoPr9ZEVkgE1c/FI1AAwCmX347VGqVLD8p3S1OGvRQXNM5Oft9QJciUBBYy\nx08Kl7n5i88W8lcX2szfkNYpcHyITtntrxrFwFCsQUQ7yCVE8bi2ZZea/2jd\nOiWsDOnbyOrEkKe4EL98p0zcZUXePgLutAiemAoMHtQeAhOXZAqoCsmyuRPS\nbIloaCfqmeNyr9PlzdT3y9WJW++grf/1f+DOa8z+3AK0hkMETA5J75owHY0C\neKj4hqLg2hEGqRkmNUyGmgC8o6yT+NcEdLQnNwhk/WfXOa3OTJkss2BvdeLz\nWLgxdL4ER4vHnXbeEm+IXCQZqIJSFMPuExadvVB7G3MSKm0rGzCPMDuCwemg\nRRgNrpoXomu+tH1524mjgHmVmd2vEjAKUUU7L2bIjKEw/z0DLZYrfR41Rh3B\nSlsr\r\n=APpf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c4e6228ab926980b69744b67fb7a3323cf74bef0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.53","@balena/jellyfish-metrics":"^1.0.202"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.150-renovate-non-major-c4e6228ab926980b69744b67fb7a3323cf74bef0_1620547023397_0.3864765045025933","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.150":{"name":"@balena/jellyfish-sync","version":"6.0.150","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.150","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f26cc61fb2ca7c13082e65684d17bdcb8f0b3f41","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.150.tgz","fileCount":24,"integrity":"sha512-WF3LNDU/IkSUDjapkOGOJbdBr0AtWC+3wwe8iUr6paeusC1geKAHmB4d3rec8PsyE5pNUBhhbHySrFkpA+GrCA==","signatures":[{"sig":"MEYCIQD8RzVklwQ4dCGz18mAvyt01jh7OD/Lq+f8jIqblFUQ5wIhAMnhyqqQKywnihsyXlqDFUiIQ8xXVtP6nN7l17s7RzhR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgl5avCRA9TVsSAnZWagAAQY0P/3duoyI2IWAlcDbAs6d9\nXnzRYFmW4aFa+bdZGi/lr4T0RIixsCBLZdJyb/7lDd/Ue2To3VlEqC3mvGuW\nObQ1bUpVI3HwrBPcvyGEY24cRwkha54/UjMdZf4db73ePpvQLbl2ah6WynDX\nQnAMwJ5R4Ri5vgQlr+VXpO65QmHl8CTgDDziwVYTvTz9rpX4sfqQRCbo94P7\nYdSx12uLTE0UBQjAHwD7qJQtKYjKCn31lActZ6ot/zv98YJDGfBKt1WhLJEX\nMkV6gPp/fpHLo7ql5JYCZVtACcHIdkUJbUg67KA/HLl8yKCr28E61FFD2w5x\nCwsV8bBDrS9iRDAv3Zmzsn4lsWwGcjgHLrkWWtoVfEG70nseWdMtCfXdgeQL\ntZTQY8SqcMQUaAsBGQng7qq9Fl8ERGFcMpjLVIyRxx0fOtOMNWBPLPUKIuvV\nydgpztKsVrVHNqF6XYnM96bNa7ZM1j+qt42TQ8zSFvjS8xjnsQg7BoSqfAUB\niBUX9gNiOIvJAK1d9/pSWjA1LAyAK4CUepWv5A1M4yKvLH2Wo3o5YSlRkC6k\niavOZFNrZUNiuaciNp9Eyv5eigtp6967KysC4uK8ug33+sytMrE1tzO2aqJ9\nKgs+JeUaaINGOW4hOA+nTr97554vZcaQShV+sTZ0g+tUq3PTWnGqyzqJfa3f\n6SeM\r\n=PwVd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"26bbc76f743d62a3e19837b34591bc71cc7772d4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.53","@balena/jellyfish-metrics":"^1.0.202"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.114"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.150_1620547246840_0.4030853983054026","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.151-renovate-non-major-2f68076e36f27c8d28fe6c24768ebf6dcfbd858d":{"name":"@balena/jellyfish-sync","version":"6.0.151-renovate-non-major-2f68076e36f27c8d28fe6c24768ebf6dcfbd858d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.151-renovate-non-major-2f68076e36f27c8d28fe6c24768ebf6dcfbd858d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29b416b4f07f34342aa962ece9b181ea967426f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.151-renovate-non-major-2f68076e36f27c8d28fe6c24768ebf6dcfbd858d.tgz","fileCount":24,"integrity":"sha512-XiYJa8xaTZYrl92Y9e13S6k6ddpFXaCstfn+Qeaiqic2afs1W4xabmgxKLhozVJ89PS3RXIi0Xp7pgjQ7/Qg3g==","signatures":[{"sig":"MEQCICnfpeLxjLooVSH+v1wk4dHuUr+ARA+mQke3PBEyoZZmAiAz5Kur7YolIEuTKO2gLlte4gPSVxy6ICFRJXOjpKizpw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmOcSCRA9TVsSAnZWagAASQsP/iFg63lz0DHbv/Y1E4/T\nlaJtheDoM8rXkGNs1Em+HmcNFFRIPoVwHBnRPN0uBNRRVqGx82zn99COzlMt\nQ/3ZhW9VM7ERe59qQnLEBUOHeTcVLsRLB/UB/p1qmxVXIZt1PUBhXSFfc0TJ\ncxl4iTV/hndVdiucR1wSTHJ5BQafz9Fep2uBDdsllPHMYYug/o479EhNOLUJ\nKK3GpvqX0lE+KqvkRZoT5aW1PL3TZQyBhiNYr0HoG6AlG7caEeL6kBuE2Id7\nhGXc0NXOiLHbSK3ZxJZIOcHlBf3sz6U7x5TrPx2OUy78b0a5l//m3p3HZGA5\nGxtV7vYbb/NgNNlLv7vLxfez1SD2SHiazncR/G7qRGn8jHjsIjY2sWmi4uwx\ni+8c7r/FOWlbnn64zlr20TSo6jj8JYOn0Av7IbIdgEbVEf9DsPmmDtzJ20du\nrqdltgeERejuSyyBK2xDAIfRykei1C6WmGMfbAVU1hDX/ZNJPiGLkp7luB1c\n06ATWUVt47Dquz8rR1UuFzpK95xYaJbHoZrbmIfwbtOQHlyeOmrKTiaGlPU6\nwx7Og8Pcbe1eCGOtmrPcph5pSSEdq8vpdkgr+r0TSY9g+scgKrRNBOVqtg0f\nYi8UT8KQ4QbA/Hf9QWCECb0VlQVUbfH6cWvQxeUce+y8umIr0N/Fae9HK53b\nGUwW\r\n=q28C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2f68076e36f27c8d28fe6c24768ebf6dcfbd858d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.53","@balena/jellyfish-metrics":"^1.0.203"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.151-renovate-non-major-2f68076e36f27c8d28fe6c24768ebf6dcfbd858d_1620633361781_0.09417112004185335","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.151":{"name":"@balena/jellyfish-sync","version":"6.0.151","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.151","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6fb1782b8bd3ee18b4d49ea5b65d6ce100109281","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.151.tgz","fileCount":24,"integrity":"sha512-3KLvKtvdEaZRWBYsCAkdiTV5QQORyJBCq99KlCCBUXmolGUYMR9/K77/ut4Cd6shQDEXWczhIaQDqwwbGEX1mw==","signatures":[{"sig":"MEYCIQDK5ZWEC6Otqc0Yqu+TBKvtALspo+klAN4iKhuuWBSZBQIhAOBGfrsEID6Q9KKTXMsJdcT+YQYR5zgWPIWpHARFBUL3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmOgnCRA9TVsSAnZWagAArPsP/2+0FTPzkfnmaAoDnf96\nnz4Y2+3fSYSgq+PzYpn6gzcsazEU/InYRZAYZaMqV5NJQEvncnntW2JoRbir\npuz6H31lZdneLPkmNFewLPklf3bZI7lhQaDfbLXEYNpfyBDx7cS58IPa/QJL\nCUDtD3iu2GN5lCq2Hpb6xfUBzlmBxJXT8GGwRRDijvfGLL3uDxjcTwgQwwjC\nRPfeLXY/dqwxRs+/u5xOKCrec1EpUse+EmuSWKBFpoj8HIi6Ip7uTZMCV0J3\n7WrAHzn83eDoTzBN6jO4Pu6zPWurqzPYa1mxeLsooFgYKifW361kCyUz1TL1\nyU/aRUPe8EbDIMlKhx3l0KmaCP4Hg+Tfz4lpv0zTV25O7lO32UnZW9OYV1Vd\nI5I+DmUYBWPaM6kF8/F8Hgbpy5v1MnEuaPhWgrzlnuHaVXnzsJvx4+S8mCGA\nQoo6IhyZiOH9scG5finRYpxPzpPzzjtWE0I9M66OChuy/xHpD04aOg8N8iKv\n7jhuMkvO5hPxWCW2cwXyGxZsb1ZsgNWFHia1Z5IA9ptezhafjgOn/CrH6FyE\ngB462PvFGHsm7Ow33OBRRHK05w00UtQvZ6cRI2dZMYn01YbWOEw8zC4hF3t7\nWfRw3C4X4ehtLvZnIgX1zzHgykdnW7E/zoV2R6l0CiqFgxE8aogAYSmljgXI\nrtUJ\r\n=rQUa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c503b4a4745b7435c329d96edde2132507101615","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.1.5","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.53","@balena/jellyfish-metrics":"^1.0.203"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.151_1620633639101_0.4270185724088007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.152-renovate-non-major-5ffe21e162aab13ceeab24572c5a6318e94c16a5":{"name":"@balena/jellyfish-sync","version":"6.0.152-renovate-non-major-5ffe21e162aab13ceeab24572c5a6318e94c16a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.152-renovate-non-major-5ffe21e162aab13ceeab24572c5a6318e94c16a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6240d91302c03124adaf190e64459a585c6042d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.152-renovate-non-major-5ffe21e162aab13ceeab24572c5a6318e94c16a5.tgz","fileCount":24,"integrity":"sha512-S1+ir0bU3myb9/HE5VcM1t+G4cqT+shrQsqMODozPgnZFYovdUeVyx0b3WLQ8qTHuEvdENbUktim38xqWT1lFA==","signatures":[{"sig":"MEQCIAFOanKjjWAgNLSZ2b7AYA3vJkzOt2VqWI6br4c9cTq0AiB5jxMl5I0A1nwI6TvxdhKFy8A5ob0RzI+sJmKNoQQQkg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmSF7CRA9TVsSAnZWagAAVYMQAKFAP160cUD6QsqH3Awk\nxNTIGXqSENXJfGq037v3ITihi3pptKhZLvgau8Zinj0llMJrhXTMZx7/3tW8\n2lo7stssy+yFWp4dxp3wKmDZZf04fzGiVV6yV2YviuN5GmXi5YSkOjvzjbFI\nRcB8QV1DcyWZrWS7YyYdm6aZKplPc97hb95p4dvzuoqE3yLhcoc6BsLrMEi9\nVb0qxI9OzVM6IxZYhCimznuUf3R99bEC+6jg8LrFHN0ONxZ8laTycGhDYf+n\nGwBkd4PRO0rfOe39cOmb9Y4Rf3H0Tf+MRsdbBZe4afQnBtgRexOfOcHoYAxV\npi7gEvomf9pFZGQG7ehiYSwW6I1rn0Sikdw9Brhl99qnSKaCjj7gHZLdIgak\nE2UtD5m/R0Fxly8kfysyLiJ2tDffTmClN2wSagCXmu7GpW5BfHDMpl044H5P\nczFhHOCKmkXuCb8x0pOEeiQMIvXaTY7IceEpXeRReu35VjRHpuVcTU7i4rqk\nlxohBhHsB9pFe5DbGsIjpFJv6Iy1eFF0rQyi4rxPxiTxyUSpVX3lQeM2tIlB\n+E0EnfQjnUhEVRMfCnUD15BXLfZBOW1MpFUG/G6l5Zz6ohg0bPgxIJfpL0kr\nmexTjI8c7KjB94c8tB481R3IFf1Bu73t5wuJcMs85PjwqLG5Ka8ONqjdM9zr\nWSLM\r\n=awhA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5ffe21e162aab13ceeab24572c5a6318e94c16a5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.54","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.152-renovate-non-major-5ffe21e162aab13ceeab24572c5a6318e94c16a5_1620648315306_0.7315498966566141","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.152":{"name":"@balena/jellyfish-sync","version":"6.0.152","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.152","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"14229e7946fbcbc544a23463cc4a29bfe8c212b6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.152.tgz","fileCount":24,"integrity":"sha512-WZzV5DvJtru+VmwMUaXRFX+nj4WC4M6zkG2OlDJSiBXA4wMfWNdrIvF9Eyr+8ebtaYRCApVOtGHYk1/Wf08ZxA==","signatures":[{"sig":"MEQCIG5GCWAFEvjBDSnw+AtKqLBNqQ6qKLBeQNqwN74BN9ywAiAeMmS+r/RerXtPTdLxhC7kcjoBt4dxyvqs3cgn+HjZeQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161227,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmSJQCRA9TVsSAnZWagAAlPIP/38vflwPZQQVtzxcuKHc\n8NJeb70ifv221Ws5PFGLUHvUU9euJuqUHzRIrWbxw9Ie9QrQAqeSevhSmWq9\nmaPEzuHFTurIs87PNMJ75bQ+0kCaPI5HRUtwA9R7pqlYnrtNgIE9UEcEMLSb\nUKX02G7adFuiuht5zlmoL4W9BTw9fuYQGLTzmPb3d4j0f6iTpRSeZFS9DJot\nav/b99Zk7pct/v3Hr2X8R1GgLl5cya8Ax8oXRfqG+TrRNkYCsv9soB5V62PZ\n/Hmoxe1GX70VpKQks7jgdn0jOcQDEQ7HGFQ4o1qRL1NWGN6kk3gbXphGk3lQ\nnRUH60jQyTr6G6EKGbl6FWzePazwLW0zrrJ7ykKAZzBXBmCHwoGgFsVtR5lJ\noDbV8QRT8e/8837oAp0skrWftUmzE5ii/bX7DVPXFFMlhiBGgAJ3t4evbNjx\n+ZF8OVVNIs7A+5N2LECCV6AC2mmvnGpxPjVZw7i4lGo0qNdBFHutNmJ6Phgn\nr+Hrqo1c7uYSDV+rVw6uPK7/Ss4zFx5hanTzn8O5rHmcDUEZYPcSghr/JI3q\nySr7kt/TWG2z7GvaW9wBtzteWi8+dZBfsurAo/XA5RLF06vHuEeyvz8ZYLeW\nxforDGG5W0Ahwm/ZJw6k5UljsbuQKk1KJj6ZCVl9h3LzotPPtvgKDONRIhlG\nIdwG\r\n=wlcF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"262df550d6fe50e95393c7f0f698d35133b9949c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.54","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.152_1620648527844_0.13981609655857707","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.153-renovate-non-major-da23f3e9a1b3f2af18e3041c12a8bae463c1c591":{"name":"@balena/jellyfish-sync","version":"6.0.153-renovate-non-major-da23f3e9a1b3f2af18e3041c12a8bae463c1c591","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.153-renovate-non-major-da23f3e9a1b3f2af18e3041c12a8bae463c1c591","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8949be770a90ee6f3e0b784712adcd319021197a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.153-renovate-non-major-da23f3e9a1b3f2af18e3041c12a8bae463c1c591.tgz","fileCount":24,"integrity":"sha512-heDDsLYmzku/+P5URAcksTo+8PPmqK84uVEfkN61iB3ZlR/CNI7HWEQ7C6xJJ/Iseiz7WstIBBfii0OVclhYdg==","signatures":[{"sig":"MEUCIQC5BAojaeDT3K9p2NXn0WSWZRPAtzoqP9CL5tZlzei/YQIgevrtfKBLJYZl6AKjfrzlgCM/7//F1FpM8p9aPF7Oo5k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmYdyCRA9TVsSAnZWagAAwBwP/jEEA/dqyWSR1kNgFQyS\nvfOIa0sJP7bileoqe0jMUICAAZRR1mMi/UXZs2gvo4Q7Vsr+1F66ldZaIOXT\n3lfeEvkmZysGl8UJzWVrlBLn17jDzZ52spuvL93qpU1VrUzNGnGpL1kFYLOd\n+Isl3t/eOAcYF7LtVNlWCvbQWVu8chZN18/mGjtYt/AuQmP0FhK4ulDePTNH\nHz5i8HtNk//LKjmV3Lk5lwD9n1Htv/2NvcNvAqhUzzDv7RvkOhpJXsob9Cop\nSvyqqqTU7zaxTx6w82P4T8vhbmp16XAFEs8mf7437E5N4bwdj+SKKzc6LskT\nYyeM2Yzh4tHYippwaeUqkhob6YS1Ce3pZHcSjT1TPizOmxtYAVPnvwxqis7r\ngjujhMO5000IbImk1fm1Sybu6KLrwntYC+RewfGmRl3/L36D2F9hIE30fFeo\nAEam2358f3uM2rQwtEXciUcjeOpAR9Dkwl3p8G2z6B284MeH0qtmOcbLbYIN\nDU2nw4zUcW4PLfC3uee2efQOVun6P6x/+ReN1BapZtOJCtfszCpuC1iRbIDj\nBg+PQt2OwCQV9YbLiTR+DcG1DVLwzYoKTn/0m8+2YKGt/d/Tw7fOjHcEVVP0\nSXk+UaYh5eYqCl5aOz2aXCrKQScQD93XnOwaW1POJ4Gy/j4gWo6v7mPu8NLv\nMPRy\r\n=b60c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"da23f3e9a1b3f2af18e3041c12a8bae463c1c591","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.54","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.153-renovate-non-major-da23f3e9a1b3f2af18e3041c12a8bae463c1c591_1620674417555_0.5732524715833536","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.153":{"name":"@balena/jellyfish-sync","version":"6.0.153","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.153","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a553605192ea5c694e5251ebe7701301c7a9005","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.153.tgz","fileCount":24,"integrity":"sha512-cS1EgYQnlDqIKJ6RDSi4UQtmzTjvuIimUgULvWwkI1cLOkHirdt87fQHTwtx7wBb2nDxRJzhXjHUnJhyPluA3g==","signatures":[{"sig":"MEUCIBOXfjbklsisOBxhOPSNMDSnoEaMX10Q/xwTg11Izc1cAiEAh0Ah4Xs+al4H/yVlMsAg/H/vnW+FZAL33oKWVMNPNaE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmYhnCRA9TVsSAnZWagAAbh8QAKUrLQI1fN1ioz8iOXRG\neylrW7SZf29cpUvA/oVpKNGmPF1fUj5UqRZkbn5qt/iYY3XoqLG3vFDEBlAy\nFjjgBR6P6HFivq8QLqwZt5xu/V9LShyct07M3t+L/yShuQTynkFNGtQJ2hQJ\ntgKX7JoPczkYDPslLRyADMkDrGIYK8JutdgRUfPvW8Pgzi7txVgnLzeEh9gY\nnajL9+OjUhbHvg2TXar6+aXxSMP6/pea64R4/b04F6cdDv/LV/9bnzAXrZgU\nyylZhw8pwDn9hbhNbIKTFCNaAqAOj5BknbUJN4vAOOd4z7Yfo+q/BJuFs9yz\nefDFOKEInjXuHtwUJeCkbCUKPrAePGpUBxAuyedU+Syn/biUTwFIbxaJGIvD\nmIY62SkyBqxhnb3l2INEiIF1SuvTTW18cTOjOfqepl7EfIFD2rqz+t80RZnB\nN6x9fZh+deTnGZJ3KHFvtNBnC3ked8j9zd8FuAhAXxR4T4CpXhszEEQ6Cvk5\n9zm96DIijcY/W2Drcx8PTFne4hPbzzZaiCTJbRBeGAg1Lm5+B6dL+so9jjrD\nOxVm3JcgNSqYfnTh9QO7NGMfrnw47NJUGhVlUmH/56NNlcNrfT3tmf+JgUhK\nYc2WTpeUkBWaOUv1i/6LOdKNjPB8tYlCbH5NmxQYVPXR4N4J5udACbSjs52s\nAwI+\r\n=kKj9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7065fb68dcd23287d01a60dcd1e70246b940aeb7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.15","@balena/jellyfish-logger":"2.1.54","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.0","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.153_1620674662515_0.33762679266428264","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.154-renovate-non-major-cb0df3296d27d497d566604a13057b0eb878669b":{"name":"@balena/jellyfish-sync","version":"6.0.154-renovate-non-major-cb0df3296d27d497d566604a13057b0eb878669b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.154-renovate-non-major-cb0df3296d27d497d566604a13057b0eb878669b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6c2a7881da4df061dc7fab7e452f1ddc9dcf0599","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.154-renovate-non-major-cb0df3296d27d497d566604a13057b0eb878669b.tgz","fileCount":24,"integrity":"sha512-hYsX+1ZcDMcXNCpRF0DoGga0AL6UabTQgGPwz59TXVkHokVhga39OIRjah3htvGhRYwbtR//jNUusCJ9dQLMSQ==","signatures":[{"sig":"MEUCIQDw7ZsQj7KBEq2i5UNEQ2eoUVmpjjwlAbqcLIfiZZDgFQIgdJgVsk3HymQgguGZjW0RxoVP9IxgFpt/HlwzMrpWGoo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161439,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmj9ECRA9TVsSAnZWagAAndIP/3fbSR4eL9pD6kOHeyAV\nPjuGhyQHzc5PBwExXoNuS/FhWUPUNp13N5haJfy8/G3IgkmLuqGd7Q7dXcPC\nJk5dmTItIrDZhu3AeqYS8J0cVRpxHN3+Ery6XzS6vZQj5VaZ/SrBo4nzxKV8\nh++lHK+3aItIozGrBO5WXfM5okxC2LUXYILXTAGNVfoPuUjoEc3tOu80R49I\nx+2LaVgj8sjZ0euFeZM4qjfIDdlxMaU1j6kCkYhjsAjjMx+zHKZVWv6CQU2l\njjF1iea+B3nq9zZf15CXDiLO3O2iCW7ENarPjKjckkmllEhz3tQmqtyOyvtf\ns7NnAf3qTN3sOMsAoQ0ZjwSdcxW9l/kp0FqfB5fTZ1TqEBPPHSJFpRit3E1j\nhp4c7UaY1kM2TZ0SWLqnG7S/4iJGwjsXnO1ZtHhO/7x5cIWEowao30sFku1n\nC/rWMguKh5FgCN+rtNzYxMGJN0KSaEVTrjwgJSoEC0aLz1LfrKV5YNK8NrJl\nMXhsAN02Di8w3maq0Bu3RKulTWWHpS39XwErHrs9czfjr0pALyQb2shaEX5O\n3WtrSPkSvSCHA07lGT41hqmzFn/gRX75Jl0JY+/oD52YMWmN5Z2yR5uOLDcA\nbfsz5BtdZ8B1iFt4IAboSMDc03P5D7G20akfFkNpNbOJYDNCKw5/iwjbu1O3\nGQLo\r\n=+3rP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cb0df3296d27d497d566604a13057b0eb878669b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.16","@balena/jellyfish-logger":"2.1.55","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.154-renovate-non-major-cb0df3296d27d497d566604a13057b0eb878669b_1620721475707_0.4282053269427011","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.154":{"name":"@balena/jellyfish-sync","version":"6.0.154","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.154","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d9f46279a2f9a534254e6517415d335904920f13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.154.tgz","fileCount":24,"integrity":"sha512-GjbwmEnH+1us4mKBRnzUuEJ1H1TdfOglP0YR/kBkbIthU2fRbzSRkdhL1xai8u9zVsGOKB/iQDRjOH1Em5QsJw==","signatures":[{"sig":"MEQCIFdlL18d5ycT77W52OSwj1Lh1tkp+FBPHr9t3oUAQysHAiBChG4uqnyhPzbdOMpn4NQ70IntWm4c56Oa4ApSGEvLhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmkAkCRA9TVsSAnZWagAAUe4P/3YsGG1FbXkP6B8Fd1qs\ndisgsEFnt1/1F04vLTP0dZ/4coxu866av9So//IB19iAfwbUn+uIuO3kBOMk\n2vBAl8zQTsVY3sDgD15tpg4eGjcRHZZzHhKt4lRNkq9vAbOLS0yiRqv0oJzc\n7+y3ANzDOxTIRfrRVAqAzm3wJUJrtgP/Qwebyoe+E8KAAHk/dQ3fZqXwmVPz\nX49EQWGrmOigjmKLP18UHJ5r1aQS5blaLMQfEi6uAJZpHhR1sbuDVg04u8x0\n+5wUAt0z3ZzaTvE5wVeK3OvCZZTAc85nJvvdvg1/lCjjw/bzvz2F7MdOKj4L\nX6mhX7PWX+PdEJzQlu4af++QBOrw+gNyQ1LgfZpg0o5igVQD6DnL3SDcxqmZ\n20LMDNGrU5wA5UITd+wigUjYD1t6zmFMJARwO2WeCjwNhsVQqjFqzy/E+xtn\n31pStMvHTI+l2N3lm8QOFK1THatd4o7Fwa4ORR1P6Kuz51LOGgHc/0OVZb2f\nEeFDqA8gbBNIMb5g0He6coQZIL5Y4iL5i0yOumurWrOJX0MFivAesyldS0tH\nwYn5oLX+RUEnp1p9o77lKVSgpMllIAwViUvGO3UB36n0hbI3bePBfNvliMLL\n10n28k16q+Ea8v03ofY7m2QyLLZf7UPwfzcWslTO4cideUlCTz+jlYPAYsrH\nCOz3\r\n=sPbS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"96e77b2e62235c02bff54c8cfaac64374bda3863","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.16","@balena/jellyfish-logger":"2.1.55","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.115"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.154_1620721700325_0.6877071487763742","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.155-renovate-non-major-f54e9d7730d70757c54659ca206fb4e6100a57d3":{"name":"@balena/jellyfish-sync","version":"6.0.155-renovate-non-major-f54e9d7730d70757c54659ca206fb4e6100a57d3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.155-renovate-non-major-f54e9d7730d70757c54659ca206fb4e6100a57d3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a7977a800385130c6fb55a788327bd1a24e5d155","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.155-renovate-non-major-f54e9d7730d70757c54659ca206fb4e6100a57d3.tgz","fileCount":24,"integrity":"sha512-Kvyo6StlGn0Tq+A6rxfq/4m5AXFKljwVQ6SxDsJjtMaaRH0iI6KgyoCFnTVEq7ILa6N/6Ku93yKXRmc3sUjBRQ==","signatures":[{"sig":"MEYCIQDD2rP5uUXHYAAqS511eU8IqqMlflYe6aSV8xVh+OZxqgIhAOhrKS7to0cXsa/9FtirEXviCy4X9M9gHKXd6qNrv65z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161506,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmlj+CRA9TVsSAnZWagAAGkwP/RLtVRd38idbc98BMUWw\nnPPF7Va5Oh1K3NcWSr+6UyKYh+AZwYgbFSu7BzFJLrXAqAnImphUwoTvYyJ1\nT1xkdJBhNBQMFCZnJiSaBVpvCQJqIjMLpnNCY4l9gh18cha0XKCbiFiqLP6p\nSGEKdmZR867LAp7uoNoX8yTK484HmdDGtr97MghzI59JZkM6+b30a8xSNqAW\nLlfEk7P8RNtb5m8DXaYtYsxlwjfMafQMD+lMPxYztapmL3lhWq9LHUtoz16O\n7b5pEHafFP2+QCjzoi0o/6uoT5CbZ5PpJAWqwofwDgGOv0L67/fR18iFEPDL\nSQZYP+FtYf1pbhwEmJOz3qT/ppzEtido43lZPblnSHwEvZ9vHUk5TSkU+H7f\nupNRcAqAiNkfDo16Jd6E1NDX4xD+cYNmH0S9B//XD8+752v1/rI0VFJY7OtZ\nsNMswdbeZOOxmklTjrDcxu1PUIORsBVxtM+dCuCMmcQQqy/ESl2ErB+YRov4\nbkgnBtcWp1eSxY/uyRcz0AltZl9VTz9gdVvrHOHOeEsZNTh7esQbFzFHeo8f\nbXeAAkl1ZZeq+JouWD4HG0l5EA3yIBXaVvItRyrtMGOzlH5gCBZOfmUM8S74\n3eBIVDGvwhLl5cEyeRJEIuyvs8cQjlHd6sHJK0VhSAy3fDqA7RQqoZOUqeOq\ntEAE\r\n=cUSl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f54e9d7730d70757c54659ca206fb4e6100a57d3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.16","@balena/jellyfish-logger":"2.1.56","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.155-renovate-non-major-f54e9d7730d70757c54659ca206fb4e6100a57d3_1620728062130_0.40082175481530524","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.155":{"name":"@balena/jellyfish-sync","version":"6.0.155","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.155","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"157b05205672a96b5acbee63b170a68eb66000c4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.155.tgz","fileCount":24,"integrity":"sha512-sYGLuu1KwFG2wnWV7bsU7VcF7hRHJSSaCT0OwatKUuW/w9FawUDCAwssukG4xHfVfmLW1dXLmZLb73WVcS3nNw==","signatures":[{"sig":"MEUCICj04SmJn0Z3tbi2lbbxeqTmf2vEioKPcDcQT5TFobIiAiEAqY2czF8DXUxe4i3y1WG8vC1e+uJ/Fghh++O5ZThSUyA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmln0CRA9TVsSAnZWagAAPMYP/1cA7lEEVBTraRDC7ttX\nYOHE5ZN7Kg8egivGcuuCBbcN8PBi4VuoPQjsiku5A16qSmi9O6DXGmOFjlA1\nxfXkXjlByCXE3oYbxRO7spdZwpURKALd0RxIuX+LZtFSju7MWEHCYbXB7+7r\nXjxCfQdAJp9kWEk0CiCKhhyEwoIEAQnvH+PwrIyh6RbguqGcO2480x9aGcJQ\n7F7CYhVUTna6fSzzrEvs6dq2oFOLHpj9U0u55wUYvMKTHleDX+WQCKQjQ2nB\npl4sI/cFCXsOTjNB7Q6h8szOqRq1Of/zNAxL5gks5Hw1kRF43qlRXbHMIEEn\nTR6V2Cu3Res6jsNH/DjvxfTJAWh8WtSq8kqwCmkR4SLUTqK3s5nj/buGz4lN\nbRKUJE8+U++WL4Bo7oJbDvJ54S5zcgAhNnE4Hv5LcphJTlqp+zbeNASpavqC\nhZ8uYXIdIrx5GMfxCHlZqbFiaLIOwqHI4TVnjM6Tl8wK9Nq7gNICJdO2nn90\ny5gG2QRVPgn8joG/xU2w3tBamUd6gXXsm4CaS27Zl57MxIQ/6fSe6Za/UPrI\nL70N2UQc1M+I83cvOu1CAhgw9MzNU+UPbKgdTbiXMyfog1nI0TwLAYFPFGRP\nHmN9gcARsi0/1oBVtzQF5kRXXsOSb70yqb5yXmMv1NCZNDkSjKufd3gYwwrW\nANoS\r\n=fM3T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"904c06322f992e89dc979bfa59faf0052ec395b2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.16","@balena/jellyfish-logger":"2.1.56","@balena/jellyfish-metrics":"^1.0.204"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.155_1620728307775_0.3530010361675797","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.156-renovate-non-major-b3ee53baeb4e332de0494b8f7c86784fe1470f27":{"name":"@balena/jellyfish-sync","version":"6.0.156-renovate-non-major-b3ee53baeb4e332de0494b8f7c86784fe1470f27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.156-renovate-non-major-b3ee53baeb4e332de0494b8f7c86784fe1470f27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b61e33068bba3ff0842527d3344e6af3923d01d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.156-renovate-non-major-b3ee53baeb4e332de0494b8f7c86784fe1470f27.tgz","fileCount":24,"integrity":"sha512-/7EaYzxhgbu+/yurrgjBn+w8Wrl+BZPNTntWYhq6J1kZOWQPcSpx0Y02g77Mx8X0bkc661FnV3MK2VCCvaBl5g==","signatures":[{"sig":"MEUCIQD50n1RvN05Mue39zoDx9IK2JusDEuSS5nAIVnz1OinVgIgN8twiTZtKQgtpofTHrpSsEnOPK23sdiHoVvix4SnyCE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmyk8CRA9TVsSAnZWagAAhOQQAJwsHRsXHMDO8ug9a+4S\nHCTDX0UubshJmh06xqRO+ZQ6RtcgVJ89XRhQWNp4Ac4PLmpsVtBnXOI4nNKC\nTmcB62We9c6Ys8UOJUTNL2kdRFfqP+9DQTkfMykXsS+UIF+oQ22k5SIQhfAK\n4p0Dn3c0FfudoR8LiHuqP3TRnaWXmr2abDS2+Fx0vR7HWbhLlvYotQemecER\nj99dPVil/wfHmo8RJufwzovLJXFoVukKf0rjqUDnvEqTqKWeJbgU+njB+B0c\nFVEbHPohUw3mxpZYrryMFgGWYMv8+e4jCLzsyExmHH63/xKs/aYpLbGXAL42\nL6pYuSyxz20UYB1Jo/l0VzCdRcaCnMEdcMPPi/V5S5dUroyhsGzeccHVU3yi\nZpYbEkYNV9WbGdrPb9sGd206+C3HprxLPleHZtpHIPnekjJLFhCaH68ZI9AU\nGWJ9NA+aCSMk0CdjZ6EZd+B5DEXOtu0Md3yDzdNBNNDuoi9p8Foe4nqmT2/w\nPoqUzmDBqFAxKcEM05MPvdN8ZexcRTufsndzp6diYXWPbSNhgOj85qeUQQIQ\nadf8T7AYqr4VPcn39UJcGL2pvHpJWFLRMrRNqh1Uvwpqjq0yTOtZ/+/ksNgZ\n7cElTsGfE04UDcUI/i2meo89GC5x5j53nG+ZLO6yQzyTE5LqoPS06ohQKxp5\ngNwX\r\n=mb83\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b3ee53baeb4e332de0494b8f7c86784fe1470f27","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.16","@balena/jellyfish-logger":"2.1.56","@balena/jellyfish-metrics":"^1.0.205"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.156-renovate-non-major-b3ee53baeb4e332de0494b8f7c86784fe1470f27_1620781371878_0.6698543871786029","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.156":{"name":"@balena/jellyfish-sync","version":"6.0.156","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.156","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9808525cdb699dd9354f604f999dac5569e294c1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.156.tgz","fileCount":24,"integrity":"sha512-Lxtwa7OwPm9c93/IjOPO00OzAu2ieVo1ZEPsQCOLYV2Lh5OJ3RrHyrAx9NqPppDMs8/bhHHgQKfEfy0T7rszGw==","signatures":[{"sig":"MEUCIGXgMBsYovGTGSSmNR+kb0JTXk235Yyq/U6P7pI8wbk9AiEAxwkZG7AXHbzSMWlnF3Tbbmn7oHlbLB1aHNGzQnKBbZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgmyooCRA9TVsSAnZWagAAg1IP/Akt1epI4rStooD9rhsb\nq2ITx4OtlGEu4Qsr/j/d20PEPAEp6xRcyxdr16d54c6TioPyW/6fVUSVa+f5\nM7EcnaQGLyyoZiUrp1g5qMfrB4U/7wstjaGV+7wiqt2T0+BVUo3ciZFgn7UD\nb+9Lg2NOjucvN9hwMsqsRHJxaeHRDX1m82pWTYviIepLZQA95g0V8LU2AXfT\nqbSoFZV400QpIUZ4vyUIaWKqemwO/4R13Htcn4CkepfE2zP5o2XUb1iIwWIv\n1zwOMNfHpZxV4q/1r0KwhWsnj0pOHv8v8h4F//0TY1fWSZ5C886NtZd4i7Yv\nUFJKjp31RozFU2bW2DCGamlG3jYCdaaVnQb/XCqF+KcLPvA8LNywr1YWzXi3\nM0MSXAZp4jzl+82RoTlY49bDYWz5vZV4kjESg3LriwG0cs4ZiYPDK1ALcPaV\nN/18zCJIBqueY+aaOZXm/rL2S74qX/KSSrpnxawpmta2vhSLj2zyux5XrzNX\nYVNjiV1DsG/DPN8gJQhqiJuYp7MRRMAzGrdJHchD/SFamu2SzqRUe5vSr+8y\nWZ0iZ0OliqflZcL7K3Na3uovc/8u7CZxb3rHxXIK1vCZ30PWqph9A2i6sHhe\n700SymdFjq/72cl9gK9kkO1GKGo2I70RKp6L1e5ce4jNzDwyxZNj2WXwNL21\nv3DX\r\n=zvfx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7036f4de70369cc82315f0cf974a0762c0babc75","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.16","@balena/jellyfish-logger":"2.1.56","@balena/jellyfish-metrics":"^1.0.205"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.156_1620781607864_0.5319698442168166","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.157-renovate-non-major-8e943b45ec496931793f8a7b8ecc93f44776f7a6":{"name":"@balena/jellyfish-sync","version":"6.0.157-renovate-non-major-8e943b45ec496931793f8a7b8ecc93f44776f7a6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.157-renovate-non-major-8e943b45ec496931793f8a7b8ecc93f44776f7a6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d196759c741c3a0423cadc2891a968032d808da","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.157-renovate-non-major-8e943b45ec496931793f8a7b8ecc93f44776f7a6.tgz","fileCount":24,"integrity":"sha512-im46nYHtScHTnSHqAlZWXQLtahew0MmGNKi+uclmol0nWLlObjoGI+MYP5QGQvAFQRrR2BpN1ERfeeg0qdh9hg==","signatures":[{"sig":"MEQCIB4lC++a/ese2ZUNAS7YefNqYdHfzoH2oPRxXpJ+cOC+AiAYZWa5B8BrkquopGy8Q/ZxqHAp0+LZIi7THv9o8F3nqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm6SICRA9TVsSAnZWagAAhAIQAIaEGZF340U5UFOn1l4W\nwENTruqEvyTnidP1yDlwgxCVqWpF5cGghzMaWuQLt0ODwR9ZNw0aGLFsRU+D\nMx1TrwkoVGOkcskxdT12eH1ZN4JQ9jWZmZ0R39Ubqb6qze1d+hNqLfg4WWob\nf/5eEdpJKWx/DiIJ2j6tlsGhtvaj44CZlfohrd4ta1smkmdA2SFG8MeEvziQ\nMD4TC1XfDsPSigyLJBwS/q2/dAwojFhQ7ctowflSXY5i5pvAxAVI7vpKCpe2\n5hGo1H2A9PVK4moNYElxBvH72VOMYjyBmq212P/CbdLFLuxKAFWTASFfvPYu\n1Kuewyg0SxFSJPgmIOlIjNMy1oRrFr8A3189IU7pz08zv7dK4ygCw14Xi9jC\noR9IzhuXWsKbk4XxjpPMowUK/0mAFIH8vweW4R+h/rl8Ivw4sxzm/lRL0wcR\nxQ/9J/w+KUyu0w4ytIWkudflmiyt7kfK4j0Tua6U+SqFTJwWE3AH3WzTqKjp\n4z3mJEgAe5y5jzn+9Q0QSGGRVGiBm74qGrKWsJQgA81RBl4f1Xy34ZVOSLFa\nuQWnhLKc2tMdu57B9/gr0PquRJX8/7bxyuJfElHUeA7Oowb0rfRyR5yIs2Xm\noNRDBLlsMcCvCg3I4eFSP/YuPpJjYd4wjsO5oW5FW20x660RZge0fiWFVh0p\nuwzH\r\n=ibBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8e943b45ec496931793f8a7b8ecc93f44776f7a6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.58","@balena/jellyfish-metrics":"^1.0.206"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.157-renovate-non-major-8e943b45ec496931793f8a7b8ecc93f44776f7a6_1620812936117_0.625431431962715","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.157":{"name":"@balena/jellyfish-sync","version":"6.0.157","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.157","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"686f62eeb234cfb8639adadfa68f051bfde61d4e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.157.tgz","fileCount":24,"integrity":"sha512-oCx+KTZvIkNXFmHBBa0JdTH++UDtL/3NucfvIl2/OFPDmS4gzVtwv6SGPu3W7pm8C9VTgbLAjp8bfnRl+8luSg==","signatures":[{"sig":"MEYCIQD/SzMabrCSPHwJSLSrgA8DTAZuzQQtXN8I7JjMRenFawIhAP9GqMCPmZhuK+KhW2lYjqqZ6jeZTPueKrV7dv4jRpC9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm6VlCRA9TVsSAnZWagAAVK4P/2WSJ6A42Cn15AWT8Eld\nGpHpQSdKrbeCM/bCrWvlL2YUixLC7HNVehN0a03Ln9QtqwryJQivDQZU8hZD\n4EG8eiNwqPWryAltC4JvM+AfzZ0cY04rGwbPt2KPpLxgTzWr13ks4hucVwgy\noxuMskgRdSH1pmrRP2nZSSOBPAhkeQScGYEMacyLFdVu0H+EvURKZQ/7Qyld\nMlXD2tPMZcK+kl4peChGCE5mlu35XL/j/JIFMpjQfZMmoBZs/cKF57Kbvodf\n+a0FN7oK7v9ZJRVqgMeWMWwLmusTpknFAAuj215RGI/fJqgq/r/OCxHWCqKO\nAi4qAhv+4GEa7CFCyfKnJT6Gu2teSUOhapzmNww84NTqspOcX0PTw0yG4CWH\n7wKYZA3+je2thi89UbIPd6VSU5LPWM1Gr5BSHqCGO3qIRzDXiCE/XMnpvgFv\n9qEAuZFaJmVQw/zgMR5mp31ofrv3AQkp45d919rbe41Ixzy+NSdSLV/8TVkY\n43Mw5NQHiWAiLacMm6IyuExuEAQX2L1GVIEcT21T3uMxWioz7v8lfnM/ou5d\nrPK1z7tR1sp9TcGM9OW1MytCpmodgylD8M/LRALZQaykTQH4vdNDdWK1mAU0\nmgvPdoOoX3N4Fq4E8qV7sJFUsp6H7jqxBAJ/O7DX26ulDjseQmETelf44NC3\nlqq/\r\n=vOV8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8692af478c4f39b84816aede49ecd0f811e73f22","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.58","@balena/jellyfish-metrics":"^1.0.206"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.157_1620813157230_0.006362326384089512","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.158-renovate-non-major-7309c8359ca8c0e288fe4e52af34578b31bbde0d":{"name":"@balena/jellyfish-sync","version":"6.0.158-renovate-non-major-7309c8359ca8c0e288fe4e52af34578b31bbde0d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.158-renovate-non-major-7309c8359ca8c0e288fe4e52af34578b31bbde0d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"94fa5e910ad6133c6b1f3ba1a6b53de26ad2ad5a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.158-renovate-non-major-7309c8359ca8c0e288fe4e52af34578b31bbde0d.tgz","fileCount":24,"integrity":"sha512-cdfz0mVCVUreakuDBvo3iT3pmuW+4J9XJWMSXvDarDhlfDjwfv58By3D4TPbCREDHy9dnXvuLG3i7S7tAJKPJg==","signatures":[{"sig":"MEUCIQDAKKfrsJqUuoBZiK4IuKSFideF/lLiUNWb1CSKr+x4ZAIgDpbNB2nG0QChKkt4oxqZNIjpsFKnKvgrvbs8iXjdxXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm6bsCRA9TVsSAnZWagAAxIoP+gJPk7kWAZTvoYbT7l1l\nfdFWxKRM4KaRCc/T1baYJgkSDCR69gzRn4xVk8H3PsGpjpuisQw3ki+hKJxL\nmN9swTMDNF+NZCqLNMJ4WOBC8xGt4eNKSOUW3V3kUui1az40wH8sVCvGmM+y\nLDS8hJM7X9aHj+K4YNaYEPW+E3fvkVi9iupv49KCQxGy1t+YeM7mHENoSZte\nCgR/zN3eKk9tstyUJslDLENzEJFPXwZ1wflpZ8XT2aHECXIIOabkpGN2jMjc\nZ/umznSzV8DpszNPs5xljb1CBqQG79DZlJ7vGeO4NvFw+Xlbn6i61r1bvQ88\nHSqsqV3DJd7N7vK1n0F6/ZP+uQFLcooT5+QVtLA9H6ED7B7o6gELSoHchUUp\nTRq9O/WT6rcXz+GB3SaVCgJUDD20/nXVosYtBBcnHbYI4PrxjTSc4lejniGC\nKvEMLIt2eMCU0HCwN/GXtGSwoiA3whI/K2z98/GWqx4Ku07T7WaN2RRWXDJX\nYbo599GGuN18txhKypYK8uuQpTe3U1Ih1x0jAUNNFDl6/Belohdij0lLI0I+\n8JyEkl8s6ECtHjuHEbLjpkCPRX3WqbDsfc252Y0p1ogXsiGPieNGc3wUfROe\n+K30wugZb5xoaqOtRonZqYteNnT0NoOA3F863paOGT7eX+16l1okRoqWliz5\nR9C/\r\n=/IB4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7309c8359ca8c0e288fe4e52af34578b31bbde0d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.58","@balena/jellyfish-metrics":"^1.0.207"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.158-renovate-non-major-7309c8359ca8c0e288fe4e52af34578b31bbde0d_1620813547910_0.38222794280325356","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.158":{"name":"@balena/jellyfish-sync","version":"6.0.158","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.158","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53a9897616c4054af2a38c7fc0b4257fc3e87c74","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.158.tgz","fileCount":24,"integrity":"sha512-YLb3JMbWeUoj+akCjS6/+nCI0Bqij5Jw976N7Sso1wMp/qJ6dRqotVEaYH63EQ8eBu0dh7pbgwfgXL/K3JRdcg==","signatures":[{"sig":"MEQCID56hpIUvv2Q9G8i8yY0YteObKG2rufTjlSdX0waxm/SAiAXGGc363LBjEBhOmWe3IbvQ/pCMOlODb35fsA6LTqr3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgm6fNCRA9TVsSAnZWagAAdj0QAIRX7nLAcXwga051Zz3f\n6eu3+6rnWLtF/uzb2nx1znw2LoutOILsNNZTi/3NGEMiCVw2w3YBzPgiStMk\neK5eLpyS5m7CAfo/4NZXY/DpfeNI01Afsds0e0GxzRX8W9LZCtHOpX3vh8Br\nO7n3wlPUmZkBpXT2xt8aIqo0c74K5lNQn1SCDh6jnZrWtZmgWqj1PKblrpd3\nFX5v7QuiLGMOr+Jo1oMpk9oFMSzLj13yvZKxBQdrtHEI7WH/hP2j5KJj53Lb\nqlBcgkIB8jAGT2ir+itDpR4iMBngP7+892hMqvy9tJ2MaezMwdSn6wQju97n\nPykWd+xcL1HBgWJVa4Gj5Dbg6H0YWmAqfz3lZ3FVs33aonsSMzpERsyN7Jzv\n7IsttXOUGteNmboa1mGpRDysYaO5Web9Wg/KGjNffP0doVtHomWUV6OwUF6L\nriEh1fS4ULXXAugMjUaO4O6MVyTZkIEAH2oo0WFc1Db8HudhsRN1ZeDmICEp\nMIFj6T8Jyjke1H6eEx83EDBgM98TG3cV8c5tmD/uquNbUGISU75YP0FtYQRF\npTyo0RA7mZCrCsbKlTSgH+MoE7Ozd9HvJS/SjcYLJ7WMglpwrNMmVi2oI/cc\n3jXydrAl1e6S8jD1ziwu2ZfIz4NNQ3U5R4kTqkNv/tKdRi7/KIZocRxB3/ox\ncwlI\r\n=eaQb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d96bb9b06bc799db0e9af574f49b11f4641bc615","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.58","@balena/jellyfish-metrics":"^1.0.207"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.158_1620813772747_0.29676256740635787","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.159-renovate-non-major-1536658b8ed544530e00a552214ac0d40eafc809":{"name":"@balena/jellyfish-sync","version":"6.0.159-renovate-non-major-1536658b8ed544530e00a552214ac0d40eafc809","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.159-renovate-non-major-1536658b8ed544530e00a552214ac0d40eafc809","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0163fbbc813e665bbaaa66aa716e698ab2ff8c19","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.159-renovate-non-major-1536658b8ed544530e00a552214ac0d40eafc809.tgz","fileCount":24,"integrity":"sha512-3rYnohp85QFlP08xnDFhS3p0U6X50958lypmleQRzsK5DWcKeTZFRzqejo9QCgfb2fHwSfWWfsxSuVpe6teDYw==","signatures":[{"sig":"MEUCIQCAtdzXaHMh6Dtabc+QMqG5b2w8ZU7N8A6ocFqZC1ZFnAIgZUrib3ETk+BUs4/roVlGuhHab4jF7nvEoaDsndEVY8s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnERcCRA9TVsSAnZWagAAdcYQAJvLix4DaP141DC7dXt8\nzb0LcrXC6/qcca27qKfO+QoM5TvMxi0oUNkMSeyNPLr8TQgHUg68XaBzKdAl\nxNIMrVN6h0KpRO2qiQuqg9D7+oJ4zf1hDMkUC+c2yXvlBDkVlgmlom1NEyjF\ntYDseiQ7bCUpQnhk/9WgMeB3+08y9zESpq1VSjWZOVvVf2AahIe4aaiZ6u0m\nTx9dmGpHj/y0x2FjeM7V2rm8ojdCpHCVqA+o733ehH0DV3yyW1JOWxZRDruQ\neeQiJbYbSz1sB1y7R3QDXNBHe9+NyaKzXRPsBi7VZt52427zHdJSRgrHAK/g\nUk16Qe8COS0aZrHqubx0rXrCfrbFLZJA41gjKgiT2DNloJRhD9rGP1095T90\nMbmw9et0p5lGNpf4Ms2xY+JK+oMSJzu5BegaWR/4GmApdR3hotEeT4Ype7JO\nnVVtm7RIcP2g69L8cDB0IeEgZeY2Gony4Br8GzHCgS7HhJvu/ONTwlqdWIzB\nYonxdZBwWAA7xP7iJWc+mn54jMM+4Wp5nJDLlL5bt+LA5Zj0yY8a+Apv2j2s\nNNLUEQV3w2Ad16e5ZlqXINyU4ejRreuimnhmLO+V33hxgA2bTRm6TlLNb+1s\nYG5g0o0XfWtkxdY1aw5EcKK9ESUrlQKjJTfOVXYg+J07Mwrp11YYhcN0Yt03\ni8Ox\r\n=KFvz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1536658b8ed544530e00a552214ac0d40eafc809","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.58","@balena/jellyfish-metrics":"^1.0.208"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.159-renovate-non-major-1536658b8ed544530e00a552214ac0d40eafc809_1620853851660_0.19216615212694466","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.159":{"name":"@balena/jellyfish-sync","version":"6.0.159","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.159","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2f460bfb57ca70c12eddc7685d28b98f8223682f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.159.tgz","fileCount":24,"integrity":"sha512-xoRg6YOJajfb1mrg6YS8elTJZs5yw1O3dSWsNts3dbavfP/MGRsR0r/ykX9Z85tM0COTmNzMtkt3D6Wg5nYZVg==","signatures":[{"sig":"MEYCIQCH3C/Si3fAiK6GCCfTKGLRLJqGttE3Glyu38sUt6oHAgIhAOVcDRlsjsr8TRpCQArwQlpTPjaV+yf5LEXwbKjiuqOk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnEUqCRA9TVsSAnZWagAAncIP/36Psodu02mDMb3iB/mg\nrlb/BMyTxJLLGBswl2a5ySz+oKSlCryx6QZD1KELobo76YL8TmBpo4dQiulW\naepdUc5Yo4cOgTBofdZW1mDoiyKXsmTZNfVUazG3DWyXE23DegktWsByGQ9P\n0OQ1+tidpq1ig1ePNk7Eilefh3F2IcodCOYtSveKyTKfID2oos7jGqQ942yn\nLlJ4gZH0oTV77Tp7AamtL+v3D/vrf3+e2Ep5bKEiCaqr1J3iSkBvn9nv23ra\nVZVaQu37EkG2i/O6bxG6Olt4vpIgg5S+9bpM7XnXhwFVPMIbSfR/RA/gcXx+\nT9l+AC0yU0GXKrAwHH3N+SaHa2LRCnz5/Yo0fe8BfNjNrGB2Ky/ic7kLKIDx\nTlpbR/yqjuV8Z7wbRSrtoU2KKrokiXcluSBlt08KyMRxNrAj70oiI37aqxHf\nAtvBGfFIbHlxMbvPft59ayTFpgL+MrkxOxryK4crXY0RhNFflUEVTHlxAfY6\nMIyGSMyhxvYrjsThLyUypTOTfnRDd9l0VPAEEIhMuVKKsBwn5u3CX/LCGwRj\nEYDF/WZ4mV7Wegl7RYGVvC4Hjc5cq0tvRak7tjIEtEYhGhs3p8JVgaA+kmFL\nR+2NoLk49+wwR5WqZWFye+WIz+O2OrRrLiSOeVrcU/ij5LLXR8m1sYYzunP2\nmWt8\r\n=4s3N\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c6f9eef87780b48694837ee57b0a698fbfb673f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.58","@balena/jellyfish-metrics":"^1.0.208"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.159_1620854057619_0.05179619906315103","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.160-renovate-non-major-b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb":{"name":"@balena/jellyfish-sync","version":"6.0.160-renovate-non-major-b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.160-renovate-non-major-b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d6b3c5fb1e135826c756466e4c647c21475cfbc4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.160-renovate-non-major-b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb.tgz","fileCount":24,"integrity":"sha512-fhJmucaPrgXjZo/z76/GEK0K0MDxTcrzIDr6cG2GaDyHIBiwK3Ig4vTkBBnALBmzDKaOVxU3Q2Td03yubwY4Tw==","signatures":[{"sig":"MEYCIQDShAdNrUeF5Ccke5BoxJ1fLPZ1VlpNtuz6HJsxLI6A+wIhAODeCqoIZF1r1HFUNBIxJjDJEayS/FYHPEgVJgzgX8NJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnR46CRA9TVsSAnZWagAAtjoP/A7pEMJaJ9zV9S8QzObQ\nR55Hf1A2w87+h69hS2sdmKb4oaDgze150OyBbgpveBrrKsSXMgyAXkL6Mp8v\njCjdFHLrYPsRTUiqPZWAR6IUfCQV2hy3w5xyW85cnfEwC1sn9nI3lSR754mB\nThsbsUjKcpGhwGXfn2uqoA+Gt/r3kG2xPCmSxwa2i4QNLe9HSLozlxMghLGR\nJVcAeez/zAuNTD8PBT9Xwdy0i595VTA87ghA1zZKe5nQd4TZts3i3mgXhGoZ\nj1Yco8vCxfIsbmNH7KgB0NNt6ZfGrbYA2q0hEPeHxlD8zyy4qeQxb63E9/YV\n9LrYpp80uJznta9XRhGfBhLQyV1mZA+zKgONNFZbKEs+kSHS2/SQDMeZAQQj\nMDX38je5DAg5Cao2AqNqsjds2eJ216jGutrpvSTbo5YghojXiJN0NC+VF4I1\nMNGEUlfU4J34LgTay+uZPuzIE5e33qa62leZLkuUzvZoTfibvFi5mOgZvZPy\nNzyE/Mj375ke5113L9GKp4ydCl9hTcWqq7jssa0+3ObH9ilDrKfmZtSEstvw\nv92xc1eolIs6P/8+/HvANXUCq/ydfZy1aOqvPEvA4mf8Xe8G1g9DQyfeLGDf\nC4exmJpxLm4/+D/JI39a6kcedeoJx/XM5JwnSTib8IV9Tee9etEFNuzTi4su\nSZce\r\n=IRa2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.59","@balena/jellyfish-metrics":"^1.0.208"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.160-renovate-non-major-b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb_1620909626004_0.22093328905180698","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.160":{"name":"@balena/jellyfish-sync","version":"6.0.160","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.160","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"30e3f5c05ef4c7bf0423b424c470e3985ddd8bec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.160.tgz","fileCount":24,"integrity":"sha512-2uzawj5XfsDLACVWNo2xL+Mc0QObgskbZCP1qJb2J7lWEB+5Umfr+EfMh75W6UHCG7G03L92pieV2jUxmCLAFw==","signatures":[{"sig":"MEQCIFCngVUo6ooHYti5K/p6w6j5YMd+nNrlb96RTmdM7AKUAiA0ABuZBIcBDtGADlEpwP5XCDWsUtkZlkqIFyi/NLtf1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":161935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnR8GCRA9TVsSAnZWagAAf4kQAKGOhDahD7bfTzU1idOY\nGOzGRnnAjXREqd6ocQIMK034BNfbFLh7ZBsglhRl82xXp9MobPXjbak0osB8\nhjNnN7g4iU4PaEhtQRfJANHxfY38ud05vWBEoKC5dH/giqpbP18/I8kQg5Bw\nuIMZuNHXi11TpMfxQthzUWzgzctgAMztcpiGcRDJY/Mbyx9SUZmW3AyI+WnS\nbchmR28RoSnMY0fmRWysZGdAyuFI5AhaIJakpn+tRrVrOaG888HjLBLWwi1x\nLF/vtDf4ru6qu85+HH07Y4427ppDA0KyWjsJAgwlUoYGP9cpqXXRx0xQaphM\nK/8s/61p1MBU/ScCzG5cz3K8IpEFBJ8M3+nnKJxv6k7FSvaW3NV6b6PsKnuY\nEC/z0biWFxNgea4kNg8L8369qSdvTxYRIansLstcKOw1g1kIOiux+dLs61XW\nPlbPobZdlh9mQolpacDd3r72q6qe57MzkIqAQ6agwORtlYpBfJP5YNkR8xhX\n+XC849XmebHaLnXpm5utH9lkQv7PjZmOJUhAV6sdJ4+06uuENJ/0icYJJShy\nqeBYY0dVDPF0uSevxhc2N4xn9zsDqXZf0K9Cn/MRbeSDqgx7psSpS+EFYVlR\nSrwaVlSReqXDRCGf04bjUbh56d0x0QX7587lB2vurkterYK6F9eaf4y0EYWF\nGoUF\r\n=w9Ab\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cedfeae75d3bbf5b7720fe08403a179183bbf66a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.59","@balena/jellyfish-metrics":"^1.0.208"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.160_1620909830327_0.022082444353897834","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.161-renovate-non-major-eaac2624f68c6fa661c7a02d9374a9af37f1b0a2":{"name":"@balena/jellyfish-sync","version":"6.0.161-renovate-non-major-eaac2624f68c6fa661c7a02d9374a9af37f1b0a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.161-renovate-non-major-eaac2624f68c6fa661c7a02d9374a9af37f1b0a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b43cb5deae2db9aec749ccfe4332ba7ab02eb3fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.161-renovate-non-major-eaac2624f68c6fa661c7a02d9374a9af37f1b0a2.tgz","fileCount":24,"integrity":"sha512-FGwDxYmT1tcP37arWay6oqxLjMasksoUSM7XJ+wSHMKQA/KS5j9nKEiyodp9RdrwtsTzWOkBlPkKFM2Xt9jl+w==","signatures":[{"sig":"MEUCIQD7wwslId9hYQnyGzhSicKrfXNbBPadE1VolX1Kbqp7ZQIgNIrEtVVc0HMc0mJG6/436psn9ylWxfSO7rZhpDa2HNY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162101,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnb0YCRA9TVsSAnZWagAAJB4P/A/7LV1TRPlZj6phSbu7\nsBDhsteMxKchACdOPqE7p8Xt/LdI8WhfYHqd1EgXmH8WJBhTJv+jBQFP2q0a\nh9ouFywmNlFaiVKqYzX/c4zSzY2jWZb9JdT3dRaGsVZWstXk4YpBDAghiO6M\nXI7mjZ32LIX/1KF1wzWjMGgntSl6UduPIUuRidLRxXlXGSiWbKO/Y8vKfVum\nfZ56cRsDmhPwXEYf60QPIAyL81hj5jzv+kAmPauWzgcL7SkHaCs4HDx30Jpl\n6lHWqi4HRKv3oulsEhq8c7t49TN/48UiS8QnlIEuKgs2H1kC3Tevt4umaaRR\nBPbfu2OXOfzhc6OfnXm4OWZiwWmML4ja62uydU89siMkLCpOan+UFmaYQr8h\nhBRfWne8pLqcqDgc2C7uXEhXWIZ7IgSEvdlj/3D4trh3vizwkEl4sKLczne9\n3BVPKvVmBNPmtu0bemu3Se7Nx94vuHmgZHRoWj3PiU4iO10TKHzNfQsKP3Y7\ngDxel5jo7/fZhyige13p43FfP/0RfUnfL3VLvieM1FzTvZXuU5QUPGVT+Zdk\nq+Ka5ALy0ACUb69o/TgXdULAADiQeyEiWZVU7hz4YHur8gghJ55gPb4YVS7s\ns5md5GI3j6MLmDqczgn99L/gQmDgDCL4ASYmA8OYpdVfIBkiXgSPU/D/9d4S\nnN/Z\r\n=wAdf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eaac2624f68c6fa661c7a02d9374a9af37f1b0a2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.59","@balena/jellyfish-metrics":"^1.0.209"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.161-renovate-non-major-eaac2624f68c6fa661c7a02d9374a9af37f1b0a2_1620950296389_0.5083753993627047","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.161":{"name":"@balena/jellyfish-sync","version":"6.0.161","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.161","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"080837108bd8430c56b131d85b97f82f6447fe35","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.161.tgz","fileCount":24,"integrity":"sha512-6Huxf2QWWZvoeIc06+sCBWpMrLXt/3aQEYT+Y9seW7oMH/d3BWht+75g16s0y6gnDYXy+ZYQd+Odexlza3zDHQ==","signatures":[{"sig":"MEYCIQCxFDmxo4BAuWd2t2rYSahEQYMLSccUdRWVmySu8+EiBwIhALjgdR3lBHk+rHCqiRkdte5nf6h/fuVIaBuPpDvqpj1i","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgnb4OCRA9TVsSAnZWagAAztgQAJRD5DQVifmKXh5QOlFV\nQXeLX8nBeeJ6e1lMyCZFA3/zHnA3ULKw8aFkHpMRldSfEuOAhoheLeA7C2IG\nYv+ZLIJksxF1zM1SXqvLYD0q0p2i0KZh1M8UPBvScNcr7MsS8J8yxHZ0kwSc\nLwxV9dhTtzUYw2LTawOaADorIN/Z43G6a7ZCOVlq1zbjcACNow2HQHPg+l1L\nI8Mr6nu5oFE+EEjZwVapbe5byL5HRqkfgPi7CEUOexn5dskQk1f1Ka9NuEb1\nH5aNHPqJSJQzLgLxzh2JEl6pTMRQJyiohWMKllZVntCTNGekEKdhGzWnXVMJ\nT0eCdyneRLkC3EJiQZWfMOdBzDODmPPavYJksqxsh7xbR51QvyCpmliQ1cjD\nRn395fgYnLehwx6syK76bkhUtUPyXZJMqNgcl5syk4TVqDrwTDFxedUqP2cL\n6OPXyHRE9zHNObDcQGIm7jHr3T6ifjbE7wLuSDfL26kXX+rxS1ZKL9GPr31G\nMJGF8oue05v3kLOETSMg2B6rYaaI+nzHAqNm6bbg0pB5eAqn0X6yQcbTvk5N\nv1LdIRjSW2nAYpc7EiLx2FwB2Zv5ZcyI069GdNY3qD+XNB2msxe5ZXGScSHI\nme4yeHzLsCqC/auaVqxjVg/hv+eN+Xq1xQh1w/Vnbbibd0G2RMI/MwLugQ2Y\n6zhN\r\n=2Gtg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"019d0c59b8bbddd96200159a3cea1090a9fe4c47","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.59","@balena/jellyfish-metrics":"^1.0.209"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.161_1620950541721_0.7705961098032914","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.162-renovate-non-major-ae93038d5a82e3642dfcd4a5e761bd9629f65dd9":{"name":"@balena/jellyfish-sync","version":"6.0.162-renovate-non-major-ae93038d5a82e3642dfcd4a5e761bd9629f65dd9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.162-renovate-non-major-ae93038d5a82e3642dfcd4a5e761bd9629f65dd9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b20ccf502b383c82d04d63d1b29af7d708f43e7b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.162-renovate-non-major-ae93038d5a82e3642dfcd4a5e761bd9629f65dd9.tgz","fileCount":24,"integrity":"sha512-IR/9gPlS95ABi0Ple9IIx7avmgsP5NfMGJ9H5RRJC79lo5ogLSWFy/NUd5RMbqT8tqP/fu0Ctl2ZsY6rA+zTGg==","signatures":[{"sig":"MEQCIE4M/nEVONk6iw+pd3SmcyumXF+h4UxHOB1jl4RR4FV3AiAaezmVLrEdwZmSFcESM2BFnK56mDSwTDTzUP/URcKZPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgokjVCRA9TVsSAnZWagAAmBwP/2O8ptDlqvrLtMggn+r2\n6cmfPZuZr/HTpWHI1I87q5pvs26czMMPwS+jT9CoFfIAzJGp8f0snaAT39kd\nPJQmwiuBZol9ZpcHUhZwKzaMV7jDXLlr/vSTrOlbavSnZapTPBnPTwc8FwsJ\n3b5EhtF3P6IAUvrSkmGVANZdz/xw2RuVNA+oRtFyEHdHbRSfkpiwBVh7or53\nPrcTexMnlcU/KGA6RU2DUDWAXBIqJYLQTzdN1Se2MvhYrfWJtWyP1CBEBYeP\nBSCcT2TdZsqXkcR/0sNyfWDB29qI2jBND3diKJo7VkgpWN5vDqTNzNfOd9/J\nx+cN7BN+5ur4YNpoXT0TQx2gOdEvPW/VTWhbq42zLqDRt9AUnkPWj+MVKpE8\nentIy7fsQTZAxXbv+9/tICpnoYG3jUYEIWQu3/nszuKlG4X7kmkEt9CgI2Kf\n9DRAk6uQdCkkPutgIoDyiFWNFJL9To7sORi0VU00FrjD2BiB0EqGjWy3FVhR\nndqctWPTD3NorPqVK2KUzGRhm9Sv/6my6JmXE7OmGxgRDDbqzc4m1HJWKrjp\nggqAkdXR0D+Zmp4RuCC4Fi9sqdj/Ll672jUkVvRzy8XJZeu5BH8QbY6Of2Lt\n12YFQfudHwChgEeeRnwbaux/hZxTNrq/QreQeYpTyvOvDOTYgEhY93EVSvu3\nXNcU\r\n=2X2w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ae93038d5a82e3642dfcd4a5e761bd9629f65dd9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.60","@balena/jellyfish-metrics":"^1.0.209"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.162-renovate-non-major-ae93038d5a82e3642dfcd4a5e761bd9629f65dd9_1621248212622_0.15163945675209733","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.162":{"name":"@balena/jellyfish-sync","version":"6.0.162","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.162","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f666aeaca1d721d113085774fba81e70f1f191fd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.162.tgz","fileCount":24,"integrity":"sha512-sOf57vM3ABu2o7zK+NUSzt0mj88/pn8epYoaTvJHmfip3+lV1PmraDYyN7FSHCd75sNWzeS1IIycTYJ+vobanQ==","signatures":[{"sig":"MEUCIQDPXQY5Ub1qNfJ2TMrF7ugavVUeXd6wjEyoRjkm327lkgIgHkBKr2rtKVC8kGmynHW1b9qD5n9bip30LImfNy8zRyY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgokmOCRA9TVsSAnZWagAAC60P/3DOmIKcvexeE5q6ttmK\nmul1hQWi0Fn7uSGhVRji9RApvF2R0vwXJzd6NaTzWNRbNGqzSPOlAAdfbKq0\naI7+ObGdId8qfSltSN3fZe6TxTaIwwjyuA8lArs9Ysc1Cvysn5uH6d7g5d39\nIpohKWqzYX9qH8VVYUavLpRGWe6O2MxIvd+F1utNSK80n23g7QF+hLZBXGG3\n6V00303v3JAna9mVX5aah/XqG8iz7UNutWTJC8M1DzJY9YBDtnLXc+nfBaSy\nb3bjX6IEO2nkLY4g6wmyHNST+U0jewFtQfETlCfmmsGt8anz9nGJDnb6tdc0\nX/7fIbZlE7MABqFtb68miNatIUO6o+Y1eCii9RcO0clQ9jnbW3VsJiXq1RH2\nXaO+ftexgLMkFADjhioZj7ZC1/PwJnYkvZeF8x0LKoAd01D9BTuT5+s9MsnK\noWdntzQipElnDE93DTMqsEjJX3GVSREzTBL47WkdxkSlcoB0JVFWBo7H4DY8\nFpxFV2iohRmyVnmD8wBlEOX7xZLX5xowM7yxMUZmTB26B4Glp/3dVSwrDVDU\n7L/QE4J/yeh9bYzb7mOdXA5hwtesHPutMuT1KliZ5P+K8gy1xW0/7eQVTNvl\nokZIjWh0NPUdqYMF8d7p1osuBopkKdvwIxCR+cLKxpbrnJ5ZjCN4NEYgrmWr\nF0/p\r\n=qZTA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8e3552cdbf26ec21c51884d9d53c2b2b61ac18f5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.60","@balena/jellyfish-metrics":"^1.0.209"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.162_1621248397682_0.9106328467468601","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.163-renovate-non-major-95bc674dddfe12b3a7aebd4bdee18d4a9efabd29":{"name":"@balena/jellyfish-sync","version":"6.0.163-renovate-non-major-95bc674dddfe12b3a7aebd4bdee18d4a9efabd29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.163-renovate-non-major-95bc674dddfe12b3a7aebd4bdee18d4a9efabd29","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd21ca1f54f38574d3bb5b7b6fa4cfe68bc0ca4a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.163-renovate-non-major-95bc674dddfe12b3a7aebd4bdee18d4a9efabd29.tgz","fileCount":24,"integrity":"sha512-6NM5XPB3byRRFy1hWFZef8I8Dp3WhEkJuF5P07+ic8RSgeEmJ4Pqz1a5U+GOlc63JeUwJpK2rOQIECkKCo4LKQ==","signatures":[{"sig":"MEYCIQC0nYDy9xSo3oSAKwiXI1TrJjj+tp7VXg/XsDuYXcZ28QIhAOSqFCxQetv+UEMskOll2DWmmJ9J7RKQy9MyzZoQsjE1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162311,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgowMeCRA9TVsSAnZWagAAQdQQAJG8wYrnUhquZv4lwumA\nRpx013LheneQ6quW0c9tCfsnwfq3a8pvl8OxDFC30Zfrlix+glrZ5RcEfW33\n+WSWbevyIS9dIP7OfryG7EoGTweHQhE6bcu839CVudpOClOF+/j8VArm2bzH\nfGfMda7QGEW+uLWN1+sHBKDmAfceunrN9WtiDJ+04DYUcww0++fEeyKMhfN4\njPPLapluFGoDOLA5sVZS3Yg6xPY+Cn2ZBCvGnD3icMLCQ8Yryk+YhaAgrGL5\nBgbuaahj5Dyowj7w7RjScww5b5m4PMGLDY1bKpHffjz+qqbdwryrzjQ/ac78\nzlNT+53X+VxYxgFE4DgFaLVzAINMiUjI/jgH/fUpNzjqrxSW747CRvFYGJEB\nvFH6BopBJcXINr6UkPTmz7wRvf5GEqRITEltsCzvT9gBFqHI4vZJqo526DfY\nbOyZDxFKShUyCrnT4EXSA/njTev1YTVc2bAiB3XDrvrkPEznX7LyQJPAtaK1\naDJqzGXowRPgmzFXx4TIqHlb/Nz8JNDgLtONZ1OmxEeQILothGxUycasKgwf\nYFh7HKeltjs/Bx56LPgShdB+0v4i8jq3Zp5VpQ8266Xv5JpGMcbary2thNTP\nNKz23eZlvtK+/F1uKA7Ycv66yr4y3hdwPftIWeEjJuo9UjP0JGNN1tKoBqbN\npZmr\r\n=mCmD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"95bc674dddfe12b3a7aebd4bdee18d4a9efabd29","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.60","@balena/jellyfish-metrics":"^1.0.210"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.163-renovate-non-major-95bc674dddfe12b3a7aebd4bdee18d4a9efabd29_1621295902294_0.6787736775826003","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.163":{"name":"@balena/jellyfish-sync","version":"6.0.163","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.163","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7068d135d66c7b31caae6eda018b06127c29bf6e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.163.tgz","fileCount":24,"integrity":"sha512-yX8uqqAVHnnmUMCeTVVGaTtvEnXQQrOHZZX699ol3tka0huc0vzvLrWiysA1Qrt3odF4eoYo6ImgXTNv9UfO3g==","signatures":[{"sig":"MEQCICBOl6thlb1bVjOuN6x1YjE6aSiB8Wo3ToMyCVsrvv+OAiBF/B6HZcoCZIfmsN6dH4RWuLPhq3+XBRbj4kd91mA7Fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgowPwCRA9TVsSAnZWagAAyQAP/1AxzsokZfiW1Od9mwXP\n+NnmmlIPG1xaeN5nCV/tnaduFVr5gA8OGRnNbYQDULdD+nZf2cB7buMqhHkU\nG7gR7HbQDRhtmz2sxZyuXjSqCjWsdtvW7679IHdG/gJFgW5JvifZR8niT7sS\n1ui3PMfrwCPfNecLa0T8ReLhctySctDdiY77ZF4SK+Mqx7G/EwCZyxC4ZP4V\nA+9BAoy1foYMOhI+jIZ3b+S0bzNfFGnBDshwgcFwiqzOgdSusIKLppPjJ2bN\nDDwBS6/4r9ww+AXDuSzr6xgJuaoGXF+ZTMerTNcK77B9JrwYIjIbFYEDACi4\nyEDr8NTbHGBVQGArLmOURRS7295F0eb8mWbDMLP16L/i5CPFtcUHV/i1aRPN\nyoCaNqwN0kF14YbGUBYHLbdjTD05f5wWi6nx0+QKENyuxowt2w1bpDU2Y0OF\nTdcOJhYt4Igxz+gmnj6HKV63FPgRYV+d90UiDPMZzmEoSU1DHHlGilZJYkb9\nKqKT5IIS2NiliPdk+W0E9KejQ9X8woROUjK9enP3oG/8XF2e2KBvXsOwieBA\nPmDTd+6d0pnaQTVBzEq3CWqsXZB97iJ7r9pdjkAeU7gcTzErZmWN2VYuknng\nhLjXEAQrq8Z1Rj3en1BJa2UyDEhd7xTCVCeht5K6qlCafquCdLPuQDvEImUR\n6Kbz\r\n=kEMU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b47fff001399e344556d0008f21ccbf5048f9c44","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.60","@balena/jellyfish-metrics":"^1.0.210"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.34","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.163_1621296111581_0.6137095851131877","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.164-renovate-non-major-cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f":{"name":"@balena/jellyfish-sync","version":"6.0.164-renovate-non-major-cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.164-renovate-non-major-cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7161522aea49df6daa862d034280483c8ac47168","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.164-renovate-non-major-cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f.tgz","fileCount":24,"integrity":"sha512-euLnsdhEZ5cOEoinafQuM9CpjZNw2moeShBU0L3c2GjDLPNubElX2wLRgqOt7J2CsJENrYjD+hB5mV6obMlN9w==","signatures":[{"sig":"MEQCIA/izLmnppqdjumL5XNRXli6aI84XTPZy2lFy0KSJLaaAiAy8Fv9z1FlrXDSR3SxiPdvjI7F8pqMbnfWsZ3AFWx1Wg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpBA2CRA9TVsSAnZWagAAztIP/RALpu3msCUPJMQNyAyH\ntY8GqwWXYlfd9SxdId/Me4CdBvHMot9bdOU/6YLmxAmk6JwyXKLGfw+Ig9FT\n1ed1oh5TuSVJOmLaLXpNS6EMdP9K4b1WWAihlCX8l1Z6phMLHZ4YjUpWgZLX\nfG4XeS9dqC1SMCFe4c1JkzNL9n63NlO+VtmE8h52Hf7LDChUkiG+W0qo8Roz\nKdLV6Sl9rmMX6kJxyZXTplIdCx/Tbmsjm6haQiC9fyYZYBhdtc87LJKuxEAx\nvjjl3cpn0nAmwjV1YHfUiPjMCBfwKhKxmThd7TCVN7ZSMa4IvCv4M9mFDjob\nTi34ryELZvHB6JjZZr/P5V4vrmqZrwhaL1LAJMb/qn2Dm+J8fGYV3L+q6y/V\n4/GfpsW1/tu4ozxFHosetOOUL8W30vPtIhzPqgZgHKMuW8XMK3JnMEboO3A2\n1xUVluI/uevXePpo5jVaqSBLuNbEntYb0p+UWOGpKhKtoZYDB/7SW4yg/RCI\nfMrqjN0jdvXUF4ZYP4GBvdi6BRR2MQdJr+Y7JsK15OD2rny5lqs/Vv2KkrPr\n3hc1d8ZO6/b7PNtDHATZogrWaLdnddefvfxsq1MjwfP7Q1DNr9ARIQdUigOK\nFR/JrZC2mwCEVjXR1QGwZIushUXZ3bsEsPC0WpEVR6iiC10fLJoWmHSAcFNW\nmbkD\r\n=NRkr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.60","@balena/jellyfish-metrics":"^1.0.211"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.164-renovate-non-major-cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f_1621364790326_0.5493868153283283","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.164":{"name":"@balena/jellyfish-sync","version":"6.0.164","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.164","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8916ecf4f4e1475ffa695ea0dfb365a886d96f2d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.164.tgz","fileCount":24,"integrity":"sha512-yZpEin0cJDsMr/59IZ7JBAPrXb2n2m07Qq4/1nmaTz1AzWuhcFZQjPAf6jrdpreV9MgkjVQsv963Xw28K8g06Q==","signatures":[{"sig":"MEUCIAro8NtAK00utEPKSmWBiXvom/Gwhwk7M3b2eZx+2VycAiEAjG5cymaDF3F7srlKGc5Uftuf59RsnR8sL53lvTP87WA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162318,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpBEpCRA9TVsSAnZWagAAu4UP/1D8zHrn8GVBgPsIQ3Yy\ne0YtLVn+rwTaanlzl6hc8NOkOWoZ6BSBpHerxolDGrImaLuM0uH4WiirGO2H\nnQK8ldX2CVQMbWCRg5fEPNMpAC2fLwPR6qHr/fGb1UD6t6GgCYjLsHszkM0D\ncJwXGpT4oNF7usl1nrgG3/pHXY7gfBF9Re8Wgv7FGQ2xpsJ4NPA1dMNpOWvR\nhpZRcpUftfekJ+XE2YTXkTr8bunAFl0ytf8mxcUwAjuZgdVo+187HRdzYC2n\nDCOMFleWIcGwuEH0hQPpkGnuJt0BPR1AW1om2iGxyomvdLN1+QjONUNj1raX\n4LQ6lCHVujtsUec1acWVtUafrFjysHkJTBbNK7yxYvCai61btyXQWFEBV/iu\nfFU0hZbzVhO9GwVSE82iSXFxO+zpR8kcb2XNQq5N+IbwDeHnx8CQtGDkI2sW\nGZ8tJ7IlrwkH14sFvBedCww0be5TXy50ng3yLPfPIkUa2RqnSEVHDr5ZpnoL\nKNboayDc4EhpsqymAGVwvAki6b3fPX4ePv4AtWjZKRm0LsTsHpqOdNmQRS76\netwJY2kPpQWO5rhmBuqjSikvgVFzjWcVZ6mvhAjEBHfCLIeTv8DHCiwl0mYO\nhqB+DtVWpARXGZOgJu1tZfocXGc3fH93gZcuujDS4+DOCf7SQXQhcDI9unVl\nnPiO\r\n=6JpI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0ed236c9ebe137e50addf24e87e7d84bd8a2f1ce","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.17","@balena/jellyfish-logger":"2.1.60","@balena/jellyfish-metrics":"^1.0.211"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.164_1621365033050_0.36686426574058073","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.165-renovate-internal-non-major-4c0eee6228d690bedea021e813343177a324f0dd":{"name":"@balena/jellyfish-sync","version":"6.0.165-renovate-internal-non-major-4c0eee6228d690bedea021e813343177a324f0dd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.165-renovate-internal-non-major-4c0eee6228d690bedea021e813343177a324f0dd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27de14cdb6e92fed8a2b3ef57ab33614f6c7c7db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.165-renovate-internal-non-major-4c0eee6228d690bedea021e813343177a324f0dd.tgz","fileCount":24,"integrity":"sha512-q2u2t5i0RfaiLnEwConWpdmRhq9VmTpsCazk7u5JckQLjOOoKwMtjpmL0EfEKz/NA9v1EAt4Q+umO7khvxIXIg==","signatures":[{"sig":"MEYCIQDowCTQxpj2ptiljVjRx6LJpB+ApFUt0hAw0zZ87simEwIhANXMcNHTR+D9grPqL8grj5oHEMUDeCYZaggvPkuYcdPf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162463,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp4QzCRA9TVsSAnZWagAAYdgP/RdZHFTgcQ4bR/ef5unD\nHbgdeJN3kR56psxocdbCiZiTDCgoKdOfzIYVE5P4DzHHXxEe3F8KN//yTNdr\nXzpJP7KT5VQB9s+otBCJ5rm11AMg1ZmeC7TuVUJegueHFduM261Vz59ZVHgv\nR3l193XjqETbmukn51xf5iX6owzy2jJ2n8K/lHeXHxZuETIRiEAB1+ZT2z+z\ndozM8wh1E+wiKZFtAJQ5Jio+EO+HPDEvkqYX965yo/RW+2iouPMoD8yOyK+c\nNgSxsS/2voF4v8g67IVLWe0npYGqIykKE6VGbcGw8cJMveA7j4S5VdtW7wir\nYITRxxSvis1CI3G6Ah9UL/crxJgS+MAAtTqfolZusTYKjFvwHd9W77Z3BL5G\nYs3uSXdomblFygcs8qkz12cCBUTNxV3fTySSSgBoq+VK/d2NX8jsn5SnjP+c\n+0mo9phBu6QcN+u2lGtluJ2CmTz0kTHdqzd6K4aUrk2m3p5do/0707dC4qt3\nvYQD1qw0jc37Jw/QTyATOl1roaVqNqVA7hpUcWZ5KW5meEuVQTBdMrAs6NHa\nmYw/s7BBCs2WjdtyisXbGbswoVivydTSAvRK7LmZCy4xKz/Oki7plapd0PdP\ndGTah2xHSczZKYLeyTLgI7h9MsDqE+xx2OUMAn1UH19P0stEgHBcy8QjBRKF\n4jh6\r\n=wZpn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4c0eee6228d690bedea021e813343177a324f0dd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.20","@balena/jellyfish-logger":"2.1.65","@balena/jellyfish-metrics":"^1.0.213"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.165-renovate-internal-non-major-4c0eee6228d690bedea021e813343177a324f0dd_1621591090960_0.17832209568201152","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.165":{"name":"@balena/jellyfish-sync","version":"6.0.165","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.165","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f17a36bbbbac855c6e98252e5d656ccc096c8248","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.165.tgz","fileCount":24,"integrity":"sha512-yl+8ym4koB18iKAD2mzkKXdxH7c2FHJaDFPQXUdeXrLZB+6U3CQ1jcLQNifXIFPF5Qsa+J+po16zokPTfYLBvQ==","signatures":[{"sig":"MEYCIQCXG6KFiNKyIVaEbbR2CrSNqFaSWQqL+tz2Sw5fYVi3OgIhAINPtjJrGXAj67sh0XSQ/iMa9XsOsPLMVsbVxuJguxhO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162394,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp4UKCRA9TVsSAnZWagAAB7gP/2SPsYEf/u7mASPxvcw8\n1JXZoM4SmU4Wp3umZRbMAIkPPYf2gb1mdyc4sHP8WzkTGzfWroOrfIej+1mx\ngHBmB9cBezGe/R24Zb2NPMDrSJL1nMe89XEO1DxMBiceSq1INm+uoQ0S/U2u\nX1Gxzs6WgeFp5XklcgW4KRtl5II6LjvCjwPGe3oh0L9BZAiMXMGRDReTxqeO\nkCm6NHuOaLhUNPZE19MLo7ROiLQD5BDd2xYZq+MoxhLhNp6WINWwlpcKqEzC\ngrtkwZuaEv+GQ6VIlyXMkEd6ZtlXWiQsR+eqcjixGK8xflbrQAR7U2XR4XD5\nZE1YZ1Ng+9r4S9dJl5PGpP4ru3VZemobQ7vWlF2ASnwOfXb2GsxZmSa6omlr\nbz0vpN57AO/5+4ju1mJHz+lj8Z4XoJI3Nu3Noj1SlkbTj13upHU5fWrRM6wR\n2w1KMMTeukx4zUv8yHlHs8O1fC7Qlz6XB267+3VbH448sDLwmpzgwYCUs7wX\n4r53XqJgb5RdSNoWJxmV6KG87dNisRrsSzv97tKv12XGkrZb6SIWQ5UPILXF\nw1tlogx0aUl3/5gTxdHiyaDYMXCli6KIdbQOAtKp4pVmNTBj5xUfNIAyLNO9\nvKqWpAA/54JRc/ASeOzS6Jzoni1P21Z3uV3DRlOet+4V52nwl/wprOoFSjv/\nHyOh\r\n=nLKt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a1e5bbb7c0db56f8a4e2924dbea2253391d46df","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.20","@balena/jellyfish-logger":"2.1.65","@balena/jellyfish-metrics":"^1.0.213"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.165_1621591305957_0.08296769520041591","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.166-renovate-internal-non-major-3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4":{"name":"@balena/jellyfish-sync","version":"6.0.166-renovate-internal-non-major-3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.166-renovate-internal-non-major-3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bb12cec74a9bf251ad3a94f08ded148094d0b7e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.166-renovate-internal-non-major-3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4.tgz","fileCount":24,"integrity":"sha512-smGYLBSeLgrLXcaxglLHHtb/w2hZvltqlnzc6/BwRTdqpV1x/jadTHRaGXdRlh9486UX+rffwGiHZMgKIiJBQQ==","signatures":[{"sig":"MEQCIGPIWx0uPEq5jFA6ejEN72ciZFVRmhh3DN3E+0bJ0EghAiAFAKvILzBHN8kO590V0Hl86khuMDFL7oDcFvPBj5/m7g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp5iTCRA9TVsSAnZWagAAS6sP/Rky+W0o/+ruL4Je46OW\nj94GHXKJAv88hErvcMlj3HlO9cBlQk6iOzI5xfFd5qEQcPDh3ZvbLi56GMxN\nlTiPOeRKM+/60mLVh4PiwWY5neJ8bUU1hN4MU7NSS2JC7yTbT3RDDhuheGWV\nOqmb21HY/L8/RnPdq1Ee96oFlrzwvQuzNtlzDu+yHdbO+c20oDq+cL8Sb2Nt\n/2d0F/XvD+wKXBMrBfO8HqmkkArMNd/Cpgk43aTj+U0du/PayCoPwmZc6bx1\n3sPrFPkgP21UV+kFtYQU5E6pxVtK5VQn4HIXNVShWuo6vzjYzQN6zFNeeNkH\ndzxgkLyOAfCCFe6JIjTNirDF1yOAUxInUAyEenbTAjMb7h08r/mF7J/JqTkZ\njeaVM6AqQv1968m6HsDCl81q7Naji15oB/TQqMh9MOL3/iR7Gh86Z/thdAkB\ni5ppN2d7R91xUlxK0g+slZEObLNl+WyAKitOHGgUKA7IADEaRFkk4dq/RfDy\naAoc8CterIMYYwokkqE11ZuLwSrK2+GBvfDu0hPWGbOhB15KbE4LaOCy1e1E\n6uTk0ggmWYrkwTt8zER6VEC1ADtPFUuZ8tXzeRNTmYt0X7ixsRtYxc/tlAuU\noobkoE8AbiJJk+SxcjyyuK+vsNANAIPjP+dZnFCN+XUgFGXU9c8/ItPzsX7O\nSlYJ\r\n=6plu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.21","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.214"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.166-renovate-internal-non-major-3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4_1621596307257_0.8345080992533442","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.166":{"name":"@balena/jellyfish-sync","version":"6.0.166","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.166","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c42cbf99b7baa8884da1df57838dcde45d71261c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.166.tgz","fileCount":24,"integrity":"sha512-OQVOAkke7quV9oWUvyarY4j6CZRL1TOLI5S93mItkISmtu72jSweUFKXj0DvvgLjywpiYzmJ155oVlgUE3y/eQ==","signatures":[{"sig":"MEYCIQDem2cvsylCRBzOvNbbvvEPcD1UeYnDSXUyCjKT04YXVgIhAJ23N3qkgYqt4H7B0irP7aOOPHWuQibe4QCnK3utgLti","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162470,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp5lnCRA9TVsSAnZWagAA/CoP/RWHoX51W17nX/af4hLb\nnjBk9Kdya11wOM14TWBCLp3A3rsigBW+4VmNniN84aTjusa3qZDAec/Qvb/G\n1g3xrvRVzZgXQ7gaCH26gplZTz5dof14pPQid7+xU7e+Mu9iDkwhzkzsVAUx\n1FF/kbmJ92sDCwk/LYV+M+lNEZ73525sNxa0grqNxkpfo/B2Jw+ezLsJuYxc\n4fe8oqJRafrPHYx4w6jEJfiiFSyU6HPX+mdLsqaElPgLb9uSLnOSS/2pOMIr\ndwxZWxwGjNUMxCAlA4T3wqeFeIdg3UruG7inzAPFRf8cu+UngcwuO6T3Es1/\nnAgJk3eTCu+XW9WkxzjcvG4rFIRT5RaUh6NfMXdhW7dRScU+q53G4egzIUJm\nDvTHWE0wR3cOXB4mMmgxVnaInWV4a4UXLIYq/mFfUSIrSj9qPw1y09wu3Cll\nYcf9M5kcAWG5Z7a1usy1dxCIQz6tOWmf3WfgAi5QN7dEh2NzgDOf7v66GtyG\nCchwdJy7+7P2Ah2Hs8YYmN9aSiK08os1aNFiAdjCiNWC3NsgBoHUm+RBLF9w\nQbzj1tB9C8opxgqEjQSR7RfQ01fezXOGu5WGoCACAFxsTm/ifQ3XqiHt4+PS\nJ5XuybcN3VrO2X2E4OII1yqeSwrscpjyrGLLEelUvh3PWVF3b2ha5d2PNSjq\nOoEZ\r\n=xWBA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3ed3aa0f3fe820a645fc24e4768da9ca5f58f2f4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.21","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.214"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.166_1621596517860_0.568331148581739","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.167-renovate-internal-non-major-9742f3bb1f95bd90fd38fe04b02310480808fcb7":{"name":"@balena/jellyfish-sync","version":"6.0.167-renovate-internal-non-major-9742f3bb1f95bd90fd38fe04b02310480808fcb7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.167-renovate-internal-non-major-9742f3bb1f95bd90fd38fe04b02310480808fcb7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9eb86c8d7ea4c81710e250e1849f052be8abfb0f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.167-renovate-internal-non-major-9742f3bb1f95bd90fd38fe04b02310480808fcb7.tgz","fileCount":24,"integrity":"sha512-MryhSOs8J7vcYo73/j6DBeYZ48B/r7Spn0A5IUgSLzMEW0PV5x6lSSbEI+fC8ktM1zkLU0/JKRESjX1gAng7vg==","signatures":[{"sig":"MEQCIE8e7Qb2G4Kd997iVk73yTqyGmCVwnPdFObJH0dv6RUTAiBGG6mVHXatfYtS455Z4N2DmNFwoJCILnLzAT2gAxBOXw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162645,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp6ucCRA9TVsSAnZWagAApdAQAILhp8gsKVVP31wcAmgF\ntMugU5O/PjfSpANjQmlwRyythMqReAhpGEzOmlEmRV0cECBOCm/LsvRg3UgF\nbmjcV6GOZ/yFNLBvvdwzBmZr8TrzUqv3kSfjp884iOw+kL2T1I6Or5j8eTcq\nUNd+1ijXZr/+LM/89El7bgx2oI5fzZ0YypBYu9dY79fUH8mjZkEz7Q86dgKM\nsijmvuy7FfIRlzHrPLWJRhFV/fWgNStyK/d8tE8LWTxCmiIWLrzlU1tWtw7b\nT0j8j3c5Cm/BF6htwRkoIG2uHatcnrh56DOMTu8umUFG4Wkc4Byx4pF33GCJ\nprATxBGU9w0ENM+hPbYLqH/ePGjwERZSHRC8kVg31JWnTjN9MCKTWO+FG/49\nkdc7kbu0jhEohLn3x3GClXuRGjgUix+VkUZr6UYj6irk1ZrmCyVQspIbdysy\nMJBUa71ffmaFPdXSGoR09WY+wDTODRYIM8OvMC4POlPGmApGPoCd5i2iOmw/\ngm+BiUCaZrlvLOYKdmrmkEtTeqdUrxYTBVCOOE23AAdmtYcVGYndNXlNYO3+\nFSbLbUbjLWu9PDGvLhC9b9uYdJKk2xs+Wxce1Kd0BmYVMhLfHKAaDwNNy8Oz\ncAPDHDb6AHv+kVWWitLR6ZW8cZ7oXIXWyh5cY9l7iiJ0VGX2+oiCy976sO/6\nZP+n\r\n=YGi4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9742f3bb1f95bd90fd38fe04b02310480808fcb7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.21","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.167-renovate-internal-non-major-9742f3bb1f95bd90fd38fe04b02310480808fcb7_1621601179678_0.9630457144131519","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.167":{"name":"@balena/jellyfish-sync","version":"6.0.167","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.167","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"16e5a9692204125704b40fa6ab3ee9a7759a5042","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.167.tgz","fileCount":24,"integrity":"sha512-GiG982Ro8pmeyYW5viACrm30+EZwICM0LdvdTeuptheXy9IIjkSlPbCtPe06gFWI+k+lc3bK3O9Yz1xtG8ps8Q==","signatures":[{"sig":"MEQCIGCBAiXQBxR7ULkvHQf6vIRW6yVeY8MxeVK/Tu6M6qUtAiBuJLN/Xkj3dJGc/7WlRd8/klATBjluAy4oZaEDWbR+aw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp6yACRA9TVsSAnZWagAA7pUQAJGzLha/bybW0X88n1c3\nAWZtwkYdNa+j6AZyL69GUk6zN+EfzQZxLyYoqcrFCk8/M2m94/aAOFlefe2N\nxL6N50Of80n5px9Wrv3Zd4eEYtOrDNR9fZJaqovxo0MD3YArTNQ8Rdg0btyW\nz9Wb+NVrGjiOJF2Sv+MfQIFh/UmC7TThtMhTHJm+ZPBIcKjqGO7ZKRkENhpT\npOPqm2EQNaH5joc2oNLchsAmTOJSOoAR0wGxZEw3GixsgAJZ1jYp4IJ/GMXu\nGdlcbKSUZe0Y4JZeBtPwZ9v1fXO9c/DW2jtNtoWmkDZX9PRyjPYooLMImp/U\n2FHM+oN60kNMWB281wJL8rCr4b1ACWiKTyNX6m9ghr8E4Yld3TISsmsoFUKo\n5AzrYnA0NF/Q4dbxI+XCZXV0+ixJVKKnItV1Pc8TA6zKZxD3rqbsQ2OanGc7\nwUwrbKyvAry3BYcdiar+B4l37uma+KPQEIkp24TegLQOrPMs0h17/lPka4CL\nhiLRLTAU7lIcjCmkN+vpQtM8odiz+Dd3t3r10YMjp33gYnvBWCA1+r/2PIpI\n7B6myUtkwPPeCmvhY3cg9kGdPjK1N9qGgDoWcrjNDSZ/q+D0RUwpzLak9IFs\nDtFPjK4ESoDuObtGYChmt6aT5LNQWzX7+EPnF15va+8zIgtmV24rAK3NUlZ3\nZTqB\r\n=kCL4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7cf8af839f80f49708481d561e748605f50e49d7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.21","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.167_1621601407617_0.15716511840320324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.168-renovate-balena-lint-6-x-36438edc34f10eb53d65778d32f0d14a141cdeee":{"name":"@balena/jellyfish-sync","version":"6.0.168-renovate-balena-lint-6-x-36438edc34f10eb53d65778d32f0d14a141cdeee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.168-renovate-balena-lint-6-x-36438edc34f10eb53d65778d32f0d14a141cdeee","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c9c3d6bcf673b1573682b7f2f66b2731624c2fed","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.168-renovate-balena-lint-6-x-36438edc34f10eb53d65778d32f0d14a141cdeee.tgz","fileCount":24,"integrity":"sha512-c16cikG62E+dOqxOdB5jE8kyU3VxjPTa9J8txhjRprZx77JwcE1VE9B1AW5gKJ0htUF5LF+nxnxm4Ep2gI2LTQ==","signatures":[{"sig":"MEQCID4XrHT989jVP3Lo76cktIkRPr2o0q+p5pudZpTStMXeAiB7QpxAN9SV8VsY4fVT/e/Eko9yTH8YgXGqddekRKz22w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgp/qxCRA9TVsSAnZWagAA40AP/A6YaoeOv3NyisgZoHCg\n3yYddF3SIelRfCOynOmGiQAGkB8fzBG9NlGRo6/99s4ZXbRykPFqPXPG/V7o\n+eqtLoRX3nJI05N/Pp6Y2NYBL0MqWyRImDNcUD5lCtLscl/WX0JOfrL4gcKA\nriERGo2rH7664G5nQKT/alapgLQA80hdkkhcgt75qdl3M1iqcsUY1ThSTLuM\nOStwd8nsdiIH3e4Y2CIXcU7qd5VFVPS8Kd0V10opNsbWjzXaQdT0Z9wyNo7W\n/pnihC1RdOkCVaH4g2uUM52sC9Lg5XsinqvwskbGu0PKN7DfYcQNDGgj3EY2\npU/LF5fQBk95qR3NYl+EGjhEDxMCqwfUR1w27a8jAE/TxxDargGsbwegMhPC\n/U7LT/X6Yp6RkyOMYC5JAgMuZrddR/ZH9GrXkREYdGt4TGqJWCX3GoKFvcyN\n11EAHXxy2sb4Q93K1KbFmbwdJ7NxAk1Jo00mbUPU8QATo29Dvg8D109xP/Ib\nmeXs6OMaPg9zb1S6ZrTFCK6EXcUVjRcGBV6SZn/upgfaBxIiFXYjmx/sE0wX\n9E4kTxUndiLkFML8o0NOKXGZj/gc6mCwAeF/FqT6vrhWBHq7Y6nAnPPCmIm3\nKR5PCAkkHOtYj92cPqBSmGQVk5xt15r4y1VuFK4OG/j0cCumVX6fLX1E52zS\nalF4\r\n=hEUB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"36438edc34f10eb53d65778d32f0d14a141cdeee","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.21","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.168-renovate-balena-lint-6-x-36438edc34f10eb53d65778d32f0d14a141cdeee_1621621424357_0.6256049933243544","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.168-renovate-internal-non-major-57df7894ab348eb84066d783f96b9f8fe78adbe4":{"name":"@balena/jellyfish-sync","version":"6.0.168-renovate-internal-non-major-57df7894ab348eb84066d783f96b9f8fe78adbe4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.168-renovate-internal-non-major-57df7894ab348eb84066d783f96b9f8fe78adbe4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39b1076a359511516e6e1039d388286fb7853217","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.168-renovate-internal-non-major-57df7894ab348eb84066d783f96b9f8fe78adbe4.tgz","fileCount":24,"integrity":"sha512-D2hbp4sH5x6qZvY8nd6BaG6gz1yphbyKSeL+fu4Yhq7T6AJ6+71vaSjR1LY/tWRyKIwhflTX4v+BVwPI20OKaw==","signatures":[{"sig":"MEQCIQDa9LS6fUbQcvBVfvX9FmMez+6/MkyBeFagN1J779r7RAIfBgODw3pQZz6Q893uX0U2Burf0Dct6/cI7q7dv1ByYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqFTRCRA9TVsSAnZWagAAY3AP/1+Fxfr67w2MaPy450qn\nLi9AOybSosHXNON3basuLZYOkYwGDjhS2MNk04zRBRgVtn/Yjpw1B0O7U2N0\nP1GdRSQxQQ4uBQwDP7WHfsO3uqBfPVKha1NJMNj1u3vO0Ov+iVSTT6lwQWF2\nXVED2Hq8APUV/h5WJ2Dxhade61vS4J/KZLxr2HZVDa89x1h4nNr4H4vnbhoB\n4IiPKkCx9txDbkf42EposoNAeSSgHcZ7sjl8H5Kwuz/YgBsJkQczVJ2ZMwkr\nBLmDkN8j3IXtJKTLBxiTm03t96XhvF5+HjdVnf1Gp5Y0Cxfb+xWhYcsPc5Lp\n7IR785GEScMl0uTNMGPfvLQnR3orM1x1XXsUp+8IVCSwqmfR6nxi7w514Shf\n04ZzID3zQLbGH5BBGhdN2SO/CqjKbq68U7bcRLnQW1kH36y0Bwir0PsOfC+1\nO//fyd4M/QYQNOVC0FWALmah3fGaUnFacFJ0p2YstXZeL+Eo5pPs3NM8YbRM\nizE4SLPWqZMhJgPdn2fGS/bEuziXrZgL0Xp5/9XDTCUKsToDBIEts/0r5TIZ\ngE01V8bEV51LQX3NeO+1VQY6gJybclcZA2VOcEmB7UKyx5lqAp4AFjKfyDEx\np12JH7PErNye81rB2tkyeuy6VIm9K0oMGvSYP4f4/EmnH2zAaduOo1B+8xOW\n54PG\r\n=7z4S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"57df7894ab348eb84066d783f96b9f8fe78adbe4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.168-renovate-internal-non-major-57df7894ab348eb84066d783f96b9f8fe78adbe4_1621644496513_0.9794822615986469","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.168-renovate-major-external-major-a1bb2046c936109884bb7f51075214aa8617977a":{"name":"@balena/jellyfish-sync","version":"6.0.168-renovate-major-external-major-a1bb2046c936109884bb7f51075214aa8617977a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.168-renovate-major-external-major-a1bb2046c936109884bb7f51075214aa8617977a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a8914bdd83b28fef2041f1ba8ab71c8c6124f80a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.168-renovate-major-external-major-a1bb2046c936109884bb7f51075214aa8617977a.tgz","fileCount":24,"integrity":"sha512-XHX8NuzYkfm8fRTjQCuMFd7eMCSYP4zvuf8hH5BUJEj/sMzKmgi6qBP9kAvZGvjfARN78P+NFGW3qd4UyyzCTg==","signatures":[{"sig":"MEQCIFQU7xpRMVnP2jMoVNnPn7yhObC89zSE2qYou8KR2/0qAiB4Ls99id+4otcfO1wvTMRtKdLEZuaNrx4WFtn8S49s+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162730,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqFUaCRA9TVsSAnZWagAAEmAQAKI6W1z2iVTaFN6lV5U1\n26/VOTQGFJmKJBObWRmodJsvjlnKgII9JRG0JGn0wwanygRLSa69q8nu08lf\n3iYJulKKFtFLXKVIJFxE0cALvnsWGCz+3Ow0i6q45wwaEOtM8yNsUsWwjV3z\nPzgjyBMKwxPrjtODSIzQug7HpDkxJ9U7RXl7soeyQb1bXLxnbe7rO6stKIio\nCkL4TyqbdRyqQT/X4yl3txWL7nGbCFTV/S+pTkrF9ndkGARtaZ/b6AW/4ot/\nUKoOq0ssv1FbbmJkspJgvc2d46oRFF63cDdcqCooQfWiznnaeYws8qUNMIGy\noSwph+aa0OmAyk+q61PqkhMZ+cQZckoSYK7lNRkQUBNf5Fmz/jZoFYbveghE\nmH+IhD3TIlSiUE3kbLGL8QJMqSfmQ81sSAY5IqJ5PLMyqE062fFTgRMqVi+f\nz2EtWYue3Yl9OilfOvoQC4RHGzeFe5clW7lnP0tqZexI4Iml2vGE6vK/OvQe\nn8vpMUC4Fz56FDpk9KRBvZA9DY2JM7t9HL/UxqtJGe/ofQCKzeQdxB19de5d\n2s5X6giaYZMsa8CSX712Tx9UokRRW3TeBCHWxNZdzUDPq+rrg+m/BLaqMPCK\nao0RD3tpU0j78GqkxC4cC12RQpXUFLZNxnQicYhx0jvCG0ItNN8R4yKmwYmD\nGuMa\r\n=3mwo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a1bb2046c936109884bb7f51075214aa8617977a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.21","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.168-renovate-major-external-major-a1bb2046c936109884bb7f51075214aa8617977a_1621644569767_0.4260651414173797","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.168":{"name":"@balena/jellyfish-sync","version":"6.0.168","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.168","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7721b12179c8e7177dba8c583c3f83aa2b4d42eb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.168.tgz","fileCount":24,"integrity":"sha512-ee5LnCgTsZC/79CzFiY1OlW/zNpmxkRRaGSSqSBSjVg0s6XGcdOovEDiP/y9KwpjHKSDh0njdBf4hrcZAucCvw==","signatures":[{"sig":"MEUCIQCrK85Wpg3AMFmAwHYOEEBHq8O7IaAIQUcDPwdryLgH+gIgC8xBlKc5INr9PB/ySgG+OioR2ODwRebalfFfI2m+6Tw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqFWlCRA9TVsSAnZWagAAjGAP/1aQVZCvu90Nnr97dDat\nVo0tPVvdmCAZeMmMfCLefZzZ/KUvrVTfDiQqiKsc3AW3r2dMp7ir+lHVf66D\nLvZ70vEUNt9Fei3g6fjCoVNPk9Lq4dhOOBXLDA6/6KJu3Rht1d7qsyKFz3A5\naC3GNQzCvVIIjfIFOfiOVKAXIUXWQVIL6rRuXWoD9EBpax+1pknc63GSLcIE\nWsYtlXwd3EyrzjWOJJnIZ4feHXU8TZkm3jj2Inz7ZkcoCfNP4EAnFJSlp3v7\nf5skaAlGvGWrOZ1y4Bkqnvm+2r55iVrou0GdmhOfzpM47ox0Ls6et5nLWNNN\n8uQ284kYvEipg7a5oVjuycRlFW3+sHX7t7epu1mD9YavSVEPruqh9Vq3rSvy\ng/I15Ck1rLcbOBdOrfroB7IOriQ43SMKUodxwur0jCvO/tYvFaUiP6O5X+bg\nc2qv4wsrHQjQYr6xF9Sxk/p3qKNNJWtL/BmQXz8kH/p5L4GlMJ+m2OSq72C5\nQz5JcJ3cRBGEQyHYCRylJPRxP2/LZLJBngkh1Mj0BQiI3Jrt5LgqP1lCUpiJ\nWOPD0D04KP/gkdefLgpKwZDBCJ42sbal1ZpXL7HJDk745mzADZs982pZOxUG\nKFsC7f9b/8Uwp15zA7A7ckGdLv5l/n5MblbmY0tAONmJs/hjYvVhZBd5cnTA\ncm6V\r\n=JDxB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aebd6a49061e40ae473be33474bbd3c348919e6c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.168_1621644709198_0.6500882704555428","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.169-renovate-balena-lint-6-x-71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de":{"name":"@balena/jellyfish-sync","version":"6.0.169-renovate-balena-lint-6-x-71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.169-renovate-balena-lint-6-x-71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d23355a2340cac296ea63e6efb46cb5ce4aaf142","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.169-renovate-balena-lint-6-x-71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de.tgz","fileCount":24,"integrity":"sha512-6MMaoRRhkrYbPcaM8kKGQRe1+AyrosxSBVskCbxCbh9FZce8iAE9IoqVbQTfix5QcD3RX/Pl4Ibxuk8sbJhs1A==","signatures":[{"sig":"MEUCIQCP6DM4PRS3HnkZa+5rrxdnBQZGFOjOcWwkptAgDD1xbgIgWrxLn85Y/7wGSLRClDALGjuE+oJaWU4f1tvZEU1HzHc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqFdaCRA9TVsSAnZWagAALpcQAIivxPjtaFBOqjPRieKj\npBZXWbIO9rrxIMDwdy9LifwQBfbhGKn7EhMaF0oH9kE5PPE2pmgf/GbtsFh9\n1++Za2DikgSe+ctAXmXGKeaGFubojrkbb0+DYsDlxn7uKIO2n5wLQt4ZL0O4\njq5h3igSxWv2oPo1yFRxw8pfvhaw5T7ueZoyI6gYQ40UOPgOZRyBiqmdblm6\nahEcDJXFW+f0ZM8auZgkDver/QpES2oqWU490d5+yot+NGLRfzmnqPbXdlFD\nZww4TibvagoO1L9hZVjINspMRaz/A+P51QiZysaEdKbFHp3Rp8kPe1XdK/wR\nkrw60P4HsAuXbfy0PaKiFW53K7B23APXPYrCAZzOK4GKTsPxHO2m607eJEa8\nrsCNZ3f2enVjckKfOSpZlQneq/SaNiHB0ybMKlsSBwafHjPKZAk0nUt37Yfk\nJ0ApWj1rUHNaPLN2apfIJ3qVcLFggO4Q3yYKfJl2kzd3zhBSB1U7/WwtZ+S7\n0Qy31pUWdqdm/5q1B2OFDd3WBpeoPZnmijCNrBjV523lS6IjLEYoXe+YRBn3\nNWd9TUEpkghD8VARiDpFuRHVidkTQqQ9XC+oKOVZyinDf2QDFpetYnVpmQOT\n45/M5WtoMZZ128YaxbzxaZ03ZxTgjI/TgRcYQ/FN9AMS5zMGhcluQlCduNtx\nKjW9\r\n=72FE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.169-renovate-balena-lint-6-x-71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de_1621645146280_0.23997406178946168","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.169-renovate-major-external-major-30cf60e64ec1b4a6820309d856a45a05707b5e3f":{"name":"@balena/jellyfish-sync","version":"6.0.169-renovate-major-external-major-30cf60e64ec1b4a6820309d856a45a05707b5e3f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.169-renovate-major-external-major-30cf60e64ec1b4a6820309d856a45a05707b5e3f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0900b64efe573b6347164e5c4f4ac681d14ee699","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.169-renovate-major-external-major-30cf60e64ec1b4a6820309d856a45a05707b5e3f.tgz","fileCount":24,"integrity":"sha512-kv/b6D3IE3f1zr5I9iDuIDhofiwKxSnMn60wA9d5N2+zNoTh+quqwUabL70hcRF0M6brMX82IoYohaVSwx5rFg==","signatures":[{"sig":"MEUCIQDmmAZqWTkOX3c0kQ4WhoW7KhOfhOycgQuhYKcYxIdykwIgM8E5kb29MBRKfBNwIrNHHCmYNuv/XJXPWShgOAsVOPA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqFegCRA9TVsSAnZWagAAgUAP/2UGumI5qIu1mSBi5hBm\nSujDmMiO0A8lXiHuWR19Acp7iy+lagnCp0BOKEdk6qxlJ+Aec8o7h82SUOcz\nnFMT1u6ld37vDbDwwnLqXqVrn8hdnRT8Il95vNI8OCdHSxP949a0gZnIKo3+\nGNiQssio1s2O8i+002dHXj4DdtBSHl8G6eYx0zqUi5vaIXnK5RmFWNg2ztMJ\nv7bY26IM8Vzed6Sw8Btf5z4Fxkv4MYIYBu6FwBtTUm1dqLecCo2yXvZ+Eosl\n5YnBGJTBM8f1fqYgRIfYdb1IZgD8DnWqA5jBx/0o+vdLr9+8Np1d3vaO8NOj\nxHNKGMmI41vf7jD/z95IOtOdrBMpJKV9BFRN536O5Dw30XzAusOV3BnCpAap\nxQkGyp6BSaulyVc2qNNguXBk1S1rMHS/jZvmZfoephf0LCCrGvk0kS3Ct5xy\nfRW57d5xH2bj1G5mf7Ot0kSrmOR2bDDwKvipaSu0mduiC3kzK/e5cwUoyfjm\nBAUmu47TJEpCwGawbBI4D84xstN76octcC0JqY/4HxvCoqc5wH3VSQeLr9zb\nc3IGmOdNfjgnnFM+qFNf8TXkmTAr+a1rGFqSbqnx5Yc8JLGRT25Wf8hCPsva\nDJxEWF1uC/BZiE2JjviOzvw3qFdpEcOjTn7+wY20opyshjmEM8eTLd54Dulm\nH9M+\r\n=g6M9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"30cf60e64ec1b4a6820309d856a45a05707b5e3f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.66","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.169-renovate-major-external-major-30cf60e64ec1b4a6820309d856a45a05707b5e3f_1621645215612_0.7560134163965182","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.169-renovate-internal-non-major-2cd8b33840e06a02d419ac7d89b79e64aba695c3":{"name":"@balena/jellyfish-sync","version":"6.0.169-renovate-internal-non-major-2cd8b33840e06a02d419ac7d89b79e64aba695c3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.169-renovate-internal-non-major-2cd8b33840e06a02d419ac7d89b79e64aba695c3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2171c79e2a700e061927e478354dd33cd834ffa8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.169-renovate-internal-non-major-2cd8b33840e06a02d419ac7d89b79e64aba695c3.tgz","fileCount":24,"integrity":"sha512-VU6lwHOnWtcQJxnsACzd2UeGNirNtYB9MJrg05DZPg5QXl0LHu2aSBcpax8tPkTdug/UDJocMb07g/0qaR8Qgg==","signatures":[{"sig":"MEYCIQCCEDEowWOFeQEOWaYnsPa/hBi2kfIKiMIHHXKR02dGAwIhAPG3Utqvo0alEtdzLhVTrbPkD+Djgx46XZ/VnmTYgNTn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqGKQCRA9TVsSAnZWagAAdDYP/iiK0gi8oKq99rDDZSS0\nfOV6mE0pXZckDT0PIwiIz0+ak/U6ihiXmAv8FaE8Cdo0aBoiddBZx68Ilo6k\nA5nuDSe22lk2cKTxKUJ6whMygba6TsK+DNr6NXpuqM00Fazq+YgLmjkpUIjv\n5/S2/qbbZkIfwMPpsBLSeaFeJU/22TiHLm5PgNL260mIrlALiaGFVhsFdJdK\nhV6rAxHGTCMo9HbdWUQKq5eFnD7ufmgNaZFmsLZw+MZazhGUgWvxrtQFg+0v\nVLzMjrPPyzO5qkXkdLTZ09JLYTzm6iVRGN75D3fJFir/i6zIvmDCJL/XUNav\nZNgQfDp1KSTybFJ/7eVIwEzoQ1xZTLD4JmhNB9lWwyuQNWvb0GJJpdFBTD/w\nUtrDMVSt3VIPpYmp11c5tZnRmwPRq8feNwoVwW4ZTXCo67vUL7ozh/9BFhjQ\nqSC1EKpPOYR+lXTsLHpU6s1GN4V42INZjBhyEFDpSWepJOaQkBsvYhs0Ej1f\nE62jG4gDfOhCsu7G8iibk1ZgA2Y5EyfsfVEJCfdLyYvmlUxpVOHzZGeAu78Q\nD7iwBtqNtWN2iZP5MTjZV3/n++T0x2/OXT5tHwIIvymzw6kNk5jZVdVBM7rM\nLHRlQ6mwqiXD5EJtK6828ZW+6A/rWocloy2tfNFKis2hG6aEkS21+FKewLZH\nLIyX\r\n=BsR+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2cd8b33840e06a02d419ac7d89b79e64aba695c3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.68","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.169-renovate-internal-non-major-2cd8b33840e06a02d419ac7d89b79e64aba695c3_1621648015492_0.5783535990317139","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.169":{"name":"@balena/jellyfish-sync","version":"6.0.169","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.169","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb68341ed0e31bcbabf26d7374104813b1e78cb4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.169.tgz","fileCount":24,"integrity":"sha512-BnmdLuNWpIPf9/uk5WhFG2lqgG21AhoctPdOJRQ+y6AojCMPjZ32UymMGgYqfgB3LpyvWLIFkDTLQfMf1WJY4Q==","signatures":[{"sig":"MEUCIQC4nm0lCShZliFpJLsBIPfAy6anCB0BC75U0boQQagcggIgSD8RuJnUHL3Dn0c3Nf6YK8MDz6bdatr/qg3hlG3ezSU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqGNkCRA9TVsSAnZWagAAMYEQAKKoHmqr8S2h9xR0XmKd\nyoJAIrvWtOOnd5fqOrsw+/woOq9JOdJkrfApoNj7CPZE5puIbPF8EURtEf+9\nJIO9co9J14+m4Tu5aREUGOxc47GYgRoOXvIMMzmzhduVno+WaZBAe9x5BAhr\nAC+BL2BMBeQLdf7S4Jv+HzKWPt4LfNEnXAxiF4ZqzDMKxb+lRMPVbILOfvn3\nJ/MKVwELQNM+8qGcYuJB01o272xQJf6ytw9ypi8Twe/EVJC1GqJ5r1orPyxf\nG6hmVWqN72jBEz51KjCgE688nvE783rDLM6C3to3vLN0KBQmrKd0Neu1wRSp\n0WV047zm+xP9l47BGIJQT4uCYJL0XoBZUWPRL5l25+oz/+bm80X998Br0KWs\n3/dJqKabdEtJHPEpWCBQf9wVlovG/SRaPK16O7yE/HRAHSze0+fb16Z688sI\n1fOa8IZhEPkYVxwJl32kL/Vqi1xZtQDzM1Z/A9Sy9k5Vwbx7H5tKpkOMIxXl\n+5dVzWI5kKlg4t477BSn/bRPYNPlOE3HNT74RRtqEXJO2YeTvFtoBGwxmLW1\n+zNtIX4ftDyY8/jdlS4eZGu5VCvDvaDJeGfKqClKAx6luhl7BOf8Jz/iTi88\nw649O32Pq+zoqDHyVXFOACKMd/fgIkQwWTcJIZh1cHIMidKlW8JuXSb25dD6\nJYtp\r\n=KRyu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c382c57bfc2255de5246978ce50acfde22121b85","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.68","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.169_1621648227586_0.25210480140149794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.170-renovate-balena-lint-6-x-270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2":{"name":"@balena/jellyfish-sync","version":"6.0.170-renovate-balena-lint-6-x-270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.170-renovate-balena-lint-6-x-270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f185d8cbfcf601992a389c588746ca1acb327fb4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.170-renovate-balena-lint-6-x-270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2.tgz","fileCount":24,"integrity":"sha512-Q+PCgbIKf/SmVLlFekaE5CiiZQhyLaXxhne1Vm/lkYdAIqV2carIAU4/MdLMwTybyXAk8v6XB8wLStrXbUPR/A==","signatures":[{"sig":"MEUCIED1xQy6Rm8slEk0HXRVEnUS3+8fJTC9ACePamcE7qsrAiEAhCMZGy7NgDJRQ89RRDtJw0CMhKFQ+FLq35LU4psfQvo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqGURCRA9TVsSAnZWagAA9xoP/jf5nHO8xzJ3+Kmzn87f\niElWLwgg5lmjGc7n8pNECHTB8+P6l8dZOPYRMQh8hOYmxd3/oWMpjvztI2ki\nNFkfCyLh6BY8mcAboa/TK8kcgxTjnnO9pZhBJMIF5m6GZKKlXxE+eJ9JxMKF\nxFJq/FK0HZ3l/Xvk1KEYTFSzR8kzHdO+OIYPVRUCYoPLMxSJtQMtiPQLcs03\n0x1HGg6JHz2MmA3SJuGzjWTux+Fn1E2kUH9MN8RGb+/iXe/Nkwbr/xQtJazb\n6frDU8R/kZ5RTf4N9vTODCDGy6ChfqtkIsilOFFIaJxt81+0mSOqixEq8nXo\nYHGH8u8vmExqpdc2OaFDoWQsNDeodd7Wo4PHU+chkEjqRgxL2aNYqJnqYLez\nArkhBqkGXW7fRpVzbOcTeQqQVitMon98Pu9eCuc773hxD59OLhd0W1AegSUj\nhnbKeR+6FVoh1T1pSBdCDhd78/tMHjDXCd69pEp0sBXe3dBg+BYcOEWkrD1X\nlG0ipex92UZYQsSJoISD6M3VQ1qRSeYhxoBsp3obOElPUP1DluUYvm/BPzIq\nyVOEGjsNSz4jcvC2qHXRd3PDl+wz70LgZ190FhNQtwm5iSv45QnERPvuami/\nZR+Lb/plfXEdN8kyLTtPmt8Ht/AD/Mw2QIR69LW5tCCh2T/mJiX/4tZvIRaa\nDjdp\r\n=gGGW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.68","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.170-renovate-balena-lint-6-x-270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2_1621648656694_0.36878818071738606","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.170-renovate-major-external-major-3fd3d058e4fefa6e609e3e85cfa62c018d8f349f":{"name":"@balena/jellyfish-sync","version":"6.0.170-renovate-major-external-major-3fd3d058e4fefa6e609e3e85cfa62c018d8f349f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.170-renovate-major-external-major-3fd3d058e4fefa6e609e3e85cfa62c018d8f349f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a010382b3c5a7cd3205e5a6b7f02c2f475913b30","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.170-renovate-major-external-major-3fd3d058e4fefa6e609e3e85cfa62c018d8f349f.tgz","fileCount":24,"integrity":"sha512-571lWk5Wxy1X9fnrpBfv9JxIVQxmYxNOIOrQZr51M4wxB5lplBHpfJn8tn3QCmssEUS/l5YnD5bSkMS9Ed5Zxg==","signatures":[{"sig":"MEYCIQC0m48c8GuDFof+YiJ0ekyjvNybqU7dHiCOv/h9t9RomAIhANXC1qs9dI+nRhYtydvZAB2RzuiOlbqruKzg63LvDPWy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162938,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqGV+CRA9TVsSAnZWagAANeQP/jo2TWZcOSWF6JrpPS61\nLt4v52f2VDloEwnybdQH1T2B96V1QTdpAFhOueMoASRzsPOjZ3Cy9G69S3E6\n9JW547ZJ4Dz0xu3nTk0IPZyqAXpc/dnhCFLehmAZP9y0FO6A493L+vYcNXVN\nT6Y4GgMEqZ+CxQAOHaPwbNHz0u1QE0psAMqD9oigw7MVO6jdSgp5F8DelXlm\n87KYjc9GE+NI8OBdcB4lv14Q8cxcABRihApt/6sYotpjfWQAlvo+k5FW8tus\naDGkGRJQRQRSHq3vRV4SbUqehbth3V3wSsLOXfWD7DFkExXn1asxJtwccuGt\nkpk8OdxmfHouMSbOFBrI+VLJlgCS3xH8F8i7YY07tdLftM2oINmVCxI/9PXM\n6cBi7a5vrs3n/Bcen96BJKKUZrRa/cOTLtlfeITHoLvuTN/TAiN/DGCmO52S\ng7vPfpGCPsK0PBwdlyDv3FbfDc1A7Ube62FcFwMM6ndSe2KixHMrqg/okUeo\n1STxx/PochdJJIgrzo7qMyzLGWOBm294sBrvPc87BZ4fAJWgP+2EXgIwzlOd\niAXhQwAGHsbSfPK53//VSlJhrtxFSMogxK/kA+vpfKeE5eMqfIqyQvYtFYBr\nDdp816vL0BynAnbybzXYHfLGYOMkwobECYqnXHLOh45kx8TJBM4LWoVo4xnl\nkpUL\r\n=eFnH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3fd3d058e4fefa6e609e3e85cfa62c018d8f349f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.68","@balena/jellyfish-metrics":"^1.0.215"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.170-renovate-major-external-major-3fd3d058e4fefa6e609e3e85cfa62c018d8f349f_1621648765525_0.33206400723838714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.170-renovate-internal-patch-446b583e1a89b9f71c8d4ec45561dec654a34293":{"name":"@balena/jellyfish-sync","version":"6.0.170-renovate-internal-patch-446b583e1a89b9f71c8d4ec45561dec654a34293","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.170-renovate-internal-patch-446b583e1a89b9f71c8d4ec45561dec654a34293","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01856a61a388a6b2feb2cb57adc332d333a79f3b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.170-renovate-internal-patch-446b583e1a89b9f71c8d4ec45561dec654a34293.tgz","fileCount":24,"integrity":"sha512-m3zCG28Qf3FDnmFS0xoNI4Rc94NXTq3IvD4dYXVd0sO2t8k+4SnpoH7HFRuhKz7eNJgCP5VphOlUZQhr1OlCQQ==","signatures":[{"sig":"MEUCIHoBGatvzU6Z1/iKYqRGo0nQkQRyHxBIc3j69AP6ds8+AiEA/jOUnYUy1Elp5F7bu+llqKuy20P2a/9yWG5AjRVg9bc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162921,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqcwYCRA9TVsSAnZWagAAvgMP/RBZVZqKP/EYnq/LKyJL\nn0NNd5lNM7odtus91lIwo1Se5LieTXLsCYum3WnliWoZanA/98uM0Iq+ifcB\nZ3nn5iZSccBBAjj5oA2K/i5EumVUHgCPsB1kLjuyxzctV0OWB5UtchW5T2IK\nNgOkLlRxViGe4T8enUAeW1qj084vEdAjrgPWA/eWKJPin+L77ui+UvmplBB/\nUxPFfPQcsEtA558x4dS8EWMk8H8zU2Nff61G2CV825iBRmYk6oikvSvasYqL\ntF/ovJD7AyYWrxODl0JxpDFMtnynA4RPTCadKR04K43LFLLAyH680upk/uOg\nHaO3juPh5ldN+cnAhLrU+hXGA4REc1GzDdTRrhTOXh1sRVR2vD47J8S+LRKm\n6OzclNtjOrQAD9T4AOdViNUolLrCVEK4urjwz57ypDiK6njQcqITknkPJ2JQ\nkcbwvT/Ry/gGX2NZQqjhOT3nE8FHUacyIMaMZBE2NOuUTMNwQr+D8i2vRyU5\nmYiu8wwqBoWb9Tf6/3GnClDgw/1NP92rEhBLlwvTiqytV9wSzjobA1OSS+4H\nf1EhV+atSsk6yWlmcPTRGrkbph2icGHgLFRrs4B8FVmNfVhNhouyjwH8+AXE\n1U/b/BZ017u17MiArMHoAwGo6o4avh9s3ztsXBfuVV5rx2pr9nivH272s6xR\n2A0K\r\n=qxKh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"446b583e1a89b9f71c8d4ec45561dec654a34293","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.217"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.170-renovate-internal-patch-446b583e1a89b9f71c8d4ec45561dec654a34293_1621740568379_0.8431946889564677","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.170":{"name":"@balena/jellyfish-sync","version":"6.0.170","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.170","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0fdc34421116600de04eee86033fcc87d1189949","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.170.tgz","fileCount":24,"integrity":"sha512-BJIgAr/JPc1VOH+1kdmxUbITiL68/MCffuo8Oz18E/qdK0jhWGCfli9tH3mVhxUfNZY63ZiukSkFknH90tOJvg==","signatures":[{"sig":"MEYCIQCPfEGMIFyyPhaM3EQDr4Cv3Uydbkhr90QIzfrIKKKVNwIhAJFP8+Ep+VdQt1QGanT/LrgcINhzPFBsSNBgNwQXRlTd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqc0FCRA9TVsSAnZWagAAyYIP/3zeH8UdJoEGYB49ELEY\n1mESQvurO04NRVqqROs7NkN1PRtP4IbIrzYaxvmllwtwrxu8GaJdmltXZYA5\nAWzRQUqXYRT2Om5XQlTD5+HRTbex0RIqpyqc1ChGvhu4QOHicQ1U4IHHbemj\nkFpA2xgg9QBrGiZMscuOC18tINDeQSGbqVnUeyhex+Ow3piihBUhuqWVYov2\nwh4xHaZTmJQKsmWLbL4fvJEMrqCz9kSplxECrQivAWLlKfyPTRk3YXE/3LdZ\na+hmiM/5VWCACY4gOi1j2hgIFrGRKSPNvwxz0zPQgIlXmyq2vnMxSVOEso2f\nmzdPOLlpOn9L6gMyBQnanWm2vuERL5RSMc6YYMj2qCUB170pqTG+Llee9B4j\nvxpFnhSgOSWCLsx/msjvSkdmqIbT6BI27dqZ4gICa55CK3V0NwdHzxZbSn3m\nIMeA9xHlHCaDlsb/XETdm36S3sYxr6888CqlDEZgJ0jsbAkpLU2Jc1QsLmsi\nWlW9n2ufA/dg/3Q0nvAQMJkBQLsmB3cHRQF7jTizntg5eV+fMrlYbjCL6eGE\nre7p4nZ0Q5h5b0nfTpggLzgx1i+C14BlvbkCQxro1w1M+SjodVP70iYsuJCX\nd9WV1P++MaAU3GjrxEgTGShqpaArZvRvSjVNSt/fRJ6a1bBq2IqeFCrcwEBw\nPAP3\r\n=cCr3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fdea0f4ec26cbe4b4cb19a25594c29ffd6b7ff9f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.217"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.170_1621740804971_0.8438225988579664","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.171-renovate-major-external-major-3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f":{"name":"@balena/jellyfish-sync","version":"6.0.171-renovate-major-external-major-3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.171-renovate-major-external-major-3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"efd0cb166d8593bb5e37daf7c5a470138418f861","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.171-renovate-major-external-major-3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f.tgz","fileCount":24,"integrity":"sha512-3gGHMV1l88pGFo/r/oNrkCLeHGjx4TlYH7HHIgRA1xXY+Wf3s6K6x/PgcOjeMrWc39XeuFgnoTVJerROcg9gLw==","signatures":[{"sig":"MEYCIQCWaWW4W1KsvjrqWfx9fSf2MHRjQaGJ1J3cFgMspIbaOAIhAIfirhECGvaG8XAbhtFGNzunEsxrTN4Jf6gDT7lz3Vhl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163010,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqc5aCRA9TVsSAnZWagAAuYoP/iKBRxe1mnZQlQQaJIp/\nERqtDbtbY3uk9SilIapMcakrKn+bLrW0cieoINgNh85kkSe6Lcb0nGJyZjI6\nH5Ya75hovZEYl5efjBSiYW4udLVueN9stts8RutZWpAJ78SHbSkdSSFWBDnf\naQaA/HkMPLyouEngDd9tbvKydPabN9Bp1JZFiNawMYJWI4uuCU8eTJeGiM4x\nf1EQupqZJGUdblQ5vMm6qqO1138XGpJSDqR6pSvsIDXH8W/bPCOpp2JYBKJw\nwRunx/yp5JUEKyGY7coD5/c1stklAsXOPMjBH/J3YFAgagJ5Ao+Epgb7z7zn\nMJuhcAVDiRZCHW6t9cvGtT/EXLplWXnf6m+ycXZL1THaiOZSepG3nej02HZM\n+n5B/8h1ozRYls5Nupot86f094HChizn6ZU/lEUHoyKSXa8PsUYZUs65N5+3\nKy2UvPWL49R+e2MYrlLkqsvxOl8vslLpmb1/Ca7zwuaNRGR+GUA+zy/+jN1m\niCRVVyJrpIEtbOMR9kDmt+yBN9C3UBzgGqaO0Y9S5DOA5x/KjAv/L1hn8zxw\nQ/XPT8LEv9yCmDfKdCcdt8zJgDdef1K5McHD+SOAc+gH6161LVyQQ6qv00LQ\nwivGlL1tYSJLdVYW9LL/SGpy4A6qNrGXnsqODEnLesK97CNWnezlWqRFkNjF\nrqgI\r\n=u5GZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.22","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.217"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.171-renovate-major-external-major-3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f_1621741145679_0.2704473594366932","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.171-renovate-internal-patch-3112f1ae14bd198ec6a551a54fe0aa41d504dce5":{"name":"@balena/jellyfish-sync","version":"6.0.171-renovate-internal-patch-3112f1ae14bd198ec6a551a54fe0aa41d504dce5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.171-renovate-internal-patch-3112f1ae14bd198ec6a551a54fe0aa41d504dce5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"66dd96eab9d0ed01140462d56de9e18b3b076512","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.171-renovate-internal-patch-3112f1ae14bd198ec6a551a54fe0aa41d504dce5.tgz","fileCount":24,"integrity":"sha512-jM/ynzOFDGK58olq+7aax1pYLdPoHYlOEzgAw7NjpxdBqANwXBwIlpNN/0FDtllq/z9vJ+51ga9bVaif5weZ7g==","signatures":[{"sig":"MEQCIDSUTXjtQKQcXSECr2xJ7rBAvrBf+jc42Sld6tiP+InZAiA4iCdeCAzUaeejj1qt3AncqrFR3Q6Ag6EEhknaH339hA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163025,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqgw2CRA9TVsSAnZWagAAzgwP/j5vf1nyHZC4WucjILMF\n/2uhYP5TH1KE3a0cy3nPPFJZc4PFtKzuaSkxBIsKprczCjkwbq1HPC7lBuUq\nXjUNesalGZ2mqXjBqRMfHFHy7WwZp2Eb6T2eo5hRsOPubmxK5KvoKcPvqXdv\ngsKH1RJUHFu2MLtLJTDExFej41cKMMmtG7n1Ee6VMo5S01OJYwKTZnBBZFhf\nFdhZV4LlbPZMYBdTB91g7wuCjq1MikVmdfcrvpk5z7hOwwIUc+RT5cgc+XV7\nti2Gs+CktpoGIuSmtNirCFHxrEqvmjVbewwwf2ns75DqGm3ewMQ8nCGzSaZU\nqzznm8hUe46yFL7FAP0K8TXjZKMF0TEU3BwDx5HvrlOPhezUjXJepfZfFyAB\nLZ7t18+wTTIAbOyVzms+Rru+SL/kI+bHLOziMW5KS1zI7r8NH5CkwiG8zkur\nPFCAEhmWNcGJBzb9kfpTiJvW0tzM322fa6dQjaBB2I7DhNrJrda153D5n7wh\nbm8SNT77KuYkGOzgmhypYQrLu5oPvtX1gHpmH5vkB68pbKklD3Mf15wthIGf\nIho1DDcKziBfMnXisQQqxELM+jQ70C3IxdMP3cjxFf1/i7CPJCmgmf7523cK\nwCLwhjAO/KeHijWRuLpTyyrGeTUWcb5QkYe4CCnFEI2rSn/SIxhBik5CLjpP\n3fJe\r\n=FVSg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3112f1ae14bd198ec6a551a54fe0aa41d504dce5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.217"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.171-renovate-internal-patch-3112f1ae14bd198ec6a551a54fe0aa41d504dce5_1621756982080_0.2988980392055913","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.171-renovate-internal-patch-ff4c9485fa1f99d3d0e6316be381b03ee4039d9f":{"name":"@balena/jellyfish-sync","version":"6.0.171-renovate-internal-patch-ff4c9485fa1f99d3d0e6316be381b03ee4039d9f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.171-renovate-internal-patch-ff4c9485fa1f99d3d0e6316be381b03ee4039d9f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9063bd4c11ad14e6b2fc80bf932d70cf4c86261f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.171-renovate-internal-patch-ff4c9485fa1f99d3d0e6316be381b03ee4039d9f.tgz","fileCount":24,"integrity":"sha512-b17qF4k1KayBIYJtlFhLGInCGuQe82Q22iBh0T/m3BJhZtkqgx+DAvQlRsSvYlFltiBdAytAiernbcXoiuQeGg==","signatures":[{"sig":"MEYCIQD9PftgAZy0WyGSFjWUCMpbUrRcb60j7h238arbxS7yzAIhAIbTInK7mG4wIFFLk9UIhdFtvzKrJhB8SheqggDiixsI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqg19CRA9TVsSAnZWagAA3RQP/jURD1BM9gPIS6PGJMZn\n9Ouyq3hDV2qyQZBOCeG6ORQtfEWOaJIAD/zziCpWcsqx2bxaaF2/xo88XvxM\noJ3E3Fb4jlAI8qXyjSodp5EXs/kKwMHfAK7Uwxji5w7MVB7vheLO3e/NgzuW\nKpZfuykLARQltpiE1zLBpySBJIWoowLVz3j6z9gY6Fi0sg4D1Th5uOhEZSYq\naEmPqS8TjAFg25WmY5AfJwwC89jg89xSl1e1j8CRcYZuDyz43D9ijenoi+qT\n/y6V5cl2p238LYGB10WeCY741W/by5ROHUubMib2tfdo5rPKD2/ki65qZ2EH\nJyG+VKarRmrWFO0iDbBvaoWlAjmxudKnjFAB3U4Ta3tVSrXYooeZ0gQMWxn/\nEHARYH+RhHzwqe2IrI/dY7t/HT8+j3CYT/YGL6Ae+JF1pnkP+V4Ox1JSnepn\nsmS99o32W9mHAEIxiyzbLlTo9T+ZU4tkBBupErJAUMw5QD4xHpeT3oqGVChi\nks87TNobZYhxz7RI6UZwhRWebK8UOrst2kuV9fXijjzlPbyFgjQj+Hk1n0oB\nqiuqapTZPgHzbwFUxXLlBBFQROEt/xTDIqlj4Xk9+EZ9jK3KFl9VoSrmGISj\n3yqGc7XCVEA0FDmNAZKsY/apiWtYVj1pE1EqV3KM79ngk3EqqcsxPAYn/PlZ\n7DGu\r\n=tJeg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff4c9485fa1f99d3d0e6316be381b03ee4039d9f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.218"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.171-renovate-internal-patch-ff4c9485fa1f99d3d0e6316be381b03ee4039d9f_1621757309513_0.05545700980575652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.171":{"name":"@balena/jellyfish-sync","version":"6.0.171","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.171","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bb842db470f09c31fde2ff65e27279971eab802c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.171.tgz","fileCount":24,"integrity":"sha512-+wrviuNU9NijFrYrwV4SlC3h5HHjOsQP8tgvtgLHTzKPAoURxpHPx7q1QtNp7cvBFmMIzHQAhAQZVYuSJdPj8g==","signatures":[{"sig":"MEQCIF7ew2VOKj+8Bd2j5Z5ScAUCye59EOIsK1ciGIn5l9UhAiBAux3uy8k8KPb1wanFiFnTaEuT/kJbQHQn58vMbSJwlA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":162928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqg5tCRA9TVsSAnZWagAAh/QP/2UZpwad3HCnZIDcv0IJ\nzBdWNxujlFFiW/bO/KUuQpgB2kTABJV6LJGlNJShIFe0n2LxnrBbt9jTS1SJ\nvUvXwgOQsWU8sfhFiIcUY6r62+lgenG3h833RBnyUsEIRMpq5jbLDFETRBdA\nZ9RDdL6V4+/f7oACGIrNiHTOXUSPM8PbzX+pUgA+RevtfGEAjz6EqDT/dTuG\nS9m0VLmRnb8cNKFLHhoAm7rb+/+ZpRct2w2mJHaFNUNliI2jRzdjP8HJ6hEK\nMgbHkOc4rzLUOVXI5ulnsmSJB07MkKZzdUsUWyb0d75vK0CM8vP6vVSEp0M2\nCMVFUUTlirCDgwWYAIPjIvl6mjPih2xI1nN19O1Gld/PjL155EEdzI7F/m1O\nGN9eqfMBiaQJT1mZJGEavlsKYaWLqEjGIJ0B+Kyn7F/GJBaxaSyf1oGGZfrl\nqomXIdxQWVzL5BNomKo5tLqWb4498ueKIIz/DnyH5XSlg03NUfMVKYxi0s/S\nUQiwOirfKUYZ0SUf80dJYhs9xEm1+t4//Z+mX++5EZU4r4LO1i+Z151QUdbo\nrzFSovA7F4Hk29s6EXZ5JPXVqa1tHuFnuurCh3C0JzKTHkmIlhuUECuB4LDL\nlLXoOC7pv027fVhbpKJLDFUtvG7DWwdWwCuw5jpq6pvYYqGxaLAZ7/Ivcvsq\nB9Qk\r\n=HhDX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d943eb7288ec145434d126b9f3ff8cc16db50f00","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.218"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.171_1621757549501_0.8189824108089512","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.172-renovate-balena-lint-6-x-9611710409dc2a8780fe072603c83aa33816ca27":{"name":"@balena/jellyfish-sync","version":"6.0.172-renovate-balena-lint-6-x-9611710409dc2a8780fe072603c83aa33816ca27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.172-renovate-balena-lint-6-x-9611710409dc2a8780fe072603c83aa33816ca27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d90a05e073cfadf1b48d9b112b111de93bb1f9c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.172-renovate-balena-lint-6-x-9611710409dc2a8780fe072603c83aa33816ca27.tgz","fileCount":24,"integrity":"sha512-je9+DymDDtOUowqT3qyGYF6tjE8ptVmUt35oBnVnLc7VisElDuOJfQJ2fW6RFpVy0gZ64GxOm4XXRmGVmCMu+Q==","signatures":[{"sig":"MEUCIQD8EG+mF1UFNUMO+sNojiBVVFjtr75URfaGtpFxUSdqbAIgB+dWCZulHqjwJQLKONV6pIcEtKI/tkaBUZEqvJ3XiqQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqg9lCRA9TVsSAnZWagAA0ZoP/0J3DnGWruBEt9HIhv2y\nJBVd+kx7WDMK3NrtmIYK4+E8OMSa2Uai5SCkd5SwpDP3RvUVyBP7Ukn/YBAj\nwxU6ZeLA4TmFA5A1sEu2FRMEAIRAh43CJkCeNv+tWHNWukcyn5tnC9AJjQjH\ngZoEnD5RIVmuOl73fqiX3nrUdCeHwQfrTKUkGDqx3Q3qqQzpioVV02hPDnUe\nV8dHrXGFYNTLgpdkWK3z8yg1j12rfEuAqqmg1bHG8Wji3FrCQRZ6/GOhYyeJ\nP8fDr+WLW75gaRyw5Ch6btIgxTpiubTPcTi7Mjpwv0trs2UBq7BVQ6v0hZXK\nExA5TlUJmjV5NgZxcuhpktTSy7JsKguhZ6DuNhQGOvSBdjgf4pV+sLtf3qZ9\nYEYhldMaiOw8VA5gR45lIavH7iE6o6XOnbH2Bua9rQ+LAAqXK43w888B5nny\nPvx/gYh1hIYzMZh/+LhXxjS+CzT4spXHSG2x0hSUhRjd9im6mk7hk1bj5yOT\nhQQELiHUjktZPD7ZdWB6AcMaZOA2FtpewvB03dU7Vsy72JrpEmXX8fwM0Ogm\nGgU503iQ77JXPlT42uBc8asC4U26C8JDFDq4L5ycBf3lOX2QOhgEE4K5+fxh\n708pUXsysb6xWV0pKKBRBa02/N18tzLMKFW0EHzUrQX+ASutOHicb7R3gSnV\n4qCv\r\n=NMz+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9611710409dc2a8780fe072603c83aa33816ca27","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.218"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.172-renovate-balena-lint-6-x-9611710409dc2a8780fe072603c83aa33816ca27_1621757796211_0.3403001600066937","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.172-renovate-major-external-major-780b1c5f912ad0e2e2c1ec486a20829151373a0c":{"name":"@balena/jellyfish-sync","version":"6.0.172-renovate-major-external-major-780b1c5f912ad0e2e2c1ec486a20829151373a0c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.172-renovate-major-external-major-780b1c5f912ad0e2e2c1ec486a20829151373a0c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f3ff044992a7c68f3e84d676247960d175cf617","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.172-renovate-major-external-major-780b1c5f912ad0e2e2c1ec486a20829151373a0c.tgz","fileCount":24,"integrity":"sha512-yjawNjdGHwOsLezzMeIIEXUw39tajF5NiZLh0DXJkZ6SgRZnlPOGV2fjgwhUQDkQN2CP0xwhE3UZPatqFHRQsQ==","signatures":[{"sig":"MEQCICKVUkKnZOh3YgixpyYSfE6agVI/CjFy/wq2LMJpO+0RAiBtcMbp/weNZBmyzJjzsEQR1yYikEvZskyBnEDneUIQ8A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqg/YCRA9TVsSAnZWagAAWNkP/0zIPvQavgjXyZRf4yWG\nTZokJvAiRfKuOG/9rla88xU3Fy7za2hNk9hXPin0LwFk3WrSvt38lIMPeFI+\ny/Xhjvxz+X465JXv4gQ1W7AjgvhHyHvsbqoNb5sTk02cJp88XjdtC3CZLxXE\nJznRZM57Iff4hVzbhCE7KX/Hr+Zu5YdVzH4q+JKyE5dLz8KQKDOiqG0eLKCR\n8T/qnLBifhftxNS/FA4agGmHr/i3b2BfjABiWL22wCP4exxdcLMwpPtEmAnl\nOrKUe0i2BDWQVUnjYujDiLYpNdWHSSXFzsiIrNJ9hVfZKl2sBX+6mjfceCVc\nmUXxhOMcI/AeIHhj9g8X+AxIO48HbAx5Ja+uETlKROeqwZp2YpHHoU3nuHqj\nErub+3OBCFs3XIz0vcWfJCbXELKFOVFl+ULabNQ5tteJchj0G+e8zKXzczId\nhVYsjGPXBb4e5bAqS122vp9ZGq1AlVLMOm5nNHdgO8FuiKuFprpQTflVymzl\nU1DAFEXVgdixe8xUAdqxRKBDkWae8LZ3fryI371/oYbY6Rlr5o5it17Nt/YA\nui/z070JIAmX6+lLM0mOhXeJ8AhopQGYogvAviXqLY1x23fT+38kZJn+cg67\naITCi3Q8oIHHPISFEstisP7yqoAJ3J1XkN9SRXLWtipYSE2GF8qkOr9MQyRS\nwZEC\r\n=Yibe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"780b1c5f912ad0e2e2c1ec486a20829151373a0c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.69","@balena/jellyfish-metrics":"^1.0.218"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.172-renovate-major-external-major-780b1c5f912ad0e2e2c1ec486a20829151373a0c_1621757912380_0.14969690089539656","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.172-renovate-internal-patch-a5bafb51639495ee176776b15df33e2955ba8425":{"name":"@balena/jellyfish-sync","version":"6.0.172-renovate-internal-patch-a5bafb51639495ee176776b15df33e2955ba8425","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.172-renovate-internal-patch-a5bafb51639495ee176776b15df33e2955ba8425","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4711f3b20879f1d696980a991380876695203b93","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.172-renovate-internal-patch-a5bafb51639495ee176776b15df33e2955ba8425.tgz","fileCount":24,"integrity":"sha512-6mJ4+ozB37ZKr4bmQzgN3qxWUgEEVVPdfHT/gvtbtJHe/TRlpJr2vYU0KQmbi9bD070RKf8KBRzSSoYKVm692Q==","signatures":[{"sig":"MEUCIDBFHKf7vgpACZqxIvltWXYEjhzGE5XyYbSczTdYi3AqAiEA0YESgWY/43mcuyDUSJgCdciATHed+g/atwWnJ1b1tI4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqiVoCRA9TVsSAnZWagAAJqYQAJgUXkN0ykeRYPIt791Z\nzdwrPHK8QARnJYekToPhYeU+82a+le4ylQLH5qRRZWBXTes5xUBOk+RLCGq5\nFpog5q8S3XptibLaYSMZNIKybc4bJUDEuAjiZMXPgEVt4FHCIze+gzvPzmHa\nPiomO9l1wSQnOh6qSqWcXYHCvkMcJbeeDoKbeLb20IJokhr5sqUk+KKjoR2i\nKWaAG9x2AymqBVQwf6qreh5V7LNq04TuQntk3rlA/wb8ilkSjs63SRS8I6gG\nYjb2V5KUt5LFTqhBFogA6Llk82j4TWAMrXbv9s1tE1fH1zayGi5zynRKg1SL\nQXsT7vy9B3kolXVF0KVoDQHyb5Lr/t4vx/nitEaVjw7Mzp37+/+KAWOCtJ3N\nofdyHNiEWZS7yxFRPLFzWDsSodB5bfQ1QgDNiwXuDDCi2JRK1lYCNHv1yj5+\n4XgaKZW2+nQVQeKf1APp6lcSFtXQjLKNWCgY3TKRut4i2Tc0BLTip49E1SVR\nZjafbX64exPy5RbD1mTVZeGq3shK4hSJ2zgxfZOtpJbUSUR0+9HNYcQuy3a8\nAjC6DhnpKHjvmzvBQVF+9d82a+IfHvs84YsNWSAL3P3su+vaNKXAkffViJOw\nItVAXboBRp6ZPWaG/Hb8sGEoznm5/9jFMGAdcrUJDV0z+ud1a7DLpRvXpovm\ndzDg\r\n=qsSd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a5bafb51639495ee176776b15df33e2955ba8425","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.70","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.172-renovate-internal-patch-a5bafb51639495ee176776b15df33e2955ba8425_1621763431607_0.16613847600953346","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.172":{"name":"@balena/jellyfish-sync","version":"6.0.172","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.172","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88ff8820ef8ba0d5a2c64ec23d31b12c0517655e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.172.tgz","fileCount":24,"integrity":"sha512-KZkh8LGm9xOsrXvSDAzphw3sG66V7Bsgt9gJDETz0MYRoATfrZjzFC364wGQwUoCt1zdB8p2/Whl58huwSZkhg==","signatures":[{"sig":"MEQCIHfFh3cGdBoTJLRX0g7PkQCC69+xZrQ5nyOfzs1d8hP/AiA874zb2tgMMY9xWuNJRmvBqGAdvfRtTGaQ3T56pD2eFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163000,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqibBCRA9TVsSAnZWagAAA2sP/1nlTNiFG8DdMyiScEA7\neBJ+UmtgM4rjtBLJWejNnYiSr0MA3METu9YwbBtU2RWn47+F4j0GZ1c2DPPg\nU5z907aEGkn0nsXYJLw/x3nPCvmB3sNOXySuSunQG+n4o3hoaQFHzntN4UBm\nLp2tpiwIPqa3R3x+wgoVLeSQgdIPx4asmt5c/CHFtM6/bt3xy04JSRA1v7vL\nSKw32ytFastOnmmo3914qZAlu2wUiy8x1IHZ4yHA2N1gLHrdXkSkgl+Uctmw\n5bas2Cvx92qywnYTN8B0PyalIJzPcgU55VgZ1XV8+yHOFWGAQirHZBpOrzuY\n3D3IwLtOUdNVBezshuSrmay/01HSMQju7nhGBqNGHIuw73zIqoR/B6CJ48Q5\n/Vy+o0ItEoL67QNLMqBAztIygoKd5xBHD23ZDZHysmYzWUfO1U65tbekK54A\nhLPOFteSrlnWNbgAu0PcJQmlYd8DlWKbi+hAfSxbsp1OniufHs1d91dF8uht\nJL5cWky3UtYQrynHVZbWlpciint2WDu66I/pk9OGFIN9W6Q8WzPjAWzhfRpG\nUP3IP69FuTp8zyvaNiTGzo9+xqTAs+40pGfUPOwuwJPtBHxUeCs6mZmrKLj9\nWe568hiB69ztAYtknBO2f/YINizD45M9ckBVdyqg8RzXDZn5mJqqd16K+q5u\neO7u\r\n=9ulm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c3abfc9c7aff779ff87ba1c4896e135c1ee7ccdc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.70","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.172_1621763776752_0.9083993255048566","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.173-renovate-balena-lint-6-x-41d2ea8db456a4370e2ebd674aea480271b58fd6":{"name":"@balena/jellyfish-sync","version":"6.0.173-renovate-balena-lint-6-x-41d2ea8db456a4370e2ebd674aea480271b58fd6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.173-renovate-balena-lint-6-x-41d2ea8db456a4370e2ebd674aea480271b58fd6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6d3e1f87d7e38bce6eb2b82e489e6ecea38fc57d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.173-renovate-balena-lint-6-x-41d2ea8db456a4370e2ebd674aea480271b58fd6.tgz","fileCount":24,"integrity":"sha512-0BIK7SBLUaPM8SrsAzC3uO01LztNB3yo8PEolAsrkKOIrWBuzO/aU/RKkqzNvmh+1u6JZrBSTv/M4hUhbDXdCw==","signatures":[{"sig":"MEYCIQCxPtJv3qEsslWot5Cn6+zcp3hUV9gZUSsBzeYBRep3gQIhALleb1mfShZB49XWGmWpaCTubw+lYA1P71SRfrg5dYOC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqiesCRA9TVsSAnZWagAA2gkP/AujlxG/O72t6/LmUrQF\n8Cz6MYnSZNV9CcsRij5sYkUHBm40mw9scjB28SQieIVOSxp+fmkUc4pgt2jI\nlXufYyhkchB8plSf1OFk1cmzvXYRVKdlo19qTpNBM5ombZvCtvKJuNe84oUe\nid3faYEoXPzAxxEUDHCo45ytbrndCOE3gd5dI0vtk8X+yLFewPPj5AyFk5cN\nWIQjlFgj4TLVEd9BNQwzgV/GtSTVrj5KIz39LukyBLzIEyTmD+PaiVhUAMnQ\nLTRSeYXr0b85PcnSjlLyy9IG57fVpdsDmqFDGYzjeopa41DZPPMU9+gLRBYT\nZII1kWbJ4VY1Jl1OMC5on72E+hwk9PsdQDnRFQzdGWulsg/X6wSoOWujn0+F\nxeCHyRcBDB0HLOunFixOkwwE80y3OTTyBrlvpBMCL3X6GKZfT3pB+REgHubn\nyp3Ujq+Lm24Bq08pOplbH4iA3O2BR2M5xT0lR4U1DyzL8LcxmUTbxlETn4QO\nCTqyBYKax2LXcFIqteC1ziAXqLRqZWWayWCkUIhSZIM2mxzYMRH3HtCPWSxt\nVzzd3He63Ey7yvmBjmRWcUPbWWvIJJN0rDcxU/L2On9rKYvO8ftQ4BHgA6kn\nNJIHCJfVcZ2vh+TONCiOWj8nHWSSLe2MeQrKepAqfB7+Q9Pkgvb1m6OaRMAq\n8KwO\r\n=h8gE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"41d2ea8db456a4370e2ebd674aea480271b58fd6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.70","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^9.0.2","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.173-renovate-balena-lint-6-x-41d2ea8db456a4370e2ebd674aea480271b58fd6_1621764012024_0.2998015842070041","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.173-renovate-major-external-major-97f89e5d9b04e7255734116001c648cb829b4267":{"name":"@balena/jellyfish-sync","version":"6.0.173-renovate-major-external-major-97f89e5d9b04e7255734116001c648cb829b4267","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.173-renovate-major-external-major-97f89e5d9b04e7255734116001c648cb829b4267","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7082c2e496c78cdc92cf0c143cc40fc8efb05893","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.173-renovate-major-external-major-97f89e5d9b04e7255734116001c648cb829b4267.tgz","fileCount":24,"integrity":"sha512-AtWIuEbXiVyojWqNDn5QvZIj5khR+CO//NZV77WAdOk+4LtMaOsvJ9w81xL51Ymzz2PaWHOn5WVMZiDzdp7mzw==","signatures":[{"sig":"MEYCIQCvoWpXQm4QgepO6/QoAlw3/cfoi5lnd1UFR0xCBhAgEgIhANOjvnzAo4KoHsrrNnJQZ1RKH4wcijoRAcj1W4zzzsTr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqiiqCRA9TVsSAnZWagAAegUP/A1PLeIPaOw4ZPtC+OO9\ncSgopcj5tId8bqv3JEu9L7hL/kBZI818jUL9ue4qkMtXZao7ec/p73K0OBZ7\nYU36PBi3AbfpAJ150BbwYHVAySUHb8DuaPDDcm9iXAdU/pFYfGU70i+enTVJ\nIB+d/qz//Qd0YJ4DrwOGTFnQPAewhb42bPsYZx16YfBIH5WBZFuHtWetEHk+\neYCNkxSCJyAVOMuVViJVmLCizb4I6dmiI5Y1Fx/9XVfdLaKIROuGw4+mqfg8\nfsGPsmvGNjWdUyyDN4SSde/63gE7o/rFCo76KkgW2HYoCP31KUwnKXV+cezK\nRRDADQo1E6UQPJvsySD7Pk4tUFVxWY1yNMzkC534l+9ArGCgl+PEArTaCbqd\nf2n8u3NzlyMal91QKGD/+2uzMliYSesJzFuCqhpm39i0ILmuNAWb+MJPHFHL\n5cqLGiLd1aZoz3sUp3ULBcfS5Nc2skjUQYarQM1EgvHey8O2PhwA3rPXGc8A\n18QgQPlp0NAnTxeMsqE/GKVhQWSJUrpg+1Bb7dhkYB4PziOsHwKmq3bJmt8y\nfvDC63ZN97zxue5AoZ5aF86p7YyuQ8jgihs/MTaeUOR+EVFvBXFgVjoew/2H\nDyRGykuCRzhbpTGXvaaMThFoLzkrRWguD7V0X22bj/yDAQnDhUaLTRcWuk28\nAHVZ\r\n=Pffy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"97f89e5d9b04e7255734116001c648cb829b4267","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.70","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.173-renovate-major-external-major-97f89e5d9b04e7255734116001c648cb829b4267_1621764266260_0.16869094138303597","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.173":{"name":"@balena/jellyfish-sync","version":"6.0.173","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.173","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a2c136787d6476eeef5d6c6869845b167d36751","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.173.tgz","fileCount":24,"integrity":"sha512-MudGKC/JFLrU1U0ZiRpBbSZtKB2WWnkRNz/3BYK78sO2iYGryIgHhn7tjhI/ZI6mfy9bbWiT6ZXDiz3mzBYDwg==","signatures":[{"sig":"MEQCIDC1gOZYMVDfq9RsTMBM7rB8kn4fPCnrvhhpdZN9RaqtAiADLXz6AtpqqwvIhhLalLcyV8xNGV20d/ofgvZP36WJgQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqvoPCRA9TVsSAnZWagAAx2YP/0p3M4Rx3B/ngqtKdfN8\nA1wYLhE5eufhqCRAnBexlvTGpQ6CkD+I+m6SXT2xxExDrEuyUih+BXAKvNx1\nqVY1YSvHCWE75uZyPuPcwB25JWX3A8zEdwxcPmk9I+i21h34z7l6bnUn2MBS\nPqWlz/Q+UgwZUrHkrXPlEbPS920PTWAbW1YG40xREm6nICn/ellV+xFRW1Qm\nGh7SU9eCXX8kOJaz5C7AZtJnfDfnLB/BADaH+Vh9wfv3xdlYSWewDuI0p6Bo\ndQ0M7Zf4HV5DGSOSuYc1CDmRzJhrOJyXlaJtbpbIu93u0yz0FVR+jmysXarY\n5CyGWKlX2ecrug6K3YnmCnc1OA9crrRvcQoK9Hr20km/SaS38lp8yu5YRH6/\nBPLEDS9tvPtzlyeSXijOLootrHHKytmh2q+FlYgKto+r0gngYIfzpCGSlOdA\nzEt3CE3ngccBd+Kpch2ni7e2iKkH0HnaNouPkPMs2qSYyjxEltOOFWs7q6Cl\n05qY5jx/nlTWkQGWv3uM0dEw9bxRT4rGWBllGprONnUxV0AuRysYm4TEy+XN\nHB1U0v3bUAOA365D9KTLxRrgdvujJbcqWazrVzFXFPFDYpepAGygv+lwgao1\nzvoMLxW3OyPy0qrlM1NHykrrhPlWyj+I8EyymU0tXdCe+xPW1nuwQm1duHxQ\nFt9A\r\n=swtv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d46474114a1197c3ea8269c9ef7396cbfa879b5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.70","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.173_1621817870471_0.2164597476385821","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.174-renovate-balena-lint-6-x-b63329bd7c69e9dcbfc742be26165a8c7a74830b":{"name":"@balena/jellyfish-sync","version":"6.0.174-renovate-balena-lint-6-x-b63329bd7c69e9dcbfc742be26165a8c7a74830b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.174-renovate-balena-lint-6-x-b63329bd7c69e9dcbfc742be26165a8c7a74830b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c68a19c72cdb5483d7b819b0f44d9b92d079fa2d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.174-renovate-balena-lint-6-x-b63329bd7c69e9dcbfc742be26165a8c7a74830b.tgz","fileCount":24,"integrity":"sha512-rqkGffv3+//JM5ISkZyPWTw/f0J3okmoCVQV3Rra1pUdFxqgG3I6uJ8fzVKY23c7GJNO8mr2/NRJTiSHVCGAbw==","signatures":[{"sig":"MEUCIDegqMMt8+/bedgMbIOwlSEPP/DBan5eIiWWYBriCqt2AiEA9h9hx/aAcE2MEt/bnlzN15N7hYpudFTSZTFWrUNWU1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163236,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqvsdCRA9TVsSAnZWagAAFuwP/0jN1b4oO+wEDiPs4mu5\nJUA1YqwZKrMIY3+85izoAU6xtX+mq9z31GGQr3Owme1sthjR/8a2+yL6ZGGj\nVASbkIACrPpgrPgQhWBevMOI9tOFxWBQWGMSt3jhztAkQPd+WihcdcFuhr3u\nLYZaei1reUZraxj2NpIwuuEI/4r4vTFQoEN538uWTHqPh0ZttP23EUKdVQ+J\nj+NTFi9L9GErW8i0mqrfaaKDPQ1yVfNUpSYNLsY8iPqDAMNnhFG5Mcm0ktZQ\nUmUNR1KBmmXGMYc4UbcpdNZ1yxa1TtYS+luGc+6kZ3mu9xs7tps0VAd6wupl\n7L0BcpaVbbOvN1SA9migXwWH/rTRqBY+D6InXgEVMp9v6+gozh1uYT6qqWFI\njAC7esOF2ro8j2i8QHTv2Ctq268rvnXp1fRPeNKmO3xA64LnO5ePPWFLY2xb\nWjUTVjLA9oI58IBmfbusDvCtekHUuhtOSsWSb80z+yX3TgHWeXPlwZJDmd75\nBSSD55d8BVQfkGZ71ZrjKokJNVJXN412VOvsbL0UPO6Wp/HautteDry8tQIQ\nrs7IBmPpRAN5AfG/sOLsz1hDf6NVWPIbyZAmgTyoVt4KShfszBT8C/lDBcju\nca6IyxJ+5xL2u+mC04ptrAVqVRqvooiJqpBn36tFOmPnyQAVfiK6/337jB4w\n0QaS\r\n=z8hV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b63329bd7c69e9dcbfc742be26165a8c7a74830b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.70","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.116"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.174-renovate-balena-lint-6-x-b63329bd7c69e9dcbfc742be26165a8c7a74830b_1621818140884_0.07423132987495173","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.174-renovate-internal-patch-23445278627d3321694724a10ba458f9542eea36":{"name":"@balena/jellyfish-sync","version":"6.0.174-renovate-internal-patch-23445278627d3321694724a10ba458f9542eea36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.174-renovate-internal-patch-23445278627d3321694724a10ba458f9542eea36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01ea68a94f1601e52d84994c2be4755c715f265d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.174-renovate-internal-patch-23445278627d3321694724a10ba458f9542eea36.tgz","fileCount":24,"integrity":"sha512-3/MgodFJmaP0+3DudKblTEhxzgYETt5F45MWwyef49IphSxtVlnB29dwFAax0aBOvz1I4hbNsIemrMjCcDNjcg==","signatures":[{"sig":"MEUCIQC8gyAYyVDV7jD5wtGB+pvwXO7NZnVMxIJQt48Jq7ty3QIgZDdY2HjsKgDGR9nkGDiz2Sjrh2FP7Eg7VPHxOeRKatU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163220,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqvyMCRA9TVsSAnZWagAAj28P/jbnINRESLTnxGq5t2pc\nK8m+MnHWJg68jSuXIa1ldCIOHx9GHIqdPj4b9cIhV6gW+HxcEVTurfFvG27z\nim+LWLo9XGzPHdGZ+7bIhRcKObQNiqzuGyquHHjey1pLhi+fJb46r/2j88n1\nzMD4XjhKk5ZHn3MenzGjmC1WM7XHhPxzj6G9pm13SatI1PASsC/adUyEZ+Yz\nTIitnBInR0QHutPQ9TBA8g+05HUCboGJwqJX2OAo3F8PVhr68sPoPNbwb2bR\n4l+Ujgau0Pzqs1daUcaOwGJAjm/GSgHUyyhzlfOPejN60xsq07zRRFme4iBq\nZjJDKc6lzStqBSZHBKrJojP6t7PVveZdVWHLqiv5UOcAv7p5pnNrsgazqjHC\nEaflsRQVwiCBd+TuzmwA8qVF0R6+U/GBTPp1NZoIBEQWeC0cYVagnwIs+R7Y\nBwKMyfKLw5a6NwB10O0WgInucRJ7XRUak73wj9QDFgpjjLbeeeXeeiJAF5XG\n6OV2Fh85LrQ9K58YBE00tCNIebdkO61S937Konpik4jetk5KNK5JlFvgLNYk\nVrf8aboz/zAwo6lG25Y2cC2l/QSrNWdHLcwWqdn1W0fbBlrxiNB6bhrgZFtz\ncJkIYpODhxd/v/mE+DvkJVFkXP2dYXcs7vFWEfESg753IQtVT/LenQBVRFJC\n9hRo\r\n=A5C6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"23445278627d3321694724a10ba458f9542eea36","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.117"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.174-renovate-internal-patch-23445278627d3321694724a10ba458f9542eea36_1621818508173_0.46544820960412214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.174":{"name":"@balena/jellyfish-sync","version":"6.0.174","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.174","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"28fd60887c24807f1d1860e3893647f44347d72c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.174.tgz","fileCount":24,"integrity":"sha512-AGQJt9NFkWCozIbK+dekeK1qJS7N8Cia2fp7cfPC6RViX0rZm3wJbPTeKv6bLcgVEXhzr6lhzgv6B/PgR7RxUA==","signatures":[{"sig":"MEUCIF9nx/T4+5AOK4kOfYV7h2yBDZF6wRCAs6RE2Weu2OtLAiEAnKunBhCy7QzgKQSwZ42uyWlZ7LCGWQCLhAcn05IIJOg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqv3zCRA9TVsSAnZWagAACYEP/RUnCBl981sMWN/u0eE+\n0lEWZIFaGYJrjrAhcnyj00sQBmiOXB6RRom7copwW5Pty03yB2/L8k7rBv9P\n6ZSD3+bKTwVvMfDCND3kvsOZW8XjLsqfHq4nCaqSO+8SmCVhbkHH1rIrbHgK\nYJ7LhP+hjCtebSHl+SbpSDc8LUPuSHmCCzsl6XaXaD3cF0lisDbKFejCbGo0\n7wo3nkvpzYt4NOsJ5tQnJkL5HSwRq363tJw+qjlZHFtwsCeLwbvSaaF67npU\nEl1r2nA0VlK1i9t5dIkiqUPRNKvvmb3Zgi11c4y6pzZzfq1FMo2789Dt52Zi\nmM9qzbsZvKzGqSQlI6UiFwGbnNNGXI8heiTuvHblAxQYXCHtJVQROr7Qbnd8\nmdreDJuplPP/JmqEHbLAIUyn7ksiZvsKDZohXqwWmUDX5ZNKUMRCPTEZPikQ\nhjr/j+b9EOSpRm6fEe8WdLGtdOEbsoSxEvtj+V2YMk/rkBxlzm83e1KVDVhi\nLriyKNt+H6Gk+91/l7Donr8W4/e9i42gzdvzBkXi8TjNk7WNOiOuIOEeS7nx\nUlcfLCLOYgEZlCgdIpSpvo5SeQUR1OmZaYqqe+rW9G/4egtMwZH5hjA7hw6e\nhRTlCMGkSOdgvHlTa8acsNher0TYSmcnaf0LDr5lCAV6sW6WAwKFCTt3ayAC\nqn5S\r\n=UkK9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0c7991f400f033a0a53ed470d024e90fa0e78f86","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.117"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.174_1621818867434_0.6573380322739113","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.175-renovate-balena-lint-6-x-04d7dbc30089776a70e662ddbeacb054547cef95":{"name":"@balena/jellyfish-sync","version":"6.0.175-renovate-balena-lint-6-x-04d7dbc30089776a70e662ddbeacb054547cef95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.175-renovate-balena-lint-6-x-04d7dbc30089776a70e662ddbeacb054547cef95","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b2922b57609ae10b213dbd95b163978c51df59e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.175-renovate-balena-lint-6-x-04d7dbc30089776a70e662ddbeacb054547cef95.tgz","fileCount":24,"integrity":"sha512-fjJUWExv0m6R7krtoadWzKGAs4yfisgSjFddBwDHTeyaxirfzsadTKz0WGp3LMd9g8yc7RpbHz5YtRM1RYEu/w==","signatures":[{"sig":"MEQCIGuHGhaDSOjvkdO++NKeVduoWflZ1bMeG1/w3T9ngZc/AiAVp4YH2WsZBhDbnWisveZKKFmk9ahIsSGdbOiRNFHTvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163308,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqv73CRA9TVsSAnZWagAA5OYP/3xSU5UDFOwcRkO2bC3F\nUei9eM5uRlngH3Fx6C76eS2/dQGh0wTBbB2/QzzXxX/6i8TTxW8ebw1JXHnT\no05bQBXU6kcxXPsmeCED1MQSMyFi6TBGPy336qZHRV9Mm0IiRJ101m7B8lG6\niyW+S5S4aiJP/+Szf6l9bhtQ11hL3y0zkYNLSMOFuSeRPPwSkKkfPaOGzVWe\nnTKD+qbdHdjq+wV2zUsH6lOffzCgTDHzEtzHserJfGojpsv42dgRR1zkl7N8\nB91dvRrava1i6/tB62oa+r+FP9juCIKaHh8PeUHj6OKB+xjVcuRZRu2SSkBw\nFoe4mgAOZm7AJDvvwgJ5kjF+dXe0OgWurU/kKfR2K6A3UogyFadFSaOqK6OX\nDm7I86sF62eDLTM6wm00dew6lo2mnMW4RyfVdSUCJb0wQGtQm8jtumkwsEj4\nWgE38gThMqn0GQwVzlyM4MMH12uamhmUPANFv4RX/n7HZEfGYP0shwotAJIM\nFUbLH01tAvV5+dDIgniyQFACAcLWqIS1wSXs2P6rDZKpjq03ksulewP+lnb4\ny2c6TzykjLo1RRFAX+AkrGfg0HC2RNitoeWbBZ43THdRh7Nhj+0p9I192z3L\nMLj5MkbprYdqZA8UyOJRKqYgS1fBwtwaRs5sg9c0lsGJO+xyl6esiYJtFXD2\nuQBL\r\n=xhcO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"04d7dbc30089776a70e662ddbeacb054547cef95","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.117"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.175-renovate-balena-lint-6-x-04d7dbc30089776a70e662ddbeacb054547cef95_1621819127364_0.9348626222246572","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.175-renovate-internal-patch-0a7dd3cf406ed765fe57e041b543ff7cae1c6557":{"name":"@balena/jellyfish-sync","version":"6.0.175-renovate-internal-patch-0a7dd3cf406ed765fe57e041b543ff7cae1c6557","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.175-renovate-internal-patch-0a7dd3cf406ed765fe57e041b543ff7cae1c6557","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e09cfa5d06b6d6d54aa3b30a0303dd5fb47cfbe2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.175-renovate-internal-patch-0a7dd3cf406ed765fe57e041b543ff7cae1c6557.tgz","fileCount":24,"integrity":"sha512-WFQbot3yyolaW0JYdGYRiF/GRN6ZxOCAC870nC/lI39EQZBPNGIe2xdF6C+3vrvGbKSKlf4X3/mWo3kCVnoxNg==","signatures":[{"sig":"MEQCID5o9vb4Au7gNCvZYhe/S0GBjuxfBcMKsFpla9Ps1MJlAiAHlqngGziv5Ww0V6gMdI5NFjsMro7DO76Ket1FEDBcDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqv/iCRA9TVsSAnZWagAA6m0P/iMnZsnDU3+hMEOV3PHz\n1zMu+Q8An9Z3sPa8pYFwJ8uj29qRA5KDgLHhuPpBHwtK4TF8NhFj7zAXg2G/\nhvjaQ8Er0kGN7SrE5Tpgqym8nPAoTpOFEXqdOhkY7OncGSySD7QHsy4NAgmx\n+agcClKgaah4Fcm69NHwXf1HuZgDkliDpgJgrIL0XIwWxrax5gnYVm1sGtvf\nhDRBQVlVCp4TKrtVL+aY0bTFkpwJeYT4E8z8/nIMNNDywZX6/7ICShxnd3af\nsu9mUqBuTYrUU1ktZADQE+dwIftnB4gx5iJwOXSNxia24Im2PZ//HH6DscA7\ninv2tfhn9+LfsF7vbtl8Q1CiauwFzo3y9440P3F4GklXL8s19h4Udh0Fa7rB\n2kp5diIw6IB0eF2TSXMGSTsWOsePa4/nyhF63MmEauWFTkpLCmhykj6oTn8w\n0gO98fQgBX8vM2Y6S36rFCyz7Ums599I4inH1Ygjh+kVhxNTXMcgy3FO6k7e\nmby2Wq0Hu+VPYBOsYNAlL577CglDyPwSX4dunhrxg7/z6ceX7e3BEOSERNTv\nYS5sGOcJ5py7uXDMkSn6KO0qdP3GxaAEwIvyues72TX0nVVyTpjpRY6jjBqZ\nQ928LwoF9zf6lAqz5y+4TrQ55n5qWK4xxbnwXz/htRshmaO89dWEnYEmRQre\neTiL\r\n=NKju\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a7dd3cf406ed765fe57e041b543ff7cae1c6557","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.118"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.175-renovate-internal-patch-0a7dd3cf406ed765fe57e041b543ff7cae1c6557_1621819362436_0.21039938883503417","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.175":{"name":"@balena/jellyfish-sync","version":"6.0.175","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.175","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"718220c212f65795577fc98cce5e8469debc1157","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.175.tgz","fileCount":24,"integrity":"sha512-8aX5sDDsV/mFkPGHAywNV+LzYRr3R9z5mDzwiR/UYsXOc6ob5erIYq4kXbjKJ1iiLlpF3rwfnTTPbaPp9sLQzA==","signatures":[{"sig":"MEYCIQC1SA6F0yjK9NkWKDUCgvq40ncMReqp119Wj65JHUzfCgIhAOjsGDHmgK/LHKkDv/+SXfdDJThfr1ToBRhklCFC9O8X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqwDbCRA9TVsSAnZWagAAgcQP/iwilm6+9tVw6yg4R5ft\n6u7mxARjy/j6vzzK+//RgUFUWwSvWCJxMe5m83RZe1KZJI6dITxccNsgG9mf\nFP2lSnmQtY77MmDDM8CO5lNQGc2VTu+JM9KpcWOp4ZCNEe/7AUsV7OV9/PR8\n8bE31i6/hX5CAdWWEGZb0tlaFy/mPMFjo1R+TnRgLOQk6xtkE1XBwjsZryio\nJA/hj0QJNzFJolONtpg+Dcwb6v6iNB+2FW8ikhtuID/Ksv3ObK3WKkTsfag8\nqO6CHiesIdL75F/yZ6BXdHTbU20zy/1y9Q8gOo4Iv4ChJOeSm1csNVgMNhLj\nE+8d7LJAWssw9lkcMBJHNjhJfvBNL77fUCpRHX139YVDGhmO7wAQhsdeVrzt\nTK6Z27aApzLTsHGmixrCB7Ceu2hKLLOMALCyjO/g7FaLKAh2WxbAYObRv/y+\nz/8dfAQlyv/h83BytDjxf6zq779YnXS/1+BxJkR4pyrg5JhewMmKIJHRFjgd\n/TDED9aIK52wKdz9l76A5ARuKSYJPuFyvos+4YlYOmtV0Vv0Pm/tjbm+7fKJ\n3sVuxcwiDl1IIjQILsCn1m32Po0G6YUVifzf/J0lJ/t/kOXIx35zb6p4pT3w\nocT0uYC13wnsOTy7JgQo58QLVDD3tXk89TasDXFsQ4F8gFuTb1mUhAX8AlBa\nEan5\r\n=WIpo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"47ff0978cb4dc378966307a1d7fe3224048f1a37","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.118"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.175_1621819611270_0.7795540907235032","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.176-renovate-balena-lint-6-x-5c567318323ea74b8ef23be7e5d0348f84da97e9":{"name":"@balena/jellyfish-sync","version":"6.0.176-renovate-balena-lint-6-x-5c567318323ea74b8ef23be7e5d0348f84da97e9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.176-renovate-balena-lint-6-x-5c567318323ea74b8ef23be7e5d0348f84da97e9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0070a7e3369b17397112c55bca3ad8140748153d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.176-renovate-balena-lint-6-x-5c567318323ea74b8ef23be7e5d0348f84da97e9.tgz","fileCount":24,"integrity":"sha512-jmAtRpfKwX2Rs1J3KZUNMUTpo6a+YgUMZKzW4XsJu+lI59y088GVsqkPqN9Sa7UPSlzdpOMqihepGxzxY6rYhw==","signatures":[{"sig":"MEUCIFb6ibhtsNkghWaGqkq1vohF17AfCnyZylhnRyOkQIDLAiEAj8RtmCmX7nLAhjPyrfUUxmt8Si+n/WpLz5pe7HP077w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163412,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqwKXCRA9TVsSAnZWagAAtQQP/jnkRpbBL3RpujPOqzjC\nV/sFgHzygpb6H67yq23aRqoSvcxUdSGJ2ww1LmY3DskXNQbMCYX4iU/1z3dL\nkJImU3kCj2clXfP87kAZ0jw89HwKWMJh6GY3Aj1cHTuTxOybIKDIS4F0UZ2K\nLCwVc8K496UPd5YeN/g5ldtJWJAOIb45qibPsmmvo4cG28dm3nBojF9wCbC+\nxkwx6Qjhbk6YkPvsCQMX+ZxdrnwzQnWOD+EC/1hHmj47fTtPRsL1iD0SIAI/\n9lhTpXAmeZrl9d48O/zMm7owoZUaUxFEX7itn1Ksj8i8/oRdrmuTX2WMSLbD\n0gwXMHpuNFZlO2wkS/E+T50H4I2hSp3/j1MUtKy8Mr6A8VEGeb1R6dKqI+c4\nkcUfVFw+CTvCca8AH2iCcF++oYmK7mUcufVapa/vAI7ltiOjAKIJHoug0bc2\n/4X7dlv0QDUxZ+jJQf0QXk7c4AioQ4H76AZNKPPKKQfhN6T86OFgSDljn/g4\nTrsZevdmnTxim3ZpzR8oN2aAouprTaOPxd4fgf66JkOmP7uBq+3wKiRQE8Rr\n/BMhlevc8npg5LhOUjjHcJzY6gui91PTXEg+QkorCxy/j6U8VeZwferDoVib\n7u5MtpZvPVlBhGrRzCskh7lR5XUf3DsKof9Z/YcW+LMFRkMYvo7wBHwaJr++\niVV5\r\n=VqfM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c567318323ea74b8ef23be7e5d0348f84da97e9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.23","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.219"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.118"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.176-renovate-balena-lint-6-x-5c567318323ea74b8ef23be7e5d0348f84da97e9_1621820054547_0.8972017238678145","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.176-renovate-internal-patch-a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2":{"name":"@balena/jellyfish-sync","version":"6.0.176-renovate-internal-patch-a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.176-renovate-internal-patch-a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f79323c49c9fbdd97e0b815e3f935d73488726b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.176-renovate-internal-patch-a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2.tgz","fileCount":24,"integrity":"sha512-RFSTzb0qSSU+9JZpmFSsxSz9IYBRYu9Nb+xX+tW2OJvEVz9hIrphIzd63IhEhtAEVSGAwGpvHdZtjZAXkd6o2Q==","signatures":[{"sig":"MEUCIAYm6MKS7T8I68PLqtv5uP8dmpmx83zI8ElurV/nC+LBAiEA1KCeIA3fd69/NKGQPPs6EAjz29BLmjQ1yWK3fFNsH/8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqx2bCRA9TVsSAnZWagAA9YAQAIWhzv78tHt9fK+jUfow\nFgsOQqTwxadw9vwsjl5k3mF5wgcKp4PaHcA/w66FMPKQ7880E18NdF/vmyv5\nHhjolSFEXjAUVGPXZ9C4PIiZA/amUkKMYO+cY4zFQr3WIPQKbIHEvlZ+qSxE\n8FBSCEF7GdWm+UJV5TEIdY985nlEuTOSD1gpu27j2bRya9CV1/UvmRsxTekP\nZcfHil+66w2RDEV/gW/z00NxSrEwapmR7Erva7C5LSOvp5kWOpNsZWxckZaq\nG0X+WVFV/jqQKhP3HqKvTjiKjF25mEblD6TTVnislhLEBGF+N37me0nb/CVE\nYTssZHqKCaHQlbLvdgGylNED1dvnVASOzKsXbs4Zb5azVtXzxPY6e2LxaRIM\nNUI2UnGZ8Fwa/9a4W5D8rGyXf3C6qb2E+VeLsfsFSYlufV8adllvEh5scY3I\nmOZMvPyGGw8fg6MqQgHJJY/vYhBfCbvacrdkU+jP2rqnqR426ASgcbmqZ5YX\nRLZQuHZzBOfP/WmzIoBx/GedbBt4ms/jHhHSJHr7zLVaUlaZMjqHubt4OfbO\nFPH7SPk2uydpOsH1ob6IJoDY9uVZA0KAtu3LM9lqVoonFsKow9v3ks0t5wpK\nNfl2hlTv3Pl3Cek3xwXUn9MTD5g2ucLPXsaHvc7nNcc+oVGaCmohL+a1mviJ\nbouX\r\n=nqd7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.24","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.220"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.118"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.176-renovate-internal-patch-a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2_1621826970385_0.30351039380766553","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.176":{"name":"@balena/jellyfish-sync","version":"6.0.176","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.176","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"95bc0821de03f79abd7e9c384682c730752b7a77","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.176.tgz","fileCount":24,"integrity":"sha512-8Y02wO2xyDXT/xWLoiRzTVCMuH0d/CnKvAXyAdehi2GeiKBzA3zr7JzKyxUU9fVnVi7SnjnJ1da1uQK8JY3BiA==","signatures":[{"sig":"MEQCIAosS7uMIGBuhAfL2BEbJY97zFy7lRwV/nPGzqDGUHw6AiBRsDmKOD1ErxpaDLTa/LPiouXK88OREAMkcZrKXuKYEw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqx6ZCRA9TVsSAnZWagAAVJMP/2QO8mRIvDMuy6xq9Pp/\nyzmUXGrqiWm6V1e/TAdmmo9aZMKbmpLbRwtUP2TqrbEoDlBMtJMUh2E+CG7q\nCSL1fvf9ma6DUuwMKGcUSTj3GRKgIJL8jgSWYw+cYkegbKKaYjb00f8T5P7G\n1PJUQtLFgzhMUEeZT6tJHxVBXx2P2dLqQ+zhaor1+ofqo0ngS2Xl4vSBq8kt\nin9k1hUpng5YxxLlKFFpxBVQn0WDILJjENCUCEv1d2ExLQChpZzdRQg9RyJU\nrtfB9a0IrN/ZlPWfl6myIkyoHz8Knza+Wdk3s3hk1Jjpj9kgPzWwbYxYEiHV\nLqoeUNN8AsHvNHxkP8l3aO4iD+0rkJMOXfgwh7rNiQMNLOWx89VEMpLnx69O\nokoPrd7dJu4mC9vF4HnKeCtzyPviJF1XurbBH/M+dA82hws+LdxO9zN3iQXH\nimf2hW2Oa6JwRQb7bjcfz8ojGcC+ISEDhZ+BbxrROE+9og64xaz5AjXFI4YJ\ndnzi9Ro1X+Q6MIXnL+R+G8g5GRO7DDo8TsVEFC8kNQyljP2NUPjnygf1wNoo\nzMEQYntTzFzYs285pxqHFy9LpJHb2iV0GusEzh4VrBFgdAeJqLqRRTH0VPmx\nBxtwGv9moYbnzYpuHox/cB86ugbXElg1RBpzV2DJ5kIvPsOsCyaIhaVK5OGH\nq1Lu\r\n=zESf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9154c7a2973096449b4a8152f2f84ceba1b6e3d8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.24","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.220"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.118"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.176_1621827225254_0.9580617218868344","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.177-renovate-balena-lint-6-x-999735e79b319e6ad6c021d19296a30d854a429f":{"name":"@balena/jellyfish-sync","version":"6.0.177-renovate-balena-lint-6-x-999735e79b319e6ad6c021d19296a30d854a429f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.177-renovate-balena-lint-6-x-999735e79b319e6ad6c021d19296a30d854a429f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c5d158a48534e59aa3e2783743b03dee2475fa31","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.177-renovate-balena-lint-6-x-999735e79b319e6ad6c021d19296a30d854a429f.tgz","fileCount":24,"integrity":"sha512-HpQPdYCAlhDc2tnwvBsYbdSBpkjuxVzEJsSRnj7rtSugb55e2naz6QMR/yqx3qqAG9HIDpjyCL5C+Djcn8BeDg==","signatures":[{"sig":"MEYCIQC+Vb3FU78cT9yKAXkHT6gxoqJgEcq21IdID7JmGlzkAgIhAOCncmQiMIAsXaQpYywjKrJSiSiWMhL6fwJByOfWc18c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163484,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqx/DCRA9TVsSAnZWagAATmYP/3+DBNvDkQwrPoUAylUE\nWecX50COcoB1arKk0OoBSmWPc2qWiiYMzdJypbDUJ9uPiHfX6oeddFX4HQB5\nhixlOHxvMzlJ7hPjkpdD0Dwo4RIuwPQh34S+3tb7BYx9WbGvtrhKsKMFsyDA\nB4Pkabe9S68sRJtAQaW23AFAWdqwPEf7+qV2ETNGs0yivsqaH6UtS9WWaYlT\nfJLsf9SFYmn4XhQN9wS5hfRhx/DMcrzS03GDLv5azwUaWcu1tiSU8kM60R7m\n5odjG+KT8ITZu0lX9fSDh6/gOMqvUxvgEclVeY81ujcOCHm4GB9xDyLRgxCr\n7WOJmo+NwsjUltMmk8s4f14n8SAXr/fE+47I/QBAOs1chN5pr7+4WObwLNqx\n9cLnYBDIQzjGkBLUDse4nryp6Q+yYvxNiTDTPAaHx/JT3qSpQd2LhKdAzAxm\n5LFCG5FcbQgbGyWsILNR6cWFAiopshrm+bmz+YzkHYVeb0OeMeU+rO+/OFtT\nkPUYzwTzX3Qiswvq5kTB8AYU3Xj7Kw1ok3OkvJTkZZuBw/ptoryEpNeA8paI\ncSjMIxiOtefS97mJk6EEXa8M7i9wZYmxA9Z46wgYpH2SIjk0egym2vOYcyVQ\ngwYCKpYN2A5dnCsO1HW5Jgp5Da2Xo21ueQ0RVEPmjTzxDpcEIDlygwcya+8B\ndmdw\r\n=LbpP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"999735e79b319e6ad6c021d19296a30d854a429f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.24","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.220"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.118"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.177-renovate-balena-lint-6-x-999735e79b319e6ad6c021d19296a30d854a429f_1621827523303_0.06145746470789515","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.177-renovate-internal-patch-9e848df20fe77c774d2cfe3071ef186c8234818c":{"name":"@balena/jellyfish-sync","version":"6.0.177-renovate-internal-patch-9e848df20fe77c774d2cfe3071ef186c8234818c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.177-renovate-internal-patch-9e848df20fe77c774d2cfe3071ef186c8234818c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a3f36d96c0d3af47104b692afb62b44c3b3d3f4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.177-renovate-internal-patch-9e848df20fe77c774d2cfe3071ef186c8234818c.tgz","fileCount":24,"integrity":"sha512-MfqDVmk0DWYsYjEW/KfrquSGo3B/CqxXlANlMr6bd3xotWh+gy7J52iZBR6Y1Cs3ZpfcyjXUYa1BhvY65aWx2g==","signatures":[{"sig":"MEYCIQDPdCiP4rXmlZnBRYgQ28nh1rTzZ6cZqKT5zvgkt4UKngIhAPmIPk7AbijDKw16pzBM8Ei0upW0Gu6FlZNxQYiOLvtZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqyHFCRA9TVsSAnZWagAAZ84P/2Rvbdilq8RZiOlWyc5R\n6RPaLXJepBBYxidQ0LaOF/4hVWJatqd8Un7bpjvEumkhBMVV8ktXbuRZtvUo\nSjabE/aConxECoBCDNt52Eq6jUM6RvGBlD0zMOrddZ3flskaWxzeEyUk5TMC\nTbv6+PDzvTQ7OhvOoEHo+9QiFhi/7gFGkrVVoQDUJYX5BLhym+maTGHafNAk\nhcecgO6oAq5VscJnGX73eRowKAuL7cnR0Jc34HzqUG6Z73SHdbigTjK79Wm2\nwBSeh1nAxfGC5CPhdq+L4X7kPlHcbYNIoyuMycJrKFN++rFIlXfyoLFBZef4\nFsoY3eyHzCKvKPTdZuddGEyEnn3GwLq9ZgPJEvkIoREBnS81Pdp8THAqhnDZ\ni/j+KSPtpCELJD27JcVp2FTKqqwOIEkiWkJ1yuAEVOJ5y64zqz08WCmt3sRR\nAlpVblf+7I1VTWfoIBcSzusXsWSbr0eBQHmDbjhggqGVRhUevefthDkoH0IU\n9QvSbCGHwGQdqg81JBh6wLE0s72suIzUqcO/nHutfpphrPXdZMu88ZY3DD1Y\nmV4sOJr8ti3qUPTJpmENUBkcFeSiL13OtIs637CzJVdt5c1+cs+fCF4nhDai\nlNKC59zE20DHRV0zu1UYWXxflRN4iy4MK8pWh1iwwxYxi5Nyej0YM5bNDxt3\nI+D9\r\n=6lEt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9e848df20fe77c774d2cfe3071ef186c8234818c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.24","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.220"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.119"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.177-renovate-internal-patch-9e848df20fe77c774d2cfe3071ef186c8234818c_1621828036771_0.6278766626409567","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.177":{"name":"@balena/jellyfish-sync","version":"6.0.177","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.177","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"833465a6792560877f4e6193671aeae9c6d9f7f6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.177.tgz","fileCount":24,"integrity":"sha512-kGJh9J/JFB4Ii/EZhQI0VKKs3uphtRwCoINKHELJMUNPUogvDXoSZ9GibFbyv5Sqft4G22rAHhwBbTW6UKhhAA==","signatures":[{"sig":"MEQCIBorw3wx58UyZbTLZzLq9GY2mG9rB7EQokWbjt5RlDCyAiBiiPH8JkT2jgtjem0uE52olZOqKpehEkmX/ng5AhhdRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqyK+CRA9TVsSAnZWagAAexsP/3KcwUeLRet9hf4P0nPf\nIuvdqCEjHuXFbe6R8P9mltbnbZFV55HGh7QY3LGOGnnwxvZx+P8NWyfsMnfw\nsBEf5C5CjP2Y4O24hHb3hfK6MNZjzr2U8XLMGyNBXrpLweA+H6EEE7d2Ipsv\nf0speMipARIk6kgIWcm2CYnildz3XlHBLBcWuPhUdjma4jXuXcI3b4f61jzn\nVGYrcT2ikjJ3iS8VDzlpbUSiXTeyNL8UwxXGkVogP88RO09SgbXF1MU7lH37\nmIW3QxNsuOZ4yL/702MYOOlcgTAJy0gysDhIjbUeBZMXUcGrE0RR9ySOzjeb\nRqsbAuxUMeAdaylWMMUSuBiQa8A8JwjbgeaRCLAGEtfUmYcXtDCz4wmY54OW\nkPT4F0kip8b6BLn6L79m4Aqw4oxQX3hIZahEuaFj+Xd6WCTvyXae9ScuD1Pf\nuZoFjY/qm2PHYDrHled/eO/PxA8Lw7z9oGL0mqS8eO4rjgovHMqKxxVyJfKK\nGzK4oFcd5XyIreoNEwodOCbGbXgH6+32T9r2Fy9caItjGFSrtGU06Pe8fEe2\nOjI5BVSZxJXVCt8vcpQtM6cPzO0FbZFCGpBxZZuOeZ/UUtIXnjcv2smeZCa8\nzKvyNQdUbFO9+1AbpuoezMwIYgLNNBseRE1seZgONfMeR96OiMdW8KppNz0T\nK+6g\r\n=OaTg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3f3f992fa0c5c4fa7f7f4848ff48a9abb01d9736","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.24","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.220"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.119"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.177_1621828286175_0.6006342142683689","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.178-renovate-balena-lint-6-x-1405e702f8975207550f856cc5513f1166609f98":{"name":"@balena/jellyfish-sync","version":"6.0.178-renovate-balena-lint-6-x-1405e702f8975207550f856cc5513f1166609f98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.178-renovate-balena-lint-6-x-1405e702f8975207550f856cc5513f1166609f98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"758b95fb46962030305c6b6c9294cc260367dbfa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.178-renovate-balena-lint-6-x-1405e702f8975207550f856cc5513f1166609f98.tgz","fileCount":24,"integrity":"sha512-KxhNIDKNTAJzy/CJ51zY/zlXk4g6heG72vAahe99/GLjzAnc4af9mGafb1noSBT10xhEqbs4PtViSc3q0m5ofA==","signatures":[{"sig":"MEUCIHScMO3X4XvI606cbLnDW4GIfR30k5CfbZPpyxQ6RUyLAiEAongfN3J58gQhlh+Dbxh3s4tyPTFdMtL2y9Rc1z8Adik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqyPHCRA9TVsSAnZWagAA+P0QAJNACyl34VnkDRvfU6+0\nmpEirt9z5o2ChD4WXIFF2W7jUcCoEJ88oOt/mFHKrU+PiRVYplMD8qHvmtO/\nneBlH5RbiqdyRgGwfYlo1GoKBm59t6hT5ZvuH9nfO/Lp+gepxRSkwplaGYun\nblwnmTtM+sjBNC+pjbtKXvbUJ0WSNbZI2LCCZay4XkzUVqbzNvhy7VtYWGN0\nKhO1qTVh4J/qtRh33WTFpbs402u9m/9U0hb3B7lyZsccCvUu/XGPKzkrRwkg\nQWv2ZGLolyd7tqcTOdWUtbGTYmt5EfCfs6kNkX+jokeXAdz4WRuWv/7u2xt7\ncUNIGySb2JvLm0EnJ1eXltoAGW8xZVSWdBz2hH87TQSiGzdEkCHiuRfGbQaV\nui+cFjHlWE6Zqie7cx1w1dfqQUeyqhFmrluAcHStySIqpPof8QyqQEiYHHpQ\nLr3UHxl/A2Edzxi48IcqK6bcxqtjrRSLnXoITvTBotb/d0MHMxD+yqgV3I/P\nxh+w09+U5nhFHdLPtJdza1m8Q+LpVvFA4vY6ZAh/W+yJ9Ary3YL8an6gjA2F\nKhlxM+kZ0bK4eG4j+mt1suhH0UqDFBpCHXVkoIB2ctfexFgpeEe3id6IEcn7\nACz4Ivg7Vwy1hCP+5REOkv8UWvA0w0CaVmtSPAC1qaGG2speQchAgNwvQ2A0\n2D+J\r\n=9mBe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1405e702f8975207550f856cc5513f1166609f98","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.24","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.220"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.119"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.178-renovate-balena-lint-6-x-1405e702f8975207550f856cc5513f1166609f98_1621828551159_0.5094806064840214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.178-renovate-internal-patch-04fabee00c28c5485a98ca61a8b0191921e0a08b":{"name":"@balena/jellyfish-sync","version":"6.0.178-renovate-internal-patch-04fabee00c28c5485a98ca61a8b0191921e0a08b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.178-renovate-internal-patch-04fabee00c28c5485a98ca61a8b0191921e0a08b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f473b7028199e2ee9896ef225fbfe9b2403a369b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.178-renovate-internal-patch-04fabee00c28c5485a98ca61a8b0191921e0a08b.tgz","fileCount":24,"integrity":"sha512-JHjo80qiCOWrt9QgK6Jn6yJqVJMBd3qsO4asdjjthLovrGKXV+qwpn+qlBRN/t3U7+0SJK3Jx0/5wGgfDQ+bDQ==","signatures":[{"sig":"MEQCIGC8kf/+rj4+AEYwn/WhuqcLX4hja/hOMpATWbo3nM+PAiBTYkfha585D/gjXhcJ8OE1TSxExdYWXbLbmfwnVUeNBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgqz+YCRA9TVsSAnZWagAAu8sP+gPVL6fHyEj84T63Myy6\nsjjPDhrN6OKRiOZonnYDIAtG0y9q1v35AlvJu0CjJr0y2fe7tQi34xJmZmtl\nyXnEr1WddozSFRrhAfiD4QOKTdoISJjik8CqG5WOFyfeTbnDfEr8vVh/cmNK\n8yH9cXcn+l0+HIoRyfCl8lDoTJgcSgHGt5hTlgm+puNBf3s94v+t1m5DtXwG\nnBtxg5awndYSUkelOzBEREAzOnBjHfVFrFDhvlttiIbNd6dnWwKE7VK1VBS3\n+pdGTORsfUeDd+0eXluj9unEdweHOFWpd/0hDueGIei6alOmgDq+COacp7C4\nUgBzkj6uVtEVEmvGgrgWqDg88QPJYfIOBuyPLpFtkUIvRZU3HP9aJjNncbBo\ns2jF7vwxHOu3L3P1/yp4YGruOpU/jyHFXto/LiENpzJfqEYis8EDLDfHqLLH\nTmSYk/HcSXDRpvWuR1lwTmx9kDB3NdPfdWCXC+OvXKE5j00CC80wYrgVV+4R\nykTA9Zud/rOHxvGb8xs46Fx6KCqgTqFRkCloC5nKYVx9+EZrqdY9ufdYtQcu\n9icX1FyLuA6+IwgixqWCTPve8jzWwPiQrXVyXxWtxevT0qDHNwsTl/0Z/NAd\nVpraQ33ADlJpJ2wWyHFiFP4BLNaSE9r3JbcAJgHYpPs/Ir8pqWaOChXogVRN\nDeRG\r\n=ThHK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"04fabee00c28c5485a98ca61a8b0191921e0a08b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.71","@balena/jellyfish-metrics":"^1.0.221"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.119"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.178-renovate-internal-patch-04fabee00c28c5485a98ca61a8b0191921e0a08b_1621835671908_0.10289727648332958","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.178-renovate-internal-patch-f8accf49fcf5449ff4c8c88c28a37c89bc55de06":{"name":"@balena/jellyfish-sync","version":"6.0.178-renovate-internal-patch-f8accf49fcf5449ff4c8c88c28a37c89bc55de06","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.178-renovate-internal-patch-f8accf49fcf5449ff4c8c88c28a37c89bc55de06","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a29e4aa07849959dc62e3995c6e9a7bf03d3f1c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.178-renovate-internal-patch-f8accf49fcf5449ff4c8c88c28a37c89bc55de06.tgz","fileCount":24,"integrity":"sha512-dEQrp6oHO50awoNs1aNlb9KIuSvc3mtdAo2GxFbBNwAanWza6p4EH6EAxJ/yx2Y1PfyzU1NHYDBiCGUIfec0kw==","signatures":[{"sig":"MEQCIDGi9oMYPIRu14jF3RKuyJSQ4oU1N9UcPS9tkwAI3yC/AiBF+D2M1tEjpNrElwDGEBF2XN1oGnUhWjZGm/l61BpmCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163572,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq0EeCRA9TVsSAnZWagAATAsP/09XRJ7RIbcY/lrKIU92\nn0FTnSjtPn7d8MM4m+nNgLsySA47q4jusJ16HU9Cp06M0J4XEDMof3fbzhJ9\nZE88ReqWEFathhbWpOKK8JzfdG8Qv6kKJPV1xxyZLcNiWkDVOtWl4Dn0sFwc\nXAFQebvHAiyZKVzhI0bUl7UY1Y+Sc/EFcTcbk8WHkaC7wTx8dsPBtcZNZHoj\nsCpbsxRXL634TdZEVlyUFk0VUhYUy5Eb2tnS2X+H7rs0MDSmDq1PAJWjOWoL\nc4fBOnku8j5nU14In1l5PdhqbSrxEA8ZpgpqRIHciFl77BfQfDxLmXhutFQg\n+7JBZXq/ZrBy/FA2SE3CBAeaNC0tA7uYSfGYZXRKah89IUW5feekbY8+5yUL\n6S5fe2eWFukg5HmEJVLY2/x5lsB0I0MYNYyjgyUWNXMIobiBrCEUy+f16yVC\nymwSARd61a+pccoLTZdS1iop3AqvkMstUaa5IzSTVpXF+v7ADTOmwLXStRlT\ndLgB6AZzgPTqnII2FVZXk9F4Cx0gHGMkCpriVN2LeXCfZRBHiOwtJ8npgFNY\n+Yt8ACk078f9Dnt5dnd0F6xh9xb37pbyqlK4QPqznSSb9myRzAxheNKm3DJe\nrYF+Zqf+/Zt73U+56k7IxYqdRVZmDX2SEEiK/JqsPRvk0VWFkFZe1TrTMbcV\n6EAm\r\n=2Mcp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f8accf49fcf5449ff4c8c88c28a37c89bc55de06","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.72","@balena/jellyfish-metrics":"^1.0.221"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.120"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.178-renovate-internal-patch-f8accf49fcf5449ff4c8c88c28a37c89bc55de06_1621836061901_0.4986198450163659","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.178":{"name":"@balena/jellyfish-sync","version":"6.0.178","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.178","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"47b7169969803b042d87e15414c4a90d3cd2bdff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.178.tgz","fileCount":24,"integrity":"sha512-53ljS5r7wKYSA7gmyU3rTrP/rIujxfK5nO9Q7qzzHSetz//TH55/Un3TMYC1ACQyjVHLozwsRNVx9wc9pfSd1A==","signatures":[{"sig":"MEUCIEEFbkSOYBYUxqAwFqC3bXY9LrX+9+uJ2SmuqYO5dbMGAiEAtilypffvmPK8X5QDZfoVbqAhqGRt375ebHMbK1ostdQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163507,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq0InCRA9TVsSAnZWagAAHioQAI0xJnLNjYlZWQFu12NX\n2HDnDPGb7YJciLaM4WcvBXhdlqMV0fT07Z/D12KcwXfFlGurkfxjOC1u7ws3\nNnT+XT/TG0cIuzVnw7tiHlLyq5vUpsqeH/FiaLJnj54b4WbdKPCyMTtTN7J1\nVQ1EUorKy6XdwdACkcCk+E8YAc/993BVAokfXkJOVIw5UGlfDb7SnWOcG5qe\nbZPteDRwwONtwonXAVzX805He+Xtpjm9aBbBXydtLjgjYzttpXwK+ziOAzRG\nTu1a96M1hCfNY42xdzVfsPObfHX2+IuAZVb9CxP8c6L6kgKKA6ZWDnWLE7H9\nSHi72NuN29pdFjtWvdsskXn+bin4jw6J48p3tMRLieNWyRv8bpjBlcQPb14/\n4PH8WDghzqtninuidj0BHHtn9v2BXgqWfsWWehoj/NhsHp/U2HuhudEZSgcV\n9JsqqJLA4/WhaDPF8JgtNo8bamiAqbzjpjrKxQPmpNEPyoh6kj+YC03jlzng\nrWXx8gGteJgkmc8Xuc5xsvtu29bhHyy955SFBQMGtgNnwtvxj4y0yTzbTMAG\ng94OJGpNpxlHxUFXzgvPU1aDuqIVlVyb0WGu8EXOe7DruKGXwm3S50IC/9C1\nd7tlTocExdvt49UCD2Pgks4ZICraqDZDbVK3QA1FF0KkBLDIpUUJiwTm8xlr\nB95T\r\n=0GhC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b0a1fe5e3be4b2ae051a139b444b19fb488ca767","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.72","@balena/jellyfish-metrics":"^1.0.221"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.120"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.178_1621836326289_0.8309420232694757","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.179-renovate-balena-lint-6-x-08548ba4761ba15be3ea69c4e823628f592fc5f3":{"name":"@balena/jellyfish-sync","version":"6.0.179-renovate-balena-lint-6-x-08548ba4761ba15be3ea69c4e823628f592fc5f3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.179-renovate-balena-lint-6-x-08548ba4761ba15be3ea69c4e823628f592fc5f3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2fdbdde3b788d5f47a5a29d3192fc7cd63e446c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.179-renovate-balena-lint-6-x-08548ba4761ba15be3ea69c4e823628f592fc5f3.tgz","fileCount":24,"integrity":"sha512-l95uTKZ4WOKKsmM9Msl+DWa2bURAquQ9id49vufzMyH/jyZ5OafEbFTL3wC+eGc1MikOd/rmsGGNFH2ZcoXMdw==","signatures":[{"sig":"MEUCIDCq7pGkQx/MkYAs5YHwggAepLnsr1O41hvV7AUkSO12AiEAwxIRyHPU4vQpHWkkvWYyXQjXtpwcL3WRyjWEc7qspJs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163660,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1NKCRA9TVsSAnZWagAAk0cP/3daAj+KJBGgjkkUUDAi\nz1Dwhssw3RiPP5HN0TdU9UHUbg7g+pCpuLTf4pFYkl8jSsRO9yL92RLMxmF8\nZmQmKJ1m4qtrGIINeRNgYFA6clPLrxQXA7AHSD/VG8kIAITqTR6RAzh37RJq\no0aK4fkH4IBnOd3rrRooS09Rx86AuZxOGLBwTTHM2ukN9Kmenh4l6TVL+pn3\nsjaxdaKM/z4tKo49z26hE9cXNI8cLBICT1JAKBtOnumvI5+qLGfNU1gwWLad\nSzWm1xwLkjFbRs/iu7K/BXKKVl1//UDauOr8aewoWvarkLaAbUhPOWhbu6px\nfnLEFBoLC5ufA9mPrHSS+pz+mFrwZqIkU2m2P3iSTxRni6o9LpJeiaiZO2c9\ndEo0u59gYVgJ4MfXgkxe16m06V162UVt6DIAGPZoepZg0rQUyw0txkKtsqrg\nseKMy9XWkt5pj9dyPiy02pOMeD8rfq8HiHPqtDQRVQV5E/dDsBtSnjwCttqn\nMnE+r2wLbn28Et6VrfL3LEX83YgfWCTG9V1fvDi0A50I4LDZ2igVfWJSX72z\neqK6AWLWgSYVJYJUhRzojQFOPxWQixjKfVDTDyzyv28FNhXNhEF5sqNe+UKK\n9LRkA0bSmQ8wFlZ1PFDIxlwptBTDYSMFvyDIPXjgCA4XGmf24VbPh+lpM4Je\nxRoY\r\n=U1VJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"08548ba4761ba15be3ea69c4e823628f592fc5f3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.72","@balena/jellyfish-metrics":"^1.0.221"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.120"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.179-renovate-balena-lint-6-x-08548ba4761ba15be3ea69c4e823628f592fc5f3_1621840714128_0.002266540334707967","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.179-renovate-internal-patch-f8ce636942890c2d537f3b3be316b1661233c952":{"name":"@balena/jellyfish-sync","version":"6.0.179-renovate-internal-patch-f8ce636942890c2d537f3b3be316b1661233c952","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.179-renovate-internal-patch-f8ce636942890c2d537f3b3be316b1661233c952","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d1bb26e9a96177d4180e5415859fb83b115fae0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.179-renovate-internal-patch-f8ce636942890c2d537f3b3be316b1661233c952.tgz","fileCount":24,"integrity":"sha512-Qu4wqHQ/hTffGfEwnMmsSGJc5i8P4gDlBJYRnkojun40aZ+kSjVfXGX142nGsVAWi3/usfhMoHgp2gOQr052Lw==","signatures":[{"sig":"MEUCIQDloiD5kpMmY9Jo/t+XiHPpWYXMe3nzt5GRPtGQzZkkugIgC1pk+z3tyIlyPcVlRR0uLJbDcbCGOwQkC+0y6dRPbjc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163644,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1SBCRA9TVsSAnZWagAAfnAP/0vqbM0HSYCvjyHjDAxh\nzdwzvio73TuNIqvPph2yCTWI5srSm0H86IPF118gVlfymjx1+wqzavqNUi0n\nlp7hOLBT+FNicn+GW3UGlU/IZFCexcuvabeHyNTDvTbcuJB+pF0BHi1i73qv\np3ouFMzCo2mA3knpWH4IYEwpzkz9bJZIFHs9dK8CBpPOMf6vTpLmReaagnlF\nQajJw84K3oFBAfel9n7h2NNnIgJF29xf690ntW8JHgrFSfxZOwqjiUGPBX7+\nh4pZR7FnKArvz7LYIXB751vAwOo6mulkFLlbC73l2Vg947Gp8mZL6cgKiVK9\nlMEORJkU2WpGRdMiSGDaP6I6J5/pdMmI0j6Bj88WS6RHhGBzEzrc2i1gsqHB\nYlnAmLO35nGsfAYARfoVQhJAZIOFFUPiZE+wGEzj0hstOIqUDi1Wu28gM0ea\nlxA4ApRsJMg2ZAwkwFqa9WM2JVyKkHp+xT3tJDXnlKA1DCXJcKDrchti1brW\nwl3BZknaC23zorcWKKBf0Jc47i+oXD30TmW3sbR+TvMqJbYdCuSu11HK3fVX\nwXkuKolIWsAdV8XgzF38lEpMRAPt+X2yu2VWDl8bHd4Ke61WHL/vV1l5KrTJ\n979hK5bbDDFNkAQQcdG9ntB0FgiYb2hdTDDGNt0mBMihjebr+rVC6ahY5r2y\n3Lgy\r\n=H7JO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f8ce636942890c2d537f3b3be316b1661233c952","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.179-renovate-internal-patch-f8ce636942890c2d537f3b3be316b1661233c952_1621841024683_0.6609617951400508","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.179-renovate-balena-lint-6-x-985770b4f90985e4afec1f6036529bb8332ef43a":{"name":"@balena/jellyfish-sync","version":"6.0.179-renovate-balena-lint-6-x-985770b4f90985e4afec1f6036529bb8332ef43a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.179-renovate-balena-lint-6-x-985770b4f90985e4afec1f6036529bb8332ef43a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e95c474e5ab75b3cd0443ed503d08a9b64e6c86f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.179-renovate-balena-lint-6-x-985770b4f90985e4afec1f6036529bb8332ef43a.tgz","fileCount":24,"integrity":"sha512-rkmVRoA1ndzFE3Pfdlf5SIRfUMF3zkmIJbrE52FQxjTFCemKhyK+f+On9WVULVaKDf9oMuw7SddKT77sWHNb0Q==","signatures":[{"sig":"MEQCIFO6EW8J+uCsuKr7CHbL9Dt9KunGOqEISlRQkieHR9GLAiBVrwvuGcBN7qpA85VYqG/YfE1u5DImg14bsrC97DQFsQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1VRCRA9TVsSAnZWagAAfcgP/11lovkeJSMO2UjqEU11\nTr1p0mawdKxi5KHRuWa/0ny/4Lq/yNfiQ6gYEVjb4bGODX2BJ102ap3ghA4z\nPCLNb9eqCxkV1tzsOLnOaUAe6LGchzffA4/1Dc20/cnxwVInL1w1xvuYQPiL\nVp4khXFhL6MrGfjeFNcLVEWXL3lGYx1o7CyDdBFFgPyuqFYRcKnaUVSK8bC2\nC3TD5G48okSBOP/4rn1c94B+qQd4AH9MxBCW4AtbIMkmQI+wpdnmOT5Gh8Lv\nQ7/QDQn2zZY031CqoHi5pQmIWZvH7weiV8BWUaycCzvMNlCXPcLDE7YzasND\nRRGTpTLSJk36X3q3lVTrQppXd07v9Omzz4IdJ5KVTVBez3p4IS2Or9IkocDH\nBA0Cipdww5nDQJXiXJkCWufx45RKLCfwBCzRcm+uGYYp4ZpeAF3cAV5mrepL\nwdUCxOmyqe2Shl7k5Y0we7Ze6jXriXdJc2qF7WJzCSCLgPVMmA8vrJFq08Ht\nTJLwIYTAG2jjLHCD43NZKJu/eF75iWZxi/pFvYHQ0AB01iQHLw8J0grEWDPe\nULSpTF6Ehx7KQBzFcu7T2aMTT3fBp+vuFq5baY9QTLzEopjotjhv7b9DdnJU\nDPBsYFXWrsxrbWrGF2n9hIM70mgdVlu/my53+hrQOpfxiz3AeaF/MICTn/1x\nL4ip\r\n=9NtM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"985770b4f90985e4afec1f6036529bb8332ef43a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.72","@balena/jellyfish-metrics":"^1.0.221"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.120"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.179-renovate-balena-lint-6-x-985770b4f90985e4afec1f6036529bb8332ef43a_1621841233224_0.31687066042075696","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.179":{"name":"@balena/jellyfish-sync","version":"6.0.179","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.179","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f694837b9f8faad99490bc8575de285b0931da01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.179.tgz","fileCount":24,"integrity":"sha512-ln5cG3pYQqYCGzwnk+82LJ1p+FgN74EtHcJqQcNJXd613bDwsOnPxujMf5tCLaUqFlDfFK2NAX27tKTItIJJcw==","signatures":[{"sig":"MEQCIGqPj3Q5cfN6w5HqphMHpk/yZCQrqprXAaqxrzK3WB4aAiByjAd9zIdunq5Yzv6NQCYhTvEQlw7P7GWv9jmo4UjqJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1WwCRA9TVsSAnZWagAAE28P/AvOghuEoDBdWGb3Joc5\no/edSBZfhz/wsWCRK017mWyzo5C9GLy3xJB7b5DtYE4Ye1FXw/tFucH6PWC2\n7iy9O7KY4mw/hvA7TousFJfqrNX1s83jxEgrO00un2ae+NQr2MFUApgUwxLT\nLNfdMJRCbL/yjeBWr8SNh/GSZV0ba5txKU5AoA7H1HEUSc22Nb6pIo7bbn8l\nQl0imhuBHhg6DcYbIJx0gfhXUKkdj68nbzQN+ziJ/gQIh8m0286/p9JzwxCq\nOoZZ7KHLCprXvcPhXrgWY4asV+KVxZ5nvew2rHZZ8veOm8LbsVJAioAOfnXv\npMoarl/pMVzBxSc05JGs941goqWk8Ojt1xwjPC2QD6pl63+0mu4Tfpn9LL2Q\ntXSKQmsTValx43kHQ07XUC3X2xFRrlbDVi7PGvS6DfQExOAuPHYVcY3ILZih\ni0MCvoalrk/D7fE1F+qb8S9IPjoauMKuKhiQA6Yw0FQhx9Pg5Kncu5tGSMiZ\nRryHIHAigAA0fMLOeKChIpDWL/pOM8RnirCd2TXlO9lF0vrKDzs3LbY+D652\nI1kYLtYP/hWDyvY1DBtPOJz06MqCMhsWx8X5pCMeErgIk6jePmZis3yhEAuE\nVKqaUjpKLN5S3k0NObZjwxu4PPVsM3sqJrJmFfWfZrq4ZQVZ4krzNg77minL\nOGwd\r\n=Objm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5691645eb5f60c7b2b42b78c374a318d7655ac9b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint --typescript lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --typescript --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^5.4.2","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.179_1621841327909_0.08084096339832403","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.180-renovate-balena-lint-6-x-c0c554c14d5339720c5e9784f8062da8fee00430":{"name":"@balena/jellyfish-sync","version":"6.0.180-renovate-balena-lint-6-x-c0c554c14d5339720c5e9784f8062da8fee00430","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.180-renovate-balena-lint-6-x-c0c554c14d5339720c5e9784f8062da8fee00430","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"99314cadb826cc6b2797935d19b6119881d70dc9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.180-renovate-balena-lint-6-x-c0c554c14d5339720c5e9784f8062da8fee00430.tgz","fileCount":24,"integrity":"sha512-B4xKwETFfWnalD9ILlk8i3Bc099v8EHoTN9qI9eSvvIIPxUEZGCQViD5OB6YREylo31Z23p79UQkpgSMnGnrjw==","signatures":[{"sig":"MEUCIQDav3+8aliVtkC4qrxMwF69+up2ymtzEoEdA3Tm70HY3gIgIxPnEJKdVkJNgv6ejo6+ytfEsZyTVBnDe8IoaCXqgug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1fnCRA9TVsSAnZWagAAdr8QAITT/izT6IXVkuN/RLFJ\nT5xYnHb4RCa14lEYMfkCr/HOA6jHRs7aZL+5el3HKREi5Eh88dv1gd+TveIp\nId6/Xfh8TiXfkJ9tT5QEw9u6y3OpzWLRGBO2I54nMzPxCjlsTbLqSk48DNZD\nhSOd0XzFzqDkkkMCjdR8JbphRDT8jrQhnMP+eg/jPKSiFPg8QcT78RbG5doo\nUsUm8nyzpMZX4i8YlSIzB/gBS1wDiw0xBO2uputMYNGr1D2nV5Y1fJwNpbQo\nnFEwXUPklmTb3X9CvJxZBh9T8q9zfGxz/UM1dYaFMYEarB2VOUCP8Lm0+Phj\nXjFAxIc0bClXrEzoE1cepau+3JGArrwdcjdR7U44CAtUAaLlxbyyk7wMSNo+\n6cYJ5h/FYS8k2k80WeEOv1nK3j4jfZywGn9uqShxu96VZRvdHMI2G9lZ8aOE\nWyhG6d2bSljjOi+6ECDFHELMxRAxryZSX5kI/LlIOGyaeLhY0RbatuYP8UJy\n8hgyr4wIPxphQ9OkyTVadA77NZcpNzPsHk4ZeqkHd3YWiLJsXPyaWqe1EK9R\ncU0b6BBKT4Ez2+5Aez6+nfyotEQ1r/dWOOza9fzjE7PJPLGFHeFjnLs8KDaR\nnao7gotbaih6IVM/30gO+DvfgdcNFDh+tHm5AnO2oXCFBTnz+1E6qVNkewMZ\nv8kf\r\n=+q+j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c0c554c14d5339720c5e9784f8062da8fee00430","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.180-renovate-balena-lint-6-x-c0c554c14d5339720c5e9784f8062da8fee00430_1621841895494_0.1620297293217181","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.180":{"name":"@balena/jellyfish-sync","version":"6.0.180","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.180","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"31b9dc6c1e9ef4baf65e0a8e1660946ea6dc4869","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.180.tgz","fileCount":24,"integrity":"sha512-S/ocZHcUzIkw0IAup/r6+1fIZqX4CI61Ux+Tf+iWIYla4RrXjn7uIrCk4GJULwM05qX2CJGRAZwm6RWy7J3M5g==","signatures":[{"sig":"MEUCIQDD8YduhM3QCTOtFeoSsITE0+lRdnxkxN4WlFS+ypxjqQIgfqjxrSTPc29ie8qTDGlyyDHqDDt4WF6jn/Uh2hDhhq0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq1i/CRA9TVsSAnZWagAAyWsP/2X8tX1b17TsB+NuetRf\nytvJiWKrn2iuK7BisWakz/aiiJiFgL4LSc69JR5IkgIEet5qidpg12wmML67\nYKdsw2MeY0SyiUSiPbTcdzGYUkOUA5IOjk+mMs5YYc0OTLKg/sP1kZeJ2tjB\nloL9pfQ+U5eaAu6u82OOW2O//vF/ofmPy9MLaNkJK9u64i+j/gBklHW++squ\nbQaR4lbFLHxbXxS8O4NHy0tMRpA/eG/HXUF2G1JAhUmqRWVfzB/2Li+23C9q\nzUtAPYTPj7QasBfeDOQnEJ7WPUipCzcgShRe9+T9XuAJzRvrOVqD0oApg2IU\nwyCNT0FtL5gfJrrv9XXDDYNFgqYnPhg3fD3edsJ0YGXE7CKny9PFJNZyS5HU\n4Vhm6Mxxq0CTYYcVbqEOkJGerKtUQQjLKe9cxq15PZVlAQXv1guiX8ILYm02\nvIUOk9RHBRmQKHAPzVVHodPNVltexRyTSZU8JtCcWBbjj7P18eiBQIsZC6F0\nJGc+/MbXxlA/bknycF6WxYxNKRY9JSsUNZ4uudnjwpB8JWaRt6UQ8O5qiPJr\nPmWTJNI+GfuvCJgJ/RjN0Cayv6/3zdlId59y/zHabJq8n9cOtlAEJYU8aSc4\n8i/jjdAxj9Z7PHqvL/kZ3L+qUDMB0+//0mzrRW0HcwFM7QfPOmAHmEHVqM34\nkbB4\r\n=FyRf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"225a7a4d6808541709d0b3d894f234a0677d3e58","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.0.0","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.180_1621842111030_0.5291584059127252","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.181-renovate-balena-lint-6-x-c589d9105158d46dbe2053196ec232d6905220ef":{"name":"@balena/jellyfish-sync","version":"6.0.181-renovate-balena-lint-6-x-c589d9105158d46dbe2053196ec232d6905220ef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.181-renovate-balena-lint-6-x-c589d9105158d46dbe2053196ec232d6905220ef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7c22bd4ec50b85933cc793cf030c0ae8fd36ae7f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.181-renovate-balena-lint-6-x-c589d9105158d46dbe2053196ec232d6905220ef.tgz","fileCount":24,"integrity":"sha512-rmb+psav16WTk7eOmKebQ6BGabcUFHF/lUIp+xMVSZLwSJk8+ndwgvQhjdEHtIQ8nawWdGRmgmkBCCNHAob46g==","signatures":[{"sig":"MEUCIB3y1VInp2fqseEof+mh8yHBh5N6NfvhW63bN3k2w3e7AiEAmY9kcfRZH11EX/k/A+VZwGQ5QYPWCUjVs3g38Vqkirs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgq4+3CRA9TVsSAnZWagAAzuUP/iMJJskFX71ivaJTIta5\nLbk4Tv5EIlUOqE+goDryEL568xhuStJnEle6ZmNwWTQH4zSEtXi8OW7u5uvd\n/lM2a2uHkSmiXg0Os5SB2CpyKh+TjBFGLW2rbBpdxusMWS84AR6GRmEgQ9nS\n+FJDrLcsi9LEF26yksBj1cQjzH1alLCsxe8UlNqtizvmP1JRywawPDPAdbJA\nVrgh3M3kTRXBWCHFwib4DG1blqxyZLR5DNxMUU134dhjbLubQAOUW7pCm1eS\nlfng8/Z88T0HPRNJVtkH3vAClF96UjDLsPHu9T5/DAyQWG+P89OU6bfiZLlk\n8rDAYe9/1OK5fCqrKGe/n5AoMP3Y3gN6v9U3Yev3oYSXjaEPhz9WD1bsIpKU\n23VJfvPGOT1HNtQTX0VNHAxC+8ift0SG1f6ui77uX542mxOci5h0aGRuBSyr\nh0sVq/6Odcx55d/RQdzYRzKSeCUAjf7n+NoLJHhH7IKMbW6nXMPP3eZJHECC\nWLVlVzl6RTe0RpVdFkeY9Y+g2v9v8tUBj09Ca0w2M9o+tJukJBI7VFjSL2HQ\njyyxUvjd4k/Udb+mG8LZ4dihwzmib7gC1VBVrAv3eg+lnrM/XL1LAamDzrbw\nJWa0UMKc9e96L96E9hpotSShd1NW+11IdU3A4c5+WgcfEWwGzrhLXEi9t9Pg\niTVX\r\n=OedH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c589d9105158d46dbe2053196ec232d6905220ef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.181-renovate-balena-lint-6-x-c589d9105158d46dbe2053196ec232d6905220ef_1621856182986_0.10189127670169906","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.181":{"name":"@balena/jellyfish-sync","version":"6.0.181","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.181","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2ce3dd8b251e3e63a832b8da103011470ae3c132","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.181.tgz","fileCount":24,"integrity":"sha512-01kaXL6/oOTshXB/GqL+zw59Dsn3FOtoG3dUopxej+J1IvO8Spr7F7D1+zrSApfAUkuWV/gAYs4eCpf0AdAR5w==","signatures":[{"sig":"MEUCIQDhWixW43gbCkXwXbeR43fPhOCgfMRWXT1mdMMFBR3kYgIgbkcM0/2acNg8wwBl6VqXjxhOqkAURtHw46/t7xdvNvA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163785,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrD4yCRA9TVsSAnZWagAAchMP/2Qh8Y+mlro1HwlZI/Zs\nZIcdTY4EeqlyZ0sm1IthvedK1i8M55B4m+v+FOKveXYBx/eANWHGg0BmxnCf\nz4zpXeWhLNd8KC/Yoj4/WE2BPbmkDT3xUi/SttY61Nb2FryOxC21KlVFLkAE\nDbTw8PX7aRrOuNTyYYGMFq5I/Y/H3AXOHf8fPZau1bW3AgbJoiuMhoN+f8G+\nrDaCdGIjlHPVfzqN4Q578DzfNWJ+9VGzcm69QudevJiOluKOL+OlPfSoUMBJ\n7F8kCCYdQRAJ/q9D872Hyzjj5w2DqNg5tdy9epzvsgCRl3how16uRAo3cHVi\n3pnNmAZrewPF1S1G6ADSMJ3T6bMJ1CwF/ehP7XZPBL9lOc+vwqx0sJBGZplV\nUvGrmDQYAkavaV1W933IxwQYbK/dqaqGifIG/ZneOXMwXlkdzWSF4GvemZ0t\nTpJNsArhQ1oAj1ZmEfiyzfC9bbIxG4raUBClufBZj6j5zghLdkulpE/jIh9n\nft1HFRZSyyv4qcixQ+GzElija1pxDyoXRBEPR4OfOKqyKmuE1tS5/DoW6kB/\n5b7kS/lhPmxTv6UswHnYB1YPkOnMf1buGSpuD0tcw4eB8qBRnDt0C+lkXTPr\njnu5RaaZ4eKWNtTp/Puzex1yQwSf2q6lNRjzWM6gaOQJehPT6H9UDUEzQnxd\n6uz3\r\n=8lUb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b2f4adaa27b67cb853749db02897f18147258d0d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.181_1621900850170_0.5108703169524103","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.182-renovate-internal-patch-13dee1d59ac5a731671afc93a192f41f4a856d5f":{"name":"@balena/jellyfish-sync","version":"6.0.182-renovate-internal-patch-13dee1d59ac5a731671afc93a192f41f4a856d5f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.182-renovate-internal-patch-13dee1d59ac5a731671afc93a192f41f4a856d5f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1631848f4e9651fc163f0295ed3bfd3548e175b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.182-renovate-internal-patch-13dee1d59ac5a731671afc93a192f41f4a856d5f.tgz","fileCount":24,"integrity":"sha512-rqQAX++Nhwr42PiHzHiDaPy/nMFOr76yo+ymYQpdngHLUoskjDcbZY8ep3C51VwBQxC0tpi9+nd4r/Cmk0sbdw==","signatures":[{"sig":"MEUCIFuE/Yt7HEGJh3t6+46nJuj1I+2dv7yLjdBv3G5Iu1sWAiEAq1MrzRpEOVlG7MSmNzgOqyIIJ+xUx1ECm1gAXmkF8kA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrEPBCRA9TVsSAnZWagAA/6UP+QBfOeXIkKMUAM7gBMvn\n4VNGG+sZSdclOH+FqI2DOKyVUmdcqPKscWNICZnoVRWD7OGiGUFiqXD8eALN\nelfVrhmpojnxe7Q/Uic9yIlspVuoYDL4dr/VTA1JrJOoRfFrWkA+jN4xdNxL\n2SIyUHL1WurKhFknowWHrTczI/Pjz2Mv+rko83+QzCbtle9E5zt8igzlGruN\nCepQQ479F/vH99oDKPmibr/cNkjH7PD5VkZSnD/JpVBduTA4rlN5qi8uUPNo\nmTlQH1V4qBaqelV35ajJ6fyl6hZxW5pFLWboyHLU48hK1Hdgo/ap5krm+bPY\nwnUrad+2Eqlaa8YLRMSCThePKswrU/Bllq3z4sgDjmLoZSiMhvJyJ9gUkeJc\nXhIG0fC6m+qAyZ/4ccYMc0RlIrRgDwWpBxRaS8NWUpEIYMTox22rLh4snnSY\nNAMs3wBSq6rg7C3PvJPRauKdRCDTWfY1f9h9i97f0SD7X4Ss9M/g4L7dXaMN\nlZPZavbc1FarlVlHr8LpSceGXKeN+Kz8BaVjPB81mko+DHIYEADq+yEFU296\nRLpzLhvCnPp1MFbvxKiT/WgNVO12RLKkCcJVPS1KSk7o2P6DLnjxwvduUYc/\nQo7dqcMiPF7Die/Hbgm0abCDK9ZPpROhS+LZJ1hWB7eZaXTMtZBrbx2HyG5P\niouZ\r\n=6nJL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"13dee1d59ac5a731671afc93a192f41f4a856d5f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.26","@balena/jellyfish-logger":"2.1.74","@balena/jellyfish-metrics":"^1.0.224"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.182-renovate-internal-patch-13dee1d59ac5a731671afc93a192f41f4a856d5f_1621902273024_0.5772131857427407","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.182-renovate-internal-patch-309d51041dbc670f2b01d5e588e9f9e97dabbd42":{"name":"@balena/jellyfish-sync","version":"6.0.182-renovate-internal-patch-309d51041dbc670f2b01d5e588e9f9e97dabbd42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.182-renovate-internal-patch-309d51041dbc670f2b01d5e588e9f9e97dabbd42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3281fd85420cdb2cdcc071ac13336378032f563e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.182-renovate-internal-patch-309d51041dbc670f2b01d5e588e9f9e97dabbd42.tgz","fileCount":24,"integrity":"sha512-G3glEVbjqUIWEzJ8TkhBO3r3Kybh86Sf6gPO8nWHvp5eEUGogZOp9GXFDmr+Xi4KUaKo28w5Kut2fpQ+gX1oVw==","signatures":[{"sig":"MEYCIQD4ECdGwfTzicwPjVzi5h74JVPv5/EtM0Xxf42kDawIVQIhAMRSYrQtETdZuJfdgc1JwXQe7bCx0nEB6s4SkL6BDt1h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrEmlCRA9TVsSAnZWagAA128QAIg1h/rpMEyHkabl7WqB\nweZ+etAKDmpIN0sTvNLA+xr1SSvhEfClicTdWT6oxur9OB9J+eeRKDMyGoeE\nKgMBr5vb8jnMswRF0bQGpxm4zJwmpKTuy+A1B4zFh0+kk003/Ax2RrCo36Kx\nPCDQOHbFrg5KuLnqymrdlVcUModc93w11kqdxiQXyPjOfc5omLzNZrD3ot7K\nmCoJXcU41kVYci1qs03MLAtwFv1cdUqfDWZkPaC6aafjh9VE1X0ZNA/r/DdO\nfw4PAHGQ6rPXcMTVsRvJXUEmnutaUoXO5zOjBs6IVZ067yAql8ORGMBuwSI5\nL719Rj4O8cY18XStqF41lgLYzaWJ+w1v7aqTyCX1n7W6vfodhwqT+qfXWzFK\nkKoS0noky+9HXlHBLeNob3TIGX/465/vBq5rlup9fVhZpnytEqKCl69X8P/j\njI/t41/FwgNVYiTY7MHlPxARFPU5WOcP3IiCvpNujX/0bKM977JFvGF1xzM9\nru9G+QQeI+BPFxN3tXmYwcdzonUFzxwYu0rvcCxsSc+FO3j/B1I1pMfIn6PF\nqd4pyigpD3ioZM4nzYQcPm1Fv3sUaQ7AgjfWnqhHQhIVcXjY/TSuXTurRjeu\n5Wk9ydDzvve3EVSXwwOVjiyWE8VaTImZD/rERVLVyxvfTqYgZBhn1B6LMPWs\nHtwk\r\n=UJpx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"309d51041dbc670f2b01d5e588e9f9e97dabbd42","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.75","@balena/jellyfish-metrics":"^1.0.224"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.122"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.182-renovate-internal-patch-309d51041dbc670f2b01d5e588e9f9e97dabbd42_1621903780864_0.697056856998689","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.182-dependabot-npm-and-yarn-browserslist-4-16-6-e74d1be1768d291d5637a32745b68399ef23e5ed":{"name":"@balena/jellyfish-sync","version":"6.0.182-dependabot-npm-and-yarn-browserslist-4-16-6-e74d1be1768d291d5637a32745b68399ef23e5ed","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.182-dependabot-npm-and-yarn-browserslist-4-16-6-e74d1be1768d291d5637a32745b68399ef23e5ed","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8ddc40f3abdb2dbaf110260c1c75a95504d45ca6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.182-dependabot-npm-and-yarn-browserslist-4-16-6-e74d1be1768d291d5637a32745b68399ef23e5ed.tgz","fileCount":24,"integrity":"sha512-ns1dEgUpqI+OwkFmiBwECSeI6DEEUBicDDVLqenbGVtHaU6fvA3xUpK1GA3d7Rb+FQFT1IvRRL2K0EAflKf9lQ==","signatures":[{"sig":"MEYCIQDPmI20btCkJdy0IKMIq8Te4SXgCiR+pV+7n9WoqPDB1QIhAOQ/q6aSle1xPyc/B31cO3xzDLEO09e2zbjoD9JmxfNQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrFgcCRA9TVsSAnZWagAApfAQAIIdeuTSsPLOYMLo9CCy\nzpOWd7gvy0l1gZ7qXN9vVJMq47Sv3m5xZ7DC5JhvkwIqWTcwjcll6ASMuaNa\nX1FSjoDZKeJTx697xzvapVX9ZgQMQRsjXfucswLnkyPSEBHrC/v6URr9T9uw\nuleMstVmIN236nhm6fXDoi22R63ZP9M0CAVkEafiRCLUeOPRVlCh84sO3uB+\nhiyD8XNJo3oGpscWtIWCwtGpR21rMHZ+IXLiAGbyI4VXak37bRYdLZVueKye\nMmHAPjxqy8jxt3w9QE+i5bNN792aexi0NjvIiQRM/LqU1nEvUKUS7VgiAskD\ndnICHFB18djLjHJdxp3kafwfGHO2HIH05E0/+EUQ6+mpOnylrZ9XdmaUGXDI\nyymmoGIzJe/w0hrn2NyYZzFejPvjlctk0u9i1IS7vsjdVHShHJGtHCWjc3f1\n4f4UCyesG4LpjZn9ILqwSrGDTPRyzapBp649RK/6A//5ea+AyppHBFpj+r3P\nVQQBag20spNscV/0DKOUgueLSkjE69H0RUAuFCYlkH746LidZCGKlpiWDiY2\n3s+qJR4dkH+p1+SXR5KqHu71N4Etpc2k6/HqDkaLHNqSQvwagsmNuwMG+4hZ\n2S531Ix7hnnX2GT6rcaM5kIW489mFoM4za/YaB3h68iCi93MFylZwTrfZV6q\nI6v5\r\n=+koT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e74d1be1768d291d5637a32745b68399ef23e5ed","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.182-dependabot-npm-and-yarn-browserslist-4-16-6-e74d1be1768d291d5637a32745b68399ef23e5ed_1621907481815_0.3353858655091546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.182":{"name":"@balena/jellyfish-sync","version":"6.0.182","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.182","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"552e4ae3c534fdd30e9a2bfd3f5581a3f09be475","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.182.tgz","fileCount":24,"integrity":"sha512-VRuoYahhwYb1CDQhedF0EsIVmO7JgThaRJcsEF0vhGZm/g4g89bYOz+NlKDRK8UfMeezk6ydHfla2yC+Lc2v0g==","signatures":[{"sig":"MEYCIQD6YJhI0G9n7lZSP5zjDyjU7FgOlHY4lMKqjNOry/VH7gIhANAidBeqXYC0BZSblgau+yu/hWneDwgKzKUyHYj681xf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrFk+CRA9TVsSAnZWagAAfrsP/R91KwW8FUwVo9OP348k\nneTZB4ayNADbh+pr68ZhXi8jv0lEntkEHcGhJEPdZK4Xi8u9tLFBgA0kuNhJ\nKYOBSB03FTwbeTt3nZDj71wf31o+z0inya9r4i0jIlktkrODBibDlZ+8JUDN\n/XZTYK5sxucut0MzPidlemxainB33UalgtIPR4hjeYC4kxjLz1UwUB0TsLx5\nBCRtEmZQPBtDDSzF0pSHK76w8wlWmYI1P+IWwcKmPxVbryav3Nk72q3Fe1Pq\n7POJr6AGEkPKqVSffAdGQ0Ll5mGgzxFWxd+UslQB4xGBYP5RN1adBBXB2YHb\nqhjmqxpCdnFbYqE8NkoVmD2jgfgj57mXsVXfm2ev9xt4nx6KOAnVe9KCueE9\nlPKqGdw839WbphHpWVaX4r8oi5YGwcnAOMvRf4h8FTvAAvi8W3zRHleopAp9\n/CXWufB/uMyCYkRLT/AbpfDntJ26rIsIVpcXchsu/a235ioNr9A3W0tZRYmN\nSUydRDQ08RESaJlyDO1LjIyXehO3hTKu4i6ipPzdeKW9JHN7kXbBJtio151x\nOWXtT3mNUoEg47lUngiJhwuZDv04fnbWfq+rIHay5fAx7Gw3ZcVW5XeDtIum\n2UxRIrkboiA4z0/3qX688xkv7loJX919KBk17FCXmscDAzvsRxErHsXgQ3I2\nRFeg\r\n=5ONa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ae4d43f2bace2da6524b8bb3eb7b123a171af50c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.25","@balena/jellyfish-logger":"2.1.73","@balena/jellyfish-metrics":"^1.0.223"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.121"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.182_1621907774166_0.6606749147749824","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.183-renovate-internal-patch-9004c084a89f9ce18fbdccff3890d31891148cc3":{"name":"@balena/jellyfish-sync","version":"6.0.183-renovate-internal-patch-9004c084a89f9ce18fbdccff3890d31891148cc3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.183-renovate-internal-patch-9004c084a89f9ce18fbdccff3890d31891148cc3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"857917d5f33a3e5f100b14b939cfa2915e4fb34b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.183-renovate-internal-patch-9004c084a89f9ce18fbdccff3890d31891148cc3.tgz","fileCount":24,"integrity":"sha512-ZK6uV8Ue6ptOsCFCmkrAN28gUeVWvteYjdMATTvR+bFQw7/iLN/R6q4uggxMlkE33kFVVrsxiEO0p5iGOPkTqw==","signatures":[{"sig":"MEUCIHZ3+teO2bQLKq67TkK67F+ogkKNu3u6daOD+a9Sh0UfAiEArX9tx5aLkNLTroU8VVqYXmgPhLmH1ajRR1mdBtYeITs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164021,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrFraCRA9TVsSAnZWagAArXEP+wZ4s6dVPgmAN0sxOc25\nCEnggWBjJT/A5HEq9YTeMc0fBm31wJ2bvMh2iSqgI+buMBe3r9P4c8YZojj8\nt1BVLSaWRw2Slx2LfCx2cNeJu+DpNfl6MD2lTu3+tARVWYs15g/nj2gN758c\nPU0lOb+YE8VR/CrVLgzKefs5URm99qrzx2qB8kH+fvx+nvEy1izKoyzXY57Y\neevzyN75LD1TvGILy7bODs4O2y0QGP0hxDX/gnAwvsKRloAJe1ceD2yVtzeW\nrM0hkLGnELx98EnL40Sg+ccqEEwONMkA95vOK2pNuUOXsYUfMAUaeO25MSSO\n4lJV/8IzyqNmz8PF26FsX6jBmuDSmMvRnODYfejJ2qEHRUtJiTBgpzL9yct8\nNoxDMhOvvAwaIipkDZFdnttexKgvU9EQuXzwWuIMRxgdXzA12ODmjqa6lDRG\nMfx2omhTXsptWfCDWwAktaYxkN446pRfwKWeJJP+aLVp55svHfVzK5mz+MZm\n+PGASr3Pwawf3TeTOdky4vIUsZGV4IjU6J07WGNVTFnh/4t60VpX2+zg14HI\nloK5HB2eHu9U7QWl24uhZIfWrOoNWti/AvZ85xGYVGd60QxIXJ4Hk6vsRkmp\nJNwoVWh/vdiuAXK9+SML7R+D9nlA6Lu8nw0PQkw1ZNW7CJWidmcCEe3YIVgG\nxiI/\r\n=+Ftp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9004c084a89f9ce18fbdccff3890d31891148cc3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.76","@balena/jellyfish-metrics":"^1.0.227"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.183-renovate-internal-patch-9004c084a89f9ce18fbdccff3890d31891148cc3_1621908185937_0.0836718514381789","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.183":{"name":"@balena/jellyfish-sync","version":"6.0.183","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.183","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a77b9b7a7b77e0e268738a30d225c6564ebb64ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.183.tgz","fileCount":24,"integrity":"sha512-4X1G9earIT8T9dK6c6yBP+OObB5sOFVbu7IwrkTRmjT9fhEtRH5rxnzF4a1QtgYdTpSX7w4iw58hCyvnUSuoBA==","signatures":[{"sig":"MEQCIBMUNVQi4iOKg+GpLJMoaTXXQNRtg7DzBS6DkKT3xRZIAiBg5yfxAP6TDg7/AsPPl6ko2b+mCNKLlYmL1VRm3spWSQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":163956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrFvSCRA9TVsSAnZWagAAxQkP/jCHf9Ui0N1SAXGLxMDX\nwwwChD4SLDZp7odtpxqe+cG67Ut0ONlMv3SvvirENM3KGITmETPBV0IUFY7+\ny6B1flAHfhpJqbBIh/JVRivpqgLAwnwOgq/qIlZj2C9tMsItLrhcvee26Mv/\nZ6UTPwD4GGfvYgdp22tCVVblSojDCOXK+JMBJsugR+ABFLL7zjZzABbqA/hN\nNwGMdrr1cpUMVz9ft4glpcNH3zFOS/zGAxp2gLeeBrM0qEDoBaIlXC0SEgz+\nAUUwS4BTM0v5gD5C++JAWMiUHXB/MKJymQT519tOiaHi4ZVr6VgijHNdk8JA\nufrm3Rz3aTO2ayJ/QZe8BoLlh4aRsqNVg7ah5fcB4aXU+K6FyN87mgTJkHXJ\nPHCCztFG0nDWDkYWqJixNPGIx/DX7weH35JyrBOx3m5sEZLOyRrwirWXGwDQ\nY/wrrRrmzX7M5c5ZzHxiippJjWWOh58CnN0A7loyFneveps1GRoz8hgvGWoD\nIwZS0DhRNK0qSGAJi0kYhhaZNhxnddtnYcyU5r2yPs9XjCd9p/t6BhBu4nV4\nDoQCDCp0BvkY6b/3oLIotOaueHPE1FUz1LzNpFNWYWKnZqP+2CFrSPHiZ+JH\n1v3HYwNhEs7k5sLDJnOwsKcm7nwUedU+oL4NgGjMDjnKVzd7Dts9mEjrEZLY\nVkEg\r\n=KzXK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2252e82124d293cba0c1cc248cdcc3f0323d8644","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.76","@balena/jellyfish-metrics":"^1.0.227"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.183_1621908434165_0.23363784815257804","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.184-renovate-internal-patch-a8e136fb198fe389b1fb159b1b3f4030ad344888":{"name":"@balena/jellyfish-sync","version":"6.0.184-renovate-internal-patch-a8e136fb198fe389b1fb159b1b3f4030ad344888","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.184-renovate-internal-patch-a8e136fb198fe389b1fb159b1b3f4030ad344888","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a4c9c10a16e820cc3bca25b0a3265be5a9e2af2d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.184-renovate-internal-patch-a8e136fb198fe389b1fb159b1b3f4030ad344888.tgz","fileCount":24,"integrity":"sha512-gJjB1fGD7oDy+R8qMCu1haat8IDfTIXVBnjwZVv6AwAHFJHNXAl96PmrIprelTsZz4TyJ1YPT2eO9+dvsNT7CQ==","signatures":[{"sig":"MEQCICLEX2xEIEdtZjuvl9I3ygIYCCgXKnwKzVnFFYiLZCDJAiASgoi+rxL3MPe1wK3j5kxliXCE/btAa+ZGcTtPQUHecQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrHk8CRA9TVsSAnZWagAAWT0P/RqpluUvMjP+VZh5JQxX\n8Filz0mVtXOB/TjAT3B1yF+R3IdExUKpBG+q1+e6K+ayQonL14cRHndOYKc4\nGhZ8grY6i9kCjIwgCCDaU6Is6WV9ScRsGCAHSxcCBXNamjjQrOE7C3DRfdBK\nQ4Hf1+xo4sBAT+o9USv9Rth/YoeUJE2avtChIpSJ71KNVJ2HkEf8KXuB9PbJ\nZewLWkgBwSw9zep7KWt1gYZJU4OJZbFzyCdAW5QESeSf8X9ov6mKlhnVmTwW\nYyklcdlFDlZiLDJIoG+PUCN1gsEpxw/2YkWDMIfe3CKWPcSCiFeL32oGaKJT\nbWZPa8gJ3SN2sOwyBBDbtp2JX3CHjWh0rR+MMbQ+IOHW3gD1PYhUeJDuytyv\nF/y4Ifk33znIc9eq169n/VJTn8TSlkqYKEqGAfHPMqzzzlJuc2BWr2mCWMIU\nCHIrS7+x1dubRtcECBCHQPlGiacslqtLp4A6nP/L1UEyjuDT9bq8kohbck/l\nh7THJURGTy3966RWKaZjoW8CdXVfu6VTPAzAnFLWpvAHj0D+2wJ0dFAR80uf\nfaotwTuQGdoj1G5oYKS1zztQGeUN0R6k1luAHetIOQLj1xTeYdZoZKcXfuqo\n3ROCem4c4JzfrbFzFliS9xOxeTesQgN435oHXAMxqgDxBivZRCsA3O4JtwRB\nOAyB\r\n=iMzL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a8e136fb198fe389b1fb159b1b3f4030ad344888","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.227"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.184-renovate-internal-patch-a8e136fb198fe389b1fb159b1b3f4030ad344888_1621915963771_0.6211663670597096","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.184":{"name":"@balena/jellyfish-sync","version":"6.0.184","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.184","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9e5e9a19802077aca01da555e07ded2edcb64d3d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.184.tgz","fileCount":24,"integrity":"sha512-FPlS74YQOKhtNM+G5+8hqEp93IpmQVYGbQk31aVoTeHsmRrtQARFVQn483S7YamERdnyGrOHSZZ0noUb/GaFqw==","signatures":[{"sig":"MEYCIQD5tnvtaiUqlf5RNZ3TXMFk7mqkPUGq6244oH3lCKOBOgIhAN7l8exFUHWfgCnqzqX/RF2ntVZXu0KbQBQwhwesUSE2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164060,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrHogCRA9TVsSAnZWagAAXUEP/0KNGVKjocJXZ1n0uE3S\nMdjUw3WJ+joCYFf+q1ZeOhwr4bDd/bg2zMnolbC6BSHs0rHfWjWdj+ULSPLe\nSBqYIlZPH09AI7/Pt5D2HRfuIwTK/9bNc8jCO/KxPic1eCbXCZtlGhHqqIEf\nzMToJz6JF8u4lee2hreP6Lf8XSBZSO5DIZll+GAEG2K72y+ZbkbV99JQaM+R\nclFS/VzHs6dZWCCBUJ1Dh2D06uRKO4qJhr4nebJz4xCB6bSA82rXHYHpjHGK\nZe9sAddjN5ih9tHsYvoFNvb8fhdRK3KWeJZHtnKg2e1ClO4PKiJhxX7PDHqI\nR70rP0MiHtbJCp89lqLSksNxHJawK1rbCGEhS3/GGfFxVMCs+dNd9C0Lw8Hh\njPsmVezyF4b03wOBUIaf6ncg+U93bolyZom3mMWXjPgtR8m9BeQfpe0/ypAv\nZrohMQL6JpPGTel93DpuHGZcmd3sNuHoFbqZXkpufISCRIaiUvntlnrrDZkV\n7ZM9onWM67CoWLl8+5ZusSbM0IKyyvsftnDkKOHz+Fjx2J2u/5g5vGCKjx4/\n6mQj3kqvUDb51r+LdWKjCdZk6f0JpEYKWyATxwXXygD0GRudVJv5JSoPTrW+\n7e9vWnSeit4FeuJauCR/wV3hInQQ+nkrToIeQrftqcc+EHR0Sv8IStcdNcgD\n7gL2\r\n=cjyf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"29f706b188ceafb1c184d46481f708210362922a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.227"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.184_1621916191783_0.746592143408634","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.185-renovate-internal-patch-e568961f3f076c2e2b2f6f9511966598fe2bf13f":{"name":"@balena/jellyfish-sync","version":"6.0.185-renovate-internal-patch-e568961f3f076c2e2b2f6f9511966598fe2bf13f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.185-renovate-internal-patch-e568961f3f076c2e2b2f6f9511966598fe2bf13f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fbbbdcaf235ed3cf27a254e37cf96ea8f4cc450f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.185-renovate-internal-patch-e568961f3f076c2e2b2f6f9511966598fe2bf13f.tgz","fileCount":24,"integrity":"sha512-Uyxc5tMem9KVKfg/21JGZZ4I/xDyIUBHffr+O8UWBd308KQ5/o0gi581jGCfGddAOaVdx7QK80dHVHYKjNYheg==","signatures":[{"sig":"MEQCIDPSskJMJmjIhFj8wu1GFSda06vRuGsCAIThWWs7RrXZAiA7m/mSMEPxq3DlMeTptdaanUV3GL7R7Yvdr6I1+dnsvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrKSuCRA9TVsSAnZWagAAu28P/RrXUNZGySDyXE7rrxtw\nn+D9V1WwYO0sK27lPqW5Ql5EzKkNDiYDlS2VCkn7OdWX6trFYgd7hCU0vT/s\n8bkjLEAvE17sDjlGb2rrD7EqtePBCEV4ClZzu7bHZEQRIM2dQRvQxET3YV70\nLgE2w8MGm/9uQjWYYw2BRpIw5UyFAF2CF6eZSgYeBpH01dJaD4yIyNfcTvl5\nxSItbq6RAiFIVrasxvO9y3WOaxbMc/WNOgJPHX7iLhwC6K22WIv9TyxDVbC5\nLUbMt2Pga+wPalT5QocnpBCP0KuBzjXu/jLH8+kouDEr4C5NdiaDehM+I8ba\nkYEwFzx8DT7Ieo7Iu8xwPwH5r7zp6jcLcgOmzq3OoyxUrqq78VK4y/wPB4QF\nQy0Q6UohQp1ovw6U/Y2gdj4mBeGHJk2Hv2gqEJ5F6+su8HK982opruoXJbVN\n5dfO/fqqf1Fy4L7T1W2EXqqcFiFLxpEiZmf+RWQ2j5jzc+54fvjV67P8RWVs\nbLyXtLeugCk/wt6ap0fmcSsaGzyTIQpeq3hxJCXkHbzwcxJl7mmQEYs2rHIX\nxuscSqZgy00rTZ4BrkRQdtiHrlf30kHReLbsQ1IDtbC3yZoXIjFyhM+69zbH\nU9WZtuL2VhskYYKVqUjRARPf5u0AVENJixycnU0xrTmYDGqd2lvqdkx/GmBL\nuwtg\r\n=SebR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e568961f3f076c2e2b2f6f9511966598fe2bf13f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.228"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.185-renovate-internal-patch-e568961f3f076c2e2b2f6f9511966598fe2bf13f_1621927084093_0.7546631378820734","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.185":{"name":"@balena/jellyfish-sync","version":"6.0.185","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.185","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4e84bfd6975c2db067087bb78dbfe7da9e5d3753","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.185.tgz","fileCount":24,"integrity":"sha512-Ua0wzFOFttJDQ3F3JIW8DPjgLK3mtikSS7hcku/WhCrBHyuj8c6sntWbtNpfLqKnUELrPc8AYt3vDdP9zjYx0w==","signatures":[{"sig":"MEQCIBkgm1s0k7jz2/DTFKAaQkaA+HLu8NSg34Vc7fOmhhxPAiBImg0cvMaVNpscX89eygNuQj++iIa0qiewebpwSYpJyA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrKXOCRA9TVsSAnZWagAAYJ8P/1X32VP9BGDI3R0oCqRy\n85NSVkYWPCj4dRPkJsCCRo0DrkTfeIunskT61AaF+GWBmEo8k6zvPt/v+b4k\nvdR+xiGYcHb8cyZWAt/JwRDnQJ6FT1IKP/Krkv4L4g2KpIAM+eAdmQdVEXMy\nnYVL0jRpEJFBNyBMhd+1uno7ivhX3ARb422TScvhqOkXhcCihH7tZCWfhnn7\nr8ny6OhccGimQcxyauPwJRdLi0gp2DhsgmxIVkIytjAv0htFPz8a7SAv9Gvp\n6lFn4YWNUnoKiK75Ry1ILW2lzG3CFwTu2aWAu/P/bLfaIDNTTyiEO7KSncPs\n+hHD8hqpXLuPgCUQoF7/IxVvRYFOZiM8bYtSy4s0zHgNVLZ6fUQ7DbEb8rJs\nqTd8LrFgS75vZPG6cmCnamYgL27Vc37x/gN4w98VGhXMb1FxmbmEmxO9wMQK\nV3zUfajsWZ1gErxBjR2NQ5tUkwk6zTTSbzvddYRVoMxIvHMVm3YIYzszwZME\nu11K41Wt2jx4WWQNxpH2z3ICaqTdgloXNsSMn0uaBwSFvlMEK9+VZq09eZix\nj3qDdKXvyO07dGD2mkh1DVwpHM/K67C232hYtNn0Nx9DUjUFc80RSCwbFFy/\nUa2EfnFLFiu3Qp3eNkM0rPVA1dC4twyOTsYsOwGc0UzHxWaAFtKPD7lojrAG\no30h\r\n=xYl5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"28123791d1ddefd5a828d9a3643a48796a5adfeb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.228"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.185_1621927373854_0.36047095420717223","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.185-update-integration-constructor-606a42db784741a43b04523853a465dec5508489":{"name":"@balena/jellyfish-sync","version":"6.0.185-update-integration-constructor-606a42db784741a43b04523853a465dec5508489","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.185-update-integration-constructor-606a42db784741a43b04523853a465dec5508489","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9276156ec573ef6dc44f2b2234ebc4f8a36da9a1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.185-update-integration-constructor-606a42db784741a43b04523853a465dec5508489.tgz","fileCount":24,"integrity":"sha512-NOGaUYjkX6SfQS7RLpZ3AIqoxBCoFNyl2N43GOFGpYSBHjCfxZkPcQj9L2z6x8SJdg4fQu1UpVSx4Jmd36GrCw==","signatures":[{"sig":"MEUCIBDVzK2iu+jd4wCLzAFwA1wuw/cAVJIc2Z4VMnlASmENAiEA+07rFqJMBqO3Su6x4K1OMZwYi/EpGy2eqmt9f0lQ4ZA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165661,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrKe2CRA9TVsSAnZWagAACF8P/jnEoq3oT8v0fUJ1vDM6\n37nwdGrZ6TyNbZxA9y8G2PZJubMC/yMizB4kUYHhn4ltFNYVYzP4Ov4t1T9m\nL12vTCiWXN6bFlKW847Ye/3td9yDUp7+QKh1CM5ttcghP2IZ1edck0M2osCB\nwtAIphhNdwvjAG6cWW5IBEr2hM6qjWoBMlAIHa52C5OQM6Df4lGMal6qZ8Q4\n9yE2nFUrBw6vC35tqhgEJ7nhqqPDIuAdKFzc71kCliL+fKZo00Y+/rVywNK8\nZluamybLVsbW9r11lO92YicE69UKe6bAP67Ca/FkUqiOwBHLkZlz7PhO46Af\nTLcu4Xl/iLdlL8e8bKio8cydFnEZqlJO4LOD56hSMcDdwbRrnRkjMpXr8bkg\nEm9Zv5EiWgh7jz4dAijGKjOgDNzFKm8YhoF+w4Tg2KLSpS6iUYZ/ZYzBIYG7\npRS9v8BFvf47jlLXxG+xb2+5FUMxrU+IUBg4e2X+pulU/SgwMnERZSbhAN+q\n0fRTCftU3VgFbCMoCbBL5haAZjl/pp29Xulpl7MJ0mwmC5MeITLkpmH5ttf5\nUMD+E8ZxEsM/6UeCeoUyVv1jkqhBYe8vDcLgA6K/CYQnO5T3C3DD28olS7YO\n6FyU6y8dPkylBn7BV6KVtQ/fCEeAEGaw5pis4P6scgm+e3kGX88IZdoaJ7jP\nLnAK\r\n=qZ8c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"606a42db784741a43b04523853a465dec5508489","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.227"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.185-update-integration-constructor-606a42db784741a43b04523853a465dec5508489_1621927862286_0.18351039524160617","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.186-update-integration-constructor-d48c36ea6521e02e035b7f74b8ca263072079ce2":{"name":"@balena/jellyfish-sync","version":"6.0.186-update-integration-constructor-d48c36ea6521e02e035b7f74b8ca263072079ce2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.186-update-integration-constructor-d48c36ea6521e02e035b7f74b8ca263072079ce2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b726db52361f7a0599dd15bc365cf022ec93d062","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.186-update-integration-constructor-d48c36ea6521e02e035b7f74b8ca263072079ce2.tgz","fileCount":24,"integrity":"sha512-/2UqZ+7V54NgAojYneI8iTR9j0q6sSxegmf9T9kRWwKwO11qkk144iRUUtB7OSr5u1TbAdn4yzmCvllnOBmTsQ==","signatures":[{"sig":"MEQCIEKgZvCrptO8yJ4m2bxFcBVa9H8XAuj2ee+ZOpqn+CtYAiA/AAfHrsHBnzfcgW2vJukrPrU+vy2XapMEBzFYah5klw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrKyoCRA9TVsSAnZWagAAqiAP/08NzpOvrZf9ZcGM/t97\nXBQqNiiWu3IJOtH5btUIbGND30csbn9E6WWCWvl7PG0r95mKzFPGxkz+uZhu\nXXVutAFivqguLhwB3YgL0Q34okuUUl213X19aP0ivbodfu4IAODyyJCa/zU5\noHy2hfAhMB4M6uCGYoN72Dy31oBKV4iWxeg+2IwDk4fXmbVB582o1d4gNpdU\nP5Ks27f51Mp6WprCdJlfYPmASCKEJapYPaQ6yhRweh6sqhRyLrQTkhr4KALF\n9EG0raFdETxJOZv72xxvUb2aLYA+0/mlC3up1B3nWL+Fyhc+T6y4g4ySbbrS\nodmUGfU102If3NruEKUmB54TtJ2ppi6MJFnpHcgMYUBnincIGLAWI6b8orTK\nXJ5Ud6szGjfgpve9a2jgLol8jXeIPj2mXhy1hJnVaQP4SywH//NAZjLqRn2b\n9gOAn25dZs6t+8uaMgDoXPJ/2ilMiQJE7GFWQRjho5m8wZeYd8SAbht3rqe2\nDSQH3FgsePnfX/rP8v4IRFhW2CN9bnEo5b/X/g0bPoQxCVbuSGRpJQBodMBi\n0tzEpO6kKFvV6rauGuwHeUPqLiOhfMzkUD+W5668kn8c2CfesVkbgYFkcu80\n79ki5B+dhhHbpfZQ2zJNNBmNjF6hvqe95q/wnsahkHfUBHppAWTenaj866uc\nrexS\r\n=7c3B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d48c36ea6521e02e035b7f74b8ca263072079ce2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.228"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.186-update-integration-constructor-d48c36ea6521e02e035b7f74b8ca263072079ce2_1621929128417_0.7255285748716003","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.186":{"name":"@balena/jellyfish-sync","version":"6.0.186","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.186","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b7def11172930faa16fe58842f12a2393cd420e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.186.tgz","fileCount":24,"integrity":"sha512-LW/I9FFElTjMs/ElUjmJS3Lj7OMVKWTZJ8vLFtorDVtnaIkqfG5DZ47b4tij9my1590mk8fzIeGkWj+WcjTJSQ==","signatures":[{"sig":"MEUCIGQvIV/BsN24yb+/mSlw6Kb0OYe1M6ZkCBJ6wFnwS/9bAiEAtN1lf8C25bfOAwzGzh6RIktJ/wJn/F3loCfLxKKmAkk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgran8CRA9TVsSAnZWagAATPYP/jhKZMBPoK2lm5k/2r2O\nNZSrza6aMVHKz6FvprAsA8rZlu2yP+eQpVOO+mLDoNjN6l14+ylB9fBTP8+t\nkNh/FLpXM7jbW4IPBIytEKdeVyzGE42KFXp6bwswJ6By/DoycxE4q2NZUz9U\n5QLnB/cnnPGHM8WRbW0icJtkwA9QVFLVI215cw0HeLinlPMRcVvBQxvmoTok\nlZMxTA48tGHC4YsGJZyCfTb8gd+1dEePLdpMPvMcSZfPtExqecbreB5Fkysq\nGnFmRHy3GeKb0PrYG6E48pW+LNi9MgLQWfmbT+YJan2cYs8xPEqRnmP+Q75L\nu2ql5isjz5CMspYNeChdMeWHuTCr8V9OG2VIqRLRXmIqPknWELs6pWQWqYfW\n/F0EL9uHoPI9uE2Hlpdb6E++UgLVvFgN3OcijKJwFiH4n5uv9y04dt3LWm6Z\nUmS0URO77Ek4zZ2csOXCi2HGFIMbBCPE/9UI6iVursZa2l2EO2QOw/mTtUQz\nV92lsAUk/wAW0w627BxpflLFGiLYsptU51OdtypEttADbJMwVXfBnQn5cDh6\n0u79OmyYj+vcU6hHd6gqBqqOcVx3P0zugyoDGYoxSPZbofsWIcv1IKo/mmJ6\nDT6aNyhUMZzyeh1qXsHtJFimQ81vU39N1yWq5Ofd/ZOEt2U7kT1DACywfc5z\n5PXX\r\n=XP7D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7824a148862f96ea3b50a79c06439394bd9c3588","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.78","@balena/jellyfish-metrics":"^1.0.228"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.186_1621993979578_0.6730918040298877","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.187-renovate-internal-patch-ce426aef4f480748943c8c86d128322eef09e636":{"name":"@balena/jellyfish-sync","version":"6.0.187-renovate-internal-patch-ce426aef4f480748943c8c86d128322eef09e636","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.187-renovate-internal-patch-ce426aef4f480748943c8c86d128322eef09e636","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a7d9c669b916c7bf01a6b61e1f4a35cfb4324312","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.187-renovate-internal-patch-ce426aef4f480748943c8c86d128322eef09e636.tgz","fileCount":24,"integrity":"sha512-QpmF9CuePRE/Lxf/Xzl1QpVsGFcbH6Tfd8lR4e8HuI4JEB1QpLoxAfYfSyEncm2BBnECdFj5JJlJ5Jay3KbIPg==","signatures":[{"sig":"MEQCIBCYl/QG8CuMtV7xDVK/i+zVuWvZHAdgY3xyRVpfiS+BAiBJNp1ys60pXKhsna/J3LbKAZoiwCgi2cs76uDGH+b4Pg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrauICRA9TVsSAnZWagAA0GoQAJswmxYMFOw4LEbEdT+3\nhHiEzfc/HzgPZpKs4gQFCsB6MtSFcXkiqpnWlQFFWt65MbMCfjIFyA4NRwf7\nExgngqc8TFrEcgnKzYQmWgiPI6nCK0ds2hQqU4ogNC4nX4//xy4ptKwMYGyR\n74gT/5Fvw4yyH2iDbeNUrRIiuRE+FJsrXc3lrEFH6xGVW0euHuGbU5EnEQnO\ntSy1ny5evTAhqaZ2Ig1NvQawCKN+Cjv8heLXmom7c4191LMzf6wjbX6UBBxX\nSr9W9WcqGYL2p04u50uQUZF68zY21s9bwMP+p/OHCGGCHzozSoSqETFRkTEs\nXSS+3sRTmn9EsSeBxQ13B9Q+85yZMG98SyoSOvNaoSVJ+uaJVwcjb240btNP\n/s+JNQ6+A58ZxMKH+zIGlZKexQc7TY2SZ0UWwsHcj1pONpodIsqa58e3qkC3\ncvHX26kDA/X0R6RkmlrXasVWYcnRLlAPvg43iBxjf3ZwNCvaGchiGPrulPps\n6fQbNGIskpvyv/NgOg7O8m+Oswrr1wfiRIVFCI4eSf4hnZO8HbzrbiYmN5LI\n7KV0iuQ8ui+btsyG6u9iX7a5cTChWcJ9/VRiw+Zlq/SbKoEQ8qw5jDYFOROv\nSojuoLHpvTmujud8va9jET/I7Rr0H9fnuTamjqrqYcFU5X8uULpcRLEznceI\nOQeQ\r\n=1MY+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ce426aef4f480748943c8c86d128322eef09e636","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.228"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.187-renovate-internal-patch-ce426aef4f480748943c8c86d128322eef09e636_1621994376244_0.7284969235180094","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.187":{"name":"@balena/jellyfish-sync","version":"6.0.187","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.187","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"07870f9286feb514e9a673f4a1bb9c02753c0bce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.187.tgz","fileCount":24,"integrity":"sha512-+U4Fh52MtTwEE4xt55/654+/EqpbdpsYJZnp+p7TJM4tQ89w90ojZWoXRXp8zelvG1Wo3JZUd9mb35nizNk6gA==","signatures":[{"sig":"MEUCIQCCyn4RsLVmUnE0t9oif9H3HqLEsMGG4ftsK6yKZnR92wIgAghPcXdj1w/2FI8O2Pm+kuEixZhuyx/klt9MhqolMnA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgraxnCRA9TVsSAnZWagAAK0AP/inG03fc1SeDINaYSM7m\nuXrFAnV55wAPXhA+oatJRfp2v6CPBNJqcwGOM+E8658ySFmwV8Ig/92LrSIS\n3y4LvRl84EmRiK5hgnk4p2TFYCPq6LVGBI3E+0B6ccCdCb1AO6HIs2MtHLsc\nEVTWr1oL7MAqHn8WhM1Q0IB08CwDGbVsQn/0h5bStIMIvE852l3lkeaAD+So\nrVHWwY0bGaC2ifdAokqiKIjHxMnI7KZi6yFv1W5FImQKz89HBiINcUBNXzYn\nMJ+FoSOPOf4Esr6c2fEDw9X+ZMSEGw7p4gjlb/l069SlaYJd+k+tjuKmj68m\nNFlHSePqQJZs09dJwLB/d3ECi8vyQyBwXvntbR1/puVsjWIKg6CFuYG7CW9D\nkePj6dXUbPco/cL5yrrecU1G1g7ECTKCX9CLRN0uj9ANLemsjqPbxTVaSyY8\npj7aG71eRTuTC68jQ/LMJbQr4tTxd6MPsSvt5wuKqhI3fxTfj9v+2QmvWnZv\nMTpYYgxZrbE3yexheg+DF6vXlWXCKVz1YnMwz3ENKHRVq6FrkWguN2ZNMy/5\njSyo4EjXZnt5vlKfB5i7EQtqefUJXfTTyarsbLf/uckDsJNuxBNPnYrIRjcD\n3St0bAyDnIxmEKzTpqSRgvB6hyNYJaIaxxVcmWbpGdM2v0s4/fnMrVQAkgmk\nQjRd\r\n=/Esf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7e82e516760e3d2557bb822df0b3acfa1f8f4e46","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.228"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.187_1621994599449_0.5789428206594696","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.188-renovate-internal-patch-16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520":{"name":"@balena/jellyfish-sync","version":"6.0.188-renovate-internal-patch-16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.188-renovate-internal-patch-16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bfac0964e4efe5a4841ce85cdc03b56cc1e27411","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.188-renovate-internal-patch-16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520.tgz","fileCount":24,"integrity":"sha512-JjeW3c8mgoUQL5EifTkgU6+zFkLG3gJmM1/uSan/XjccOeI3PyVRR7+bmdE/U4uejb9/nnuC6cKpjxjD0SChJg==","signatures":[{"sig":"MEYCIQDoqeNYdd5YXELZ6cJoY0Kx31TiSeN8l5pBYA3JjR0xlAIhAIdYIXtFzguYyD2REhBu0gVq7wnDgXwsPNscb08ebCae","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrb8+CRA9TVsSAnZWagAAVg0P/1lIhGGjkNxIs9+IyubD\nobS5t7Q1m3FHDbaqR8+GbgGDSff6E2IpLvpclwSxMoM2XRt7pvNZf4uFl9Lb\nUBVzsGjxtYMzjrQaIfoyknzaL3CNDw5fhoovFXCEDRBKaDqtJeBqzoBkCc8B\nauQ7V9qIqiHQ0GfuwhFBA111Z8O0okLhJicUT6weNkpKcyZfNjsQESUUV6yP\nGO8qKktCK1T5CgrWSSeAJyM9YXQK715FFS8uBbnyJ5/Q6VEhVkNx73k9oMR4\nVgtACKPcxTZvfloWi7WlePtSnsgnmGQu/vpwp8XKrewxJi0E9WjSMml4TBCd\nCx0RInDMGfNtPk6+T1xPUx4oTL2cqNXgzQ3pR5pbtq5NH+GZ7JLEZeUjuzxg\n3hNWVnc4Br++quqJd8fF5dqSHQZ3B2BAvrjsAUaBGff36PpG5HDJczdgVaUi\nQ9RFJn5qMJpM7Qd9mbIAmEHvzZQkg1lZyiSIA1EDLPXZKUc9BLY7x15iiGHP\nhNm38IsxkZm7LcPcWpchKCRnngeB84c7Ivvh4o2GSKgoClEH5WIoHORYypiB\nZKpdG0dMPHe/+g+JVXp4hxr7zz6XJx+Z5cLzfgfdTOv5svlk0cDB0gvMqDQV\n8O1X103haHF4+tDEZJKb508axsNElgKBfcFW4RZ9WdWL5EaJEkeKpu5uva9G\nmDyx\r\n=+q9m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.229"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.188-renovate-internal-patch-16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520_1621999422284_0.5388387505766197","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.188":{"name":"@balena/jellyfish-sync","version":"6.0.188","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.188","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b8a21301882a6302c67fee06687c976434a6382","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.188.tgz","fileCount":24,"integrity":"sha512-wHsuiwdk6s6nmv42KYCWw16XXUj3rudzE1SAVKIn9JgeLZwNVSXPCvHQGb5OsMecYLnUxqmQNdCNM4VvNi6NDA==","signatures":[{"sig":"MEUCIGVMUS5ULCBB8LL+5LZCIlGLIdC+/5yihnrmbuDthfW0AiEAzxoNoDfTkjBp4lHI4vVQNs4iH13b9FNp0w9H+G31Ffs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165905,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrcAqCRA9TVsSAnZWagAAkm0QAJenP+D+EAO3148Qp/rV\nAKnbgnCDYvU7TluDNwFtl0UBJa5NNunqCj3Jecb1q3DQbC1aaVttBw4dfUuG\notQL5XtOIA8EN+WUI944+gjvPwsGdjK+Xspd0AKXSJezrx0fAlSa2+QBpaBn\newR8mdMeg5vH99dzo0erLu9fayMU0UOP4AXu6of8cTKgyBtjU21MDjKST3jp\nhpmkRabfxH2ezX4Uc34vuoVBdog6bvoyFZ5pVYt5fPfZoAU3rWQtd3+ieCYz\nXHM/axuE/K2tuzSAQ4aQQxmIcNzRr6T9izNR5j8ia2UZahpMSGyHDk1sKUBK\nNLL5BXyhb/KHozApoOwJR7NH29UfiNyDrKjZcKL/4fxuf+VWxE6r9qcoOj62\nl7aAMYDj+6HY0mwROuD4ABlQ2Ya6FrGmrrVl2819VIYmU3m5Xn1s9RsBuHue\nDe68X1UU+tPp2jQL4an/YtAit1nLcu0pYLiIxY0NT0VlKLTjRMB1qO2n//rU\nxxg3JrVeXGgWrW5lQL8obIi2rHwbO4zzXpdxsCuzmdoFEnwSkOZZVFlvuo/V\n/MctYBO27shlFsp2eVHrjSPqz69Lw/vsMGjxjTb6BzQy6tvspJ9ubNBisQBi\n7p787B4QUxHnLp54OMwUHgD2zmrX2IKlLkoIokrE24Gf+Ea7r8jhxPWzMZU+\nfMOE\r\n=LqbC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"17a55c3647eb8ba397ad5155d5f76b6278e65de5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.229"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.188_1621999657867_0.7975729668125917","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.189-repo-sync-jellyfish-config-default-a63130239c90160ecba85839a960d607f30aedd7":{"name":"@balena/jellyfish-sync","version":"6.0.189-repo-sync-jellyfish-config-default-a63130239c90160ecba85839a960d607f30aedd7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.189-repo-sync-jellyfish-config-default-a63130239c90160ecba85839a960d607f30aedd7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"09728bd412333167c5f8d11f2da11dbc9ffdad55","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.189-repo-sync-jellyfish-config-default-a63130239c90160ecba85839a960d607f30aedd7.tgz","fileCount":24,"integrity":"sha512-JXn/2HGu0hrf3MXkzVVr5iMDqNQ5QoxSSKSbnDNh+a6jYciB5uGsVVObwWzFq0KI7SpJ7uu0i9sjAW4DoGNZkQ==","signatures":[{"sig":"MEQCIA6YOLcEORGtasM3F38Dd2LiNw/1qlrDIjweYWT4GrrCAiBlFic3QLIpEllh56K93pFgL4N3XtZRcFpXX1Dct4XV9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrhEeCRA9TVsSAnZWagAAZ8gQAIcMi6vPd3z2gah8jlFo\n9MxopNpVSA2P5SRUrNsjhH3SjStLBpGmvhSP7WGWPxi8uq7jcBdt+n0HcnPS\nOQR6YEjU9BIyjlNcBVsFnaP8818tRCbUHhA9LRNZzyxqplrpzbSi7YLv+Bz2\nCxJntnpB4HCu1e/7dIIKWZoeujM3K0xie18nw2LD0JkCBQWZTE65r1v+ZRdi\nRQUC21oW0YEaOiiuzVtQoDlWtwmrSUojow1SxS5Y5gCbqkKW07NrxoPgkOo/\noosIFx/NiFOXWDeAS5JxUu3WoOtms006I3OUdq1qPKQb0cc3NKSaUMBu6adt\nIG5X8ri1SvDU9apivKCB52oKeRWcDkQ54YF+W4d7JwObpTeBsIHrx3zCA8hQ\n5PEMQ+m4YSxzwBHGcEOLVEnXLJT9fe2dUgkYDTT9XPEZpcoDfm4PP9APai9z\ncFidyTVu51CDGVkT2ABMefOQ8v7KqLh9H+n1n60vVTUq5wmAi4CUiahBsWap\npN+FK+JLXI6W4AGqxk4XtH5wNohTq9ltvHA1MyEQVheymAW/vjFzIQ+te7xQ\nEgOChfT5sVCFKxgA9BdGuZvcUntbg/lJwQlc4E/nbyfv5gGPKqLPFEZGLZKk\njn5FCkY8GBVGc2K2rS4rzpLAfocsVckgReJwhuXifN7nLYPl2eYpiMJBIUvM\nZl1V\r\n=ydpK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a63130239c90160ecba85839a960d607f30aedd7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.229"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.189-repo-sync-jellyfish-config-default-a63130239c90160ecba85839a960d607f30aedd7_1622020381263_0.09373122180140214","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.189-repo-sync-jellyfish-config-default-bca0a7bda1f7634d322c3e6300e8c0e3c65bf620":{"name":"@balena/jellyfish-sync","version":"6.0.189-repo-sync-jellyfish-config-default-bca0a7bda1f7634d322c3e6300e8c0e3c65bf620","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.189-repo-sync-jellyfish-config-default-bca0a7bda1f7634d322c3e6300e8c0e3c65bf620","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"09c85a39200e4ca545eb2656a5e644ec498bf50c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.189-repo-sync-jellyfish-config-default-bca0a7bda1f7634d322c3e6300e8c0e3c65bf620.tgz","fileCount":24,"integrity":"sha512-ZM9AIyT9+obR0ZEVXzgt+l5l0zkD9+PgZ2wjs4XsvcxNlWwd4Un590oHhC+R+z53DIZN/gH92JrDyFkzbpv64g==","signatures":[{"sig":"MEYCIQDZPRXjpJ7FZ5UaefMRJjiGi4JDK6ZC+t5rMKGIIDakrgIhAJ2mP3sS02hbtXA3wOqbhU5vAHCha9QTU37/lcW8pw1+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrvPXCRA9TVsSAnZWagAA4V8QAKFLKeGyNK3dJDg8wPw1\nE7osWrPWSlCx1GzJnUyzjiLWrWmqQtFR4QrdowB1fGsSqAi2xE8HnduwEYrZ\nEO7Q4hkeco9wPQ9glNDkbztHWF61/h/3Tz1ycp37WSraJR5gV2miOebqXZEI\nETHRM0GXr67SnZyfYufoA2ACXGSbN5/pAJLq4yZvRa3lpUW4T6RFQUf9ZLJC\nemVSMeLlrK37g62Cij97vuqZDTH0IkXwOGU53F7r1iNQW5zFjOV+LkkX5yUK\nQ2Vz8HncbcutVyyaQZfB5Jn9k3x5qMmKje9qWs+LQwPXw56jZH/sCQKj6FfF\n5IAEKEmmyOR2GBsAKL6cjg+o3WGCZO27SA14s2QTrMWBIbxRp5Suqc2q6Zn1\noRUanRey9vqCUb1SKbA1D97kQUkm7DeyNbedS2zP1lgxgVAtf0I8CQHhc3bX\nqHaOLHMvOuoetZ/k4MXNp+xbY/duNFZJL/ei63rSzaAAYTPy+XRkKKX7xk1W\nrdhgI2aEDFF33dzjLo2m7npLFHV+6NmR7IrN5Oi9K6996oiQtqp3WtGvjwtN\noN5sxmAT6MLzFCxvtuOKvlgCcw5vkCb5Fvoe0DJux4F3cXG9bnZ5RX6oGUCV\nsDN4hTPGcCo4h+sNU/O9kgAEzC6sUzDdOyvRe8yvr8ZYgvzmJDe2pPq0ZLdd\nmN/v\r\n=6s9y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bca0a7bda1f7634d322c3e6300e8c0e3c65bf620","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.229"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.189-repo-sync-jellyfish-config-default-bca0a7bda1f7634d322c3e6300e8c0e3c65bf620_1622078423156_0.13601308489820285","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.189-repo-sync-jellyfish-config-default-1a2cfaefc9502b226e5f5f6b7a173526ba6771e8":{"name":"@balena/jellyfish-sync","version":"6.0.189-repo-sync-jellyfish-config-default-1a2cfaefc9502b226e5f5f6b7a173526ba6771e8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.189-repo-sync-jellyfish-config-default-1a2cfaefc9502b226e5f5f6b7a173526ba6771e8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f4ad552c5a50a2f62d18526fca21d79ef2bab596","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.189-repo-sync-jellyfish-config-default-1a2cfaefc9502b226e5f5f6b7a173526ba6771e8.tgz","fileCount":24,"integrity":"sha512-kJXq/2Tz8/OVGbqwF5VfaJDPl2fYWQSrkzkiA5LB7fwtDWU1TSz69sazcqTi4HBTtn1EqPoDlZOnPzRU8QXvrw==","signatures":[{"sig":"MEUCIQCkrG6ySsCBOGKmdDufQFthe4GRQZ9W3vsIcLoVNnO2RwIgNu/+9C1nN6l0+vV/HagrQBvS2wYlOQrnw0WdqAU6CgQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrxDQCRA9TVsSAnZWagAAwo8P/03yCpwoO/LNPZc2+5Lo\nOHPsK3YRiKbnSJC4+tmnKxHS2cvIRzDvS/hUnLghJH5sFQJvOHKTuS8EWmUx\nUpGUHhVQVKdJkOvfNywSkknUGFtv2Fd2RYpH08LwyaYcMJT3xea4h5hMhd80\nFWWLfkRGWpxFZ1bIpT7y3XAm1L/hHMQnOSuXuyhqOQ4zPOKbsyKmgU1RC/0e\nGOk6drrJbFu7JWTl9RoCF8vh582Z4Fl38Q5v5rmDf2/urC5YiV4p85U/zD6b\nWi2/QcUyhhnNHQm44aQTMf5NXdMdot1/UlZZj2RGDxctgDVMj/eGES2eOBNE\nL6vhNYqRUJFV0rb/naz5hatSculszXMFz0aTqitPnOMlBCq7Z1nYsfCS2rR1\nsHR42c+8KZBkyFCV2473ZZsLQLMoY3w3MU/wLykQdvQppN533G10KgTWs+xv\n/eXXyDpfLRRWafr/S7wk/9N82G0C2ooq3xIHLc/7b/jUKS6Jili0SBFnsLkj\nRnFSMUEaWpIhbI40s8NIqGmHV3zxgMlosVfhZfF9aywxn3uhecSQB8UFpuOm\n5kTDysQ7IIgLU+rZEOTZGFjsLX959KMoMMVazaGZH2Hu4IbVts4sMKrzCVSw\naiU0GRgPQHI9M151s6d5HQ7TXvTdeebrNzGG4vK7ojP3Lw5BcgfZYmPi0Obk\nsVdv\r\n=yOxT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1a2cfaefc9502b226e5f5f6b7a173526ba6771e8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.27","@balena/jellyfish-logger":"2.1.79","@balena/jellyfish-metrics":"^1.0.229"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.124"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.189-repo-sync-jellyfish-config-default-1a2cfaefc9502b226e5f5f6b7a173526ba6771e8_1622085839860_0.5878863582108975","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.189-renovate-internal-patch-43235c75bf10ef6aa7d49def741c5be47c869178":{"name":"@balena/jellyfish-sync","version":"6.0.189-renovate-internal-patch-43235c75bf10ef6aa7d49def741c5be47c869178","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.189-renovate-internal-patch-43235c75bf10ef6aa7d49def741c5be47c869178","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f5fac3fd9d2a099939e218c5c393fb25a81d310a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.189-renovate-internal-patch-43235c75bf10ef6aa7d49def741c5be47c869178.tgz","fileCount":24,"integrity":"sha512-0PCwqnmRJn9nxiKTykeCqOm6YzG4TXlgr5Dw4HUeStsQl8TC94CW+uMUHX3cze5Ja5J8N1+aKNLxgAtF9RGbRw==","signatures":[{"sig":"MEUCIQDKnO4MVtwmnzO6roxB/6ZsivG3rFDQOwWrQpX1UNQuwgIgOU1L1LHbngIZ/59cQhYPYITxUvl4QX9YKbTkl9qBVs8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrxH0CRA9TVsSAnZWagAA228P/2y8ch8vvtCQQi2JQ+z0\nRwx5faAzzXAiH75+KKC/3afKK1J62WiOg57wPZldUhv/Fm7HhG/M8kwwSWty\nWyenc3+pvh5zGdaOEnwJFXckyDnhhJKv8HJ5VHSXyXTlVsaI4oBnuppfio98\nEiF0nQDmZnQgGck10a3QeHqzTZejFqKcx/lcfwUUin5wwDe6i2F0ruGT8NAo\ng+akbO7bpF2rDb2umUbVXRnSiG2syvFdQoXmBkybFLDQ7DlDuDAhEYGl2VM6\nyuAb40Z3M0cUKYpmEjUhS0wZyDkfR1zDJYFt4nonTd9OMc2m6z16AXlOP8no\nmf27VDqDzkpt/j1JrWWuvqs48Et++TPPYuY0FhfkkGK3zqRPcXYwYg1pomeE\n5q/QnlM//7gP0hAZ5MbBUlrOEG2P6RdqZEvMeN2Ym4sd4BwvBOCJOSOCqUpS\nR3azlD+iPm9ZjZv7Lv5dpKP3Qi2xOsabRdlx4SQSWo0VE5rxAstL9MDEqSkY\nEvdEIHW2UK9sLENspAPTYuToW4IT7azUcQihNgIRRNnk+0EP1zPMn13yPF5B\nkyg0outF9l6p6YtHDrhlaWlaCiixsRVvn91FPTD78TUwkssr9SyeNcEDxSNv\n0X6NcsgzR51RMp+fzx1Zn73e6cw+T9BjyWrrsqv9eN544XHHwfCeM9x+OHGc\nYShy\r\n=c9RD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"43235c75bf10ef6aa7d49def741c5be47c869178","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.28","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.125"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.189-renovate-internal-patch-43235c75bf10ef6aa7d49def741c5be47c869178_1622086131846_0.6087814638102835","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.189":{"name":"@balena/jellyfish-sync","version":"6.0.189","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.189","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7a14a95438c7006eb8110235010475e652d00639","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.189.tgz","fileCount":24,"integrity":"sha512-J8fJ2xV5iB+7LvvPk2iTkHuHpLcbUJXzWE+reapSwI5ayi1iGYhiUSl9OPO+8Z9C1ktn+zFDRD7HhsJpWQDZUA==","signatures":[{"sig":"MEQCICa3D1UmHUMMqLaMFlELBy+hw8tHk3pEveklcHMxTwvmAiBEcCd6vwtmtSw4RPCURgBvk7EVod/HsW7nKk+foZObUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":165977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrxK0CRA9TVsSAnZWagAAStIP/1FW0ZiKsWj1lo5ksZci\n+x6JxOWQLGK0bslU/j9XMRZM805ImvHGczC43nFhrrNjm715rPK8xDaXgv5P\nrsHzOmrPy049qPXGiiTzLyNEyKA/Fz9dPHUHcIs/PkzymmvSTltJJFzajX6V\nhJLc21Huab9th6Va8I4/iEnJh1SQ7PCgH5aTqVUYdHB7/C5eJXfUKacLpq5c\n5CPP4tsm52JUqX8q5lI3jasTtv5oyBuoOhKLd4ijRbvVLKMUCEwxsEeaEckA\ncSYFpLT7hYEIDScBONbU+u7IDq9eDtlGlPVbMymxzpC4b6wW2kwbRVmqRt8W\nkJnlU0m6pn58Q6AEUG+BW3HjQAHAm6DLP4gI/5Da0x+eIHm6XTLajTCnA2du\nh2Ln81y6xCh2PBoYP856fBraF8n5OiJfNzeNBHgtvWp44KBwmSjpeUX6/QGD\n668+uogZWpM+LQFcEPQo/9pJl3LvThcxqbCV6Zwyxnys0GsTr0OrqQGd3Fuc\n3Z9+UkeyavRIBpmt0zSC/LYfXRs0wzrS8rCz+hzB0In/sHgLdwB7KkFIQdtl\nxUS5QPUxud7UdvmyfVYS3wOrcdaYZZ6AHHeKJmua4dzYz9ESlB7faAYwnFxx\nfUUGxjbq89Dga25yaBR5dLNyqh59WZc91G/hWJvhHHxuiR36ip+smhuNr3OG\nzwfw\r\n=3b+t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7c9616898d99ffd42872e878a5268c72b3948baf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.28","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.125"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.189_1622086324156_0.9650566698139342","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.190-repo-sync-jellyfish-config-default-f39f46b93e4d9776a66d30511500469b68d38e32":{"name":"@balena/jellyfish-sync","version":"6.0.190-repo-sync-jellyfish-config-default-f39f46b93e4d9776a66d30511500469b68d38e32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.190-repo-sync-jellyfish-config-default-f39f46b93e4d9776a66d30511500469b68d38e32","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"32e882fbb89548aa911583f66794c93739a748fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.190-repo-sync-jellyfish-config-default-f39f46b93e4d9776a66d30511500469b68d38e32.tgz","fileCount":24,"integrity":"sha512-GohW++vaUu2TK4tKF7428M5bkI/ZAQNnTsf2WqjyIp8THXq4FPBtnFOsBhirmS0/9cdv6BgLp733y/2kLLAdXw==","signatures":[{"sig":"MEUCIQCJMwXOh0IIUsUgKljDnkcKYGNhjVdaNlKp2fooIcmqTgIgLyE3O39c8QP6rS8qVdd9PKHSvUjt/61jI8jeF1bLcvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrx0MCRA9TVsSAnZWagAAgdIP/Av6xqTPYH7VD7BcoZhZ\n2xAFusHjqdLduAkOR24o3iaQs45YErc5e9LiYKesn+B6rsKd0WMpmuL1MaBm\nBM7PP1YdEyozVamJEBf7aMS3exMfPfDofnJfzFSYsCOt3stvdtBtChQ1hYk3\nFEQFtQ4Mo0GhpmNZSyYPliNxh9nvefySfW/eX3Nd3vGiZeDvUO1TgrnNG6JO\nnAKuN7QGCQVCQ94xLrI9hNLyFwK620BLMF6srVaHEveUyocR1Gkc+cLDki2u\nr+DSw8m/eI6QFVOYGGcblvVrRiwllocQtoCwLsa7LynzLzCwVKyMoP9TfVwM\nH2g56ecQsoZyLyMbW6Ug04YbmFR+lOJ2p7sWRCd36287iUHNrrFQcn+uQN4h\nYY/6A4hNqO+/L2KUolpxHKEMyRAbu7hI9E5FSuKfsoNUy8GLOmJUH6oq2eME\ns2Yh/lvpZ5W6w2fEapu8T2kX1iYuOB9RjYlkxzLaVsEi+X1HzU4RwrtS6IT0\ngcZI1dlNLvJExkdyqTMlRXSUdvH0CEjGPo+9pEcyVEVXcoYgEQe1T5gv4/LI\nSpkHInkSl4Vju1FtqcFK3mP962x1m/9iitsjjQmLiHnRX+7gp0mBglS/AF77\n5SyUSP87ZB2vs8Rq7KdViehvjVEnY2eN4AmUuuaGHBczla6HWk07ch7iz02z\n9utM\r\n=VwtG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f39f46b93e4d9776a66d30511500469b68d38e32","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.28","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.125"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.190-repo-sync-jellyfish-config-default-f39f46b93e4d9776a66d30511500469b68d38e32_1622088972142_0.30406220030136333","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.190-renovate-internal-patch-b90d633ee4444162cc1b20e2f31b101fa88d7b4e":{"name":"@balena/jellyfish-sync","version":"6.0.190-renovate-internal-patch-b90d633ee4444162cc1b20e2f31b101fa88d7b4e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.190-renovate-internal-patch-b90d633ee4444162cc1b20e2f31b101fa88d7b4e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9e9ba0c64c41b1e5f3f0c5121a57908fb2afc42c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.190-renovate-internal-patch-b90d633ee4444162cc1b20e2f31b101fa88d7b4e.tgz","fileCount":24,"integrity":"sha512-vm2yFvH3HB/eAafUIf9qW8gP7poCIV3QVfNZ0m1/4VAth/UitwPrkqR3BcAmJiTgtIXbKbwUjIEyu83UlwR/6w==","signatures":[{"sig":"MEQCIGet7M2WD2balXW71UwRpxg1HZQkJXyb3cnL0KqZk3LCAiBrkOhk0n1qgnqZ9ZJKTh7cNkawL2TrZ7u+R1mOcpUuNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrys2CRA9TVsSAnZWagAA7bwP/imq4C2Pfsp4YP8EspMU\nkolp19GHsjuQ/lpenwKRajfZiuOiLieSg9RgYctxul+oA0lYoNt8hHgOWhDb\nVhb/d41AuwXH/nGUoXuGu4I7NPBQ/eTp8FoZ1kZOxYSQ3JlyWFLmGO9y/uzD\nruRWdJDSqi3u75rFRVvtdx5LzyRGU8CRWhdA1wdbkAW0liYEMfRxmRA43iGV\njquB9xfjP0HNnIJy0eA+Ti8QuMs1YuOvZpw2+4aOVbLj2Zw1t4kmm0+LDhKY\nXug1L+P38lts8ahQKdKCFFvR7hPoNh/th3Da46yayZ16gOTigvNaeRrNKf+t\ni71vVtA9C4GQJ2uD8Wc3XdOhVQAC7HqAXyyr3YesxFn2GHUyiCoiqiXyHkwk\nQ6ttULlokOyCOcwo7+FSqUQ3Ieo+opKZDQF19bqyafBeYvY01c+yPN1nwcxC\njaCQ6uxIvdXM+VpHcLSu15ie7lKx1yBFNWhrBQp/hT0iWvK4M4/MdPGv/AyD\njTGhVWczsi+9jqQRWMNPUccGRO27dMTJe3feu2q9LXFXq7XuN6i1o3HPQh84\ncxtgpL9oEC/9zrKD8M23o8AcGSL9KNK5XF6MBoK0YmFKFMxUnF0I4UfZkUfS\nGukOCIyVQvYu+0q6epVHDUdrhwmNpkK/Zigi6kS479SOR9vXV0kO1oXfJ2AQ\nMrPI\r\n=JBHA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b90d633ee4444162cc1b20e2f31b101fa88d7b4e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.30","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.127"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.190-renovate-internal-patch-b90d633ee4444162cc1b20e2f31b101fa88d7b4e_1622092598083_0.02555198220307875","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.190":{"name":"@balena/jellyfish-sync","version":"6.0.190","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.190","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3a78c565c144a96adb54a08f04135f9ed70ad7c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.190.tgz","fileCount":24,"integrity":"sha512-V4vz7tU8MCULhxZzOVG1t9Psc56dtOM7k8dimVi5NOOuSw5xIv8mFgVti2c9UFi3gZdFAsDlU27+VbhLjBKZlw==","signatures":[{"sig":"MEQCIGWGGP5o7HyqpiuNcGFasoPgGZjUVyuzIWFdHS+9lFo4AiAzNbsCEmnPFurGwKfPLd706RuCb21XhfbXAOWXu2yaTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgrywtCRA9TVsSAnZWagAAF48P+wQWtx7FyuQpEIklsw6e\njKbHq6uHaU8af3e0GzuxrOCm+QXy9adQmV4H+er8bpme2oAa/70xKodGVCzg\ntx9nH4YehBgxIcvB+gM+lvFzz0P5qbfdiLitV+UHHxQ72FlAZo1ychxfIjCF\n4vC++Fsq9fHTtll0M99THNYjJLEmPenpCCAmm5hWV3J8vF8PJHGsrI0kQZWQ\nTo+A9w6BFkoHXqpaZXQW8/UIzp1Bm1vRGkW+tfhy3PgwsFbtyGxyZFvKtkxy\nVgSdmF9Q/PjEa82etOGRT6LgedHjOWcsxVGaOXRWRIyP2xs5+JpL+gm56dWZ\nEzyP2XjUXEkubEkedKCyg/vyk6cM5SRnaCsiwuqxAUG2Yea9zcUBgARxLrHc\npItkPYXqCOEzzNVB/C0gNmNUHdIlxHouH6D9y+Uj1TLJQNTnA78NPLNIzCsi\nK3vDkYVFAh8sI61XPoVgY4l95WFs056m446wsAM9/YbE9sY4LS5xXxr0nG+i\nmHA5XbPXvyA/bDEVH9Rtubnkg0gcaOpmu6V9dEIr/KKHR7niXv5UsNTbxMEJ\nmKZ0oOT9g7lC0jvQYIuDt2l5+zCWHJlkvgVXCmVP8UGu8K4BAAIC04pw59xs\nar1BOJQAXYirx9F+A7aYxdrp59ocSq9J+N1k2rRpp9TsYd/Yi3rlScvJSlg+\nJ4Fh\r\n=MtLw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c824fd33941a83889cdfdd46e6911152b68615c8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.30","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.127"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.190_1622092844803_0.05978026346721421","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.191-repo-sync-jellyfish-config-default-f6818f9752fdb6064ed911512700067d8141a894":{"name":"@balena/jellyfish-sync","version":"6.0.191-repo-sync-jellyfish-config-default-f6818f9752fdb6064ed911512700067d8141a894","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.191-repo-sync-jellyfish-config-default-f6818f9752fdb6064ed911512700067d8141a894","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bb6f92b67f54adda058e0232982429020c336b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.191-repo-sync-jellyfish-config-default-f6818f9752fdb6064ed911512700067d8141a894.tgz","fileCount":24,"integrity":"sha512-9me/+4z7hTrl41r1BxEZUfGangswxdiiKE6JY9DdPEF71p45Yq6r+8k0+Ag6w4zUQDf7L4eHydBFMFzHcA5ddg==","signatures":[{"sig":"MEUCIFzMlnGhhcgpYdcdfHhk0U+L6FkmcCFqoXMuWFGrqRoEAiEA2tdzpIaPz0ACHwyZKXKducYlvxcej5QJFni71Y5/ne8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr0FQCRA9TVsSAnZWagAALg0P/i7U5nh995S3gUMp9pwi\nQ7BSUcbyaYSNm3FLLORnh5UiC2eUHVwBWNxerMa7YyLTrCT2/aJ+X/akOKtZ\nO5yrAOnrcKmnGvFTNutEKTWJ5YYnkewuMHgnMDyx2HReCPC2uT0UzbGV9fFV\nDCsiWRU/O1QPbITN2pRVpyW/G4nNEZAYvq5YB3G+MpgpW8wqxy4Re0kPqala\nZS7wIgYBjLyV7M5+htAA1SkYq6tBt6puJ03vb5o8j0+sIwhLvBv5Nirqm7XA\n4bIZqVnTfZZW7PXJgu2ns9SBvkCjbSejfOWx3xSmPCCja5dDNBBq1oYWu7Ia\nYZ/ajTfh/SthHU4HaixuVo0mZVY5CB/e+ex+8Ih27/eS2RNFUmhGyB5cXlFv\nHPm2n6CDhexz8mZWlAtsWDzCopKNxVm6kZMBP+JFWURskhlTWjEthS2MuL0+\nEjP6BOrLA6kMI1o6hwWWyxISrrad7GNxhamssI1kEDqlx6ca3NRA1QgeI9Wz\nus+eSRdAykZOZh2pz/w9vwMkqYm2IjkTuYiuIe6+bMEMwruABlf172pW5COZ\n+aLB0eeRhpVsRUAs75TYM+qAPf+zxc0wiRPHjIrHOjonHFOoaGAzD9ZKOH+E\nk6hu4/rfBrXKs8C0RlIeTz5xZO/M2QAw7O17SOK6GXmFY8qiNyaChYGT0vsK\n4O6q\r\n=q8xk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f6818f9752fdb6064ed911512700067d8141a894","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.30","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.127"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.191-repo-sync-jellyfish-config-default-f6818f9752fdb6064ed911512700067d8141a894_1622098256238_0.21572655682121034","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.191-repo-sync-jellyfish-config-default-8ae3c6930b30ec9a0787d24a428761b4864b7f13":{"name":"@balena/jellyfish-sync","version":"6.0.191-repo-sync-jellyfish-config-default-8ae3c6930b30ec9a0787d24a428761b4864b7f13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.191-repo-sync-jellyfish-config-default-8ae3c6930b30ec9a0787d24a428761b4864b7f13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dc7b21848562da68691ae2194d710e8f73d5c35e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.191-repo-sync-jellyfish-config-default-8ae3c6930b30ec9a0787d24a428761b4864b7f13.tgz","fileCount":24,"integrity":"sha512-hH3s8jyuVA/SAyWfodv7F8B25WqgAi3BQ3tBKqGRbBIRdmTP0ApM6PASNy9wGhXPKvsToNbghbLUhWi8mSuX3g==","signatures":[{"sig":"MEUCIQCqZN+GqrLgrDm7JiCoKVt2PgTAUsfdhzJY6Qx9GV9+jAIgMX6k546obvkUMoefeYTESRW6TTmqXvPSsEcp47aHvSo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr2HFCRA9TVsSAnZWagAApC8P/0DI36DxYOQ3pJMFl04l\nZuG8ZrRbv9ZTK1VT52Gbqz9fvhPljamobjFQ4yTzMyJnkS27G4JFcr0zfVLW\nwN8cGoEkHzQuyFviDnV5Alm2TMdO68lwUApRc0dzXS02FT8nTPcEwZunIVwI\nWBazeSKUb+9P5zyu8W4m6Ys2MhrmYvFRw+ZjxcHLKBKY0fOYOhiVof+XtCvE\n1/fk+j0OdBv/x39QAHZMHe0asyj/eAqTZg2Mu74cJ77mfkAwIL+cWoCJakUm\ntoZPKadrRiTDlOjML0+hHXluoWXAqrwk+sgv5x8M38R7BRCbN703o4iBJFhA\nPI/o8vdmS1fmZvHqIqZSD2sBFbDm1PXAHz2FuL4Gmuf2i7eByljsrpVAQxaz\nfQHM3Mn2oI8mgJZPVZsJhJs9PjflfsLxIMcmMUbPC49ualcbeciE3rQpOZu1\nX8ty7Kbb4VTmyPmGlWRX1M3dkpImDJGIZA9eo5g2VGkN3pX2sQY1jezK5rHu\nYq5khYtbfYP1WrDT85Dm/urRKYpAKEk9LhcAK5QN1l7Py0imix8Ej6XdVty1\n0Hy8Rz0PZ25GCYIgPKQtNbJU/9pyYXdaCnBu/XJtkeUXo25gmiCXCz7istEz\njkO7tTHdgzW0KHsXsQJqPA2rIqs4ZcMxi88MZaMWtiSCK8Q4jN5oKhTV0I0G\nJp0d\r\n=gluu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8ae3c6930b30ec9a0787d24a428761b4864b7f13","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.30","@balena/jellyfish-logger":"2.1.81","@balena/jellyfish-metrics":"^1.0.231"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.127"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.191-repo-sync-jellyfish-config-default-8ae3c6930b30ec9a0787d24a428761b4864b7f13_1622106565292_0.4021891912446587","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.191-renovate-internal-patch-cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb":{"name":"@balena/jellyfish-sync","version":"6.0.191-renovate-internal-patch-cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.191-renovate-internal-patch-cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dfd0b9de51cbf1384e42f4b615fafb4afac48847","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.191-renovate-internal-patch-cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb.tgz","fileCount":24,"integrity":"sha512-eXaeLlLKTI4B86W4OXSKZWlbmQCu+dKLUC3vunBBqhWKEebIYDMQCDPz7MZBuiyeiTS1y02c3bpWMk+kiyDKLg==","signatures":[{"sig":"MEQCIDwuuCdZXywprTk47eumrODFQe68hHyaAFXc9+++EvrfAiBlAKxImeaDHcieLZuWE9dLrk0m+HfaJU8vw1zcR/7uvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr2NLCRA9TVsSAnZWagAAezAP/2egFg0Yq2lEWFTd1FM+\nghpQL4Cc/ertL3s79orHaLJ29RxTrb7jrfUUgIEInFjJXSFw67vJZh9ulXDf\nFj3blGCLoKQkeGjGNyUKFQEg9ZCuVH1T2fYw4DqJfZs+HuizKdbmKnuqBoey\nuJV7ebhJfWxJjzaw8DGrvYgPZUj+r4nZWFclqStFWj1HIh/e2/okDx3LImBd\nOnOwbzuVjhg6abIYUKJ7TZrMpkDkMe4aqMDu8PxQCZja0Vb7UuH4YfEf5jwC\nwMoepgGmiIw6+w3FPBq0lRjzsH59sWE6rqN60w0BqCHs7GN/QNI2B5fzs7S2\n8lzJRfARNi2v8C77pEadkyboJZ3iSmcgmsZelMfG6HIoEgre+/oPTIAf7DyM\nxvI8OQKlARa0ja4lpqoAAnhDfu/q+cTOiUZ9I7bekjAQM6e5vhJd7MpgMWQH\nxVJqasijwgIZzKXdY1SrH0sjwOhkI3a8szn0yuccwQ+y/PlPReRDIPywpE34\n0/YfZxs+dehXOpePfW6XTY3/LilbOKBJ3Re4GZacaStDUA8FiZsZlVhZsos+\nbO+5HV0j24bJEIOnUx0GTgh7iuQBwt47KGs/yb+iiLV8obPEN4KbD/UVn1Kb\nE/nVcFU6NmCyf1/L93ocl17UEXoYwdJazBLRCAzTpkOT4fvVlJcTa6aAAAot\ntQZt\r\n=9Jb0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.32","@balena/jellyfish-logger":"2.1.82","@balena/jellyfish-metrics":"^1.0.233"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.128"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.191-renovate-internal-patch-cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb_1622106954663_0.949444126652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.191-renovate-internal-patch-4d43bad564df0cb8370d8f66bb4f46543fc6b66e":{"name":"@balena/jellyfish-sync","version":"6.0.191-renovate-internal-patch-4d43bad564df0cb8370d8f66bb4f46543fc6b66e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.191-renovate-internal-patch-4d43bad564df0cb8370d8f66bb4f46543fc6b66e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"476f535365aaa40daa005b447c9f70b47846e8bb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.191-renovate-internal-patch-4d43bad564df0cb8370d8f66bb4f46543fc6b66e.tgz","fileCount":24,"integrity":"sha512-uK3SZGHelzvU9MRh5s1ajNYA054DgNPvYmei0ZEzq7r0oqFDKtFTY5KTV8h52yBnVihI8szmscGl3diGxridyQ==","signatures":[{"sig":"MEQCIB+tACEIACJXSfUgwAhpG7U8IwewEOdR9NARFzXjELN5AiBlBO8dwDqTL7KtlqtEX+yerRQjZbrSnXP/u/nT3zkozQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr3+WCRA9TVsSAnZWagAAB4EP/12MJCF0pqOIaOqEt1e+\nBUtgt2x94Ijg1I2RwXgQ9kw5oyyCOF5Dey5bJzp2TCa+dAu7kYg/w8INP5YL\n55cYXPw1yR60RviJmcmaOw6yEX6F6MS/5LfH5Xl36VkgM9jelCgu9uYRk4pL\nzGzZqbhtFOuFxMuNl4PFQkKE8gYl/V/RHA9g/WLGbzf2k4oeHVv3Zfh90TKT\nc2j25nFGPzhQZ2HHLeo3ySIltSBjOUdIpjBy0O76eGjPAu770y6RUjRJox9c\nIlChXYF1Q3ue3U9OKIRQ/hDHLZq/RvJ8+xLiYUHw0ubLOvyRcTnzD5E8bTet\nL3tuhp3JdmgelB/2xc2s77up1y7h658es0wA62o4omfK98zj3klLomPt++Sh\na6UBz7CnZaJ7hlaigkoacNERe5ib1/PRi06l2dgRd7jQ8CUyTNALBqEtLVVr\ntgKAIPpikRbrcldtWwuwdoRwoV+hn5xYSncW3tl0QklmQq4IrYF77dfhK/Hx\nM0eJHFs80ww+TtjU2o+7bD3kgTgt6igoQZJXqv3CbAGgn3HzIyattgA59o1J\nJ5lr+f9vMvRl2u//KtD4xd3cc5tdP740ZPC56VkrS3wmohbw5bgy2/rqcQJ9\nhMK2wj1LvQLu5G6/48xGlWovM2vGlnn6/fZJ6MuSQcsBLPCWFLvj9akpGcjY\nQhxx\r\n=qmXo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4d43bad564df0cb8370d8f66bb4f46543fc6b66e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.84","@balena/jellyfish-metrics":"^1.0.235"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.191-renovate-internal-patch-4d43bad564df0cb8370d8f66bb4f46543fc6b66e_1622114198157_0.34103399519314603","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.191":{"name":"@balena/jellyfish-sync","version":"6.0.191","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.191","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a921cf3ce5f448c9cf2c98241238d2adad8d6a4a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.191.tgz","fileCount":24,"integrity":"sha512-6LBgStfxIp0i0ksEs4U1625Wj0T9VguE6mZNR092UefcgkOSUFQktu5y6QMcTqY69DhmNdxBz9MrorG9xL5LgQ==","signatures":[{"sig":"MEQCIAerzICZyJ383cXs+mS7oAG/GByGNTGcyBlzPFZJqvKWAiBmaTCxrktKivXcw5/IfX2IFsU8QYthgF5OuTpgWU2xqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166121,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr4B+CRA9TVsSAnZWagAATnwP/2BozMVR2pmUoWBF17W4\n9/6oWl00Ei8/EDerbhxfgH7BelFlkx9VhmPQvxYrFj0X3+jcjO2jEdTJ0sot\nT0pzf22GBzNeUOksGeRuPq6x5baTgb7F2afkVIckbEuNhIPLWH0+6J6c8jCC\nPce4RW62wXewyXR33MAcCucZE7kXmXHYSC166Q/POy3qxi4Z4JWglqVwQGIJ\nPV05phcSOrOuSAIBpIo4hYrLPuJ1CxjaO0qvdXUzJA24sY3+jmY+6evbnWzk\nupwyiCtt1XggmUxfRz3N/rgr9UWAukUR9zFUnPp4fhdTO93sikTC4XEB0gXa\no1rzizD5zNsjYZUoH0Auhdm7ghGObVSskgy5Izte+J9JEm6knn8vPVxSlVnG\n5on8YrwoQq0oJstjIiWd3/RODdf5T7FOcQGkelYbMZhZldHVqzQDFnfhouNG\ny0YOSzfo/QzNzARM4fV1wM+2HvFWg63BKjbmWKKZ7rnrnllyXK6+6sOHvH6b\nDJOMI8g3UehPBaO0aA77BLgpeXhwGe0TV8vHe0lB4pW+9dCZF/fegQPkqaAG\nV40YoxT+qcekgxc9hyChA3N7VuGJalspqwzbozN/wmNlmWcAWgY8G7yj4AJm\nStuu0xEEBLv6nheH7muMcrKSH2vPLJWL32PCFOLUyYSYQOGYSuERGbZZ3Hhl\n4hMO\r\n=svsN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"134a987431621d5d68741cd678cab5e8010e6158","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.84","@balena/jellyfish-metrics":"^1.0.235"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.191_1622114429564_0.5534785593966154","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.192-renovate-internal-patch-0a0136ea9d82fa4ce54a932d716b09d00a9d4b86":{"name":"@balena/jellyfish-sync","version":"6.0.192-renovate-internal-patch-0a0136ea9d82fa4ce54a932d716b09d00a9d4b86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.192-renovate-internal-patch-0a0136ea9d82fa4ce54a932d716b09d00a9d4b86","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2ef10af45370bdec700eee367b4784f57f04685e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.192-renovate-internal-patch-0a0136ea9d82fa4ce54a932d716b09d00a9d4b86.tgz","fileCount":24,"integrity":"sha512-BrtrJZDUnaTSraDgk0NjZKHqQpqm1hm1QCSsSkLqI7lb+GwX8m+TH9KpLXSryB1/7oZcEU1WdXtzd90nja10Og==","signatures":[{"sig":"MEUCIQDUna4KslgjuB4DMBjlbqG5h5JZOeE6M2uK9oX19u7zBAIgVy7iELhP5eoSOcVynTiw2f+O1xyV143JzWk+mJNkOI4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr5f/CRA9TVsSAnZWagAAdYoP/As6mrL5aSGh3onrpCFZ\np+zrxtTlMlMfusTrtDxcem2wkwGAtTBqCk1MaJ1o7QrhOfrbI0aqz7lkcsNB\n8ManZT+agr/Uut/PrLbHdc2KgbREUGmERTM1V0VovUDYyzGgybyCkIhsA0+o\nirYQ59ZPiyT38t0TScGrNvPFATGSH/HPS+XyqAqMklcHHQrdS6VBvmOnoDK7\n7w7hI9XYnt+6zpFW+nFBKcs870Ddr/z0LEuUVYSVN1D5YAuSWNCWlRAttp+4\nByB9U9MtHyTx7AtNT1jIHBFtwJ1GPVNASLp4KPATg75DqO3l5KX9PBGmvYlR\npFdFIfTpoDEPUU04Vagxd12Q0fGVwAn5pmE+2+7clVVHA68KiCsJjC0LPMFi\naQGRvLgnlv8WMJ/C5Ox9XC59yKCqK4zzecol5d7HIavvWH+TKK26JBIfZDNk\nct+qLsh0xjO9CA6+CAK3RlaF4ychrWvcAPrXqXMBD7gh4LCl5r/I1dtzWgTg\nGCLJOUViG2YKwK8zJT/yDZDq2k111KTWxFoxK6HyaM+Pdd0NAfnwu9zlCJ29\nAo7PHXEkLddCq9q8edsMmUozihj7fiuo2zQNpZ04yEpiygrUox/jUVNwfwCr\n/oudXwID8fjcL1NZwfyawa+cDRCW+q9nV6uTDiJOXCz6k3k/OuF8a6Aj6r33\n580a\r\n=Iqcu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a0136ea9d82fa4ce54a932d716b09d00a9d4b86","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.236"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.192-renovate-internal-patch-0a0136ea9d82fa4ce54a932d716b09d00a9d4b86_1622120446853_0.6736989601521242","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.192":{"name":"@balena/jellyfish-sync","version":"6.0.192","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.192","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"123a5710a514ae4d90314ad143617e9cf7bd5427","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.192.tgz","fileCount":24,"integrity":"sha512-kqdkZxTXGOCWrJ4M3IDDG+CnR2pUU67t4D5cMyI/d0I503lekbhBBiKZll529scSbUp4hBHYiE9budNT7dWq5g==","signatures":[{"sig":"MEYCIQC71RJfgDC4QlzWN3w0JxpqVREZ0RKFYyS7rJa18XjnOwIhAPqpd4HJXtM033HiaKj8CDvZ1u4W88luPBtF7/t+ACno","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr5jqCRA9TVsSAnZWagAAn90P/3ksmLPoJTujbL35O+ni\nPZmin88Q4IHTWxO6y/cH1+TDRwMePcur8osE/Y4ReKnEknz8c8REFoTQAMuy\nwNmuRPXrLw6SDMIc40KR7W2oGj0Z2ZjAicOWDAVmYliPkYV3Y7QZi2T1GIhG\nExFGng6W3M5SLiAght8wGlac/373+7ByvJPUigoJ+VoXsXnWy4lqlpBRNp7g\nVhnrDgw3fN6gZgyCMKZu4w+9/ghUD6bCzMbUHH6kOW9R0Xam6nx+7h3pa5vp\n88zHBnl3xCVhVmtB7bRJkYjCeLV9DOt6czawKxF1Bl5mAuSL/1hHWkYj2Ts5\nsim/oCtMmf7H35hXACZBHKYNBDsic4Og0uN6VaW8CMCsFuMwRQogwxbfbchP\nVtVfvYbpJmdbR52kUIKJBBEvkjSMOJ+c86flITr+NlN8aY40i1JjldWjCF39\nqHYuI5WNXdyMsET2TvjZ/tN+1LBomh+jPrQgBOUThCn3rDUceKltPWDOsMvP\nEqd4BrGXQS1fGJbYRC9s4cgFD+reU5H2KhrfE8kJO6WrAoGbSm5JwFa6JSlx\nhN0yO3EkpSxrs+x0qOUHsd1QJKA0m1IkWpxw42yDV6ejHAtXm4BJacUBdPR2\nwaF3/ZwAHY5veuMmzy9ug5I+j4yCPWVwNqmvetZv4pzWmJalB9u1cpdN8HOz\n2853\r\n=rRCS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"63c39fe06360168cf2ee7c6e65a84911dddd25c4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.236"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.192_1622120681630_0.4494009974612232","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.193-renovate-internal-patch-f637d097d6876600c00bdd07b9f46f9f0cc7e2ec":{"name":"@balena/jellyfish-sync","version":"6.0.193-renovate-internal-patch-f637d097d6876600c00bdd07b9f46f9f0cc7e2ec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.193-renovate-internal-patch-f637d097d6876600c00bdd07b9f46f9f0cc7e2ec","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"134cc95aa26a35d47e0e65d26e444a49eb12e385","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.193-renovate-internal-patch-f637d097d6876600c00bdd07b9f46f9f0cc7e2ec.tgz","fileCount":24,"integrity":"sha512-GPxtpINtmBmqJvCsSZzGfTU5v33jIxG07uEtYqHSaTFD1wpAcl7uaUO1+BXH+MwXTWhbjJ7zo8CwuuR/hX4PCg==","signatures":[{"sig":"MEUCIQDLLt9IhQ96JdnACFJROuZZ0sSs0lIzuKRDwCchLhcIAAIgDKnbIY8H7FcyQMBnWZrhIt6xVjaJCqcYeSTLiBeCYQM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr7QPCRA9TVsSAnZWagAAZoMQAIeueLElFLpWEj86H7NF\n1o4hGVXJNGziFPU2BzPcXB9jeLlGOOKgwuDhcNclV6pfimZMOLIMIBAqLmTP\n+Nt/8B/BYWRlnzTWgqWVXN7+HiawejhFinGKbgGMqE1qZs5cr3/dBv/q3TVw\nmyuE8W5bB6nkhl47cwO6BWeEDaP+Z6eYNVIJ4LZOz02n0xzVz9jE4UPWcAkT\nRvvIfDUomRrFKJLDNk4A/aOJdYNms+l0Yi3gQafhKvMK5WlXPdAZKM0+4xHS\nh7dItP3ZNf/Hag/eJ0Lb5f+gkpdxI2v5vTXOaVa+IQbCNbxUtYeF6OruXATy\nQUYWGbtbkKmStD/GHHhE/UEnG9TQveiQupGGgRDoi285+/EwbxdSscZDV1Q9\nvBUI3fqFNBvKDjtQB8cbiv33ZmFzCbuCVWV8OsE2AvGcwSOlfi71000kDG2n\nxUM1Nv5rmUrQIH9mbHWu8dYJ293SdCm9+57YTgg0F1542MwMRyyqQWw9pJ3O\neQV+2v355d8S6yL0odaflRUzdFH7P+s/swKm8yHQh3oijZi8f3pLPxT7o11W\nqJ9O5ZWieLz0JIf3nKjkrxKbP03am10gb5YGzI0ljSxaC9iOPJ1m9FuKf64j\nAi95W2jww8NDP9tiES6ZGmKcBkPUvRzI8REnjsbDs3pCskIYr3s5c9r4w7EW\nB9O2\r\n=wqGy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f637d097d6876600c00bdd07b9f46f9f0cc7e2ec","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.193-renovate-internal-patch-f637d097d6876600c00bdd07b9f46f9f0cc7e2ec_1622127631059_0.09208806910878176","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.193":{"name":"@balena/jellyfish-sync","version":"6.0.193","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.193","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e202aeecfff4b43983cce38fa982a5df6dcb9fcc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.193.tgz","fileCount":24,"integrity":"sha512-ZNwhlyRvrFBdVlSgFZiY7pmfinzgiGQn7hZeuAD1DJdw7R9VXKZBISs+8qYO8kUOrm9evPN8XHYzwKfYkveQJA==","signatures":[{"sig":"MEUCIEix5c4dzamdqGdnRfM1n/ttkl/6Yvr+stG6kjChXrPkAiEA2s6cxiVZJrQMsXtKvTUMb84qiy34iO7OFvWNSXArrnA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgr7T/CRA9TVsSAnZWagAAgV0P/20Xnkj2lQIhhzTN8N9v\niVOQT2nOVmmogHDQQTkNPbL1DZDWN6Pi9uGYtzvTTYQpV6iefl7LEbeC7BQA\n7pgmdmMPY13egOgBlTml8AP2DJJhw3oEWh+99yqKMm19ywUc/IPntDa+QMfK\npGBDuEULWhRclEH9hetvcidYGknGkAolPrssXulDkFxAWetSRR7mXtLWgavo\njCIikIILbYxhzdIrVaDfgQ5V5hKjJycwm7cNmq8sIjUtgY2vJ5/geSbyy9V1\nweIEltzNkq50SZSSbDgd1aGzipzbty67qRwg17o6+6DtXafC45Z7m3J8JpS5\ndp9qjW32x/q3nmx1grJ2Szhc2K0mcs3wlOkqj/a4iyUB30cSfnYXxcngPIyq\nsuPnn1MxuxF9HcddPSmd2kK8CNQTGu9IbvJrk/lT1R6LcEU6PeE8zVMGDSmt\nVhUmEtfROHKwGYmiVlZMj3vMbS3o9w6ivmvv+GHANuMKBKVoxLaqxE+w9248\ndsZ1fdyrtxGKk9Oz2ZpneMGTGELOxnpixYIh1rBX5L/I7gn2fQm2/iSb8Yzq\nA/yakFDsENzruQbZgCpEngPFtPe9aH2d4Jjr7ca/CVsxXKt101Bb+UYSx9Or\nHHjaNuHgie2MjqMQwQ3QHzERjLfCW8zuElkIYSEJUqwZ/4SFiPBLQWaJ+RqK\ngCpo\r\n=ZMiN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"08cfa725da36de91106d3169d321630ebfcc9363","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.193_1622127871169_0.7849048813418411","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.194-renovate-external-non-major-3d014c26afaf144bcee0d3d399ba11065851dc57":{"name":"@balena/jellyfish-sync","version":"6.0.194-renovate-external-non-major-3d014c26afaf144bcee0d3d399ba11065851dc57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.194-renovate-external-non-major-3d014c26afaf144bcee0d3d399ba11065851dc57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"498e65426f7a9854a0c4af0a6d771f64480465cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.194-renovate-external-non-major-3d014c26afaf144bcee0d3d399ba11065851dc57.tgz","fileCount":24,"integrity":"sha512-NwYs6kjAmRYAL7AFLBnYIQnP+lnNccmygvQ+0FGhjDYFm3lAA/3ptjcQUNxIJRqAin9PhKtYSxKxlWIXkpll/g==","signatures":[{"sig":"MEQCIHInX6v7IVq7C7jam2N7Gf7EKu4t74JkIH3B8aXcMsmVAiBRb7iwHM1AvpL05O6eYcShazyOmx3/QmTgIXGewd0iHw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZKOCRA9TVsSAnZWagAAnssP/1PlAwRCrd2TZAfyt8sc\nAMan+FCjOx4+QCRgklFlFIDOQLSm7E2Ers1LKaOFJ6iUfbJxQgp8u7BQnIR5\n1Ml4Hdlkt9Mo3h8oeSXCRb2nKSvb5yKFWONbf/wgmNQPcDH2kLw6Y9DEhvch\n+/Tc2qw8yd0ULVhv1p2+QtDbUmpkdeKW4/yd9WlKBrezL/rjJrVnMTr1yfjn\n2UCtZGSahRNk3vO+7YmRpB0wOsmdRe2ClMrm2DuzV2UCL9sY3eM/hAqt/BVz\nhVvmBXxGBgCRwb5UZED/rfXzuxhsFQQKrE8MMaWxQQcXlRb+GYIlwrbJzkJK\nmoGRNFCLcgnq5HSou6DamFweUx5ZrStAonbqHICqky/s5Ij2aQ3vjvVKo9e5\nrreVr5dSGmq14be5DVB37EIDjjkY0yL1SLsv9cGviJfuyl6is/hhjrawym/j\n3Li0QCe9EG+UjuBfaSGK/DqfwpN3krKCo44vjUxqsGw4jiU29WSv3BlAYWKM\nBaK6vWYKf16Ri5ZMD4FR+IojrPEpZHk3h5X6sDQsG/uhvF6CNbrT5eIBYarB\nW/vobIRshz5yFysjYT7T79nscmdG8DHhAbEFFUVaGAJvmg5r/NnNwiq5NP7p\nHui54mNZR2dhB60XFtVBUzPusF1m5CY+tmu8mBpbiHFnqExIbdNsXpywmDLX\nwvTg\r\n=sMyI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3d014c26afaf144bcee0d3d399ba11065851dc57","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.194-renovate-external-non-major-3d014c26afaf144bcee0d3d399ba11065851dc57_1622250125964_0.3890448978155565","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.194-renovate-major-external-major-849e2fe421b127302c4af60c4ed6d944b492742c":{"name":"@balena/jellyfish-sync","version":"6.0.194-renovate-major-external-major-849e2fe421b127302c4af60c4ed6d944b492742c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.194-renovate-major-external-major-849e2fe421b127302c4af60c4ed6d944b492742c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9f78bf50bc8fecc4a149b838fb8ee869b80223f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.194-renovate-major-external-major-849e2fe421b127302c4af60c4ed6d944b492742c.tgz","fileCount":24,"integrity":"sha512-I8CTOdiEgwMHRmwHhZABB+8Mk5tXxanL0KN6+LgEF3+90Ohqwbp+kK8UuKXOqcHipcOTPVgho9hm/jBCihULQw==","signatures":[{"sig":"MEYCIQDNFsdh2+DpHSozud4FkXOSv4/dE2paBTqChffSOPKfbQIhAKQF5GMB/NymQJaIQwOEqb412OkQWqqXpED7MEYZiRfY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166442,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZM9CRA9TVsSAnZWagAA/fIP/iFiSdUosAYEoSZxUkkX\nrBHn+UekVXR832ZBIZqP+FvulAE74tYg7qhlJDNFJFIWmjKRC9PbyMm+blAA\nFGxwcIMr0YqxA/VadZb0y78n7bAYytd/Pg+tiRHArpVwR1lrydghS2kLJ6YX\nkjavRJX8k/QwMtR4aZvmRcng+My8HgGOrJWMoxuH1Xk7O01Ua6roOv9ifuFE\ntGRDVouPcBFQFXwxCfyQiPWQWCayZe853UgubI095WklduZ1aCukqKCcDVLa\nNMyZ/LpOECz5/U34Zdmwxso/wOWa+BVWfE5Y4f7uUJSD+QyM+mbHN+deoBpX\n48e64x6mcgn69JiDgJJ0JD83+9ulfZi9sjAVYtpsGgZMnlQlHN8n0CbkxPXd\npiMw+KeNHNwYjm3Q0sOKp4bhRJ4ToPZX/PPRY/SfYHCKdfaVmyPtNjuP9DRE\nAluaP2XSUfVkEY43quoYIWTJCPML5NfOB4oEWkXM/GupxAWJqmRWamKFEw4j\n0xJl/19mUtkeLji2jSlP4xUzy+Q458IBDoB8DTwtzYrQDmxjR6J+n071SH/O\n8YJxRHuhMlKhVta/1OUVVEV0Wr3UXluLFkJ1ZSi4KlF+FXkkF1wPRrKpvY5B\n6SZlLACgdsLBkJuBt0HqbL47V9b+5PJ2ss6G/xUYOmy5GcvF+wvzV7SMwKDX\ndMKA\r\n=ZerG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"849e2fe421b127302c4af60c4ed6d944b492742c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.2.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.0","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.194-renovate-major-external-major-849e2fe421b127302c4af60c4ed6d944b492742c_1622250300612_0.03393063720557543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.194":{"name":"@balena/jellyfish-sync","version":"6.0.194","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.194","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"180fa3a491dfa30557f16647d7d87b16ba850b00","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.194.tgz","fileCount":24,"integrity":"sha512-ZCkIJJMtaf/EY2JUfKe0AEYJOyADmaXNJQWSH/kNokH0QPldEHBVyAu/K1KJ6alzEWKsigCgoPYs79bHNPotgg==","signatures":[{"sig":"MEYCIQDcLObggc68CApuWQ1aasicWYAFDxWRWx3gvJfYsDkD9gIhAJD96mg+O8konmetabTPg/Ar7c2MV0ormn65+PR9J595","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZSuCRA9TVsSAnZWagAA7EAP/2wBcDJz64waELZt91sq\njhybnPTTiyM7EENk3AIQlgFT/arUqgq5jijhUGIc/rSMjzlcdE0Kcg/YNHLc\nI9hODUJ4Q56q7KwDT8TJfG8hN1sIuv77jXMqfh4VuaxMEAGR7443M2MN5Mm6\nplsqmPsAc+nea4RlN5xneYtW8uTRMCQlt9JJJMKocRz+6C6Hy/nANxHFads7\nlB8d5H54luUJbeKugzxZju4+QS9l1gufrapuUARW0oyz8GYwKnoo6r9yZ5dY\nDnnIiDLpbZog0Ab9BdXKESjEVa2YU6ON/zswmyygOnD69KsUK9OovPj0awjn\nS1tiE+iGhbIX9fJhQ0muC+7xh3WVARK6zkG6Hm0MG2Ey5/+tw5exTVk3nXEW\nF/yhXI2Wl4UcXM8yA5L40ZOgt/e7S+KGmkKoRG+muJ32vXkQ5p+EtsRG3VRv\nnjcOF1b8IvpPgkI3QtvKKyyb4jLuUuS1f3YDsYska8UBxjvdW8YyaF3gYRWJ\npryX6n8tnWfupwwX00MTZ12MmZAUwNHqef2TL8MdqRiIyLbSxINfdhWMT4r3\ned7oqP5FmyhT9LXPjegvXIWIPRpwk2k1aCwB4OUE/iDsEyCp5JrLpBECApr2\n/N+F9AvAei6YVWPKqiF6IwpDVzTItxfPQjgetEzHX1a9cQjJOUsenvhHP5XI\nd68A\r\n=gHtR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f696f52934d01ab644741aa3fc2015ba71c53d7d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.194_1622250670536_0.6508457854365344","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.194-renovate-major-external-major-b8d087434569bb6b33f026ca12566b2b4762cadb":{"name":"@balena/jellyfish-sync","version":"6.0.194-renovate-major-external-major-b8d087434569bb6b33f026ca12566b2b4762cadb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.194-renovate-major-external-major-b8d087434569bb6b33f026ca12566b2b4762cadb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"545c311886a49966403c8d756c253443a20abc61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.194-renovate-major-external-major-b8d087434569bb6b33f026ca12566b2b4762cadb.tgz","fileCount":24,"integrity":"sha512-LQZHskD3h0blD09v5uVHgpyySmnbbGEKZda9aNKjVAOlsMyX+/v7idwKpmHIqsMOI+kWDNO+FidDK5kN7p1s7Q==","signatures":[{"sig":"MEYCIQCWxJ9ipwGkZ1E4Jo7BWjdWtu3uYWsqUS42X77BIiYNGwIhAJoTKMRj4GEyHV0nvzgpsmD1tNdV9Zjxn15V8gr8z2es","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZY+CRA9TVsSAnZWagAAvUQP/2I4cbb8D8teyY/oSQbD\nxgBCk5z/rlFOnDHRZijX3xgPnriqZekP7sSNOXwcowUjZdDrOpltmIjzP+BY\nAD2caJvz0piTLeyCi3TA68fd+NeYPceeJPdwnOmgfzns5pe9ZG9b6vVnok7V\nfoxPos8I96ECTMCT7a1+MoTATHGo5qucQ8WHsp3qP0YMCoWb8VegX8sG8cc9\n6MY6Y1mYFHHvSTzQq9VE1l5DnQ5eeIyn3HUrrp0uPGlAswbEZ+iPZmzFbuPM\namgfcPkpPNwjTKIwrZPmvwFi32kQ/BUG5z+T1f+mF1WKpek3jwq8tMAINW05\n9gWuekYxIg7y72r4SzTo6+fbqB1IO3/WjfBl5a0Oa+BirefMzUTmL5nrAQbP\n5f12/9XdSpOnSr6zAxOVgZFSWG4XDusf32gGd7bnRMOuqIvIteq9oZbEdQoL\n1Gt8A/zkSa0ivyUGnelgt+sZRygdmVYk4l1m4Y0bqCdMyacQPcyGm0a5biKs\n21HOQbi6PpwWHYpAdh3LQdiPH+EG9kI5p1Ch1jiIJJpCiisK9GpVjI9Few+f\nPeHOfWRGLbeu0oGrD0pT14j8KVST83g17czPlpwhhd1Bgn+3oyxQPxEsbNL8\nybyWp4dqos4Gsj8JFqvgQPeLP+y1ZxqflvBt1AaPNxvvCszO3O8YGLKImz8D\n0mE3\r\n=C6Uq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b8d087434569bb6b33f026ca12566b2b4762cadb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.194-renovate-major-external-major-b8d087434569bb6b33f026ca12566b2b4762cadb_1622251069557_0.6893144098401556","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.195-renovate-major-external-major-a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a":{"name":"@balena/jellyfish-sync","version":"6.0.195-renovate-major-external-major-a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.195-renovate-major-external-major-a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0c74a04b311a7fff0d7fc69fe82301302dbe3875","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.195-renovate-major-external-major-a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a.tgz","fileCount":24,"integrity":"sha512-F5wzTaZjGUuPIGpqqB+1FJHGLXwXQSG2LF49uTZ68aJmm+ObnICve+MuEBhGK5aJ+0pt3hKoYopZh36bvjnLHg==","signatures":[{"sig":"MEQCIAkGME9NTE1BqVbtKasnRwWrvE7Nu3mpMM2I8Sviinj9AiAuWDETGfkQXAqOJ+ayihjJr+0h9TuhbGIYJLPl+qJm7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZeUCRA9TVsSAnZWagAAF58QAI+dFRKzlD/ZcY4M9Xfb\nYs+hHBxPPM5I+X8VUQDgmGlc9i3Vxfu65S/p8eV8BHLPIPEZWTo2HM78LFc+\n1F0nTwWr1QQ88UnI4PrKoWvUZRuoj/75FBQtGhVOwujmZZIBZNXMDO/E8Zhe\nT9BUjVxC8g72ayUFMVqWf+uwQ8TebN1oomkeRSEha8XLIRVgkLiI1+iu/9yD\nbFnoVrtdHzIkE8YoETH0yGxqGR+gX2O1MZEkc7fFtnGgs8Zl6bPTtJWtThku\nuTB3aTFdP8Oz+jAeQxCgyKMkRPCAkScOBc++VjB89ZTPO2znpxVoB8sfuxeT\ngDjxWtgI7xMfosDak2QZjlvmcBLlRN6l6xl0rGkxuS3FqhMv+7q2wN8+NvRW\nCUqvbAxtcEAxapDYLPP3hzGTbdvSp9C+dq45Kh34qR5uGpF7eZ+fmq7ZEMAd\nptBWtWOsKkyOMEl2bJd/28BGHzwdQ89ws2BVF3zQT6p6/BPKRa6dIlZBMin0\nfYfmm5yGVAiMagW3eJi2fPi3DXxYUvzSZaoQ9tOsK24E3tPgIZjaVszNNf0l\ncPi9nulGG8s5x8H+H/6xKlFV7JPOMUaO6d0QoqSiDaMYAHHZ7uKYybnqKy/K\nocuruN33kVP8SKNJu15FTL128ZAa30PSGGiTioX673WE7QtuOL42PZ+tQB6K\nHbn/\r\n=8qiH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.33","@balena/jellyfish-logger":"2.1.85","@balena/jellyfish-metrics":"^1.0.237"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.195-renovate-major-external-major-a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a_1622251411495_0.6946369330135882","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.195-renovate-internal-patch-63ece09834079ab9db766faccf3f154d5bc84f70":{"name":"@balena/jellyfish-sync","version":"6.0.195-renovate-internal-patch-63ece09834079ab9db766faccf3f154d5bc84f70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.195-renovate-internal-patch-63ece09834079ab9db766faccf3f154d5bc84f70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"38a18aa7d31b5a0d35a770492ea35920452273d1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.195-renovate-internal-patch-63ece09834079ab9db766faccf3f154d5bc84f70.tgz","fileCount":24,"integrity":"sha512-2IoptcznrOLVqwQJqmrJAhMwrwWbcMLR9zBUGNlKqg0lVwo21cNXMLl55nFDa5is+qMMRj2BOxDsAxex1UDT/A==","signatures":[{"sig":"MEUCIQD8wI2+DQ2uRLnatoS8Bg06pL6RT3r1fcUG6j2L+rKSkAIgDaC0Pzx4kafRvF+ScvQOwyeRJ82C92zWId7dfPq2Ytc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZf3CRA9TVsSAnZWagAAPk4QAJ9kBmr5lwg2kYTdbU77\nKyEv/M69g2sD9sn270L7ZblFWY7bMfzabjOhrxvuiSW6PENKtaxkSEybCHFG\nwZt4UNOXCfl3XT3DQljuGjA+pv6ahB0lu1RFCpUOXj9dtL17P2zKKGDsJlYb\nVfYGjVfGSJR0y45RNl0vXH8KGjWThqKcKY4DakAJq+40cLYno7UaG90FR/rp\nQ2v2E/EBTcuGFTKOUpDRwymnLrSO1tHAdJri3ONRYtao1knpMqj1t5/18tZ5\nIBVYT8umaBr/DSRRdhK14UT6/xphc6l5a/7IIeQbmkjPpfyrQezg2VkCksjq\nJQ/qgGL0opUlUtx0KdpX1sLXpjc7A3ZjrG7fgnPAqfHQea1wwiYHsP6XY5Rw\n977iWx073vGjS9ugPk2aSImmFInkl5og5SHPv76w8lunHMNo0edCm8fM8P9v\niR4B5JS3rsfAj1VbJXa5WGxBiOyfXv+wcYUe2N4nRSx2dYTyPd8WfB5cc76g\nlt2CLEtLB/8msAo70rjdGOq/MeMNX1uaslJ9kIHgZJ06FmZY1UuhO67WArmH\ndWww+Gx0d1SSy6ywSKmhVevqYIBqJgrxDI3paJ8WEDYTJIcxbbalbIGvXMjr\nl0/4E4j0injKuiiy/qpqw7McBcGdvut2VtBRNZA1+OiZHpM/KTI0BsMIQCxR\nYOYM\r\n=c2Wl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"63ece09834079ab9db766faccf3f154d5bc84f70","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.34","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.195-renovate-internal-patch-63ece09834079ab9db766faccf3f154d5bc84f70_1622251511403_0.42786304147329823","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.195":{"name":"@balena/jellyfish-sync","version":"6.0.195","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.195","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"881801df8911848e1fbf4eae2de3dd40da54d398","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.195.tgz","fileCount":24,"integrity":"sha512-2tWsRNexm6lhuwee/+Ed+HzqfDdYUmYRq1mFJT5zUqhxoYgwC1/dYZwXoo5MraNPVMkCBLUupCc0hNJznUl+Tg==","signatures":[{"sig":"MEUCIQCTF0ALbGmHTudaqrNwyX/Ioc9Ui0kkAUOPCEdBs/cfdgIgTHIf7pkCf2z2/v/aDyuTLTpCklEV82MwDF9QaGS4fIo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZjHCRA9TVsSAnZWagAAqBQP/1DZOH9f54m+07ID1Kaj\nQZAhZTItZjbjdx61kzPlmavXr6aj4c2lHTDqWFfphvEERqZTshPU/jlqWmWy\nV1sfncSouuMpPwpfznbNbmI0W8ddy0qQkKnne4Wzc5cazHCb3m8QegRoLx5O\nemtsXaDSCqzYqnma3r8n/UmX1pNoWMB1vUBjEkt+wjLgpLRvKpKrOKdwuRw2\nMJs605YOwYnDE5XPsMxk4Wdqdd/UGA0ZPJ6uhnmxD1dI9t4dFVCIsD2hVnou\nMMhWZhpUq2vPztxXlKof1pBxQjowXReVgLvfA1ehcXzMWER23xjXn5rAz/4u\nCnSpNijHHTD+UnOaP8DAHGSQ5T+gv5inXtztjPUkv7+TX7ByYi45/UcmS1wK\nZLxQrBC+yBNWA4N5huZWZ7eUV9Fo+rxh453fv3hP5i7pp1CTFu3L++pOsrOw\n+OZqC7Zu5Tg0gXpg5ihGfK51XYlmWbrrL/1Uqmb2D5vHSfnReXcoxaGtKfWl\n9TBYYQMVXPkmGdwBrZCmyIjWKp27Iqrl7pdVXku/a9/73Gcwsb1cQBdcsoDk\nSUvySjJIuoTEED55R1EKrT2ekrl5RUvThgPfMf6j8p3YGmFWtXpBB0vNyeAb\n8u4bNj6pxslg3jCpiszG3+qTIcs/atyGi/VjUs0Bo3Q1FII8Uwclr6681HVh\nTTKT\r\n=zuj/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"82c28d54addd1422ced7feecb18e90f92ceb44ef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.34","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.195_1622251718555_0.2796662728312651","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.196-renovate-major-external-major-78d950af63e71f96cfefde2ed94be00db1ea93a2":{"name":"@balena/jellyfish-sync","version":"6.0.196-renovate-major-external-major-78d950af63e71f96cfefde2ed94be00db1ea93a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.196-renovate-major-external-major-78d950af63e71f96cfefde2ed94be00db1ea93a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"24b25d0f1272d6ab458674a11a68df0474adb917","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.196-renovate-major-external-major-78d950af63e71f96cfefde2ed94be00db1ea93a2.tgz","fileCount":24,"integrity":"sha512-cVmwNnXv36e5hStLasA4VYHRWp5fhsBu1WSjLOKd2ElkyAcjH4WhwquaTk3pNpEGgukHSCI6s4CLQtryseW8oA==","signatures":[{"sig":"MEUCIDkYwCvNtDGBTmCgHQrawmXlBFAz1e0g9qqjPreN9YyXAiEAo0rIo4+W33HgzZnupvmmMIrAyCGusM1/C2LhnnoThHQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZnqCRA9TVsSAnZWagAApecP/1sAmCtbAaz9jQ69YtgL\n3ovfF5gvtmUoubyzYGAmcPclSDuulCcy3Vd/HhEk9Kq0opMkrQVnhNP7kKfE\nD6LgMsTidi39if+xzFKvMrg/ozXgeizdO5FhChhsnPxocPXvnYWQuUbdSLmq\nKSo6B8sIy5OIlJm68Qf51ZE19ipBEPMfx6h+6bjirctlq5Mmm5Y197PJBJk7\nzLZdPvokxB72EWTcSdOs+dc5Ckt2MubETfLJX/nDUQQc0q4yMoNl+NI7wmqf\nd7i3hrwZj/DsirQXzDYIxWrJPnPKmyp+q0yqcG4VYF7AZbF801Q0yG2MZXiC\nO5ieyJpTwp+bIbcskCYtsO5c5Vzi+G1zS56sGKqQKUEy4KiOud0f6NQOZsC9\n7G9al8t1QSH7bayErNqVYeT6VTUj+qRddLeqSUp65MbulYbTCBwNKrxtWGTO\n3jCVX/27vfEhYJFyWZ59hHgpM1p/mVJrUhTDmrFj8n6DQIX1cU4M1XoTvlnV\n0ZPKTIsztZvxXxc4pwxRMM+M8bT7QbI9yUvPk2Pthf3daKSiiem1oNjwCIcK\nQnpdQn4+Olyt4FtYU08tJkR7riMjlkSMAzZu2AG/BHr6yUwobdJ14cZHdVtU\nIHZS8+tPflqeQFQNeelSmvvvDTBxJ5fn3FGun3sLbhFHoN1E0c+be4jLyHAg\n2ecZ\r\n=kL8j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"78d950af63e71f96cfefde2ed94be00db1ea93a2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.34","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.129"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.196-renovate-major-external-major-78d950af63e71f96cfefde2ed94be00db1ea93a2_1622252009654_0.7720029728913302","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.196-renovate-internal-patch-b1d8f7bf519975181040e58e3808f45028eec643":{"name":"@balena/jellyfish-sync","version":"6.0.196-renovate-internal-patch-b1d8f7bf519975181040e58e3808f45028eec643","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.196-renovate-internal-patch-b1d8f7bf519975181040e58e3808f45028eec643","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"71b59263b5b9dee2e6f68a2f58e5d66fe04ef192","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.196-renovate-internal-patch-b1d8f7bf519975181040e58e3808f45028eec643.tgz","fileCount":24,"integrity":"sha512-r19z22lxSReZe0N0H0L7TGTyJfwlvtNV3L3ISSMHrFtxBN0cFEyijhX2sLTqjGsTvmtcG1+7ptP7G1zjQXEkzg==","signatures":[{"sig":"MEUCIQDnZ55YbZKFjrZY11djOdwwOg7mQ3Pa64bt5IKDlavBGAIgRXu8xMkC7W6BQWZ5AhC9OSfrUwquIPUwfEMPf8UtdQc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZusCRA9TVsSAnZWagAAMGgQAIuRImlJ4rYgR+yY5KrX\n1fYa/kxQCeQrMHWwCCI4zxjo2pPAoPyzhAzFD/vxGo/048eDjC7QVoWoaDpZ\nu9nMihbL9U7ucp7mHZbYq2CyMiCOV+bta0Kw3Z2JCmZdpkdlYEx+RMjSWLwC\n/TDkJj4xJm9S5Y8s/Ct7iIFmONyM74jk2BEgFUVB8hUUTWRow9/lzcYSQi4H\n6jJRRTTjGqsWDxT1HXiSrs5QxWqLykDxRWGZuN1XRn8+hO3T6N8yacNqXLvD\nFBN3owQoH7y1QsiXj57vKO+ikRhcVtP0YS5E9lSdyemPyfCEnMZV83RaqKbi\n39HHcHRITyOo76amKCAM9H8AvUBQouCoSouyE5WA+Isnr/cKsID3+YqlkAOL\n5Mj9ZikPhUQfaOIWn15Cu6hHN2WpZizh8O4sOdESTiX3hF5ZksiymAezOK2a\n86av4VdCwXGv1BxprhAnpzBZ4mXch7PJagsSe+yAn18PfQvh5+A5JqdvpCeS\nDrr0r5tHa6Y4Q1GUQH+hwinj6jWqAw0llWMxeLeOM7Fq0SVEjjQl93zmJ11G\nEng1zD0NdrYSvf11E5yBvGBKM4MCVzuIG7XcWnqMcADZKB65yjEDuarL9xLC\nmkAWvCouFfNYOY6JWguNY+B+n/MdtbcUi/sLh++4lVo039RaCQSNDCGp05vs\n4DQ5\r\n=hnn+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b1d8f7bf519975181040e58e3808f45028eec643","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.34","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.196-renovate-internal-patch-b1d8f7bf519975181040e58e3808f45028eec643_1622252459825_0.5243944021752196","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.196":{"name":"@balena/jellyfish-sync","version":"6.0.196","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.196","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3f6c835e20e578eed36705766cbb71a8a79a67cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.196.tgz","fileCount":24,"integrity":"sha512-ACcx4boeqTxuW3IlT/xNGdi2qfIJsLl223fq4XZWubMzJ7+w9+NM2MrskwaJ1zAXYS3ZzGbhJ1n05pAc2ggi5w==","signatures":[{"sig":"MEUCIASU7zl++Ve5AGqybaGkcjUvqlsXS7pG3Ppv2dXSdig+AiEA1ebEbhdRrCLQodkrxXSefpYxGz8ydLNqJIn01K3qJ34=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsZyTCRA9TVsSAnZWagAAFnkP/2Q0NZ+Cog8OxoMdvPQC\nLBO7BPx5JpDmyYnmxmrH+jGh3kgP1nOy3DTiAW7oCP/JTBKmYdWyTgj4OjS9\nyVlDuSfsvgala99YYiw+SwrpDeewWyHA01vjK75eOirtinoZbUrUvkwUoLkP\ntG8oE97uF8NaZutoMcdVI7BSRerjNOxeyIHcDTRulJLD0YjticWj2ANhNpHB\nX5WivBzQIw7znt3SJqlyGBAS/1v2LwaGPOjO4m2P91mB5oKUxfZVwS+ev7Uf\nzEwq/7SrqKaQvcTvMA/nFo+ubWkV0w59N/SHx228Kjve7tSQ6kH7gA78nI2L\nX5CsLWQjTaGDKQt9Zd94HYqNSBHJmFRfeMm4VdTPLUSVE8anKlRnizR9fTuq\nIlBKOa5fqtVxKEierOcijDOYzGab8xjQreS4mJ7FfW4Ru1G426SgKHG27xBc\nQYfJvN15Gp2/B2O7NhoP/FAs2ypRxb0iIK/kLQzUVWNAKXTIdie6YvKOpDG0\nmhzYQYrI5kUWfE6Wa8C9q564PXYzbyaUIQg3Ok/1fXxYc0pr0WDCn8zDO03Q\nKkLG270ej0cfO+hDyTr6owskgOByFQ4/v2Gv7nyolQ+C7d2J3UxJ4GQ028eC\nLcJzdn8g6S4ZM+C47mP55fX+fhOAqyoTZFGjII8M+tlMJ6DZDIlQVx7HwBiv\nlamk\r\n=LqCx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5758ae59a8039fe4c816e76c10c051c40d4dcbc3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.34","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.196_1622252690587_0.9702387976093516","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.197-renovate-internal-patch-fa93531dd4c315396fb0a675fc3a2795037fa616":{"name":"@balena/jellyfish-sync","version":"6.0.197-renovate-internal-patch-fa93531dd4c315396fb0a675fc3a2795037fa616","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.197-renovate-internal-patch-fa93531dd4c315396fb0a675fc3a2795037fa616","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"32e1867e9e9d28cb1c78c760e4e82bfeafeb9f5a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.197-renovate-internal-patch-fa93531dd4c315396fb0a675fc3a2795037fa616.tgz","fileCount":24,"integrity":"sha512-OmrtX3Ui3zDjfIkONUL0jn0xSItg8vf2gJBoVB0id+qvYsmkgNxo4C10EP/Jnm167R/5k7d7ukHqdED/HXMVWQ==","signatures":[{"sig":"MEQCIGhmp3xwxco4CPGwe/n5UItC3Yfb6khtEnkkxuxAgwj0AiBIOvs9iJSHibnQh6ecHUQG8uO2kXFkUxamp+Wua5Ulsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsb2ZCRA9TVsSAnZWagAAks0P/i+DtWfVT8F/SbUXxFAR\nUb4oS24F/+wfAjvKGX5iScHG+GVDkKveYBEpVtXJbmlh1wfAeB/iu3yOKhc3\nPgbhd3RZdDnaZNc87ZEB0JRxa8HD2aRTOInXGe0eG+WfKHUJjqcH3oYJDYJp\nFqfvLp9hJQHN58J4jAafD4OJhae4SeMq61DtEw1mz8gWwFZ0Mg3BaNLQl30y\n2yE4BgI6tFvy8LrbtK6YqMJYhjig0SZy0eetRMAxOdA4vl4fYYXgPrsEAcHr\nCf+w5yLzFmTTrBIsoR+I2EOA+WH8jdo2TQHvSth19FMQs9hO8qW6OJw5sa/B\n+R1CMz9b7EFtZrrv2jAosH1maV5y6TDTdY+Zt86lcN5zi3zfvmQqtqyQSI7j\nX191+0oS9Afd58hjiyrQ0C8bK0gWsKtSYfpJ7cO4/qhLcaUJNE65GlMp+PbR\nwTQ5F9NDyVkhf26e8/pe5fbrtj7QojRYbNllluUzNzLJTxjMPJZGjn5g3NKJ\n+RvuNlQrsBdaVXUxr9kllzV2ZjjTLspomLWsZ5FLN9639Qkwf6HzyvnZ8jhI\nk9iuKO/mcsStapuwRqQwW8FQtVPwlcQRT96JJk17upfypPrijJIBpwGEeIIU\njZvqcNrf22nLQMXb0fletOUnjPD2a7D33VI4dBn1MdLW/IsRVxvOieXljtdZ\nOyQ1\r\n=Cvab\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fa93531dd4c315396fb0a675fc3a2795037fa616","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.197-renovate-internal-patch-fa93531dd4c315396fb0a675fc3a2795037fa616_1622261145064_0.6221397233777659","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.197":{"name":"@balena/jellyfish-sync","version":"6.0.197","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.197","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f77c938e70b8004c4c36d24c91b6233a9dae637c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.197.tgz","fileCount":24,"integrity":"sha512-WotK1zlTIRFmI+Ngn6jruO3Udf079s8QMgnNEtoUwIi+Ujceb07+iLirXaTmzHkSiGsgGJ1i9JVq56KEUHX+gw==","signatures":[{"sig":"MEYCIQDX2WiQ8435KB86SMk5h8NeYWybrVdnAQAvkuZHTk4IRwIhAKRfvlCZarWm7cUl+zwzSXjomJ5HP3GQdjS9W4915eKi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsb6JCRA9TVsSAnZWagAAPUIQAJJBWE9drjxw6kAPDz8/\nDrMqMukx0IX6hAnoEM7UJH49ckAkBjBU9hmuNzvtRwtMrzNyrzTMfxOT5qje\njLvQyKZvF7e1Q7DQkMCtHax4EVskMZtq52ZTVVw1eCne6vb/USITtV87jHGM\n66c4CIoIUZ/B9DYbcckvYemZE1NEsd6fMB/2flpRle9tNWlmMMeaF8mI5rMh\nUysBlGlFzSQN462/66ryu0TBzdPm/0VR7tmsYzO/XqMlFNJFIShUVUCxcWCR\nZD2mD405CvUof6avHSZvXYBWCO6BXogggU7D5BFe2UFzwCtQjsRQzAvEsmdF\nffXWvhUvXTteZSr4k2PLbwzZlLaL4GJtjSgazbKJt564/ofgqWSHOSg/OejI\nOXJBB9NXDqCjpih3WjZKSAie4GOY/mt8n7+t9rSNUjhNVaa1bXl4cw0QXdBo\nJVxG0hj9TQv/IRIzwg6PyFEysOHPf0+0ndSp1A4Rv/r6S16Yl50eF6RdYyU3\nzM22YRWCAVVqgAM+V0MZO5jPSmI4XRN5Okj26bSQ/AHqyG/v9lZcqjOPz8HY\nyvJYQM3cPw+jALlgKg82DEf5xlXSfmCcHQLFUGp7NsmyOLo8aJPObCTFEnfV\n8jtTmP57rTF5DIiOS0FRIyNUFSesay+JJzNsEQ5UD5bFzASu9/pdiGYGFPO/\nXWdj\r\n=XOW5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"125aebe3071e9b860c9f81bb93c3867c6f3590fb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^26.6.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^10.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^26.5.6","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.197_1622261384588_0.808887909881294","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.198-renovate-major-external-major-32d3d525f407ae6bcfdb83e54540cba290536d4d":{"name":"@balena/jellyfish-sync","version":"6.0.198-renovate-major-external-major-32d3d525f407ae6bcfdb83e54540cba290536d4d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.198-renovate-major-external-major-32d3d525f407ae6bcfdb83e54540cba290536d4d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3c810b3a38bc9f26b5a210dbeda25618d5b233dd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.198-renovate-major-external-major-32d3d525f407ae6bcfdb83e54540cba290536d4d.tgz","fileCount":24,"integrity":"sha512-a4lOwozykfbCReSmtjnY1EMBboXFV6lwIO42H70kcowYPRXVt+i1edm7Nk8PI1uIqEgEzBlJPOEDdI9Zi7bGvg==","signatures":[{"sig":"MEUCIHlUZZkLe2gf2I7m+MG45jSHrKWRFKybdqHFFlskrpITAiEA5p/lRbApMxCrwwZs84zdGxo9BRTO1PPwu6H+PoEUnSE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgscAPCRA9TVsSAnZWagAAmLEP/j6MXrr8R6h83hkeNTFN\nFECXmXAb6bBnXPeqyQL1tEXEnI52TPXQbToMk+Gcs3kfAsyKYH2LoyloX/13\n5zzoC3wdHt3VEwgC2wN4QjTsUt9uCQHbT/7HYWb7z4EWfK+U8Y7NjCHjjX0G\n/ywhWfKuWthMWDfyzpawu1miRIF116JGEH2yFfE1HaHWqPpkcMxV/unok3Jm\nWUb9M0FwaLsAc1W1eHBcH8s9KBKljA68sxvfdUy71G1erl5BcI7OaaBJm6IG\numYwXQnLI84DF1XHKnyf3OnTu7uuMVHfMBqUovNLHZpvcMaWIWojU6lx+smC\nxzsgll2bRFWAfs9JVbNz7o12XdFbQx1+AyVDr7VSTEvC9MU0kUcH3CjXekvr\nub/w4XszVtLQDUX1TC20C5JEiMVHor/n0DOPmdzaFYprboRQpHrWVYtcEWYG\nvcbPnyUt5TeOYuQLW9ykfs3xg3ksRw6j5wkNf2cqMfWKf6GodPXd0LLml9Hr\n+/SXh4GMYx70ilpiQCpoGIfom1CZUR9xpGcb22rj37SXQ11Li0GkNvMnIAnF\nM1lNZ6o8FnTZlBIkZYzBp95p5WNwOvbivJwRc02QlasBmfF8W5GFlLYX0+Bg\nwdV3IzvcoLdfL0FzYQ3UoVErT1AOmGTN0u+eP5e7ehNrco8KsrRNWnyTg2zI\nubZ+\r\n=EkaX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"32d3d525f407ae6bcfdb83e54540cba290536d4d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.198-renovate-major-external-major-32d3d525f407ae6bcfdb83e54540cba290536d4d_1622261774639_0.14353757082843654","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.198":{"name":"@balena/jellyfish-sync","version":"6.0.198","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.198","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"857fd11cb14019cc06242b85fd4a383aefadf672","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.198.tgz","fileCount":24,"integrity":"sha512-kf5SwadRX5boV2x6fSAJJDQtXfefUcg/Mw3Dvkdb/LWnzUC9vXW8cfYrlIrI1OdO7isnnPjA8PdPuht382g3eA==","signatures":[{"sig":"MEQCIHp+GQPXvufTYQF4nnyKTuMggaEjvCaoMTRL8kPkxqOmAiBHl8R7O6Pu0THHIqjglKFXBe5moo47oUcvZ0x++TNepw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166727,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsdx6CRA9TVsSAnZWagAAtUsP/2DC3IUd72yxa60r6QsO\nAwjUNnbQ0NoS35CfwWFU2ecvOtvePeQLWMdsIuLHOxtAXtvandQNuoz573sL\nzLTUg4K/H17EK1GTBgN22PYnh25DkBCg86II+JqOdfZ06y8k5rt4kM0QGIzg\nFb2ZqjOqO0cwsUqBMVbH6y4xK51OqOz5n6LdNcxCUQ6///GsnWP4KoQLNILx\nwrno6kqsiJdaSW9YDCW5rBXy2fGVSyYbTANOCGyykweo3k8DMjLzD0pu98cy\na/mlgNpaUSb64HW3ulkUK2gxNm5Ip+YmA1kZxg09NJvgUjoqFQZixpOpcjfs\nxJQXVBEL9Jm2wb76AhlLBgjekvXDHrSaiFcP8stbaP3qaRavNCh//B1HLH31\ntnf1QRavXQ9WvBuh0ZTgZ4XvSbvg/QS6b9G+UX/ofv6H5arjnfRvL3U6A86K\nql+ZAyYWXar/xPW7UEbjZj9qgeoLyDlZ7GiNBUo7Uanc408eiJDQTP1gyzID\nMUEn3qkfUNjubzXzmN7D1eS7diBoXtChYXJPgCMWr60WA6kPLsg6xZ21pG+t\nMndK2PkqYT9Tkk+9wBG/GxqviB4TTDt9K8rYhnUBOUWYPtA6gg3VY+IaIBUR\nO8Phy3EzfNm2SNl1IY6YTl5btX7O9QkyblsV5Gib3nFmqsTagxO+WLJZ9Bna\nWTE8\r\n=tqFA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"80bab4003cd8556fe9ab40107d3721738c07e28b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.86","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.198_1622269050287_0.5821913322102663","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.199-renovate-internal-patch-a7f8be7ad0b211a01910fe29592c53e6a3f730f3":{"name":"@balena/jellyfish-sync","version":"6.0.199-renovate-internal-patch-a7f8be7ad0b211a01910fe29592c53e6a3f730f3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.199-renovate-internal-patch-a7f8be7ad0b211a01910fe29592c53e6a3f730f3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf2aca6dfd53a61ec7b4595e4d1da7cd54506740","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.199-renovate-internal-patch-a7f8be7ad0b211a01910fe29592c53e6a3f730f3.tgz","fileCount":24,"integrity":"sha512-X8Mb5FktvjlW+kwdnIv09m1dIgF4xz+9Y+QS59nI/tEG9DZWR6WN7DpRX+arPFgnklX6iQRuf1ASI6LYCNteZA==","signatures":[{"sig":"MEYCIQD7+ZZILFh6+H4TRt5JNothR3M1A/O2xFwjL2ztzkDCXQIhAPO1ERyp8OvGr0ezoLIoVKuvMfaQvTsu/7c9EbLTb4K+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166896,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsd2oCRA9TVsSAnZWagAAKXUP/iT79mSzPtU3oYAPbshz\nfoQtbWXGFKUcDs4TH63aoaySfSGjJuj0EE6htvv6lvfxGGnEfn9OYOpP81Pc\nhBif1d5rG/7T/Gp8594EoBrA/TXmzTed39Y/GdGaq3uAzx4Io8u0k3PPUUsl\n6SV5MLf4tJCIJtuSKIn+wxnhYBLHO6LEWGN78WBDfYAjftOK1Gl0A0Nnn9WU\nF4fUuIl7j/dr5hWMKNKk+h8aMNUdpDgHD9PuybykPmec4V7itWtqutSvAy7Q\nVk4CqeXPbJrhS0/pIZTBpmUoe24HUyez70limAeCjlvFCsqD1vwWx4VqfIEa\nSNO4RtN2bK5UbtTC2Mafd3SheIh6XO+BPafBjVdGj0J+ZQtGBuiuUOUMaHtw\nw1qYZ4//pm22ipXbXsVWbsUW9IxttA5yYgcukK/EZNk7gQsn6n+Wlx2kNkyO\ntcwdSbPj4Gxp7X7e7ROT+4oPdV0n2AwnEq9PyLlyWTUtFboRd94vOlquPyBc\naGek7m7Yfd28KBXxpcdEr7F5NpqqMZW8/fOE3EVwgWnsplRxaL8QZiZZVdvr\n5+/C4cEuBXMk+aBuxuFO40ck64EyvVmSWazrLt29J8/xEkT43ZDaBGYZw0R3\n/PlAkull2n1xiRU9JjC3PV9IPFCAClspzzwnbONx3RS2BlNf9AOTlrNXLeEy\nfsvw\r\n=j6GN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a7f8be7ad0b211a01910fe29592c53e6a3f730f3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.87","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.130"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.199-renovate-internal-patch-a7f8be7ad0b211a01910fe29592c53e6a3f730f3_1622269352452_0.4855968781678004","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.199-renovate-internal-patch-84de96d085c81fbdbf53b15212fa9aa68a0bf131":{"name":"@balena/jellyfish-sync","version":"6.0.199-renovate-internal-patch-84de96d085c81fbdbf53b15212fa9aa68a0bf131","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.199-renovate-internal-patch-84de96d085c81fbdbf53b15212fa9aa68a0bf131","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e332cbb8827f45fe634b2396f7f2f8a55e86a2be","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.199-renovate-internal-patch-84de96d085c81fbdbf53b15212fa9aa68a0bf131.tgz","fileCount":24,"integrity":"sha512-cD0OYbpLBnAzEW4unDRvZpz2XzPgsrRSFNmF8bxA7A5dJ0vmH5YZz4Kr4eoi+LYyK/S1jahxO9CrOIH1UAyshQ==","signatures":[{"sig":"MEQCIE4JUQzLkUrA5j5UqVmMTKDFlqMcKZHhUv1IgyDaL4sdAiBjOwlV8qk7KkzInB3fOICObyH6FSuoHYIQg8Cgd7bujA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgseEtCRA9TVsSAnZWagAAjGgP+QBfThNtex4h5rIeAQEk\nnyLZxK4KKdrBYwa17+7DunbzSqMKxi6zHBFL9p4IxaXebJLwaT8KYM8LgVNE\nO25V4fJJU+VjulWSvhqlFTQE0cnkpojL5mHMFcbfgtiTzxaeTwpaUJ7a4ruF\n2acEpn0JvGs6AzwPogxOdmy7WfNCnYAXrM5lMo2GnmTv4erpGeWEpCg5d5T8\npsIExIaX2fXdV7CTDb3zMpP0w0cjg9kv2Mjy/uPp5hSqF5uPjGOepYgX6sk2\n0KP76tYUZnzIjf6yGxTiEtK8fgFOQefJNBFFPkJmYwRDm4TEGfXQGTeyFNr4\nSMxpj4Ugjzg+zRq7nfn9V8we4Tlk0T8Wb0BNhKRWOLLHDxYqqVFvVZSeZKtS\nM3pEEPp7SLN8bbnXzUB78NMvnP8S3BWlUSXwVyygLovqW+lUXKVAb+2YY2eQ\n3fZoVnLXB83m8wrT1ylh/h7R4MkDG84uB4trzjtUNvnVicxHFA/fgdNui8+c\nsUJh1xlWXoiUAW6Ru+J7XcoaQwR1iI0L2FgDGqaRMhRLRsPmdR/QrmOv2XHJ\nohNcvQllCta6XGuqoCzEd+UAP3hbMeP0W/jlkaviKKg2muNKeH4Gfxfv5/CW\nUmEI+UYTZszW5QTunbQAPvmV5t0osoW7z7pVAOZYpz5GcL5juO4ZM8Bo6pot\nF1EH\r\n=0uqS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84de96d085c81fbdbf53b15212fa9aa68a0bf131","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.88","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.131"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.199-renovate-internal-patch-84de96d085c81fbdbf53b15212fa9aa68a0bf131_1622270252734_0.23532905504662383","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.199":{"name":"@balena/jellyfish-sync","version":"6.0.199","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.199","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0c5debbe4bdcc69a81de9aab803f5c6c14133da","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.199.tgz","fileCount":24,"integrity":"sha512-Rc/Z0Amod3719RCR+ok75huu4IDWXGbEXDHuP2iMp4QNr4oYRKHq9CSJo79JrEEjlSZw4jLoPy36EFgVjliwQg==","signatures":[{"sig":"MEQCICguRCmPmEejLXWt9z+NMO6/pONdVb6Fv2XKkKHT7GYMAiAMkI4AaeJLEeguweWXxFK7dWxANihxbFQd70gxNae9sA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgseHeCRA9TVsSAnZWagAAPu4P/Ap+8OzOXmy0LSxZoa4x\nNc3eMT4Nb/bcqDxb56FcMPYFyZBILUblAH9Q+droT9CTpPoxUZ7pqkD32GrF\nyPBztHVj81OFluiFcdIwVe3mwgA4yszaClj6D4hvFALiIJSLZkc9t+Dw8xMV\nls2niQMgqoAbzuZ/3ujReONR42CyTuQYOf4M2eQ/O8Lkg/XvUsMm5V9VfMeI\nbtbOVE60FklAXwwa0yOkIsnwDmpgq0RcOy/EZ9Oqx+/4D2DEdHcIo/KtECjy\n0QseOofeeusojZNU5qwxK7re+nfSS0H8tMZc9qhlv/h6RPerSi+Whogb58hZ\nPnHi4fB4QavKKjayg0Stc7R/SQXbysI0Z6ml3DkSvGSr/9WtCaHyCI0hrjXu\nzT5FVxZ3KUkdjNQ1HxdLQWkmaHZBTYFgCb60bxYLJEQC7v9ilt2bv5xQFzso\nUO8oqlfyz9S0FWryKr07RhZcnenIT3b1IMuqJwBpvcqlK5z++c2jCzHepvvP\nTkwU0FUM1GGeNjBB9lorAlqHIiAuBjXTBnUtwcckm4lzdXUIJmTaq9SWwCxC\nh+yOQHirR9lXyOprExvqu+ii9bKCvT24P9d/3nlAvcDPJ6Ldd0ak1DxMD/mH\n7LRND4N8XlE4yCuEXxqJyeR5o1MGi1RtRcHSrYo4FfUWUbZUsferMVw9E7MB\nPLHi\r\n=IYHb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"73dd08c6275540b2c74b7baf2e08f0eb85bba592","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.88","@balena/jellyfish-metrics":"^1.0.238"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.131"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.199_1622270429661_0.9238418240983408","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.200-renovate-internal-patch-25aea702266b09fb722bd3baa44a1bd488628a73":{"name":"@balena/jellyfish-sync","version":"6.0.200-renovate-internal-patch-25aea702266b09fb722bd3baa44a1bd488628a73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.200-renovate-internal-patch-25aea702266b09fb722bd3baa44a1bd488628a73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0c8e248c5f811d440fd919bd37f094fe89743333","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.200-renovate-internal-patch-25aea702266b09fb722bd3baa44a1bd488628a73.tgz","fileCount":24,"integrity":"sha512-3iJqSqgr9EiMruOMcDE06qB6fQ5P7tiOfm7xE9tG6P/mht2THUm6nN/4+0JKPHXqK2fI9M15IxF8DFC5qeF84A==","signatures":[{"sig":"MEUCIQCNb2HaQGsLcfAEZi3gy1QwM7kjsLqItNM4Q/YzRUn8sAIgOnva1CiaHU5P7tGsInlDnR/Wuon/0yPQlHz4eFrqZmM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166936,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsfcsCRA9TVsSAnZWagAAFYcP/1gJzsMvDGbhSIPTc9oB\ndnmmWQ7K2LT+0BshvYc1BApGDCiapjtA8I8YW+cQ5kbWUOJ3h/fAiHN1sau+\n6ntFkthYju4bJ7u9+HLGspB7Ax2Prk/XaRKsjAsVCRpZNdEjiljPQWXtPfWJ\nraf0avhi9vToQSPFgSKtg3Lz63eAyli4OHXuat6stYdl0vdmSp4InKTV3O/q\nGSWQHZUW0TNDMmHBZNZMngzM3tCzPf/2qKY2CfpHHYMbTMtuEWeIPPHt1JjQ\n1RWijDeYfirsDQ2paIsZBnfUqpw4jlFvx80V9e0bNd32IiTLM86OOgdLxVwV\nyUGgtSZ9D5iE97rTMbAh4xcdRT27NR8FEfDBw8bSBA1HwczVOLU4OOzJbWj+\nV50npc3897ETnRu7EwTPUERQFomWM8XqeXL4QIXu24R+jJ2LVUpqtjjwokqb\nihHBfaK0ZLadKcfdClgB8uaI+mkYUiIR3ijM5nRD/c6fLrM9v1T9Ld/hN31D\nsf9qEf47oVlRmn9dbkFqNfdkqR91owjKO3bPQmklf/LXzId1ueVoFZAOiXH1\nEkX5s2K6slmamvGgZAb4xyFlOXMzVQaAe230YI6n4vTm/c8j6zAhvbWEBjTJ\nGdlxh38W+J1rAzv9A0jYkuXKDvg6hRxz3WZBjWRsanvC5Kioc7fR6S6VqY1e\nwN2N\r\n=8C6j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"25aea702266b09fb722bd3baa44a1bd488628a73","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.88","@balena/jellyfish-metrics":"^1.0.239"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.200-renovate-internal-patch-25aea702266b09fb722bd3baa44a1bd488628a73_1622275883785_0.9153887878026332","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.200":{"name":"@balena/jellyfish-sync","version":"6.0.200","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.200","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39884cf8c0fd14c5f3c9e41ce9494bd83c441df8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.200.tgz","fileCount":24,"integrity":"sha512-u92ulDTYMQ/oW0TsSE+IhCT0C574rWKA2dsFz1YVddMabHDcDtus2rvVXerDLwQHWpbh2rLY8t1UN6DrTg4iuw==","signatures":[{"sig":"MEQCIFEn8lJPDtdrXt7XFaQ/EuX0+RksWX++YnLFBB7LwPfXAiBK0zbTcTvwb3L28ZhMzdpZntXp4kLcUidR5DAiaeaYQg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsfg4CRA9TVsSAnZWagAAVeQP/3wa/eCSoITl5HRIjiDP\n+1KU/SH6Q46cdyIOWnUHNZJZBdbyHZlD8TK/UgFhJP1QJkOQ8SbmyY0BnmbX\nxQ3PNj0qPRKMS+OYeC19+2cFAFp6ujuojo2mMf3SlOMjExvBHeO4JAYRG8Pl\nisx7PZJQ2TP7ZEycsG4XpVj5r/Bs4ky0Q75Ifapy8HUkpYbS18dbPFX8IvUg\ngnaaY2/r8eJsVuc2Md96BK32i6FJgjrJnVxiENypRW6ts5gyI54Dzh0DxF48\nerqyQIDpr+jEZzYwltMRQjdW3YD4PP1a6oTl14vNLAFEFO6LH+pEPZB8kudD\njTGCWTD8kJF9vlaqx6EGKilpKPS1ndy23ePEx+SSuiO8pjhyOj/dSCvW00I1\nMIhlVBOyPYr8bWsKD9jS6OgFPLs4UADOCzL06M70oqDmair5xPs4vc/Ri6VM\nx3cKVaci/oPMDGuNr1HmjlOTM4tLHaeYLCc+wwOyhp/CchzZye+POdIef7A9\ngY89l4guvx2y9vJ8sQF96qDN5BiURsrcUrxXlOmz2Xp2BUYrVQTf/CXJz0WX\nUni7U2PwVPM/XbhWoUBE1zRsh98jl+3CdxGuouzIOMjLYj3vdJJkF1aQKLZy\n10jmbxjRcFEvQQVJd3I2+RoMJLZ0Mn02xTK0gzTgtpCRSqA6mYUwvfWa4z+J\n1k1p\r\n=Uwir\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"677c6b0f43aae0a41b0d921a5b968d1cbdfdc451","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.88","@balena/jellyfish-metrics":"^1.0.239"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.200_1622276152493_0.6398109130357521","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.201-renovate-internal-patch-12aa208b4ece31f39f559181170badf37c0be4b0":{"name":"@balena/jellyfish-sync","version":"6.0.201-renovate-internal-patch-12aa208b4ece31f39f559181170badf37c0be4b0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.201-renovate-internal-patch-12aa208b4ece31f39f559181170badf37c0be4b0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27453a3e089d721d476a680cb719bee9a032638f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.201-renovate-internal-patch-12aa208b4ece31f39f559181170badf37c0be4b0.tgz","fileCount":24,"integrity":"sha512-EQ1mM8XTp8GzBJMoWzzSFKg0LCTcIApKKfLti+Mr92x8rSoudM+TzS6o+rEPb8dQZj3Mzl/36U4tZ6GmQJ/izg==","signatures":[{"sig":"MEUCICDzb+m1RbYTWEIf6bCUl6oB0vza7hIC8xqVV459RBbfAiEA7JfYHlD53UF5i16aTTZq3Fv3NpxS5DSvf+2eaEewvgs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167008,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsg14CRA9TVsSAnZWagAAfEoP/2KYmpSung/yG2sSPwTi\n+sK505p2caTNJ3QYw4VozvIRjr7YpcXb5solZhBHg0l/eIZOQsONxHpHQxWw\nN3ivFvmFC6Gqoj0Py7Ya1jDQ+kN7SaOPD9iAGLZ8p9P/EzPF8889KjAlmEIA\n8k6Kn1w2ncUhC7CC1xCxgTB0sHuCZa0d36cT0yBpcxcSuQgI306aD1WLXpvx\n2g7tlEkevXVosTefe0QMt74h7Vs/YXzpwEbhcAcM/3tQ6L6x7gS4EF9EZ6BU\nsZvNqYR0N60cuad90BkAMkPjYTy2CA2qNBAcLiVhOploRkO+d/8RkVQw0i9Y\n4fMBt49yHuCA3NGDW88sqd4ui+m0vUtUmgIDlSp57ZdbavE/f9yqUM9kkNug\nw43w+tBT54y3vbcJ6FPgCYrGPUGIOr2qFbztw4IsMwaNzWLR+u1fuvYnDuMn\nvR2jwJyuieZa+lHyfMcGj6u8OluFbDFaRLTFPU0UII6pXq4Q6Cvzsgloj2MX\npUmVEri1XvDfFf6f6vj082MW/jA+y/+u7Vn9c6VyYyfFMVcrOxlhf8BGdU5N\nInhA6Rkj+BkVw2DVwcO2WgSswMvh+ZuRnIfftiSUXopaHUkCXbi8DQkMvQgn\n3EjNnur0BBiHbJ3u6nDElLj/msBPYm5+UVlOa/X0C6PPVaqjb1be141KbmIX\nSsoV\r\n=dBvY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"12aa208b4ece31f39f559181170badf37c0be4b0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.241"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.201-renovate-internal-patch-12aa208b4ece31f39f559181170badf37c0be4b0_1622281591915_0.7833428144068488","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.201":{"name":"@balena/jellyfish-sync","version":"6.0.201","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.201","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5371fb08ec0613233785224f6b55f32dcdd29013","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.201.tgz","fileCount":24,"integrity":"sha512-iFvkPrpj0tOCaOi2Nrf0ZQ8asFbdXxK9KU432Rt296XXg88Q9Jrj3PY1q/CdROULpPz3CiDKTrCfzTM2IuJ1nw==","signatures":[{"sig":"MEUCIGl5dzjT+oT1LjV56qT3z0ClwCXw1bZacrM/G7ZMD340AiEAvBOf9Fj+VcBIm/HIeOWfnWMC9mVQdUuJiDL6PiKNC2U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":166943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsg5ACRA9TVsSAnZWagAAvTMP/0mXG1OcfF+J/XzTF282\nVkIrReJCltmjpEeJQSjg54svt8BWyxPK+FtuQ74KYpg7cqqlV7Cfn3erF2Zy\nRiWLaIJAIfAtQME6cKJ69R6RyYrqpB138BCLmwV77DNJs/OrER1jEFSlLLCb\nRGObOBHUesL/BPT/i/V50PFOgKMPhM2melUXXYf9TOWUr7//bWBiBYxOfo+8\nlVkTy2sxAe6fgsdb3lrYnqyl9LV50KnJYZNy7+PVouEZQTGA/odTOEPTGFFc\nonXN1gSPCxnpxp2YoFmgUJHDnbWs0HLKscy1wZPfdYKJ7NBRZlCGLRmM/beF\n6siy56mMLZQY2BesZ5Y9wAsqiG9bnif/66ur9ew0gimukf4Ll+NbHoSvP4Wl\ndOZry0O3Ba8Ej6i0QL9PWPoxkIXbJbGCSk790J4T6aw9h0YyXLx6M+1FkLjL\n4orNo7C9asvSwdBnQ9pbo7ydxtABy94u38hLkNphlMijGts5ffccJ5gh/pY8\nLGaJiosnS27Oh83VzjqWLAKZiaKdMP4Bcg6idWnD5MgbIRSzJWO1zkvWZsww\nIqRPnNY2KjX7OvtFFunUhCpaA8/rLXoEEir48Ie52ukmPSMvypiAg21MPaQg\nNpQCBBLIRU3BMy0zBO3E9uoG8uhlnMNyZ4Dv7bM+O2lLBYKr4IwYGyDlHivF\nzkgG\r\n=WtYr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fcabd3e665089673c08e338d98695f638e16db4a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.241"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.201_1622281792181_0.27902994309585005","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.202-renovate-internal-patch-febb3148fb8f15a0c09564291d69465fa1eacfff":{"name":"@balena/jellyfish-sync","version":"6.0.202-renovate-internal-patch-febb3148fb8f15a0c09564291d69465fa1eacfff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.202-renovate-internal-patch-febb3148fb8f15a0c09564291d69465fa1eacfff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0328ce04b59f89e1314774331b4f7e12c6bae13","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.202-renovate-internal-patch-febb3148fb8f15a0c09564291d69465fa1eacfff.tgz","fileCount":24,"integrity":"sha512-1KZtQ54WV5CEXm4ll0/oM7bvpO5DUy3VJly21JOn3EXtb12Fsf4Q85llCjk2Odxyr+ybB39gdummejfidrskMw==","signatures":[{"sig":"MEQCIF6PoHxBvZyavW+KmUu05Wh5NMgYy7v+BsRUvmyr0uawAiBQseZ3FjvxuTGjTCvqhPq0ygVTwMQJL4VODhkkHsMiUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsiDnCRA9TVsSAnZWagAAXj0P/Ax5YIGIjRTXdrw5fz/L\nWx01evOwd/vjtgNdnh1oR97wfmr0NCl9TWyoGZ/LexxmTyyiLlF48UZ2LUxI\nmDe3G+aOZSTlURPn/s+eHzVYW22E9ZNO0AZdtY+7SqbTQFZ5KPMG1vWnLB/x\nN0kfOiPBLxcG3uns1lttp5Z+Z9Lc7XmyPfO0v5PK4ccWXM/K0e/3VpirQx1v\nAKUTyyIiMmrGBOoqfS55uwnPZF8NysimP5LBxzoD36Dhx2v3qvPeiZdrHxEr\nQ7N9ZQ5QAKKJAavibmG1Ofp2JEeAjbjebaMa0b2vcB/YzPrtT/NQSghdJcCb\nVIy1ldi6rFLB9TC2P+3/RhXQsvueDsg+aZqPFRy3TvdXSg6GloHUIdpR/2Ul\nZSB7wITfoOnm+25AQlZrCgbNujaB/eQUuudzKh1YghfgYcJQiQecWzZ/7d+6\njeB9oqEQnF5HdZ3DwoX+U4YeOuk/+HEhx74pRpRMPBX/gnACr5ZCgXQxIuZE\nwJqPSe/tzWMM+LlTlPJ8WUxv2GrWFnCnMWadakQgFYPcZpy0fNIdACds7T5L\nXtrTPc+wQG59/FrfM+nIgUKj4SmVNRt7P/iOyBl3PdoTafAz0KmBB3GEqCVX\nKJ2u3ORY+ixFCcgn6v0J3THrS62iQPc93QlL1PjLPffd7hIvlXtVvUmza9rB\nyxrQ\r\n=+Y3Y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"febb3148fb8f15a0c09564291d69465fa1eacfff","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.242"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.202-renovate-internal-patch-febb3148fb8f15a0c09564291d69465fa1eacfff_1622286566506_0.8733227960318177","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.202":{"name":"@balena/jellyfish-sync","version":"6.0.202","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.202","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3963d603f024dbaef954ff3b0c4492e55a84b26a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.202.tgz","fileCount":24,"integrity":"sha512-gEKlnY0zWJXF6RzHrMMMvjNcwMxTjcKf94XKSrhMKFYsqc1t33aANqADU7FJz8gJ2EHzvw9A6LEgd00PsZj8XQ==","signatures":[{"sig":"MEUCIQDgjHRDaUVW8Kio744f/ylu/jgMOk2lEnXt+88ppDLakAIgYVd0XhlGWMp47C6e030jRhu6RohGq4qRjgIdyzzXYQY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsiGlCRA9TVsSAnZWagAAjp4QAIGY+hyzwzEXxANht/Yq\nQg3Ksc+lfICaC0w3ewXt/pHs6JDOcc99a8kBEgM/VfpDk9FmPjexjbKAgQw0\nHvJPHimk5uo2quKKgSGifPZrLWAItDGyvVY5LSFdvGfG08K5Dlhre9EUx8X2\nbutCnj1gc+i5soteYl9Qnv5pks6RCjn+vBBmhjTQRmd7sOUPvDjGLM1upJYY\nS3Fs5oV7NrZBlqNRA0lOkPw4Q5ohsTiV4kXjGDS39lLFOfnQGBn3IMFHrYVu\nvSkP1+BRTD3b0fS2NzLkN7zj5BQEUVxHTG6C5mI1ESbVo/i79wVxaDMRzFyq\njwuNyZAIdhSNZ4E//j2TyM63jCE0v5hjck5+dIDtl5F+CZB17IBGLK1kM8RP\niPkc9Vx2v5jV3KbAQU76EyR0WhLtuOggLDJ21OVoPqtPr5VHgSZ9sa/AoWh9\nwXuy8bv9O8XMslxDRGfAPiPXdSVQejOWtNxlnymv52DGKQq0BTIrNQ2jYsGq\nnjfBoOSV1TByHBeLLbAzzN3aZlAet2sm1YfJAynzknlGRKoOtkFqZ2KDe6OM\nzyupk5VKmOVZm6SLkYsV8+ywLmNpye8bNFoQMSLAL7RHv08Q1coRvnHGBJ19\n99sEMFb0YBTJjdiEYhF3OEtzEn0PYO0gLyDECDHl2Vacsuoz4lHL4nSdcO8J\naHzq\r\n=g8Ca\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e0ef1b9d085fac591f440ea72989b385cbe505a5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.35","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.242"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.202_1622286756969_0.0555599805563598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.203-renovate-internal-patch-0dfe83301257de8212971d71c5fcb90cc467241b":{"name":"@balena/jellyfish-sync","version":"6.0.203-renovate-internal-patch-0dfe83301257de8212971d71c5fcb90cc467241b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.203-renovate-internal-patch-0dfe83301257de8212971d71c5fcb90cc467241b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d16aadfc99c5be9e66539ffa8c92e984e31510f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.203-renovate-internal-patch-0dfe83301257de8212971d71c5fcb90cc467241b.tgz","fileCount":24,"integrity":"sha512-w0UsoV8AGNFfkuEExIlb9xUgyx5q1atNdpoUbPggNvNEE0O9Fyl1beHMCMgde4rk6pPTTR6UYhWiqSIjzdHjvA==","signatures":[{"sig":"MEUCIAxIw/jEp1s9xPM+dOK0bFprYFKmlDpgE8Hoh70zEUReAiEAwMZBTAbtWBptPkJPo/VZGGCA8fxtRpcf1i9RQC38G1w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgskA5CRA9TVsSAnZWagAAc64P/3d3sCGMrMIKgQPntxUu\nMXVuliGESiQm7VheuAqa7pjVpWA2hvOfAerfvk4zI24uVFLc74eA/IJuKAfP\nVaeg6PnlFbhCkDVS5yPcBG3ghHPD6pAXIhs3jQ1h2v8T7SJ3PzGXIkh/oYfd\n7pe7eK0gV7Vje55NdTzZvTaxURRRAkL8VfLbCv/vs8gyasxvqLs6nNUEU+nW\nedoY+w5DeQHX/XZulGayORHG3rDX9vctW0yKceeSOG0sJl2ag0HcPZtd2EV7\nOhE5HkDUGqbjXB4XcyEeyI2eoXAJrdhGdv/e857Kr44FNHCkGONed+xsE0qi\nf20Ok0oyrXhZRw+vycgy/Sg6K7cR2HOJxvBd3fBcJYlaf2GNmYiugNeHVgwY\ncMWJIttIHFheh5lOdHInXPC1n5LoLl2qAv2p/COgku6P1/7JnPL2TmZAK6S1\nC20+VRt9/a2L+AdlpViDI66Xy6AanTDiXXDpTJZrJ09FzM74H06HgHWkfWJx\n4xCr22xU1xp+crcgIjKH8qiOahXj1TGfe7/iaUIUI7m0Neziw1l+lI37k1Bl\n293BSs4/IxsXp8li9zxOgEIRBHb5KUEMBcFQ4VZly1r8DZWNXFfLZDnK+Pn2\n1t5oAqmkvIIZReNv/kz+YiyHVGgePfjIrpg0y+68hDAEzAnf5LSMW6zC+gXm\nRHUe\r\n=f7Pr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0dfe83301257de8212971d71c5fcb90cc467241b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.243"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.203-renovate-internal-patch-0dfe83301257de8212971d71c5fcb90cc467241b_1622294585007_0.2002640212021083","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.203":{"name":"@balena/jellyfish-sync","version":"6.0.203","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.203","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"207bd27290256077eb44a6ecf95f1df0b05b6dd8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.203.tgz","fileCount":24,"integrity":"sha512-x14E6bOgdqSxbH990qgATYTqcudhyk8dKxWGodvPPTYm/32Y0maLUnlr3yBvyQrqxByrapMN3CmgkEne1sQjbg==","signatures":[{"sig":"MEUCIQCS1l6qdl++pf62kH8xy6eVHaXS/VUchnnSTrpOkVwkYgIgTlu2Rl3UyIc90aAlF2QaGXENS51E3Bm0Qa9qkpe1GHo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167121,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgskEiCRA9TVsSAnZWagAAoJsP/1lyxoPRLHlm5eEW1Nbz\n1whdS5EwMV7hvCY0aa28HqLRMNVwu8KBCp27Va0ro0MY6NCCljAUzRLkVN2X\n++6YGSeLvc7JjbB5N+e9iaSITRS4SfuKGehSok5hQh6/h2wcRHRzOrENEDZa\nlt+JtHsSg1lf19C5wlQSxWX7LunCeYNcGkIYjNt0Uib89SjnXP5qdSO5Qwrx\nnyvKUI7PeINmH5ErEJMbHCx4nz8OfD1yG5Fn0fdJSOtYyNogDkll8ZgHCCLz\naDJ15YPn0UnlOWCuhBZdSOXaOWPnUvTEUPNI3N47chaBPFBiZcqGq4iG/57p\niZmXLSQ++OgkdMAcFaJts9YYBf+52kMZTzQ4wOZlyu4Eelec/VKffk2ISrFc\nmNpdHW9KdwStJxpah/ap7zLRDj8ur3aWWWRpubB5r7QrGRqY6MqsrZ6TCifn\nBW19z+UuXDNOcvhZw3FHlVhHEIN3AP7bXPjU23YlPlrVmrOwb64VxoWiJJ6s\npgtqNXO7FoSUFtEn0Z1G7LcRPi+48M2+C1Rgj0eCMr1MjGh6hNO1pkgka8iK\ne/75ZG8K3WcuAmX4s4+JAG4bx8vIXsWQrauR4SCb/vJ8B9QP0Fhtn8rW23VM\n9hCPZQXIq89Nr5fS2rdhbRlpCGL/85CJqbXo46VJ8v2r448FWMQjkffKl8Kp\nXaOr\r\n=uqay\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a4b5c7932f3c2f6ef4f620bff0719ac39bd796d7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.243"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.203_1622294818018_0.10251779858771859","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.204-renovate-external-non-major-2d316e700c53c4fc3da2658d5ba3da2d203a983e":{"name":"@balena/jellyfish-sync","version":"6.0.204-renovate-external-non-major-2d316e700c53c4fc3da2658d5ba3da2d203a983e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.204-renovate-external-non-major-2d316e700c53c4fc3da2658d5ba3da2d203a983e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63f66ade2fe29d50678b19d01c41a18cb50351ad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.204-renovate-external-non-major-2d316e700c53c4fc3da2658d5ba3da2d203a983e.tgz","fileCount":24,"integrity":"sha512-DY5Z3wzZr9e1suMjNkTePnvb77yIA8JP6Qu3xIF/+6iMF38U2CS6VtmX+IKfGeeGMHi/EOXIek0oALiGZmf+3w==","signatures":[{"sig":"MEYCIQCOMUuKohOBPcTVEcJp+K0ypdd8X/t01aJbmeiXFIXwdAIhAIHkq3nuUFc1ajKGivqLGlRp1Jg0QdLmL4cTsQIebzNP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167274,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgskI4CRA9TVsSAnZWagAAr1wP/0GxlZ6gTjhySWicOE4z\nmaHVnuZtGvWGdzkLdGpoUkqQF6j9OLYoFYoZeImFuK68rhxA2G1RTzaBx022\nDgqHvHPC6OijrLazuz4bBryl7kT2Eb0ZnxJo23k32ccnia1SIydegiKq9+Es\nGQ99piP7boVkvQ5v5qr0a3hmKuy19rV9/rZoav3Wz5XGJgKRG6lLurlMt30K\nJQuD80o1V+Zpiw77naoMqnH+WBUbXJwHMMCFXBh2w/AXfyVKkEp7ul8ulsY4\n2K2mOD+g/3C2YgiyMMK2xlL7efXMzidmQ+JTZmSdm+0m6/SS/Rtzi9uti8YD\nueW8c/yl1pS+/wu+DcaubXGGSDSnCVJQrdSJXzY+rZweiAxdm3y/c3lY+kuD\nfHciAzyV0HxBSRYKwcDQ8h76HtOMy/E06v+SeMiWppQBXJdeqB/F/ovLsz1q\nIhJpJofKixABCF+a2P3e3z0MykFYVZfafMrXAf7H7fnrp4SUWxx58Za2vFb2\nRrN9vuU7BFARYoZQ1UGCzxCDhsQ6q/PsWEXn8U191F5d7iwjGuBX9fDShqgK\nmoWqItZbVnO2yLNcumpdR6TI9ASGqw4bz8I2P5WmQVlX3HYrIvCcstVMW3Ix\ngA3Bbqi/rxzqP8gTVBGrnMd61flGPcVhcBUVvnjpYip2h1xB1j1+jM6v9gRP\noVrR\r\n=07jm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2d316e700c53c4fc3da2658d5ba3da2d203a983e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.90","@balena/jellyfish-metrics":"^1.0.243"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.2","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.204-renovate-external-non-major-2d316e700c53c4fc3da2658d5ba3da2d203a983e_1622295096283_0.9042937683971011","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.204-renovate-internal-patch-507781c9f41b09c6f609f16a5213ded3d54d0d3e":{"name":"@balena/jellyfish-sync","version":"6.0.204-renovate-internal-patch-507781c9f41b09c6f609f16a5213ded3d54d0d3e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.204-renovate-internal-patch-507781c9f41b09c6f609f16a5213ded3d54d0d3e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1bad9531be9c926e70db400ba3fc4db2e47c3a53","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.204-renovate-internal-patch-507781c9f41b09c6f609f16a5213ded3d54d0d3e.tgz","fileCount":24,"integrity":"sha512-4SOI5LkPuBRgj0+iVIEA7UID+MwdsvHuaSjEkKHJacvZ/RclwLc5AVNMWFhpzab/LSGUvB9vNL9uhlrAseVb7g==","signatures":[{"sig":"MEYCIQDxz2cKAPcf3mnSIDsI1q9iVqqKaF+aThAzlw9wTRG/xgIhALsG3wk0ohoTVxxveWjM+tUdVsSRFfwySnA/N/1cW4Il","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167258,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgslbHCRA9TVsSAnZWagAA3QcP/3MHQK4K2Q/JhYT+y51f\n4MfvYwEys+14xq77zMNedM4NyC6YQ8SBJluUI56a+FsqFE5MYjePEey7HbEm\nlQE1sgxttXT+piS/fzw52e+UG4i/kBtqMfDi/fFzshBW7gyOteblDVJ298Wq\n3VRbTPMW2BLakxJOFEo47PTCV3VW6wQKjjcvKf30U9reh+cPVKXdm5E8HnQd\nsxzSMDmwUGvLMWpnYuwUiR3Y3lP/Cv07bCfA7Kv7zTecIqQj0CUKLN94Szc7\nTUq4SlQglzv65YhhahRPf6YdkGK8TQrEzyJE+yjmPKVdLjzHPx5kziLFdY+D\nY1mL3SYqepztfJf5EV3r9tAKxjSvf8Wv8Dl+gfcurqWluWy1pR1UPp2YfY9T\nnkdHe9KpRSchui8Mnd7+7pX7SMgmIfOiGfv1iyTZeIaudWi7Nj7G//iolzl9\nFFwmwQgY4tuMYwM9J3JLwyUMBMTb3JKS73vSkXecbkNfGncg4FY6ea9Ryr7L\nGyE4PDUxg+hQWTsvDSLDycff6vQ83obB0DDUgfBJQZi6lcXMM70RqRdzq87z\nIfbwoUrrznYGVPjrFV7n60WUScE01HpC73d4r+6n/kHSNPEAa59Jh5HPq0k9\nHFnt+2WbsTa2HaQZ9SE1oostKQYlJeryC+NCPOAqCLhHKsXlwLxDK1aUaNl2\nnfR9\r\n=VcaP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"507781c9f41b09c6f609f16a5213ded3d54d0d3e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.92","@balena/jellyfish-metrics":"^1.0.244"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.204-renovate-internal-patch-507781c9f41b09c6f609f16a5213ded3d54d0d3e_1622300358931_0.2267954230077247","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.204":{"name":"@balena/jellyfish-sync","version":"6.0.204","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.204","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a6ff8e41b49a789ccb03435ff336c78a6b0f1491","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.204.tgz","fileCount":24,"integrity":"sha512-FVS6pyrt4m8La54Yi5f7sQJnSORc5F+VpIJO5tIdCd1S1Le58wHPKUWgmyBHGkbvx3+vSUeGQXj544uBZra8Rg==","signatures":[{"sig":"MEUCIHiO5Dy1fFEqkqx+l1p4l0Ls4wdVvSrhvaiKd1/oCvhlAiEAq9wPryGRC7B9Kd9OjU1pxPCDc81TwQZqxHg6fXla8OI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsmLvCRA9TVsSAnZWagAADr4P/0uTpqbeuULedW4in9J9\nlBS6sZzbfx2ZyJkMZ05biMKiFe23ZFWkZNZwO4LDiKv5l/mQbXBjZH/vpq3r\n9In4G8AxmNzqQs7U5B9zQf/+785P8KS/vEvA3XvIupQwypDNaeQDcbEMSoLP\nyMjmdRExIqnBFEOa4nbCBHdq/+CVt731fZ0TyLvplo+LQiSgohAa5LmAkbrv\nr08TbpWmqRjZ2GYsfQ2AhvYpQ+Nx6dEj6ZIQhBA1RGzY2SpsgSOdZFu7aNRv\neZpCgfG9xG35ZjNjq1L7Y2b+o2k5tO5hG3e8WcXvl0EbN4/aggl+U46BPbMV\nFz05Z1T+34sMoXdeKtT29rCQQXaJfmZhioVmhVMKXzsNZAmBW0jSl0vP6ZB/\ndXK/9/NVWZkp9m2l1VII4SYq7Qgy84VIy5dYPwqBKLXqLcr8mmjGH6Rz11zH\noAUVh/ixkje6mxjM+FD79iNn9VLb6Qndc46zuDl61f9XzE+E6aqFmdVTL8nd\nz9TS80gaWfupdcLDb7kxdJiSmwlBicR37ImsAS7PLmxDzdQ7liMOkRan2m59\nHdOb7u6SrTGgFlxMuAYF9CdWHo7JSCJwCryETvhgBBMPlkFYCCUDrWimg1/e\nNUeu208/sXjUyWBpdo+iZYZqYu8UQjk/3Pjkiascs+VwePO3tjdtwdNUXTg2\n7X8k\r\n=U6/y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0247a5e2d9c4654a1216a1060e51e0a03e8dd747","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.92","@balena/jellyfish-metrics":"^1.0.244"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.204_1622303470503_0.5168023724480224","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.205-renovate-external-non-major-b237fd370aba3a6b07bc4434fd64c08cf2af728d":{"name":"@balena/jellyfish-sync","version":"6.0.205-renovate-external-non-major-b237fd370aba3a6b07bc4434fd64c08cf2af728d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.205-renovate-external-non-major-b237fd370aba3a6b07bc4434fd64c08cf2af728d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9939babfde2cdf10162f6633fba320dddce79d75","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.205-renovate-external-non-major-b237fd370aba3a6b07bc4434fd64c08cf2af728d.tgz","fileCount":24,"integrity":"sha512-UtNRxfzoIV0T0bhrJDafV8ApWfE91eY85+3cjJ6l2hDh5qZmgRxtaqRG5SsG+Jd7Zj3jOBa1g3tEZgeo9WCH6w==","signatures":[{"sig":"MEQCIGE2xZlBKYUFGaA0ZsJJH6V42PlIgcjksDm5uPDZYjGJAiAGR10oD8DBCceANSKrq88UlGgD5m+kM3GTmkkd4JPP4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsmPcCRA9TVsSAnZWagAAsT8P/2yNLcD+GruUtQpjxF8G\niAE5V7dHW97BDsBAt0XiLa2/7gMqtMyL7FaHFwS7MFS2L2BRefciD7O2+maz\nh0aOOtgF1HZKSXA3LOhnt6K0FOgj9LE2YdGBrbT16o32XWOSQENaFq26sGPH\nDRLQWkrbv7vwBSvNfxV7NlsuyPH1s/yaurP+NX6r6N46Vkn7BD/88hWoJS5+\nlS7vSvKTmqBNqC45a4cStYdlfLm0UYvZlq5vHI7VBAoj2Xeey7XLTSKzZJmA\nKaLeDw4nGDY+RRw6/n6G/ZvsZza9TvfTmtYpkQKoX15ZeJxhk29yxBxAYe5K\niFiHLIEFiRbX/82O3zDX8bhiJAN+3NqaAZ8Rp5YobTnig4GiFk81XBO/67JZ\nMB/lVncp+cSHRmjwFqJUbnX7Vhnaeo8obVEu8bDYK08nDvGX/m7y3WZK4r7c\nZxLEJEPRqzviMsfg8bdqR0rgg5AovI4OAUYhCOf5NS2D20J/rYkPdORQHaiy\n9hACblZKJf0+RGplDYVvTeJtaUXWiz+ahgJqYS6balfAATphqt3O4qZpApGd\nlhxAb7orsLCZh8zAlCb7+K+yJa+8SCSVrbBX+CqqoXA3ofxfq0I27YO3F4OW\nF91ZLNr14su0/CFhHg+ERaBMTpA11C/t+Dx4d1bUQsq9tgMMU7yByTo2V4ya\nTpiK\r\n=+Lgl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b237fd370aba3a6b07bc4434fd64c08cf2af728d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.92","@balena/jellyfish-metrics":"^1.0.244"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.2","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.205-renovate-external-non-major-b237fd370aba3a6b07bc4434fd64c08cf2af728d_1622303707905_0.31167165322086743","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.205-renovate-external-non-major-6c8ca987aff2867bff9492e611ff8a7e660d0097":{"name":"@balena/jellyfish-sync","version":"6.0.205-renovate-external-non-major-6c8ca987aff2867bff9492e611ff8a7e660d0097","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.205-renovate-external-non-major-6c8ca987aff2867bff9492e611ff8a7e660d0097","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"43d15c3f546e903b04aad1d1a39a8da84454d31c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.205-renovate-external-non-major-6c8ca987aff2867bff9492e611ff8a7e660d0097.tgz","fileCount":24,"integrity":"sha512-0j2FqDCmxaH7RC8WgjrFtcsI2gUGIyM0iajaiQBxcFeawL1rno7nOX6aaXnzsXlDigAn8dYB49Arw5OnlJl6/w==","signatures":[{"sig":"MEUCIB34IpfsqiMfq9AEgXP7/j5kwh4vb5JzOSOq6Ip/HW/KAiEAxR7EFl09AfVYFrzjkaFfg+mKj4HJgFgMftivSoeD9mc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgso7eCRA9TVsSAnZWagAAwZsP/0e0zqvSo4hRE7bKDrRs\najGxqCCZz8UhaGxu4X9bxI9j1+J7sn3GoAI0A9ZyUdtFM4dzVj9QjkaMZsfq\nJehRXxXuswLejG8pRHOwtHXIBKDwRqsDyLzPagtLnn/VVfnChNCJjjU3k1gv\nqWGplXsVkasR4KLcryROrcESsuKw9c03p5d9UI6ln4P1wJG9Rjdg06jnKrVe\n/47sAOMCAENafJInG3aVgNWE0gzVQAwoHTyWu4C07CwmwOYZC5tz6nscZgn2\n8dOZrBPgeQB5Wqmc/KD5DPGjIYAosP2UHFKbeNU9m9qtec8zlojEcckovCxQ\nquaCy2EXxA3fZ1SosdayE5IX4dopaxFtEJPM0h6g9JAk4U4uh5YSEeEfDkGQ\nS/m1JGHX+vUq3UZH0mDjoq/Zrqqa7AOOZL9G8GptK5BoQX/ClEnP0qfRwwTi\n19fvo5lij3HnsGi+rl6VhbTaq+XlEpXoSt31tnZ/hZubn18ZQ+0yofcXpRzU\n0+RTBkeeGsk6DOT5oB/M51l9sX50r+/4pf+nktnhF9LhjsaUbq/QNdqDAbco\nvbXL+vks30cXUXNwhxtXgXiMVnY0ngUHmrgRe9Hbs+ROHUxEJwwhM1FbvGcn\nj2YEevsVQMK7Os+DLXaxhrR8o1/Sr4FJC6A9tcrJJBUXa/YWJNVSl60mq8MW\nUZe4\r\n=TtsF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6c8ca987aff2867bff9492e611ff8a7e660d0097","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.36","@balena/jellyfish-logger":"2.1.92","@balena/jellyfish-metrics":"^1.0.244"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.132"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.205-renovate-external-non-major-6c8ca987aff2867bff9492e611ff8a7e660d0097_1622314717999_0.9012815772757918","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.205-renovate-internal-patch-b18b2083f7de4d3f652199e5a453585d47ac41e4":{"name":"@balena/jellyfish-sync","version":"6.0.205-renovate-internal-patch-b18b2083f7de4d3f652199e5a453585d47ac41e4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.205-renovate-internal-patch-b18b2083f7de4d3f652199e5a453585d47ac41e4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b4fae314f815e1eea8934e69cfd67aa0c488459","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.205-renovate-internal-patch-b18b2083f7de4d3f652199e5a453585d47ac41e4.tgz","fileCount":24,"integrity":"sha512-YHwFX6LP4iThc2XNBZQnUR2Pq3HBkknboUz4vFE8SGGSCecYK87yZTgvNWm6LoKsqI0vzJmE7+QdAD5LPI3sZg==","signatures":[{"sig":"MEUCIQD9lp9YyQ3U/nfLsmbP0/uc4h/ndDy0v9FWaKofjckh0AIgKmCWP1/u4GCzJiZ6vItUucv49EoXsIIxNoaDob4Gboo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167330,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqE0CRA9TVsSAnZWagAAHbAP/3/2ATj+vtuNmxAr6l8J\nvHH+5Ja0Ze1+o+AQZboSlDXR2sb+ga3Fl0CPNEeO3xmtdiUWyn8rv1SbcUDF\nboNCTUaN8jA3uyFAJt3v1ZHFiUFya0CTKHkudnpgVs9NtGSt8G4Li2WAWXWO\nGZZSWOgq2Kg7cizu6Y3hl9wJTf3tl3VaovC6ldFcjt4vWNjtLpMZzuobkNDl\nDWsjbAazrMFIsENeaeJKZEL5opDaGsmMPo68GMwXss37ngxy2CQ5IJIkXuAL\np1aTBwh3bvyuKcDM9Ek0Fas45VYr5ivEZUmm4s7AXHkX1h7siMe49Om4ygLR\nEX2bjrfzg+rOLNvKvx1+EBkkMtCnrFUkudxbW98GxDNpN2UnLtgQ8rOlx/Bf\n+mQNNS5pv/WORObHNrxRLIxQ81BwkcwcReSIXKs/frhTiG1FxXuQtU5JrvyR\ncv8sShckkzlYsC9xpmj+2Lu0DEVhjtvM9OYhKfzo71LjnLTj+KnHC2tVCOMc\nP+0p7/PbvAIvNTWA0BOEf54gsTGWNdyrpjHDHTHnH4MBvfNRi4bCSf138F0o\nYEB7q5okqxithsUSczfHkDljRVxLQnD2EVAsiwBBnFM8rUl3Gj9wGae+80TJ\nuIi+cfPegT/dhmAl4CVIUUxcnp45SmWjS5CDE2pS3jlbtheAEUfY1EbKUFtt\nTxyV\r\n=Xess\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b18b2083f7de4d3f652199e5a453585d47ac41e4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.93","@balena/jellyfish-metrics":"^1.0.245"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.205-renovate-internal-patch-b18b2083f7de4d3f652199e5a453585d47ac41e4_1622319412315_0.5324037161520205","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.205":{"name":"@balena/jellyfish-sync","version":"6.0.205","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.205","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab032c89d0d3346ad044208e308cd1596cfa23a7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.205.tgz","fileCount":24,"integrity":"sha512-L8dgk7AbeBtfyn9KZ0Py0MgOGNrAKTB6FnV2SxWweC2DvhBtC4HNypcZhKMwzz9+YWYz8cm5b562PnEa5lGQgw==","signatures":[{"sig":"MEYCIQDz5QoJNgfN4xlyDjBtuJw1+BmqYZ5sk5GsPVoqC293NgIhALHKbzJOm6jATUJl4JuP6to/PXBs5eXv3ty5AfH0C0ve","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167265,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqJDCRA9TVsSAnZWagAAvOsQAI6Bi28GCojBKVQdiHHc\nzJi7P6woi7hAPLbWbmag1PJuqJS4sQn058QwnrtazfQhWeEK6iDoD+h3LZgU\nnsZkz1/doF7v9SpWa0DXpLbzsiFYFe6FyvvuE80gt4/ZlOFBaaqqC2rD5aIj\n55pzioemeB9XVw5GH+wKDZItqi3AJmC6c/FFNOqv70Pn2qxJxcaOxegv53wL\nQt4TeRHyAPBhnIYM05e0LacMOsvNOzrh77P9LqPj6g0XM7c3/ARs6Z6DaOUa\n8QEJfjdyxIngIv5P1cpVCdanSA8YMOvRltrtduHH9cXeaLcZNeB6UPjQ+GWt\nESOvcST++ItN0FV2CtgwFHBdY9Cz6O2j/rqlwyfvY9zTDnXMobrQpdY93Qj2\nP5Uff+YNCVh4cLoKqiqcZMxUXjHz+yMVNZdbkYfymJ1KHXgJiTVefFKhCEJC\n0kbUcZK8cyFr1VzpigBajKy3AtEsHB+c8r266uJCRDtZe3dpv7LwicM0fR/m\noNLaR1fM1JdmJR5AAFXt9pT13fWpN45GxycmBUT7cxirWXF94ecR+QFBJ+rt\nqqAXSGRMLpjJTIJe8F04FCJqXEhlwCMiQJI8UNJrelofiYkmWmD7Co+DM/v7\nrk6jm+2a3S4VwAC+Wxqg8yuXUMKhWDMW/AEHNQx/gB+OyqqTR6hJNTbOVT3A\nvOOb\r\n=lGYh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a75670d18d15bb8b491f95da450c33ef454c1ab4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.93","@balena/jellyfish-metrics":"^1.0.245"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.205_1622319682501_0.2965363900054334","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.206-renovate-internal-patch-2725483d79ea4cf82d91609d3a67647ea13f09bf":{"name":"@balena/jellyfish-sync","version":"6.0.206-renovate-internal-patch-2725483d79ea4cf82d91609d3a67647ea13f09bf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.206-renovate-internal-patch-2725483d79ea4cf82d91609d3a67647ea13f09bf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"48caa2ff970390907c896561a0dc07f75f1627c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.206-renovate-internal-patch-2725483d79ea4cf82d91609d3a67647ea13f09bf.tgz","fileCount":24,"integrity":"sha512-iOW5gYiWsLLGruxO+h/neevNRTKvLCVDpgMXpvy4igtdjG4xzWzDB9x1V6ZWCiETlApvPpF4MFBIVHrnQ+FtQw==","signatures":[{"sig":"MEUCIQD7CeVogR/oLOsrzrltlx9m8iedd51/s04REVtaIQAKDQIgeIMjnfVQhoTsFTHn0VZhylRrn+PJzqXGS3Qbu5by8Sw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167434,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqMwCRA9TVsSAnZWagAAWNMP/0DNLPnG+rMoExAW6c1H\ni6ag2EUxJ0WdkvvtKhWN66643O2Baa2CByZDeSHYv2Q9bT93ay/rMBwsCIZm\nhso4J23Jel0FHlxuq+4GEhW02Nhw5f7dBAiXoB2origSf0TZG9rqwexooLRQ\nkwwMOVs+zQzm4FBxdoG6IIayeAzrCoU50ood23TAhy9BVeHgp5oKjZK0PdvF\njlz/eAVUzCvYABLXe2sa5HtOrIcRDLnCBSmOkZhu5K8mL1YFrEBSUcEVb9+n\nsVx5eiNBYSL0eI8os0LZFLeDbyUMA1jfXofxhySJeXfy/V+Slu0Z/A5+8uxq\n1G2OL8EDwJonK4TE6vJSoUJ+QnKCm04GpVPnsEPD7SkhXYyHrHSGJr9cc/we\nAYJDWtMtoM1yW4W0/ETocbhK51aloD+Bh2o3i7y4ju0Gq5HRKetXxQxfGJBI\nQHgQEnkpuztV+Y3pLOuDDR3jqae9JhZ590pLLnjh4PQcAYJLhAS8l7zaBWDA\n9OShQh1PHdrUveG8ycm5f9Ve+0WEe7Tn3EroeGAGiLQHQPSujJxLCXFVE97d\najLFwpwLzZSxxgY02SWHGKZQoRG/Vlz/WsCJ467a+NcqjHMRmP8vtSUl1ZhR\n2jR15wH0kxR0CCAw21G5CvqHglQMixHvx0KmCHQnvT084yyXKPoR/fTf+moQ\nPTE8\r\n=2i3U\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2725483d79ea4cf82d91609d3a67647ea13f09bf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.245"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.206-renovate-internal-patch-2725483d79ea4cf82d91609d3a67647ea13f09bf_1622319920435_0.715809473337566","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.206-renovate-external-non-major-d0a3ca5b07ce85c30667b412554fcd3aa5d57e84":{"name":"@balena/jellyfish-sync","version":"6.0.206-renovate-external-non-major-d0a3ca5b07ce85c30667b412554fcd3aa5d57e84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.206-renovate-external-non-major-d0a3ca5b07ce85c30667b412554fcd3aa5d57e84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"96985b007cd90b45322456059862d5c6a034d2d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.206-renovate-external-non-major-d0a3ca5b07ce85c30667b412554fcd3aa5d57e84.tgz","fileCount":24,"integrity":"sha512-j9Ildl9lPMQKO9Huk1ltPVXDTHEm90Q6Lp6f5Er+QqgyE/ONYeCZTBNaYC3A9KJ8+TjytYvHJ6OFscMNr8btmQ==","signatures":[{"sig":"MEUCIQCZEZ+sp3MgwKrGhOwjeUXfVkiW7LLbcFgjBpjMp50jLQIgCzv9eLAjDHB1nDz8hmiRUlTLHaWxWVCXQk/24Y2Q6Gg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqN6CRA9TVsSAnZWagAATdMQAJEy/fO8sYfUvP7ZndKx\njzjjqqgIBtmCgb47uDNYS8DffRkQzseCq32QM+o26OKSHKR7q0uuhWWSTPgR\nFhHFgNaWonWdRHC2uVXd9fP+EG8tIdHaNrzLyHFv0uyKElemuAp1cccVbmtH\nmRT0wmKNO3qho0jL9uGNgXyRoPn3BzrLVtD/aArILZr2u70CSSCEQj3XhdgF\nUZD7evcioSXtH9z7/FBY+hKatZu9aKb/x52FrR/Z3ZjFyk33wslNUpk2ON6+\n7cdkLRRulmX31QFzUprzWYxOAJ/EiA+mz5RNENcs9eZcniAl40rwhlwoBWsl\ncvJf0DnltN3NMg6aGLzOQCIASPx3vMPZgZqeWeWZXoq0xznDCHgLWHF0uHG5\nsawiTqzRN2TnRvDtktAljLNBmX35IqOt971LLq6q5fWvA7NqDjyptrQleW59\nOjfdnS07W/+axmGkynsjAEhDilHPGu4YV4XCV5btBLBM5NSqRjmoN5V1OMQa\nPubiW+AZtSSFdyBNoU+MMlV81Iv37on/4hbN+GEF1UWOToDMHqV0HJXM9Gik\n12OvuReKi7nByz1A+xhzgKj8YgfKp6WxavHRhqd/fncKS+UASHx2XG4hbmLj\np4887yuvRIgJZzMWz8sslrqf6w142oWIqQSgG4HuuwCZLrK6z/LywHUwzcnj\n3heA\r\n=6rk2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d0a3ca5b07ce85c30667b412554fcd3aa5d57e84","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.93","@balena/jellyfish-metrics":"^1.0.245"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.206-renovate-external-non-major-d0a3ca5b07ce85c30667b412554fcd3aa5d57e84_1622319994178_0.18589898174228714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.206":{"name":"@balena/jellyfish-sync","version":"6.0.206","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.206","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0b3ea410ef453ea532365892f003a497dba2d347","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.206.tgz","fileCount":24,"integrity":"sha512-3tWyi3xjE6raU0mxUqtYwEBcZeDRR1oGMhSsY19TbIe0mJhnhVAVMgiIIj+59QDTXF6NK7TPgKtnQkS6o20Paw==","signatures":[{"sig":"MEUCIEbwOO9vK3UzJu22MqlW/figF+IxA/+q1M6+gwXd1Oz9AiEAnD2ptMDFIdMsir14NUTrSts4i7aHXnRSblCZtMh0LU0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167369,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqUHCRA9TVsSAnZWagAAWAoQAJj5eyuCav/gn97WdWrI\nmlMfMgDPc803+XE0U5VqrzGaR8kCbM0bci1ZLWRBFze7rJWzg7+oKnlvQlXb\ngGBBW3B2MhBOm1+NLk1xCDlVybGYyvaGJTPpTOvD5p/NKRbdxQVVp0bS0c/0\n37IY5eLNhBJYDiK2VOFEj7aRI61W0QrWR0horghcYpWMXIi+LyvaZaKW0MYZ\nT5HB+KUlSaAVKZXmx401fbyL7eaE4bM/Er3Q1B92krBpf4NQpEfLNKOKkWCF\nTvJUCt53A2+U35bTisYdFw8dwsmmcLZnIz+jYQfbtcQw7xrhdvw7p51oJUw+\n1jGkTfHLuIfayWZAgxr3wfZjrOQjBIjAGxedkSDIPdv5MyQxIa9aG629qvGd\nVrHpCEZ4uzuS+0/qEKIoK4fVpg7Hw784ryvOIpXVgGQfe++5rMre+MbSITSt\nYOmAg51PVHENQc8VWEHKvIATzZNtujwFu/h4fJklbVsBSCCuRekZICKryZzg\nJZpfTvqKYlKUmKyUIXHAw1TI8uQDbxK9WL63mb7ELo7YhsheksqxW5ipGkZ8\nH4ji4+Nwf/l2SF8NZTOcAa0yBYO2bPB/dbngi5LIvd0cjkrVJruj3Nx2/69o\nWvvJylcVV5bM9aUdAeumPaTw4/FB3hItKNiiRSEcyyyL2tfR4FZWdcgkeB1w\n0/fy\r\n=1D1v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2f59ea3e1c8c1001599051ff3cb7d84471ea3839","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.245"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.206_1622320391502_0.5354028388844616","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.207-renovate-external-non-major-c1bf84ff4ffc44aa63a30661b0080d88512c8193":{"name":"@balena/jellyfish-sync","version":"6.0.207-renovate-external-non-major-c1bf84ff4ffc44aa63a30661b0080d88512c8193","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.207-renovate-external-non-major-c1bf84ff4ffc44aa63a30661b0080d88512c8193","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29c16f4e09d27d8c10ce86d4d29b7063cfac69f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.207-renovate-external-non-major-c1bf84ff4ffc44aa63a30661b0080d88512c8193.tgz","fileCount":24,"integrity":"sha512-ZPXB+rEnbSMP+2RzMD61qYf7qALp28uWsw1HivtFtWjuhPCcd/LlhJLUU95vC+T6xpCYDVBB5JMe+/esG9+mfA==","signatures":[{"sig":"MEUCIA7g+WpBZ3/vtCqMhL4WgUfRLn77IEIn1de40mJGQCCyAiEAhIrMA+HTAiQ4zmxpjMrLaYbbBmWcx6dC7DOPTrthMHA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsqbqCRA9TVsSAnZWagAAAEwP/0pw8t9jwrurH1bsgQdX\nhXwCIA50H9m4ckW73BQCFDUrU41toF3A/YNJG3U+YPyZWCOPhhWPgJAWfBXX\nBRvt4PU6l2c/8euNfQC9rNqEIfEwkcE9orbytJQ5JoMQ4trmT0oARVjSpmp0\naRb6BsBq/xFmZaNaOhePl9lmOxkNGGZ7THdHRPvrNLwYBoar8iXa7vTNCccC\nDzS60K1DLWA20G+sZhqJfqcLdETOFmnT1e6tEGk9XQ9GVXGiLiNi3a+iuXS8\nOohUvIYgZ+5vOcajmbzLMypHqdFnPJXs8cbG024xuo3Tv6Fx5xkQR9b9bE7N\nTc65O7RK38WV9+khsvKusRimqMfhDlfK/BQuqTib61CDx0JVxkUbo4nnpzeV\nNf538VExwBGzwvm4QNel1W4P/OBzQPgBSoNXz+jmH4BykWyncykQFQxLhaPt\nC1l7/pMUaCqJ4bvYh+okTttWc+B0mzlfAw3JG3mjx7sNBgWdvnmMwCYrtl4B\nyt9kAJppmp1RNhQYRaOLPHluKXy6yd6AafykNe9C6NldPWukKJPP2EWNw9Z7\n7pa3NOlqBw4/BPK9X2kl51XD8IxQRv/hd7wOflNTzf8yfHTLBpbB5+Nholfe\nCcMjwdeM6vTjrNRDYFGZaSPtkD6h8ofeJpOzdYzFRseECpCpUDXH6GYkqWrj\nU+Zd\r\n=jLYK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c1bf84ff4ffc44aa63a30661b0080d88512c8193","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.245"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.207-renovate-external-non-major-c1bf84ff4ffc44aa63a30661b0080d88512c8193_1622320874078_0.32429385040272685","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.207-renovate-internal-patch-4827d89b9f146628db53d5483b2d44bff715d94c":{"name":"@balena/jellyfish-sync","version":"6.0.207-renovate-internal-patch-4827d89b9f146628db53d5483b2d44bff715d94c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.207-renovate-internal-patch-4827d89b9f146628db53d5483b2d44bff715d94c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f3b6bac69f62546fffea0cba2abc612ba74b2cc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.207-renovate-internal-patch-4827d89b9f146628db53d5483b2d44bff715d94c.tgz","fileCount":24,"integrity":"sha512-ZY5IPOK4k+mmjeswcifewLOzQpSNU6uOMalY8jxM2jmzL7rIwUHnBv+iXvShAIUSDAo+NhBjZUfPqCJGUwlLXw==","signatures":[{"sig":"MEUCIQDx/ImKnJEvKGDneS3mpmOEqBkkPEQLRk8CQIclaWAOsQIgTqDsA6Bc7zw/i6Y9GynCuA2vw0s4OcZWFS8sWYDiYx4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsrkrCRA9TVsSAnZWagAAnakP/R2AWu2xWyXAyf9gnOjh\n8TQFMkvvX6B9VKbZCAX5SytY5WnzEaGDuP+Ypbon0SzHbaRJhEPAJuYa8O7u\nftvzdH+RKGmEqGzMvG8fXr0nrtm7OModjQOFvEw8g56fA0L5UeFAh2MUjc1W\niEjuFKtq1MWnqGEiB/D/xZA1IIOcl60L2g0SQ6KdGnKCVMMD/hmqjCM3wzHQ\nViejzcZ96nKIulc7N9FC8ngjL1e4MX3RUbk/9SSQrx4Kp3nwIieij9aAteU8\n65H3/EGIMejP78W2lL/tpGTjtOJJrvyvOpd0+9/HqDeGvPp3m2opEkdKc16x\nJjldoF8Iv1tNQi64J9J6rhoAAzWV2uJQk4cn0UjOh8H+sIcfkU9U0w0SXApH\nswEEuPVdhA7rUOWwRUOf22kgY1M6v/n0nsT0InfEwX5vJX7F1SLjDNA21XXs\n+sbT1lnDOV5WPnRYbNL52FSaBt5pqs5AUXPFpeEcvhSWFqcfl1zkFLxWyevW\no38pPCLnqW4X8Y9BSRNoo0bleFovNdxo4AZSQLVmlbOlvg8qXHMR9zsV/QJn\nxbuBfU00bsHt/twOC15t1QJVZoi2g/D5jJqBHrub/5cjxhvCaWbewaYRV3LH\nJYr++9aSCORhUUeT5Ei0m07+QuA7aUYCMEGeKZkGE45zp8Vj6X1fmlCNqSKQ\n9yZM\r\n=j4Ct\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4827d89b9f146628db53d5483b2d44bff715d94c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.246"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.207-renovate-internal-patch-4827d89b9f146628db53d5483b2d44bff715d94c_1622325546940_0.3619614129934663","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.207":{"name":"@balena/jellyfish-sync","version":"6.0.207","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.207","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"121e7a4be695534ea07a6a7fb71a31fc98199405","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.207.tgz","fileCount":24,"integrity":"sha512-h/hmu1zsCYr8tXFuOU0XvAyLt67Jld00jFXWF2BlRyn0xXX8LelBpvWDfllRvTIjJ9qk0yfxZOF5ekf4e9Y21Q==","signatures":[{"sig":"MEYCIQDMFusz2ZdI+qZFzlCrA3j4/jzamZIQl1R2Aghkl11rJgIhALNtD0zKTRLuT4e5Cj9tiNyTIet+x8v5cPDS7ARib9qZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsrn3CRA9TVsSAnZWagAAt0EQAIyIpJ40XEmFdt2bLQ9C\nuZ/Hu7oS/dBv0F0SLbjGgyRqPgqUWymH1gX1K+8ACFxGDkWIE1U7J92MzoYu\n8h4VQ+3hbU9ASn+5Ah2fY0TfshLJMM01oLQPtsynfJC3OBRqJEfiQX9KUvRc\nNmYjhGwmK2B0ngMu1X1l5kBjipXJUzk/Hr04umHrJqHF7BmJo+m1+r05JomH\niP8qGplK1YFutJ3POxeltg6EFaR2H+Dih1pAk4wttb+TOZhm3LCdCpueoP5L\n04V7skqzeFsu+/1SpH37BRWvMXHnDI9KqHfGxzCZJ6g97AiXTbt2wr8X5bez\nyMcxMcwIyqzWQR5pJLupG8xmSkJPZn5udw40IzRjWhLLhFbhBQGkpE3v4E34\nffASaQpkzcw2PzaAx8p48H7dlgdvJ7nVXvgvuysO96F0l3oz0laBc+NmyqoK\nLCxb0uajo5btAo3PU6FUaJeKyEjxGkeUiyiqcMG8Y0zAzApzdfFz9WlIaSWn\ney0zyez37VgFj8fP4EkXf443Ut2HiF22wv8HgFMokuy/CQsKodm7q1PHnj69\nHvDp/bTh2+uQgWGzPONhotfsev0lE1QtgbPxXEHFhD/6bYP4Zd5jgvhz7wM0\nhLamtTnboOrkODVSqg9KGoFeIzukzqRt0BCeWZh36jZaW8nCAifckolGGgE7\n2QkZ\r\n=an8O\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"417c81fe8691fcf8886ee45e92b0888af760a193","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.246"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.1","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.207_1622325751217_0.6309440118555341","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.208-renovate-external-non-major-909efc1d256b4d33e86ba35b43a0ad045f52657c":{"name":"@balena/jellyfish-sync","version":"6.0.208-renovate-external-non-major-909efc1d256b4d33e86ba35b43a0ad045f52657c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.208-renovate-external-non-major-909efc1d256b4d33e86ba35b43a0ad045f52657c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0cb3ef3e1d111315f03061a0f049e6586ee4bbf3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.208-renovate-external-non-major-909efc1d256b4d33e86ba35b43a0ad045f52657c.tgz","fileCount":24,"integrity":"sha512-MDirolvpi8pqIiT7Mw8KzTVqm2hNqva+6tR4Rp4t0c4P3AgZwL8qDp1SCAKji5J2leSsFSZALKAwoZHrojK74w==","signatures":[{"sig":"MEUCIQCeDYsz9a93TqoMB80iMMo0bmH/8Aq/jPjCW+xw7K3BiQIgbXHeRFfURoxn8RojIIfaQDTW5lC2qHsroh8WEW5+NAQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgsrsICRA9TVsSAnZWagAAsw8QAJdsLRc6frkfawLoQHu3\n9uO08won8mrYrbW3Axl6WZTkOACAS4ztOxW+dr1oxMmd4zYTdAPZZAUpXSxX\nR1mv6fz2le1xjEKRbN9ADMcgEHRXm8IU/OOAcTP85TMNde6rK7Z355+AoOGA\nplsyyLANbu7yclmsx/sx8/6YSq+BdE+emxV8Tj27Li6tzKK1L6lk6mxRj145\nLAGgtu5XZWKEP+4yI+gpvawxXAVgdQyoj57eL6pzlSxLE8wQZxridDO7hAgi\nOw01OEcaPzQ0YgglMie/op/Xpe57nGfj0OM6PABOX3/40FwlU+ukOEpQfw5L\nwxRu+TZnJiPIdOd94YTc1tU6QNzi4hdiL0lltTcuh17I52OkmyLooaRp6kIN\nDxh2DFrkuMDEOp3+XvyvaXWkef5bZi0HM7WWrD9dHLf7RhEXIlPy/zXb6xKd\n3AoQjd/rJDTJigI1NFkNUrHiFQf4I95niC6yDtGi6sud3SVe391rxJ7k8zVY\nw3+DbYBAIDtPDgSP6HUfyo3p52mPVv8PVkvINubnGPBAHa7kQD5pPQlK+aLc\nkU6KrLZx9oE/HawPoZiJDtT3KJZmRmINVm0O8FOdABOiBunm+2F8rATdaf6x\nUaac02zC8PQnGkgLkQLaO64YHGnr0xUqJjO85tsZx4uLH0Hr0lZ04ZmFIOMK\nU/vz\r\n=Ll26\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"909efc1d256b4d33e86ba35b43a0ad045f52657c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.246"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.208-renovate-external-non-major-909efc1d256b4d33e86ba35b43a0ad045f52657c_1622326024480_0.9661666324978286","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.208":{"name":"@balena/jellyfish-sync","version":"6.0.208","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.208","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e59c9dc363caea81f55e4fadde338725d9eb86af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.208.tgz","fileCount":24,"integrity":"sha512-7JEsHDW52NqplPlPVq7UNaqIElyiz79TWiHfHDkHNBjAY82sfGYvXu7rINzdWFe1BNU7m9XygbwezQhWIfcMwA==","signatures":[{"sig":"MEYCIQDNFv7d9sqfgwdfYUvelUmPQsMYuXtNcx3yVqt4F4KENwIhAMoDyncsxKmCQ5eQMaqPN321Kx9aTPT9gbITr8fCbEwQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167559,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgssuPCRA9TVsSAnZWagAADbcP+wcm6N+mwpXbn4orT4On\nTOD9Sa9rfAt9RsaoG0VFnLwXor7N/H+QWKkEBIpMk3LoLxpE01yy+h2z6Mcv\nUc+9tbFODDnTPKvcvwwZkPdbvMmXkF1/OIpnrB+hCyB9qRLuJrZx0qLrMpFt\n6+bKvQ9Xltxg4cUBYEOycGSKN7eqkqEhWVGPqTeenfYnYvkLUOIGE8Evwl+L\n5A+B68wwLMZfIGg/hWx8/TIptqixzWBZX985O1EJINjkyxG5Nwch4q8fzSm8\nx3KH+gnJ9DXwuR3wjXDZQLlAQ2n9bYgoruH77TWic34ZVkNrJsOIB321osho\nts00EI8jWV2vVtC3fb0KsFL87304iN8K09iZuDGvwXdZzIw0p6AwJ+nXabOY\nxBj6EOA9jBHJ6q2MhJL5Y8tZe/yxqSuCH3lhG2Hkyke0Y+RvbU66gAMps9Wf\nH4VQUk7+P8nrkraTCdmpmMgcfhPUdIeZBd9fm91zHR+iJMdHTiDHmWIkVDZI\nspuEHUsaLKHFqM7q3sdiUyBLjzmippGIZ1IWWnPE+e5qh0SIzNBVpGg4uHMq\nvnUzMmkYn4fdvDFajCfL0FxB9kkt+NT2zindO02C8K6AOO/8ABW9tTaHJIOD\nZl1Ji0UwZ1yxr/D7l+46HiZNsKzuHNtL2Nmpaz9EjUzoSJxlpgnapXKtsVQb\nBn3v\r\n=aJeu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1463718a793c001055537a457866f37d333b0f17","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.246"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.208_1622330254939_0.41623642747760137","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.209-repo-sync-jellyfish-config-default-38e7893700df126e4a6bfa07ff406cb904d67410":{"name":"@balena/jellyfish-sync","version":"6.0.209-repo-sync-jellyfish-config-default-38e7893700df126e4a6bfa07ff406cb904d67410","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.209-repo-sync-jellyfish-config-default-38e7893700df126e4a6bfa07ff406cb904d67410","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf47a5f05b1ae0bbec463be734ee0c78f3580a1b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.209-repo-sync-jellyfish-config-default-38e7893700df126e4a6bfa07ff406cb904d67410.tgz","fileCount":24,"integrity":"sha512-5CH+xK3zHg6zNtfGyK3p+QE2BNruHjkka2QLDSyeXtGMQ4ZkmTOXmbv/ug3wd6vx4MyyDe+3SCoZ0XgBubdK+w==","signatures":[{"sig":"MEYCIQDFFfg97SW72g7UnuNHWx9SNjnGzFok8u6qMzghtWlHQgIhAJLUQExAM60nrX2u3ZhlUW6OPd1u06gnWgGZVrRjwaqF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167732,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtFWrCRA9TVsSAnZWagAAs7sP/2uL4HxecZ1mn9ecY+Wj\n+85QuXTztFq5rpKZqYE76gcK4yNnV7diUoeNVr/izriuCPSjY2O4nnnoMVAH\nh95hEyy92E7Ax5Go2Qm9Bv2qnYNtL3jZ8VUGjVEM12zyFE5vv6kXjuGvzL7r\nOLaHz3MqJOMKy6AtyRoRf79thNo+BjX4npeJrNCF3Jg9csV/BKuKl/nTcrmt\npgYG0pe16+wtAZXL1qWG2u4hB+RmJt77CNcUJXo26UX0prvaTY4jy+4yPVR3\nw+KgY2ZzRmm7IajuSGGrhgdkDx1hRg6bExhalWRyRjDL/hB95+2pMN2/oVzC\ndPlVlKFQoBue4/88Hpryoobfu+o1sBESWBhrbVHoAuXrsF6she56CCsk1t6/\nLEGsFQrAejjqFzGUQEKKiiDl9nQ24le4Ki8urDWqJr4f9mmj/Ghpcsp6/is+\niHHrQZEwcgabpgt3N6D9dfKH4QcVq1T5bcrDabBl/Si67n9rOSUASQlr6U7j\nrKiiNp27lr7Q+t1Xb/FSWoVo6bpUY8fdv3/FWlp+gKzRzMki4f/z2ONtgKSU\ngBoXRw8wTfxZNidvtpxZBttneL/CxhswaCrBk6VgrN3NpFpq/8flQ+EIxSGD\nnNLmU8zdAbBFMYaRtNJz1l8hn5ieCucZbzOdfF7l8HXNUsqUpgdtOjhvFedz\nlUPJ\r\n=Bf/e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"38e7893700df126e4a6bfa07ff406cb904d67410","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.246"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.209-repo-sync-jellyfish-config-default-38e7893700df126e4a6bfa07ff406cb904d67410_1622431146857_0.5668901083040405","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.209":{"name":"@balena/jellyfish-sync","version":"6.0.209","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.209","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2b8414406efe1aa117c61b2806457766c9eda883","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.209.tgz","fileCount":24,"integrity":"sha512-eQee6aAAt/jKhgAPHfSbjwnLRnSuhO6lkeRH9/OFrMVl6BJVUtG5WHHrChUYnto9+35pfGTTTnC88mYbJDNrrQ==","signatures":[{"sig":"MEUCIQC9NMJiIUSaZmCjeV41MbZq2hZvoz/RD1hhbnk2BD6VswIgEs9KRT/ir0LnKtO6cQyhi4a/izMPniIHybrbEq1oXHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtFbvCRA9TVsSAnZWagAA1yoP/A0HAATy8eVMNqHG/3no\nrPGvJpDzIe2cyf7wNTIg9vNMK6CjijWoOkpzp+etsDveGwiVJt0Z8+Dt6uhN\n/VXNIHohfSHICbOVoHtv1dqqw/0TLkEzzfosGZzn/y4dkmxV+WrJu6u4NDJG\n3SdWTFmnTVx3R1sKVmvky3dytaCcU3Ussx58zHS1i9SIazj794dPn60k+RwE\n3zQJs3ydtgfrEgMxYa6rHFKkByduHUGFiNcVEAEr1T/jAWuvVCag1kd5LKz9\nbEKPlElAtsSmgT6pLnBjoBn5KRomuBAtiGk/au3E4MDL40DfkxsJxWPFu+80\n0hIAlngLQzk7btogCSaa/KxZLRimi/BEE3l8jgE5Vx+oCLtIukwTjnf3J8up\nS+eHY7tvOugtxNpbObW9/1vy9ImA3B4THm/LPVT7wj+3qvq1yUlogG3InWpk\nk5JxTuzyLTBxoFCxIbp3RT/8gie3X6wQOJ1bTNgANH/5R5aqu2OQLF7k+JdS\nbtHsKs82wl1DXnmVR0dbLUN83FOc5FUG1NiYBTw0qdDBL2+GUR9waZidLSaf\nlwQi1xsietBKcyXqVodW1GrLN8/zZYPpybhr23wACLF+t5yZILVE5Wy6YdPi\nmINESIi0GHM8gjuaSXQ+E3agpmTp9SgQca5vwBoFJj5k9Y3ptqhMMzjawrr1\nQ5QS\r\n=fpcJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4178b52958fd708cde1031a9fe0d61eff7b0c0b4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.37","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.246"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.134"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.209_1622431471131_0.4182870602911273","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.210-renovate-internal-patch-ab514a9d1d95d2004d29a367a065e1704b23ed89":{"name":"@balena/jellyfish-sync","version":"6.0.210-renovate-internal-patch-ab514a9d1d95d2004d29a367a065e1704b23ed89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.210-renovate-internal-patch-ab514a9d1d95d2004d29a367a065e1704b23ed89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4372a15ec44885d649933a5bb693c06524d6b9bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.210-renovate-internal-patch-ab514a9d1d95d2004d29a367a065e1704b23ed89.tgz","fileCount":24,"integrity":"sha512-3LiXvPiDrytECw7Obb3Nd+3Y5D6oqD1NulXffk1ewWQMXw6gpbZoKSk+2XTprOmLZvFfAhQK7b/SZsViHDKiSg==","signatures":[{"sig":"MEUCIQCMKnmsJRV9tUKDlJTRr6baaF8Lnz+CYlJuq8AVtCkYLAIgKvZiTiMLERYMwaOeiS3odjUjAZ4uxbuU67k3RRn2oGk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167793,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtHbHCRA9TVsSAnZWagAAAlgP/39UkMkpUsCnCri+92c7\nMONzfcLmLIdFAi5DFrIKkTyL9nRo6dJ6GRZg2g5TfPsamMVbpiRAnl3M6c2F\nN1pBDiAbC5+gvWI+ntL+jPp3THYykmDsMbVISq6WN1/hcV4RGqhbuvmKP9R9\n9ldZoGzbXFoFgOIIQjOeIVE8SH6Wb2MYnVMK8J9u26N+JZib2BJiGuzG+RTM\nS7oScBXlX20PxTeedC5nA5lG9KUGrxk77y9EYUtRyfQDpVkxV1Kym6+AuJOm\npb2rAyr11DPJ/rMLkFQrZz7IIRZRe6ZyH9OSLx0G1efjLl0mw6slhrRKgb6R\n9lrkCsTyMC/rRffodqXPfszTeSszqWovHKZ/Jea2WYgS8dm3jYLKx56sX5VQ\ndTerFrdxhAtBDfuYTPv09aCp3NnfdvLdI0OGbgHBTGeBfUul5WvbQDn4cPbO\neCZhErS+bAKP7u4y2MyK2rV2s7+vejO0znh60TS2OaChQsHg8pjd0GkQWo6c\nq5vaP529wkacCjAQU9dIiTrzgtc6uB2DNaqsr3wBYV1Kxwt3DGzul3icGXCc\nrEOqqXTYQFgs4q3apTwe3ATqX4/m+nxa+1CGu7r+N0qvCpTXobbaume9i7B2\n2jwGlzTZ8dapsp8ST8JmX08on7IuqAheK8jIpSiKOB5gxeeIA/xOOexaNJHN\naDTU\r\n=ucgg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ab514a9d1d95d2004d29a367a065e1704b23ed89","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.247"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.136"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.210-renovate-internal-patch-ab514a9d1d95d2004d29a367a065e1704b23ed89_1622439622722_0.5560527316523405","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.210":{"name":"@balena/jellyfish-sync","version":"6.0.210","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.210","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8af9ec8ccd918e753e8251c2c435202622dea109","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.210.tgz","fileCount":24,"integrity":"sha512-5FzAlmEVbVJmoO19Z2ImppBEvB+9EV5Vi6J3Gg292PTfIntUjBDyGcUfs7fcJGdPxElNHW24gW3BLtAuspRxCA==","signatures":[{"sig":"MEQCIFo6zpZ92duT4PIAmiAe9XWX1isZNeXJ2kocbysNLXFpAiAr22r2TXHlYdclkpsIKP0ikYV8xTzwIfj6VoYTIbIB3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167728,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtHfgCRA9TVsSAnZWagAACxAP/iAaTagU2z5QbRMHsDDH\nMpqn1uH4VmeVZb3riwQHsxa1sIwSmloC7EJt1neq+FOFL0O9ml0o/salrm1d\nWo2Pf8qJJ4fFTdA74QwrDDp/whEC+/1jFOFWhOh60MbR8TAChFpv+tVjtDjw\n8tDo0WKx1lV5tM1aukEds6pT7r7nbDG+eUmYpQlTqKL0tBbApACrgGIzCeEC\njHZhJBbsD4xDQnxZTzVROzxs9vI0JS/VdGCsOeSRsav8HjUDMmvtOyBFwq2H\nvXeCxYl6HA3LZ1MipvG14w1yV5gS25R5FNCILq4vM4Rnk48Ji/r/OK6HVSss\ng2ybjCOc2LLmcuSAdWemJPh/n+Pm5I1BL6+6dkeFMZB50qeU2ciJAWf9naYj\ndzYCglU2KaEigsiR1hHXr/DvcYQk1Kw1iKwnB8JbInbAZt4IciN/BBR4+zYI\n+dUZFz4Caj2BXxUT7fGBn2G2zL5Va/HdjRLM7fWfj0Xpd0GKqppvhOuGA1Ie\n5/bP2t9v+yU4yBfM0Q4ICj/ueLpRZRrnzIRUgkxrObqyd8i7ZbP1kSrWMaLc\nvXGF7emKIfUclo5o7yP+jv0VhdewShw1xswr2lOgtFwhSHyg1KBnNq/WwIhV\nSdJxN14e6dTVDM7XsT8CAAyr/WWLqrprDQrz7s0THj74ihCZu96mnuPyXqRU\nvahK\r\n=Ys94\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d0b0cc0aca02076d39388f87365050997e1ac4f0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"2.1.94","@balena/jellyfish-metrics":"^1.0.247"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.136"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.210_1622439904112_0.6943500810920473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.211-renovate-internal-patch-ef2713d3191e1bc8be87c60006d8921285e3e0fc":{"name":"@balena/jellyfish-sync","version":"6.0.211-renovate-internal-patch-ef2713d3191e1bc8be87c60006d8921285e3e0fc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.211-renovate-internal-patch-ef2713d3191e1bc8be87c60006d8921285e3e0fc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bbd4de2ace7465f0f401962e0e0489646bd9e597","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.211-renovate-internal-patch-ef2713d3191e1bc8be87c60006d8921285e3e0fc.tgz","fileCount":24,"integrity":"sha512-hy/wMFqkNtoVV/1bmvvssNuW6iH4PX1z8osacX3cGT+ORLs6XhRWih5fNWrWdC1f78znxLbeeTCc0tywgVf2yw==","signatures":[{"sig":"MEQCIBfgu0PXDmDL2h8+uD2zYb4AAIbOMB7F9jRK5rmLxpDXAiAlbPrOkbK1nad6+g/SJYMFij51WKyM1M8VCfaNpeqlOw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167865,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtLkrCRA9TVsSAnZWagAAadUQAJnDppOCE0x8whgo/JzJ\n+8T6TvAFWeRTchVQXQfA41rrcsiBh96TVYbeowh/Zl7VztsnuIfVLYTMfO+/\n0SmMOFPYluXqB+1LrlxZQ/wDcBJRZmYt2NhQrhL16dFVfcCJaHRr6pwWXAjJ\n3xAjOxHXSAxtGLMIBpiJDDRAgCSeyAOvF7thqd+3+NYWMnOGZjnwQOnFLol1\npzX6JqXt33/di2To8wkMLx/DnTCFKbEF2gDWeaH+n3xiCB3fSoFJCWPJkLaW\nXE4tqBYo0uC/J4MBHYY6or5eURD69N4wjZFhtrxP1kB8QKxqGvLx+gzjR2QB\nUcCvIfTOLRVNV3rlIcC/GlOuaLbjTscdX4ewiFNf7gO86rdU5MiHCsncuYCE\n39gIXI1p9Ik+n+B7Y13bKRjtNzgQJzvAQ1lCWSBiFa6XR0J6z59b1j/Yj7lX\nDna2b4S3FTsOSaE88Cvn6N5Rt/Ymfx9/iHFR+Z9VhxCu3ru9wWgbz82tdA40\n7YRblPt0OgnY48rTw7rsDAdzSMqyDpKr4ztHreOeI0aLMomGELDGyoXPSTLs\n5qZJXNXxz//aC6wTBgMK2fREGygCjYyf7E7CeTcLj6YB+Op14cAdkgVLHh/n\nA7BTkolRFUS0e/OjeXs6yIr9aAIZVuyiJ4QtC2fnD7dFEDJQI+e8UGlPPaQg\nquX+\r\n=PJWx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ef2713d3191e1bc8be87c60006d8921285e3e0fc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"2.1.95","@balena/jellyfish-metrics":"^1.0.248"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.211-renovate-internal-patch-ef2713d3191e1bc8be87c60006d8921285e3e0fc_1622456619100_0.09488796520330323","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.211-renovate-balena-jellyfish-logger-3-x-2b726c7180b215f474c2e413fc289b769c5dcd69":{"name":"@balena/jellyfish-sync","version":"6.0.211-renovate-balena-jellyfish-logger-3-x-2b726c7180b215f474c2e413fc289b769c5dcd69","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.211-renovate-balena-jellyfish-logger-3-x-2b726c7180b215f474c2e413fc289b769c5dcd69","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"91e55fe55759683bfb35bd8cb2d556dfcfab97f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.211-renovate-balena-jellyfish-logger-3-x-2b726c7180b215f474c2e413fc289b769c5dcd69.tgz","fileCount":24,"integrity":"sha512-L+8+rX3rYBjFJfx0RFUlfglMbxI92dC712fRCBk6HKWZuaEMdktFvFZjVoN820wBMNUAWU6N7SSrHGLTBEVHxg==","signatures":[{"sig":"MEUCIDvk71qb07sWcP3lbWv2LCc6Yc6NQhQ3+37XWIb8si2DAiEAoX412n9TFExXVwvN5bkHo4d1yKJuBYm6VdsiHJEE4WU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtLl4CRA9TVsSAnZWagAAxnIP/0SP9lkPlLVenh2o13XN\nvv0nWGefPEFh9E/SEHDc4R4gp2g5VbtUjOZ8qeDgRPJCzX43RsRFe0oBSpHU\nzyl0TczR0qaS9NoS8oKkrDqcNrYOGmeILyGMaf4mWcW8ub5chnqCDs+C0iTF\nR6JqNpYRilWFz01Mx7Tm9836PyCSzySSiYNhv8ANAkjs8XKRheJtx1sTuBIn\n5J6ibVZeKEkdHVaqjShhe0PNuRkvnPWDMqxNFOMn37Twxr/9VSbQkFXbH9h/\ns7ycqqkOopkQ7Ig1RKWZWDh5xJKtarsxE8QMhwaFgtl/c5/93E6ApTfrziJn\n9kjIQbssZP4B3YPzrsMt+psuLIWvDxRGmVObJ0vAqq44EjbA8l+Vvfqjb28h\nh/UyshDX/QJfFG39QaKl5g3t/DTOm5ke9dQErMk7PqA9d9cJMnlyfyFbNp9R\npmR7ttSI1B+8X4slFAA13snlyh4OAoTYjs0rY9X5+mCc8F+Jhu3/DvS9EM1P\nkS5nYXuOW2y1stTmyeeL0c0z+SM62TxUSiexrKeotPQ2DcM/UMMdnnfDH4BE\ns4vz9105ez4lC1jlRcRrvgPZx9JzX5M8EFIdIhHOVuFsr0jTRGtaQg5eQVR/\nk3FDDutMouP6jSSrMp3mdCcY0y73gok5NcIlSi5gSL/2ENNw0f3up2hVoU+M\nPVHj\r\n=xypT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2b726c7180b215f474c2e413fc289b769c5dcd69","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.247"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.136"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.211-renovate-balena-jellyfish-logger-3-x-2b726c7180b215f474c2e413fc289b769c5dcd69_1622456696451_0.4997388759263257","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.211":{"name":"@balena/jellyfish-sync","version":"6.0.211","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.211","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"980d47f7dc7cd140f75c25b26e7bbcc432c7bd85","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.211.tgz","fileCount":24,"integrity":"sha512-7STkXOLID3ENaQDUN2glrvXa+/EOWbg3vPKrKDbobuZfDSyhMX4gYQfe9DzWkwqKpJDud/b/rMoCVM/GQMA27A==","signatures":[{"sig":"MEQCIAE8qADddCgdtCgRVmYIFY44jftk0MgEIrvhILdU5RnBAiB5LLREpolY1KY8QN1TvfpY0hhEj4o4tJrvIrNv0cq/NA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167800,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtLn8CRA9TVsSAnZWagAADR4P/2q7ih50KcZeQOVYDZ5R\neVvBwJyBfhppiAeEW3wDPb8I9uHcYtOyQXBCHj8TpPl2mCOVeVxsfKFwV4l6\ncVPilP5BvQpv/r0VCoDXTYkeO0Cx+v056C3jrq6ud1bT4YGvlRPiXjdRZn2S\nZSV49kOYTxckqiCK75CyLzKfL1GP+AIxGZHejsSKkLZyi83u8py6Ico8495P\n0CyhgreRN5AiT5Z2XKH7RY9HKVdRm1nLAMDqH6kDCMA62CGTsCuIsbzLhj1R\ngF2NxrRqw/3/mu+VG4OsxKkb8hEHtCHh/R2PzYC+NyyxklfrCxFfrglqA0Ob\nhYNMbsbLhL/8Q3Oo3m6c1OAS9yBCq4m2ohrAseKVwTrH84YfgGOSjFUPhjw+\nAFBtEYAtxiI/yhpY8VLuBcCwMP39YCaqvgN8HcYreG1a/zpnpRKyRIQoLXpT\n8zbYvZ+1on4P+tFYZQpgduO4jVjcFORuEggFWiOp2nX+TQzhmg1+en/6HsyA\n42Tx8MBTyImMSgMpJSa4Z7XCLEo8WlnT147M3SY1fr4O35gX8ZcyZ6Vb9CfX\n0uJFHYdCPoi10jvco5dMGn34Gmwijb/wlkyfhahoh8HRoeNzsW6a6734F9mZ\nu9yXokkCHvCM1JzWogu3zsuW7b7znIdi+pWdzYDTA2BvlpSXCsADJvsSPc6b\nQ0VG\r\n=IbxL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cbb12a7a3c60dc45579cb1e279fee9cc75518984","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"2.1.95","@balena/jellyfish-metrics":"^1.0.248"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.211_1622456828258_0.0048825472611757625","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.212-renovate-balena-jellyfish-logger-3-x-5062f3b11a13dec7bff994b9716f86f6eb1f747e":{"name":"@balena/jellyfish-sync","version":"6.0.212-renovate-balena-jellyfish-logger-3-x-5062f3b11a13dec7bff994b9716f86f6eb1f747e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.212-renovate-balena-jellyfish-logger-3-x-5062f3b11a13dec7bff994b9716f86f6eb1f747e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dcfa2c924a5052ceec3ea195a75d4a02a676e150","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.212-renovate-balena-jellyfish-logger-3-x-5062f3b11a13dec7bff994b9716f86f6eb1f747e.tgz","fileCount":24,"integrity":"sha512-fgSTYGf/WdWIj5FyoB10HydB/FC0Nlk5/o0Xow1CFFe1Bn3SfUp+is6IJkia/K+QvU9IUyATYEEX1PCf/ujSFg==","signatures":[{"sig":"MEUCIEFbtyNZ2B+11H3Dc1NYyZiuwfO97muFEmNdQFgb5dXDAiEAjQ5hKfXpyBhgw2CaPQ1+OmyAty1ftyzjr1Ed0mfLxo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtLt1CRA9TVsSAnZWagAAAdwQAJMsqj+HRf7dnNaGjhTI\nxRo1A0eIhCT6oVWbV7gGi11m4iaOQrmNIH+VM5oRX3nKNF53T0X0+b6Pcu/Q\nUJwAzjWMQ7xbMp5Gb7LTvpfiUHXAKGAqO/PPTqXQ3cjBgynRy5C+Hid5NdJM\nof18ITjdO4Ukzh3HIHX88W3UVydwN0A0hC1HMw6zm2gPtCR9hR5kPMkpH2yt\neI8e6vTMk1Otn2Qv99mJSalt6k1g+AhrOQ6paq1qthjx1BivZNIvdbcEjqhM\nxYmZ0G3G1GMko2Uj2/iX37Y7VmpgfwiKywFR4+vl/42luoqTkXUCsvG+FgMw\nWNnsf7qXXKIbUerSJGC9ZXWLmYrqaRNGBgCcAkK6I9vigg3++dYDWnWGUB6m\nFlHXZ84vDiqmZtaMqk9WyjZ6G5e4Ah00wa2LzT8LUm0w8HFZaEVUY++U1zm9\nDg0ky6Q31WWmvGYuKmquepM9lFUjg6wNFz9Rsnzk1mNL4DLkeM/SXHo9BKzZ\nEw1v9sMWqBjdYD6MT/XjZJUl2JpRrBQEDktL9mQtFsRQtwUM5V3f1dBP3owz\nyrkrWGj/aTX6tLfj0SsZvMIsTh5WiushyRSGkRid5dCLcqHg7I/gbootZYAC\nE8tRoPu+foxfj20LKTm67++Pmqw8GOEcj3bdVtDvZGawoYR9PxINzLADU0eC\nN8kL\r\n=rbOd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5062f3b11a13dec7bff994b9716f86f6eb1f747e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.248"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.212-renovate-balena-jellyfish-logger-3-x-5062f3b11a13dec7bff994b9716f86f6eb1f747e_1622457205550_0.22228586507353776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.212-renovate-internal-patch-9d5d1bde2a179b3347fdd595e2676ae6278b10ac":{"name":"@balena/jellyfish-sync","version":"6.0.212-renovate-internal-patch-9d5d1bde2a179b3347fdd595e2676ae6278b10ac","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.212-renovate-internal-patch-9d5d1bde2a179b3347fdd595e2676ae6278b10ac","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53eb60e438004aeefdea3b2f5f90c21dbcc7ef0a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.212-renovate-internal-patch-9d5d1bde2a179b3347fdd595e2676ae6278b10ac.tgz","fileCount":24,"integrity":"sha512-TH+8HB9lJTHgTTaGEAwzzWmbWR2rk/sPtVaxs+smZuT/CSvN53J7FmeXU+euUexzXHT8S0b/HkYJl+wGh1creA==","signatures":[{"sig":"MEUCIEaRubTw4Par4BWVOk7j1uI+Vf67b4uD3cKKnGwThp0RAiEAjF7kB0yELdVuCttqSSgu0VgoayuNm0iePPTAynd6VO4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtNTWCRA9TVsSAnZWagAAi14P/2KuA+lGwUaap2GkNLV2\nlxblnUKuw9Ai0v6v1llPm9Nd6lJ0iDZqjVnCyQ/05a9OwBKMjNlRKPKHbHiw\n6Lck4A0YLJZ1ntSFppSSv3nsv5aR59lTT9NJe39LzhuT8/UsRVxez4LBBP6B\nogL/9RkfOZBJejnz31r1kkPJnzw+8I578RILmpM6YMM4Xzp+ryJDrO5vebth\nPi1HjZpwCE5y8YMIvYIWHo7fxtEHFuz5En+bQPNVLdQU1G3ECGVvEkwlBTBD\nrZ7zmUP6ilqhldP11ilhqdHHIbswjc3vBLa/j6S6mGK2a2dDRYTzJZYxCLYw\nw2/EtMtgsa3J2KFhEBa52O1A/q+L31XK0Wih9dJUQ0fhrCT8C5s+QRiSnLns\na8TJYifIFFfhxDnFPTppdbxHNk6PMzf1RKy45AOcOjEzx0EPWITmEyExvTYl\nA/l9tcVsKSMkC9NAHYs8cpQ8U4tceyi+c7kPizSZqNujuB525OXPkkrRE4xo\n99yKm87bUOeo+rJVm2GZOONc9mokuXUIIiSikmHSTX6Pq5oAA0uoZwdiUapl\ncPwxmDIP5qwDhl+xjpvb9jKjivX86ch3x2LnodUb6NZI5OZXFPbS5XbyLDG0\nQRCVxN2P31Qgy6DSOF7P08OTbVnaulR3ijIFvg/GqORuoGZr615q47HgJ9Ee\nDJlL\r\n=Y7Ad\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9d5d1bde2a179b3347fdd595e2676ae6278b10ac","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"2.1.95","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.212-renovate-internal-patch-9d5d1bde2a179b3347fdd595e2676ae6278b10ac_1622463701713_0.00831850074252749","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.212":{"name":"@balena/jellyfish-sync","version":"6.0.212","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.212","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f85e935b289f3f10ee00054ae4646fb61d9159b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.212.tgz","fileCount":24,"integrity":"sha512-mF/bnc1VAM3cF9Ay91ZxQwTCFn2GTVbOTSkOEATcd1isNAkX1pM2pvX/288INBk16a4oZtGGkMWNkVt1YpWIpQ==","signatures":[{"sig":"MEQCIGd/IcaM1VhYQpQRZtQva2QG81QUzRiY67P7MkE7zXDIAiAXBeDlsOCQ+jFoLjzCDpKDJAVm357+R358WA6qt3nhhw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167906,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtNWnCRA9TVsSAnZWagAA4h4P/jAuvkQ2OYNkXzjJMXQQ\nH8W4LcycNI8tePDXXFfKyfdlqJ1OQCVZP3RwF3t69v9hv34o8CbR8zRocDQK\n5LsfeGIjnaS63XsOQ55jWniKvmnR3/3WVOd5QKTiKtLmg3AGUbMkos/aSGUF\n7IU0/YaDZ74JYoIAOYJ3XWZZ/mEEZOpecIIHr0fCSjwOGeNML0jbDZ+sO5LZ\nd3mm4BMhV1+pQvalVWDCAlHissSUBziWS0BbPkjj0S61G+3ZL0gt4GtDbbp7\nMSwemCXp68WiFSdAz2WgbY+o7sq0DxXK1bS8Ogc3qXhBZ/sVvrDAdgSpBjY9\n3EdpihG77hiTkSS49PDNXfN/WM/Crun8oQzq9UD9Y5b63/v7uBEycYvZXcr5\niC1rKh59NiB45GWBYM5fm5Ahtf/U6UZydn95lCCkyuO7ZNVu60kzrGdD/zdY\nm1oaZLZQV0dxOjLFEpqgocYBTO5R3GX/Nl0Tcd5/XM2fO2nXNBAGFTumFDrN\nkTN0/iZgyBkbB+Pb5+E/VKn+dY7LlCGjlSMSDNPj9cvnqiRCxcLckSNcAV29\nUxOo148WFoYY1dSIUChGxMI0X4uUqXGz8cpuyFm7d8NHbymxLurgDGD8/UEN\nyaYdtl3z40cGoPTGYgaHiuqOErTEGMvtwmsZOb1vM0jf+PBc0nHj5aPS8qA5\nycvj\r\n=/Koa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d93281730f5529ba2d9a10f1bf7f57b6fe6d80f0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"2.1.95","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.212_1622463911022_0.0951701646030596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.213-renovate-balena-jellyfish-logger-3-x-9f5fcc9340c3a7c174ebc232e222bdb212fd653d":{"name":"@balena/jellyfish-sync","version":"6.0.213-renovate-balena-jellyfish-logger-3-x-9f5fcc9340c3a7c174ebc232e222bdb212fd653d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.213-renovate-balena-jellyfish-logger-3-x-9f5fcc9340c3a7c174ebc232e222bdb212fd653d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e4574c84967fad70b6a0d8f51da21af97002ffc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.213-renovate-balena-jellyfish-logger-3-x-9f5fcc9340c3a7c174ebc232e222bdb212fd653d.tgz","fileCount":24,"integrity":"sha512-jAeibTzXE9sPp4Kjv2lRHaKFrHAldsWBqD5XPLzVNfwaeyUxypil3GLhMxvL5rN/ekXAtkKxsemfPKG+QjRFAQ==","signatures":[{"sig":"MEYCIQDdVL510Hy3qN3/TNULqlRI6Fl91UkbpexWGf58P//7LgIhAMBrpaUmr/k1DtI7Ze46wQq+ZWVezV2M6MLEiXFDJErI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtNa5CRA9TVsSAnZWagAAXbYP+QAMo5fKHYqal2aaJnFe\nzExv8wtDSX+EwIhswsRWEMAPrrlHvXd77tgB0wn+TxwdZKrTeqC949ODRiZO\nq+WFwLyGMs6aNpn3GopY1eJ050nDmJg4vgXCEg8U/bSV7RNyc3IDHOMh34Qc\n98X5iUZY7noLUsxn/CYsZ5SyTXNMaL0Q/Rzu8lv/D9Du5cDEAYO/+gqHJevt\n5P/lfPQ8buWvSBuxTSGbM/KsPyP/BYuwOybv30W6zHfeRFt8AgZWvynAocxd\nZJ83ww40TdX4+Cp0jIl6812x3/t66dUW+674Z1c5Jw8+Gdj9MxMWIA8v7g6a\nGciIS5sg9awqXZYvGeSbqEqFHUYWh1QRHHNkmu3WidXZs3cyu6qKCTkh7C1a\nLNZulPn7QWiY60IkRD+GRCCSmyEbe29g+baB2aRgDbTMHs/LiTTlvUHnQ+B1\ndmZ6RUbKMJBBCB3FrHU4tzg+sZ8AEEdOKjIVoo/qYaFdeguW2qgSO8rO8cZ8\nmeRW/Tpdlud3K5HyVHSW4Ia2M3GCHh0SaX542xOspXAa/jgNfmZ7ENoO6ZIp\ns96AnXmmFQ4rx71ArzJCLs/24YlSOymc6VpOatWgU7YrotQWx7Q/Js+4Dc0P\n/urreN2r8e06k/SPvYgMaRTNHLsBG2tkeUR8mRHjfT51UFT91qNLUKrhBsn4\nLeAk\r\n=cNV5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9f5fcc9340c3a7c174ebc232e222bdb212fd653d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.213-renovate-balena-jellyfish-logger-3-x-9f5fcc9340c3a7c174ebc232e222bdb212fd653d_1622464185348_0.43461181036671714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.213":{"name":"@balena/jellyfish-sync","version":"6.0.213","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.213","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8483229c35c23106dd66d9b9a7d1069b34a7e279","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.213.tgz","fileCount":24,"integrity":"sha512-uO6hicCwLse+D0QwFqodFZitEnIdO4XWWSHNjgHlnBcNOLho/5smbdVYBQrtGG+1Ze4sOezlDzJtAOSwa85x1g==","signatures":[{"sig":"MEYCIQCuSZiN3TP/cG/xPAjKszm+Q7/eao+3Z7nCT9cuBjDq+gIhAIhaq9kH+2vyB0Kf8ZDFiA3gsimEG1a8wejQIJ3OdP1z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtVH8CRA9TVsSAnZWagAANSsP/0Q1h3Afqdeqd0m1ude1\n+DBEXtSz8MDXwdCwUw85OykS6siAUJNgGvZsrp064tYAo5r8DqIeho9hw/O3\nF21zjfCUKOHhRHtC5TmEssmlSfJxA3K1Kss7Ar8Bb5r6CwmmIG0lSPUGw1H4\nR27/b1GJfKoEu3JHdoZR+4FcL2g7xZS8UKqKS5aV0JBPyiHVW4vkAfSNs+UZ\nfSFAz7WXajPTGy3xPKejCqcP/jD3VYFEqWstKBcFATnRb5y2swLCBokZDycT\nvtAXkCX/zSij6Ml1JaN4InEiAiZwThLjd22jtAe2Ibt4b7rj6j7oeflylKYH\nX68DY/117ROEC24wrTSRhjL5MVVP2v4XzTFKznMZYlWRI3f+6WQFhkpZhRrg\ncrSU1WNu6REBuZD6e7r5DNDKlBGxzmuVbk48FqnCPsCUrK6XP3dhhhRXsw4/\ns0PdiA2yqDFsxwWepkEYgdKJTwAkVNotCeeoWVoQasJVwZb0ngtAFKYkQxKb\nPIDYIc22Nlsm+Tx8Wppb1wmniQka0UpQTbdXRTWbptXYhSG27rMdz+bPoz5q\nul8s0IRAOcOv2dfBqxTN9U4H1cYczoiZw8yh8u8jVPvAOIRJs/YGOC30lT0j\ngOWqIIwnqgGFlwzpcb2zKXStMO6oY6iPiTdhUgJXhxoJElcBQw636pMPwDTl\nhPk6\r\n=cpWA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fb0c79600f6d9cbf1385c625ba91c3e55ff8d0cc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"catch-uncommitted --skip-node-versionbot-changes && npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","catch-uncommitted":"^2.0.0","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.213_1622495739362_0.4340603950475732","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.214-remove-catch-uncommitted-c728d4961c174a3f9086401da46929253990ccf8":{"name":"@balena/jellyfish-sync","version":"6.0.214-remove-catch-uncommitted-c728d4961c174a3f9086401da46929253990ccf8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.214-remove-catch-uncommitted-c728d4961c174a3f9086401da46929253990ccf8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bf56322afc1f272fb03095b693475b088b6c8d73","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.214-remove-catch-uncommitted-c728d4961c174a3f9086401da46929253990ccf8.tgz","fileCount":24,"integrity":"sha512-4htMRffMLuVDyXqXUG2+kft1qBG2nqgKWqQilOOyhzeGrxfGb+X0X4LgEUDVzl1NIQT/3KgyA7bYzr4lG+VHaA==","signatures":[{"sig":"MEUCIQCmsNlrwfXfw/l2bW0rAuoW9NkZkNbEOcBVfdW/qyrq1QIgKEzAe6qdpYpNZbkfpZBHa2VnJraGAhuvgeqe9z5PWT8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtzOhCRA9TVsSAnZWagAA+v4QAIVUh0Eiet79+wJA/1m/\nQOA83sO5QW1hZbWhZt8cjprFqhdD4XKW0E3mcLyCn9mt96Y+1ahtqffr/THx\nJpHa23W8ER+t32DJ02pMRn9hcft+gpjzsr5soosA/SAjQSPeNN6ZSpGl67HB\nSofuS/TKKNuMoP3qfAkjNU+n0ZDncsf1GzpkwVGxZyZ3rjf1tKYw6Zo/Eq7I\nbO+6LjD2R/sFEtK9/BTxWW7m1LzED8d9WhV0WAUpTGcbxZo1BfDLNOGz+bnl\n6ssryXPc83ZM5msJF1FhQaUPVMs444quIZsLdDE+sBkCP7kGCwr4rB/KpYRj\n5kw6pV82gyeWpOR0Gm2XU+SZ+fynOUA4Ggl1WUsXUcMpQSvjDuZ+POgsLTb4\nREOJ2LBVbAv54qCx8YiBP4c3KKniICzso5xrbogWZOeMOesRlRBBj5jnowSA\nag0QO+TnGPdt7XESnDz8ZEK4cmGWVcKbCZMFybHzzpLhoX0t+nZO9dIKt99k\nrv1OADiyJ0aNUsOTAsKyFgsMA871V00zht+n8JPNC6z8dstYieLGpB38Psbv\nlbTozeVm58xVf8xegPshD81mzDutYjitIICuNifKVrzYzT+sPk5ClP3nIf46\nMzHGqD8tX0B5PQn0pGsA6O5xqi8W6Exqflutmi8P1vQkkJNUEM3Ur/e3BzNY\nDM8t\r\n=ySGV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c728d4961c174a3f9086401da46929253990ccf8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.214-remove-catch-uncommitted-c728d4961c174a3f9086401da46929253990ccf8_1622619040974_0.6717225789514931","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.214":{"name":"@balena/jellyfish-sync","version":"6.0.214","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.214","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29e651e016e0cc175774fcdb432f47ed40304ece","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.214.tgz","fileCount":24,"integrity":"sha512-al8HKVKv65dQmFvWHaaKxT2+ITfSvdaVFWYMsjktjN3IyVNfl3pJ81nKoD+bInEm+wQcEqa+8SqDDcO80EoaGg==","signatures":[{"sig":"MEUCIQCFKsAZiYfv6GperDJAsj7WO+nR+0icZ2jgVIIRXYRdZwIgX/b4ZwOnGd9v7Ryc4Na3aDskUKeKJXbqUitDSGwmPCo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":167997,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgtzRpCRA9TVsSAnZWagAAZUAP/2V5hlHUAeDiy6qnf/5A\n8mvhLPWuxFwgA8Mnw21JiyT4dw47pNHvmZ70zyHY1w8bxnw/SrL8kamXOrCX\ngZoMzRD1XRW6UJpEHw6Vyn/3FG5Yz/MVDWML/qbLzz4jgC60fpyekJWHwAbm\n8tcTlHYo3hVZ19/suaCQ4anep1laUaPSsQ3D7A6EDseSF27TgE3EKrr1qwuQ\npDw90i5xOBzUnPPvNa1G6S9ZSRTd6N9OJyS+Mxr5bNkZ1Uep03q7zC7kvJiU\n6hthArxYJPW1b5CWrylg+0RrjVU/vQPpiIW9x9hbk2/3T3KBGWAamq0HdnlO\npoqUkiIWThClYfXWTjAX56Kuw24CL1dRHbg57MTUwlghRrgR6mNQoeJNZfNf\ny5O11WNZqvyW7ISrPRyChUbH/BVK1HT/U/WQsMR6DnxwbUktT9vkTCZrqyVG\nYjFE6UzfUk4ZqSQZOefmV4BqM9zxjQ10PBQ8+LmSQSu8WJR15jwzpGHZ90Gk\nGeGhBFPhAUsNu77dCoNU5lB/ZpKJCfHqYX2y2pOGKx7dv2aPninkOIEk+yHX\nEZ5x+MNAPy6yS0QdtnYNj3ZGA5LWq9ItL+vjupQzV3LXRQBl1ONoGq++Sa5e\nTNjwkwLLwfEweeVctSkHx+xTGlUU8yzEe9VNvygDAlJURAsQ+GdaSYcwFB/n\n+w6k\r\n=qVYX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fef380850c0455704e4f3fa49ecf195196ae2e3b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["npm run lint-fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.214_1622619240741_0.9276868096599327","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.215-improve-lint-staged-caa7f5803031d3b15432bc2791e1258a3165bb73":{"name":"@balena/jellyfish-sync","version":"6.0.215-improve-lint-staged-caa7f5803031d3b15432bc2791e1258a3165bb73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.215-improve-lint-staged-caa7f5803031d3b15432bc2791e1258a3165bb73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0013aed52e54fbd326e81e58e48e33799e1649bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.215-improve-lint-staged-caa7f5803031d3b15432bc2791e1258a3165bb73.tgz","fileCount":24,"integrity":"sha512-mw+70j5NiWO1sCT64l77EnQqSzCtiW67zxuCMgPnxySr0I//22Tw3Zus83gPzUwny1OHlYON+XyTPy+JCUkWwA==","signatures":[{"sig":"MEYCIQCoyu5f5GcjCBtRHm72Ag/g1XWOh4Q4nP5fegDRgxF0qgIhAMK71ucDTGe2e+/jsddvquEKqoY8d9fmmJWMgMLGqYaJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguWMeCRA9TVsSAnZWagAAA2QQAIcTf1PFsea2mgA9Yhpg\nd0KzcvrrCl+hnyp/svZmyxHbKmFmrV/caqehWaG4fGNoMS3irImfSkVbdJis\nzw+yKVvqyCn/NUoQ+t1vCdMYR+oMd8Ag8h/ZUYEF3k6jZ86+1wRRC5Hxg19j\n1rMlYUjABM1B/lGhmFtyh9NJYprWhr/zsK78/BwpFvYg4rMLx4sXcKsKoEsA\n6SzD9jdeGf4+Rg2K4VEwIvn0Q36ianrXTsRXm4B+eue4SZacvm63THLc8xLq\n0D5mUE5v0868OpFyFn++stIKsKkOnPhhqwlg8fMhpKL291RReNKwAeFhqIiJ\nHoQxZlvVQ1tLFiht2komPoOTy3XNT+t2gwKraFsnBFY0fQCeCbkVMsZmblIB\n0rwsvy319RbyCta2kgn5h3D30p3lvifs/p3HLt94Y2Cj32CryuepG1OEtzZT\n+Wh57SMjvHoBMCRXpxsReb0V0TeZT69mVtqr8nu/s9SsQzjTLa6Whcqhsf0t\nhXi4qwln2K7zt7mD6BkIe5AGScFPKJ7ApjMs8b3snaITnNPv6nxuXCA/yA0x\nVS5XOP+ozgp9mV7T5YiQXLU7o5IRiTTNo5sR8zW6Udlw/+jPGcw8fydEaIlu\nEqVecpbsqVSN/+rvC4rOc/0gziT3sXFSmktK4AUV+Cn5DyPqBpUP35ju/VHh\nx8nw\r\n=wruE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"caa7f5803031d3b15432bc2791e1258a3165bb73","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.215-improve-lint-staged-caa7f5803031d3b15432bc2791e1258a3165bb73_1622762270828_0.1386841197081794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.215":{"name":"@balena/jellyfish-sync","version":"6.0.215","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.215","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e8566d4980d409761a237a24a5be1b6f2313bca9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.215.tgz","fileCount":24,"integrity":"sha512-uLR30rl4LM0X7jv7dGVrNhCi2PqA4XLkZ2IljjsWiWD9Hca3djtDs47L38bgr2nnXyOdSyGtffIKBPH5slBqjg==","signatures":[{"sig":"MEUCIARYRIfj3vq/MxAe/LQamKYJI999eOWffP9/HYxk6r5OAiEAlrXvIkd6PzPtZeM2RZA9EX1S6uhf+KYmr+7hBsd3nsk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguWPyCRA9TVsSAnZWagAA8lUP/1CSWz9rRyidhBVi1KE6\n8oQ2ux1s7FNvlIrUTGNF39Z7M2gB1mZAQoWQpDroISYeOVkIDgi8oPazIB2U\njna1/NQabUbZVDDeCXes4mpVj5c1islMMaKj2HHuUQVjLVgI/MjnTFTWTAMN\nyfvpxjXO3Kqv2ycUerV2bQVE40/NvsQTQSCgmHNGtEwJXoiHm3/Vu6QmA9sL\nlMwUY+IowXRsHz13ZD/sWXaw5UYvUcXAoeFMLVRcYwJvMDIfIe0b0+xto8u4\nRGJk1AgP1vOYv95qVpxrAKOTk5SAHB53Ccxb4G5O777Dizc5wA51oPCDoDth\nSU3OBgc7JbHHO9WfV2cwKFeQ34figOffpqemUBdsO8N8301HKP5so3PEGr0S\n9gAScIjRrr172q9XAg6xzci/3dyVDsrdJC1IKgqLjp4aj4MN7mIc9PteU5zb\nDc9krrC15VEcrA7/t63Rn1qYEMWeikTtX5u+cscfYknjsqtecP4Gm24tLynn\nmjmC7WJi+3dg+UK9Kjn3DigDYCwp4vUUwhgyF3ebUR6Ooax7PXgfmqQ8qGyI\nw8ZR6GoDMjPmSAmacE6A8NANkFAO5gDwVe0DjDnoq5MfDXC+O0HmrosKKMJC\novj97AcTw2rsebRoZsMDDwDXPzYBz+xXB2v6E/F7kiiFTVZdqNoYXWBGUUvo\n5vRZ\r\n=K+Cc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"54ecd968e1a74b5c5858a2b2c41c7af7bebb1e99","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.215_1622762482049_0.8722685446127725","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.216-renovate-external-non-major-1c06629b24975484e66d6aee71b623e98737155d":{"name":"@balena/jellyfish-sync","version":"6.0.216-renovate-external-non-major-1c06629b24975484e66d6aee71b623e98737155d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.216-renovate-external-non-major-1c06629b24975484e66d6aee71b623e98737155d","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0baf4d5faedd0db0a03530c90e0374250ebc0eb4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.216-renovate-external-non-major-1c06629b24975484e66d6aee71b623e98737155d.tgz","fileCount":24,"integrity":"sha512-ZUpUQZ1/vayX6oc4RIRn+BDZq1gZx/h0A74DjAIXZ38O6P8kQ8TQP4XZnf0FVMi44CKdIhHaiIl+hZmM4GWR8Q==","signatures":[{"sig":"MEQCIDFOBi77WvAX19vx66PavvtH9CtXlqJ6Ly93BAG1BqBlAiBgK/kIR+AYavcrt5jkUlEfuTXuXAsM+QuLOeWmqKdXeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzLhCRA9TVsSAnZWagAA6lAQAJIGJPZ/q51m2+KfEj0a\noVbAfin5Fm0ZSP5LL6fYmGKWASiNnuokNQcMZUZSiGF8yR5tR2yjhbar8lTB\nh1A24nkCpRxc9BMISYcClcPabzbOirEACsGZBjoVNsue6wuf6vFIfz+AvX58\nByWDrBWhi2ePIqNkXCllgNj9l1HWyykRJURVfmXMTghx9Fk3padiZ9D814Uc\nXAlu5lFsTH+f7v6DK+DoqmbReQtbwkhoQnthr7NoB+65q5QEaNhrP2kKzD/v\nGTZZVw7ogK0oEOaFMRgRMLsVIc7p0wAt+f/i4n89n+DUZ3UNCJnJPhrGBl4v\na7oK3T2kZj21DBFZLJ9uEV1w8JdCOMYJD3h11W+2yf88Nrpi+6DtrRt9Nq3l\nkf2N+NTaPG1OAqi8ey+CpGdlHapA93ANSAAN4EtJSBkI7WKQfY34YSgZZyev\nhmfiOErx66OpesN8hgg4sp1J1U+CdYfYXfhZJeBA0DY0iyEkmv+V18OOT9Li\nzmYcBuLH1ptEO3cDMdza19Y44OwPTRN7gWlH/O1PT2MkDTGoA1AcLDLiC/JV\n9LAks7HNTN0PENSTMAWWZqOfoyvC8at01tiCbDX6Xvc76TenSz2kaEYMgGgK\nfZsuBMmvbzXU9wVbTXySzlDgP5Pe/3eC4YIB69jxb0AwHQVKq/R4qrDbV783\nkR8F\r\n=zKOu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c06629b24975484e66d6aee71b623e98737155d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.216-renovate-external-non-major-1c06629b24975484e66d6aee71b623e98737155d_1622880993204_0.6776207612888625","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.216-renovate-internal-patch-b763ca26890c92b53ab76c5cf5644eaf2532df60":{"name":"@balena/jellyfish-sync","version":"6.0.216-renovate-internal-patch-b763ca26890c92b53ab76c5cf5644eaf2532df60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.216-renovate-internal-patch-b763ca26890c92b53ab76c5cf5644eaf2532df60","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"03b83bf52ed318f9304dd6643a7f030fc144532b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.216-renovate-internal-patch-b763ca26890c92b53ab76c5cf5644eaf2532df60.tgz","fileCount":24,"integrity":"sha512-ocrZGafchqMwj0v2zRsrcIH5HiYXDMj1s4IuVyoEbVZvOXs4TFenlZDp04aQtvNPaxMxcwqSd71yis53JJq9hA==","signatures":[{"sig":"MEUCIQDNFf1j3MTdFMksUckv6iOJlzCkHb7WbGEeexjIGdClOQIgbiNa8ySxV1iiQuOpLbMhqpYBbzvF9LF0MF3BSbuEcso=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzMrCRA9TVsSAnZWagAAq/gP/1lsDKtiQl9IqLKm9C1d\nmJahs7W2B0rdX7Ouk3dvSDVb7P9/jNknrxhIkIx0uu4tjpMIvMlTUMEBm+9F\nDiwGATraYelPA/j8uImeUP4D3cOWEuHeMYTOPX+CG+bnvu6why/jJuF3q/ZB\nNs8pFe4pPtZ3Gjp4z++enQs5XgUtJLpFndxkt5h+APw8l1j+lk07GGY732NB\nIxHlA2dzL0lF7j2HllJLlQ+TH4DEF7m3WPBJ7AOayZcCrgkWWq7HkLppKwxU\nM8ypk2JP73rZhU3MzP4jrBjO97+wyLXWLQAFriNV0bkUSXk7eCjLMgFA5OAE\n2F/J/kjQ3GAjm+PtEgkYjE/Tgbfnm7f0gefTFq3Uq/SixLt43vtSObDD63hW\nsjAVNCMaZNcAzzVChK2n3SdYdRbh95kV6GC024aSRGQt0z1a174AGazz6kd8\nJdTMQ0NIMAu5dICHTjmtDZMI2gRos9Fc09IqGqwqtT7uiIGltZTwkORlrqRi\n0YjQ5/GlyjzCD1ws8TPeagyOy4xtQmhZ0tH2b9CirYWNaCgXgVX5Tl09lLx8\n+CvH5FHDJXNSVvbMQfuS4kdrvU9CoKzcOjCBpDkuTvsZzSj4ApykEpsiH5H7\nM/zSjHJ02qEx4hBu3afEDusJE+p3/e7n7rr3/h3KiXfDXe7KZfvvvhn0lhx3\nI0fO\r\n=PpId\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b763ca26890c92b53ab76c5cf5644eaf2532df60","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.41","@balena/jellyfish-logger":"3.0.3","@balena/jellyfish-metrics":"^1.0.252"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.3","nock":"^13.0.11","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.1","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.1","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.216-renovate-internal-patch-b763ca26890c92b53ab76c5cf5644eaf2532df60_1622881067142_0.48239062350154804","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.216":{"name":"@balena/jellyfish-sync","version":"6.0.216","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.216","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c7b92a40cb4514a4f341d07d6f165aa6944c4749","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.216.tgz","fileCount":24,"integrity":"sha512-6nRXWVDhanCiaH5co6ae9VFopVAq1EQcYmOuNlWJZR1K2g9x0oyZGozzWA+BQjxIKp3b3XfA94O/H7oM3WIzZA==","signatures":[{"sig":"MEYCIQDLRq6cOxUrBNayYanNIUvWZzLjP93+D4p2DGiz48C5FgIhANzvM8Wq9bS9TrpyOiuasBcRuom5HG2iB+s/wa+Xoujl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzPaCRA9TVsSAnZWagAAScEQAIfuaNZKniwyvOptMf1s\n7EGpo4F7yIlx2w3rbHOb2ZQssEmwvgu9NjDjBn/vQUIRg+YzFPyxu+RloNYF\nFYUYRP1xwWQlf31B0IaeAH+U5xNlExjy3tclgVS+/wmPHGARbj7vl/TeNuA6\nx/gQH0MSQ316QM5Y6UO2KvbEdrTgSHb/OeyZug2tnblOvU+DKZXDriHDelHM\nmRa7onKiNvfiC/KrTsji2YBYwXtLpb9M1L1Cdr3WWXNptFfuFJtUdOEGva4/\n8gul2eHlpfi54hV1Yo25NEsEH8s2iOtyZr1jczijstXhD1+ule0NY1dKwYsJ\nNWG4wpT/1KmEUeEEUHOwXFkBULinC2pGdn1SxtHZ3QpyjWm5JnaTkT4YU4hr\nvpCCAwQB5DMn4i/hRfP+xCiEqXJlUPxsEIARnKzSLISqa3Ui0P3eYQAs7GNh\nYp/WsSa2ka9esnSgiLxfatzrtshNW78wNflf0M0Wsjzzw6X0Rpg9c0vHELPY\n1Wu3l3ayURJIb9IZY9MiqaDbcF/O7xBm6zdW2UmEbQCCtyBYZ+EQmBk+luuo\nao9reTQQk8KwtG5fHw996jVcDhTTLPNLTrxD7rIAz1BEylsC9UGdxPKmtnVQ\nagUm8N8I7avTH7mAEsKeiMYN1RN3+wKRrMGoVCNMcnigxupKIWV7pMMob8tX\nh5Xh\r\n=uuKb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7437c287aeddd1c23d1692a61b706f25a5f574c4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.216_1622881242171_0.03743004002154371","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.216-renovate-internal-patch-0214286a844dbde02c291390f9197d2a60d26d38":{"name":"@balena/jellyfish-sync","version":"6.0.216-renovate-internal-patch-0214286a844dbde02c291390f9197d2a60d26d38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.216-renovate-internal-patch-0214286a844dbde02c291390f9197d2a60d26d38","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7a8477aca95a3c5701f813cb821d0c2873aa2663","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.216-renovate-internal-patch-0214286a844dbde02c291390f9197d2a60d26d38.tgz","fileCount":24,"integrity":"sha512-qvbc4E78dIAY3d5Kew5cDuSeSwCHWehawmdVRKv0GeqdJcVkVqwUPRjaXHPmsIZsYHK/iddlrVvht4tHYqlK2A==","signatures":[{"sig":"MEYCIQDHyQdltPxa/Lh4m4nq9fxMa+aQBLJWCP+9DGcZTQNgegIhANaCZZeRF2cfS2V8/8HVBwTR/4UL4ECE1ygkekKor954","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzQRCRA9TVsSAnZWagAAkoIP/27+wboRE5ivhU6bN7c8\nxNg70bWMM54bOKGBPxN0/p/QuHuFKYsmnbG1UodEtD8a/uyLKUv0DSD0Jzhx\nVGnsDtOp6Q4MN49SblsWvuSJJEATt+rxEtBOnyHce9/0sy2O7b44/jZIYqla\niMnR9mtfxlyA9TFTv/xOJL1haME/+7rx1IGSL00vcP42UzmEMqc1yWBDFKzO\nSsyHANO4ynuckqzl1uceHPhQ31NplggpmpZiAv3vqL8T37cdkeUQimcA2ouW\n2rQKtKckALT9J+r6LWC7uglroYdfPbLKwBcWUbleJs9qRbDJO7fybo8n/2J0\nEcDcz/Ehu0kX0UaUzf5wkOorLNWFtRyaT1HvW4RxnI3uOSHEMIKBU/b0zTnH\nz1kovuGVWzpy20BSNJPX9xsM09AQiddEkNKOw34ymH+XQJUOatd2N+TIk5aq\nUTvxC0ux9q6k60odpUowaechcJkn2GFJU0e0psHSJyYz/GdF0+ZoTFegWf5f\nyP16G9LDbgMJMCjdw9DeHVEcDBDxYVpnE/zNDmxPFNCZ4wCL84u+8KMnfjlW\nw7u9njqDKbcAimB4/bVJfl+YXK1sDCtqT/MQWeBZQ7R191HMrJfSMRuWma8l\n6o2Mh0/CMp+qY62FS86kkqET55MOqaKL3VHm3oqI1uN4U4r+Z+O/auusk5DZ\nO5Wa\r\n=j4mg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0214286a844dbde02c291390f9197d2a60d26d38","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.41","@balena/jellyfish-logger":"3.0.3","@balena/jellyfish-metrics":"^1.0.253"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.216-renovate-internal-patch-0214286a844dbde02c291390f9197d2a60d26d38_1622881297633_0.8975542249907511","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.217-renovate-internal-patch-c987f72eda1e17125db726d7d05cee150938fed7":{"name":"@balena/jellyfish-sync","version":"6.0.217-renovate-internal-patch-c987f72eda1e17125db726d7d05cee150938fed7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.217-renovate-internal-patch-c987f72eda1e17125db726d7d05cee150938fed7","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8e71ab03b8d2efe434b2b58788ef7085b8167a7b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.217-renovate-internal-patch-c987f72eda1e17125db726d7d05cee150938fed7.tgz","fileCount":24,"integrity":"sha512-FAE4jpE6E4vytvYm+NffTvs8tDie6MZaH6+/Ail5yfmGMEkXmTXjJoPekd42bfsOwkdUm6ec65u8ZLFsd6oqgg==","signatures":[{"sig":"MEQCIHVz6Y2gUCmcz/Kb+meJdwJ4QRVrfqkhLQEBnpMAL59WAiAr7nrnZJpr8zCQNadb7goV/cuWQEnBqCRqQiI21F0hLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzYiCRA9TVsSAnZWagAAg3cP/1rJVfT/xHfJzqndCDUb\nXdzJLNMxvjOL+8jQBkJAAW8fO7bqBAKH5cwmFXod/6Z4eFNRhid5qaks1O0P\ndJf9S5L8Tu8mOpU6Xdoip71NZ7VEhJma+YsoI8b+ede7x4TodujndG7EdV4m\nCtEP6lkmGJD3GkTOAFhRdMw5/s+K26gwo5A4HdoXJE/I3irulVcowD/1pNzR\nfrGRhGZAJ175EHvc/Bxk7LhsNf89dRmEedQtA9uDhrfrNKOPqAs7Wkz+4BjH\nekXk4wcfX4NhGzTDNsmLl6gtcbYqJ2zgt6bWr5Wvz0gz8+ESTVJWfY3RD79W\njmjoVOyejb7kAg8C8U2gQPy58VScg/USIBP6xap69hMrWlayCu7BTZcAzqgb\n96gkpLhYsddO2BbyU4/SLvVoF3ze9De7HaxvugTurQvAcr0se62jXYqBli+I\nbHqSfyW0QVKdpKj+5DetVjWYi1WHioGBlkTA93GMjJ4OEWj+rRm/9jbjOrPU\nXcyFgx5h0j+0Nf4/ggXRI+aCt4EBoF9SS8ShEL+SkulEcwZl4g5OAt+z9X7v\nH62c5DqPUHzhQ2Om7shznAd42Hgx7lU2zXD4L9x+3QubBp0qyyb0gnI4IYzJ\nBY92T53v3DAGEoKICDWFBvRZG5bcdGFhkK2Wz75/AgBdNoSG7VocuxTVxPi0\nFD8a\r\n=00dL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c987f72eda1e17125db726d7d05cee150938fed7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.41","@balena/jellyfish-logger":"3.0.3","@balena/jellyfish-metrics":"^1.0.253"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.217-renovate-internal-patch-c987f72eda1e17125db726d7d05cee150938fed7_1622881826792_0.9298487674262774","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.217-renovate-balena-jellyfish-types-0-x-e16f9f9037a780f70b76276b0e5a91facaff02a7":{"name":"@balena/jellyfish-sync","version":"6.0.217-renovate-balena-jellyfish-types-0-x-e16f9f9037a780f70b76276b0e5a91facaff02a7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.217-renovate-balena-jellyfish-types-0-x-e16f9f9037a780f70b76276b0e5a91facaff02a7","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89a20f2470ccbb2983e4358dc2972295d54acc37","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.217-renovate-balena-jellyfish-types-0-x-e16f9f9037a780f70b76276b0e5a91facaff02a7.tgz","fileCount":24,"integrity":"sha512-M1OHkRrC5+1eX5iYm5CzpAaQi17Phrh4cY3qPkwqThzbabkJriojVYSBJ1FMefrxynCgMGGf/aJKx4GnCGTFUg==","signatures":[{"sig":"MEQCIA0SwZLUU0As2wleHyFRl6pO9o8ViW7ZPgiRrK1c8M+qAiA2x1+RfTO3rSo/4GQvFtjrn+I0LMBlluYRe4Pl4ubHRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzaOCRA9TVsSAnZWagAA2OwP/0tA+9qhwMBsLy4EJOHO\nKIjaJ/+vkXg77eNMlTxVQflYyhlA4ZLRwFx57M+Fc1pBJR6Z7KIMiLDcMa+e\n358NsuGsI849rItpggA6negPPEfIZiyMc1sjfLNE5rAF1SGfojsWAjR+L9p6\na8JJt3jXgWf0IJR1E74yfceTf4zBwKNZH3NWPeRvPDMsCqyCj96On2vVLuTe\neJC5g1mtQEoxEzYJC6eauFmAHQlcxIDCz13VIMlhTqUEjVJf7+0VjFzf6wwA\nD5+BZvdkfGA7GNGbwZkjA+3lYRk6uLgPCbz2bj87fY6g74/4mb+OS4fAfd9Y\nJ+F5yZwKyctBw+G9jld+eE4hlDFhrDGKV69XEEHZHoLrN4eDV9o56dtdC8BC\nIq1p76waR1BwP343VfolzfJKnsXRGpyGc+ov+xSftSah4bl/J87DwOEPpJTz\n1WqiILLl3BBRqIMHf4VMcDDbyd6uA77AViCO4uCvMf/ntrRDYBjeCNJQcw37\nj50x+wEexeG6BxMBhB/0M7WWGGzL71+eV2qrAxU26CXgyLGY9s32LwnpZZyV\nZsOYBovHPeEnlbwHz/7tSZSz5pPqUlF+An3YFn/5IpTxw12ZFFchi+Dlj0f/\nfzZoGkN9o9j7LUzkdnswkpJJThwofaLBgIyu97Xb1w0WZEUteQF1a9aJj4WY\ncrLw\r\n=h+iK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e16f9f9037a780f70b76276b0e5a91facaff02a7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.38","@balena/jellyfish-logger":"3.0.0","@balena/jellyfish-metrics":"^1.0.249"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.217-renovate-balena-jellyfish-types-0-x-e16f9f9037a780f70b76276b0e5a91facaff02a7_1622881934407_0.9885691552117717","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.217-renovate-internal-patch-9bf384b28b0d9081649bee77cc9da7a59810e4b3":{"name":"@balena/jellyfish-sync","version":"6.0.217-renovate-internal-patch-9bf384b28b0d9081649bee77cc9da7a59810e4b3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.217-renovate-internal-patch-9bf384b28b0d9081649bee77cc9da7a59810e4b3","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"09758fa57f9da79cf37237b8a479170f926ab71c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.217-renovate-internal-patch-9bf384b28b0d9081649bee77cc9da7a59810e4b3.tgz","fileCount":24,"integrity":"sha512-X9dOQnXl5culagJ7QTGX98ojE9B3TxMeEOsZmGRw6hIDBhQHnqIwF2zmARTYGK6oGTAJOf3pxNrYYLloaW1LtA==","signatures":[{"sig":"MEQCIClkUMgnhSMoOyHO60c3eOCOc1jziSKD80GtSHtICLR8AiBoc949jz81iNV+hRJCwVd4oYrQj/srFylV4lg3f9HS3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJguzdHCRA9TVsSAnZWagAA7l0P/1fSEhI9Bho00XIf2+fq\nwXvhXN8Fz5/AR9t3Pmt6kLgQOt3NjKCP9U8LcT4hUzF65iHt7+ygc33fvRv9\nhjNg52UfgQUIBcXg4GEVlqTnw/qKK8vyXBzy5DPXqK5OAoEdCOerhh80Rta8\nrAKhug4VUQYZQvxh9Uppo7rmzjrrxCES97nzlZ9oWJVC+Dhw5srjkctqs29s\nQdQTwGa0a6P1W5lb1tgroPuNkwqylGhIjwFFvfAfIECrpDV9ga7XEe3Z0zLL\nDV29U7CDEVwjiuUyvSIILdjLd53/1K1KOSGojVHDQv32d3vTyiKmmQ3GZYjV\nkbq/mTVhXAhGSjFxotxDy4J9a+xlCGeI+/zCtgNaEubtskF9w7C8AssK3Jei\nyyS36a0RtIaps0/5rbJqJfWp5vip8WaiZSk7idf6ehvAuGB2dB+dmRbXdxe2\nuduXuh7ZfxGWTIkZ+JgtX+THG0b9L28F+4/DqP4MrqgH+WvW1vS+wZkj09+n\neMVTf6WIAUVjjywDGivTJIKntIQvQQx9SjWW0ll/kiV5KePo8TngvjEmJHMy\nQrSWjvX9x8ZKqSHGMg/MausMjAH4/5Q4eyf42SjIGmHfNNcomzuuP+CASqhE\n6k3eojl9G1I3ip+0JTwd9bK0TtKa7NPTtVV36EyLMtWXUkGQN8c+ZF8uwAXQ\nRp3O\r\n=rauN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9bf384b28b0d9081649bee77cc9da7a59810e4b3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.41","@balena/jellyfish-logger":"3.0.3","@balena/jellyfish-metrics":"^1.0.254"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.217-renovate-internal-patch-9bf384b28b0d9081649bee77cc9da7a59810e4b3_1622882118948_0.572955938918202","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.217-renovate-internal-patch-046d44ce7e23585a0d008bf13a81d324ec9899fa":{"name":"@balena/jellyfish-sync","version":"6.0.217-renovate-internal-patch-046d44ce7e23585a0d008bf13a81d324ec9899fa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.217-renovate-internal-patch-046d44ce7e23585a0d008bf13a81d324ec9899fa","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0e42e17b691051bd128366cf8d08029dc9cc884a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.217-renovate-internal-patch-046d44ce7e23585a0d008bf13a81d324ec9899fa.tgz","fileCount":24,"integrity":"sha512-SXbMuWp/EaV1rlyico+cSq/uuRonWD6rSGPtF7xBxft46eze+vRZ1X7iQGOBN+9Dlq6LElWcPjnXadrUIBsmUA==","signatures":[{"sig":"MEYCIQClBzggNYy0CItJxSdo5uW3BvAu5kxEWGEAclXmyrQ12AIhAMEQwhj+NHXwGiEL4HfiRDL8HYvfj7dNL063e8fsVVR2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgu1NxCRA9TVsSAnZWagAAVkUP/ixHoynQ8w9V3EoCjMr8\nunR+cnQyF9hpsGmZGlJR7IkeCDGKvTpWa3wLIufHZHeTaU6wWsXYvSmP/FNI\nOPsVp5hMy3/ImXVpqbo7xcHUExuS7vyLbw31wZQ/Vrnpp3RMxXSPnhbaHovA\nxDeRBKD1XnRJAMSOw9TJ+04Sc9PQmHdf5BXGqzmB1EZyWOKuZiwO8lOjmSr+\n89WpHOd+7KiVOXL0InQ8tQRmBOUmM9X+ApBNPgQC4lLhukXirtRaaupc9a+i\nfEUA97jX6mwvONnVP0xcL4BVWRBJ/bJ2Jh4jrr5Elcuvmx8VeQ+qXENkCEUZ\ncAqx+naHAYUpu8/UXLnUYaJsUsYVZNuy+ZZ+eLQfabCLd/q6wkvW9Zz0Q2cR\ndb8kMy790F6jM3iSChjuiSTuBB8V5rLfKfIeGWV4AMdC8VgE8senNv9PtFVI\npDRz/eXIYtpkkEi4EWK3qjCBJfi5ClhyOBq/2C7z9yXBA1oiBIKIdYJLjyic\n1c30GDSdi2J4sJ8uKB6f86kN8WbSHSUgmqbfuQiYWq80psFytfOhZsm1Mu0O\nvfcQyhUQRJZJINHDkRI/JRyx0SnYX3ghGYyrDP0ooHO6lwiVXr6zRSIejqjD\nH5OWpOqHCz2SNoEIXwiWfCAWqRwV+nS7qaZv9rxUYe8SYcym1iszkgQ2J2F4\nf3+a\r\n=Tx5D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"046d44ce7e23585a0d008bf13a81d324ec9899fa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.255"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.217-renovate-internal-patch-046d44ce7e23585a0d008bf13a81d324ec9899fa_1622889329344_0.651867872756507","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.217":{"name":"@balena/jellyfish-sync","version":"6.0.217","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.217","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f38892b6a8b69aab864d73b18b89370497223cdf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.217.tgz","fileCount":24,"integrity":"sha512-4u1I1V7AcbnESIRkT+HGYUMb3uzogtiw6B9+JmoSRbCnzvpibJvwQvwESiEq6MPATFbwiVGmMehFqKt36yEznQ==","signatures":[{"sig":"MEUCIHPkcWNgUEOtrflznF9m4DiBzNnSGcWwbOLo6HXrXmHEAiEAuC6EsmgR1Bf4Zu5+qYF7Cka6WOZMRAGgHBdzMhuwzh8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgu1QzCRA9TVsSAnZWagAAmgsP/0i1DvZsFqgyLiYed0XF\n4Ql+tw2sVHT+wOTu09YMxyLgHbXfpX4ByBPVnPpbnyRDbbcoSxh5rfuePvKE\nOUxVw1pidyMQg1BO7N3lSXJLMiWQcchCmhR6FIyifOEEffoO5Pq3CTaMyQfr\nuJLck3zKZDG50+tbMTHV8nH9LjQCbB43R8T5hzTPsGGOpAlfzcwAiQVk/XrA\nVhYskF/uJ0MAcdssBidL3AH0CEG59klcO3CN9a0AiX9dR3URsHbLFWUtg7N/\n+Y/gadvPPWJvDkEWNLYAZh9wuQhWwK9snMTbN23A+iG15rFCb1wkvrvq0yxE\nXCWUd2mTVLcT4MOQtP9jOz5v8brer2FKwrvbXdc4n3AkDzUdAoVCmgvroGjv\nrLZ4t4s00y+rCW+TiCb+bGh4KmuqQyHM8NfzvuTuonoj3J1YyO/uusktwzye\n+cgqKW+S2XgniQsgxPuQE1UvU31umjvOJfHTuPvvDm8/GCddPytfzHLjwJYO\nYeoyUzBtiKato5YelVxWdRGBcdMrGLXyu/RbX3H7Ap/hTC71n5Yjm7p9AqzO\nKYuYNf3asvmrOW2UHr42mLSYP93d3N1ps6XyKJvlo29D+MeP1qnNBk8EBVpx\nwUplbjn5QZq0CQDzsowiOOVEKurndZFiy/X/LOcq4yytXAOrvnRbv6MJprbB\nsHAX\r\n=PISw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6806148096a88b08f04f4ef4a4ce75115397ee89","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.255"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.5.137"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.217_1622889523691_0.7742480412789816","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.218-renovate-balena-jellyfish-types-0-x-1423825bc79f7c3f47f4403e2a393992cc3614c6":{"name":"@balena/jellyfish-sync","version":"6.0.218-renovate-balena-jellyfish-types-0-x-1423825bc79f7c3f47f4403e2a393992cc3614c6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.218-renovate-balena-jellyfish-types-0-x-1423825bc79f7c3f47f4403e2a393992cc3614c6","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"55c52a2d34df93bba36b04cdf5585aa6c9154858","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.218-renovate-balena-jellyfish-types-0-x-1423825bc79f7c3f47f4403e2a393992cc3614c6.tgz","fileCount":24,"integrity":"sha512-hvmhineGxEQb7IIt4WAXPo+IfihJdGvGiJV/4yWG3UzbyTBOaScibqfAkY/opl6qVVU9E5SQbybGBE9+rgvbHQ==","signatures":[{"sig":"MEUCIAs4cTKTqMvSUr4RCqIeXhzNV2bQLHOW1BhQAst15muTAiEA3nOYO/lFTzMDiThTXekyzz1Arx19UrB9RVyMWeywiAY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgu1UgCRA9TVsSAnZWagAAFvoP/0oGKyRb6LMz8geUE59v\nsh3bVP2CNiI4UVbQ1uaqC5wlPNcTgH88z1iQZjqCL9oPYvWTyXqtw/YQz6Fc\negkbkiu8zck+wvUYUD0Amm1oCvzhMWDXRb+UVgmI/K12vZmCu39vDEhvx6a5\nJD1TAAcKuU1G2GfhCKgCnToKmZXJXh1SYmP3Tz3nZvimRVNZTvmhVE47oAwn\nZT2LcLjCdOEhfXFV6WZ5IaBXfRttkpcPPJwS4TqfWBhbSLdJ/3QHeexKXEd8\n8q1MqAKTtguniaefqDZ+VLSCdPloLrrOV3pb6lr/e7E7Ts8GuALRmasUg9nk\ntJAR2OhWk0kC/5kLgsyXzoziwNw5mDa8AFpU3hRQDTJLOmhlInAs2XmOM9Hm\nbk3Gxkf9bWZA4bVcdWG3G0FOZ18nHatvBNeKfqY+3XKtH9X86vT7fo2XLYiM\nj2Sx8ry9IXK15JV0zRwkr3K0fy1w52+KPFquoZHyDDbselsjclD6fb1oWPNL\n2KhbJkvL2+I93KJtNgs64WkpJbmMcM43x4B6KUHVkWI1mCr+cLKMjaKVhTSI\nQW2xX9vFiRUTpndxV7D0ypO5ztPuV94aw2t8vRdQse76HllNc2PGkR6WSARX\nS0u/RwOOC+0TESrWwKKukiH1uETZpPduwMUNYzfBRu0jbj2dvXQQj9PtPVVO\n9G0i\r\n=veae\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1423825bc79f7c3f47f4403e2a393992cc3614c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.255"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.218-renovate-balena-jellyfish-types-0-x-1423825bc79f7c3f47f4403e2a393992cc3614c6_1622889760438_0.955774780952501","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.218":{"name":"@balena/jellyfish-sync","version":"6.0.218","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.218","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9222c37ced64c350d8c9964e39e0f83e94b33892","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.218.tgz","fileCount":24,"integrity":"sha512-/a2w9mJBKs9lZg6+4oTKPukRLbaZc5M/uK/uWC6dVrKD66bIwpG4HfuMHVk1PZ2IF0bhG+ua1wSzWQqE2EDQNQ==","signatures":[{"sig":"MEUCIGjZHhFrr7B9zKoJydCxmaOlu3fBxiwECSNhTuGLREoFAiEAnCdekwAw8a/ia7xffOtS3XNCLtR8+7O0e8Ifr2rX2Vc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168315,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgu5S4CRA9TVsSAnZWagAAsf4P/3gb/CSMRibBAnqfHIYZ\nRTh3QELUn9e4lcr19ONRkHv/w4MWjA9QuLgkMQCW+F5ns69f/Tzyl9bE7O9/\nSiVqlbg4HAPWmfGoO1l5okqiuEyQBC0vvz3mc7q/mBDvSNdd9/2pHJp4Lrek\nQPH/Z4VYEvNd8INmhdgLPyKvDayF/6GcEjQspIFG0wn959D5udKaD8r/2PUp\nvRrCIJi6Zcq01epil3c5FMRSBxkGgRuX+iLYt6ALaLrQcqG3VfYca8+vyNL2\nQMXdUaAA8gEuMupx201cRAH/5iPVV7w4p7eFZP7bWYLm1Nt3GWEQks2PrffX\nuvqLXoOzWWV25vK2CNcFqpt4UuXUtMFbvuuPp9rjgUSRtlMS+Cy8IB0PBvoB\n4CyU+X3+xK7wNl8c/aox8d02PeQ8u8r282x8tu9EFIz/29FoCh8Q12if0J70\nj7JHF2ZCR5SM5vMuRrVJfMylErfrXyDq5DFYyQgW9Ixed7fkIYnyCFZ5gBqO\nLnPZD989RnT5vtq6swP2oT0KbBVMJyy7cM4SlYS8rTLsAjmh3roYyep8IF9f\nWJvcz8ruvbZKOSxqFSrsOmMsIjipUFNiXqfib/Jl1w1gvshofjeTLlzQAN7O\nLgJUZ4vliD42yqMWd7ZJX111Ih9uwmWzZm4LQPfIWyyLR4w7ZYJrpby3NTVO\n7k7z\r\n=liMw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a1e9913930e803d29971cdd8f6f8171e0188597","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.255"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.218_1622906040464_0.9286282804788646","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.219-renovate-internal-patch-d8458d42ede15586a724a40d9862e09540986351":{"name":"@balena/jellyfish-sync","version":"6.0.219-renovate-internal-patch-d8458d42ede15586a724a40d9862e09540986351","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.219-renovate-internal-patch-d8458d42ede15586a724a40d9862e09540986351","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"466146f86cd8cfd9da0bb7550e0dc1b25aa525f1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.219-renovate-internal-patch-d8458d42ede15586a724a40d9862e09540986351.tgz","fileCount":24,"integrity":"sha512-nUnjrnhOHzEStCbKY59yI4z41zMqv7qZpHyUW9gNd5KdzAyFAC5mAsgmIiKgCGnkpXnJv5OMek3iv5Rtzl2RtQ==","signatures":[{"sig":"MEQCIClkAE9LspXaL05AyLI2+MPWymNRpVc8EDgecvmyuIr2AiBiUIrGSKKYwTAkFdEjnjorFJ6scZ5v6tahBzMboSjuPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgu6jLCRA9TVsSAnZWagAABhgP/jZanyizb5S+4T56jZth\nvNTBqO/RnRGq54Gucu6nb0hRcJax0UrfXNeASjxk1U1IYgHryzPy6aO3RrOy\no5m2t3NEuVf1qfpBhBFGd03pmcp0x5tjzMgsTavyAqsXa2FFle6QsePZQZGe\n1POiLl0tzYnQLBIRBurBM6sR3JMDaUaWdi9aRikNBrzfBMQa2AaHQhLRToJV\n9GIfk6Zh1tQ6ino90LDKTCKNIzxb/2o8xLRkbEFkJLfiymGFIh5ikZ5ardFt\nKXiBQGxPdKRtaIKfeBTt41d7CPBs/ZdaV2wd7bdU8hV7A2gclY3R5aQ6bPKz\nDBJwUpdcHYlNhLXAq/fq5Y8WN6Xg1M8AEv17aYzvREpTeq9mVM19CqgsGQVv\nHcxHWLpxKjmyXeqQL3UJ9ageczP9oBfeOSN7XXAjXI45EIJQ1U81qJWanp3L\nXfx4Bt1Q4+wvnbaba+eEvyoJunrIEXXIwCqF5dtf/EVobXC3Rnj2bc0F4ux8\nyo4KjEz+V/+1PNcQbsg02rZdNpsuOpdXYA58tzzuJiKZAy0IoYYxixXDYCb6\ngoE3yOnJqzfU+4HlOvaeiiQUqfhXKdcaDfnQVhIxLQxZ7/0fZbJxHlj/BaCo\njBInZIhoNndheqG9j64SGtGNGVrTVkg09F5y/Q7uRtqtGKgXy44GqRkyoeJS\nCZJ0\r\n=rvbT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d8458d42ede15586a724a40d9862e09540986351","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.219-renovate-internal-patch-d8458d42ede15586a724a40d9862e09540986351_1622911178976_0.9527937526017392","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.219":{"name":"@balena/jellyfish-sync","version":"6.0.219","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.219","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5f2c60e74d645265560155a8bab2923c94ba53b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.219.tgz","fileCount":24,"integrity":"sha512-QvikBEg5TTvMayA+3GQcxXJnSnA+LwSRaK7KQfl9kEF6LOupVTx0GvSNhLrFARQn3cZR20q+kjAwzkrcjrM6vg==","signatures":[{"sig":"MEUCIB1qRyzWn9hN2+5bN86m1+rq3U9DWXlYY6wCpXiwJR4oAiEA/aQV1Z0Q4yFQEM3njSv9yIlRTsJqzeXTTvoHLcuqOoM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168421,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgu6mhCRA9TVsSAnZWagAAmMwP+wZYWunBeW00OUby7MOt\nA6XCd0ys5EwfixbZHfP68iFhvc1pVpKV7NXGCtdNx20fqbe6wbq8y60y5mDc\nQSzKqDH1XEDgzqenmsF8xXDmTJswJ8Bls9tjAmTTTaEO9v0b3wWm2ygfUP0m\nhulLAnBO1dXiU58XQdZ+fRU7Xx3QAZIOqbUAu7S8KxAS2HhX5OFWyS5ucQQP\nzZvyUDZQWrDXcqJI7AVLy21SC1ntaarLSS2dEwtuBkYtaTIANTz1gJlZB4Hg\nEVi3EQQWbvFeIEPk7iYOAvmVxsJHFVvv4+7/atyI02sfkCGOh5zU/4AKlz+b\nQGkbNqbiF7ghzEz68EKRG2veD/k6N8FdEwzKyYDrixvkcsq5+4f8dZCBYoUm\nH4zvVg1nQfZq35LeJcJgBwtrG94dzEQ7BJ6qKR9M5XRxUaKbbfyC0XWSP4OI\nBAdFiXcUIbxE+dt0GPsMGsUPTzgXmzzW/1cGLruNpThbb+dK/mseMs7q/f0h\nS3Ygjsroeo5xFakuIo43qCiPeJZnImKY1i/qSmzy9peKxmUHVWFw0vSyToXr\n/k4WwT58Z0+j9ffGXR0vnO1F9M5oUurIr1p4hoBoubLJRn5MyvlBAYsvSX7E\nzFIupnla3FRfKQake3RldtpTG04pfrXpd97qfCXW2G1fjnn28mh6u2KbiUAF\nCNR/\r\n=ehdi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c7950ee62e89a07dc62c85a7cde7c87f88b1d113","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.219_1622911392830_0.5400940583393832","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.220-renovate-internal-patch-aa613a0346b17c1a99af6b46a5982634370a976d":{"name":"@balena/jellyfish-sync","version":"6.0.220-renovate-internal-patch-aa613a0346b17c1a99af6b46a5982634370a976d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.220-renovate-internal-patch-aa613a0346b17c1a99af6b46a5982634370a976d","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b2d60fb5fb6de8552e587500a74bd4b1d0ebb408","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.220-renovate-internal-patch-aa613a0346b17c1a99af6b46a5982634370a976d.tgz","fileCount":24,"integrity":"sha512-+TNE0TytG3ayCBBqgJjajs32mIApd1j1cGiqdjf2aeZ1UdCuARSgZz4kIFWgL2nWwd87uTiBFNUHEscAHUZzwA==","signatures":[{"sig":"MEYCIQCJmv5MpJjngl6/iXmzvZyWiwvfc9zV+vatCfT+4/yqMAIhAK9iuu0hD5RRNx/V7mHZDsZs+ytLSiaTPs439RsAK5tv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168589,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvQLcCRA9TVsSAnZWagAANGwQAKNbtS2SzylNcSIijdBU\nuRb4fxUae+Pa3WqKP8XaGE7LZd2lNW50LgLIGmgHptqCfb0eT49Y0hfXX0pQ\nAcCWFGcH+DHClOeWuRSWt1ICsjZZ9jiEGySg7dFU0LVFHVH16Gp2CATAosy6\npRoxBj1Gk5YNshOSIC6YQ1nCBvA3YDR60zDAefaM3pUdEAWWjYIElI35T2Xf\njAcIVsbpxSOqcgnzt+uAPmGgav3NQ/WK5efP9gWcabzXU8uYqTxgA6Gs1/yP\n1f4tWJCAg/Xp2NfzD+R7BueVpRnUqh+bw+R9x48GG/cE04Obuu4+bVxPe9sa\n+VOf+YgFWbVJfLELQ4+M+GH8Mi3bALq8rW3LOSxsI2ZRotv2zo4mRztOoJ0K\naeysOPSMQtGxgNGAszTD7HAyMwaJ4Cj7Kk42FrsSG88F6A1emkMHerMMPNf/\ngxFIzRnekL6FyQifafQIhs1/p5j8vHnbkUCA3Z6GZfAcYyZpr2rDAO9tkMYN\n0Nz5EvB6nENrpt/l8MWcEfvYK6AkZ2qi8YViAdI4w/QbppnKk9rJnf4LbAMx\nNrIo7AyIWJzuUb8o2++ILZXotOi0UsWiIg7YdGp1YFSecdpI7YOLLSJYNquH\nGFQPpzIp4lWWTnBaNGsIcPe/xe2iOnwCSmUekzd8OEABVECY8ULUXcbKF4Kd\n216g\r\n=m8aH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aa613a0346b17c1a99af6b46a5982634370a976d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.6","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.220-renovate-internal-patch-aa613a0346b17c1a99af6b46a5982634370a976d_1622999772405_0.6445816097947874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.220-renovate-external-non-major-df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4":{"name":"@balena/jellyfish-sync","version":"6.0.220-renovate-external-non-major-df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.220-renovate-external-non-major-df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"700420f5e0da46e31cba9ce4127a5eb2b32138af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.220-renovate-external-non-major-df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4.tgz","fileCount":24,"integrity":"sha512-PdlEEax3005ppQh+PaavG4KAUSmrkxs92ZUrNUHpRDTuNW1XjsKhshPicaUm5ystSXQf7Zwkf/ssTWfJS8EVRQ==","signatures":[{"sig":"MEUCIGYDrKzyHoXHk7CJfmgZQhxpHVFzLYH+5gbKGxkYT7vsAiEA4qyr3RP4m592yxV7oYUDZm5qCuhxZrd6T37qSO2s1aE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168577,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvQMlCRA9TVsSAnZWagAA6L0P/jjL8Y+5xUR7/qxMi5oc\n24jhivQaFA+Qo/Jp0KPq69iugLVr6Dfg7zDTU3tgcG2s+4h9y7mfIKO6wTn2\ntMe07Mnye9SCzqRETGXTtF1Od4NS7Lm0KqEgrN0R0n3QAXFOcJ1x1Kkyx1Xk\ng+IkbwX5eOAf5WMbvtIZ7fcyCkJuo5sEnLyd/pyBRuvWy27arnUeR3689NQt\nKtHkWV67N7bt7jP/Iv7rSOGdhvfkwkKvV5T0DmP7fsVFg1k0JzD5wH6dYaMG\nZvNfnZHKGfE7sUIhVA6JxMt11azbmme9LE2jwdBvExOpZut7GYIvYfWXCw16\nezyuGs96fdvtEH4ZZk+Af+TYTTHooGCdLkTr/2KZapytl08nrN8W6bmR2OWC\nY9hggqMDxi5rSotyAJ8shfn2iWviNHLz3L2iNhB6goEuePw7x3CdsfXpo1cE\ntfTjX+lLndG/EP9bwkIDe8oOSdHTnaUPm9918kcOhWr1hlH0tiDzGsqikllZ\nJan7Zx7MyfS+ccYtjtqaujofUznEe2AS43zt+fqfdOCalofykCijpmL4ggUf\nce1hUtdLrVsZQeie5piJuPejHBGzY+eNZ3ryJjlaCSq629dUOoiHCz2ljb/+\nO4PfFtxP6SiCIUDDEDeNgdvj93yB9OU+v9UkxnweECqcOthXtmUVyHHwdmV+\n6tO8\r\n=NUC/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.5","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.220-renovate-external-non-major-df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4_1622999845111_0.06103974956877556","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.220":{"name":"@balena/jellyfish-sync","version":"6.0.220","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.220","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd7051c4ca1601b455a45298b939a0eaa8e04aa6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.220.tgz","fileCount":24,"integrity":"sha512-cYpfi4NJSifcgsEDka7+eLXCOvgmT4RY4xlQBcV9+MP3YVcgb7/9y8GKWlTT1aSxtoPVLjlhXvYQwdDFJyE5gA==","signatures":[{"sig":"MEUCIQCEzxe42uTEPafP6EkHSGTVT3gZ6UnkmqhS1uX9TYgnVgIgYkF6G8a9ja0hP+mbF9AUHnrpCPEdMxyhPjKr4AN5Oqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvQO2CRA9TVsSAnZWagAAm3IP/2ZBf3tnHVtxr4FNtBfl\nx9t9gQFpyD3ny61fzGIX/QaOG7b2O1mpHOcnUjq4T6BJVcIqBkc3gFZdJaWp\nQA6qH7NEsUUgeQj73m/1PQNgdqjSfzQXaJjq0OGlgnhdvJBbfbWy8d8brox0\nHZF5QQDLMGXyOwRC4nhuWJNrIo1iPq4JAlMHtWApZ/XR9OwSSrScM3cQkhQf\njrEIs7cH1I7N3Xz2Qu+aoyLmS6hGeliVpAFP9hC0RfYOn5P2Tj/xVYblMSKY\nt27QnH6HRwBcck3QEbQg6366jY/SMTmQYe6Z5qW7JTHIfiMsfbGYb/d7xwA9\nVG8G0Qrh07x3fUVhPWOnV5mwWWdqr1SKwElSJH+viNgieQPdrXorYiPD2qWz\n88LRh0RkkYTvghMN1GHl0yOaPNVjiLnA6iXwQXlLK15L687nBN2ZmYXsgSTv\nKbFm7f8A8n6w0sgEyPMC/pOcDTRvsZR1jNA//FHSYUcg0B2Yqka9DGcvoZyZ\nyh7CibZN/Y9ZbSFr4yWBM2gRFpuB6jRjgqwjTCvWrrMAMGAtylpcpUOgRA4y\nvZpxytajJ/ui5Za4CmLzxbxFNqE9Z9WlCT+rEuIq5MrDI7pz/dZjrV3zdP3b\nQTCrwXqgovysHGoQJJCa1ORhAwDsSGrgdo4xsIesBkPn9MY1r3kBBdpJUfLs\n0yZ8\r\n=k/r9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8ba627121f2dc8cc414f2e278cf8f8f165341d8d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.6","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.2","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.220_1622999990555_0.7168816676697152","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.221-renovate-external-non-major-986e29911640867d36d3458ae04c084de1c8ffc5":{"name":"@balena/jellyfish-sync","version":"6.0.221-renovate-external-non-major-986e29911640867d36d3458ae04c084de1c8ffc5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.221-renovate-external-non-major-986e29911640867d36d3458ae04c084de1c8ffc5","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68c6ec20a5c4600c4dd740fb0fff42154ef02e84","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.221-renovate-external-non-major-986e29911640867d36d3458ae04c084de1c8ffc5.tgz","fileCount":24,"integrity":"sha512-kOYAQLLeVxXJAnPFuNPGgnFqERVxSxMcAJ0pATvGf5slyGVTWxEFi6TiOvjNYIIvPsJW3klfZ94o3c5bnoADqg==","signatures":[{"sig":"MEYCIQC93LniAfSnUjVozU3KWeraTHDeZDz7F95TULPQT27lqwIhAIxXfD+N7p1OP/g3Il+wtd07SOzx3zJw2ZpiheIByKJy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvQUFCRA9TVsSAnZWagAA7hkQAJBYoqpPlM2Flf2xNVNE\nfT9OdoGtk10pVncvfuZ+9kSBfylk116IYPiASxtEY9wh85Us1yPrwpEsmsFO\neEQ/Y0u4AeIhZ4eTES3KwiDcf/UcykXti86ETEL8uDGtKRRMGNs11ZndDwve\nFq6ebCpQcMutsHHMfbpG9INC2mstmViAitEYii/nqA9J7E/DKZi7p7UCMUXB\nRwaMAy9s90wtvkpOLHJ62VFvM5yFB88nmJVroE3PYRfMOWnPC8AkCPdroO2I\nw3BQ8YOSU3O+Is2DOJ9gJp6fdQEr6PoYD+MFI1RCR1oClZbIhcqLyaU8kByZ\nA06337ey5+vj519taqbOuwvUkH8tvLTkw/tniJdABs8FjMt8/c5Vdbnlbspk\nCX/lBb7vKL6YBPwwyr2DSj+mgS53vDx8I3LVhYIBriPVny4kJ6aBkvIbl2hY\nlFmdOQUlPYp5YgBl9lbh+CHnuIzp+cEIBH2CBxvX30rgpEyRGUAuojh8UBXd\nQGF/wGUI9p/+WncemgnW9Hsi2+vG7yhG03VySe2/xEcHZbRmPRsqApfGrDVF\n9CKD+El0MdLG/5NdBaBSwem/abKebDJIC2QPjFney9rWO7pjpS3EmOMVaSml\nLdyMvzQBaQfgG3NlolQbciSbstBhYL0eVJspaIVN1a13bsuG95IjXb9cFHkZ\nufxO\r\n=b340\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"986e29911640867d36d3458ae04c084de1c8ffc5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.6","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.221-renovate-external-non-major-986e29911640867d36d3458ae04c084de1c8ffc5_1623000324943_0.3119953380391558","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.221":{"name":"@balena/jellyfish-sync","version":"6.0.221","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.221","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7ca7a2fa81f1a8c7ea0b6a1f5948a2ba6681e198","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.221.tgz","fileCount":24,"integrity":"sha512-r3ZhjltpxPCUnWCQe0RdYFs5VMEl/MgarID2PTU2S2o60r+4duYP6iIKOx8anTxf5XfQJ2bg7ee5YG9ove8r+A==","signatures":[{"sig":"MEUCIQCpnd5okqKZgxkAHX4kQUZES9UDHHOJvAMvPo03PkIWzAIgGD7FZCmf0SVAXPOUZ7JlJa5jSuiyvfdVwZu6ouq3v94=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvQXBCRA9TVsSAnZWagAAkKMQAIQ1PBmOTBfQuLLTrOMl\nr3CXt2tcYaw+DSsOwBDWhwMepyAAeC6sSepJRY11KyKSeIvrvyv75epOeiRm\ndMus4d5/Adg8yEWHqQmYzMdeorgXP1ggrTqJX6m7xk/jLYXWcWAvuRCVteCS\nOKK95fDiozy24RMVI4FPZayyx/ePc9sDC4b95pOIEnFMYleA/bIBjWh7OSd9\nW6+ldpeZpL46n+6Uxv8L/38hzbdynBvPIxlt5/4n0rbIwzSK7Gx+einMIeS6\nUb5KQunnCWC3Mg1cGAjTSUBMOMMdZTUi0JFyRgH3mkc33gvVwbBpMUW3/Zeh\nullH9j68wKIcC+by14b/s+7oe/m1z4avwlQbeDwaqaasDucsO0Jiiluebsgk\nH00CKRYy35lQLN8LZt9RU6ZWTStXVLV8cr5wTYanoAjSGNh4licorhyBUxMy\npdbzFS9Xel0rsGH2v9m1cBWVkMfj1ej0qgUP+fHvka9JrJPN98ot4NBNdJJ2\nXEksxsnPPU6qKOHIsPTDMD9cs8KpCVUCQ/CkskWIgWZokvl+tKa20kbW9CFU\n45TaDHSLCUr+hkHWhXQsFvaIMJq+XtJNuVbDqFgsoXP1pCNUVa+PVRgWCJpE\nP3voC2ZtmNSXs8IFasW14VDKXnxTsinB6QYXAKBgGGvkk6DsifBS0Wtsotol\nTuN2\r\n=XKus\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"683d5cccd4c43e5533a649efc27951ad3805cbdf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.42","@balena/jellyfish-logger":"3.0.6","@balena/jellyfish-metrics":"^1.0.256"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.221_1623000512633_0.5582747212695627","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.222-renovate-internal-patch-bd4f64e342863f5017704991e05a4c8e90a6a3e2":{"name":"@balena/jellyfish-sync","version":"6.0.222-renovate-internal-patch-bd4f64e342863f5017704991e05a4c8e90a6a3e2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.222-renovate-internal-patch-bd4f64e342863f5017704991e05a4c8e90a6a3e2","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61c8c54e3dd83af1658c318a2a3dfb3f64c59195","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.222-renovate-internal-patch-bd4f64e342863f5017704991e05a4c8e90a6a3e2.tgz","fileCount":24,"integrity":"sha512-jOZLubZzP0UgNahNlx9Z0EiCyY4UJP8B9xpos+ZH44RJdqS2jmxuFL/DuomTlavHNfuUdY6vIsB2dcIU7QySUA==","signatures":[{"sig":"MEYCIQC9T1R1Ve5HnP+41ozXVOr/iq/CGBnfZKbji5z6BoJ30wIhAOZmkBl46PifSzfeRWmQ+lHiRrq20waY1+EvmbmcCSki","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvRM0CRA9TVsSAnZWagAAw5QQAJl6k2HaUMFici8abXRF\n65LaBxDuvhQbbkcNexvKRxvPGC+2UHBpvmFVBydjDMxVbhcM7XRYgWqoPAUt\nzgODiwBuNHifa4Cj6bzzAF1xhRO0fKrSzabfiB8glEkvET33y2mmuhLx7gQA\nPB0irAb6Oe+cxR+i7FZMgtiXFymES6Mwo+MNuvp+gIkh0T0ek6VuqICgMI7Q\nE9rOXttEAVhe2wgD0C32UpoRWA2Bjl0rk/K6Ak+2/ZEEvlOoOXLTmCmehOpE\nO1SV6w4N03hfOvsXV1lpMzr8k3dz/4zIm8EiveTJ0BiBRTOvXdz5i+YvYr5X\n+p4AxiX3/OAi8qBW88MCIun4gpBhW0J6mDkVEH4KVMJJeg9eS4XhJssAoaEb\n6J46yJxVjRLd7KIRXnIqdd3FWtYcntDV47x7JHbl9130mdidBMTEFg0ZURKw\n0BtPt4x9CklOB6yEDB+KdrrT5XHgfdVao9xb03p7ItMeXSzvabcSPh+SuPbk\n/ASeMUPyfri4vK0814uEM7KJXQ3/nNOUMLTmA3V4jtYj157BGACajZJk3yn9\nLpskgEqu+5pJHgjX9/lFtlp1q5BJVPsoX5S5OVurhqxFp46Tl+fq3xCimh49\ni4E/WrC4fxiw3D67VbRuV0UseljJ1tKgc1+ucKcan6jj4waB/y2W2G9R1GSk\nt83I\r\n=766S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bd4f64e342863f5017704991e05a4c8e90a6a3e2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.6","@balena/jellyfish-metrics":"^1.0.258"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.222-renovate-internal-patch-bd4f64e342863f5017704991e05a4c8e90a6a3e2_1623003956776_0.2090607640345008","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.222":{"name":"@balena/jellyfish-sync","version":"6.0.222","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.222","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f8b62eb4f1b3160836d6cac9fee6a9c258675746","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.222.tgz","fileCount":24,"integrity":"sha512-BMhzSJtsOHZzS3MAXxpj1qkHe0IGPdppz0H6KD0ynf1yXUtCxmhPaBpK+V9IsLGeaOFNHmcCTLlBFfAbJE+I/Q==","signatures":[{"sig":"MEUCIGi22hmuxTyMTq/GcasmjUA/WoZGGnYcb03QK7TvERMgAiEAxFaakTD54cZOpAf/fDXVVckV9ROT1JoLDvuMik6z3A8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168683,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvRQMCRA9TVsSAnZWagAAcjEP+QDx2ilOteHkb+aSHU1S\n5J6Pt99bYF5VhF//+SgkqUy8upNlgIcFfSzVhifk8dcRAey/MLC7sRSUl0HB\nM/NRE17Mbh0PpbDjSJm8Hr5nro/o0aS39y8TgosjStie7/lqKtGcfG0OHVdC\np9d5EzWwJ+tDvM2Jdz8lh3lTl6IfqUMZMt5l2rqiZVPEwH2hrNEKYdElePzw\nS65ISwFCEQwUqeUcucdSrSsNafKYUnsvj74JBQPpsxoJUDHUGBoc+swqrMLW\nAGSemsWiXjTQjqAsvBdRe+BgQa+9zhmdZlVmBXNeAM/PCoF+VUA+PseDkK1b\ntUGx0KTzF4FmZ7njNkJWEh52hM+W4+28XZnn8CNHn0r1s1yACm3BcawfLHn/\nEjoUbczs1OxymSihYAWOBHF8KWplXiUqSfIih5pl+E/Uq9WTCR2CyPLbJRq4\nP7pz6K0QHkAVB0ANLhu1Vrl6FONy52rE+jvyZQIF/FYPEX/Y1AHq/IuiKV1Q\n5h9uHRNVraoaBlBrCksDcwCU3c1Zu8ZtMYAGqM1ePNvbeGT7w9U9f1y1uytq\nxc4LmZKdeiNh4QVzsi4GEKBmDEQjffk4GdyroH7maW8EYQeo67hOSWusd4f9\nusmeHS0O40ESahhjDVecV4ndoHZVCzA2nvOp28ekwd9fqTOuLunR71wIwSJB\nHim/\r\n=pFOM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6b12adb9afc060908a0a81fd37f8156515eedd6c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.6","@balena/jellyfish-metrics":"^1.0.258"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.222_1623004171937_0.9276327857000106","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.223-renovate-internal-patch-92309e9200ba86202c763188689cee3761806c4b":{"name":"@balena/jellyfish-sync","version":"6.0.223-renovate-internal-patch-92309e9200ba86202c763188689cee3761806c4b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.223-renovate-internal-patch-92309e9200ba86202c763188689cee3761806c4b","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d0f60e3df3419df6a521ca7ea8154c9358813ddd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.223-renovate-internal-patch-92309e9200ba86202c763188689cee3761806c4b.tgz","fileCount":24,"integrity":"sha512-tuRM1ie/U8REVb2oK+HLp5avvfHdeVtVm8urw19XAnjiwwm/pQYueTV2aOtqgiZwkuzpVaom+KYkCYPAVH95bg==","signatures":[{"sig":"MEQCIB8OqIMxCHsQdEIkJLM1NMORS5kO71N3xf+Nhqg+16StAiBIRTjaW8cCZeEF3zRaByhwrFmhYpKdbWmiy1WIZgw5aA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168851,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvRU8CRA9TVsSAnZWagAAy3IP/iaakNXsmQmJe+jzRJmr\niN3XB5hAXwqFy93a0KuCCPyIwQwI/kccd6pAltW5cFAoGLNVsOOLvHelilY9\nTjAJor4gfOUqlpuFX0XL9/R/KQVaIuOVLC48xLME+rnqE67r1Qvvm4WrKaCt\nDfP8f0c3tlwzJOqFyIXmtA4qyxSzNSYP3jgrTUmkPmV3s7KTY1vHco86a39x\n0n6dSBjtCIOtxxRd5Y8hDiqZruC21ThJyPLS7OVELMw1ao8x2JjUIFfj1u2s\nkOb6dnNRmRynADB0hZxGiMUzPUUDtPxx5IIUV/BHaDEGztUTtlJcKlvTf9NS\nsoXogCa6Lk0Po0u2q2rElVB4dy0v164Qqd6Ec41NMrKQMhNWfUX3KYAiGoeH\n4kMXGC3FDCwzmwBUtCvxZQcsitl9diUdT+Jn810dudwgzf1VlEBBr1HqHegn\nw8iT3v/2bGhbGx8B1EQeaoP5Mc2R++i+Q05nedMAqSzxfOeJvFOY1KrtOR3R\nJVFR6nSGkZqkri6FcST9AgjkP7qggJ3KfEGKla9LGnInKr1M2yLhcJ3+GeLX\n9/ytWLQsWBnrAvy40DI/TmT4r0NA+d3NSNJ8jWOUy25JiWbitlfCCwjGQV2n\nGhhsV/k2zLQWs/TO6ih3C35aOlpcouqBR1tEGq5UQqy6xa9MbzNdPK/Gai+i\nrVVd\r\n=hyzQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"92309e9200ba86202c763188689cee3761806c4b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.258"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.223-renovate-internal-patch-92309e9200ba86202c763188689cee3761806c4b_1623004476303_0.3113363002255993","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.223":{"name":"@balena/jellyfish-sync","version":"6.0.223","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.223","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d51eff15d360b6cc00e903ea90f180c442d4f2a1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.223.tgz","fileCount":24,"integrity":"sha512-B2th8l3sY9tgsvXGaYczUIV0O4TtMaI2IRBHciLh3QLoY+oxfqpgbA3xTZbtQdt+uI07AXwHLdlVpF51QLYxfQ==","signatures":[{"sig":"MEUCIEAlz8LlDWvU7XKaJWpeGczaj3+huyqQRqtcOZWbShoGAiEAicirtmV0GA0XQwkTAVo6OgyChFMz9vZKloZr13DsIX8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvRZ6CRA9TVsSAnZWagAADPcP/2rp7VR5on8UW5Hj1Y8z\ndKyotrbrImHhNEE0RgC9paN18v87NENmpc2TjizMgdUBRRNIRaZ3dizjbZd/\nkNNeXLuzopzD+YsDz+77nDTZBy31xsJqFrFOWBept1CN1gJbdceSQuzg5ya6\nJP1MYi2JwXhUIompilkDqDoCXaOYKz6snUAhELrMbx2nSymHueH/NG11+XrB\nhYHP7IZIKSOE/NHDWM1n2O0KwkeQBLeoOPr/owaAfDS64adRdBi34JeCfl7E\nXIQjN2JUZe0OmIbw+UDByfKzLS8zaMHBOv5MtW78yDyxyM96ABIKS3gIny+x\nUQtWKrmNsZarBie2imd7AO5ufjbZqMH9qSCFp+LiLDH8IpIkyrIc5k6VU/J9\nC9lEGp0QYWoONNlJw6qXU0syWuaVIKtDaUzt0GSafNJgHY5yy8AsmSsfYvSg\n7uaHS3hxSGcXgoJ0F1RHaN0oAJak+JJ6a8YxQfRf85KSNHSM2KnupTi4o0x5\nMnOf1G+NExuKleprgw2T/Ur09Mo25+Cd2Rie+SbPfVDwqbWq0feObFJOOKu7\nxpVvRr3PDYbjuJfYKavsMgTWQdo3WtTrjovr2e1KuuyVDSvGJ1eHf8KfMvkb\nFMI3N4nOqigNrf/Yfe2A0VcTSUjBOhqFnWpYcZVCFPI254DXW8PePy7HFVq6\nt/HI\r\n=Da24\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9fd0bb1a21fe80a7b0f9c9ea6a875d278cb7747b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.258"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.223_1623004794204_0.534273216387599","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.224-renovate-internal-patch-bc1fe9813009bb73a0cce560efdc1d773d138691":{"name":"@balena/jellyfish-sync","version":"6.0.224-renovate-internal-patch-bc1fe9813009bb73a0cce560efdc1d773d138691","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.224-renovate-internal-patch-bc1fe9813009bb73a0cce560efdc1d773d138691","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b8bb1d0536417ca52b25f2056796e9b6e756d863","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.224-renovate-internal-patch-bc1fe9813009bb73a0cce560efdc1d773d138691.tgz","fileCount":24,"integrity":"sha512-BhiKX6NDMrWUFUFLrJyifV0hvDwR4glVN1BJnFVh8SllfLRbJwfpx3y2IE+X8q+Jpj5Io+YN2u1sodDHNEO8sA==","signatures":[{"sig":"MEUCIGq/CgIRD3RM5JfdaBmLG+INVdQtjxU1/PMBx9C9Yn5NAiEA07C9NzX0CQoYGkugy4r9STbazAKy8uaBSxPVyOnIO+I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvWUdCRA9TVsSAnZWagAAEP4P/jlKTPLnWiqwZ+6vklil\ngO4SHFiB4c6XbnOUawGd3tnzLjW8QTWGj4pzaMWEue5M0RZ/VCuY47O4zKKe\nKrR9jmgtDyRvFHZocgB2mt0GvExyXeZcXsm+2Q1ko1YaZ2QQJdoAZ/AfsQLj\nbvqFsjJ4uZ7Ta1KkawxgzJX/cDiVaMwGhPyn+nCDqeTZ+QDH6M98FcVe7oC6\nv3cTPNxdA4A/gQYHDxMSkRsYAhV7ObKRSXG2gRCGAtKRItiCd6Ez1WAV8vIn\ngbwpd6hGxVG49rWqN6086+wuu+QSLY8YdCHJEPdZrElkDX2DuejPiEa1R2tj\njffDdniF4ESd6+3Sk5zuzb7RuzOwOe2ArvJl7xZM58XZlnLqhz9Mu4UJumcA\nWcbGEcb8mjB2UN8/+cYGfbVVqjMH9MagQsau24KgA6KkEqtA8BZH8hwJl0MF\niLTEKBdY1BtkUVGM+USpXHCrAqQiOhM5dbWM+pJYASlnZ2xWEQw1K9NwGy0j\nKTh9LLaPmkxSVoTBI6jzji9cvlNwgOlhcLXmgWmOF0fOvJEQLrSoJtZK5ZAD\nrFqSVkgtgwU4PbopXA4CvspD+Q5wbMzsotgHLyu4DYBLHCAWzBjNmIIGl0OA\nK83doExeW7MlEhzHsoNrZ9qKogufgPrEaw5Y2Ye4aGKANX8LUiBMJw2OVFy6\nKlu5\r\n=2zEl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bc1fe9813009bb73a0cce560efdc1d773d138691","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.259"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.224-renovate-internal-patch-bc1fe9813009bb73a0cce560efdc1d773d138691_1623024925237_0.6504516321729905","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.224":{"name":"@balena/jellyfish-sync","version":"6.0.224","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.224","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c79b416b2ba40e187934486bad3575fbaece3299","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.224.tgz","fileCount":24,"integrity":"sha512-xD+YjdB2fkbRSvNwXDKOqICxiilW+anc62HuL59/Vzvk+8m3DzF+gHQ8XQKNYqJTWLreKickZBAptDL/Q784Ew==","signatures":[{"sig":"MEUCIE/DY2RvnaoRrC/EOD8RyipM9vLM+jvQCTJD+4ImjjmjAiEArxCc2ZwW04VrB0GP+mrBSStLBvgIOj9+W7EZaTjdK1c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvWXsCRA9TVsSAnZWagAAyCsQAImn2/p1hkj6KL9svngJ\n7Q9f16/xhOcGmSY/ip+aHF/0LzBpHBNAH7PfsVmPdVGGGlnzz7ZCZ5rmbO4P\n4O6gJB8Q46pqkNFanUGD0RlA9Z/JL21CZ4V7DQ/GApTbTSy/Z+5fcNden+2g\n6AgUdcoJ/mRM3ok1he3gfvYugmvaLjtgS/ZmRKS5AwVWOWsWhj7yszsIdbv1\nZJ9zAsgU6ZRIsamO+oOJ/zf7fEZeL5opKjRTVgaSW0oivOdAu9i4myQyMv5V\nsj09kfsEYOM0u27D5sOGHi+RSrzrsCtGgY0qF4cIQCyo6HGSAcI7BHeS33Ci\nU6bvWNeWYjfDFoQqhiSoQ9DnUYvrJV6QFmNQZkSAc/youEOAwVGyscZ7QySW\n/ibw1o61cqYG3TUC1fZfrNbvdX/EAMe3V+QQQ9NIWtq05vESUNAyLpMPZcO4\nnD2+rx5t0oPcDqL7dCVMc5GGpKXZ84qz3d8rMO05S7Ea6Ubf0tNDDtuOxKWT\nqHSGvmhv15XXx64yCGESBhuFkOKIIULsXg29TmtL+XWkyXGJOJRj+Ez1yLaW\nj1+7zzdg3kjSXFLAMyiET8z+LZ7+C0E/2wGSsT3lwHCPhDf+6a5iwg8QU2OV\noVP6yiVUndT0zs1VWvtjfNgXgNXYn7q9gHDolBTnu50nqDxeWh7zbzULkYmA\nHzcN\r\n=i030\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e7afb7c2819b5ccbad77797334f030c68f31353c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.259"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.224_1623025131798_0.7909225375066296","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.225-renovate-internal-patch-8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1":{"name":"@balena/jellyfish-sync","version":"6.0.225-renovate-internal-patch-8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.225-renovate-internal-patch-8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"49554c203d95c794c9dbf10f8f361c4065e13b9f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.225-renovate-internal-patch-8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1.tgz","fileCount":24,"integrity":"sha512-/C1gJEJp/VlMOvdZu7cP/01cgdIks6NMCwBRbyZDcHuVXhZ+bYY5Q31QIEd8UufuExhNi0j4qt7SUqd2Epnv8A==","signatures":[{"sig":"MEYCIQDGlVo5/8D+Q+dgjvlYlXHZNJJRzAW6qEts2rZRuFnnrwIhAIHY3L0yIqQzE5xpWeui0f4Sa0KKakzRDQZV1NuRLKZ2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvZSuCRA9TVsSAnZWagAA3CwP/RMYUfkyRnjdZfm0vlwt\nNpfIlQuMroKca5MzzpgYGZu3enLVsoKp+0sNqbTy6ihStBDowBODHAme6U+e\nlaQcO8AvuMSTbXgqE13eJRYeZ5r02EwbhCL+DfJ4AHfa+7/bjL/ETNoPXxDH\nQC4+oNXOTI+yCGoseBc8GB6TfwdIeQIgpC3XzCoMEF4B4hGlMFclOuNzyAC9\nUCHr/X2oaAe8WDglA7+za28CfFmVHD/JQdd9rzlhhHhvlqoeqkwgcU0qAUBc\n+fMrKarY3FZDnDxgXJ4WS1bamDwx2Mle67X8U3MFSp2Ofk/0nbv7lBW11k9c\nHV1tGMrD/nuXnOl90BiO7er1UkpjsqhD1Xm/+Oyab6ff45Utc9G3iG9QNkQY\nTnmln9ei1oZXKuP1n79QerLVoiTwBAmlcoAj/23Ckh+sJ2IR9z4opldY3Xb+\nYDz7WWDhqn9BbIWEChYZLxU8Q6AgBxXBb6XO14bJOw8fITEp1pNMVx3ZyIan\nQxwJLwmQQ78VjMOU+pza/n1e+QJbYX2d6kNhpUNzSeWZZc8nTjhgt3HTsuSo\nqwpydLp5fPokhx4KY1rSPTZMTgB0VxlggyyxIP4VE8XG6TRUWLUR77o7wixY\nUKhxqf1xdEKjcDT4p2PjMHoGvdwt8J86zdqrHORlKu1GYr6HEQQtuK8f9u7F\nb+TP\r\n=M9wX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.260"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.225-renovate-internal-patch-8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1_1623037102028_0.7735180774781807","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.225":{"name":"@balena/jellyfish-sync","version":"6.0.225","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.225","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab30b2317203850ceaa8bfae92991485e61d0f50","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.225.tgz","fileCount":24,"integrity":"sha512-YMUyTmWIrPbMBUoR5iciEzHBjCZfXUnoavfP+sB0A8DlEnoF7pug+l783bLUHfix/YGkZXhEHQISBRKn3RynDQ==","signatures":[{"sig":"MEUCIQDdNaLXpudaeEyW1FWGK9yfRLNISB5ajnH4aVPmtcDfFgIgAUonzw4cK434kFTuR/a7/rs2c7NRSDT7Pq0S0dvni94=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168964,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvZWKCRA9TVsSAnZWagAAyWcP/25/YMmRsdb1bETdqAn3\n/sJdNfQs4H1eL4Chd9xSuVcXCFiDxyUW2wDYtSh9fp1WTxDbD2meqbTroUaL\nEP51xsK9yC5G92eomr40pU97UZatC5fjxuRN/KbETXTC93QlYDtER4ldJqMZ\nJxFCj8nNupyD3Mhs4PWDA7+pBBsIg4VuyEuNpTqx1hMu4okL503MmlwvQGU8\nBjdDYe+6P7XL2/QlRZt8nUcw0XrN+F5TrGUqC5+LsS4hppfQSUxW0QXZgveo\n6I5h+Y/VFA4XrEdBL/GydqYZGhYMJanjy6WfwTc1Y2kMUYeoqj7GlneTFBTC\nXXQWQ47gezrbe5S4H5sGdOOdVI5NcMjKSpOpYxq7MHSm9J4KHVfaNphpNlMI\n9FxJUdkvZYzVBzoujldJIxmZAMolf+VlOsRPr0zn80QoLxOQJM19RVFvp/I4\nXtW/vqAKittVGurLjaZZwXxhev0HiFt3ysQZS+UOND6ONPixVZdjA/NgtOnm\nxJtvnZa4FV5MuIoZO9Uq9MSZXFVe0b8t01dcX8rISCxPsFrt8vDkr8S/F1mx\n6+6e9KYpU+u8uQQ25BtRxBg2JVfN7nTbgNpI5C3v5If0yQzFJkM4HWekI/ZI\ny3x4UySlxd+CLzJgZcgYR53fuRtddDrb6wA8z8dgYQxzOOCAD0NfNEiOFosg\noQlU\r\n=BXt6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"24e8d1fb039050cbbd58460703f4fabdb2d18fe3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.260"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.225_1623037322409_0.94357472800531","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.226-renovate-internal-patch-b8d6fd810b060d4a7b20e14c725187a5b5a35fa2":{"name":"@balena/jellyfish-sync","version":"6.0.226-renovate-internal-patch-b8d6fd810b060d4a7b20e14c725187a5b5a35fa2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.226-renovate-internal-patch-b8d6fd810b060d4a7b20e14c725187a5b5a35fa2","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e4a175ec0183dbbcef1d047864a18264810104c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.226-renovate-internal-patch-b8d6fd810b060d4a7b20e14c725187a5b5a35fa2.tgz","fileCount":24,"integrity":"sha512-xuiC8Enf+xT7dBAI82KxcjLgt9VbSgaAPIeR2SFyvFNw/gCV4cEndou1VcQMM+OsLxPf6xjg3YeN5shoooBWjQ==","signatures":[{"sig":"MEQCIEJpxe/COrBli6REpfEM71k5W03izJsMYmaaLY688k+zAiBvOavIeVOs+Uir5CUs3Vof1LwG06pKrSIKqux9DZkPNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvtTZCRA9TVsSAnZWagAANfwP/31MJzfYHP7xaxtRLOXC\nKHzfQylrqiBQ66KSMvjU4yCxvFBirW1AbN8GTlAJOPJDr7IwR84xELOczJYN\nMDp4ogM0pYTN3pwkk6F4tJCCLdZM+H217UpiSHInDP/hO3gr0j+8+w/XDU99\nkRhJPfnrRNU1F4drId9sl/K9rgp9uxtZv7PhYYqUvZLKBDn7wtEEXcUgpky2\n9S/y90veCnJCs2UzSMOXIdjpiSskT4h5QlrOnlQYEHPO49cz56hc6nrpMKFl\nrVlDwzJ1iSzzo/ibbOrRQF3jzfDHJy+vh5W35sZWkhrd6gXKAv3jeWbGy4c2\nNYjcZOKvk4DrY5AJG+YoR/QOUkx8G3sL0Adk75e9Ems/Ca9d67fK1AWhPnvN\njJXsNUbr5QqZuIN88NgKkt2T9J04DUulWKuVn6vGvd/kwCqDfdMRRpEAdcUh\n+PUmJTJP5423hQVM0HCcCjoGAuI+gLcCgkr7TOj9+kf28TsOUfQbMONAb0yO\nJWOI29TjzDtWWhRiV5AK+6gmcNwevHqzTzRRvkR9oTB3G3dSKkNtFl97zXC1\nqsU8mfp36trQpuJciKKKnqpvyp9DsB8VVifSqksbfNTQvZFhZNRpVMrOjtdQ\ngcGuWBMSAjuV9TeJwFss10YqGDueTeKXqt1yFO2yASXozbLRpoGBxWb1GlgC\nlSS8\r\n=2QgC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b8d6fd810b060d4a7b20e14c725187a5b5a35fa2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.261"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.226-renovate-internal-patch-b8d6fd810b060d4a7b20e14c725187a5b5a35fa2_1623119065813_0.9842488273586381","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.226":{"name":"@balena/jellyfish-sync","version":"6.0.226","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.226","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2071b158d28075874e6162008fdac78db5482bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.226.tgz","fileCount":24,"integrity":"sha512-27QjsrxnWvfzOzi6NxvaBziyuzgQYUYPLX4nuIauhzbv8TryKu9nTrxVkx0SW+VVxb4TmuVlD4eSUrc23vR/Ig==","signatures":[{"sig":"MEYCIQC/CJeueL1IYjhwQSMcBSUGNoHloCHVDVtWWY71g4ff/wIhAKdGl+ue8BKkVw6lUheDo/zyzFboCpu28LQtbuD3dzcJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169070,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvtWdCRA9TVsSAnZWagAAgKEP/ja5RPNj9rU9dPIr6JkF\nKUY4g2uxX0xpxzWnVgknchU6Bi1cFPcHK40ObUolSnRxAGtbW82LDhqKoWE1\n3hd4pMWg8chdMdRvwBPN7aGTMfvfCIqek29H/wwz9Fg5stct3j0gz9aKzA5D\nI82B/A0CQ1HF+xD+v5Ze1OVFVqEZI4alx67+q46uZFzJiA8Z6pHCDOHnWaTl\nWGu49ENjKgVJ9IsvL4pISZGmBZzNC7GBmrF4K/tW8JGw9XnKq84pLAsgEHy6\nOTyUXSfvjlutV90XHiHr03t3PS/jb3NrKw6dIQFCA41b6gRF4YHTS4opoQjq\ngA4SBDYSGUL3pH/JcKDr5eR4gjxKFcesCtq0IstzM7KTQLWWFblAeOBc9zDF\nbBo5XABxF4d3F/B54KdvzRD+iNGwLoDHDB9rPd0PGKr3ZKbA1eJbdcLjcx/P\nM0fwojX3zuugv1ZPtNu2hGzv7agtWfOitjmhN2vTIxVj+idi2sP2bp70xMuS\nVsHDbGYuO8rt5NtQx4Oee2dNJe6Ch9JQ0MkfvWEweXIHldDl6sbZg1my6MGe\nT3piZJuhdTSnYuxs/VHD0psL7d3BD0uyybzpAAMflagv4aGkllc31pn4kfz2\nBaI5uVYmaPr6MOZcE7ite5Zobm80DJXmi4AX4Qt1Mt6SE0vTUbAp4mlMRvjh\nY08P\r\n=FY0Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5f1dc523391882030c8d713293f1d42b7949ba05","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.261"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.226_1623119261660_0.7890287071666702","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.227-repo-sync-jellyfish-config-default-8161c8e76ae4feffb85eea24e45d6e2bda0fddf2":{"name":"@balena/jellyfish-sync","version":"6.0.227-repo-sync-jellyfish-config-default-8161c8e76ae4feffb85eea24e45d6e2bda0fddf2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.227-repo-sync-jellyfish-config-default-8161c8e76ae4feffb85eea24e45d6e2bda0fddf2","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3439edd6500a3c44ad89064ef86b1a058ee980d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.227-repo-sync-jellyfish-config-default-8161c8e76ae4feffb85eea24e45d6e2bda0fddf2.tgz","fileCount":24,"integrity":"sha512-CtLlodmuNjiBisxI+nep7+mnymRxi/C3lNfs+xfUeNBf4WGzRMHMM4/q0Q4s3m4YdhsmeK3MfXWiRpKbuabXgQ==","signatures":[{"sig":"MEUCIF3Iwyl1F1qviM+YynUBcj9xXgRnrDxcWj8PA/ibMXekAiEArIzHfY+djbybWcDjSFcq6xjIQgiWk+W1du8f0NR0qzw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169243,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvu4oCRA9TVsSAnZWagAAKuMP/3uOQ4j3PhXT5fDmZPMj\nwB7hmdAxVB5KCBp6FBMkgS4Ki+IYfCuzWcT1G7xEbd29Nz/MELEglOwzvZgF\nYpGJu/H2e1I1bWoQ0/ET1TwdQsCBUariwFpB+l++R6pkJpYzlczSAJyqG2L4\nqlpFQKCeTJAnN67b3ltW2AnnPufxOIJPnG/Ohu9T50SQQ7wpozbu1Q9E0OWE\nwjzbcW4ZUiZ/3lsrRcAAZO3RFblZN5s+DsRlnVEpd70R1MLJzhP1FYVFhZfl\nmM3gEEuEkBOnuFqJwHE8GnE1F6eGXNM/EJL+hh/EUX+aHxxp9hcih1eu28R8\ninQCs1G3eHgWh+FMn5koeZzAKnw6My77drqFwyckblcARvpqnVu2D9H+Uyim\nkS6UKJzYgAj31LzObhQI4TBtMiM+zVHlJpGLLk9haroN8kgcATkbdHpmnhJF\naaxb+x4Llt7szPHIABbFQEt475Q449d3J+J3OJWBVUHx8u+Xe3SHpCVXmakT\nBdqUboRPR+SUnb7m1dpmD+r6m70jf+gjZuqYPxtJHsrt2qSAevc0hT6StR9t\nsmsxnm9rEHWr08RCSAVX1jabbVcsasUZjLK/8gPb8k0Fcj876TKLKcrFr4th\noAOJ3n1A2wgM1pxDVLeHxK5EkA44kTJ40+WykLDqnEk64NJO3salPccsYJYF\nWFiv\r\n=tL+P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8161c8e76ae4feffb85eea24e45d6e2bda0fddf2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.43","@balena/jellyfish-logger":"3.0.7","@balena/jellyfish-metrics":"^1.0.261"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.227-repo-sync-jellyfish-config-default-8161c8e76ae4feffb85eea24e45d6e2bda0fddf2_1623125544227_0.9761768605478678","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.227-renovate-internal-patch-855ebd19010e3a624891dfb1ddd4b18df7abd934":{"name":"@balena/jellyfish-sync","version":"6.0.227-renovate-internal-patch-855ebd19010e3a624891dfb1ddd4b18df7abd934","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.227-renovate-internal-patch-855ebd19010e3a624891dfb1ddd4b18df7abd934","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"587975f408ac0c025586977a9ff59167e28b886b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.227-renovate-internal-patch-855ebd19010e3a624891dfb1ddd4b18df7abd934.tgz","fileCount":24,"integrity":"sha512-8CU55l7kgus2qd1L0ahuRDz2ZK/y/Mwao+YOVLJUfogcI1aJTetI72Gm6nmvGVmJAKdFdt4HTVkzEq7Aysixgg==","signatures":[{"sig":"MEUCIQDY8H1pPc0Wn2QB9C4xCdMRoVr23psdJkc+ouBvHPzyJAIgSr6jioSTPeJretfYb5pZOQFu1PkVfZ/98L0A1sEzwpk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvxrVCRA9TVsSAnZWagAAUm8P/3tVbWCaSOXKlRVFYNkq\n6J/oPcuF4wOyHDrI8Qwg71K+l/FlrpV1FB503UGU4KL/WF5TStH4wDLBAMW1\nP3DiWtcY2nyYGzYmZaaYtmUcWN0VGrw/WNS4jDbGNCxiZEJc2FhsBNIVcuy1\ntsrQj8Y/lxMxidqyOGLhMGV+8HyO6KYVEoaWQFRcinxXG1hqQFpeDhFqrRa4\nIHVTO3O+hAfWQFX2DSelQy3STF1HG/rUcly8Eo9sHf5TG/HJRVOtvQt70mLS\n1bwlorkWm98DOGH/8xR5PSakTZFVJejP6JV10JbQ5C1jwBXheTKfQblskoES\nEaLAHJSdDqJuVMzh54nK7NUp8jHXeYLtvKNC2mxGzxOUo2Qru6ih7JToEreF\n1auEbW8hygegHhrY5oyH8v3NdwQu7wX23vvxLt18lMxCXX6Pb3fzUTAQk5i1\n9iKnw8bZLKDVkUwvR/d1CqW31vgmVhI/kcqwGKeNyj4tZ/1kfASPqxIj3gax\nPbuAQ+/paP/xoScbT462MDsrQopG9aivq6pUVf6juGmrOhiVaxXGtWkJH3yH\nzLyUA5A+5eGNrAAxt5D+0Eagjzf8lBggH5wo8/MIr99yScPJ0rQfpQZPsYmA\nWyYjhFxKHjv4nAbmIqS0zMXdQXkRFloSJqrAtAf3aE4D2FFQP8czOslkPlHN\nR3Tq\r\n=dvf+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"855ebd19010e3a624891dfb1ddd4b18df7abd934","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.262"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.227-renovate-internal-patch-855ebd19010e3a624891dfb1ddd4b18df7abd934_1623136981439_0.8806948474155274","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.227":{"name":"@balena/jellyfish-sync","version":"6.0.227","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.227","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63f02a1a572cc8332b829059e76a496d96478d61","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.227.tgz","fileCount":24,"integrity":"sha512-WvZt5eBZVq6D9M7tW+zYW0zcr1Iw5JY1MqOHWNCogLgSbP4IVf2s3E/nGhsq1EDBSUAlPyIs2euMMrsVcV76yg==","signatures":[{"sig":"MEYCIQCjxfI9eXirxg87VVZeW/S3x+XEZQ53m8wncr/UnGBeLgIhAPRDOaH7D9Fm/5+wM+kUYPMsRub+RNA59aTJb++33uRA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169143,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvxudCRA9TVsSAnZWagAAuUcP/RXwIwEDTldzEN+vdYfY\nyFyDf0/O3tFAOmsEHseFsNG8W/2mLVQwlbDfghJtOaiPu4sYh7cmWLC/IGDh\nYFG95qPJpHzozVbkFGVlK8qv1oVqh9Le0/Iw6qjACfWEPUDGga6coDmFX0e9\nnRxTQs4ecss55LgaurgrCyaVJwl/XAYHqkq7ITJNC5DwGMtyi/8glkfRuMeB\nLTwq3aiAoM4wqPt8NXPWhPXVfP+zQeMQLAlbP085DhOrX2oi/zOi9NYb4NMF\nxgynedKHvD40x1SmfoFSNvUDuQTmyZCFb7tn6MkeWhiJHkiQ5c1CrNN4KBWF\nHV/kTqyPqAJ3MowZ/rKTld1XqCvFvmWYyo+zezHG8oMlewqt2fc86iM2OzNJ\nz9+VFanVPRL6DFjF+qMed4ePleFitQnyPsw6MQ+26G1/btx1n6NFwE+ESXoE\nNZk/Hz1ziBFpoVnOtcgOx5BE86lH4Rgx3utBWIf2RhbwLfEMXN1wy3HJBInp\n/uF6/+NavLkOHoil8dtk+1FdnJE8AKP4ckMJchAQv1ISAtNHgVa2TCbEwTHx\njC8/Y7KSAYNvT6f5B1Udkpbs6wdVYERI7JtNIPG0rH/KoGZeasx2ungPu0TA\nULagivk2OdG1q9JXqO5pk4NvFkj6TIf9PvkhM7zkO+0TOv3wmBFrpXgcoXio\ndP3i\r\n=cBbK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f06bf1239bd50c6516cf6ee2b89e45017eec9f7a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.262"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.227_1623137181484_0.5367692139899651","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.228-renovate-internal-patch-e47ba00103e3a84d7dfdeb71d89968dc4711ffeb":{"name":"@balena/jellyfish-sync","version":"6.0.228-renovate-internal-patch-e47ba00103e3a84d7dfdeb71d89968dc4711ffeb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.228-renovate-internal-patch-e47ba00103e3a84d7dfdeb71d89968dc4711ffeb","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7fafd4c4084496ffeaa8428dfe0609b0b9408555","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.228-renovate-internal-patch-e47ba00103e3a84d7dfdeb71d89968dc4711ffeb.tgz","fileCount":24,"integrity":"sha512-6if3O/Nm1MbyNwg0Tl2qA2tvgvPHVecBCBAx/JyQsIs/78ehauj0kmE+/wCSFKwenSjGyDdFVJZzqA2QYdVC+g==","signatures":[{"sig":"MEUCIQDwILWbPwlnN/JTUZWPRaHmpHwgPhe3nKKYybl5JuE0cwIgS4U4XNW1otunxfPRm0OHgwQXSGk38CaIrLePzwqac+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvzPrCRA9TVsSAnZWagAAh98P/29wl7W6g5wtahKnmnVy\ngvDGWzuLO3eTVmPLAa98B7OwqR9228HCllvhL6ZKn2rDNIm6/lBUB7wXsdvg\n967W217NLAOgpK/82E30siSQGWQGZ97u91eaqM8Jy0Jsl4J679QTTiKVX9uS\nu1boLZjALN743l74KGqPxmzyxZb+9nnzSBdH818XUvC8Jcq+NyiZxqNCYjn6\n+w5N0DVeoeml/pebIesfKF/7+5OOkMDgMAAW9n3KXndML+SJJDqgAyfqzJlE\n3x0lWPdC2zV60KRwDBilztnuyvX7n1U6eUYqHVAH4fLg+/OxVwipt54zKGcV\nRRAin66E+wt7Drqepq211YZ8a/i7BGdeHPQH0o+7A4NHUQB+m45+vjV8f5+v\nlVFg17Js2Y6EOf7H60m3DkqZuP1kjyIS31DvUQIs/5KKxAsUmzKZ3YvkbMtn\nyUef6vbazHmy807Mn8P9lilf9gc5N8xVwfMxR4yfyR24b+oCVPkGU+utvarb\nL5EttO7lMrjIhwW5+xPJhmYNas+6tat6IabZ1iJLruZIDx6hEx1MIxFU+rzI\n3ztlBPuDvtUGl+3W7ubUtb1UIj+t/p5Z/sn8HS6wweY8vsDAjZK4Fa8WdsgH\nAcOSxxqQFTbQ0VVUrCNJ9JihDEGLSC1NBYVqsEO6SBupAU7C0EPV/2R/1p3a\nYIzS\r\n=/dd2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e47ba00103e3a84d7dfdeb71d89968dc4711ffeb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.263"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.228-renovate-internal-patch-e47ba00103e3a84d7dfdeb71d89968dc4711ffeb_1623143403754_0.03911610135850374","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.228":{"name":"@balena/jellyfish-sync","version":"6.0.228","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.228","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8682e1003323c75cf01627ba490bf5d1e9aee21d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.228.tgz","fileCount":24,"integrity":"sha512-aYRyyt3qy3I5rba7zIo0z7HT8Qw/tCGfRdvGD30qgyNr+KN40tXP4oM1g0T0qWJ0A/A0U2HriiStoape9MQ4Xg==","signatures":[{"sig":"MEQCIBz67a21rF22IJpgzZn4FGmvOgvzE0xj0O4Wbjh98SGkAiBvf6byMNE3X5aN0fdLf7W98SFzyUvtVqqKWeVi9JZFrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgvzS7CRA9TVsSAnZWagAAj4YP/2Rd1j9tBX/cLGld6Sxb\nJI5SfTzuk5ld0qh9oZEx0FEyaxsRRP1eieSrpC8QnmmaMpZpp/UuzxG9k+NQ\nDz6tOei2su6jbwveHKz+D+XuxQn0jYSLLDxSYwG9SNGbDyHhj5ljpiCuJfx3\n1xbI15kpyfkEO8gBQ98MlEn//5i1yp14aXWPyCx5hF0pqtcTIP23A90D0F3t\nMu5y3rUX3QG/sgCxRo3vRRVPmN5gafUb/h9WKGqb7ON/gy5zB9bc0QLC8tBX\n+36IHlmDZ3VwgaSlWe3/0kPDB5lxyMQxWeiEs7ySIgmnjXOUvwi47EjDK2SR\nl8JouaNzwuodaYcpezHvD61KHkVkWIMwCmI2pOSBiL6lAdu+MOhFH5SpUV9i\nmaQ/QktGNjZ1xiKvkxOn5vmeczujuAz6BJaycySPVWTDJ+0YV+w5A2oId8da\nTRyMEMMm+F8UNCAlr0t5GGTz3i5TS+H2uZnBj3E2sR1wJbNpivuoWACu7APX\nhd9UCKuP8XH7UpGDHh2ZNGE20thsi3LcSMRUivHlCzXGN2pm5Nkgcu8usG1K\n3uMUfY2xOO7IHIvauMB72lxTXn+5mZ2ui4ZwVH9i1Jw8xDjVgCvjQaJSeKWY\nW1KN/oKLZkmNCcDgGhPxK+DShhCns04d1yIZtsqKYnhl7uyhkbjEUBqfZlBE\nIKdi\r\n=9+Dh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ef305bb836ba499ab3b71c98fcdc25d6def003a3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.263"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.228_1623143611805_0.5908346795263884","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.229-renovate-internal-patch-f346edd547cc317f5dfb4c2c68ad52118c674f5d":{"name":"@balena/jellyfish-sync","version":"6.0.229-renovate-internal-patch-f346edd547cc317f5dfb4c2c68ad52118c674f5d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.229-renovate-internal-patch-f346edd547cc317f5dfb4c2c68ad52118c674f5d","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c065afcb7e41edd91f1d8abc86591b44e920871e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.229-renovate-internal-patch-f346edd547cc317f5dfb4c2c68ad52118c674f5d.tgz","fileCount":24,"integrity":"sha512-Xmf+nMjW3dSFgNTIH1ySNY3UZ0cwJtPHuTlrB4mtQ6R+LrnHLxGxoyDsO/fAuKNANy7CDM4ZbkbJ0JOUA9sTFA==","signatures":[{"sig":"MEUCICe09uKKeetKmYE5CdBU8hYJBYS5ufTSjL6tkbM/jnYpAiEA24eyq+lYFFEsr/A70oNJwuS0MEkMuMfiL0o9nOEvBWc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169420,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwEJ5CRA9TVsSAnZWagAA1EkP/RHjTrxqsOl6B4H7R+7X\n9qQv6DY1QBbSBU45m4nhbcngseB11UX0jmoRNkQnm5bECyJmzFHqCdGXIToO\ngtK8Gxi1JkXHIupzsFsEFRe7bbPnPuLiHy3kwrQrKQH6EyvseQB/JBAIm7vr\nZLfjdmsxcjYs3xS4rips+XbJ/La6u3pF0nbCBggSJJB49MCzScONYKxCSUrq\n+kmH4aYOceA7VDUpoRmmlf8qQ3sKk0XPgZVpbrnlaS6tmHf0fq8J0D5XnxN1\nJHQyM7mLtDAnyw7NLNW7wXszvlk42rMiE34h46qqIKdKafMHoSVcTTy1weIO\n0Ls8FxUK9sx+022Z8xWMu2HLYxXk7SzGEfcEPWKPKBpF9sH0XN12HWdRqMEr\nThUmbCOMPj5LJ7g/busDRYeAp3x9bzC0813liWT+F9HIIP0H4xmOGL2Q0Blq\ncwCVqeNqMtNTOjnmulI2dcNgkLNbthPVA5p3IwbT/YWqU4VXKTr7+GHFJH5+\nH6UIC4hbJdkSf+WxhoOTwB+JnmJpRNwgIpxBoBfvaK7LoOuZzilyqJPYF/Kj\nhjhbS7vPCdn0IIw60Lsz3Iyaaik+zKFceO9ugXzEJ0dKxNHpBDi77v2THGpk\n61VODhEWqi+Xk9IyOOnQkCrvfKzskGnqbN63R95/W9Gsckgpkv3GH6OPcwDe\nMEj/\r\n=d7DN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f346edd547cc317f5dfb4c2c68ad52118c674f5d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.264"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.229-renovate-internal-patch-f346edd547cc317f5dfb4c2c68ad52118c674f5d_1623212665702_0.5641540141509338","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.229":{"name":"@balena/jellyfish-sync","version":"6.0.229","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.229","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4966996f6aef99d0e68e307c9b1caf7544ad1c53","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.229.tgz","fileCount":24,"integrity":"sha512-uuaeQm90qgL6E04i6PxNvL7nu4EHX6zZS+hkCs+6HLil88+r//65ds0Pt4pV4Di2HLdmaUEzzDi019WuQYGpFw==","signatures":[{"sig":"MEQCID2L+HfW+chTrwUeOWNC4KrgqqmXgKqG0LhpwqcJ647oAiB+rf7qvM+1FrxXbG+BzPgoekwaCzNksKGsudg0J5BgjQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwENyCRA9TVsSAnZWagAAN6oP/Ro31XsDIbm64nesWAgN\nfXhB05oW0l9x66ktO4rks28JmpDF1PaIPrSl0/785Cb4DsoSlPc3EnmqPxph\nKL+JzfKSY4kYNoaQ8WU1vWC5OTcL13eFhzBrceflyAem3ipg0qqIcvsD9VRF\nHniEQwhH+N26DSTeuV/QY2A8YejeDgiMSfBYp1KG6ZHolClC4jVEGyUgu5Os\ne8a022bkIDrIJRW5YbRbvrkTB4LPHJ9oSXxKreWTZAryepPo+ar3i0W5tKAo\nGlKiU5JxKsdCzhaEUHskjHD2th7uTcmLoM5Fl/UJ7AC0Ewv2IqC3MA8Re0oh\nGSnjIFSKRkXuPiMP3tnGjG+IiJvnNR4WZZFC0C5okvkeVzamrVRkq2WfofC5\ndG1I2RtF5a3o/jviRo+f0ujgdh/2ufFlEaDOlcxlDXG0uBnyvw5bWhNhZ73N\ndkVmXySIJta8a74Yhsn6B5aP7g6nWEyLOoflbD7vG1m/4hyXkSr7vv4H3eDk\nXwUutV8p43ZgjKEzJ5Jp80BPNDsAbTTt2PmaXhQtoGgUg4jBQjZ82x/I0SyK\nXim0QOp8n1JX0ruNx0oOGsxWELefEUuWkGeapBdvhs5hNH+Rn+kgfUTvZo3o\n2ooSPrPJWMnqWWKL3AaV9sQexMx6bS039n5zJj8MhFr+4t7nycH+/BR05QI3\nucnH\r\n=9tS6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8aded6dcf487c045c287596e4a763ff05bf35e77","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.264"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.229_1623212913898_0.3099096032142057","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.230-repo-sync-jellyfish-config-default-a73e71e1e9b5557eeef8b9c3f7df748b5c029754":{"name":"@balena/jellyfish-sync","version":"6.0.230-repo-sync-jellyfish-config-default-a73e71e1e9b5557eeef8b9c3f7df748b5c029754","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.230-repo-sync-jellyfish-config-default-a73e71e1e9b5557eeef8b9c3f7df748b5c029754","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59a6d6914f0da984b4b93f04fc5a9dc4893450e1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.230-repo-sync-jellyfish-config-default-a73e71e1e9b5557eeef8b9c3f7df748b5c029754.tgz","fileCount":24,"integrity":"sha512-Qja2y4b5eIpxWlKiinEDzE7NCWv7OEJzthj8RdLbKOMkbMhyad4NbgdpJ4I/ULbWohxAbe3xV5eNKGTmx7oPdw==","signatures":[{"sig":"MEUCIDHe0Lj09NgjTbJBTYb+sbqKl/06ePMfQjGtvuyrkw3sAiEA9v5NRkkjHOUs2UYLxB/9Bth/mqq5U8Hga6d9R4TdPCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwu6qCRA9TVsSAnZWagAA328P/3BB8ObCnuPCkz+Q1mNs\nuQNfZKFGMwqPaR4SE6ZGQnmk/42sOr5XJABLc2VZ6CurG6XlDb4WmwEBrliT\nWUJ6viBAc72GUa+UjvANq52qYCi7jG8k1nPMTxq9Mqn8DcVp4KFPiMGtJE7t\nd2jpVprpSCggk+H4tfkAGHqzkBBG8BIE8F5PnuWb/MYfaab5sKGGgeybW9MR\n6XY1PGMWvAcTm0of9e1LPaVkYRTXLR1RXdbULJ2xXfJlt8QvuPZJlMDfkrFQ\nr4U5kUZc6LJyrYtczR63Hl104ojIBSuW5pRQSe85R1E4nrkd5Ex5A4/vdjtO\nylmKOGViPJNZGd3y8E3regVcrcy8VBA8LeYajqzSqsqZ9+wGCdL3dziOWATF\nFVUQtDnzKTz9AcB/UhB8Wli/IvbxQazzeEqw+i0i3CCmISffq49t2fEmoi3W\ndEqw76LHzCc0YrS0CuXo5vO81XhpyE8BywkrQtE+DLMLYzrmzBqmdLaCjbPl\nn8GujDPbF9925gRN4+/HvuFxnM2e8Ax5viTj0ZXR3NtAVaUX+DT0WddXsoaT\nHLMkGsUS6KvGlpWYAt96O51DnGHAUgAaD6GiJQ4DB0WRMftFlOVt2eDoAV2z\n3/jWtJhXot7KpXCUpIqoRCAv5erpxlDBGJI1/wm0TVtt3ExMoBPthG8plXnw\nEnOA\r\n=O7y8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a73e71e1e9b5557eeef8b9c3f7df748b5c029754","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.45","@balena/jellyfish-logger":"3.0.11","@balena/jellyfish-metrics":"^1.0.264"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.230-repo-sync-jellyfish-config-default-a73e71e1e9b5557eeef8b9c3f7df748b5c029754_1623387817915_0.40870687174384734","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.230-renovate-internal-patch-f12fb535321f3c21757e48745b62fa5c160a7550":{"name":"@balena/jellyfish-sync","version":"6.0.230-renovate-internal-patch-f12fb535321f3c21757e48745b62fa5c160a7550","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.230-renovate-internal-patch-f12fb535321f3c21757e48745b62fa5c160a7550","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9c3b33d53dc4c6f14c557c38baf181491944acf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.230-renovate-internal-patch-f12fb535321f3c21757e48745b62fa5c160a7550.tgz","fileCount":24,"integrity":"sha512-jsfgm0wSPtqWGXZUB6/EaJ7iX/IbKCg+tW5iTziH9a0QjXR4kR1t6p/y8KRI6RDoWegm/FZFsCZINwIfANa6dg==","signatures":[{"sig":"MEYCIQC1vq5VqnhibY8FAfKCbfCpHZ8U0/YFTRFu4rkNhZ8QowIhAPAQwfvQljGNFRs6JmqAfzk/q8LrsUc1Bq2LJ0ZML1dm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwwPBCRA9TVsSAnZWagAAPNAP/2y4vLmL+MbMVS3IFYF2\nIaZp/Aslx74nj8tnlCVpM4I996/LLHBwmJEGBGr1KUcnQKsLHF8MMafjh8C3\n7CI321tC75VJ5UDvkDQEoyOc1iyJyNFbR77wzWL1O3sh5h3Fr3MZGjU3i/ch\nMARNuxPjO8lZKt69HaKj9P4S12BSTv41r/+quUI4kS7ogHEzXSW8TvaUXRpL\nYpjetKxyfVospUp+RzAbv3/kmrDuFUo3Kt4gPybpEDhMq7sCICxAKeup2uj0\nfC+aJBojqt7XIiRrz7776bhz7hpoBw86VKcEcrGqv70nfItIUGXl1Y5qcxx/\nK3GR36ZT9C8iHVy/r5+VIewmVwRBG3tVgLh8zf3eOvHHlC+4WN8SOij5Yaru\nWSd/ZW2tcOBg+EypKUqy6/pZjYiDGJ2Rvn4QS7ZXLMzRHeo6QeGWsCYu7sW4\nwe3PfpuBQejyUmp/U09+GbQjR8vfO4MjoF9i+xdqYEW2oU2c9ETeeJlRn5V+\nxjHUtS9fWZy7M0Lc/4UsQ3KGT/iQ04Ts+h9cChVe+ZFCnvTIhOkUC1m/lODH\n/Pq/7JPiBd842ddNXg9VJgtO5qKJ8U13AR3ahCQiu4oNajdGlilEmu+GNLnD\ncU+t7NxDXfvA38UM6JkTNKAA9Qg8tkzgk1AoiOQnwgWt7kofKyUiZE6MfTSJ\n6QZ+\r\n=3FgJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f12fb535321f3c21757e48745b62fa5c160a7550","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.12","@balena/jellyfish-metrics":"^1.0.266"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.230-renovate-internal-patch-f12fb535321f3c21757e48745b62fa5c160a7550_1623393216926_0.5472335832134114","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.230":{"name":"@balena/jellyfish-sync","version":"6.0.230","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.230","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"523ac5ad8b346ad33f85a46da21a5097eef75509","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.230.tgz","fileCount":24,"integrity":"sha512-KM/cbhq2GBrgGgdRc5bO7KHZ5trwhNL/SJ8Ygg+Y9VNfeYT33/SXcZEnNDysnzCdiqEGlrdnSJxHOuDxxJseYg==","signatures":[{"sig":"MEUCIH1NB3L/8q3tadPIW8sNc7im33ONyDHaKy7EW23yd1ixAiEA1Kp/XmKlUNP+UcNCm0LKAykNCm4zJdmsQj60lUcxlAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwwSnCRA9TVsSAnZWagAAY+cP/1qmqVPWJHo1oXU3zFQS\nyBCDufidsKyjysLPk1HmMmYmkLuzP01nowcQIRJXZ+iu8/LeY2tn3HczLaC6\nw7KkG2IKYsbRbKppaQySsZIvpjyJCFlLDwy76deQV0C14kU7YN0yrJSqylFd\nER8alhVJq7IA47ESliK7rf8YZZXtSowPysHvuhD7Rpu2Xsupo8ETZwHLOo7S\n2in3aCxz/smj+rnoHZWHr3LFJ93xB1fDOzBeQppCqTPa5EKXqmlfxeQtgMlz\nXJPhd74RcOPPcfoB9CJpmwWqEyWhfQpojhCxW9teEME2F9/W6vRD6mKlcSrN\nCyKn/ahdGZdW0cS8qIHsploo3eX8sJUoyv6rNyhWuHKVJwP17lxziEZaLarX\ni3y6zkScmkqLa56voFdYu2rmNdFHPDGeGIMTs9yLoosXRHp7/FMtw3c7xU9S\nEOhBJbNOYN9Xl9+DPqTJZhJW+BS0z45EdV2CfdpGCiPsr8G05HzsE3SklOvM\nnLrDhpS+ho2gSdBd/jdrg95R2pFtiX2aRAfsrGypRq9i3tnuZvWIznb+gbXW\nwgf9HYbH6F9fq1XnDMfrwrkH7L23/IWDrbtXSYf7jFEG/vpqKJbmne1VW5x8\nuyEAvukON9sVYEeYzquVCc4nEHxxgvDyggYoZkVhumSkppPrzLJH/pkAKvvR\nuHXx\r\n=iyin\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"45f84fe20afa0532e32a761cfeaad597003df042","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.12","@balena/jellyfish-metrics":"^1.0.266"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.230_1623393447058_0.8464170541269858","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.231-renovate-internal-patch-5cb87036f0a0cb7845b8905e42e16adda17f8b85":{"name":"@balena/jellyfish-sync","version":"6.0.231-renovate-internal-patch-5cb87036f0a0cb7845b8905e42e16adda17f8b85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.231-renovate-internal-patch-5cb87036f0a0cb7845b8905e42e16adda17f8b85","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7f788ec1caa6e900ea547979d3693123b075a964","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.231-renovate-internal-patch-5cb87036f0a0cb7845b8905e42e16adda17f8b85.tgz","fileCount":24,"integrity":"sha512-D1zbBjg3sE4xA39OtGYstoDCm3jG9CaGKL05wfiSmEOUS2iGNxwtCPZnkug/NruW506gX6aoivU2MyOKWF8vKg==","signatures":[{"sig":"MEUCIQDyR1C9bhr8O/lThPkGgmHPyBOU7Djn61WXlpcoKDUM8QIgakxGCi6N268ljC2hqI7oPYuwqt05xRLg7MuiU79b/yI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwxMHCRA9TVsSAnZWagAA4SsP/ArTdUEaVEPwbr2ErELR\nlaMAT7Y2VeTTsVTWD+3pWomXBfEcQ5V/0s90+kKZSYy664OliD3AYsszFUHS\nNovh3jBYOCA0jJD+YAIR68hyI9sp7qv0+IiL7QVo30NSYwwAvR7uHiyCnmAN\ncTQe/rTrFg0wHusLnaz1CAHHFjDp7kYhry9F/PnuYs9hJ+34QFLLyFE0La81\n2niDXFD+59vCMJIXS27kCma6QA5pBpOxim/5F/80cs3HXeJ/S5dZzIYQKzzs\n97oyjAf+x8NzB8cpdBcduD5QhAOrgVIO6lSdgH4jE/bR3Hux9TfCn3XTOI4F\nztmIZSplfu6Za58IbLZQPAxS+KpqVKXrBcufTyxS9aWOaIlFskoq7brSHOMl\ngQs+3kbR/0dqWrgx8ZFgjjxx9YEO1LudUBFSUHCrC9D38kx29Wgedz/AU7sE\nZ+t+KmAkTtg4zUkVZ0YJfG2lJHSWTXWHj2HvmKQcNSD5uMtsmIZVnHzu2X6r\nQok4tRnlozhYWuTPlFyZmgttnpZJCL6p7mQ/TTeazXlWxelTI0WPzmK3BZCY\nAGN4075pMtMWeogTKf8Ei5WM9NyuhQr3yKkgcrZG1qD9tW7yfJDA95V35Si9\nBwUZnAgRinfneZ2iISRaQyFHfXD9qGAQ8uwSlruWB06VEcMO7cj8hoa3q0/Q\nx/Pb\r\n=dpb4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5cb87036f0a0cb7845b8905e42e16adda17f8b85","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.12","@balena/jellyfish-metrics":"^1.0.266"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.231-renovate-internal-patch-5cb87036f0a0cb7845b8905e42e16adda17f8b85_1623397127209_0.6054700702795972","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.231-renovate-internal-patch-d8dd5ec311a984b0e3a187754c4b629d00499849":{"name":"@balena/jellyfish-sync","version":"6.0.231-renovate-internal-patch-d8dd5ec311a984b0e3a187754c4b629d00499849","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.231-renovate-internal-patch-d8dd5ec311a984b0e3a187754c4b629d00499849","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b44c6d1f00f7cd47b6b29439d75b74da3b4a1d6d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.231-renovate-internal-patch-d8dd5ec311a984b0e3a187754c4b629d00499849.tgz","fileCount":24,"integrity":"sha512-aXaZNUdqRdmB9cfMx8CfNYUGSHP7BGEaeNhhw1dSlIqUs8JK8OcZfHpi/Ahj7OB4t6C8mR8mVwlQAtASxv+Trg==","signatures":[{"sig":"MEUCIQD1W/aBH7hgK/Az7jZbs+jqQw/nZh2uhjWNuKWGp1+44QIgNelvSXq+Tnbw44lPOC10/7hDn4XTJZlIaRmUYW50PrA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169564,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwxRKCRA9TVsSAnZWagAAiXsP/jS8YuykBOPUBQJIorhC\nm9GBDL0ziawiKN3OjbU9pEiyyqVRk4iP4+K8B33T2QEf0Wl1aJhM87xKBD2a\n5iJHSl6zP0rwYR0y19Brpvn67cmjNqa3hYQ1RcXUBczqs7VfZ4MaADLkRwxD\nGgBSh0acOnjRRNSfedY4QHi4i800vrjW5/v37QR/M35gLGryMnOKK537FCWu\nYh5NWOwp/Q20+tM/3UDSSbKaLxkoMpjGmw09BcnjQP3vc7CU2+wRuiXk2+Ab\nBf1U0NEck4ryhEArWASQoKxxdgoQm34qu0Qa+zxAz7kPWz+bMBSliSfIrN6w\nubF7QDSB2w7sxAlN1oVDjuK+ArKWl2DTPF6bABy9wqRI5EMVTH8O2guxM8HT\n9XJ4ecc1UiL9uaVEWwgoXciUjSPi1nDSwFbliB7m6EN4FBADiw27VvtkkEwt\netJbnU/cWkc2eCmyAALolv2GVdPKvYHR1fVbyUo90lPVGncnQMB+PzNgUq1e\nErlUv91jiiwdSJ8i/EtHFqVtU1x/AELBkGANiwCtMiISJxP9Uzt/DswwiAfx\ntR1CWsx8btKvUfU7qtyeuVbgmr7cmbiBoefl8EVJCCsSnNwRTO1wrgn0qe69\nqaswwS6xZe/tQinL1ztem/pl3MRZXxk7qo+2iGuR0kKQIK2WDyaQNHPzGiL4\n5+Ga\r\n=33Y/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d8dd5ec311a984b0e3a187754c4b629d00499849","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.13","@balena/jellyfish-metrics":"^1.0.266"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.231-renovate-internal-patch-d8dd5ec311a984b0e3a187754c4b629d00499849_1623397450007_0.16337633208984803","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.231":{"name":"@balena/jellyfish-sync","version":"6.0.231","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.231","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e2aca11e059bc4e5aeefc7ee6abbb0bcee6d59f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.231.tgz","fileCount":24,"integrity":"sha512-FrEK9rUEtD9VGBLxakPZqZQHuWpBeQz+lCxl9zmFRBoRK+ztKZ3xsVYbM1hmlX2yGD3xDXaNrMQofPc1owF30w==","signatures":[{"sig":"MEUCIGjeP6GLQZN0smENQPKo4dup/+bUoFCrtkndUcUNXfppAiEAmpmjKrfkgd5e2zCmQMCB4kose26FZ2rmLPOwfbBzCfw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169499,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwxUmCRA9TVsSAnZWagAANh0P/iaoQiwOUr9ieHNENzBN\nC7e1ha5XhoBXg5Zu0AgFcUJKamRQ8oGRWe2MZDUQU4vlm4GFWamfkeSQ2SGe\n/OGLChpTcgbogK0iAQ7WKGkj4iIJprNJTv+T1piIBrhFQfhKkBYFsXignrF1\nyWEam9Gko5gMXH/IOqThoSWyrlKki5YMaWL5PiA1iihtaZRK3U1xtjgJQ2ui\nKh3LzxR2EALSKuyJvgUK5FdLheNIW8f0XZjmrZxNewtBXNV7dsXjA4R3TH2C\nkSF9OyvcT4m5a7cerbQO6YrbwkuiCXYFdzKtSNJ3Qqcz26NzJA1rXfQDV/YV\nCFAq1QLGzZhk5fch7d5XK4ZK9cY3suhgTL9u1MytvRSAj+t9RE3dcPWPq4hy\nMsOzumO6Tj6CJDsiQfwe0gURB2wIo0m6Dxo6ECOrZjGbQNfFhG5oYTNqmwTC\n0hu06CI4+hMeXCXgR/Sh2T48KlQMJygbE9vb1CNyfK/0GddgrwEB8oGWYkZ3\ne0lKntjfrLJnle2jqTkDbM/RffLHjJSaQp5yx1C+BsxD2sr6Iv03lVFXmcyW\nUmF4d1BgCdvLkxR3D8tF0FD6eZZa8m8sWaVTPyEBch1bPQieYbs8UheFt8Fz\n558j3K31hqJpA3vMzcInM0f6ZZiRbjOd7+8+Yp8dwE0g62ZGYXWePilOwReQ\nD4kT\r\n=V28z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4d5e6a430d8c845ae4fa33902da3f47722ce3c53","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.13","@balena/jellyfish-metrics":"^1.0.266"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.231_1623397670688_0.0010635684953759217","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.232-renovate-internal-patch-2ba8d10bfb9e2885c94a148237ab30de39f2f94b":{"name":"@balena/jellyfish-sync","version":"6.0.232-renovate-internal-patch-2ba8d10bfb9e2885c94a148237ab30de39f2f94b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.232-renovate-internal-patch-2ba8d10bfb9e2885c94a148237ab30de39f2f94b","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ec3e1383507c43f02ba1c641a84dc16ed67130ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.232-renovate-internal-patch-2ba8d10bfb9e2885c94a148237ab30de39f2f94b.tgz","fileCount":24,"integrity":"sha512-+4uM1sS5yE0iX5k3WxgzyDUpPNQyJ16HMsNPtizSkwg1bYfIfK2AVt/+E5roKrnAT/1IwQ+SSpC0yfLbLoBChg==","signatures":[{"sig":"MEYCIQD8+SQvML1UehUqN+jUgBzzLgA/ffn1ddrWLwp0cMNIJAIhAJsmo7Xq7Lj3HgCDasYZRBVJC4CtlOLJ8VzRHbowLzMU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwy7tCRA9TVsSAnZWagAAZn0P/AwDB/6TOo163BbM/w3X\nvJvcLjQzI1PPGoIOkl5sEHZjvXZFPzrVIUSsKi1ff3JL8WLveFBo9VeegzBN\nWjHl0+gyFrSCylZwgegpyWPfNDbNFJLE+5eYrultdJQRQBLYk7qDBOh2ltE+\nzE7v3jS2ImYmO2xOQDPiRa7lUkpy7/EPSLOcja9Q0/gBcusLr0n+QHG/Opc2\nCKwlrYUVc3vwjzNkWE2zP4JMdm0HfHnQzHrd8kW3xLHZ34WpnhBTCDvtuaUt\nf43LJ70KIIznBWcd0LC8VHgodcKEBYfOhxRF+J6yLKB6pIwfMUnl/+ta4luW\n4wPLCtveyZ1QGqhzKZcgpu/4Ya+kN+/YZfSevfxGPgyCu0GJH/Dja1AhI9mP\njFA1AvJkpuxBiX6bUKkZbGK/QMjH1NjNzhvIj94pmMnsRMud1HyTDmTLiG1h\nAkJJD3AscPSAd5h1oFuwkiQ6ekZ4T6fZV9MEfGbFgD4t7FIK0EWKniRG51a0\n9l8s6FDcpWMVzwVWFyVkRcfhfnw1/z7TIeVpVsprEiFSqOBfrdDDHPomK8bm\np39vPDy8Bxby2aN9D5S4V5B+m6AaZi56w8QhJjH5GvBfRJxeBOggZxDFDCFH\nNn1nBgnaRWgkzlotX/u4ayKXR8nzPMzlNMkW7598s7ah9cr8fAqwmXkWj/TK\nanT3\r\n=gnHm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2ba8d10bfb9e2885c94a148237ab30de39f2f94b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.13","@balena/jellyfish-metrics":"^1.0.267"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.232-renovate-internal-patch-2ba8d10bfb9e2885c94a148237ab30de39f2f94b_1623404269532_0.4707415079552997","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.232":{"name":"@balena/jellyfish-sync","version":"6.0.232","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.232","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba40690ddd2750af214ece3444936b1c0541cd20","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.232.tgz","fileCount":24,"integrity":"sha512-zNOjhDQaQgdpXsfD1LklW5gx/wPe3peJT7WyfxseWuP5QO8XP6xPapOhKXLJ+6h7+oor9UyiKbQHHd9oITjM0w==","signatures":[{"sig":"MEQCIDYW/ZLLLx5pfrfiYtuuV+e1kzpK3KO+LwI/nA9L8jw3AiBnTkBOKnOS3GDFOuMDVYFlFQGBeBxDuUu4ETGchyjThw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169605,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgwy/CCRA9TVsSAnZWagAASyoP/jcmUaSjUKejl+unGUrZ\nLPX8UdqH3k40ru2yMKR4JErIU87RjL3PtCsjl3hBTsJyl0+wVZGEJOkqBrcJ\nTGZt3hsU0HjfXgaQeiheF09ayiB9Ns78dSwRmMRdDqU7Tat9zliHJ4JGe6zi\ndhbuPh0AiYnDhe9d7VHf5kQoy4kCdMz+tmWOEcfgRwMEpyez+7CS+Eb/WUF1\nVdkD4dxVeg5oviA2P8Vz2pOxrOYdZKETxHxS0PGGlKRLUzScft/6XvhF1shH\noTHPfK4zCdf/40qT4Bmx4yeIUHDkypjhhpyMrLXt60QIgc/Lp/mZM+ptzmvI\nKjf5xbLl3Ntlr62UKs9UZycyeZvD7wYRH509aEHpORpFvSGjHSGbsOqByXsL\nrGxyhk+GJPIsGN9SXCR9WZJX/96ZpxCljvMiqBciDlw4gO1TiNlbSYNYmoUB\nAkY32gpj5/bJxFybbuZ9FB54WTe3dOGu4ZEQnQuIlHJkPZaNh1Pjy1RMc7k4\n5ivKNWpRyMws948meeIiLLSqf1R+yf/HcNdM+OwAEhlVvpdd3dHsIBPcBigf\nIyXouBR0ZJ9d/PQ9m7IuPWTMbyur1ZtapCNRampVUZ90rgqsLnkO7QmYH06l\nGHpn/DXygyL3VxMCSXtKjB/iHzwOxvoIvr5XFDVgYItGdvz/sOVs5D8DFkec\nbdz5\r\n=kx+a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fe1bb714deeacc48b84715ccfd9e9e59c78d61dc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.13","@balena/jellyfish-metrics":"^1.0.267"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.232_1623404482138_0.9945399561337329","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.233-renovate-internal-patch-330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a":{"name":"@balena/jellyfish-sync","version":"6.0.233-renovate-internal-patch-330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.233-renovate-internal-patch-330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8df3197da7551ffa12d3d14cb8a3ccdb180c693e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.233-renovate-internal-patch-330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a.tgz","fileCount":24,"integrity":"sha512-4XylOzGr8QIn8V9Rt9/nYwGzX+dDGz0M0CaJJbbR7QjnWWOQmPWUGqTvzSemse8rQfc/yUpr4AHzcM6DKd3Xlg==","signatures":[{"sig":"MEYCIQDVAmA9Xxl7us5onPG9+tTrVGpTHdvNwxSdcwEAuUb5XQIhALwDVWli/BPSi55O9N2Ah1U/ybQy9VCJZPjv24064Ape","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxAdeCRA9TVsSAnZWagAAVxcQAIzzwSAIz0kxq0VCVxMy\nfr6vHd/K126gqiXyLYqAhSa+eGWPyi9mEuSKTnZ/VK/vQM0hi2hU4ohwsv11\nUOEVfcDyOli6WRUFlaI9LzcSJ0++gknECDp4F5bKmQHkA3ZXboqRbXvlmNmZ\nrhtDwmptKKCEGaMzLvNxfFdsxUXCHQ5m2SyE1CRIfzI2+CcTY4R0msDfVsiX\nzD+vo7Z7h1eoGRaU0EqlrjgkdGrNGyU/hGraU17l0KPxl9ebMUlHoH8LOSbU\ntUZkfM4Pnx9ZxgVcHU+CtqfKEhaCOjxnN6fVVlWUddQigA0Z4f5tDa5eJ2da\nfSp98jRIJVvIppOaPPdTBpJfhPIZ95xbRwHTGhHLFzBeAy2CHyGQoErglU8J\nBfyd7gZ5ISsG0etl+1s3CSibJHL7BZKATlo5A6QoXXhvq1ag2EEtfy9y9VJl\n9DBW7dPgun0iPIMalb3Jf/C6IFTebR/7Anu2DPYf+SWIV00fhGgq7sIkFp8O\nhXKLd4ezm6s+JBwWIzYGHTaY12JgoIbwsfZcwt/Wlv3aJraMFBRvnQB+7Yas\n7bMPGxLA7yMkt4f+fZEVxXSwl3fFAZVC2Pkl/sfTeTFfF6K89MIKeNwViYjo\n0tMjU1YjGKbzuOnLjcu0IaYrBQPni0GBHu4OZiMH4l+zVmmTkq/qDXWBj7z/\n6Vn9\r\n=wA8Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.267"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.233-renovate-internal-patch-330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a_1623459678000_0.10699971612367243","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.233":{"name":"@balena/jellyfish-sync","version":"6.0.233","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.233","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0f63ac3d63604f132f473f1e294c490d08ea6938","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.233.tgz","fileCount":24,"integrity":"sha512-g+gJPTBB/OTEoeD1nzsoEvm/lJhdDAZimdvrXThR65k8HqV4Fk4dxAYnUHH1+iGAI3EMYXKgBl/MKRbWebH7OQ==","signatures":[{"sig":"MEYCIQD8dE7YnEc8lmVR7XgLhgXlVjPPQGgXscFPaxzWskuq1AIhAKXH3iDkWzixjWT/VsbAg8zo++S4Y0lXmoZ5RTnJwY4H","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxAhGCRA9TVsSAnZWagAA2QMP/0PTZY/AuyIJkYGWrsnO\nbdLWQSP/lQ5gG4sfBmVrXShu1S2BVLsGSyVoFycbU7Swu59Uhbb2ztZZBubR\nA+4zsjWUeqkqNBw7SE0dRrLmIMSvrE3tDuk5Dvw1n8hAdrKpZtZEfyJ2XjSI\n1r9Wvm3VWieI0I6Ol2a9eVw3yO2w/CG6GApEKjIuElJKC0WHwumBCsF2Ezhb\nUR7JxnfQWZaKWXuP6qpN+QYL4b5GaSuMHyujYVqIhVyt6SR/UeYRufAuw0gs\n5fkBesGfs3QileVNS8REj1M3SG44tDLt2ljyjffieGz98uEYIajMh+4qaA/D\nJYk9u0G5U7Z3T33p8eshMSRXxE5hiSfsAsjVk8a3txh0BBg9patPUvUXYY/F\nXm27dH68pjbSy08Xj0vSqvYXXeCGZRc0kxiYaY2y5KLQhdTdlJ9sT5btUuoY\nDdkG6fFT2hEZvaxHtVX6Rc8YO10YRvRSUY7nPmnNykWXYwUViN1uMu5BAUoe\nD7v8BzL2ZgLCdPixyy4BMsawirgy4CvmOI7CgAzT5ywrynT2AUcri0jCI5En\n+aw7F13qHu5exR37ExVk/Qy+y/1VRIay+O3fd0pQqyi2EV9dp4urpaKkgKuY\n4xt5qeF9sK4lyYyFxErx5ABqqbtUPRSreLCTaVKZVF0pQ5lhxTQmB6j2oIAV\nHBUJ\r\n=bsyk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e15955a78560b1d84302aed7873fd14c334369ca","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.267"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.233_1623459910494_0.4585998898744501","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.234-renovate-internal-patch-c6bb94c67c5fef58c77e2181f2a1b639ac874f90":{"name":"@balena/jellyfish-sync","version":"6.0.234-renovate-internal-patch-c6bb94c67c5fef58c77e2181f2a1b639ac874f90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.234-renovate-internal-patch-c6bb94c67c5fef58c77e2181f2a1b639ac874f90","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"542f7f36a01bd095ebe5713d89ec758702b2dafe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.234-renovate-internal-patch-c6bb94c67c5fef58c77e2181f2a1b639ac874f90.tgz","fileCount":24,"integrity":"sha512-6k4UKSKkVo8JqZF0TXnfvkREv456cvS7N3w+IyiWYMXf+3FZkyTzdWP0FxqEk/uMjnYGy7vW7GOI18+XVP08/w==","signatures":[{"sig":"MEQCIEkTDbEhDzRkeKuvLskErbDCNZlAWWiGwMix/rINKKtzAiBodouSAJO9TdKRxwbNdc8MgCCWOYZCMIHjpFwFDYjmRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169880,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxA+VCRA9TVsSAnZWagAAlqoP/i0FGqC1dw2e2rSgkTWI\nHwMJ9tgVUDTalVjVvjQdsAKBh7SyYXjj1+Uxp/fUvrAkMzVJvFNgT0KfeyhR\nFn28Iza91PAe//q4ojqr6S/aUKLmWcosgeV1dk8WbJNnZBHK2tHwDZ0hOZv5\n8Ib+nRzsrPv7AexnGwZRYb0PiFQz0CzGnvNF6tKM1cVcYegMZeDjpxTJ98j+\ne/FrGwV/ohpjQIBst5A0bwcSDKl3plfH5Bql5AO2Rggp9T47TCkBEkvYvrKE\nwBx55rVymliCuS4hCSMbmHaICNlLN390opyqEeNI4rsdH7nCY5fQhW4LBstO\nY/8p1zJ1kFMAzxGm9qGwft47u9rtPY6v3FPy27fr0SjMoXVQzouMBW1Wnb3i\na234js/ytmG4vNk+BuhhD8Y3G2FG2/rNrWdksRz3fgq3G+4FxQGEHEwiHkTd\nnFqZyMw0KaZO3OhuBqzYiQNkxOlqqhsEmB3M8kbGbTnhLZ+9MHCk5VHuwDnj\njYgDyytnmGCM3677DLpoKI8oWS615auqFDRr1JIzOmIECtj6W/K6Bvi77xYC\nsg6iBSxhgrioXUkrlNn9bl4uIlJ9oeeXnvlFswk37OWYu8lfOoVXuUEiwRj9\nm526jk7Yigy8Jumk5GB0fooeMu/nQWxW/5LzXVzVF1U5McNVoy9NrrjyySmJ\nufkc\r\n=lRah\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c6bb94c67c5fef58c77e2181f2a1b639ac874f90","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.269"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.234-renovate-internal-patch-c6bb94c67c5fef58c77e2181f2a1b639ac874f90_1623461781118_0.2787304388090017","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.234":{"name":"@balena/jellyfish-sync","version":"6.0.234","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.234","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a8817adc1912bf286046603649e6e2d032346b4d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.234.tgz","fileCount":24,"integrity":"sha512-mAGmjdrQ8ZKc0QhNIW2GNFDZz5ySaGFYysBUeoLpcBUGTNWdoJfITYZ0LMG2GOlYjjFEtO/Lka+4mmuSj/Ipug==","signatures":[{"sig":"MEUCIFcPwHaQTZuvRm7v+LyKmI1z3v9jXqhFCA3YKVNNO044AiEAkVy0AWZY5frq4Ajwf4UDJVL9sfVODNxS41jEiSez6gQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169815,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxBBzCRA9TVsSAnZWagAAzs4P/2L3Os9XFn+GCMzsVreA\nvR2jElm8YiPjptbvGGzclDqiAmMZAWh7TRRsve3zjoYh23s21MWAEBeYihTW\nhyIXrPi4KHqQcc4kqBkHz8QHgIoBZGz/TkY0xi8cqAg9Z9PUNWmpLemU5Dkp\n629/re0iGa1FaM5V8TyNSRyvrb9406eCIbLRYGTK7LE4hqjNG98/pWo2pH8D\nAz9wvIKXVACJQDXQkJfIP/mydzF+8oQ0EtW7anY1TwxHI2EP02vfZbdAACiQ\nQLx8MqH3HV8byvaHHbNlrs6d9V8/NO5ARYBb9ddqPrOb+IXn+Upu2ZK2P8L5\nRVv4GUHwWshDKKzG5DJ0GVIcRFzA7punf/7P6wp7rXml5zxxIXEg+9Y3fy3/\nbtekM4LDrYWplkHzDW6p8W9j493ezgoPp3227G3ym9YeP1W/PX2+F0RDZL0W\nTgsdqJfoAVixI3UmZaGmrHjt7sE8DFglwUICQs0GPH59aSfOB6NdVrqrKjgj\nVo6cN33hcjtA0S72ljlFtGVp62VppgZHxmRgV3abPNowmywD+gcFF91Lqf+S\nPptXWewojqZDtZu5Y/c2O8hl1prcoEux3lGd2kgAsp3MwHjdOvbE7VvaTsP4\nPpabePIzt8b6uZAibWkEViKygw/KUaCqhviqTVH48o+uZ3K86rrM7vJl3A2y\nHmII\r\n=GyvC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a6d52f783382cefa9ee0dd8beeb507fb12f020b9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.269"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.234_1623462002773_0.602351114669581","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.235-renovate-internal-patch-49ff90b0781d936af6bbeac1a2c6ede78b6bfde3":{"name":"@balena/jellyfish-sync","version":"6.0.235-renovate-internal-patch-49ff90b0781d936af6bbeac1a2c6ede78b6bfde3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.235-renovate-internal-patch-49ff90b0781d936af6bbeac1a2c6ede78b6bfde3","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"613f834aa3e302bce6339b97778e6d1f1fadb31a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.235-renovate-internal-patch-49ff90b0781d936af6bbeac1a2c6ede78b6bfde3.tgz","fileCount":24,"integrity":"sha512-6+bNfjJz5JOT0YUVl/qh0UlaKAh/b3ydLpYpf0KbawWAmxKbt61VcXduav6QqS75y+68BJSlT/1GWgmqDsVxBw==","signatures":[{"sig":"MEUCIQDMemg+oqaRs5asFxbqdOYcdJbYlKVE+q2yJ0F+5tiWAAIgKXf21Ezv09yG4qQZ1jevcUbtO1qmHiS4Zpu7OsqpB7U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169982,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxDAFCRA9TVsSAnZWagAA8HgP/AhIzYVTazsmVpwrLiiU\n4D6P1bNyLHKiBDwZbHWycpgNOwlyCeK8QunpOODjCFuJo75fO7A0FxEpevMC\nPPGJurJAbwtY1cbKKojpQst8E0S8Dq6FyBiDVETtS4rnwFQx9qG/Oq+njr1c\nG0dK+aXB4HqNjCqCmSAAtrvlkQ72nNY4IcunOvVkBR/dSIWgj1UrotGlTBQi\npgHqALsnIEAsKpCaNNsZEuLB2Ai88Qrcca0dBExmtq0EuDHxQ4IRYRCXtt3Y\npmRbAt+DBd93cTAgf2zyiX5PX+JWPssVdR6Ca1Yop9svwUzCR8t5oxILIdSv\nPloOCsg9U8akew8d0nuPI22dxTqly3m9FuGTMbgJvCmKfqi+4E9wA0yOeKT9\nxpcBu5UT9aSgvy6Hm8Y90a3R07ofXG7tKL4LHJ0P52qKhP4ZreNm/50yDxK4\nh4zNRCjzLD3u0573SAVDGZCvClDb+uIAeoy/7i6cQLkoGaQG/M359LyORXfg\n9LwU004Z+aMR93LcXMzu7Hv+YSyGncJdo2Kseb07TGa3N9czqJUUuLN0EOic\nTzgbjpAMCbJTds4OPMDWaxdK37lNTozK2u6KyAq218KeLfiq+d8EKMuLruiK\nB/DZf6w3TsjAeYW747rGB+0WEjnRmE8c83mvQjAOzXioXNDCM3OHq7NIkjzj\nOXlN\r\n=BSdg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"49ff90b0781d936af6bbeac1a2c6ede78b6bfde3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.269"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.235-renovate-internal-patch-49ff90b0781d936af6bbeac1a2c6ede78b6bfde3_1623470085430_0.517276184367504","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.235":{"name":"@balena/jellyfish-sync","version":"6.0.235","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.235","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"275e1d013dae41de481e91b9fe542c642947fb5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.235.tgz","fileCount":24,"integrity":"sha512-BXe7DxmYDtPMDH+pIEXOKUXoiaRjM6qpBTCdJBHMfjxo//iuE3MIiRB9rdqEodOuXGb5OIRrDybSXRqi/Xq0pw==","signatures":[{"sig":"MEYCIQCsTy6/QILJ4hKLcY8gNqvGDIqYym3zc/+o2yMX2KbwsgIhAPpZaOSt4C4xe1mnf5bPbtfe/5Kuif9B1cUIuSknKOWv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":169917,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxDDPCRA9TVsSAnZWagAAlRgP/0xE+9uE3nYqGWl9NvSr\nLJI7iwGBfFwG3LlCGgD66jfp0IzdNmA6AbyxysqcuIMqHVlcbWmrOPdDfHEJ\nA4I9As+/Pqf2rc1Mn9larS69qen4Bh4c8sNierWdk6D+hshcKVo3+A0F9Siw\nu4ku0jcQo1wFwvIY0ugzHG1JjoN9vGo8wbRYfKE3k3ElFe8j0Jxfvw0IQxhb\nl5ySUTO1Ri6t6qPPOTEvGTGvVx8bBBUAUsuFV0mPnCf4jTvPAYkbFAVbboKM\nA9fAw7NmWYhBZPeDpocJ2kRhgIDa+W9lqCTX3cXGernY3A5pFjMcBNazegB3\nQXL/T6RiSMOZCajkzYikXVus7nRJo1kX7qKN2uRUUU5LljY67HWlKvpAS1lQ\nWFKVxZl1jSSGazKnRJw+oIDC/zA2EOAugNa034gj79f5WYRrSq2VdPdcvS7H\nw4ug4z6PTeSQb1pPCGz5jHSuUjiag/COd8w6tuLbop8ucAiPcJ8qwAfo6ziN\nkeQznNY0icw0b1LvPT3WYyVG2vkG+HBTtemshfpRgiGYlqhM+8g9bI1SNtbZ\nQorZ5rIHq36SFmwmfxqaLMJNq5haC3AfLWKFDO4i3ihUGatxLUokt0IBho5t\nvPNtOpbB3vgYeMIMPK69WFfs6HjygeEPHyDzrs5sgR+UD13zdsbh4klf0+Q3\nNmEs\r\n=d9/L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"43532d8cf3b95aa9d236b3d1e793a8602b3f676b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.269"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.235_1623470287709_0.7900883500337033","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.236-renovate-internal-patch-69262e0d612c4466cffd452ff2bdc75fe4961bd2":{"name":"@balena/jellyfish-sync","version":"6.0.236-renovate-internal-patch-69262e0d612c4466cffd452ff2bdc75fe4961bd2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.236-renovate-internal-patch-69262e0d612c4466cffd452ff2bdc75fe4961bd2","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f38912d8aab3c374f6b2619e6c9e9e5ac97608ce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.236-renovate-internal-patch-69262e0d612c4466cffd452ff2bdc75fe4961bd2.tgz","fileCount":24,"integrity":"sha512-BwWdEwBhk3OAfDLuQEHsxtDgYnyd4vRRShld57EwIzya8ZD5s/KIIYHIBf2KbLgAjvEGk7RecRICgcQ6sXuNqw==","signatures":[{"sig":"MEQCIBxpgAN07VGuT7QU4ei3psAGLLQyPPTPoj1vPThYAdl+AiB6tg7BE/rXG65bhWh9ly09ZmUEW37UMXa24ZWtze1Cdg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxHlhCRA9TVsSAnZWagAAej8P/1omnvlBH55tvf1lI0j2\nOVOZcBwyxfrZ3dDcKHCLd274Jlp2QEayXY+Ttd/Iyc6KiOW5dtjE81y4hDfX\nVEXuJ6ZLeu+P73Lr3rcDB/W2qXt2JU7bKtyhilyjqyMMbAJB1IxyX2iNQXQ6\nhk4y/wobMxZ4Ktx0IkUr1RcrvG5cWxYnBs3lPKJTGl9Jz9l+mXPhaAVnIbd4\nPhmZObds1BpY+Ra4THD5Q55GRqPHFP22OMmU6z9VjyCTOIUaOfTYJQbGkP76\nINHo/0GDL6CMSL3npxTcQde+4R0XAW+jEtQ6XGhaE8cN1Ww/ko6lofgFidyF\nhXbCHiIkrzi3BrPQtxNZwWChbY7ahNVPm0k6CUCzwnmMYAuuJit8Azgh/7a0\nv+6vYU+/s5ZrMPk/M9BkIBHA9WCeR6H5Aef1OBnAfJf8hjtpYPvM8so8FZ+o\nekhdBEmahvp5VCe6SR7ON9sGj4l0h9v0M6FN5rsduKpIiTUGqJj+/anm84Yu\nPgMplOAV7nUWpXQyc+Wpg2slh7rQIBPWShbFCPMil9hcVJEikd7stqMsEPc+\nbTARJ7SVidG3yO0J7iYeqPEzMRK+WAoPUDVMnOvSsYcoBRIbysm5aBzZjH0j\nGA4OZBBI86wBRMoaK3rXMzSE4PkfCiuaOQR6nNqG2F13eW/ZkWy7PcrSA34S\nEC89\r\n=b3nD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"69262e0d612c4466cffd452ff2bdc75fe4961bd2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.270"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.236-renovate-internal-patch-69262e0d612c4466cffd452ff2bdc75fe4961bd2_1623488865508_0.14423889807931345","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.236":{"name":"@balena/jellyfish-sync","version":"6.0.236","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.236","maintainers":[{"name":"nucleardreamer","email":"nucleardreamer@gmail.com"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aad4b643fb9c2eac09620b059dc223f4e092ffe0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.236.tgz","fileCount":24,"integrity":"sha512-G3rkOVLu+qUYXDuEJaKPExOWrkPC55PN8f35aOKnhwYm4eVDeUkJYFzbb/4iJUfwXrcSGX10v5RZoH8HtQSCEw==","signatures":[{"sig":"MEUCIBgWrJ40qvJCfdGFpuyS+336XH/mSl3/UH0zXCTeIy1EAiEA3DJk4hzDKtG7oXFxEI84ZW6yxaoR/getrxC+iusEZxg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170023,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgxHosCRA9TVsSAnZWagAAYRwQAI46w0NxTfHGbw1zH/f6\n6bKLEXiRuHQjpEvfEwWWj8chHeSQSJ9pkyB8+ALgTMNT/qj5VQHAE4LPN6e0\nQVPG+aFyPljGtI+u8jeKz0I4yF0dw/W5jsNorgjMZwVdmVWSgkvCji1WrPUu\ngylWyZR6P//pjyu0R1DbjBA0v5jtYVKbs0sDXVNNbalBIfOPZdaAMGs/e1SC\n1u6AdMdrghl6zpb0c1+82k2rHpM1ZNz8Ma0gv6aZgadHXpRIeLE+powZOt2e\nSk57YW2NGydtSpDYWhO3CPJbQ1uDVRwDe8CDc2ws5keq2nxBh9RcGkuoBopk\nkRZ2mBOl4QxopsRGKErnMIKnEENhg7CUXGZl7lei3jdufLj0SAUaBzoknaVI\nPeVAMriA8ARQ5zyST9uyTM52rYfXJbI7YH/1cGvuhRTbjNIjsCGnC5AxxVHp\n8OOeJPEUSEm9m2cCN52EOG0mAbD2Yvqx7UsjOG4/18XJ4bleMQ9T+v1qtB1D\nq2XOvYLL7iXq7WQew2qtrglnTpYGycXaIBXU4L5h/pHgYsd7mJAHCVLO3ZJh\nIGswaZmA1uyNR9bDMjXDlvYYiusir3JqzG5yjqK+1ZGz7izR7BYwGNOwoO9F\n8/NqnJ/qriTqGQkMFfeCnIn3fIuIVsvNUSzrZ1YmqCn2OOiLhoAm76BrBS3T\n217J\r\n=C0Tj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"40d92df070d312a6cde8f23a03310b56a88ecd01","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.46","@balena/jellyfish-logger":"3.0.14","@balena/jellyfish-metrics":"^1.0.270"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.236_1623489068463_0.2957017061905025","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.237-renovate-internal-patch-26bf894ec699353960e0a75bedbd97932d17c9fa":{"name":"@balena/jellyfish-sync","version":"6.0.237-renovate-internal-patch-26bf894ec699353960e0a75bedbd97932d17c9fa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.237-renovate-internal-patch-26bf894ec699353960e0a75bedbd97932d17c9fa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7c9d3c4a185510ff209ce638fd6a2cd9a979a719","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.237-renovate-internal-patch-26bf894ec699353960e0a75bedbd97932d17c9fa.tgz","fileCount":24,"integrity":"sha512-Onn/5E884Rh02OW/SgOeNcbn2AGpayXHyEPgCziiunYjzJwqAOIZp2iFjva0dkGrnRjuywkhcXCcqqjIWecsyg==","signatures":[{"sig":"MEUCIQDQKc4ZiZ8bEdyNLFhDUpD3hPhb/aw7VQ9iJL/2SavywQIgMWCMA0rF9ElURIXp2356qHIjzYuLT/bn58P4TBcHCDU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx/rvCRA9TVsSAnZWagAAOfwP/iLz1DTToAaGO6uCEzPs\nxee4e20tAsgCRIXn9Egj0BR0Fhp7yKexdHPH1aQEyICyvePvycfRszyNfDWY\nz2XW9slusrt8H/jfDR1gLdaSrK5TKUKcGMJFMHJe3biTtuYHRDFwdV+mzv31\nL4AOppj4Fc+FTyXWXUkO5YaUmC21CEFiqvi9amYjiEpKCQBp5/a12Wt4GAeL\nB4O18uNGtFsILJgdU4LrrfLNmtZkU8NDWLgJp32kMDzJbfZBig9KxTXPJnU1\nb8cRbXSq7izjVFBweBkDxTv2/wm1EcxYq9RkmKUcZ2Qi+ceD8RQKDf6bq6yy\n/9wIuS0+kHHe57EtgAR/NStKJ6wYHwXGuxDZrLN31o+FDjW/6RcTu+ow0aY6\nA2Io+RJ19VEMtHsS0O1cvJo0R/m0ACsgYE+b2gpf0l7oKFxLJ57pVdPahpq7\noZ7q3RGN56P0UbrkThzjmhJXFn9bqPRr/CM1Y4WG8u541mPsI0IGG2+ugxlA\n0piFg/g65ozpn++6WwT8BlvYT7z71I/FEbnVv0L/wdoEdjlQLAZ2lkpxuMqM\nCnHtXmF6z9yyl2WLO6NsJJyEuBDU2JnBSPI/9BrkGv8Wu3jA0gokh3t8ilXS\nPd7gCghXUIAuzkrNeWM93Ut4LsHf6e76+57o6Y3EqfP8Hwim3yP5alBfF1l4\nT8qp\r\n=bVMU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"26bf894ec699353960e0a75bedbd97932d17c9fa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.15","@balena/jellyfish-metrics":"^1.0.271"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.237-renovate-internal-patch-26bf894ec699353960e0a75bedbd97932d17c9fa_1623718639347_0.3294059633226143","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.237":{"name":"@balena/jellyfish-sync","version":"6.0.237","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.237","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4cab29dfe9bbf8b32f2bb2dd668b60e3a9ea85bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.237.tgz","fileCount":24,"integrity":"sha512-YyDQT1Pm/MX4O5jEEoQ9DFGgifYusZrbstsf0V9Gv5iP0HeOf4i4IWt1G3iRWAHJpLMyKU1xMigI4AXaGI3oTQ==","signatures":[{"sig":"MEQCICzoDSojgFI1SaBevO5/zhLCdCUaUE0LSYTsyMcVAl+uAiBhi0smF0ENL0yO3GVTVLNG/y9bgnFFx/Lpq89KS5FPPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx/vgCRA9TVsSAnZWagAAnsAP/0rrQbfdwv3+eF98uGVR\nMGKyU+hWq5CGphfhyfUJEPWcQ5MC9wJcCJYmpouQSf0QAy1wtR5a9HvKWHm8\n09qaNC2iOzkhcH3WL9s7Z5P6qUt4xlBVGRuyog0ewtygR53+FXgiuE4xwVoh\np2voyhYAVW7MN7yXdsGiq/zKSslZQYGuJgb0sQkKhhXYiUVOVZOLJt495IhK\nx5q779TqlnzwI4gbVeSqb70GTm7mEMKLtH/HwAuY2XtQpnfVKRD7DXQl43H6\nTQWKrLjBHPH8RrmtHY1UP0tLV/FCsrOuF0bjw3DfD4+uywJaNMaC5dtHDanB\nEuX2QoM3qhZHP8iX2JzYL7Nx+SUf+5cJiSHyFEuxVGOmjLEg6T6ZYANmU7fi\n36I5y0fjeHYWwzdsKEWLQA9wSMlW/myISkdh7lbHoT2N8V23NfRmH07RHfRF\nPNZ+wOddFfwJ6af5/NcB9Xc9utUQKrthjW9XSu1e5Urv4f3Mc/ZVMNICOeGx\nMZWlagX8w7UffoXYu6aVBozuwdqWgSa1GQhyFwphukHb8EWzmxTnvMTA6Lvr\nGIzSdIlq+ocGQl6kxuYDZzRh3edmdD2EWEn1UrED2i8n+taALDNrIir4JAXx\nGUogBYgDLm56JS78mqEUA4yqiyDCOQG/mY6AHHttcVlvJkYPe/zA25DCo/Y+\n2nDx\r\n=730C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a89f7f90e9b31330563633e8d62ffd1c7109cf2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.15","@balena/jellyfish-metrics":"^1.0.271"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.237_1623718880086_0.4347804463768148","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.238-renovate-internal-patch-3c62559ca3ca485b521b57015ac53149f783092b":{"name":"@balena/jellyfish-sync","version":"6.0.238-renovate-internal-patch-3c62559ca3ca485b521b57015ac53149f783092b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.238-renovate-internal-patch-3c62559ca3ca485b521b57015ac53149f783092b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"42f3888e173dcbedf8f9071811296d4dd75f8242","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.238-renovate-internal-patch-3c62559ca3ca485b521b57015ac53149f783092b.tgz","fileCount":24,"integrity":"sha512-LX+Bj6x4eXWQnCeyuET6wTDDvbVUOSai9XaZfpTsEy2usmVnJgJKW8EHG7QcQD1oowRgI6ndfP6c5+qCPNu34w==","signatures":[{"sig":"MEUCIFkvr6e8zS6iFK+TKDqPBcjcnQuH0rs69RSZmc1h52JmAiEA6F0KD5T1+nA6omxMDtYEIM+eizzKgEIXTiB71/G6UoA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170264,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx/zoCRA9TVsSAnZWagAAf1wP/3F88XhtfAvBbAgDBJfJ\niDxg0Y6/OnBPTzfs89NwlVxdc3msxpHoLQcOyPunrgqTfeN3Ba/rsO2wS96R\ne/2kTJhQ1GOQUTmVG4k2HLMnU0Omhycw1X2WCq0Bvls2KNwJKkBG6ZPc7mUV\nz7kS4VOKkwbMLal+zwgzP5tUHnHAYLn1XGyKXZ0RhOXEjbYiySb/2Pxx4HXh\nojO9IK53kBCHwsicwlTeokF/hu+skIUQFJJak14BqlA2JjchIeRcQHC8uOaI\nD9Ef+ukKo0qPaqVW+dOG/n9Lx3S+hUJJGq9WI/ZWCYp6iLb06tBDkJutvqVz\nFSM+bExO0flDaDkYSKnBlwPQkpPYoiiWowI6ILaKfVBLFvbMFJ+hy2oHO5E7\n6xeVVwZcRE8FCmX0WSQoMrP50Fc0dW/prGYzlewhx7qPUxxOMcs21eZsgzj9\n3ciF++Fxt9mFaPx8r4DuAZptUEiyFtIcQ4H43Klavk2Wypk88ypb9USN7MTa\n/ZsFhDmZtvFqeUWNN9pnhqfWCLqKEx4kWu4tY9ffbMFEp5eFNtIhgatdIJ0E\ns1MjsWOC+O2CSL7IUkjG540dfMT0tZfa4xd55xpxc4X6dViHZX7Sm10eKgRu\nIlnElaP/xrDaU74Lu2DGXzESe8RwtfMzUFV6C/osJrjrXvgtXo9kkqH2M7JY\ncXIX\r\n=5lNS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3c62559ca3ca485b521b57015ac53149f783092b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.16","@balena/jellyfish-metrics":"^1.0.271"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.238-renovate-internal-patch-3c62559ca3ca485b521b57015ac53149f783092b_1623719144069_0.20602347536429688","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.238-repo-sync-jellyfish-config-default-942803c20f39a6ed96be72d65b664dcb6964ae85":{"name":"@balena/jellyfish-sync","version":"6.0.238-repo-sync-jellyfish-config-default-942803c20f39a6ed96be72d65b664dcb6964ae85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.238-repo-sync-jellyfish-config-default-942803c20f39a6ed96be72d65b664dcb6964ae85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89feb3ad63a9c303566dece1d9dc9a9cd1da2814","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.238-repo-sync-jellyfish-config-default-942803c20f39a6ed96be72d65b664dcb6964ae85.tgz","fileCount":24,"integrity":"sha512-Vdk7XneAd6CxVaJnlTT20LJONIgco9uJcFzpBgrIHTV6Lvyt6/TsZ/A6Iu9f7dVS1ZVFyW7GSvbOHPO/TWyCUw==","signatures":[{"sig":"MEUCIQC+hp53cHvitGGmVPoT7vF0nZ8ZFvXb3POhtIGUNh6wlAIgR7kMjkMNPsaodzgBSPT8ascVM9R7t7bWm2f1O8Nx/2I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170310,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx/3PCRA9TVsSAnZWagAAjYAP/0++WI2zQXKDbVYWRlsi\n/1jMbyAVMFJ86Ty2BDQwXbfwcI1GBIiAPUvzZEkktMNpD8pn+pDPYhmTB5yj\n8aLk2ea/2+czE8aXqs073ZZiKucjs7eOw/u77OSrrLdxDLNpYE+riObPgOIZ\nSn+jbTDHx+09sP/Pwpj/n3rq4jFa1UkxFFMOivIJfZfuUOcZsKBOQ1wUEGbg\nh2z4//3MUW20Mo/BVEcXtws3lMNs36SjnigXRAn5gTX9bDr1GgkqLlOk2VVM\nCwiWOya+iT6HB9d1UDJCdG40a/0so3qC8xNHD4EWBPH5nk5uQylSvgYM1eAZ\nCRRalAl013mJcebq4fvaGbUSR5EVAYZ8QfmlMzAAV5mmghyZxDre/ryoO5O+\nE7oFzDrl4CZXfn9bv8Gc6O4RjJu9LB+OswGn0X4RJ49Hiwfst0uBiw2Xot+V\nk4fIbiHDccponpRVjDXyofgP2792+ikCUH1e1CEyXD29QX/IGdL4oWtJWF4D\nMF4po05gsGZqn2NtUD8YOqhUQ0dftbusKbZGdlBpi61yScX9IJ9N7wRVaTcj\nUX5gmMOVhxDLWV96/BIigo2LT7q+GIuvBkDBD+rwORd6Wx89yqC2Q8pjK4hL\nvExYJZ1s9deYToSFI0j06W8E6f8mflPIsjPq86NQmxyzVn3FCIvw9BlprS29\n4Vsq\r\n=ppP/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"942803c20f39a6ed96be72d65b664dcb6964ae85","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.15","@balena/jellyfish-metrics":"^1.0.271"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.238-repo-sync-jellyfish-config-default-942803c20f39a6ed96be72d65b664dcb6964ae85_1623719375806_0.01650555747346405","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.238":{"name":"@balena/jellyfish-sync","version":"6.0.238","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.238","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9369166aec0fbeda774124be5f6fc900ba761cf6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.238.tgz","fileCount":24,"integrity":"sha512-RY3WaNrNGG6kJ7bzDfDSRYJfKWKogxcU5oV9im30JYYbmpVrzwozoueV3BT3FT4F0bXAwy3luXdrLs44+PaqMQ==","signatures":[{"sig":"MEUCIQCwYEXPlnZe/cAEMT+hdKUHUSLTFDsSqLa0dJufwmrQ0AIgZMNZ0/8b0NLVaPjF7gdUUOzMa2WiGTcmarxgQs4yAo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170234,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx/67CRA9TVsSAnZWagAA7EIP+wUx7NdfFO9OuVjErGjU\nUMk9oF5gZrMbi6hUxqhcMGb6Thi0SpH45rXA7IyYQwVGh7nOqy82Ju33aJul\nui00bMKCzoLhApm3MQQk1a+6IB6wez10Kor8CcobHKq864U53WF19I3j4ZO0\naY2CpogBWQtLinzaISWeyX8JAbL/5dDbFRrGlx5HENX9NvXoIH/QKod5I29l\njnr7ESTwutatslZtVkoYoGnQNi4OMUKo4Hq0Po9SKkXNwDj33QPHiDRRKWy/\nufft28EgYzaGcp5mTm0FOrQovfhXFlVfhsX9gaLnoF+poqBwTHFG24z5Ds91\ntu1elKPyV1rwwH17/0cU6gNYCEv9A/ihdL5HX5hQnpiTSc9IQbd7CpmVoHZa\nxZdZGnPRlytTSMPi2J5rDG5mi+ss1QyKB+SFFV0ufOIOrrKmfFaMCJD6SjRJ\nm2LdHpTNs1JSy4DcARzvQSLRDwxpbTcHjonMXi5PZFMy2O/5AXiS31Oh0LD6\nKgMqGgoozkW/i0b032Gws5dG6yZiEu3XjcAkiEfX2+VoM9EmhLYXPsg5ghDo\n8jyvmFN1a///ZW0PXZKnCr9cuDImsY/IA7CFJinRv/gssxuqOX7p8wCaA6xI\nKp/fBDcgNMtoog55D22Cw13py7A3qoRLVhscK56sAcuXh4xEN3fvyzcrPW1j\nfL84\r\n=hFgl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c9bb4c825cde2ec4a0e55506d2bb396ffe0476a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.15","@balena/jellyfish-metrics":"^1.0.271"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.238_1623719611081_0.0801204729724021","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.239-renovate-internal-patch-0378fb7b4a7dafabb9808b1711c215b7b28e041a":{"name":"@balena/jellyfish-sync","version":"6.0.239-renovate-internal-patch-0378fb7b4a7dafabb9808b1711c215b7b28e041a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.239-renovate-internal-patch-0378fb7b4a7dafabb9808b1711c215b7b28e041a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2a8c8894ca9070cd9c9ed4f77f85a855655a674","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.239-renovate-internal-patch-0378fb7b4a7dafabb9808b1711c215b7b28e041a.tgz","fileCount":24,"integrity":"sha512-UecF9oe3SXRge/myJnbmgSs/Kx2S5Ka/CmBzzC2wzorDPcttvwjZC5+IwceVoq1fWzIzkQfLrscSLDI5HBVBvQ==","signatures":[{"sig":"MEQCIFzn3xHm+nGAzZCyhTJcRSEjVJe4xjTcW0LvNX6NPNx8AiBzGFQKK1A99pePpY2iIMTL8dm+72NmQpKjE+mAlwd36A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170371,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgx//9CRA9TVsSAnZWagAA5noP/2NDIErsdNTo8Mp9Vz94\nSujA9nYC1Z5kqsioz3WTVYXtavajg0xCzNwg4PLpPSK30WxZGjifU/bPZ40j\nkltjw1iS5fJw+CTziP2DLqfjIcoE/GgOn4TcDgaN7ntKnJBb48GkXmIk+ce1\nD68in5FrnbqgvYyyi1+cW5fSL883xWT/lFpc/gHvG0n0VlwH4rBPqYb/SkNx\npsCzxpDRQki3Ed9w0Pi7sj50l8vPgaxPsDjSy6X77IVMraCUgtgRBcJPYzzB\nuEMiB+zrVeXczGGvxGWwSy9ghKI9XigL0dRyda/U2qRpuYAOGvjE3sV3t8eN\nRlfuDdX4z3Wn5v709Av+f4hB/rIH+I2iubK+k9QftmmNNUWWmb1QfyF3zRDi\nEOBGzVG8J1lD0wbS8WwP4S8MAcswybMq5iJBlX7HeV7BkCOKF/JXZ4HGbTC+\nESkEHzh0Tx8pRQZI7e1LpA7Y6IKmsDk+vRZsW5lbBoPkODEmR7V77+FEsSdt\nfrUAspV/rIxynO2PZ6BJQ4LkelLPoV7u0ysTP+jlo0bV91IVCc+vej7tX1lL\nRz0cKY/i7YglqltPtY5PuFbyWfa9g3auhrLFQ79Ql9upt6S1QYEwqguRfS9Z\nKAoiclTWy1cnJsh8oNOxtz5lsbd/or7iNYlnOrvvUNa5LZIDG1FEO6H3IYi9\nYoEP\r\n=p9VM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0378fb7b4a7dafabb9808b1711c215b7b28e041a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.16","@balena/jellyfish-metrics":"^1.0.272"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.239-renovate-internal-patch-0378fb7b4a7dafabb9808b1711c215b7b28e041a_1623719932949_0.7261932645593907","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.239":{"name":"@balena/jellyfish-sync","version":"6.0.239","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.239","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d4c80a6cfb856169b5ffe5103c23fb50d40f57d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.239.tgz","fileCount":24,"integrity":"sha512-YcRtd41VmpOIgGCLiVEkUdNPoGhz/mhij3CtfynlLSj/3RR9TPW/CPvfvh7Pq3uXbn46U9ogJfIc1RK1od19wg==","signatures":[{"sig":"MEYCIQDssyljiLwyNi4Xk3uBMPkG2AHjJpteTmxbfwWf/B0DSgIhAKOMxSFGvNAvkTgfF5n8RD3e6DN/x8g1LDL0Ap/p8A3O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyAEmCRA9TVsSAnZWagAA2UsP/2oYcT3U0rYJwvsPtt0g\nAenkbXUH3f/7aL7dTsh4nB6c3iFAe83ThEBb5RcIxJbpTsnvonTt2Q+aoNV7\nAA6b5KyUyDUjF+L8blOmXzCGgd4qioIyLEUbHspGvvybjRjtvZrEyCKVGz1G\nuSV4UHTrCpNIt3UfV2SvEQ1zf+wA3bJc/XPb6VbEpzxH7UqAxpMdEs9/hSu6\n9IdKJNQzWGZsdms+oPSsOs+yhKSLWT4vYlQaug8zr/waXcMl/9rI//jeYpmd\n+VgWhyibM+2hxqZt0iD0wiuMbx7WTFAKUi7xQxhgDuVg301LOg+hzjJSToJs\ngWaTfgvX8vKuZfU6nWNQ2yMqMVURN16OqOzneHmex7tZ3tpCJtxjtf3srbLQ\npmEV6RwO/5tl25aBjcC4H8E+Drif1AL+SD7XNFUETBcBMlBmGOHfGfIipVe7\nsxJ13R4zGFNPDuZVsYQWRkIs4PHSNr/kYupP16X+1Tj0NASEyXKb3NrRWGLj\nlzwS3RgV5pBLBa+hYRFSU9cJXeo/6v+ZeTlFKy5HIh85UVbNoYY4yJoHRUVS\nLNZX5C/BgKuXgQSsyUYsHHGaNOBZ28kgkWv7okA5bf65X+py3nde5PK61obL\n+RflIfpznVhlMquk/6NzL1lbvWybtq5ZGkabkYDaHnpNSwwLs+Ab9KTeKpZR\nmcj1\r\n=pNgN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c46fce008deca7e2ec5aab689791e72626882e06","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.47","@balena/jellyfish-logger":"3.0.16","@balena/jellyfish-metrics":"^1.0.272"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.239_1623720229969_0.03124069328909118","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.240-renovate-internal-patch-5e0a8ae3018c27389d73602f6e3cdf6f6614af71":{"name":"@balena/jellyfish-sync","version":"6.0.240-renovate-internal-patch-5e0a8ae3018c27389d73602f6e3cdf6f6614af71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.240-renovate-internal-patch-5e0a8ae3018c27389d73602f6e3cdf6f6614af71","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"728818da9f5a536c01f96731146d7b7ea3f81761","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.240-renovate-internal-patch-5e0a8ae3018c27389d73602f6e3cdf6f6614af71.tgz","fileCount":24,"integrity":"sha512-mllxXd78Y2WPa5ZgaPgX0Fxkt8bOKTG3AFMytAC4iWtCg6RjYh2nZFrsjiGt7/1lJJt9AVK/qIBvGCZ1VWz3nw==","signatures":[{"sig":"MEUCIQCD1SYzzSwGeX28PE7Rwx0qj8g0va15x6W6VKcAtvcuYwIgKNFwmADPNc4sErPCaINi6ESYn+ra1xuWQ6Gik9XZW/k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170443,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyEphCRA9TVsSAnZWagAAyOYP/i5ku1vvHjNePh81b0VA\nT2/ZMs6QqVk2+GEsnWwi3xI8+ygwunaw5F8GtXXmbnyxt5xIPMMpXLZG9Ser\nSOc6E8xGWDIBFjD2Y/2nrQpl0YEL4BEg7B1f2IOgksFzb2ujehOFG50e/smy\nOKvrNfSYsA0O6trjB7P5jHx4SPXfVuhhy6wkfjFnxzwiZvXhdi9vB9wMHfU0\nr67KqyQ6SeoRGJttL0VXk5bD5mvYcbm8HFDJ+rEj2EiAE5KjKyH9SVttwQiS\naktXxe8TIDMg+bFtjkwwY0vdj6KjCpQQ6OyVr2h2nszk0Ldk9BEcY0ZhlCZA\nIv3WGHkfNhCXIPb26G/BKp8+z7vs7thhdn3CiTU+9CyFARq9/HmLaefZBk2I\nQl5fx8afM7k0U1adsNFm8sxQV0IS91e+X1YU7T8EnodUIATkrS1KfuFKq63L\nozlPARiI83L0v1By5eV4HVZjfWsEimj6grFxNb3BWqOusvE6sgX9OA/cLXkG\nK+p5BdTsi6tqyDXn9WdaBc82v20qImXMdGOO1GuCTk/jwCmb6eSos+Su1mYi\nfTYqUiC1kNjtfZnvH53ZvdSoFL/96WBwD9+B8syCn7PN6degLWlpJHCHvQ2v\n2Q4tWgobi+US2+TjXHAdCse9XU5SMVUpuSGUgkQbRmOPBZTLMPouY5EaAeHI\noPOJ\r\n=j3tV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5e0a8ae3018c27389d73602f6e3cdf6f6614af71","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.48","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.274"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.240-renovate-internal-patch-5e0a8ae3018c27389d73602f6e3cdf6f6614af71_1623738977327_0.4997569239302586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.240":{"name":"@balena/jellyfish-sync","version":"6.0.240","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.240","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27c55c936f0c507d04d5d2ba54739e85921781f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.240.tgz","fileCount":24,"integrity":"sha512-EDXTFLDJIl6sPKRZykpuW6xRbPg+vkeexL6HfLVipjIJMgS/IWgH6yk9yCiVtDg0eZqiQBixxD3i2uD3w5LUbA==","signatures":[{"sig":"MEUCIHQzXNfy33QuXlk48wnMeJuYKx+fUT+DQGqALaQ87zQKAiEAko7DR9dvLFjagwrjHLPWrS0wjVZsageEVGZuZ4Oz5Y4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgyEtYCRA9TVsSAnZWagAADf0P/iqGBZa+6z0BcaOvGC76\nsUGnSuPV1mYN7g97NCy59+B9ZSYIuzKuBVHYVwwXnQKUxy5tjTHups4prOld\np4N6tFFF3mjWoPD6rN9+qE9WbzWywBQAUHdZk8HZZ5N96N3gMCkZJJWB+0cD\nzhgyxU5pys2/FtPC9KwNkI5qyX4cdrf23aTnvjWvPf1jCs4VgMdg61fd4huY\nDnCN58zQrbniY/jKgFls84T1ivI2k/cZhfN/ScxNxmQFiT0qKkxwuZkpjd7v\npLEs38DCRGLv7rVOdzttXqZEi8E6FeQcuFeRH/u1I1wowYKroEkfBnHImsBO\nuKIPS1jXy5ojEtoKgBxVq0+VOLwjR/rOhOLoApl+tMspfLABQJYRf5N7eEK8\nP77lo2moSNnFdVCQ0Pry/H5/w8mxkM5phtwgjsXpACrUK6ijKg/cmmf722Sg\nuTbt3y3cDJICD2S5T45gtXTlNMtC14pxKxHYpjn+PffvqKjcgV/vpYApxtND\n7eFq3/s7oZgLirsIpReSvi+PsdqE6lkW7iwPzyxTy0pWn8MoPQE5paCcvmnY\nbvgMyLm85eLkieJTRchSYY0+7SNQmhs+3+4raBdh7hchcd4bGeaFTmwmOk5T\nwLhAd1I25/2LnrYGH3ZEw1zgADQGMqAKnQGPampf+LW0wN2olBWczpkXSyxm\nR/ee\r\n=JjCf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6db3c2bae0729adb413190aca49c98834b401074","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.48","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.274"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.240_1623739224040_0.7564491950982688","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.241-renovate-internal-patch-ad65bef8211efa2b31c856740466e8668d7bae8f":{"name":"@balena/jellyfish-sync","version":"6.0.241-renovate-internal-patch-ad65bef8211efa2b31c856740466e8668d7bae8f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.241-renovate-internal-patch-ad65bef8211efa2b31c856740466e8668d7bae8f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e346702c74d585f0359cd3e5ac92108bd9d6c11f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.241-renovate-internal-patch-ad65bef8211efa2b31c856740466e8668d7bae8f.tgz","fileCount":24,"integrity":"sha512-WAFLM/DTgLCWNrRFcHfDad3QvzkfxCQjA/Ee0JXpS6obYEyFu7njiTPaiyVfwWQ9bR//XBeCqzyX12Ld+QjZmw==","signatures":[{"sig":"MEQCIFte53bpjuSYACh2zH28CVHAcsf2SHlnEHHPSX7hi/qoAiAudOdPwlXAdqBRVKsegB9s1OHmTCZOU4nrrqNORj1tbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170547,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzUBwCRA9TVsSAnZWagAAuIcP/Aoglnm2cGy13j2E1L/a\nyy1S/dQB5DJnvfBJFPI6saYe+jYBebsSTRO9EcTOMRFcE2ZuHAkyvmlEA39e\n+/NTPsmjCWVdlbrweJAonGHbX9aGr2AGgN/Mx57Us1MN9t8hiF/FV83xcm9b\nV1ypWUcVEKkPoz0ZvpoYctqbeK5S4folKB9GwLkwqiGu5/mPWYJLXHtu648U\nkI3ywEUTzXln8yWF43tNE0Df5+YMs8GAiyAA0MS3gVvNWcJuoTokCtfWWg2r\nB6KcMV5exACDU3nCBfllo2xicgk/1vcWkDwjih+3Pua1W02WtIqdJU0LYY0Q\nZt/Utjmiy4J9yXWIq2ElabriKUYETcpqaCjGx7bqBA5tfyDN+RpV/YedBENv\nzQESVxah3iToEFNjcRlSHzmB7y4izsw8WvBCHz4t+yZTEfSpNb/iVVOgsQQ+\nmfU6EssjwIn+LV6GbjNBLjo+FwvA3FTFDnHAZhwrmRhSGBzwI/sdaDVGO91k\n2jYc0fvhnuSisamlYX4VlhArzuZO0qOCLnXp6/+uyAAhZjwI/t7NI0iO0rut\n2S7H5gnSc2VTIuSQ7znV4T2a8QzVfUlhxYkw8FfUkV3Rk+efxn25MmuTs6BV\nBROto2twQNpheqcPzqC51EGo9grdTHldx2bYWjk/QKhKYLyQO/fsAM8jTYdH\nLbms\r\n=iTTt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ad65bef8211efa2b31c856740466e8668d7bae8f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.48","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.274"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.241-renovate-internal-patch-ad65bef8211efa2b31c856740466e8668d7bae8f_1624064111661_0.625158685477071","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.241":{"name":"@balena/jellyfish-sync","version":"6.0.241","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.241","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9b1d400d92a219e54dd9dc7130bb92e4b802e078","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.241.tgz","fileCount":24,"integrity":"sha512-pQtWFSOl0bggCS+Ek5xuzxlqMDGlPEaY0XGBLVFYTGHsdTNL7/nMuy4PWgelEIqgCIPM39tAuLjl4DUqDYTZlg==","signatures":[{"sig":"MEUCIE+5o+Ys1VKmTS018yGn0XAhyn+U+9gNNlQiWXGZ5OIJAiEA58V1EL4EAsMqRP1VOpO6Ult8O0dDL0hZZ0+SAeWmnVY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170482,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzUF4CRA9TVsSAnZWagAA4KcP/2qTHB6CuNQT7yXaAm58\n3hsq0tqOpe38IcuTEhhMrXUbprwdZrw2nQPOA51NYOfQq14UOObvWHy+ml53\njanD3/kUMMZxO7HrKGGEdcLLXN+FZYqMeZeVqDGDK+L+7Xgzy8RYoaANA5BJ\nZwUL2fAf73TYkn7WRQ0/apmGg9stWIoqLHatXZz8b+cbLBMljIib+f/IkVVp\nWbqDqknxkCSOt406hrcIAiTWHvQ2ct8SjWTOxOmxFqKaO1atrEelGQFriE5H\n8WkwUbICnYMgPf8r/hNx9yRSrC75e7hw++vFzjGw+s4noGVisUYRD421BvTp\nm8/dwHUc++lmK/XuXn97QDzxlFqlZIK017sYRn9xZQgzjmOl+jUcRvtjHPBU\n1mnPJN4WtHhzN7zBbWq3llRk9FS3TEw1DW0HFU/IzB3eg1TpBuZzJ/if/QML\nh4y0WfRDc0A0m31+mkrU4rM2G/GzDXdSMII/09zLWz2NnLr9MmxV7BiBGBfG\nLNIfUTvltw1cNiuHR1ns8k9pe5dNV4xCKperK8Do2TIjBkUzVe8LPSiUWSXv\nryo4cVwRhIqDDUcF55+QPc1/gb5JKxjMlwgTqMSnkL9P4Lmx47rNPUakDfiE\nrEMndjjo1bOSwBsAELYED5LqBQd35+rY1nDwKzNAjz8logYIU4RKCl4cmSvd\nv2q8\r\n=+i4W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3afcaed3696bed9fbd5daeafd95eadbd283d1cc4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.48","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.274"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.241_1624064376502_0.3666193706364813","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.242-renovate-internal-patch-372ff7fa7548174cb38a19cd8da369da142ce9ad":{"name":"@balena/jellyfish-sync","version":"6.0.242-renovate-internal-patch-372ff7fa7548174cb38a19cd8da369da142ce9ad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.242-renovate-internal-patch-372ff7fa7548174cb38a19cd8da369da142ce9ad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2a6e01578dde7bcbbede89956cb21c4d16c168c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.242-renovate-internal-patch-372ff7fa7548174cb38a19cd8da369da142ce9ad.tgz","fileCount":24,"integrity":"sha512-IINRX4B0UrgG6oV/Ril4QMQuq2jiZiNuSPbbjjJehXFjTywg74oCia3ybSJSRE+4dRfnO9WDkrQrRhtfGTIc6g==","signatures":[{"sig":"MEQCIGeZnv8m2O3m5vXXkFTZ3HDNygRUGAtoNMvW5bJbk6HLAiAVR6WcIt2s/7DUOSMH7UM47qlOoJsr4uWAzQaIWPaGDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170653,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzVyhCRA9TVsSAnZWagAAwKkQAJqgc6LaM/GgvsHdEW3L\ntn4nG5MJgcqR1ufNnEvK6sEFF0341W34GXwMIKVLjlM4hkhbZ1avMCMl7upu\nx9VLOuz5bf5rd0LcfPM4J/kWqJtFqhm6YBgsWRW7kSHf3URCvAOIel5vCBfv\n13/uUKMDFrHlxfu5rQo5DIwCPnbnqgoKlRpaIRz8CeYjsUFAs0/yWwFrqywd\ntHbPwWc7Hh6MPy+BxkkzLZyrq7pYaDS8WDSlDKHMMCVk3wsPTA1CCAQ+UElU\nXx9xvpeiHPEEpXRhy+/pDyzPGngyCmYCMtDcGw+7bUQS5KcbiXolxfyRqa9W\nPPS2lcM4c5EQlP4K/R2IUIja/v11nqvlb+gvg+VVyRUZdgO9G+gw8ROMHkLu\n+0hqjLSCX45D1AAEbJ01q7ZNDB/GQLiIrJtqB5uLJ3dE5TiS8v4wYLDJ5E/e\nT4uUguWFKX4GfK7zr65d0i73wCiZuAMghacLd6OCRIfBtLwc7TvXEwlGJ13R\nUT+eAH851oWaurd1eIiHKVZ021d1zM7oEXPZK9LU+RbYi47niE5n++ylNcTP\nDlVDZQomFxWuXbddoVZg99zPml5AbgN7hazOggDCZ7CJ4IIGe7PDCPo+eIWM\nWVixFPaCCC0ZsEBp+0QvnD6xier6nybpIRjfm8BbAY1Epq0Ytx505TtRtyRH\nlfD5\r\n=a+ir\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"372ff7fa7548174cb38a19cd8da369da142ce9ad","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.48","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.275"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.242-renovate-internal-patch-372ff7fa7548174cb38a19cd8da369da142ce9ad_1624071328638_0.5845072875542006","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.242":{"name":"@balena/jellyfish-sync","version":"6.0.242","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.242","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0409b65dd7d5dfc410cf6565a6ba8cbea84f91d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.242.tgz","fileCount":24,"integrity":"sha512-sEsGmVjBK8EpTaqO+DjAMww568rVhGaP5LX2YyWt/PAOV6wGKroIBV2+XC5w9kxOxF7XB/hVCgNxBSEG63C9eQ==","signatures":[{"sig":"MEUCIQCvvryl/MmEWS5ipNC5hr54o4IV3XkqzUSfOwbfkXOjQQIgGLNl1LyXOFG5vTyRgXixGtkoAf+g0Zd0jCpXU+Rg+Gs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzV18CRA9TVsSAnZWagAAm5AP/iQVyEdi3GgsdmpKSoOq\ndxkSF4dCaCHbSvxrgENs36ypSlxXLEtVB2/Bx6M0No4pS+6NE7jv4Ts5JxAw\nkRWO35qrHdzEulOH55WrqqRtphkE0rY93/jMzUXe0gt/6NcE0MU+jcZfSdLg\nwpxpXph56fkjWRSaAoQrHIypT5bhoD2etMSGMo2iVYEiVlTpTe9DeXvlattz\nXDcd8HBopbBgYVBujAcoAOXC0PlrbiX8Kkfbrd4UywewXpnNFp5tJDFK3QPG\nJrfa2yQYZ3S5/xidHn9NU9oZZZvn10ZURFju21/gBBrGiShD82grRws5l6/Y\nSX7FHwJ9LtJUmig/IP1I4iC7yIHWCoCB3aI1QpETZZTmX9ekdE2QRGUnEsLS\nFrMk3eYhACdL8IsRC+tG1vwIzorJkumzpw41qs0dY5vCwv7UmlBWZ0P1eBgG\nf+FPOoM0GNljH0frjsuTW55SXawA9mI4zYzEl838JZ1SgeXO3IHNDfDiG1wV\n/xYuNfatXrfwjI2b5vrLDIscdS5HT8zXoZwQK5uqjG/sDLFQxH1AlkM/dSJb\n+Ys/2ua3PYpehg7CO46KRbkBLOfVDt/XS/VKg8/DNtlyHfHd7nUKtgAGF3y6\nK6OKrzuCSPfs+5l33MLUSCayVWG3c+p3u+23kGpcNnc79H+S624i+3npez+3\nNECs\r\n=WLwM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"17f32e6b7b7f3c51a8737798006cc2cadf822bc2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.48","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.275"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.242_1624071548059_0.009934723436115123","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.243-renovate-internal-patch-d028585be9f9f3421c130061a4957b9172b4519e":{"name":"@balena/jellyfish-sync","version":"6.0.243-renovate-internal-patch-d028585be9f9f3421c130061a4957b9172b4519e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.243-renovate-internal-patch-d028585be9f9f3421c130061a4957b9172b4519e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b47dcf6e5f7551668dec44331659f052ceb92c29","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.243-renovate-internal-patch-d028585be9f9f3421c130061a4957b9172b4519e.tgz","fileCount":24,"integrity":"sha512-GBvhxIaMznMZ3oxft4uKC1BMieXqh/5lexaGhMw/JHwlDeWUBIJBq6n0Q/RnhUp9zcQk2AYYF6A1WO7DqvXSBw==","signatures":[{"sig":"MEUCIA7RpKLrY8PltN2mZYkA2u6MDyrrTpaijSIH23wwHGfeAiEA5sSQeX9IR7zFFrwajgTtgEw6EaRHRBm22vbI3PRDcVA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170757,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzbpxCRA9TVsSAnZWagAAmaoP/jkf0HZotBifkUtKk56y\nqsMJcVL7y2OBnGpBn5E39w9OMuxP4pbB/ic46IabLRdHdwvOar2HFt1a6QP9\n5JFm9D+4+RcQS6h7vK6KGLYhSWMBhOZT+uP8oNBWTGfIwjYjEfipRD0EwquF\nnpZE/o/Oq1WSCmgKAsIjtc68MuX5DEGDg47yN5h0YVrD4Y3e2xLl3YYLBHU2\ndQWFkJpGGCDEjb1Ey9npBJEqffvKeg7uFDarfXso7/JorNouW+3nAlJhLskI\nm4vYVxoi8n75AvDa/Up0HIZMKdUAgZK9MzU72ujnekH9dzMvGVWrJ3aS1Lg0\np3nJ0iAOOEvqx4iIBAh6doT3Ff3sQuumO3SwYjgfnl9anjeCC7PwCdXAumFv\n4qhA43BZjXmAc0eFC2NnW45/7m/yrjYHrJLnjRRGD7y+JdGghsphulYbXBN2\nwIla+o5HPO/O3GynpUf81atmI4vbT2qkAlTsfja3GG1BOrKbXmQiznPbW189\n2EI9Jny6zo4Cqvm0PTvavIJqZL56e5mKtRfMVvs5XKTN16ChfuQIU54xTLUJ\n/CFyD+7iaDee9IGeErFBdNdxgWPy82vFtg1b01ep0chABlt/A3mhKPvKdn2L\nqTtIVhtsj4BuYSZ4VspZlKuKzpC3IOFuwf4epB4WI0z0xjEi9h4wHl0XmHL9\nsVt8\r\n=pUH7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d028585be9f9f3421c130061a4957b9172b4519e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.275"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.243-renovate-internal-patch-d028585be9f9f3421c130061a4957b9172b4519e_1624095344424_0.7675601716731506","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.243":{"name":"@balena/jellyfish-sync","version":"6.0.243","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.243","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"257e3d154989c5aa407df26173152a4578946e84","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.243.tgz","fileCount":24,"integrity":"sha512-Gc/o+ItewVJ83btuULKHFfXutOKnUCPv4g5dhagikGYxu0j0LLPp7FAdlJ2vbQkMf8KHm4RfnXvMXzBLPdyaCg==","signatures":[{"sig":"MEUCIQCAOO31k2qFmUNtqDFQ4zUJXmR80+KpdCk7TRJwCH9pxAIgfhEn1+1ja4lBduFkApzyhfVrNCHG5ZKqp7j8LsuhTPQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzbtKCRA9TVsSAnZWagAASLMP/07Wfvf7XH1DvOT9oYoe\nX9s161a7XShIMeNXBbBY0U0+mmZJO9nmP18XmmBth3i3D0ftMc2PZejwWl5s\nLFM75Rek/HK3PaJJFsXxRm2QbHJ4apTYUfxdDxQ75EDrQBz1vEoM0VX5KxB7\ndB83EdwRYPk2yqxWSU06BniLROx96MsT13z6MwsQm1W3j9k0x5GyWXDfr9bm\nlwPBIeKO57M0k9ojW0zQVlXHuBqJnBS0EQLDv7LYbgZVWFjD/CMtklMW0Nks\n3oaPVyZxuE2vyXGYGjkb2p2n7nlmDXHwwg4mp/cCXFHR9TqYXGoB7XV+QeSB\ntkraoSmGBHckjCBfLtmxqAH7678quGSb3TkkdTX/hp6FPoc3SoTevDsyFs5Y\nReJdYC7m3x49G/iaaa9n6Jat7DxhvsdlAAjHgTiBiF0pko0TpUHhyUMeZugN\n2scdxUObiC8BbsAvEeXUGRMoiBD3RjuABV0+OVmiiCIte15isZdDYorcI9Uo\nuxfHFuav+3tUHi4+mOBl93f5aMVij+IahuOeZ1P0QlMWvbG30rnWYmfYy+Qq\ngMA1enAaOA3SzimsmED/ns4xlItI7v3nrcFjVhtHSXGv4ZX8b2D4knh5recn\n59s3tVWa/GU1LDbneXTZutqLUJlpIoP/sYeN6sSb9gmfCRBDsQQ+V4u2yLSS\nMKKl\r\n=ps7W\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eda3c0afa8b4f669f9290fb1add10546d34a319b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.17","@balena/jellyfish-metrics":"^1.0.275"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.243_1624095561776_0.560626180550887","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.244-renovate-internal-patch-c81729ec84cb05fbc61acfa29262a9bb2863746a":{"name":"@balena/jellyfish-sync","version":"6.0.244-renovate-internal-patch-c81729ec84cb05fbc61acfa29262a9bb2863746a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.244-renovate-internal-patch-c81729ec84cb05fbc61acfa29262a9bb2863746a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b3d9db37e3ae9901f6829798b2f839dfa7adc7fa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.244-renovate-internal-patch-c81729ec84cb05fbc61acfa29262a9bb2863746a.tgz","fileCount":24,"integrity":"sha512-cyskzM80z9Yj9WqgS+aRno4Qm4YlhFedQAD3VGHF8rhtFskQpeackbrSxl5SEjBygfKk6PsgDMCGAlTB1ZaeRA==","signatures":[{"sig":"MEYCIQD+zgeAAljJWqtwonUB97e4TuV31RjPwZD+hzvmI8yO5wIhAPWfyq0dP8q7oaFV07jz89TkDUR52xULaaQAmfaOhKNe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170829,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzdVqCRA9TVsSAnZWagAAYE0QAIStHMBBixLZ3TMO5ptI\nle4tkm0pgrRNdqcVwAd8TPW5qrgW4R7F9g8wbEW/7OUzg3NLQ0FTBSqvqbB+\nATwQSbup0X28wMMmcR9MvTKpcc9Ewosu8UNlzpqfFQcD0hNJT/jGbOTZbigK\nIz84Eed5SnfxIZWKYF1XLk/srDowT1L+/XBx9c4Uw/6liHMX0fLA7beo5cUp\ng9AwhbS+oiA+tijMYA2L6Xw+XpLB8pJJsf9VoMDqBYj8IVJLnaLfXwJrj7Ia\n1X0vNCQSJAywPvAiOjY0qaOhu+oF6P0VLfKVGohPr8+4G4S9PddoGZKRPLLV\nhX7ss5eMQNYSUBBI7eYAqF9XpKw2bIONRXaCib7A4t7DZz18Anmw+Q2gRlzV\nwQjtGhqCp2H6iBd9mq5cGy+w8mZj2/1LNhY9P4BV0/XE2Yn3rwV5pJ5DEUoM\nsfrbLmJtYXC6CBg6/oC+Jx7WLVgLu/Xvqt01qX8aYfMwHW9c8X3dySwGt4kK\nSwSRWU/wDaUsOjxDqWIniRtsNngDt0EYJGEpSiWacjryLN2d7OSZKh1tvEF7\nHVh7p54tldDYcPYIx/EgIoi8pFYxT62+tU1wzoOvULhkvVtAS0G6zpu98v6A\naGjUMkE8nDDxp4HvZ6WcUeDYRpq38LXQTZSdV4QSv/RqRjWJx1uEjFnHOh2m\ndoy4\r\n=kA+/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c81729ec84cb05fbc61acfa29262a9bb2863746a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.276"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.244-renovate-internal-patch-c81729ec84cb05fbc61acfa29262a9bb2863746a_1624102249712_0.8360618132549276","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.244":{"name":"@balena/jellyfish-sync","version":"6.0.244","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.244","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46454b039628e53201b246ea3afeef71f38e781e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.244.tgz","fileCount":24,"integrity":"sha512-O4GDsSEla7H7R63m0NIkjFSG/ssHVNobWDokfzcqprCAcXi/aCISGDux8Achktf8CLwF40N9mGXMztzGVMYoRA==","signatures":[{"sig":"MEUCIDXGQt8gUTxwemI6HXj8xgh+SJxK5cMhq+UNqIVv/n+GAiEAofxOyURTf8/frsVldW/BrapOKWajEWax9BK9BX+L/ZY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzdZBCRA9TVsSAnZWagAAw0kQAI+pbmJ8wEN4mAkMh4vu\nQ5Bgkyfc/+xpTkWvN5lYELMrQjiqYiZ0kpGejIIhmn1MRgU35e4fZVri+/ji\n4HTbZBY9/jT9MaKHePIIpGrRivxhtiuS3fM1fCv54Ew7pGTZnLLGyANeHAvz\nQ+W+y09yaojt/KuEPTbqqmrY2jNxgiza1pgHdeTDpnB0c8iusnjTulDYBel/\nT6jJFvj38IeI2rG9j5Apo5WJId/3Er3hsCKI/2j63vhve2v7b4V7lc9BApeo\nAMLSqJ3t3Rcv6JhAYvmwHUbOiWeEfvV9YAWfT4wMCWh2NeE4oFpnnMoWTS+Y\npl7a/u+i9wNF8rKn0svd/4pV1AGJBa8ylyHPdELdegtQSaYyiuWBl7smhvBc\nGrticzu5pbGSd5rU2+7xLHc7MkzmTSyHRV+SWv0w9l7IhWD6ykDy+Q1u9mmN\nA9isqL1ObyaeusiRCBmIqt5jta35AAByMcpV+SuS7Pu1ewuGi3odaBc/C3ea\n5Fhh7ZC9xcQbrrAxwzRuHW3Ai0QBFeL87+gPSsdMVcrmiPEDkntz9J4LwlX6\nMHMmo2CX41jBIoijgoKhVEGUPMnvb0pIhcfvAzT8NLhA7y5uXlg5LC8ldchB\nHF+VWCrL8GXEVsVabklDBZOVYNbRAS4B7Z9lmAdrJ/ooRsOAYReGUwZNOoB9\nREiM\r\n=hwzj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8463d0dcace753480492d485071bb2ba5f02a396","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.276"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.244_1624102465202_0.9785781211406488","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.245-renovate-internal-patch-8a942cb6d7003900d5d08548a500bc80a829248d":{"name":"@balena/jellyfish-sync","version":"6.0.245-renovate-internal-patch-8a942cb6d7003900d5d08548a500bc80a829248d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.245-renovate-internal-patch-8a942cb6d7003900d5d08548a500bc80a829248d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01f7800af532f2afb4df261806c7e9d0305a4f12","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.245-renovate-internal-patch-8a942cb6d7003900d5d08548a500bc80a829248d.tgz","fileCount":24,"integrity":"sha512-WgLR4I1mj8gcTrIu5QjxMQu6WgAvUWlEDHaG+ppz/DjHQxWbUCG6dC9rGDJbPklLgQXJtrZkVNyTe7Em9pmWnA==","signatures":[{"sig":"MEYCIQD6Uu5DRlU4/0wQSdUIqSyY0HkAs5MZDuMg0DEAnRlv/gIhAMc+3KO1gXhvV7Z64tIzhjEA3KPSicFNDhUUsd5zvSrU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170935,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzdjGCRA9TVsSAnZWagAAUGQP/2jv3QQ8A3FMp6mYqfUy\nKJLJ73APkVazmnIyTRCBL8EmVGayClObgah8VFIXLsAAPghhY+aYrvR9ilt1\naO0ccpfXmoPex8Sl686Cm4AJQqBuNX0skZVtZ+pTBiS+XgQkWGPRHJzstlbl\nk7q5hm5FYUPfy06N/3fPkpfhbp16MjM8ZwgZIDpV+L/hFkXYYulaOC7J144u\n3z7dltteStd9xwSkuuLVsV6qwxOQjQ6JsJ5biCOZ+KXuRu2HfF2zPETcdyOw\nnlCm0EpKx4GH2xRGQMrwrTaoShEVhAGli7DQ/b7VjysgxWN+cIOZSbzYK1c6\ndyvf/x5j+tcZ0mCFPSXQcI9ka1WZ4jZTlD70PDb1Be6dhCl//dGvkdSZExoX\nzON5B7V7Oi9L8nCSgutsRIvuOTkCxIul86tM2kam5vNlOE41/VTSu/IWxcE/\neB5isNK1zteb5FVlejBD8lNwh/KyH4JAWViTN0a3pDbR7QN2LkB/8ecKvLTI\nU/jLeYDAEKyXZa/jg5Va7XBN3zuod+pzh/4qb7tzNYws1ZiXjxbJE8xRpOjn\nVXBxT03eKYPagkj+oq1pD4PIoVGqibqFGPUy0lS/4EvSpqCGq1DLY5igVtUK\ncNTLak86evgBsJYQhdRtkD2klLDAbUzasvG0w2TOx/2paGOMKA/iUBqe6YAr\na/BC\r\n=fXnX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8a942cb6d7003900d5d08548a500bc80a829248d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.277"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.245-renovate-internal-patch-8a942cb6d7003900d5d08548a500bc80a829248d_1624103110325_0.8564380506742648","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.245":{"name":"@balena/jellyfish-sync","version":"6.0.245","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.245","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46833750f5b0915398af0cc3edd0c38340b161ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.245.tgz","fileCount":24,"integrity":"sha512-BBlr9KjrgkBc42Il5NtbhsLbYHDwCPjBn3GXVP8ZsxCmNWdjUdYoS9uCREw2rUzYFODfqFxtmv7i57Cv9SFe6A==","signatures":[{"sig":"MEQCIBjqD2BTV878CH4TxrEl3EOEWhvDgXCgAuGZuVUhn04pAiBjWD4HmwVw4bx5unyiLEhuI7QOWjMMXnksSm56Hg6Ldw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170870,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzdmkCRA9TVsSAnZWagAA6OoP/jHfBHpcYtAJtLj3WQbg\nE0uS5/6oaHVX4xG7WSZUxOqT0Tvj8AIwZSU1uGcglJhss2D5jCZUj/hittZJ\n77X5S+WDYkMXH0SXdR6vuMH6RN49aPrworAg1/4Fq7ITYp5IkyLdnTKk/S52\nE4YB7uaE/918uC+NCxYhnDFcIav04QV+lnTdrRs1CBaiVXQlLfQHQJ2l0yhy\nva8PX4PKy0/oSn+VhDOGqSK1k/2lDJ9E6sxY6MEfLZhOks5jdN24jSdm/JDo\n0Yi0iZfbUCSVpF1bwD1Xnhz1EspgKQ0kCTjdHLvUqyENMzQToDIBgQHw4IDI\nlGlp/NiehLnGfIyGHjjb4GYjB4Z4pbSXufKErUU9uyBAXQkvi/F1C01Ajv6S\nBSFcMMR3ONw90CGy6paD2tUBnFnP+3MOOYtlEeh7BwqcxFqrm5BgsR9waUjw\nuzaS4jnfi/yz6TQZTT9kJnT2MjN3T0t/LA/qSC1q118HZim3FDbqrPgXEpQF\n+M0TFoGpWh6Nec4napv1Z5AX3jYOO5H+dgp5/FQy/BbA/SLPiP6O+pLIRMd2\nd2haqKf/sTV29BB+Nnao2tNehj/6Jyp0OkArFZUXvqQRUFefnqEj1/vI0GVG\nORENwUGWgstU4zcm+fRLDBZO1VoBo+rcjaNchBlICLY0QuzHfIveH1mr2kj5\nB10y\r\n=btD4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a73e9f69280287154043c6041039f859c360359","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.277"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.2","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.245_1624103331747_0.464497099056703","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.246-bump-typescript-cf6adb5d80ff8823ad35b833e64fbc47c57a8618":{"name":"@balena/jellyfish-sync","version":"6.0.246-bump-typescript-cf6adb5d80ff8823ad35b833e64fbc47c57a8618","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.246-bump-typescript-cf6adb5d80ff8823ad35b833e64fbc47c57a8618","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a47eebaa441571c6b5f4653d4e9890a62f07aa3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.246-bump-typescript-cf6adb5d80ff8823ad35b833e64fbc47c57a8618.tgz","fileCount":24,"integrity":"sha512-FFDAhAtNazgE1mOYmrFHrqeCCHLHmQGLi3F8OUjrG5JNkC0XBiJczbA3uEnNMCNxAZ6xGAnUy411x1KJWvzLTA==","signatures":[{"sig":"MEQCICT1tIVxHaPg9a8H/6h3kE2ssk3v0ZTM+kBwCkSjv+iHAiBhqoMUogi3NSw7WZa2I8zUjpcxHR88/VWw+qTYMNzCVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170996,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzev1CRA9TVsSAnZWagAADeEP/1uhYajUnz2jhmN6ay+0\nSu9bQ1GYw/Rz4wA4WP/NX5SG0PGojk85PCQadcomV2AhFV79Y0t2GhIQKHEm\nCKwKk+Dc7u83gTNL19P3co08tq5dnVDCaoFI3WVa7nnmhgQLN5LaG/6fUR8T\nFMUkiHDkTjwGOBoyxunx4GQ5JIsOxq9mqhYhB0Q9F927pJmDqZwe6WRK4Xy3\nI9/KT71ZU/hSUUuwH8X8gh735IHZ3mJ9xmnEoS9BLFfiZd4/nTNXj/uRNBGV\nzkA6EjAr2kLYzjmOmAnCYm+pEyXX9GR2aM+cBRx4sRFSGvaaRwWZXlCzJRgb\nneSuJquIrOYK0q2I2Fm6b/CXkyTOLB/TLwgLQqDRFZyw4+Rzs9q3GPQ41XbQ\nHrJKYp5CNC3DhFuOqI+vOgzXAZAyghf92eyiyU8+dLvOxQvnf9Br3ri4inee\nseklVdrfxPcTLVFm7zjD8ABOI5R79nMilkIT80nL812EZ184emQJmN26vsx4\niFJKsOGEKydA3DyW4+eZOFdaQBJSds/m6k8Veidy0NtZXXyQfbbGXG8o+JCI\nybF6ma8mNrkWT6Dd5ebpwiyeD9hGgd1MF5oI8gFQLXNtBSNui8qNsTv0iPvQ\nVesgwVC/f5yQXJ3R51iiHWEWfC7/4Wyi69nAkxj4Iw8Mmk9J5sAXYJ1JDPSf\n0ipi\r\n=vAjt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cf6adb5d80ff8823ad35b833e64fbc47c57a8618","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.277"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.246-bump-typescript-cf6adb5d80ff8823ad35b833e64fbc47c57a8618_1624108020508_0.26235027394337385","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.246":{"name":"@balena/jellyfish-sync","version":"6.0.246","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.246","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8287c5e477a4cbaf564689d973edff153c6ec7ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.246.tgz","fileCount":24,"integrity":"sha512-DlIsJbcgUqLV5zeWur183PaUnLrxhDkrzL2NEy2/rrqSi7S9Xkc8flleCxhVR/bPAPOO26dvKFY5N+9jD1BErw==","signatures":[{"sig":"MEQCIFmQI92kLVKCO276Nt05frk/nxMz4C0nkSpsLv8kZpqtAiAWckn/GLCQ5v5Ukmhr0+kpPh0YcIVh3gbSdjJDbgBeoQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":170939,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzey/CRA9TVsSAnZWagAAXCYP/RRd6sT+Rpri/gJK3W+b\n1xuXojyPNjgR1+mTxxYgROkNk3PovGFNaVMIO6QkXP4s/bVSFQXIRveqS3xj\nhKPG7PBYsJiQ7hZryER7jOfkOR/SgyqXTwHMpSdVyIaXuK1VlXdSqK1YCFCo\njQskjoIRum3jSDtoQwaY8Y5JqWUXQaS3Hp77Dr9Kun52V8GdzjnOFKDCPWr3\nKCuih3OTQcpTHs5NMrGVsJE/yhV+uprA+e0rgO8h7qfUQrPVEJ17JCNy2iTr\n4ze1Aq65akRQjgTiX6PkULL9OdMoSqGjGtr153+ob7bPvqxvucqVte3ca382\nlE6NkhPgG7tBiK9GEUobA5Apl+tOY/Z/UXMSGHD3e8nvuuTpV0saLUHASUpj\nRNpddlcTGXxMqtxjfdygmLWLWoINUrRolx+dPQaIWvlHcMzRqvRLXWTtu7gn\n8BIGgmGcKpZQVWWHHyBr8AFknuWn7o1LA4OEzdxSChRk1VWwF/061UKIlDw7\nebpMDEar8nOr3AIZN1EMuaQLWJ5C1ZpGmQ3LbjVbpSIiqb10wfDWlWKKFHor\nSb/toIBtevaSXyTGjVYYz7noWAdugkU9EQzj71dFrySo1jF5ZaEXAOpVx9JQ\nf84JyFifELJRjhRbNi3d/+DaGMA6c0dMcZ/5rQL0XEssnVNj2l72oiLKLGrT\nZGQO\r\n=eBQv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4ad3ca37442683c26107dc7ddeb1350b4bf7a0de","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.277"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.246_1624108222578_0.5177537877789018","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.247-renovate-internal-patch-60fb0c8da8f9d3522270add05ade7afab32c9650":{"name":"@balena/jellyfish-sync","version":"6.0.247-renovate-internal-patch-60fb0c8da8f9d3522270add05ade7afab32c9650","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.247-renovate-internal-patch-60fb0c8da8f9d3522270add05ade7afab32c9650","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d68634bd1b33b0aa16a678d0949e7ee39c896e40","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.247-renovate-internal-patch-60fb0c8da8f9d3522270add05ade7afab32c9650.tgz","fileCount":24,"integrity":"sha512-dabK37thaWMbHy5n7BWNugNVEWR5qjlt6fU4sgFvU1Iti1AXoGsnrUDFcRdJ7ziF+L7/YOwNbiNUiiH4lxa/1Q==","signatures":[{"sig":"MEQCIEYyTwsSGsfH8/FSDVrCSssWurTEH23W+QJ9Ko6SplU7AiBpOcF8irUf+ns2Ak5CwDoKht4d7pOUedqhIrBZuPeJGg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzgP3CRA9TVsSAnZWagAAi+QP/2i14tPZNDyTO0nnAV8I\nwX9k++WSBhJNY+t+tm7cmSWf8UrhX/3z2MpuvSLHp4UiI72bQRmWa9zdgoBD\nVSHizerJbbPD3gtu6jjFcUJ6KClXCklLzsNWlxwrrNFgsXv4FmjSIUYWxxry\ng3jQam9hFq4TXPtmDpY61Y5HPvmZYIaU1K+0g5vDaW8mdLCd6dXEudCfX2da\nNRaJT7XLbAXWtHbtdYybHmAzWcebb2t1oJm0cA/uEZqobIp2VjI4lQz7sasY\nAgta0RPrFnQ87QMQCLdqzqOCV2IdYwo/9dcvI81klfj110dCUz1FwywuwXG3\n3smXtdxhXczC2sr4K+3+Wya7uWe9/2+/AJKXhRmzzSUi7H09U46q2k4O9/wF\nc2kcSdsvOPW9EA06NUqRpBN8Hlhf8HyXUYO3iDxQe4GOnHv9ED9f1MAWagh8\ner0yZrQPq/kzujsv2gjXIAQrffiVuSbnWq1IQzOmwxFc5eiHmSQO1crULSrH\nhwC4WH1KcffA2bo4Lt5qLKjjcHCUd3X9vKEye/5YRsA0NwlBFcEVuUQHZxzd\n8MKcYmNnIZWs90bWZ6shj8VRpS3ncYgtm0DOBCEt7J67RRyx4k/PdVUVMHG/\nl88ZAzXCZOsWJoNw+CeL5UP0nYyPW01tji/V7r4W12klzEYrQJDPqYpOCA3f\neHyf\r\n=CrKP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"60fb0c8da8f9d3522270add05ade7afab32c9650","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.278"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.247-renovate-internal-patch-60fb0c8da8f9d3522270add05ade7afab32c9650_1624114167095_0.8658037866610155","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.247":{"name":"@balena/jellyfish-sync","version":"6.0.247","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.247","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b7c72669e1134cf9b8df8c5c00666eb7ea9220d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.247.tgz","fileCount":24,"integrity":"sha512-J3+hs8nEhNVEG+ozitUw04YfpFZbtTCxdfwVaKeVySAJ98OA8zLc7WAv1vmV/Qo8ZCLNYCMnkSwAbMjsjSW4Zw==","signatures":[{"sig":"MEUCIQCJUOYx5q/YY2PaT3lH7cm73kwQ5LyxoIMubNZ/4xafmQIgQRgQfFbMoS5UTJaqPX4NT4TWYGYYlD6Tgl5L8SFf1VE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzgTUCRA9TVsSAnZWagAAOkgQAJYknYsVOn9l7BQI/DBr\n6u/Y9EUyTf1d2KMOXniNrRJqGiKADgZKAUUBMemB/gLBJF/0DH+FAw2RxEru\nFg8ZZBGme91pyxcmHy7t3Icnkf1GlB+dVFBVeERq/k5PbxBJ0e8KfbnybT5K\nUfRfLxxezWmkN8YpjC2liU7HuiimCVciAkPFXnxsxpuv1z3u1BbUcLadSX+H\nfCSG7YBicrYI4qGI+bQahd1e+pp5r6l/3wQuw+ZTORur+sfpFQRzg5HdVqVz\nWW8o7GpVZ5j3AqTezmyxPkM7qtoNZJ7Yj3V1ZTruCm/dDUxX2a1zP2RQmNdg\n74U0ojM7wQcjjbae7UurPFCP1E94JJpsl1JpE/Ig9rzW3PcfBMkn78cqCVrF\nF4oB3vKpd82VXejTwvuDTvwbooFO+HC4yAmvH5oRYn+qDq762abyyWNZBJc2\n46wMk66UrTwEw+xUo/NEpr2HpZgMa/Uy0J8Vj6rKqR75Zup0aUaxh/5X91F8\nQJsqdwMjyze1ytxWbkERFPd6a1k9WJOIzqsyBq6kETjgW/8YaUfh2yPML0bb\nCF3aQXAucQNL62wVZjLs1Ykqk0MeKjmnb3p/wMNy6pgPblKSOqPrJtHW0Rzz\nn0uKVF7A3ZShwf3JBBfH74xQZRhhS34ap5BDNziFtZ87Ac+cVERUpkvF5FlO\nhFdm\r\n=qCW1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"92d0f8b2b75c341a6ba81dc2243978b890fe8dcc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.19","@balena/jellyfish-metrics":"^1.0.278"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.247_1624114388137_0.16793379614617598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.248-renovate-internal-patch-40849b5942ae057bd080965a0539bfd4c88b85cd":{"name":"@balena/jellyfish-sync","version":"6.0.248-renovate-internal-patch-40849b5942ae057bd080965a0539bfd4c88b85cd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.248-renovate-internal-patch-40849b5942ae057bd080965a0539bfd4c88b85cd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab52fba170bde76b4a014e4aeec1ce6fdffcb2ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.248-renovate-internal-patch-40849b5942ae057bd080965a0539bfd4c88b85cd.tgz","fileCount":24,"integrity":"sha512-k8ZpiwA5OLNP6oWCp0JzwmF2K7dDOmmu8tkzn1pRhi045M7KAFRtx9fAImHWPdnSdbrKzuT3GHtfuNrXq9G+zw==","signatures":[{"sig":"MEQCIC+PVrYmC+tzKBfrWih8ai5ztZvdjT1uKWdGtz9YK66nAiB+ksmTQAuOe1u/3tmHqRtWPX6lSn4S53xbZCEWVFWO7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171182,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgz2OlCRA9TVsSAnZWagAAsPEQAJQHBkE2+YxyJdnNEaTN\nFXWizJpT1RmRt3MbGnpEYECy26ko4KXT1A1kZyjiZSD74F7aT+bUg4elMcpn\nlyit1r36cXprgbTCAUbAQ/bMljQPCnVJIYDO8PsMTOF48bMVM5metlgiQfqi\nGpNY+D45PE/cLcOeWNgsTKQEAbVarrUpKXmO218zi8dOEnek58nUhKYQxqJT\nT8x6yerCNIvFXiwn7DvxWnP4ms0gtwygkJ6qok5eXUt+f+tQekP3VdQcVjI+\na9xDhyBO9ULQMTWfkivLisubk8wd//yIh+X62jhO1Rdy6hcRHjNsUdb9Lxvy\nzsAaoTih7VEI59AVJTvSyrypXQ+JYPDBjdTFk/Wv+uBJdseFteeqFXul8GXq\n3jF4UulPMsd42D9yF1IVFFpIxVRIbFS0huTx3pKkVn28sCsQ7IDvYsVzcGwf\nG2pNFu7wDDjfBHeMwSQdla+EI6tTf6f/lUlEqUFxqh44TtB3ejVJtEydAPiF\nYrpy+jnkxuV2/TeqmcxQ2yR+HB88u3X2HgZFUbYVOnzMrBzOjrYQbUU0Kyml\nfmgacDRz7FcA/PzuiIk7mTR/shRo2hfK6H4C4DUdTTjhh2oqIkSyFgBQp3Jd\n9w6D7S/82TAwSsrjKpq9IJ5LKuGbwjWeA01WGP3QXUQwp97jzEmhZvhx4KsN\nxI0U\r\n=VRYe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"40849b5942ae057bd080965a0539bfd4c88b85cd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.20","@balena/jellyfish-metrics":"^1.0.279"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.248-renovate-internal-patch-40849b5942ae057bd080965a0539bfd4c88b85cd_1624204197226_0.16321832262844005","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.248":{"name":"@balena/jellyfish-sync","version":"6.0.248","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.248","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10228a8ab6ce652010740c2c57dd2447522ba9ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.248.tgz","fileCount":24,"integrity":"sha512-AMJh/3+pkSqPp3kMk29hn1xwOkyxQaDaX4iSUpFNHxkk74IhmYAAM7bAWmcnUSoQHlaNn11NFQaz7RsyiDlugg==","signatures":[{"sig":"MEUCIQCbzG0R08lZhzbhOIHlIR9aDAgp4Owlb24PWA3UU/4V3AIgN/THGcAIeIKtLDvZKu0euuOi55UCErO5LXDIY9s744A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171117,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgz2SKCRA9TVsSAnZWagAAOowP/18a4MFV6NNUmJh/eTwW\n4DFbdhaGvMWMj/6h3aMwbH5w4R1vKLEsMagej4y+l/+V1kXZWdWGhTNqJHsV\nDBunanVdJC67dQ6i3+6cOH+kxcjcpXeC6OPb8Hqf0JuoYys8Em2wUH7bE/EP\nn+Nu4qeEb8PNaS1I9pW7xhsnlOht308iQXo/xeZlpH9GNW1xvYyYdz46FiGy\nuTN2i/JehrEMV3o3Ut7C4QajKkpVDdJcMYHqqsEtTeTYR71Be9e36cfvgWpy\nHyVHMe1XYeba765BPz4jjHDalgQ5Zr4mrwH0kDxFWiQzfMKotNFWqlEsvpbm\nUShpic88wwquPGf2nzJflk0rV6Rezu8SKK3BZiVxIoCEhH7JrSqH6bYCj7HD\ng+mY+JjR+3k9NwJ+YtZTysNgb+JCYVvCezqUomeX/t4yLq6r7Vj0HgfbK05N\nrLTrYrf1lZleEenZkJuZrBbYS1Fu/21jiNkbRiwM/D64Lj1A37i3vjW86NgU\nDCweIzqVsPBAz7kXaywj6n4/ne66nPDZsCTXZ6YJFRrbfoA795OqfoPXDU5p\nTZWtMJPGYrpzQv7tOJD3SvWDS9wi197D++rnyGBcIx4Aedlg7WdchtzeEMCJ\nGy5G/3ASQL6modEyXDTvsyP5yUJ5DZwFJ35wiy27/uGKkVk/5kCitKCcd/as\nfshh\r\n=9QTi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0ae24d093ceaa469ef9bfe5eebe2a94468e14036","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.49","@balena/jellyfish-logger":"3.0.20","@balena/jellyfish-metrics":"^1.0.279"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.248_1624204426032_0.5490088499850367","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.249-renovate-internal-patch-e034a9db47d251ea5d4eb072b1c0d9e08a35c525":{"name":"@balena/jellyfish-sync","version":"6.0.249-renovate-internal-patch-e034a9db47d251ea5d4eb072b1c0d9e08a35c525","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.249-renovate-internal-patch-e034a9db47d251ea5d4eb072b1c0d9e08a35c525","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1fa31393a1c8e09b686d59f9689e41e6aff4a017","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.249-renovate-internal-patch-e034a9db47d251ea5d4eb072b1c0d9e08a35c525.tgz","fileCount":24,"integrity":"sha512-jm6SOq5Hfm9KF1Jbd4zvhY1lBl5/fLLa5qKTmSyX+xoIFJtZZj52VKHZe8glow3S3xOuoSE7aTssAhoqfm4b7g==","signatures":[{"sig":"MEQCIB93qrcMginC43cGte1lEhn8GvOu02xOQyb+iCA0PCA6AiBdZKVIr1BknsPFI1LUMO7V49uxe8HMbnSj1hqpS56xGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0ZmWCRA9TVsSAnZWagAAfXMP/2DJm7xqNH9CzDVKpD0A\n/0kaPdaHMq/MBnPuM6V0EmYjNpjRaMA51ryW1KU2yVhopRU9AaeNCrA+Foq9\nactZ32YztAUlP7UO1tw3c0YZnN3jYn7lN/hag76r0KxfpReH9Wbu7U9AOqEH\nlisJVysK3jw10Lp/fSdS7inbXKEi4AHgHc3CTqhMNWLSsuK1Pnyd93X2YVdJ\nUBRluFLugBf6vO3c1mU/s+SeYM6QCyrgrZRj7FGd/Q7XqiUPJEM5ifyVhokg\nX7sUG/lEtaKesv8aE5Q4YyNuR9W50F3/o+eNj+qWwyj+YVDsICnIW6KrTLzu\naiBFOpo00cYK0mHshO9WJmPY7KCNNxYq5N5XACnualEugbBVc8xiqCZeHyir\n3DcIc35hCS5bTK23CydTRb2lmG2YxL0FTbE1Eah4x2vCxbncPsxPtG5Lhuj4\nqnFRJM4bSH3l6lobVDv6PLgYFCmJ9PZPKaSfk93nv8WKynP8xeFHahKRme7j\nfRF4eiFqZ451M+EltJlRy98VBXhjHfUonEkJ04CrvJeL7J8m92Qvoi+k/RwM\nvkDYzkyC5gRT6kvnng8iW8tcUA4hRyla8ATgi4BIwoq38jx/0yFW4l8Bs6Ts\ntRTlzxtzHwSp25xCJ6zHkwcTGAAhhzd4E26jQQRSIXMOx78JOtF47Yu4jgDT\nB9nl\r\n=cai+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e034a9db47d251ea5d4eb072b1c0d9e08a35c525","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.280"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.249-renovate-internal-patch-e034a9db47d251ea5d4eb072b1c0d9e08a35c525_1624349077551_0.479742436729115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.249":{"name":"@balena/jellyfish-sync","version":"6.0.249","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.249","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8120787a11d56c7aea9b38d068306c971b5470cb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.249.tgz","fileCount":24,"integrity":"sha512-9c26yfCKPOt/GBMS3IwBWJ8kpLlyC0PNb5YYgknf2RM+enHketPUdcWbkYF4zSVQC3FW8W0KMNb8duSr9NiiWg==","signatures":[{"sig":"MEQCIAXc8TwgBt6SBzrPhOKaNf3/cq5iMM+fE5RxceWAdHjFAiA0M5QgAElsEDyPPOo/TosRRgNvMJPyVRCo4HU0cC4hSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0ZptCRA9TVsSAnZWagAAuYoQAIEK4eb1YbkU3byaCFoZ\nXBEjc8gQ+th+cDLmOnxIpOWCfRcLdBQG6Sy9/DKJ/GKxj8V5o6bXH35Y0dO5\nZqK5AZ18XZZgG0cjJtenB1zFh1ES8xn+hZQgqNa+Q6tKj9icjILJLG6lAnEr\nv+t3cIL2JTgqemwHZ7JUf+mLtcvUZRzrT3koLBFl/fN4iuP4Rzo63SnBgPfu\nate+l0tiV97UeoqL/eem4TyJ93Jgx2F/A6fns+Mq3+9qx31WunS4toyMtzA4\nzOrGBIijfo38peQLWqV3CNO2kRF4nuJGiG5ae+d/W+/J5zPbRzC0NJKKu3y0\nHMmAoxotHVI3WB4oAK4hSzIJvq9Z7Zy9UFKf7+EhDIex6i+LuFl8Tzn7SOOJ\nwkUGx3EDg5x63UmvLWrIoqgYtk/KLloDTcKv+ZQEaAkC5IPJSdxf5jQ0JJZY\nn5flm7ty5oCwgNL7vFaSkRroLxnpLCHwAaLGtwLAm9KNV5/Tnd0MbqVgjU8i\n+k00ePcv7oV2ZoNhtOG/yoPppikhi9A5Szq4dy7hZUhhYSrewY2c6ey6PbvJ\nU7v/g5SvGd+pAiYzaECsFQnpIEos4XcNUvI62ZYewRRXq+4pNa7RKuoOTfrq\ngFZCnt9EgYC/kvcrLxrSldEZv31obOIgXU0iuo3IrwNILG3jDnSk+mi9kpb4\n39sg\r\n=tq5S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b42d87762a97185f914d7a196925e9b36131ac9d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.280"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.6.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.249_1624349293330_0.5883283128208785","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.250-renovate-balena-jellyfish-types-0-x-3b52194d59222d483c900f52be6c3b3e8b6e0630":{"name":"@balena/jellyfish-sync","version":"6.0.250-renovate-balena-jellyfish-types-0-x-3b52194d59222d483c900f52be6c3b3e8b6e0630","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.250-renovate-balena-jellyfish-types-0-x-3b52194d59222d483c900f52be6c3b3e8b6e0630","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a53ba926b30138c7a1be5211f82752a5c06ccea9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.250-renovate-balena-jellyfish-types-0-x-3b52194d59222d483c900f52be6c3b3e8b6e0630.tgz","fileCount":24,"integrity":"sha512-6N4Kmjaq9wRO9p3S9E5d0irUYqo+yWFQ+OsjK/aPC3wokG641Y99+YDvJFBHd3Udf0HgmShL/0wCnktDZySSww==","signatures":[{"sig":"MEYCIQC41c4cjX945TtQJ5u2mUzf1VIpO3vKKAcMD+SLDae+PgIhAOFhZQltvuLOu0dfufqtXPUMY/8RnhluxrA/J/UDq9+1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171367,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0cJWCRA9TVsSAnZWagAAkEsP/RicvopAsuYbXUc54RP8\nefzrsyGhLpSYxbFrZmtocllUxuFm/Qu06LwriMzNOHsHjC1h5uUQnoVb2fX0\ngqmQRG277I/zqPeeEMyRe5KqH4tr8x+XiBISTUkCLEOnnGFAjIv8ygPLMf3D\noJCw7Q6zTZg3IuBdhBvE5zpq3bUhDcgncDtPL0cSsxDki3V2O8gC1g30LNwL\nkmqQzs0BA9y/jM0WlRLZ0h2qI+dSiVo6yFxmo/O+D/BBmcndnNjsQYdADboq\n/vWlcYuFvG6iAhBDHH+S/evYffrloHuefCdFvpJHkUVW4sUTHqlI9QdVrS1J\n3U+rHTuiZSv2LGwv4A+TS6c8IfERuacrXAQTVS7VSD9MV5Vn+Ne7FyymIXPh\nU7WeXSeU7aQi+3djmOdamLnzsmxZbSctLSEnkwyO9xkGZrlOb8Bk2P8WUtW0\nWBLPdIIVC+R99Kp/VnG7kMfr8lNoxFrCFgDXYMbAuFEYIqbZvdvC+jfm2iCq\nxKpHbY/LWjrly3MuDRA+hc9sCQDNRIxJ2L464NSJFtQVaqvO3NgOkjwkrAmX\nHRS55BiFIXec+qvCp6MhNa+5Mn6INNH/UpW7ufkggdQOZtdGzjTuwC7cgRQL\nPwKa4a7it87+jkcVz/xITmbW0weyFFvkUHT+ojl3DPB42kwpEKgPD44vykbl\ntbkZ\r\n=JGny\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3b52194d59222d483c900f52be6c3b3e8b6e0630","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.280"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.250-renovate-balena-jellyfish-types-0-x-3b52194d59222d483c900f52be6c3b3e8b6e0630_1624359509712_0.1457959005071856","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.250":{"name":"@balena/jellyfish-sync","version":"6.0.250","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.250","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"230fb1b1c6d27569405afc3a39ec0c4501ce2c01","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.250.tgz","fileCount":24,"integrity":"sha512-ufJcx2Wi/knNw6+eaOMQCklSQziO/FWx70tBYF4bk/8ULi6eIBCspS5en23rcuojfU2+/9ROmDNPzgCvCDL/YA==","signatures":[{"sig":"MEQCIEZw5EJY86p1yklyIDU1EmLoEBFInD8ebTB+OaYQhtW2AiAQ35Z3UT/uxDq7jQaF7mLMWZRWESTZj+kREmqDEgcSRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0nIrCRA9TVsSAnZWagAA1TEP/19vQSL3uZD6LRXdukEo\nlm4w8PLdP7snhyE8h+SSFqbSP+iE+y4oEWrgYUztm1fSMBTv2c55a4tLKARM\nkdTzRAhNuuAm7ujIydmjd/Q0Dh8fFCj4OfTsE3uWew3CMVqx06xfPbtooJVu\nLXRBf6pQc1SWcxfjV1gf8SMKir1o1umXZHpICK77W2MJiULq3GaRZXV6lmgX\nSHBai9poANMOMmKwcn95L1cMXfhie7bNMgOnXM3FnQolTKRSNumKPFT534vz\nUy3A9kxD46wtSGqN1LLKHjfN9gbEo2vu5G4G2Wr77dxDdwqOTAhNArKFbihR\nWIElU3H57eJD97rnwotcawBEeUrA7560TxhU3dgSre4P2RedYM8dYHiluI/u\nx/vO5Tc1mHezyq43JRRcHfXns9Dm0rYQmZDpumFZJbYhY2RXM5C26YWcsXx0\nQ+cYhdCIn+6eGkV1eHtBw1GChLmOK4X/MPHVNtvSiF+KKGUK96xkZz6e0SqF\nQLhbTPLBGX2baj7G/mMj2MhSqWnXG96cKsn8TmK0MbQaP0sWS2X/cgKQXTeh\n3EKGbeKc9NPUxzblmOMxV/NU7YK0yFJ059US7iN7dKl/s7T/RId/0jVvNU/r\nPC9QdRPbL8fKw3iRR+2h9k+Sfvw5UQqFDKcjl4lYL3KpCc29yRji6YU7SXHp\ngjPd\r\n=jPqv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0cf450b23656bace9243c9c9bfd71345d01ff363","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.280"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.250_1624404522905_0.8789876740570319","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.251-renovate-internal-patch-598c86feec81fd99f09a5abcfc2e0d8a8b2f3393":{"name":"@balena/jellyfish-sync","version":"6.0.251-renovate-internal-patch-598c86feec81fd99f09a5abcfc2e0d8a8b2f3393","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.251-renovate-internal-patch-598c86feec81fd99f09a5abcfc2e0d8a8b2f3393","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4c69aaee72be61c6fae15336527d2e052a206437","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.251-renovate-internal-patch-598c86feec81fd99f09a5abcfc2e0d8a8b2f3393.tgz","fileCount":24,"integrity":"sha512-yV0XXe8XXzS/7Br0El1f9aWkIqBI3zFKS0/N2vyQkZ5LtwuAOk8vbHQU0U8EG85z7al+KyCLjsZ9O4L5jLIjOA==","signatures":[{"sig":"MEUCIFRgq8uQgTqC256WI3OmM7URWtmxUdX45uaZz7LJim8gAiEAyrWPiUZgy71ySMgx4Bgoznjh/7Y/gOdP6ECtVidXIBY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0nMVCRA9TVsSAnZWagAAbaQP/2JT44OaJJvrQt2GYVd2\nZWuOrOaA4KqfGXBKAyAnrj5jsQ0ZcvggPG0jBJZWBvNthGHF5rB8ZCiNABCL\n5Z/q2omMLwzsKGNeWCfljOJgcTlUz7aqkMXKOtuh0iNqlKRM6IoetL8yHEy/\nz+r+LK/92IcJ+x5bdfH43bHooxrU0cdLa5BV6F0ShNZAfFuMzEfL0WR+7sJe\nnllUVNwcsa8Hskobu3sJlpRP+EOsvvQEAd5e5lE0QYaLP1X7oIe/ot9IsqQt\nDO7vRDorO3h4BnMxQXzzVJuZhU/x1je9CrJHyy/3V7yqz4LFLTzexZ+Gmlzi\ncq9V3HEmPK0anhtpDm7NL85FQdJkg9WdtCUjCPRCQDZ29ypLNf7MIuDqqvZA\nMAZAitXwKlXfmMxFwvMKqyyx0oaNJy3Q+9BK9ccNlBofu1vVmXXDA+6olHu1\nCJdq8ma0oszsQ/7pcIjZr+hgefOXl2FkNndHvtxtRDG6NR2HuFLLSG6oyIat\npDw5YeSaWfB7NlAiV+8hwdH8F9wkrNdLRY67xaZ63KKLZR/TGwYL6MNCqCOR\nH/yyBteYNlaHi9s8ttVgeaojp0rldqOVAkaihcpcmJIpf9350OqyXyU0rILk\nPMvSPplbtS7pyqqz8U5OpLDeBp3u/egwXRpLdbJ2CRQN24AHKsMt6k7CdmPT\n/MRp\r\n=zYWy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"598c86feec81fd99f09a5abcfc2e0d8a8b2f3393","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.281"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.251-renovate-internal-patch-598c86feec81fd99f09a5abcfc2e0d8a8b2f3393_1624404757439_0.9574337883050235","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.251-renovate-internal-patch-fbeeb325f583a4c5890839b3e936ab466f9475de":{"name":"@balena/jellyfish-sync","version":"6.0.251-renovate-internal-patch-fbeeb325f583a4c5890839b3e936ab466f9475de","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.251-renovate-internal-patch-fbeeb325f583a4c5890839b3e936ab466f9475de","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0814f4775e049a0a93719444ff07a1e065539938","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.251-renovate-internal-patch-fbeeb325f583a4c5890839b3e936ab466f9475de.tgz","fileCount":24,"integrity":"sha512-xrNrTki7BxnOamJfAjJ9V+X+h/DMbwCoS0Huj1pFd+5Cqfc9WjToNAALT+9Sn2dqAoftDWSlrkUpvQPTgXNRZA==","signatures":[{"sig":"MEUCIAobjdouIkh7um/op5qKgekrYJ1B0962W9FUP8Zqts7nAiEAn1lwiKsxB6w3J5f8UlrBQbkrl5W8GTpHoelM6ywqx4E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0oVACRA9TVsSAnZWagAAr5AQAKG+ueH54Ewo8/TJAnDb\nF0nzqt7PrhrxtuUuPwLgRCLtRa0yPx9rEyipeZIfqKJZIsAKIqD2oLrXkQjc\nrErQFCVvPIffrz2YqSr0ThUrxd1UzHVJJD9idSkASXOuncb/FFtndzqy6pKG\nZ3RqakVd652GLARUCYm62pCJndN6hG+StVtwnLKSDuv8JOy83mD8qBAimkNr\n6ahULcLmecrfoIeODDbg2FGeZTlOk3uEOSk+bohTDdSfp0igYJ2NiWdlKcqs\nj96OQ8DsOU3sg05UHi7MBMsUbOF8JOJ0zFhnCVblQs9bf1Xtvym7p84/fpMm\nZ8euFjwjKLOzYcbLSKcAP7xLsAdSXKhP34R6WIPeuZZbVNqMiKpjk8/KqPl+\nVOIzELcp2NVahSvmPQyi0FycWKXEknu3WyUHYjlWLTTx4kGxWjxUyYzaIcaP\nWF351K0GCNScYs7Nog2COqJq8foxNIyV8vZjidHIsDX+5ZsyXmFnxHTRu2KU\nGCyw8Nec1iie3j8Ouk1QjEVNaZ5VcKQsNDWBFiuQ+B0NFNHOCDT+dvoXhdeL\nQ9g85qdrlP9KF5ytNHjN/QInyyqS1xm4mvgujV5BVIbrnO75/87nvisZlpRM\nZVAHc25l/Mlw1LwXaqCkPfh4UdI+HFfvVMmgqodiEsXyvPpLe4d4xpZwblYk\nWPhx\r\n=ttWb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fbeeb325f583a4c5890839b3e936ab466f9475de","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.283"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.251-renovate-internal-patch-fbeeb325f583a4c5890839b3e936ab466f9475de_1624409407801_0.7284876300008518","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.251":{"name":"@balena/jellyfish-sync","version":"6.0.251","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.251","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1289acb7e86852e938bcdfd57e7de0144e7ad943","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.251.tgz","fileCount":24,"integrity":"sha512-Pj3wp7V+kBsuveQa6zOI5RCj79sD5XMTF0aaW54o03huacMx5l1nh9VgMipU0bh3K+b6NbDoSImg/8Q61K90cA==","signatures":[{"sig":"MEUCIQD/LYZ6ZATIr/Zl4CY+N5VOe8nkW5K8/stmznIoEXRVMQIgP93HP5ZRlGdXUCVpe0zEHtOjdksgcqzRpr0QrHbfCXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0oYYCRA9TVsSAnZWagAAQ98QAJlg3DqxEQ2GHjKWQ1RM\n6YCZWf9Dl0B8s7h1pPu/9uMkcKf+sKT0x5R3YQCmSPCd9C5jhq5Hvgrk+mw0\nnCO5ORJp8sbHBkFvGDKr9t4Pi9QOjVnzVKhLdSGfGqhNY94qkvQijFiKRqZE\nwaAn9fEIjrhQcaUSCT+w9IvjwSxT3RoZw7kw2TNHcvFh8aWGXZSWejnuoXCA\nsmvpChBB5HohZPDV3F0bv343xOAiv3L46WU4Cq918e5VN6UlZX24Wq25WlWC\nCcV5vbU8uVpWDu7nQdyblM/2ppJnz0SzEvJkHFmESRxGW+YzcjP1ci9Eu0c3\nMkEgFE2TH7omK6F4n0sd7ZvKio9uBMRICUaceN4lPIfLwD1Ip0scuT+jXubB\nPBaDTHiXPuZFl0FORv97Q6po1HORQFUupR8Y2oFOxzVCJozOCzs+ScbqI4NX\nctry54KAoa0iazFytK0pHvd4TNS4h8c/+aOX5zsEUWoI/M7EY5SZvKxuo/vp\nDsYsYvUMCjL6sCTwU6g+SwXf+6sTUERe/zvsgVrhA4c/BNKa+mDnhzROBw/S\nANs59fQ0a03iZjooKAEJ3MYP1dzPHLz3JE/3l2lGYKOouBAJPtpPwj93WUm8\no4AOzfRhDtfbaVQpV40pW+7i+9wkhfaAZS1ingKl7GaY7bPh7uZi9sVGthdQ\nX+oj\r\n=+7wT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3d7cd36728c0ddeac765b81d04f99b1736bafba4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.22","@balena/jellyfish-metrics":"^1.0.283"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.251_1624409623573_0.8353718360575124","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.252-renovate-internal-patch-ddecfd3285a307aace8aaffe80563546341a2e1e":{"name":"@balena/jellyfish-sync","version":"6.0.252-renovate-internal-patch-ddecfd3285a307aace8aaffe80563546341a2e1e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.252-renovate-internal-patch-ddecfd3285a307aace8aaffe80563546341a2e1e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e78b1fdae9776c0887424b7f26afef100549fdc2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.252-renovate-internal-patch-ddecfd3285a307aace8aaffe80563546341a2e1e.tgz","fileCount":24,"integrity":"sha512-KZPX/KzMH3HIm+IJZN+2qspFl1cD/MKam9li/fWzyTtzOEBnw40yVNhyi2gxpuEk6JS8QzLUt9/hV/deu4boYw==","signatures":[{"sig":"MEUCIQCvdgrJRV8N5UI1bJ+4jmXHoF1fD6vCeWvwlAU3FZgq3AIgBpnoGgzCLcZ4X2cyux9YLlXRzgAGW4W7bqxrh9fwkTY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0tdMCRA9TVsSAnZWagAAnp0P/RsUt+3kyDFX8sVP9ru7\ny1Xg/P1xkQ1e+pjauc9emT5m1p4lQZ2voGwafGE5Ofe0sxNOCdpCdO2/oIcw\n6698KLibhX3uBg9zxd/JbsMV7ORekJyn7VQ3BMf4CG97VUzLEkF1TWkjoqmn\ncq2zRK4jGJpGV8B+8vCE1HsADqjHXOHRJWrdXt1ZQg1UxyU97/iWeO6ysxen\nHVYab5tvRTuawZZYFetT2F9qIfj83MOxa98YhVkTUyk/oYTuMGO69yoLkLVk\n9NWTRL/lZLCwrY+Ipa1FK/bP0QUOjy2aIRFFbLvAJyc+VKECcKv5FTI6QmBl\nrdFLbx4Bn5ldqQbEfCbIC0e9B2R2JJLlcxmvkyxSckLlNhUT3HJI47dX6WEB\noL3EHViPrftSn5qYjcrnQwUzNBfAAs/BEAkxDIfxO7QdQmUig8XGFijtp3ZP\nYiQYY1XRROvqHjaZOrrsEX6jZcr84TNZh+HibSfaVS+Etze8ALv7wbAp/xaz\nbod+CKXpROXZZ4ue9NsW65KqIVwowiksBg6GgIf8FH/ueIa1qAaANTlaNJUb\nJQPaakHIZqHCt5LsMGQSgAIrWyO9rAgQKkm9ijpkwc6RFgK0kk59U5/PIoFA\nwEtAdbEVxjdU0KF1+asZ12kth8uBdDu0zmxACGk0wluH5JWsWMFy/O+Awke/\nKZ4A\r\n=gC41\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ddecfd3285a307aace8aaffe80563546341a2e1e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.23","@balena/jellyfish-metrics":"^1.0.283"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.252-renovate-internal-patch-ddecfd3285a307aace8aaffe80563546341a2e1e_1624430412337_0.956318726776269","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.252":{"name":"@balena/jellyfish-sync","version":"6.0.252","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.252","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2fce4eee1b9ee34e484af37cb80cf7f5b67275a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.252.tgz","fileCount":24,"integrity":"sha512-LB/mHyeQWeLPBEflZTJaCKra06fmNayNKuipURKwsrd159b2MX1pDBVsORSDBP3kSQkti8g7NJw7lEatBfTp3w==","signatures":[{"sig":"MEUCIQDL8DW93MmPxhAPMZn/gdHGiaY1+8n3RiPHk6q2o+/+/QIgClfjO+egmjip0MIN1jpJg2fyyjQ5o6y3At0G9JwsOPY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171500,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0thvCRA9TVsSAnZWagAAbcsP/09ksGFj+tXEwEzslIlM\n7kUZpLiK0nvxvYHKx/cmZmGpjFAv5qVDggpW6HSf5gNd308uU7S9uM0Mevw0\nkjn2x0J1v1Lu89150HM+jTz5kWYneMucfgA4olho6yeAPYTz9NH2eCvBZygr\nigrQDwcWqhYMaAVcXcZafh9VePbJ6yjUXvmAAnDffHa44gEffNkDszuItUn8\nx9MtM9PqAi0+5GZ4y1CP11WIDOUQPp207N6+yefdOXm9U/av4xzWOOgNqZ+a\nPsprwknGaK8IyjTPLzBHjY10J/QWnSZjLIzepgmAz5VvQ0FQ7lUtm/zIw6pV\n2tTX/Q0LsrCHuVoyXvcAuofhRzAvZ9Pf/qz694eMeIJOOEVgfz4C/O8Xis/k\n4FfOZTb51UAZZnbrifiEhoB7gTCMBHbUIpt6O6pkoLiwTEm4Px6snZ8OzCN6\ntHbroGelzBquqMcciEoCRwajRMSS7lYCKAsl6BeORTeuyVyWHPCWYrMLlwFc\nZCw69JYZVhNNtivlmvo0T0DCmMQerhWDGD+dzPvV3+lvY89h3s5h/kJ8yOnc\nlom8eN9Bce2INd7DKJWNyn2HqrKJ1KzwdkhII8WwniUDXBvMWWYY8GVyhsTx\nVyrVccZEVagYWbsIRpgM1+RXH/90vIbrcLb2x7TZIcr0oTfhH9/Uyn6IvleY\nA9zN\r\n=+Mgj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f93c93bc46decc37fe720a7870104c99351ec1f2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.23","@balena/jellyfish-metrics":"^1.0.283"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.252_1624430702610_0.30613979524833","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.253-renovate-internal-patch-19e01fb252872e52fd53a3a70cff0f0eecd7f418":{"name":"@balena/jellyfish-sync","version":"6.0.253-renovate-internal-patch-19e01fb252872e52fd53a3a70cff0f0eecd7f418","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.253-renovate-internal-patch-19e01fb252872e52fd53a3a70cff0f0eecd7f418","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0c821479bdff3a2bf4c1017b30fa7545b2612fe5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.253-renovate-internal-patch-19e01fb252872e52fd53a3a70cff0f0eecd7f418.tgz","fileCount":24,"integrity":"sha512-udtVNfvsFL36Ar7h4NNqzKlvYNbxzyOUsFfETdvD+8uV0S/W4OMS4p4YYcG1CrCyHTfinhLja1/sUk4/R07TNA==","signatures":[{"sig":"MEQCIAYd+WA7wlI7yqsb85KTME68FzaJ+lLke0nDXCh27cjBAiBaAZlme9KdQQ4F3+mGdjSOiO9hH2Z6KyjRDnU+ydcriw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0utzCRA9TVsSAnZWagAA2QwP/2PQUHdh3zGp+DK2/8PZ\ncjkiP/KmYiOSRMkFFmCWSxxU+BRYg251+r8vVyL7tnyzQUw+qqEkrneqMFzh\nGidC2Q/2DVlZ+y8fk/4fOrtDMtb4Vks2znp+Og5oB/c+AeTPrOW0Thbv205n\nMR7ExlxJLmw9wEWwK0o7PqiX563s51kZnXNb3hgv16r5XQ6xMhZ95hALAuMu\nlVVCeMJ1WvtMN6jXR4IMm6S1WzqN+C8qMAxVPPYkIhFiAgxH9uUmXEz/mgXx\n+4WyUBt4iW9ORxxySsxQACINfT2lPtFPT6DZV8X9aoOPn1PDM9EBmvPzvtgt\nQOIh4EhXWnlHy02hcw9vLxTD8BcJekVaivScNrf3yGAgGC71Z5K/VCeIWQND\nKMpzXlaRwBqc+9wpukRvzPyQfeak2BuuoWNqlEQCx8isFJBhfvbPCH0eX4ek\n067p749Wu0J3DUg1z4VOZzbUOnkiO0UqhI6RNILtH5nXpMcmrn+pldjSu3ht\nijc1aSWNXiSyu1J8L2PBOGG34gXwam4MEX5hTuEZc+vSwledZItBhhhTR+6P\nugMnrEf+WdTWXV5JkTH9S5QDI4LpQTBN9hvEH+zDGoMUY47wrpr/uZ8Rkbmj\nNMIFmx2GtmAubA6mjxcxHtaReaI64rdY9kqkI46bchTbdXXx9CVXIs7aWGDr\nAwPV\r\n=sUBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19e01fb252872e52fd53a3a70cff0f0eecd7f418","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.23","@balena/jellyfish-metrics":"^1.0.284"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.253-renovate-internal-patch-19e01fb252872e52fd53a3a70cff0f0eecd7f418_1624435571289_0.9367013795716916","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.253":{"name":"@balena/jellyfish-sync","version":"6.0.253","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.253","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"37f7746f69a3d2d2e34a89dfbc7126d28b58fedb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.253.tgz","fileCount":24,"integrity":"sha512-U0xm/lHsApHt6vX1MOu33/mUy1Fb/pbQWLdF9+pRKdpPckaJ/Lesj8Dvee6xJBmA7GthTybbO78XB3aGRYqI9w==","signatures":[{"sig":"MEUCIG2PpAVAepnwNBMgZ0lCWpvAWr6KU3VSMxqIBIaTPbMhAiEAhldC8t1ROJtUK9291CDCBr7W77fWltqU4mcII5mTpt0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171606,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0uyACRA9TVsSAnZWagAAJXsP/AlMR5yTjT0ef3kmzLMW\nUR+R9z0covMjUtuLl1erQfFcEqvOZGoX82b4cbWOLCtoz1U8OEQgMdowNBHd\n3WSWCprItRONr9SeV+lISK4H0TsV5Wx1KkJfubw0vtA3OENXBdKiEja8nKc8\nhone0eOBfEmVmtbl5ijQHCZcnFftVsiZ495r1cZQf/EMFh2VkBIikdD7QZh9\nQ2jhoo01F7z/lVwtD22q33nGhsj46R2sqYMXqsR0MlpsVtoevbdx1rVZJRXc\nWYlNSQQTv1J+ZSKk1zvJN0XS2pZIaLQpZinw6pQrr1n+eOb5supw9qXnRN0z\nmLapaTn1YdVs6X55rhR4+mf4a/zAMN6LqL+PIFDKzKeDfpJK3akdL8NXZVPc\nfAMKMrYfrrKZo3ZKa32P0szmUHHpHcYK5NwVYLyyS59HuwlUZChdNgPS6S3Z\nl812thlj/fKPNDRlfEUAQkRJzT2C2t+TjPI/SyabWkX3PQ8CfoY32yJLvXpg\nQoZTF/MmgD5PuVgXjHHeB+H0FRN9ItMaCp3L1C60pM8LYdaXoIx4QXEYcfCk\nF/kgVHwNk8ThZWGzI/z9s9LqgtGxrPWT+QLjFFZkfm5LKOOdgrfAjgxxOu+d\nv72judz5gf+V802MiCV15uOUYo1PrtH9AvyBTpfbav5ctZnMjLKG4AviMV7T\nsEsO\r\n=PfjG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"df40954de4cd2bc4e6087db906ce6c9d1a505678","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.23","@balena/jellyfish-metrics":"^1.0.284"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.4","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.253_1624435840239_0.8199391075334297","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.254-bump-jest-0d7edc82dfe00f1435fe4abb4fb963f430f19fc8":{"name":"@balena/jellyfish-sync","version":"6.0.254-bump-jest-0d7edc82dfe00f1435fe4abb4fb963f430f19fc8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.254-bump-jest-0d7edc82dfe00f1435fe4abb4fb963f430f19fc8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b6077be1cddf04897b652508496b77e6fccfc991","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.254-bump-jest-0d7edc82dfe00f1435fe4abb4fb963f430f19fc8.tgz","fileCount":24,"integrity":"sha512-dXZjPGbmhURhJiYzxA3+OT0eITeHWO/4kpSMOL/3L7gsX48mx8nWeEKYCbndoQqg9SWyCIM+IX1CB+7JT3+A1A==","signatures":[{"sig":"MEUCIDQs0euiBCNc6tyrHD2sk8l5MnKbkuxERIWOI6HQBcfCAiEAneJwyqEexE3WCBA4HNs/BukTfDR5/ZIMlUL76yJulik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg08OhCRA9TVsSAnZWagAAGEkP/R0szB55olyuALdVfbhf\nJmhfWR1VLAV615ASDwHWQD3u+a04Df7jsePh03MtqcdxXov9pPkTeCVvMwKD\nQTNK+AAoLVtUNaGI5YoflsNzZZYllzleT3CYVFVSatooZsbXA7DHFZ76VdwU\nvPm6ik5gFYBjW/KNO71rrK7JcZyUxJYgdQlC1eGCh2PHeJamJtc2BzHKbIxV\n4A4mXlnzbZk9eiYu3ivRZ+i+FSzEUTnlFJBcWKT3Un+FNLPXF4CLCm1EAnpo\n/4zAcV5llYFPhDewLIu0ioATjmIIQIszqrpLic2pekXjS2xA359nlnUEJIVM\nNcCh1oQqvdBlYrjcLZQ5UUQ1U0ZKSieCad+waZHtqmrRWUfH3uEW1yWW5V+W\nVr49pK734MvpvEH0jQlQAk9AiQVMKDSBkzz3ALUuvmKP8oKeMIP4i1UMwSsB\nZCMB5ZovugHBMdBfaWNFuI1YOR3qTSspc3ZY9nu13qckFc5e7mkOXNQDrMo2\np9jxZX1odW9/aoGCKvWIb7YeSOeED5C9qI2BqT0uRACcfnzwTQE6EfMcylsP\n+qd5fOr4+wpV9p1hPnXRhc78QOZi/8zyPTCg7V62QAdmohMH/uhddd0ImYRa\nYnpZcqbyRMGYVDyAyGzTuQ0sj5JkVFQdtcQAo38Frj8wpXWvGM2DCrUla7T1\nymdi\r\n=Pdn2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d7edc82dfe00f1435fe4abb4fb963f430f19fc8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.23","@balena/jellyfish-metrics":"^1.0.284"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.254-bump-jest-0d7edc82dfe00f1435fe4abb4fb963f430f19fc8_1624490913512_0.6700031575105236","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.254":{"name":"@balena/jellyfish-sync","version":"6.0.254","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.254","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0497ce4a16a536ff4ed396658c96aa34aadca4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.254.tgz","fileCount":24,"integrity":"sha512-j8JX0VRZ/ToTcSZlKiN+I+RuEtjufXVAwhUde7W5kQEDAh1ClyNOOqI6q2cr5AZWQcKfuOUthZmMI3ZBPIA3DQ==","signatures":[{"sig":"MEUCIQC99ToAQ2pjiZMgoCVnQe+Bf5Zik3avQWP+JN4F8zF3swIgZbNfZ9kUC8RTAYwd2CC/o4rE75Vvz/T+ap2MoTluQaM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg08TKCRA9TVsSAnZWagAA7jIQAIvPxXVtaw75s/LZ4REO\n0xDEhmB6pDHDqgVOcp46jLjOKxS+T1aScThGqmScT2RSKaEIwTW9+lnF1Ukp\ny7/gedld1GjwHdmQisXQ4/0bQCovCWlYkNum41QQDd1ni6U6vaJ/8Y/DnlJs\nQYpdHSnQsc7sr2fhXkjdH+bWMsMy1HXGTdYgtPfX5uXpvJEQbtaGc9JVu8AG\nCMBma2cksPybjWT2Bx0N7jxNp4941KHglRP0tZWCrdT8CyW0+u5ZvsPa6dd2\nm3zSre2NjKRpPMYTUf9KTUmzegTFfAoXNyVhz/ML9NywuTTgDUx4DBPGZIGw\nv2yaecwNpsSa2v9hVB5ju19TW4LRUkCfsEtbkwjKpHsXU9QA0kwAiR5QhGIq\nNqbDarg1Pk8pKhvvhijrjit/W7B6qhWbBA5sJyJBih3GMe7uavscLDQVmXWl\nT38k0HD79JdfjxIqKblGfLOT01BsdTbzqwSvCDr3B1jpKa+u8t2IoJqOguCE\nGt2KxfxkOec73jhD+NJp23ioWiqWreai7W1prkabYb2CNfR4sViIDy+ojEGK\noYtiNq3lzuEKU+5EKhexaV87FSIt5D1vTtWCkvicNxK+4sBehZJVWidUzZeb\nheu0vSyOLrFQ8wdQK+0xOkekymS2Vtw6Z4C2EX4ggZBrfuk/tg2fyySHYqmN\ngJVf\r\n=3rVR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9a60fd434f2be5e8da522c1a02e49e1e21dab21b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.50","@balena/jellyfish-logger":"3.0.23","@balena/jellyfish-metrics":"^1.0.284"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.254_1624491209508_0.6802047206455826","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.255-renovate-internal-patch-10975271a490be856bd803a871173e16c4d30ff7":{"name":"@balena/jellyfish-sync","version":"6.0.255-renovate-internal-patch-10975271a490be856bd803a871173e16c4d30ff7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.255-renovate-internal-patch-10975271a490be856bd803a871173e16c4d30ff7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9142c5b481bcdd230d7ba02b1c8696d5c63a65d2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.255-renovate-internal-patch-10975271a490be856bd803a871173e16c4d30ff7.tgz","fileCount":24,"integrity":"sha512-3g1sVgPPe6S/QULOzLg+q1Ylpv2FT/ewfwt4fRqUHC7BznKtnlD2R2FVynw5oW7ev3v0jURvhQwnPMRKbJoQHQ==","signatures":[{"sig":"MEYCIQDs23t9G0RPLmHeGQpa8ce0Tij9jhaa3xW4/1UDuXk5AwIhAMN94GZD0n0gsupAw98+RuGKonxxgg+Tsx3tzz9wMpmj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg08aCCRA9TVsSAnZWagAA3QsP+wb5bx+jmj5K5tWkmAI/\n2CvPLrdTifqwZZS+Lo3LH3+Q307mt1TP2VM64N4X8rXQM75olLSEUnVhwvdk\ntQP8yIM1hkGC2JYvxSMqCN7jx5LqlsuAX2Wd5FR4M166B0FYL/ycw1xNA1Cb\n9SAkiYdEubBPvDJGm/XiBiv1EZPWxBwiHfv7CyrzJW2xl6icqNM5ZY7xRujm\n4uHG/R36TYG/ZSipiDrR4IrR4pcwGaKmZgJb18M+52Z4HlNIFPSM7584q8PW\nehSePN+tiYAqU4wgMeoSL5IciN3DYlIQUdFuchLmRCuhp0Lb4sqTzwIIXeVN\nhKjn2H9ZCNYnTLUeLNUP9csGdCR+c/ywAFhu7mOXj8hGYhYOXF0lPkj/4zbY\nNniLU1G6R6cbuWDHb0RgpnXas2SYvMlstoCe24m5qlRvzQEyQ3678O9xJGd5\nSLHJNMiP5IQ5brxpgQUN85Yg5bLJbSSX/lFs6SHHDXvUjyn7NJI01dy7Ved/\nqqv006EjVNi3sK6vJ/cB/ppdCf9OBWtF1F75gP1RjtFj7R9A1LekBxpzrAP8\npWLsjWBgI/Ya/eDoL3fxHA5Pw6IJoiCy5w2hRsipVh0G976sipBIKTJJDKHN\nYM+9O7K2a8susBpeRPC1qrHz+EdTYaiExSm7mllMedFFz+fK3DKX8kN3oYPd\ngvq2\r\n=xHbZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"10975271a490be856bd803a871173e16c4d30ff7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.24","@balena/jellyfish-metrics":"^1.0.285"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.255-renovate-internal-patch-10975271a490be856bd803a871173e16c4d30ff7_1624491650055_0.42764680064248606","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.255":{"name":"@balena/jellyfish-sync","version":"6.0.255","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.255","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1cd211324f622fcd05f7e0c6a60060e1df04de71","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.255.tgz","fileCount":24,"integrity":"sha512-i78qIyAPC42JiC77En29raubsYoXw7RMdQzPrDXLMeUO3GVj92YGCxEfad8qHP9381j39kxQbOFL9xu63CCOQA==","signatures":[{"sig":"MEQCIG7WqnZrHVRCh4FVLPG49nyp3YdaZW9wf+BlJuNKP7OdAiA7y7pugx3caFh3gAoH7fV5y2hOI7/PbcI5bTROCbzTmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg08hxCRA9TVsSAnZWagAAoWkP/Aj1elH6AuVt1KA4sMnC\nlWL6Y/TqGPbYBcE1wmjVCMkFrg/RJ7z4fVh4KXZvF4g4hOTyG/RLmKw8bIGW\nTovSNEKRVCnlULIdkqV9dJhviVhYVi0GGFzNAt4fcxMoaO0QaEk7z780/2OT\nXhlYKw63AMf4CY0qTHEdxUe+kfaF0ou5vCYVl/OP3HYArBAi8iC6MEeBR7Xo\nCvNy7GvbTVI/a7RUfOr4ZdWxYnFQSubcgrF4m4V02M8UvMI5gkr+Cnie0auZ\nDf0WdARJEHze0zYnZtSEbjmRePt5qNvarFMpR7bF9gys+F0EhgDMQaY9dfVX\nJx8oT1W+QGgDcc4to6oH3foJUUsomTrhvXfPz/vX8g1UW5Zryi8MQyMMb+8K\nk9qrm4F+VR5psyszyXf3OtHozMwH3Oir2BpanxKpB8oU4hbOUFooxy+g493r\nBRHT/Tmom8Oe+SLeu+Sv18UJXSQ7DOyQv9k7xhLSTJ/ZDKhFJiBnaSaK19z5\nRCI8VdKjNAYbZRoovxwyptT7MajudAeazm6fGRjNFgQ1F4XN0PRriY0kss0r\nTBN4LIxAX/9TYdRsBgMKAEDideAbitji4sNX0zNt5mP7nywc7/FOnmBUIPPO\nKp9gSDNNs9ORYBTbgSaQm6lqP/HD7hdczWfXXFPVWJ30wEVSInMaSe2piCFU\n8JO3\r\n=rWzG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4d79afb1a06810bf93eda533de1c32140ff69dae","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.24","@balena/jellyfish-metrics":"^1.0.285"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.255_1624492144897_0.9091669553254986","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.256-renovate-internal-patch-551528d887a915092affddafa9c873d2f315e70b":{"name":"@balena/jellyfish-sync","version":"6.0.256-renovate-internal-patch-551528d887a915092affddafa9c873d2f315e70b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.256-renovate-internal-patch-551528d887a915092affddafa9c873d2f315e70b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"84f51bea6cf02360e675f3b09570ca526bf03560","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.256-renovate-internal-patch-551528d887a915092affddafa9c873d2f315e70b.tgz","fileCount":24,"integrity":"sha512-RWBiL5ykiYgArG8oZXk9sKO4+bmIQjoejA3ajSKGEVHkMtlGtJ1vSr8qajW34Q+kL7DfutQPj5n9mWukkVK3Vg==","signatures":[{"sig":"MEUCIQDsvgnMu80pwb7U5IOGfx5hPqxyzx5SVldL3wiWMXuPYwIgPTXRmU1/tZB/Z4AREA3iSHl6IZ1C2XlZthbGBexsw6o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171913,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg08oECRA9TVsSAnZWagAA6qgQAJ399974LkkstxV5olQq\nCgBtE7TPksKqnfONvgUBqWfqr3iiRjND8001Tc+4ZmFGDlyjYL7clXJ80jR+\ncTcvCYDcqBtYT/YqpagkWmWLizyfJJjtC1JrqBW3jkhY2ygTCrN4Bc/mY7Df\nWFpILbpLrs11HuiE9PbHc+bdqjIOCFUwxAldJFrb3w3LO6ghOZA9VPG93cMk\nPeY2J9hS5L/op6HsSbZ9v0SwSY7fq8KJHdmu3b+fnsR70lK9E90RtrfkIRkX\nEnKCd0VF4SQoYUidpeXhN7vxcNvfrwb44LTHrQWGW5zmQHnTme/yGEDxPzuh\nDL/WK9oNjD0JJdQj6WdRIYJjUUfiH7/eMoWn1UKWNB2Zlsio1XIHobuNWyLK\nHE5QAGYNFZT6ZGDsgbbdVmCOuBlJy0myjMNvZaUcCn2F1an0w1jhCMuoYeE+\ncAoBboP3r5MT5VoOy+hQfxU8uxO1XaEyzUiyg4M3RbJpTJLopf0A2XqvWV5H\nk5BbxcPrVWfI2q+j53DtVzY3lMM+n7pqZbCGqkeyf8w8sSZo4049RRbgZdzK\nNjmjz764r3Le/EiAo32S9SBNSVCjA4BuBgJjtAOXeiDh3xzQHIzWeA5EGQls\nOtjfLvmcYZcvBd9NgbR/cw0JBHXuw5DkBCLhdffFdcZ/JEYOf1tDHrLQ7W7p\nmizn\r\n=X2Op\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"551528d887a915092affddafa9c873d2f315e70b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.24","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.256-renovate-internal-patch-551528d887a915092affddafa9c873d2f315e70b_1624492547577_0.044649775069941056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.256":{"name":"@balena/jellyfish-sync","version":"6.0.256","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.256","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3df770fce25cb5c23a89c337c6b162ad15051a27","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.256.tgz","fileCount":24,"integrity":"sha512-idnLVhTAHMFgRoT85C85lwW9HKO9Yad9teB74ZgGLt7AXuWkuz7t+Qjz1RjBlA/zqX+7Xv1aSqVamZJ+rV6Oew==","signatures":[{"sig":"MEUCIQCK3ev9ysZER0+7fpUOL1Bb1AFRrwNBIl2t9vSqWPkbHgIgYVQWI3WezJpH6mnODioV14vAZZ2/7ya+Sy3nGKgjkX4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg08riCRA9TVsSAnZWagAA13sP/j3BiTsFTUCAXqHXv5cK\nTFZrWbc7Dc1ZV4tFbX5baosycZRczMW1R/c9tQ0JXRvHKWaD79tyEZE8ROyA\n6AG1bK5c7gOUknzYbxLLII7NplKMcn7JatEjlpdw8FVnzsHYiMSKh5Am22Nq\nN3NLjIaXN7i2IRxC6z9z9+bsWntmIvjsls4MKXE4AY65Tm/5PNAVTSG0Vkt0\nVuX+EAUOqhepslaK+I2F8JKVyC3dBCje6RTqb44eVbG765r9C98MvCzqPe+N\n1PS3BJqXP2ILu9snhGO7eE3fX1qhlh5gtUOHcqX3u207bWSLDGgygIbmZaHw\nkyoCf/NMowrtvHzuUOsjN7Gqp3rJgfQHUGCJzZNdgH1jqxgx8iW7nK3fnapf\njvJ3jOcxqEwSKl5yBlQo91/3Jbe/riraqwdmox+f+28Nbk18WoIqVVbVaHJ4\nbkGfGaP/vdwgpFHR4OLUyZCtY7w1cNdpqNxat1aFLErYZcGDfUp0zQr/dMT3\n77cEXwBUgERRRziIBJ/EVZNlflHGNV9bfAZgszpdzUteRtCILg1fqV/80ut+\nIgbNSD+ibPkxeiWTCkfncbYTQ7B6v9p70b3Mm9ScnwSFQ/hlVq3XktwJKL/m\nxR88BbWrUYpor9OSBJsW31iDBSJczHCqCpb7i+wPcUlDjICcoKEWC6h1aLCr\nl6wL\r\n=QAex\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84f6afb0c334420f906b47628cf0c97fc5c718be","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.24","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.256_1624492769641_0.39136609539724865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.257-renovate-internal-patch-2bb23cc8706b8901221a0c25171003184e3abb9e":{"name":"@balena/jellyfish-sync","version":"6.0.257-renovate-internal-patch-2bb23cc8706b8901221a0c25171003184e3abb9e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.257-renovate-internal-patch-2bb23cc8706b8901221a0c25171003184e3abb9e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ed40f0973204b1587aa637e2e69fea3fb9c55d4e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.257-renovate-internal-patch-2bb23cc8706b8901221a0c25171003184e3abb9e.tgz","fileCount":24,"integrity":"sha512-lmSJm+rrM/eTTMUwqgm/OWRFUoSvxQo8gxfVxaOZXvL9kbm9bHTSKiR72tENWEPdOP9YD2caXPCjbC+QPTVcnw==","signatures":[{"sig":"MEUCIDJSmE7EgNj+wMJPDhK4cMpJB7jY+5v4T87ZgdCmI+E4AiEAzGj3DRK9X9o3FmKimmudVRv+DmV1dekKf3dG/qj3DCo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172017,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1J/gCRA9TVsSAnZWagAAxHgQAIbaeo1ySimk5ggyY1uc\nQ5xOrIHERnJDaRYg0tOZhZbhee6xUKo/wivU66TONaCRyLmnkgSbFhMiX6Tt\ntXAeHi0e15IF9wkca23dtmvlBDQXajcIlLDByhLmEv5ucLdSG7t4sALwcjpx\nfuD7INF9cF1k5fNFT+yV2Ne43+Gb3X1lXPQLLGWrxiqyhFRZ7NPrPjt1HsF8\nXWh74hX0QYMSPYVFEJDRaEnFliVerKXN7tHcpayXsl6PIUVro468Md6OkZ8u\n8FlEMgeFgWspninzv+MtVW+woGrbkqsudJ4zRUHOiI6iVbz0fFO2ZLrPjWXE\nhBF2l72qDspYXYHbnm5i5+41jm0SbZ3kSn/Q3e4TH6lvL57qmrPCuJ6kEeiU\n6bRC65fBwUr1xKVLGythNDILOgcu0l/NLZpgnk0pLAMcsvQbIJmwMjdRuGl9\nL5BSp2z/tj07pw4zsNn3pgiSPca02L/feUgfqssKbinBgu5984C3R7H4khwV\nmJbjwOIqHJn1dvt6xT10xkBohWjLoMrI99ITFU/aedUgkuFT3z8cfr+z0AxG\nsB6uz0QrSYB/Ad1ZI2sPglgKxgOlgURgy8rsqYlivpoSBZ2KpL5V/DO8rWwF\n149SXBtpvQnQIMufafQVLyw2BzfDrZhzOADaIz+UArqFyhkY4stDw9NRVYOb\nR77u\r\n=2HIa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2bb23cc8706b8901221a0c25171003184e3abb9e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.26","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.257-renovate-internal-patch-2bb23cc8706b8901221a0c25171003184e3abb9e_1624547296213_0.10623626009287901","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.257":{"name":"@balena/jellyfish-sync","version":"6.0.257","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.257","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3db0da764649fcce13de84b04761bf3b28b71325","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.257.tgz","fileCount":24,"integrity":"sha512-vmYKLVpmAR4/SXxCwi1TJvIMupPy1NbVROaedYUlEATb7QnZf9Dtmq3pGN8xM3SPkI5Kui0UDjOdQHcTBFT2Tg==","signatures":[{"sig":"MEYCIQDwvT8qPP+/vSP6mpKHyRSFlLoBhIcksFnDXvbq92ap3gIhAKjQVmQJLM5+XJFy216QgBuPZq1uV7AzBp1/ZZVtHK7W","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":171952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1KELCRA9TVsSAnZWagAAkSUP/3zPKuHroeZeVR9MkhqE\nUo0y33bRv3dmPop88DSrQWj8nR1OZifPyj1JJNLLx4dtQpoztsfKJ7LoOVwA\nkPuMAFNZq6loPSW6dzRL1V9jQz4Cv3SdQmPKq257wtUnea3wrUQrxbyX8RDt\n5TQss+ZiyUNBgdonIkFCew2CHWyn7DdR/sA7YsR0XNFfuYDKnLC7UYpbpI/V\nvbJqENcqXIXrbLqY1DwOev/a16BbqhRaOKt1xLpMdCELgIZUfZQzsPs2pUq9\nB6tV12tYN+crQ0yTljYSzwK5zdkFWLc2wgoPoP72Jwv/Dzu6MNxwJi6Q4JiZ\n9eDBm8imeQeE5BeGHrsrNxmApPhzKLE/+r8tZ5Arc/N5oWt1PmKapr7DplEa\nyo5oJ51DIe26AVJt1K1YFjiZkV2cLYjdfKs/9f7UOtJIU77YyaHjEHhfJgbX\n82riEQ7u0feFMk9ShkAz0UamdR64LhPckFESXXCgQRe0dZhC+PKb2UiHO0pS\nJvpdwaJdJo+evyPGlsnY58pK6VgsqCOuDI9RnGCnBnVskTU4ZTjPG5FqCAtC\ngAee3QiEMaYXIIDkn4at7aigN6eKqb6EYHi88J8rzr/PgW+ZVeU3lyuG9CIB\nT6PnjbUsAk3P2Ejb+3GhrAKdhzC4QpRUF/TmbQLqCcRRKC20FeO16qRajaVV\naTXG\r\n=mmue\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bb8e1a7da01520e516be8a41641a9bfb899ba114","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.26","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.257_1624547595455_0.5540838456156671","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.258-renovate-internal-patch-1fc23942ae299dd13f19dfd334ce1e6857e35c24":{"name":"@balena/jellyfish-sync","version":"6.0.258-renovate-internal-patch-1fc23942ae299dd13f19dfd334ce1e6857e35c24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.258-renovate-internal-patch-1fc23942ae299dd13f19dfd334ce1e6857e35c24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a2662059bd3b17d1aa203da60463033eba4088a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.258-renovate-internal-patch-1fc23942ae299dd13f19dfd334ce1e6857e35c24.tgz","fileCount":24,"integrity":"sha512-BRE9VKGo5UAE2gcbhTjDZMz5H4Ut00kPS+2WieXdq/wFo2Af/I/ywZpU4KKkAWVQOCAwlgle1EQFMxvql4IQNA==","signatures":[{"sig":"MEQCIDYs+oUfJOelmRaBrRrLTougzB78TF/3PoU1s9AcSXrxAiAcdJbpokLjXWZ2ZKdQEuAdYfuhwVYT2gKNR80rfUwoKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172121,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1T7fCRA9TVsSAnZWagAAMTMP/Avp2wsIGKDNobj3G/kR\n82nLvqULC5dh981IsUgzL6I9x75q7WJjWf7wWUKZ6AW+G1l1eV+vS4U6M1N9\ndI2KCMO2ZItz61jBpsXASCLsKX/J8BKvjonTdG568z4/x7RfdnRNW9yaDoDX\n4UpdDcj4EvTBZISVw4P7FzapoFB6eG25sYIMqfPG/i7lm9D2Yb7V7B5zFGnQ\nzuL13nqWM/yjR3zOr1ixwu1+P72CxJPJCDZQgjvthHmvBGtshVSb4MaIVW4X\nAtp67W0byDu8OqENNUmJf3jisG5lKkq0a3jYxHlpJjPwPq9sFXlJdcUbljAE\nAhWGbPYrp2ZkxSTtv9ryntSAKWHzlLDBqYdApHo2+t1tGHIu0qvLBILa5Oeu\njfmHkhQoxFoijehYQcFl5ZjkrvyOp4D11sP4K4J6wSqI9L/DC1cZAbPauGKF\nrpT7fAr6lXtZjvxdaCMAqcUW00Anal63CUd8CPgSjMFp8VGrogsYRN7wq8US\nU0OXOCUDmDoq+jEiytQ/HcCLf67FsebMpbxJJ7M9ZGKq0KRMDdMC4nAEH+qW\n+UezlmT4eH3anNIDCUOdZy545G8XgJqAh0EBbOqzX6QfI1fyhLNltot0AV9W\nPNvYZaz9OrAk3FXLBZUAyG2L34Oq6fgoS+G0UK7IzZoEqnLSndtcE8BAQfiI\nGlnm\r\n=+R7t\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1fc23942ae299dd13f19dfd334ce1e6857e35c24","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.27","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.258-renovate-internal-patch-1fc23942ae299dd13f19dfd334ce1e6857e35c24_1624587999239_0.4557597765739343","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.258":{"name":"@balena/jellyfish-sync","version":"6.0.258","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.258","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2e46ba3c16a21c84e8997fd8f1b9164e3de0bdc9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.258.tgz","fileCount":24,"integrity":"sha512-uh4qgo9PWlvCU5Fqjlea9TWd31L7gPZgS+zMarUTvRMdy4uWJqsx5FlB5jHQUtvEEzE4zJdHzlDqAbgPbC/rTw==","signatures":[{"sig":"MEUCIHl1beExRXvh/lgMHdkogrhx9ipZBL+v3JsgsxnEkVsmAiEA3I5F632LU9aMNGg98blI4oPfmV7LrbPQcJxqZW+4K38=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172056,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1T/XCRA9TVsSAnZWagAAxIoP/2OcYoFORKyK9z3zFTGL\nC3muGZ/grjleZfVkG0C3scwyiK9q+W2bVQxOSh1XuaZvWqGrlcjoGLofN42j\nFn2g4cZdSCDZeNYchXqIyebmuiQgsOOxpniwhz+GrJ26Q9kMehFzwolGOz2f\ni6v9/jh0LlJDdnYEQK1L3LrbmKroYE2HCP2cb9fDaFmAsEGa9/h0aEjy4EP0\nKihYVh3/QhD4z7rts1UDJbb28PRR43S6voLdRKCZrYwu1x0o5rKDJu1PA/NJ\njmrpObSPKE9JQ/Vxqu5TsMaFzDIVaMRNWlpqa/mAQCvzrvmvGSntGOzsWKAk\nYOemLCaTh1q4hG5mBbRMNm3GhX+YsbD2eZlq00yhbPoJgCvr2wZ7ZnDetJfO\nPh/sGn1c7v4aPNzfpZd7VbFyoH2iWIqoh/HHmuDe7/eY6yZk0oY3LQAd0CVt\nHzilk1OMwx3BL0Xm/669yG20xgYQiGGHqUlybrbIf5EqSMh8lfbK/MiyQE3Y\nwHuAnNjugvjDgl57w2gqoJN5vW+HtbHXRA5XsU9y/a5awT6lzO2Q8hHYeZIP\n+/P/4Xgvm0UrGcfcFT0tMsxH2smOiPOED2ctizvKP/cmcwAdpLYAxTRMKLk9\nTPRuyIqxg/hfX3iGdOdWhyL/ICCnOGAqcEhQW5PmvB970kT+GVd6jfgkstYk\nW9Th\r\n=tqZm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d96d56cb0ad6234e8487eb21340002332e3893c9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.27","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.1","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.258_1624588247167_0.3756271517528067","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.259-bump-depcheck-19a2f41373959d0cc6c9cd6225cb580382adfef3":{"name":"@balena/jellyfish-sync","version":"6.0.259-bump-depcheck-19a2f41373959d0cc6c9cd6225cb580382adfef3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.259-bump-depcheck-19a2f41373959d0cc6c9cd6225cb580382adfef3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0842e6ef95c4f35de38aa9da961e5a94e383e007","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.259-bump-depcheck-19a2f41373959d0cc6c9cd6225cb580382adfef3.tgz","fileCount":24,"integrity":"sha512-Xx1eMArxh1LIbhoiictAuUvlNK4z2fK/KJ0U+8UEjV86SCNp0QmTKt3DidAuN8zyhdsZpjNAczTQjsIEyK14MQ==","signatures":[{"sig":"MEUCIQDjV3ZTBxiOiGTccY0jLFAbWxrKVUhjymZ00SAdxwPRtwIgPfxJW51SG603jmfDt2TKQZJ2l7SicLVE/6nXj6JT+zo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172178,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1lxLCRA9TVsSAnZWagAAKVAP/1n2yRMeHanF4iJAXcQv\nZYsM+zwkGjcHUjCNfC7HX+nA4Tt9LCx59zuty83tgGE9BxRMpnbFTTmmWvin\n6i034ezQrG2Ff78VAwVDNSvFEjIgoj5oPVdCJQFiAecn5W2E/qrVhJr3G4mB\nHF5YeA/PGNTk+Nz32tp4fcZiJHTm1qZdetJsrA6x57K0uUKAkVp5GG38B5r3\nG3xH5QFkNtVaegcI0nV0ncQrGbP4qRlhSYc8KSxkbDmpOI7rCGKK0xpTSlsA\nL2qbDnVmlyVlgJFK7STKIQri/D2lARNwCW777MBdGh8HYydb8qmohAhO4LUG\njKNmyRPp1/za2+w6XT4kq0cwAqDG04j8JAWaxlHCUuReegfZGDUJbIGQmA33\nVrIRMcbP5mNaPoEQxO+hvqM6p7K//9MnEva+fJ3vctt0B1ZyTYZ8dYek4pgU\nvZ/F4v7ua6j9SuBx47palOQ7rFt4HDYrM7bwA9q9jbJokPHc+AFjIS+9F3Kl\nF8lk3arAbizJi7xQWpejGlxkq3J36juTCsjSGB5u3kViGimahb7sGNEHq6oG\nUH6hMkWAow5BTrUFLqGA9Hqynv+hyVGP11am7S9KWIVenm+AE24Q7bUKsGBw\nga9hBZ8gny/bOMR9/o/8bYh+A9UXIKqXXbVAnrEt8i6ktyR/Mq2Ko0iY6Eav\nI+7E\r\n=e8tU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19a2f41373959d0cc6c9cd6225cb580382adfef3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.27","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.259-bump-depcheck-19a2f41373959d0cc6c9cd6225cb580382adfef3_1624661067004_0.8743600240458749","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.259":{"name":"@balena/jellyfish-sync","version":"6.0.259","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.259","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b68731b739e9442e525ad629b93eb11ca7a38a72","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.259.tgz","fileCount":24,"integrity":"sha512-nqtskJNe5R5lBbs1n9IkbJGnevQnfT7+ZebmSJc48fyswqn8RBYQTOqa/4iQoMyoAOT3GMrz0uaTzbH2M6FCOQ==","signatures":[{"sig":"MEUCIQDy65zx/4bNF8btmQCXDJlOVp7CMczNMJRy2uh3zgPOlQIgTHBpGiKghVkW7NmRnksiTH26kXv5LQEB9z6EhWIoW7s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172123,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1l1DCRA9TVsSAnZWagAAhlMP/ib7xawtBnjSjHbVTd0h\nDlV35KXMeWBm/dZaxvhSpCivjni4kabAdCnSt/2AL6zUQw8y/KNWilXNV9nX\nA/op68/E66sFjAikyh/HOM6F0ofuqFPpY4Emuauw11I7H5IwlKOQGd/ufm6l\nDeOAuDC+MLKVI4tsJkARLvMMp9jeqJr0ntTVBJat2IsURvRdTWmyg4H9Ctqx\nlkX2hGMWvTcQFnnJKW/UcgP+q2FECUCennpoWVqc9Q0jv7boxWEGKBau13bk\nBs4mG3fTNP05tkKb80b8qEIUtygxwtjxxfwoahSEHaML0e+jXnQQiaAauX6v\nkAl7jaOYU++d++crL+6ta6jXwk8aClUP3/h3yt0c/nXQrVzJUtn3f3FavZO0\nZbZ/AVPvLcjCWvuPIUYL9xKVL7RNk1sOuE2uW5T6cdgaLHAw4RWa8a12RDtd\nThn4pguRRYcmaSJNWOOiLdBccsAnioEKu0y/xRbAWP09fbhUR2/znbTCgu3d\n+nx7sIV7L+OPLWYUU5zVi5g+sSPuRkKpmM//ieL6GDhPrvk+WDMvH6XIwdtE\n7rTuTDlokBmkPYGU7oWTLxIgbxeAYRLI1JaDakf2sf/uof/S4BlcAbvEidHU\nzY4MbpwM/U4yVFSdbbcLSVeHfbR1e6/wThdPVtW9gtBCtBwvOB3dhgOnuLx5\n7qiQ\r\n=ouUg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b9621f75af1388abaaf3466ed3b1dd7d3c1678de","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.27","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.259_1624661314594_0.08224831000376209","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.260-renovate-internal-patch-dd290cd517f2c9b18df4211022890f7b3ad69859":{"name":"@balena/jellyfish-sync","version":"6.0.260-renovate-internal-patch-dd290cd517f2c9b18df4211022890f7b3ad69859","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.260-renovate-internal-patch-dd290cd517f2c9b18df4211022890f7b3ad69859","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f19f420d2de1c903d86100e1e1b08afc2c77f90b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.260-renovate-internal-patch-dd290cd517f2c9b18df4211022890f7b3ad69859.tgz","fileCount":24,"integrity":"sha512-GRTgo4Ypt/q6MFqEaqfrAoAUgfqEmkN0e0Uus+2VjfatPaqewaK0UJcQ9ZsreKhmVmg+ay9FzaAKjKIBw00a4w==","signatures":[{"sig":"MEQCICcjO4SgCx/JbsfFxXqjaCAPwVE2yrEZfo2M7gspIOv6AiBS5vboDUrBX8SF0inhekFcun4k5s+7aC98KQYFntmQrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1l/aCRA9TVsSAnZWagAAEDcP/jxY/4x5zLBYsrmocUSb\nlgWparxwEIB2uMHGoMYyagLqCUpl+YhPc73fZVSMIO1rjXyjQexuEgUWb7Nz\nqse9WA6p3Y4K5D26ePW5h0TW6EJkNxgNXBN1m1TvotasSi45h+6cZYbGVV4H\nmykOVXCSfA834SBSU4sSuFbJtKpsdKUrkLpXKI6J9+7yjR90L7j4U7bR3kow\n1+sewJg9eBavWg3rGmcu7izjbcNHBkEudms6KjrJTq8HrAdQ6pKijo1vaHxY\n2/mh69Qxt3+KA4MaRQV4aeM3srS7Yb/Ear6arL5kdXp1mWccAfyFT6OeOCL7\nSOoyhzYzuJV4tozGwnXel788h1UlReRX+ZLRJ3Fbb8x7q9lPhE2lgVCZ/WH4\nd2Yi2K28aogOcNDcHFinUsSP7K7ISxryJOBkY44dI9uDNYBR4JPhQ+i8xtj1\noTv0geH0iTFL3qM9lMkVD580GZbMI+W/H0aEafjUztUf4dj9kAT5B8oIrKtB\n+rSscggcEwLrFFWxoATMZhAzq7ddMdJMjBA79ynczi4G9vho/dCHDJekYBGm\n2XGpcnkDnoyL0mnB2v98D4vzu47ZuHAcV+l5z7ihlj87AJLwTtFRTdOwgGFe\nPfO1uWJ2NI/mIVdZmJoro/943YE5oGWY/AXD0uJ7fKshqJRxdCXf1UVpT1v7\nAF2l\r\n=QKmq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd290cd517f2c9b18df4211022890f7b3ad69859","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.28","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.260-renovate-internal-patch-dd290cd517f2c9b18df4211022890f7b3ad69859_1624661978264_0.6357741419443244","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.260":{"name":"@balena/jellyfish-sync","version":"6.0.260","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.260","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bbf0a70d1eda63a18676e0ed5f79002d24eee6b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.260.tgz","fileCount":24,"integrity":"sha512-oxWC9oxLIJayODeXt8GiSgC0QmH8MnlNR7ubdtTnLB15lN/qsqjfNucHOpbVGGF8/qHPOdk1la0NqzBsRPyWLA==","signatures":[{"sig":"MEUCIBUv+FTWexjGuJgW4y/7yUhiZVq+DQjhOnAQLeVSCBKpAiEAnkkWRi/DoipyftoxywqNTL8oXr50fd33W6sV4G3Cp3k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172227,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1mDOCRA9TVsSAnZWagAALq8P/3GVBedG69hxvQFPCdDu\nf/PGjhyVvGavXFYl5oJBoKKxVlXsVJuazePX7OecyQTJQ4q4VbEaCEBw7x97\nRsXemU3u3+4Ji2poFJ/Cvk1A6EqZ6IS5LK8agTax5mE1uAfTMJSnQ+EQF4PJ\nbfEY0SjOKholLtbLR6PdnzropfdwgeZHeVFgTvN3jM80VVzKd6PhvmThy1je\n/B6zIs0F8iJ3ZZzmJN8kjkCjVKQa3ElvfKx63b536s1AzogxkoM47Pw13Imz\nay8Qlh0xStJulCn9VWgfjozM8eJI5q1nEIe6VzJjiBwymHpcHiJtm1QytGEO\n25eMHPsjffrpYLJW5dcHesp/rmrxCSXKO5DIfqlTWcpN/sqfcYdgITfUVdX1\n9DLV04c6gODOz/slaNUHfLUI526Q8f9J5CqpfuLWmFkrMB7LGeCNWSJFHn3a\nakpPsT5eAZK0vs0I8ZJTwafHyLS9nHCrHff7ZurGY/TuOmFT3aE4a8PIYLPS\nNCzdcaaFJ61zI8PIl/KpuvbRm0OlVYsqNCjm/imgjcT8DIDbmH+bQSvCEM35\nlWZcc3QYb/OLlvgME+YD4+X4t0hr824irtnipfXxeHKTHHDF4ZspSKa3GOeo\nPYZekZgQDhUbyRXrAX5/XvUzMje2v2M9rbzN2SaPFpX1bmkErO3OqPzHLlbu\nFRlQ\r\n=ZvLv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b5e73cd41a82811205f31e10d7a83d96e01e8979","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.28","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.260_1624662222396_0.2697140706466501","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.261-renovate-internal-patch-8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5":{"name":"@balena/jellyfish-sync","version":"6.0.261-renovate-internal-patch-8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.261-renovate-internal-patch-8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6d544f781cab0f6394318d95ffdad35103626d4f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.261-renovate-internal-patch-8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5.tgz","fileCount":24,"integrity":"sha512-46e0HiugISfDBCcsPKFQ4qMEIgBiq5Wk4UUvjX0LhfK40vt9y2Y83n2mwH9BMb8eU/q7LkE1ra3cLhKDePVZkQ==","signatures":[{"sig":"MEUCIQCsN9V+IHc6Awdk+KC+/zi7JrxEHrese8mWj+tLYSwAvAIgNMfAUusQ/Pt9Ld4osJJzcGG6fbscg3ZIpWY0lqweEDU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172396,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1nm0CRA9TVsSAnZWagAA3pIP/2ENFvqd8EhLRWNlhNsO\n+A+3SPKLg4Dhn/AVsUoeOJzYz7xH2q+NQtI1LVRmY4g448bewiTRIWEH7Bny\ndrowGWIDOe80sH10LElKcUDkKEYMv9c7G3c13ilQnfWwPBrt3D3U39b3t/cE\nvpppKqFwl6u1P34C+zShkKnNuKg8RXF+l+D22TqWLv0BoBHPePexAfXEdTY7\nD8K6yNEtDAWHGQTJIodG3UHPyrLxYuYx/vmSusX8X2+ofw8PXjm0KhBMBYR3\nukfMr0pRnMEsddSvIx5Nm+w6aTWcex6TfWAeQjne02z85XjTCBRa8pGZWJQl\nQXlIAV7AXk/m4aVOafDaM8aCY2dT/yMjAw8c3ewDhnEtbby5fGwL2RufnwOF\nA+sC5fti+z1nixAu8+WatfcZYkpDbRexB/e6oJZWWNsHoOekpP6hW1w06D5L\nW7EH08GuXblpFUCvGiMV1Bt5n5oAUrPbHNuWSgE0tKZcAN3UpIdbLAdvFMT+\nh/6Rfb8xc/O+CUdoYgmbILHnu3xeTPlwaKtdzrMdeKX1XCNpmtPMBR0xy/cD\noICn+xR3SD63UNTnfOKyFfajDYTEfzxNXHhucQyVuqHcyS1wtptxTwKvcuT1\nk6190I1Sug0BauvaObY67KrP+AmhyYT2O6YNGYEdTASggkpmBYgfgu3GRyf/\nTv2j\r\n=KfEd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.29","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.261-renovate-internal-patch-8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5_1624668595750_0.08621912876612514","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.261":{"name":"@balena/jellyfish-sync","version":"6.0.261","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.261","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46cf15ada996d64c99075a7ab90a6387b1429af6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.261.tgz","fileCount":24,"integrity":"sha512-ERmkOix+xZFElSRujbxBTjSJayq648vyGOPgA5qFYSCbpxK2f5LqdXNVye48H1+BDJHA/uUZuu+tckNH229KiA==","signatures":[{"sig":"MEUCIQC7KTTxoPsmTVLO586lzxx5m0j7wU2rJ4Is/H4OzQTdlAIgODEwPTSWGyKvbh91TzFr7wcXBdgh4RTCUoc42Tp1WI0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172331,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1nqfCRA9TVsSAnZWagAADwYQAJ0Eu8ttzcOyq4ZqjKtm\nOT3OavGX8cbzG/UmH+a8sKhDAKCSuLysyn0N7P4R0cnSsImy/FCpgc5G1r+H\nl77JFbu+y/vHCk5OnHpxO8KuLXXCaGG2ENRPZTgm3kDz/IjL8DnwqD7BzF2l\n2GXfh/I0GzmRh2DRDsNF9v5y6hqYoQtCtnznUverjXHvl+rNb2iUmqMpMIFi\nEUmYX92gFrcsHX19jdtn+t9IVKGERlB1dBR36+kxnQLrN262Pkn5n7dk2ZJR\n3piabmVSKn5Xvhmvxo5igcgBgQAqxf0j6wto5KpwPZpDxeh7bCqE3Wb5+HSr\nxlgZHU6xex3jJSaPFBguZj05p45yfcSnEHWmHmLgfCMZdzcnhJS/jLrSEzze\nL1ovYCgBjImAtyneWxQFGxcgxQLP7Za9rvJF/PROxIFHjkY4katgqw8uG6OU\nrYpPqoNrxA6z6mKTmDM1UVjRQzARo29e8fwukIhwB0PDfVXhhctG54b0MMDF\nZUqE/8bEVGermrE6VzRA3ftJfa7to3p7UPW0c3RNBuEQiz5b3BTOn+yxVoj3\nGuRTSB0sXO/oUOsI3d/dzrpnW947udUSg4md+d7Nuj92635k9QXRBjBXJ6mz\noKeWV7YOLBGZOm1Q7skvbHIgTY1zvvXYPqeovyDA/HSok2L93fkuUemlVJR8\nh+tu\r\n=TSVY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"510f3233053bc7b776deb6bbdc5d0481297a970d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.5","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"12.18.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.29","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.5","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.20.36","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.4.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.261_1624668830975_0.9437953031035398","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.262-renovate-external-non-major-9169ffbbe3d982974b090cf58999b1aa9f039cd6":{"name":"@balena/jellyfish-sync","version":"6.0.262-renovate-external-non-major-9169ffbbe3d982974b090cf58999b1aa9f039cd6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.262-renovate-external-non-major-9169ffbbe3d982974b090cf58999b1aa9f039cd6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5a596141faeb7e6e69d7bd6491ab09f5178349c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.262-renovate-external-non-major-9169ffbbe3d982974b090cf58999b1aa9f039cd6.tgz","fileCount":24,"integrity":"sha512-n2HbJ0M6JWaPxDddDCQ8lDsdSWKEyJQaPN2peL9UM2X8QMjedtQLUFJHPe7JhlZ4LxX8KJ7CF0tuBYSXD9YV2g==","signatures":[{"sig":"MEQCIC4HLjx6D2+n7MphdvD7alylYCV/xD31ZpYoTqg7L4qpAiAxqHj7GVOj0NbeAv42Cy0RZZd0mgpPTN78tqOv+NjRoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2sblCRA9TVsSAnZWagAAIN0P/3D19rVZLzWkMm+s3OmO\nPQUOZTdt14uNhJEyg9a2oTN8P24jZ66Jq33ymO3UVWqDPFozR7kT7AHrf6Nh\nuBFDNswcDGjsP9XpTguQBhK80n+18bBWHa7CKvXPUlv/0aJ1cKh75bejmaAh\nLf4VsVl2KXdBt+ecxQfBAQTpHxFQkj/T1MRE5hAiGmq+4rNIheD71S0xjru8\n3c/VApbgLPL6PED+Bn92q98y+7cX0Q6Di2UWVsWxaOnCkKX5vy8CEF9oGrCM\nDdX5YhVsaMTazPUtWZjypKxp10a2UW2v8EZHMmZJzO+6+ZkegRiVb+4soxYX\njtaJNYXnM4vbcXa2ZNAw4VLYufgw6sZRjqw/tdzMmis9g91kFvyRLtfd0NTK\n99K89uhGfG9zbOu8m1LgLLE7ntg5AlL/vxmyOwWdhrzJU0FxK10YRpTZogzr\nLaCsmTy5rlzxA6z9RdFXybW0sN+hihcSRDsyqlyhMu6HrdCx1j6gzjq5hqho\n3P1h2y92QSWAQIMuaoarecqMyvQOASqJmeBxWBIr6qO41ewOZ1xW1i7QgCrf\nj2BzeAHnagfobPwZ+eMdW3oRavZZjYPvKYMDB9CYgHPVqrG8zZf++3PXGnjW\nu755tHpVtm8KGjf17ySA76rWvLzHQ+o83HJXFcFnWLWb7p1gXcDpPrMLnlsV\ny/Ox\r\n=6wZ6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9169ffbbe3d982974b090cf58999b1aa9f039cd6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.29","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.262-renovate-external-non-major-9169ffbbe3d982974b090cf58999b1aa9f039cd6_1624950500989_0.49535693578794904","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.263-repo-sync-jellyfish-config-default-2b8b94fab5bae7ccff95d1c158c3c81a20041c58":{"name":"@balena/jellyfish-sync","version":"6.0.263-repo-sync-jellyfish-config-default-2b8b94fab5bae7ccff95d1c158c3c81a20041c58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.263-repo-sync-jellyfish-config-default-2b8b94fab5bae7ccff95d1c158c3c81a20041c58","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6fe345020bbb10b94650127dd62a2db727e91f8c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.263-repo-sync-jellyfish-config-default-2b8b94fab5bae7ccff95d1c158c3c81a20041c58.tgz","fileCount":24,"integrity":"sha512-mGmTs0uqJ6tXuc5PExxVH3hi1ivWosTSMS5j+FEylhrAGsHi6o5EVeTbMZlfebYBunfuCPBpvShzQUVX+1+ABQ==","signatures":[{"sig":"MEQCICswCfsLJSW/a0eApXBtPVzAnf7vK3zOgq+crKd3XN4iAiA170rONDVxERZNARG7NQu4/CONc0zMn5B4KBLfzU0f+g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2vAwCRA9TVsSAnZWagAAHRkP+wfcoX+Tz3kk8PHJI6Ck\nGOOqV8JfFjRy69qFJ4AEKkdeEw5tGO+UEwEcOSf5NDE01GFkEVWbL8dJCHRG\nbMxTv1oZIJ/nFa8j4tHyh+6VGWmxukeMusFE3aTNg2/BJEbdtLY6sfMgtWo9\ni+CUoczhih5y8ZuH0DVHjKZAjFAj/D+W7mOKkIY26ZKwt/qQeBG1qYteyjHi\nbc+Iw8yCVI+26meEKJcUwdiPVW8bHmuKZwzOWLCU5JcGeymjmhV2MerNrdxq\nMkkm3x0LPc09W6KxKyWLJeVg0fc/Z/ee6VC+49Wtnbv3psIOL1buxl7YEm0f\n6gviooull7cwnKJrk1dDj8u/v7m5zWA7rV5DhRl/nY3lnlzgivQo+9x1szCk\n9K+A72+T+ms8OasaqatXi7vV3fPOXAvJJPLPUYnL65zSvLmBWip7uhIHUJpG\nBhhb6SntoDS6e1g91Eu5kHnHVyO0wbZiHEL/RbrbXj6NJj8x8DhKgbu/WxTM\n5jgHtWyB6HgciA6tU2SdTBxeW7F/OGk9k5TxAC7tKYMkvhTG81rvz3jayJgq\n00WdX6AjilQYyku6UPUz/Y+SFmu/GkCHq6MO9KzV+YAV9eUumKJRlyiMh2J0\nr4o0NV3zsSkb3j8GPpz+bySxHD7oJRB5BTRlLqLquqTLsolxQvH2dzrN99uv\n8JMk\r\n=d/x8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2b8b94fab5bae7ccff95d1c158c3c81a20041c58","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.51","@balena/jellyfish-logger":"3.0.29","@balena/jellyfish-metrics":"^1.0.286"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.263-repo-sync-jellyfish-config-default-2b8b94fab5bae7ccff95d1c158c3c81a20041c58_1624961072415_0.04530219142796299","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.263-renovate-internal-patch-4be9d72b93a38d90991c8a99efe704cc20119e5d":{"name":"@balena/jellyfish-sync","version":"6.0.263-renovate-internal-patch-4be9d72b93a38d90991c8a99efe704cc20119e5d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.263-renovate-internal-patch-4be9d72b93a38d90991c8a99efe704cc20119e5d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e1c28afcfa90571df6c3c798706c71f4f308c4f4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.263-renovate-internal-patch-4be9d72b93a38d90991c8a99efe704cc20119e5d.tgz","fileCount":24,"integrity":"sha512-E85ytjAUY/08G2g4cHjqUMAzCtYxTAsPrtsUHbY4uJYGZJ/T/b5yB6McyeoupErCVF2VgK8bHmwBvpAFZKB67Q==","signatures":[{"sig":"MEYCIQCJiMBh6Nj+tAo7TimFB/bkJ5t4pTqhezRJgrUJm3LrlgIhAOA7S6D/QtpP2Ffxkakq5thPOIqPn5wk8B//0yJyZNSU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2v/0CRA9TVsSAnZWagAAAb0QAJNFckq7dJtMsCHAiTIS\nErt7eyhCn5Gd3y/pOMiadMmUFkVEqwcnM1VtQWpoqHg2ctZqoWeknxrb1hC1\nz+zirx7yaBImYVrT5PjNx4G4cFSRHQw38kk1IME3VY7p/Y/apYPzFMxZWcRl\nQOcHvWn/ReRVkUF5eQS1/BLvDrxeHXRXGvpcYrAINNX8U4bh1H2kFtkZfb6v\nNk+vteh49rxSOMWD5gQcZqM+fbOPjeK6uMPwXmO6m9aie18ckJDyeBXNQTcv\nzogNF11poMDHqF9swgg9T0kys+A97DqNx5QnGOPF4MRoapuoy3nlvnm/C88S\nff7hWa01ZcfW+SQSKZDUTgnXi+YpuEZQncCkipbY3sVRx7F87KpiueR4xrjg\nsmTvAZ1rdPDuO+YUdXk7HBcWNjzAh4j3HgX/BIoOfnm1PZZCLenVwvyvnr5l\nz1TEeTAUZaCUFU4k+vRtahCNas29lWCKafDl0NR7V+vuhoXyzGj/nFKJqL9M\n+JLW7qAbTrMSORSIzy9lWl/mickjuHguyN7Nre2mIbUnMcZrlHh0tAvF9ta+\n0J2yDed70wpBLJia8UnLAl2woisln89UmERV3VAeWX6tDlC8rcvTMa4PqtjC\n0pVX3DRY9YQgc9bDSq/UuZGzm/LNDw8McUOasprZu5OL4AXCPW4ZjSy2ISTf\n2+ei\r\n=b2Rw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4be9d72b93a38d90991c8a99efe704cc20119e5d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.54","@balena/jellyfish-logger":"3.0.31","@balena/jellyfish-metrics":"^1.0.291"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.263-renovate-internal-patch-4be9d72b93a38d90991c8a99efe704cc20119e5d_1624965107641_0.6967706472590105","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.263":{"name":"@balena/jellyfish-sync","version":"6.0.263","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.263","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb3bac0b20b95d1618fc49771350810dd0e9879e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.263.tgz","fileCount":24,"integrity":"sha512-zOK0favY1rhGztcPVpGrbdknww56WUUOxsrzTkbVJbdHE68wD2Vuikx+WpNjHTFJwvTG9TTQBTYWnu+kbLYcCw==","signatures":[{"sig":"MEQCIC3E5TGD0mVgpYzoG0Qd/KDZE82bkiYQfX06XvHX9/1eAiAXTWj2wJRHGIULm6XeQomPKRt7SxFhxTe1+jHZ/RudCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172478,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2wDlCRA9TVsSAnZWagAAAecP/12xJzr6zHEXLxjoRMHe\nq86wXhsEoAWTc3J+CmHXm6iSwOn0FqGu6HDSnmxS8vns7Lh6NuZK2105opDE\nHLw+dJnv43sQdLHTqyY/F5tU3dDdk8DLVoyCrWrVUOiqCSHh50DhYceQOiIL\nUJS1irPb/FWxp3AEKLyC5YPKdEUzoQpKl9+T7cAtsGltOuDDwjCzA13rxegj\n5rjDXPVp3AVfEv5VNUkhaAQCxQ/UkxvCO65q796YWoLU0oZPXDxJlMtbRxMe\nND90MwcNNBtdRwo7/mKqQMMz8hYZF80zCPouzrKAh0RqUSam4b0VyaZqzkSl\nN0fUiLLj0VYDCyz9A34n8Ow4MB878Z+OlQcLdKDmMQ9J1ODrvVf3tJ/QQxSq\nVHvesF+T/pEdvfa0uMil3OH9/cdkpYR5JgJ8haK1zS2argDEK2QPCxGLwrSA\nFJg0qkhtOHRnUXXe9u5rEV0dbOdTV/fyIneUufwex+MbYci0ibQ8mL0R/ZN0\nHunCdEgS5gvTtEAKtReDdvomdAJ16d/nIzrnyWEWHUDkyK3ceJnTQAwL6F0w\nwDoONTnwL6HV2853ZH/+DZc6qmGIcccZ3VVQPJ2hatKloNzM62eQETJ+Cpl1\nMfpbijx/j423BJJGnSW7RVU+ycl/SjBfnOo9EFp8kG/8BTMTqNUjb76KeRD6\naVIF\r\n=OY6w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"957ea6d1da0a6105ba7c3684af4d32e8a94dd5c5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.54","@balena/jellyfish-logger":"3.0.31","@balena/jellyfish-metrics":"^1.0.291"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.263_1624965349011_0.6459660920363481","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.264-renovate-internal-patch-ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474":{"name":"@balena/jellyfish-sync","version":"6.0.264-renovate-internal-patch-ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.264-renovate-internal-patch-ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"12e6a2caa0c54539787a5e389c72b15463120a25","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.264-renovate-internal-patch-ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474.tgz","fileCount":24,"integrity":"sha512-XjpueBYqRtcEOF6/HU7tR9rS2TGoh596yq3gL8Ln9SuuOetG8NLXO+HAAFegMkIcOnrvT7OeXWmF0ViGzZ2Q2g==","signatures":[{"sig":"MEUCIEw7F6vs07nsPfjiYiOay4w6IUYazugm7biUHpNm1C2rAiEA/qJdow3TE4+eqv720RKVvk5OfDvz5+22rKk3rWmMwaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2xnuCRA9TVsSAnZWagAArO0P/2zfNzVemyeXQA9/ocAG\n1qme8R/Gv/dn70U1LFaPzelbsWjyxxy9UBxhz3eJJLB870QB8qEDRljp8xt3\n5exHySECaqJVO22qN0eZ4udFQk/+OApnTcau9479ahgHVOQ/IOvRSoeeqOl7\nhOq8Td0PS9ubi/WW2DCGgeMsXe1YaAyzAU7y7IBwICMdWBFRjRWOH+UhmyIo\nERqF/ZJ4ovWbzQvZ+czaqXNQ3W/fM8VEZ002Cd7blyRoqiSRxuqBTQ4PI2JN\nX0Gtq+NT2C87LKIlvvtyxk0+eZ7AsnBp1ZXLSWywtl806iBJbPFqRLETnUSN\ny31r+FS8sY7/GaKjecRoVGI0KiRtvhKuErJKvOo3e/pLIQHYcgZw/X6ZdjtB\ndF9S/U7WkdkyyBQAYdmwnghUDzlmnwBWwUMoylgNYXG1kv6gx3uXVFG9pj1t\n5SyWEcA+3eoGc1YQEccn24DQ8I6g3GkmiE5RGkgMypNof1okaBJZ1N8M3lGg\ngzDhn6ceTjKsbP9UPeCg8DGSI4yShcxGSFS6t5pYOhZAd3kR+z/94iG6sgNU\nq2GTQm23K2x2IRTUHVtIm27tMRI9LESVZF0uHFQ5JnhvcGc/D33nIbFXiEo5\ncpXSNS8KXp/RmMMKvnp8nrdjcU0G6V74mwNmrw3JdHLKDFkzAZR62g5BY3h2\nQnO9\r\n=SbxI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.54","@balena/jellyfish-logger":"3.0.31","@balena/jellyfish-metrics":"^1.0.292"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.264-renovate-internal-patch-ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474_1624971757935_0.3980188541723697","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.264":{"name":"@balena/jellyfish-sync","version":"6.0.264","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.264","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab31686eea626cce03056e82b61adad6014234b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.264.tgz","fileCount":24,"integrity":"sha512-Vp96R1xcKeVi2rQS7IxTc+76j+9w8Cj1b8iENevDGg1MK9UWnMJ9OFahkFMbZcxuafXaJy22STOves5tAFZNGg==","signatures":[{"sig":"MEUCIHyg+/yEAs7canUp6qewk3/WlSlN2nrfrm9PPFuljp2hAiEAtmFmtOgIQpMIjUsVjoScjyjwlQbSSm7gElIiQwDien0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172550,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg2xryCRA9TVsSAnZWagAA6kYP/2bjkn96TjkppdRCWq2l\nJoAUWvT9VW6Exc3yau2fYLTWm2fPGVLj27BvbblefAOLiTOl91gpwSXtTDuZ\n2rD/JrDe97e12jUKtPyUhOWc93dVi+c6qYMfCPS61yLGZEmCcIsasQYWawnn\n7XcZyuiklCK+kKAd5RHQNKUXBGffSTRoUaW5cCgdZgcvLp0vp5Ix1XejPj8U\nGaI1EE17myFZ60F+wZKyf5E+No1+M0oJsFj7YWeQ28efJe9DR4Td7uQd4rXS\nLgatweOuMTltXQ8uYCelkGCFWAkSl/XeXbVJfryU1bocGJwwLQqVTovcn8Ca\n0Lvg99gpdYZ6bKve4cdibBf4F7ut4OHUwL+zA/N6UVGJhG9I5bzyK94SElg/\n6SBIo9UNODNAi6ck77B7z2aZIylUDEx3HODgfjTtQUEZs4+fOPJRkKWIep6n\nJz5Z3EziISjTYhIJD/FV6ad4HF/8vXFKcSsl8xvWMwqTLLgfIXyw/L51Tenz\nzR/mooRsRrSHdPWmVL5JH11q3U3GzNPPaJTijBALRr3eeBxmpZpkgqL5cZjE\nEYg5ON57mDhmwRuplXQxYbaTUQoyiDbPzaDmg4XVPX+LqjYJ+kUp2/0PCErS\nCgP/Uh8ivUwK0BaaQnnTh1EMJLjSULlOpxLuhHUTf9w7YYrBmTCrXWNWsE+Q\n2TbR\r\n=B/B+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f8b645095e7312f99f7e8a7887cb36ed1a2787fb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.54","@balena/jellyfish-logger":"3.0.31","@balena/jellyfish-metrics":"^1.0.292"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.264_1624972017729_0.19531392050542506","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.265-repo-sync-jellyfish-config-default-0d689f08c79f18d3fa03287654ae94e94055dac4":{"name":"@balena/jellyfish-sync","version":"6.0.265-repo-sync-jellyfish-config-default-0d689f08c79f18d3fa03287654ae94e94055dac4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.265-repo-sync-jellyfish-config-default-0d689f08c79f18d3fa03287654ae94e94055dac4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"651d196b55dd898e5704c94dcf1dd6efa2c93c6a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.265-repo-sync-jellyfish-config-default-0d689f08c79f18d3fa03287654ae94e94055dac4.tgz","fileCount":24,"integrity":"sha512-7sickwtNWW1yCwwb8wLh0ROE4gBZ1JBG1YLxvOk+7yO1+g5iY8n4fTgBqLLAiPJMlFSHvuExyZ3t/X+12NMc9Q==","signatures":[{"sig":"MEUCID+EnonDdjimTAGj9msyNZvOM4RQknjjrmQ14vCR6lZJAiEAmZ69VjA24ObtJdrtM5CLA43QPVL1Yyk661SAvNeMkbI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172723,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg27FHCRA9TVsSAnZWagAARMoP/AkNcI9jRlfLD8Uzoe5D\nmGEswXrabZGmuFjb5MhLaJjfnOinGX+q1z5x3qlQMePfcGWankzC9DXBB5TA\nfe4HkonfxnUp3aJkLQ6VXNrXgRD1USubpkrfU1s8YDxFbx/0llPI4S3c2Gvq\nkCyZHIf5/frRIi9cDm1opYj3qqqgwnZYxHrv95+YSuhpQA3hkAALODiRbhUi\nqzLX+SMO+70q2SVHXM6sGvOnyUO6VW4eVPIY9IKntBo9Z3UHW00pVvR8z2Ay\nhnMpu9dmX+ypMYQlWaSElBd0T+Gp3MrKBd/VT4S/EbIGa0j+5XhoO10mGBQU\nkIdoPZuEWu5z0C43qN3QLiuWCcxokewkcjsqq2TJMLRCOZWgzvw7RVWdd/Wa\nvLsLblBcKnKGCEFnaokP0ynhNoQdPeynbMG4reLgv+AwHaUedlIc+RQAiV95\nvo4/ZVW+Ccw2HvoHipyAeQpzGuMowD8Vgf6FVgElGAUN6a+/5Nfg8fXYmBxh\nbcclrS6BtYcSmGgyhxmX5rFlPhYNfhS7zQx24KkWqyHVsS3ofikKAtrqYZry\n2SeVrNzeoWkywcwR06FEgzcaB/Is/LhFp2sVH3h+GSpCAVNpdUUWb5c4YJXQ\nnQAd6AgRzPAmFFupYEj3CXmYpNNByGiwnLNcYzsLJCm2MJMLmWXHDKRVtPNj\nrWMd\r\n=VIxV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d689f08c79f18d3fa03287654ae94e94055dac4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.54","@balena/jellyfish-logger":"3.0.31","@balena/jellyfish-metrics":"^1.0.292"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.265-repo-sync-jellyfish-config-default-0d689f08c79f18d3fa03287654ae94e94055dac4_1625010502612_0.01161906051384487","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.265":{"name":"@balena/jellyfish-sync","version":"6.0.265","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.265","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9cad3e60753b049ccd14f28753460687c1a099e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.265.tgz","fileCount":24,"integrity":"sha512-oZO4xIMj9hBFCyT6Nlzxzo3V6GIIg2Grgws91Sn2wnQ+OmCzr1hbK0smqIkCKEzCSH0VgcOPqYckmuWf9yl9Wg==","signatures":[{"sig":"MEYCIQCZ96n8oAPjZ/Bp5yRejIieqmwCaQFVK2FxyqqCIQ6B2gIhAIWFZ52SxYPUo+1QmH9eEXenzm5Mzro5rh4sDaqzBG14","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172647,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg27K+CRA9TVsSAnZWagAAlIAP/i+Q9ln2jRBND68ixY/O\nxglRL7SBlNUK51C+TbWajEe9Q4o6B4bPnu3TPF95eOo9z8J4QOOA8MvnKtM9\nsTtbjdgkyjDb5De5ilWrc7Pr4ktu7UXDL7ZmWvL0CsnVkWdYq+WtmFpxeS38\nIy7U8l64Kus55vvN3LkU3Dsye5mMakm8OVIpsuSayH+JO/x2WEu5h5p6sFhi\nb3pTUZ3K1DBHtMiSLb0MyLkGRyGMWmf+t1tLL1Dwf7VNUNjdKhU3POqxETLL\nD8UkUc38//sF+SC6iafti30QQewBzOftGcLGEpxN3BGmSWMwuWgBNgFt2d5g\ng6LWwRoS79K8pfSxdJQ+tiug7ZJEOnkKXa+PS4DX41CS7zOrJ+jW1ud60y0d\nDdaKOUQ6WEr3TyY6jCE7voZ6Ey2GdWdqFQ2ly4jDavYJxr48pUgC6nWrI81y\n7F9NoNTwhcd7lp0FITC+fa+SRfOOkF73ja/XOsxQFIBSRe+L+u+59ePRO8yK\nQQx/u60i1xmHY5HtsZl9fA05d+/ed9iwyuIrbU5dwhfXIUqerWYtJmwLLQ3S\nTP0Y7jUPNR/wAFyenYhadSjU1QwQcQ9CRa5tppxfHlePR90bapOXcD5GT+NM\nAtsGhWQag/mriZb8twg2pz7bF7p6QDKej4rCvAnZZxRxHp4hLilyFRvO3tzE\nVxq3\r\n=6RtK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6abea1f2ea3f82508d1ac4cf07c8b1225cfae9cc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.54","@balena/jellyfish-logger":"3.0.31","@balena/jellyfish-metrics":"^1.0.292"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.265_1625010878353_0.744366725031933","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.266-renovate-internal-patch-fd39d768fb3f27c87765d6cf26ded910e46e9cad":{"name":"@balena/jellyfish-sync","version":"6.0.266-renovate-internal-patch-fd39d768fb3f27c87765d6cf26ded910e46e9cad","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.266-renovate-internal-patch-fd39d768fb3f27c87765d6cf26ded910e46e9cad","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5d1a4112c4515374e42f5f0cb5305cd771d7306e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.266-renovate-internal-patch-fd39d768fb3f27c87765d6cf26ded910e46e9cad.tgz","fileCount":24,"integrity":"sha512-eEq6/gwK57injZgY5TC4mE1qP2i8zmpZZfY25/9ogkHqU24aGX4G1DbJ4pLOjgZ/DB3wjDky3okTPtbX6dCl4Q==","signatures":[{"sig":"MEQCIART61PkS2c+NmkKT+gqegq8rCUl28uZZUK1Lm0dsYSMAiB+SyM+zb1RSj4ejsZqIMsKY7GkhqKSHoPWcVyvYW/pPw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg29MZCRA9TVsSAnZWagAAPiMP/26cS3Rt/+LdCsdFm2DW\naQCQUxgP38fyFD8CJd7Q4A1sFAEjObWyIDldv0xDNG8cZ8Tm6kVIV7KLs/Ay\nfIMn8QLG6b6iDJWkjSHj+7NmJeZnh9Iv60W0PXNr4qzIrw0blw91hiuUV7c8\nT+tNGyMz9MdD/wTeS/vinqik6ygP4gdmV+zuwaJoKGpAEopT8vE7Wy12dTVd\n1+/X3Nae5bY50fLLX9J2wvq6k9M2EPIIMpi4dTNrK8AHGTOE+lfGvqYwsHjD\nmKIPg+8E7wSMY4S+wvP75NYoNDitXsveqaPs+/SCjg/BDet+FU5RzohMrxCr\nLmd0BPgxKAX/JDFr7XBO1wVSyIIJ1RbJ7XJMLnAdgAuzEhdEyByBl2faoj6m\nz3XYPZTfOG6/Hu5/P3b4gdcfuqMOuMk6lvQ9+Tl3Eya33wlidp4QL9fUAwra\nG5GhcI4rWtVpPErPTkz3ps3k0T2Y7Qz6ygSK8ta27x2sRWo7wSNy5nDzScnR\nGvP4mQWSKE9LzH5GzHKSXEyOk4sNI/vZe+NRbM1mXdVYgDnmXMfTu8rwkUE1\nJP1DDKLpaUtUPi63WCTWREuufzPHPyR17SXl24xQ0I0BzeRvIZLbIAgq7H3Z\nTWpztF0ZI8VkIctM3k1eXnOQOLbdFO+dVdrNPh+YH8yFGiOdbc3VYNQQTU1T\nWI3T\r\n=1vnD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fd39d768fb3f27c87765d6cf26ded910e46e9cad","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.55","@balena/jellyfish-logger":"3.0.33","@balena/jellyfish-metrics":"^1.0.293"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.266-renovate-internal-patch-fd39d768fb3f27c87765d6cf26ded910e46e9cad_1625019160613_0.4683689324276372","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.266":{"name":"@balena/jellyfish-sync","version":"6.0.266","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.266","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d1c48c64d03618fbd38828075a61cbab27aa6b52","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.266.tgz","fileCount":24,"integrity":"sha512-RN9nHRljI8TCgQLQkuU9boxCW33XEAhQ8sc4y9zfwz5LxlHZw3YROVOoKJg8iMIS19R88vn7kx6TVFsqqI/fWg==","signatures":[{"sig":"MEUCIQDy/1vxCSc6GfHKTDblskoV6UgWr9zwXJTuhOg28eJgWQIgP60cvORRzNaUr7O8jeSwC8GS7uF33kS6rU5ZmHzr3gU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg29QHCRA9TVsSAnZWagAAHcAQAISAksgsMz6VRUBosfru\n90UbxIGUZ/4GwCDtHa4J6hTRUAHXfCvDsVzECoOuD3GRYU0yA8HNOBSCIn6c\nv3v1sLteYIXYVs4q4TpqzdbLBiLyyvur77S+ka7/p6BudyV1Z4RUYS4sbkPV\nWrrAjM2s8Aadh1AvW+JESHBI/gQrr/Vulv6dqmj02yiklNfEneZlGZe4ff21\njAf0VeY9INq9BKkeA9Lf6H/KSsAIa12+CVrjns8Qo2G+BBorfhiCVNN2F545\nORdHQcQAzLJFLxMBpgtw9k9DMMUZXZugRpbto4FofsgYufrqMCAaKeiI5sOL\nndXFb5GHmSYaXbGd4jt1bhlSM8ZhOM+VFCtgC3/ICsRCaf9lDPTVYjh5hsKw\nKcaXVtgnHM69VnHgSgNbvmD467Yde2yiUtgozAtvnucwhfE2Dq9t276AqyeQ\nqknlmNg2qzO2MmKdQiBeJpXFgOb7y1Mk4PDcVsMhENgG2zgjXx6e/45/B+kx\nxoCyy1JN3EUNUpwFAHq0g8xtYC3G6eJ34+MoIpuZnrtQd6EN+cPvf2KBsrYt\nsuFjHBj2w+qTYUdzPiWx525uavskRmVf6PY5JHsBNoDs+0XTkl6ESjE8roep\n4TtOfyGoUrCV4FMKtqgYGgzkRatBt2zleZAlOLo5+ZnL31tW73g4uqKA5UpT\nKLoB\r\n=C7Z8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ad6928696f28950d664fa73d8b7d2a70a6ebc018","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.55","@balena/jellyfish-logger":"3.0.33","@balena/jellyfish-metrics":"^1.0.293"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.266_1625019399346_0.1493247763385459","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.267-renovate-internal-patch-75cfb728def672a65fe646c42c89ac41144c16be":{"name":"@balena/jellyfish-sync","version":"6.0.267-renovate-internal-patch-75cfb728def672a65fe646c42c89ac41144c16be","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.267-renovate-internal-patch-75cfb728def672a65fe646c42c89ac41144c16be","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"47c2a6114e833667d8f2232ee5ffe38f1345b841","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.267-renovate-internal-patch-75cfb728def672a65fe646c42c89ac41144c16be.tgz","fileCount":24,"integrity":"sha512-hNJQyGbDsx+2NxzivW8yUg35x90iwjJkCVoE9vVFNwLW2E9mX002pzjhngXzHoVufEE92pACk+SORPqg90cMUw==","signatures":[{"sig":"MEUCIG8jLewKB2h36BuhSYvS9bmiWNa6yPBPM0/Xk6igq3oNAiEAqisBw9YPBkBGuyNhzCdfUgWlysBsC7sMtR2cLxv7KEY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3AgeCRA9TVsSAnZWagAA9yMP/2KKeXNuyMTMMUxYkRN5\n6hqKPyMafrVLAmWAUhypoX4ZN7oDn5AujcSvCWFEsIvj3EZoy+Eny0NLnyaX\n0P96EvF6vLO1n7VUeDGGoVwvRrLyzQjBInudhxz2mTLGe1p5wjGPdIw8Urqn\ng/iAOnsHw3RysuyWm1tdMB+9Zd7VzBXj/mCC/xQ2ZnN8aa1P2+ipd0Mw/zDy\nv4FU1bccW6NCahYFjwJ5CU8oK8VMa4IF+/L2U3y8lRsxnQX5zPuRHpJl5c3E\nzPOTU1xIoosb8IyteNq4xxd21lQwFxZ4ZHtcC/jCt0yTx9lhiQ9oueQw9DG0\nQ6EM2KU20XHeOcEfrTPtoVgnvl/vN6sRKhhrled3l8kloQoFTrFJsaxTbPft\nAzpzi/hp4/U8zS35QKeG5dtX7K7RAKpc7skdC8SVJ3HNmjFFGZc5KDUiYGOn\nn7ZRbs2k6Zv05a339Ny5e20Kh21s5b7vo5mRLNCJrb/tkUPJAAHX67O7gLKs\nW7qObgzadhfe8qBtyLBXUBqSoFCd+6r/8ZbgzhZfEBEfDQGOM04OYbNV5OrL\nNSUnO1TvN2ncx5LbTGSKE/m+pPXTuFMPco8N5yXnfkk9cXPFEN6YXD07oIXi\nQ3tSWp9df5Km0wqDVQyHUvYpaYkh2Q946GzkyODXAt82Uw9N2v4eC3HjQAnv\nS4ZK\r\n=UAj+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"75cfb728def672a65fe646c42c89ac41144c16be","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.55","@balena/jellyfish-logger":"3.0.34","@balena/jellyfish-metrics":"^1.0.294"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.267-renovate-internal-patch-75cfb728def672a65fe646c42c89ac41144c16be_1625032734238_0.5246778751193979","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.267":{"name":"@balena/jellyfish-sync","version":"6.0.267","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.267","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3f92a49f7511ca9711eb9dc48897d71ebe113924","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.267.tgz","fileCount":24,"integrity":"sha512-aeysTS6hxNLVT5eOcxoOLjcZv1H8Ndyb/wDvNWz/MyxB3gtZzcG6AZvnKPrXV1Sv3AXpR94lweuRi389n+jrYw==","signatures":[{"sig":"MEUCIB4du7xTkpEcGQFijnZCHVEbjDF56EuQCwEQvRjFEpGjAiEA1QUlZdAtx/l9dK2tuMGAibW9N57ziN8hRhjy/1TrX1M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3AjeCRA9TVsSAnZWagAAHf4QAI2yxGRx5cIaKg64AVR+\nUyLpY9kmFG9hfV9GNfqav0bJBB49xUHUf2uUgoEH90kygmIOgQz9jmMEJRf2\ne+f1oKu7JwWYiQ4b7WR6rNDFx98rukkDqldrfe2IUBLE6z1j1W05IDO0qtUk\n2ara60ms/9zA6Lu6axWsbq0I2Zlm3CPl7U2sPNdOFy2HThPUSgTbdGH4mvyO\n70HniAano3vTWnoPDwnL5V1RDJUAWgZeWTY20F87VvPhtnNjA/Np6SzIe+cv\nyg16DRamADmUzw4VsZmtMBkZJpbRbBG/0ysLes4s5wXbly2nJxKnbNU99HCI\n5L85n5CUWG2Aqgvq1zYyhjzzrsIEDqZIxN5Gtp++Sdb0C5OsEnJ2pr9sJWM/\neGrMQ6h/nilgyR2HGcm38BqV/1V5ZKsEEqUhx7jd9KWCJjphGD2vSnR2+x1v\n/ynAj9KcNjYiZ6whBAEqI7RRSfjuE18Zo59Tp52I+5exNeryTm7/ntRzBCxO\nFy4N7YRdc7YV757/WSmoJrDXkCu/WoFWP6oIwgQAHvdj9hCFNhrEEgUyfeqZ\nok1GKfCjv4PWDjKvDTQBLpgYqZAzVAOdujIQQgDn01n+I1j3EflCAIK3KlkK\nQTBG2CqWgVUoXIIXgYC4llNueDOTS/y3LAtcp875pbXWDiHzX0nuyyVq1Y0Z\nX3sy\r\n=EO8c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f0f5aee63d6acd5707a994a7ac13c52fd7e847c2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.55","@balena/jellyfish-logger":"3.0.34","@balena/jellyfish-metrics":"^1.0.294"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.267_1625032925748_0.11834076358110068","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.268-renovate-balena-jellyfish-types-0-x-09a991cec9779f4fdebb26005f73bde794c47b1a":{"name":"@balena/jellyfish-sync","version":"6.0.268-renovate-balena-jellyfish-types-0-x-09a991cec9779f4fdebb26005f73bde794c47b1a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.268-renovate-balena-jellyfish-types-0-x-09a991cec9779f4fdebb26005f73bde794c47b1a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"174279892e87fc8bc408f9307412fd74053ba0df","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.268-renovate-balena-jellyfish-types-0-x-09a991cec9779f4fdebb26005f73bde794c47b1a.tgz","fileCount":24,"integrity":"sha512-mxo1Y1pcJiZhYkHqO80RKMx8NkOiAN9pI9mJk4T72DFpOyu0SNuTAcPUHbHqubYeXS7rj0Se4fObKUxjnmTosg==","signatures":[{"sig":"MEUCIQDbTMPqiZjQjvs/ns9D2BYjArHXJurNTQkzh6P6JyVn/gIgbpG0dSz7BTj9kgESlR/xhMk6kAmNqr+5SZanBQRvho4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3rXiCRA9TVsSAnZWagAAuvMP+wZXu1ctxqRywwTlYDdX\n87YGElbBbJdWYu8aOzmdPIVHTNLdhQy3AKJ/dQg8UcL3nQ5Ls8Vw7zv63htU\n0q+2zrlutmlrSRdfk4GBiBcXF06izRZvNp2bKQ83Q/ybZrsUWwlKQKm2CDwA\nwfRrmzIXLCgK6ENSwOpVv9+2a7Gbldq6bwXVouCXXx6nWbvHNkZjhTToZgAV\n0j0nEQoTrcX2nUFbCl5d4DCfzfjsJHzD9XPAVMGFVLLRSRHqw0fkJRMNEi5J\nCGOyJFmpqedLlB4LuIa0809HUb32S8HAraaVbmErEyLdzBBBzadOTzV1ll9C\nsSoQnfqcRtMK1ToayRVsPR+65/Glo1HU9OVUypvcqNOhaq4cD0vP9fQWsjWX\nQOyBcnlYYbZsFeZD7aHz3R4c8NdhfYB+HGV2vhxwLxEd7TteG1DMFK2Z6Cfm\n3ikzbvsSVdoVeCopt9Iz4fNdMJbHFswHvrNiHmky2A0yzkM46G+oj1TDYbJx\nkik/e3aMiX/9OtyZWfci62AjAWGzSc2+P4T+iEAu2Xo8B8PJW5J5bVJ2FAtM\n8ijnV+EpnIE0CpmE7vNWRPTnw6xJbXm3ltGcvrfAf+saJdLrsZmp9jGaWOCL\n8GQiGBwEF3X5o9HOyTeQVQeevLYYlEI01Iw3p+9RZC07KbymxXcZMQZHqEKe\nRIOT\r\n=nzKc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"09a991cec9779f4fdebb26005f73bde794c47b1a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.55","@balena/jellyfish-logger":"3.0.34","@balena/jellyfish-metrics":"^1.0.294"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.268-renovate-balena-jellyfish-types-0-x-09a991cec9779f4fdebb26005f73bde794c47b1a_1625208289909_0.46008671199054585","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.268-renovate-internal-patch-4879b4c16581087a1ce106805805e6b47acaba1a":{"name":"@balena/jellyfish-sync","version":"6.0.268-renovate-internal-patch-4879b4c16581087a1ce106805805e6b47acaba1a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.268-renovate-internal-patch-4879b4c16581087a1ce106805805e6b47acaba1a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b4dc604612f5c24dee1e8f41529f71eaab116512","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.268-renovate-internal-patch-4879b4c16581087a1ce106805805e6b47acaba1a.tgz","fileCount":24,"integrity":"sha512-ByzlaCeRw4pUN/qs3Kevr3owzrm4Nxq6EnkwbwCZgi0FVfDwL/xyousFDFmYuuxC3P0Wad/eEiP9/nry9FXe/Q==","signatures":[{"sig":"MEUCIQDCMrLt/m4Jb2m2u3z0h6P6ZG7799K+rsRi7c38E43htAIgFnkF5OfDpaiCWNxNjW38CyFUX+3YRqIqcK5t23DhI70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172928,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3spjCRA9TVsSAnZWagAA6GwP/RSvQRNjemb5C7Rm98vm\nXDW36kHSqb5tlEs7HpkxdX3fm42igMguoLX+WiDYU5BRy/5sWa1hWjWepixk\ngUGkhPzWE2oTdRxt3KVBybGxrrb8xXHYdHLeKXZLDemTQvwAluyYpXrRDS38\nmMwTMxq2BkDy3zpO8ewUIC+Udck/got4joAvVKxk2R+LUjvC2X+2T1D9NPCc\nVMVuayFrVQ3qh4NwGdLXg5r3SsdUnqms6X+4VB3Q2eyvCh7aEWUp9JZWa8EY\nXxytEh61TiDJzmkpeOtb2Cc6H7547eo2maseQNia3DPWOOssd9+fz8ToScaW\nwB4NcXM9QwM2HCgrmO8fsh/17tR9VjUKo2iWNKMRrc6ptNbEStbIvratyKY3\na0qoi0j4cU8jM6nk29gUPT9nRa0Doiejga5Pb0xdDpVfcnyHyFfaLcq9iPCe\nhsp/jG56499OAoqK2ZOMz0docBefM0ENP5z0dCrOcaSEJAuyNrTNlrCkNaJa\nJaKRYPc0wQLoTK7wALChc5ANh7Qw7IbOcElbPEQnxdx66a/7v8gdpQwDAkgA\nfAc/+NrYSsTqpHfZjOYWswKOWcVfN0YE9Y6pURnl0eCVjsRUVfycLmrFYG8Q\nGVbeqXhnvET7PVEQ/eKiGlun9F3S5jkf/dr4rW0jJq+ANLLpsqr4RSkAZL/U\nxcje\r\n=Z2VN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4879b4c16581087a1ce106805805e6b47acaba1a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.35","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.268-renovate-internal-patch-4879b4c16581087a1ce106805805e6b47acaba1a_1625213539167_0.118449972730295","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.268":{"name":"@balena/jellyfish-sync","version":"6.0.268","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.268","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae68af692663a26b8f0c09fe8f89a6696e66cc9b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.268.tgz","fileCount":24,"integrity":"sha512-4GywKnxEjj7LYZwJjI08tOFSty2sWzjvGJ6k2/Pn6Dl1iHmNGNR6LaZjkYunFd0XynhZwfilpEiHxz3YN6bX7A==","signatures":[{"sig":"MEUCIQDhFthvcqdsjx5XONAbCt16jrQ7kTY3AU3QmRwMURNzGgIgKLhJ8S5Lk5A2zMg3Nje+6E7/uyOB/aTvKHqNS5kfCXs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3stLCRA9TVsSAnZWagAAjxoP/iOjz6Dglsmi0+alc6UK\nzxSgAj4jQleeEApI1HYxtQ/Qm130/02MywcQYSTMcji7ciSTaCOlqBwGIOVO\nGefVZOURhAU6uCqG67g2Z8IWnVr6UKzxugqDFT1wK5e507LbG4GAJUDkVhGm\nAZgS8kU6nxegf8kBU2W2jpyyAHwrNgc9DtuNsPKHg8zh63vbnEI3vKpkBEEo\nDFMaLkkdIxQuQrBIP5tB4NR4PCzdf8U1QcU/o5qnTV3HqflpJ/ai1MeR0EQB\n3e4PwUcHpISeHZ59uI1OM0l1PBvyRSksnKl0SKmtDxKDDzETAAniDoAzj96+\nQclAjGjlsLfbA1f8ZW7iwG1rWntTo8uUqL+Bl2mom7LKPyYV10g2/JLGAoMN\nbzCx/Vb4iRoCOe43oYdplEDKM/OV+YoD8JY1xhRPvh3ocwuXfIGm8HIBFQot\nvGEntGdHEsTVPAhXC8GxE2pZMvUuvI9+MbSVxGWXvEuilT9mEnIkfM6++G52\nll/B3WhTdB56gw/QbZzQ2u/wj6PynCNgLIJSAewqTztydPpnUFQiHZTA15lQ\n0vrC92ldUXNBywaPRvh+tcjoUyJ9uaqExnShqLO9b6GKFmcDYaWEcDDfMCod\nDoq9djhM/cbeCDHcTRorKg3i8pA1wLvmw0DY7NXuFFYhnPUQOtpXSIEMbYgx\nCEtr\r\n=q2yE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7beaf8d1f916b06166b3d7b3ff2fcccf0be3cfbf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.35","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.268_1625213771328_0.7007145219664981","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.269-renovate-balena-jellyfish-types-0-x-c8cd463faab9f7b695fecf9a216726a5393eb74a":{"name":"@balena/jellyfish-sync","version":"6.0.269-renovate-balena-jellyfish-types-0-x-c8cd463faab9f7b695fecf9a216726a5393eb74a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.269-renovate-balena-jellyfish-types-0-x-c8cd463faab9f7b695fecf9a216726a5393eb74a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"892d070977c4e8b689c1a7fefb3f30ce2575f716","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.269-renovate-balena-jellyfish-types-0-x-c8cd463faab9f7b695fecf9a216726a5393eb74a.tgz","fileCount":24,"integrity":"sha512-vHtwAl7WmJtWN2xqp6zCAQzufX5KyGh6vrDUW0rjOuwPJpPr4TTic0JJI3+ePJjyWRixnLYogLEAHU1hkAV88A==","signatures":[{"sig":"MEQCIAX/9tV1DDXSO6fdGClkdXYVwVFrh4l5SYi8OaeVvkqJAiBF6l4Ohe9xQ2Xzt3x2aO9WpcK0DyOrPZFdKN2P8kfQJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3szECRA9TVsSAnZWagAAg3kP/1u5XHziDaaSU1c9dcng\nYNxMnghUGUAGuMRmuPExUu+rPfsfns9lh/X+t7+pFGkmKabDF3yOtMZeHcFE\nt3StbVx1/jaT13rge939D2z9Gw42YfStP3vyjAqx1FIBIDDKmUcB8Ty/wv1F\nlroIWoB+GbNl+jHgawXklEi/15JBuayaUyuFcjly7gbtzQAK3iAlKO21kL4B\nC9yCaTYxvD0EAhuqsy77q9WWCrKiWM+B4iAGea6bVr1ULyDY7zvC0eXnaKOW\nUmKVzyOaXoPjCX9vFdUEUsn0+lKckh6bxSqQirjNnb+qN0uIC6w6d/8PO8/N\nH6fyVwSgmiQrGTcpzQHgG3CAtMnGg5d2TW7ZCsmTKJQqw7NdQlcvnLBpU8To\nGnRAVlmHVCMz1IvW8RW+nzE4IYDvzIk76DxrQj9YUClGGjdEf2D2WxElzwjT\ni1WC17RM/zkbgtUiZFKMGY/IOjm6Q8ctLWsxgIK+Z3VOa1lJYX0yzNyoVrl8\n8xFdUqL2YUF4fKAn042ED+7jpwswfTeslmOXPx09hefAnQOc6ACvSaJLgkHk\nQ5j9iTXucYKD4fDwZLoi1No82JcMojBRU6vw4s4pyV3RxbOy5UdafjOvHvg9\nWHUt23stQW2YLDUmlvHg16hV08skLgSARPfr5n8Asxtb6eQ1xMEByIEV/4YG\nQGYf\r\n=tEWp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c8cd463faab9f7b695fecf9a216726a5393eb74a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.35","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.269-renovate-balena-jellyfish-types-0-x-c8cd463faab9f7b695fecf9a216726a5393eb74a_1625214148199_0.810368010580722","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.269-renovate-internal-patch-58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d":{"name":"@balena/jellyfish-sync","version":"6.0.269-renovate-internal-patch-58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.269-renovate-internal-patch-58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"473f1ed3069edd07d3d516496a9f5aeabea10955","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.269-renovate-internal-patch-58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d.tgz","fileCount":24,"integrity":"sha512-JRVqi3t6xt3DRJMccnnINejGivI8yVmtUIevAiKOVWWKT1mGD5QcXmD8wa8BWky+0NHxoAlOihgaPPM3fKfghg==","signatures":[{"sig":"MEYCIQCqWtiIZ8ccJZppdXw0MawDYl2sPJV7eNSHTv567le1ogIhAPOrS/Y5Yk9M54WR0kSYoPq+QLL+pS5KYoKiGPj4Nng9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173032,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3s0NCRA9TVsSAnZWagAAyFoQAJJWQNbfnkyKobRWPLdw\nOt26RWfVgUBxdyXTZ/ZROy+pghnO2E31HyuMu9z4wDVqijS3GGjT+d8hEo7e\n2imM9L/wlf+MKa0R3komlpHu1edlPzyuSr+UVqHFFQybMv0qGfUJvOsu3xWJ\nZ9+peCV9eD9O7FhCJjBLDBMSIeX7l6d+zo75+FMyJUUTRoA/vNtIj+oiREHU\nSgiDExvoKfghFwQML6NSi8Cmiwy2fPbyowN9ZEn6osJQEeZWKGpnM4ad34mg\naU6dp6Gerglr1b70+1fHi3/S5YiaTOVynJtvg7bxVKKkHdFyAF/lgGqyfIk3\nI+QxUUGbt1TfWf6dLYug9o+iweh2D+SacmqscnSg8BEhtPDjyX3J9CyJNJr/\nInPgCgqX2BVMID1PXkQz1NFcKkS/4Qy/sJO9bdShPnum2wytda+qRo+SZoTX\ncYUWuIOH8Oe9v2bhTKecl81vQ2vtWQZSPC2DiCLIBXOQUiaaYHAQlxTUBcU7\nHFJvlF5+pWSXGSxYP5tK/H6XAEJK4tDODeBp4NhSbmXEN0JwWQWurVenZU4Z\nMldzXztZ77g4ZvycM6FG9YOJQ58pT3hL81xDhnbGH48xL2xtujUE3glxdEIy\nh20LY2M/CgdQzWx3wqbSyiDiM5gjs7zN97SSCObmVO3awr4G/RcbCe8llMTh\nZOey\r\n=LwcB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.269-renovate-internal-patch-58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d_1625214220887_0.740269788910175","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.269":{"name":"@balena/jellyfish-sync","version":"6.0.269","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.269","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"705e9bc2a79d3f98494ad8d3cd1a707e4f60fbd6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.269.tgz","fileCount":24,"integrity":"sha512-k5Fgm0vzmcPPALBsTr4oKEwh6ZaDt+0sg+I1mgN0mPfVyaFM5qvRABqq/JZTTAHJbmSFK4YFNkrTJd25zDz3uA==","signatures":[{"sig":"MEQCICuh7LDXS+4GNLGErY40LArX/VWkG1s5OYvKKKoUFrMMAiAPgLmc5/1kDXrJYhqX6AaP0R9hLrqMUDVMJE7RLSGbCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3s5UCRA9TVsSAnZWagAA1AkQAJZ0SW1w0q5XiOqLFkRw\nGbCvKP/OOa1FZdBmlEAkUmRNLLijrnq0QuwlIAeEScfwVZgQdRrr1LKA6QiD\n69mFRx39dIPBxMBqlLHvs+e+IWs334ejAmxOgRdrfjpQPh6GV35IBt7WY9UC\niuzW7F1NZiFU3KIe/LWqiKnr/OpMk3z1SWvxx1WN45jkXUu96NoiyRmEQtkZ\ngLiJLQuzyHiP98prj+JI6WquqQi6rKLozNFlpsynukfDfbzvpRBcuW/fwGCv\nd/uZwkDquoNoJDq/pXg8AaA+t/X8UMuJ53/TGKcV3Ah9Cy1d+4ncTAZ+3scC\nZ2AlkGmDaXKzHjZmRD6i3MfeLaYNQdabv2n6xbetJUQgw8vVJsDT/N7Q1oKT\nlnPxchjCEvFdGJUD7iAIBlyZbFxy3A6iZe7F7VgxNqRJgxsx3DG2qOuB4/Qg\nNoFR+rbo/gyRn9DWe4zA2c40/npaG8jxBJIsRbWlHXSwPzxZgwL5KHd+uAmL\nGXNq9zrPJumuLtPFZnNgUoFoyoBQfDeVjn+brU0EIqnggOBAURR6n/PNU+VM\nLHu4Op6Iyd2TZpLrz0JxfIpEZDw27OYqoZ3fdln4lByR0kBjXoSpU9NSekOc\nZXx/I3nX1GWb/oLEnecHTNxoTpgfrgAyLTIZ17eS47IYfd/qQuvi54cag0x1\njiDQ\r\n=ZEw6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84d09d0c78d5929c9130037cfe2a082269d70378","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.269_1625214548327_0.005703997693650598","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.269-renovate-balena-jellyfish-types-0-x-bb5eb6c5a1415bae6d66544d94ef5c6d54612928":{"name":"@balena/jellyfish-sync","version":"6.0.269-renovate-balena-jellyfish-types-0-x-bb5eb6c5a1415bae6d66544d94ef5c6d54612928","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.269-renovate-balena-jellyfish-types-0-x-bb5eb6c5a1415bae6d66544d94ef5c6d54612928","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e65047c34e27f384e4d9b8c3d84e7ff1f1c99b4f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.269-renovate-balena-jellyfish-types-0-x-bb5eb6c5a1415bae6d66544d94ef5c6d54612928.tgz","fileCount":24,"integrity":"sha512-DbrIFO0e+J53zWB26W0mbba9c+1ZdLKIpgdinM+KlsVGu/C2l5hW8qdihsTOEnzSKKa1yGXhFUnDBLibphUBRA==","signatures":[{"sig":"MEUCIQCyX7xwWtdVvmUfb0oP9RGv7kMa3qzX9JBJU7ngBPT3AQIgTEbmvXP6QBoW0osCMMpIfuyj1dixIsyNE6L/tNTuVVY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173120,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3s7iCRA9TVsSAnZWagAAo6MQAJq1JHWduVO+akkbSxmv\nZrEOD0F4e+d0sUsIuN1HJ5/Le4ZWCZvWu0e6odpIge8rMyR+2ycFbHDSOwjS\nxgtpumYAUomgD1fTrFh2Aa4ZqNb46p0uWrD/e5tF3ArWiN1G7+YmUi53auaq\nI9FPakir0bidSSUx6aExpTK/mZJ46MFPHMX/QqWqMPwj6VI1w+InGCxeT+Ix\n4Xk1U4Lmpq89ncHr6vYGc6g/bI0n8jt3qn4XyQxQ4KCS7OaSZ6LwLQ1+39rP\n/GweL2SpO+q7nCwj71vyHhra3J6RFDeHlKiOiWebsefEt/kGT6Cd3ZNjuS6b\n46d/yFIfP7mVDsggaqN7e3Af/Cpk/TFDQHNpOSFVvsa8ITzgZtGm/375sL3C\nft5px9kMRbIMp4CyonBRkkP9jqf9RDHWnMOZq3KVpG/cue+nwvHIiKiGu9rY\naQ+c6dVxpZsp6BwqM9abtFjQ6rMNqSaNww0otYZBfdJeT2fuz13aO34UdE8i\n46JzpBy8blYAmId5jCBM5ivXXQ1u4tjmCtqFlfezf2p0Qk+PQf7N8IqAAtwX\nFNphdY0bajwGqYHPYO0af/MxYZPjAfh5vqh77LDfP+9ccS79jgSymPjnyr4g\n9lF5w6ix4IAxa1Jxn1ALyd7ijXSWM6Xqe3liigtAyiokdGc6UF1rvtCnh520\nuCmW\r\n=Gnvo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bb5eb6c5a1415bae6d66544d94ef5c6d54612928","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.269-renovate-balena-jellyfish-types-0-x-bb5eb6c5a1415bae6d66544d94ef5c6d54612928_1625214690094_0.9841139202948048","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.270-renovate-balena-jellyfish-types-0-x-7b4e3bc23cff9f4947aa09b089309e3aa2b7c166":{"name":"@balena/jellyfish-sync","version":"6.0.270-renovate-balena-jellyfish-types-0-x-7b4e3bc23cff9f4947aa09b089309e3aa2b7c166","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.270-renovate-balena-jellyfish-types-0-x-7b4e3bc23cff9f4947aa09b089309e3aa2b7c166","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8b05bdd22407d1e70ce15b888ae91f6d001d0f7e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.270-renovate-balena-jellyfish-types-0-x-7b4e3bc23cff9f4947aa09b089309e3aa2b7c166.tgz","fileCount":24,"integrity":"sha512-4WIzlGA32wixOG6NHCtDBc1FkN1FhXKPd1p7++905yuJmPxbkblBLkPVus8VKa8Nbld8YGuRPHYrEoBDXIRdeQ==","signatures":[{"sig":"MEUCIQDaWBRFsMgYI+slT63NWmDkzafoQZp2TdEZX33TeME/uwIgFAi1sxvzzL8kclB2rhe9+HfSpO2CdQs2v+iEEc95+XA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3tCCCRA9TVsSAnZWagAAGeUP/jWNOgj32Y0Za/9sxXbh\nC+c5CzpmGjpQvw6ZShiE12pEe/DJZgvnAI/8+1qsN047gTJ0fz5K3ZeJCiks\n8r/sU0l7+KuYFjPHWBHWF4x3CcAGVJ/oHNSQdZU3vne3GmgYuYBzFB1HXenk\ntTloV9dC92svSz8jwYoOmU59jLY73DqsSh0kpLmHCMh5dTcG5gYxRqU/61xD\n819w9xVvtZUUhUnuq2omPhKbxUCtTAD7utE2GTgVLfeCZqy9j/gqx4OSkH9L\njeR24omesBjdoTnICxTnNw/umIlg+pYu4YijSN2XXM5HojMt8k8L+MzJIgr+\n5md1HzfjL+hsJDPwocMR3AD/iOIbT2Lzp+sqka98mX3Nuez/axUwBfuyMlqx\npgtupaIGoTpspbaypjHh5LoB9uZsphrbOgupuAA5uNT8LRq8afZ5ri/GJKQW\nCcf9x8fhc3dVTwSttCaAAYXKxdaYB+nw+Of5CfvVCO/Nq9rLsGD7zPKsZd/l\nsMYNkAiHmuPDdj9ds0iet/HHjF94l1NBpVy7cvaCfn2K7Wdbo2FdVRSKGC/a\nsgrcPlphvs/T2uoalpgwrxqNeRLDf0Dwec/zELy3vbzusD9hi6I/ulYd1hzq\neUEJbh7wPVT/rNNDZenMHTPE+Ig6b7uIjvaiDhsCAFUnJYopWkXrWhrlBW4h\nri7u\r\n=rfpM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7b4e3bc23cff9f4947aa09b089309e3aa2b7c166","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.296"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.270-renovate-balena-jellyfish-types-0-x-7b4e3bc23cff9f4947aa09b089309e3aa2b7c166_1625215106328_0.48991970994975054","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.270-renovate-internal-patch-4619827588a6e2436e40ad3af00762d82275d486":{"name":"@balena/jellyfish-sync","version":"6.0.270-renovate-internal-patch-4619827588a6e2436e40ad3af00762d82275d486","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.270-renovate-internal-patch-4619827588a6e2436e40ad3af00762d82275d486","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"09309cf3602c849e70dae21c39cf3726ddd05c8b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.270-renovate-internal-patch-4619827588a6e2436e40ad3af00762d82275d486.tgz","fileCount":24,"integrity":"sha512-7fY2+v/3I3VMlI3QiVkdtD0YnGhbNpw0kKYHjCJ0QfaNTYGLU0LSNZ6wy6x9QbFmekYXCxvhFfPaWrMidweREQ==","signatures":[{"sig":"MEYCIQDMbkgtwbv7moCiPJyVpaYUc5WpLTqxpWDc+i9wu/ysSgIhAPJ30pAfnAL1RvuAteGSR2D/Ndy7AdEQUTafKYQ/0FWs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3tvqCRA9TVsSAnZWagAABFkP/i0KIIahvmTeA+O5Q3vh\ntiLCfazMVV3XHbl2pFsqiuAc4m0+DgvCK4ja/NRHHDnAWQyqgUoJd4AO1lll\nlLgaDKeQ12g2dC7GZhqlYGYXKIaK179eStPipIlxIknx9WxB2ClNHNQL/RpH\nC5jyFNOcaIpPy7Ma5Hp73NLiDZVr9+3CTRF8C016fvvOWUZjUgnIQ/efsbjh\nA2TvIdu0md9j5U7vYKO2yh03OBcpTrd4I/Q6EPE9womxMCo6leVeA9tm3i3g\n4uHNL5v7tDNg/UnlmQTp5HOwpZcDO2jiO2LnmpZWdLX1M9FaTOjlE23mT5gJ\nkSfG0WpyzgbMYm1o2xCdwA86GR2MWEgL06UwbtZtMoen80wbJ9f6tsSy9PZm\nxWLMM9RF9tu/L4rdplL3OjUD1ZyfyVCeouKccIDoR3zB0ZRBLzj53zNxdrOr\nYWg8E+rh61n60Pv1wmX+b/HPAJ/Q/LKiFg2HtQAlM7t/Trrf75losxXLr2cl\nWmjFLtpMm1+x+EwU5mnKgvVa01RL5VAbvB/5lpXLnrGTCs4u/xF0U5rcfbTv\nddXZpmiu9SrOLVsf9kOlQCXKamGyjBAJ9in4pnWcjQhY52LKnv50UbBMpvud\nvpq9AmcOlJZ+kq6D+gYV4e1iek5+vpCNa5xVdyHyg/8i3T63zxyecVedC7p5\n0NXW\r\n=R+RD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4619827588a6e2436e40ad3af00762d82275d486","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.298"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.270-renovate-internal-patch-4619827588a6e2436e40ad3af00762d82275d486_1625218026284_0.028360488012024065","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.270":{"name":"@balena/jellyfish-sync","version":"6.0.270","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.270","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"68e20130eaf818334f598ddbd1cb1b633355c025","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.270.tgz","fileCount":24,"integrity":"sha512-VJID+yIQe8XWwnqrXkeK1L4i7WzOJTQi1abF3UNIhpjxH7H1Lz/uA0DGmj9nlGgJO2eshgE/W5ufAxZn+y+P2g==","signatures":[{"sig":"MEUCIEznMJoVLH01xDvnTMQzGdYKGWjHMqr6dR+nQloodQjXAiEAxtr2M0OLLdj/e10AyuxQyqTFjEJub8dFX6oZIDwFfs8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3ty4CRA9TVsSAnZWagAAtDMQAIE98ZfjYm1Xr0SheoIm\nnkAERHpial3Wv0Jg5iBZ3eW+4WO6ePr0m2bcE7k0EUALnt58CINDCIftODrF\n7sVqbNBXJ4zOxfiWlwitDxQWLmKf3nMCfNdCI1Dgz3qQCX08787Y+IeNuzHI\nnXof2R2PfvxU1N8YQ1bsXIYDFNgG1zwVERMjFzNTq0cMT9LBziSYw/zHdv4f\n40wO1XF7zpn0ceQZ6P6BUcjHStJdSroIX2oZPKQRF8lN7Ic+cUNtJawqH0q5\nIyrrCSPONobey0HOs0pzQdPQK+fYjy7+O0CS6XHgw/5qMKP2ysMRc6hB9fDB\nL1uwwHPKQ4AcTrH1bkWEfJdfRzom655VSJOnjxkIWX3GV/7QluvLOmlwty1w\nJGS2Oa8JuWPSmeHF1iH/qGv+lk7sKHvjtavIqyy5kPWiufkn6n8Pd1aslxF6\nRUq3dPrXNyNDX5c8xsCJtNlNBk/zaqJXIH/yIFE+X/x9mt/OXxhU/ONnVhJe\nbi13MV7VgcCyDZz5VW95piEBlYSMXzsHlpqYRZ+sYU4OZ6HUjvstvPlKpor1\nvIenW5c8owI3Li9ggDve9Qf5NEadr511shx3FOqn/fN582xMrcr1XcOWS7xr\nlyJUA5t1e3aqup9e2G9pEBGAOJ1KFAQaqSAoIuHQ0TvjCdmBxm8APF6x0mLU\n7PET\r\n=3o7L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6a4039ef43700d264293130c5a8b36a0873f731f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.298"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.7.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.270_1625218231777_0.803681388877409","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.271-renovate-balena-jellyfish-types-0-x-d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c":{"name":"@balena/jellyfish-sync","version":"6.0.271-renovate-balena-jellyfish-types-0-x-d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.271-renovate-balena-jellyfish-types-0-x-d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd59bf513888cfeb5441cb5db4de97cfce2312c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.271-renovate-balena-jellyfish-types-0-x-d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c.tgz","fileCount":24,"integrity":"sha512-UMHuYXITCjwGAv5CnGS6589LIrvQD+oevmJlMudtKeF7PiDnZnD6KCk89RIqKkonzxJbA/8mCetDSuax+avWvw==","signatures":[{"sig":"MEQCIGbJOTIOGIInRZmYbHlS+8W1PS8go4vP2xeluav5dv3JAiAPMq5O8m0b7FQB8EQORIioHXUjlj9WNJlkByVf97Dr3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173252,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3t1qCRA9TVsSAnZWagAAj9AP/1DAzI6eRW+o3ItIeOOS\nZnRtwck9CutOJzIzATS08/QPkzEDXzG7osBI3oET3oWR4E6soElqaPnrNrvn\nj0hDh6SXcsqJh0WNdU1xjwh8A+pcZdxJnrPNeSjgU3U4DKFc14N7ONia/RoB\nXTDRoRc6Bc1g8fDkTRQJAxjJpBjCnqoQTI4jCT6TxlcomjZzDHYJ3xfT6GDL\nm9P+/e90A8q7tGjriMRjizgfnqi8bzVr6VjwjDMVVgAoodkVqVri06qfEZD8\nQxTQZiD55UCbBTxRhr8SrBgMcvIhBg69uJvcv91PmwIQf1NU/Dc5KBaeSN+a\nWKCJ3JDy4E4jWkLZG50IsAc25234LH8NCVjpC5KbFGgFqGslAoKkguXbNyMK\nn8gsYw/cuotqT99VBeuigrlZJQeUmqi9FJ1M/6z5/fhxlaFi1pvn3bzxBvye\nQf7ARL/KRjZtsA+0+eekbZBvG8dwznxmsfW3nCulrYqfHCuS/dacHXe/9KyL\nke96ybGgSYcV8N3E7iQ5g+QqTnRP1ViXIWxtkZDYJe2lbszTpMlZ8nimRdj5\n0YI0z6HRB4mN0u/VpQsyGnqxrOPZXucgWiwPS2EkVvNxKMsqEN7neYKVTh9Z\nxnZkdUKusz/RbS2us6HnfQNLT/+B7ZBwHZBnMzZCN7krPFDEzCjgVRk6xsIP\nHseD\r\n=mR7k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.298"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.271-renovate-balena-jellyfish-types-0-x-d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c_1625218409605_0.41409862461687474","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.271":{"name":"@balena/jellyfish-sync","version":"6.0.271","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.271","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d6eb1b67c048184d1e1a77554b3ee15bd904a63","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.271.tgz","fileCount":24,"integrity":"sha512-wH5UIN9ZfXu4FgPyVB+tgs0VRGnEkWCtlAvavpHwNjSmjXcuXHulJgDnY1HhqG2ygUyh+UrCmyI4AAW42YbiSA==","signatures":[{"sig":"MEQCIF5LN2NcJ2geU6B9H+R6XJiFeNhm8hdyPEXzh5m02iYgAiBK3x9DMks/9N8HpfKu8ks11o914ELIvQmw44TtfsZp3g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg35H/CRA9TVsSAnZWagAAoYEP/0+clZ/WIY68eFJzijKA\nobsi1xS5J0F7WLSAdn99LFjlwIjQSF6tw7rp1hjVmZYxbEwkrkC9XtX6sq3G\nyuFj1NKPYPnBxHORRjLhRewGU2QBlupbF6nLo+AFRg1FEygzejl56Q1qNA7h\n5juqMEzm9ordTVH0tdIT7X1uru7jTT2pR9naqKWVI13F/j1eNuFsgJ8c5ltP\nN5CcU1QxW1dso3TU+XqjONGwmcPHwS8oqelXDk5CbGCZ62LwjHLaqKpA5Ys5\nLEtyRgUJ5D5Oeh6UMNlfKDksqlcJZS9d2g5oeqfl22x6hKro+/8SS8ZfWLM2\nU1Sym1wI/iqAQAZ4QiXEytuCCAhNecdDJpmC+NXnk2XlM7zcL7YEzIuujjlP\n8NuEO7ZQeXScvTnYjJt223JN9QYie5WgM0C9ZJ58/QXcwfu2+XAICrA5bSmY\nci7JL4azANkRaUAv4yVwkHfIaDO8U5N7FAOCxw/+juuJcX523LneDBv2Xkta\nwS54yfF5oBJUNIcTkq5KAcf7COUiwMDc1xg4vHISuv6je3latCk+HPfpolvP\nfI1RT3m4I+RAWnMz6mrSRnNNRJqBomzvNl3puGZDizS8c/QvFx4TJ3MKhNOg\n1mJ2xEnTBjk6prUmPRLf90eUgGa3vYrV6whDt2Tqxwh2NeWpLkbfs0kUXzjI\n8QNx\r\n=f2AJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b5c3e553b7420118247564b8183881446964b6ad","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.298"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.4","@types/jest":"^26.0.23","@types/uuid":"^8.3.0","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.271_1625264638813_0.7806974099276613","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.272-renovate-external-non-major-398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d":{"name":"@balena/jellyfish-sync","version":"6.0.272-renovate-external-non-major-398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.272-renovate-external-non-major-398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e225c78fe16800855882f79e629b8adf5af3811d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.272-renovate-external-non-major-398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d.tgz","fileCount":24,"integrity":"sha512-2VglQjNDgC8AVCdeATEmT+GfQoO9dXpY43SoHXeg0kDVEbLy9vLvQz6Tp2qS8z9TLwOi9zyphvZ0jeubaUawjw==","signatures":[{"sig":"MEUCIQCIbZNRM5mAvLg5GkShi2KOXq9FYPh+UGJlHam+g7tuBwIgFaAvSXUpTt+JkyAbd8r13qpnEJQ+VGajTgbrYsIt2/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173320,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg37jOCRA9TVsSAnZWagAAzJAP/13rF/HBMahgE1G3yaXr\nIBXpM/+FLfX6GnzPx2SWmUAwwiYXFfTohpWQjOMHQ46oXCelQrrsfpC+Ylis\n+zKmT1QO36t34TH6b4plr/PKt4l+Ua6gsfIcAYqW9xQ5Y/eAkg/1FGQdORCa\nZyOvYeOXyG04uVRMvCkQke/xUuB8/y4gW6jWyYdeVBXeiy/HrMtp+OVJu+fj\nlcZVEO5Q4uCJeedw5iIulCrgaUlnPEPZx007ays4aZxUaQU41fdAHyYI4Q3V\nE6W5ydOSXC2Orwnn7sIPNjHwLOMFke9vSZIEJszwpy2pxErZlAuAK9NmmNuK\nm6+h/KivooYLNIMDbpbZP0SNiqLygv63I88jjncVfAFMoXf5E7d4FJiZlqvw\ndgAXIcDGF6YZrzxQCQ9eS2jsEsygzuMQ16FltWryd50U44I8wHJpnOQuevW3\ns9rHWL9CM55nOJQp6FcGJDjj1xddYa48wsdeuCeSSsNG0yNqJAVEX3cw8S2E\ngiujWY8AywVjN5TOvl3FoT0ditUuIpCUwXYdNszhUt5aFLK5ERQZmcVkjwn8\nCQ08TDzxKoN/gvphYVqsgBTMmB/Zc5HzUM+0ceb2iBez4fyyqb/ZFip36yJi\nSdQwTVldl4JNSljMiawpOfZrvApT+W4satgS/ZwfAWjUYjBYwo9iEyg9eRYJ\neWXJ\r\n=f1c0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.298"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.272-renovate-external-non-major-398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d_1625274574394_0.8604584636968415","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.272":{"name":"@balena/jellyfish-sync","version":"6.0.272","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.272","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bfb51c90092e5d1bfc4ffb6dba8b42e5df385706","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.272.tgz","fileCount":24,"integrity":"sha512-cOcH0sYEdNuTux1uNirPjDrIKcZMfFO3tReQYI63jP2nUzgfwHbJKPx1b2uBP4dG8eHNBGaJs6exPt1LxhhP3A==","signatures":[{"sig":"MEUCIAt2bTmU3ntEAMsnACrxXDOvkaKc0TLlpXR2AHCGGjohAiEAh9j4TgBOfIE8Y0FTo8P5UijJyQZQDvQ8mY3MHaJSkMM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173251,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg37pECRA9TVsSAnZWagAAOM8P/2J8p25WxgyIQ7rXsCvc\na7Bmoss++RFSCGKPH/DtArBguUp3RT3/7osRHKlF0FXX6lAyjNIqR06OYxKY\nqGMREtDeimhaHu3vmhGsnINaCldIGb/1exSAjlN2OAkqqAJ6ovdI2s8GD80p\nSAPN3DjNDlFhcriFzDywl2firQG0G4o4Ov63u1IJiZOaWIlUkl8KMlaXcbDL\nkXZilpM4qYlUmiZKCyqtTgW10oZHkhR3YH83Ln79KYY+fZUZZx71DRHO8ztv\np36xbNPumLWsuXc2ZNjdtASt+ZUnw1dbhjOKkcBBxS+FIa2bs7pciynWouDg\n3Tq8NJFMWQa8qiGgW6DTcmztt6iZVhoHHzC2YuPz8Fx+O0HkRl1nxT9oIKEE\nbSPkCt1I/eqzmGVZdaL88n7z4T+Pqqst6DEx3FNzm2RfttCEDIK/abQiT2VU\nFu41pP/2rmOZYkVj/g7UGmeDD0Px5+vJi0Rx9aVY86YAmkTx6dgd960mIFYt\nUQC6fFn0UqWcBeO97OpsmCpmayBFz5SOYdA7A9i6t92dnqn/4qn8RS0LJFs+\nPneVitnXv6ypERJ4EgenAGrqhA90dIZT9EvaovrVtOi+iVqr1L1lPw+JLpaD\n/c6xwmxdbp5chtgM5vmeXz8Z1v/yRiKNKFxjy6RyPYCK1/XpHnvQ/wr9iooJ\nDIGV\r\n=fX5y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b5498fdf4bc69cee5a2aaf24862b0eb6006bc715","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.56","@balena/jellyfish-logger":"3.0.36","@balena/jellyfish-metrics":"^1.0.298"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.272_1625274948102_0.8674704799807007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.273-renovate-internal-patch-70c709d936f78d244e6987f37407fa8fa5603c84":{"name":"@balena/jellyfish-sync","version":"6.0.273-renovate-internal-patch-70c709d936f78d244e6987f37407fa8fa5603c84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.273-renovate-internal-patch-70c709d936f78d244e6987f37407fa8fa5603c84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a94079495c20c765e5f2d2d138a748cb43f7a093","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.273-renovate-internal-patch-70c709d936f78d244e6987f37407fa8fa5603c84.tgz","fileCount":24,"integrity":"sha512-/E3wJmwKQ06iTaJycKni9XYgTXO+ki48O43ylEh6ZegMmEeKEMudpttUfzxI172VJxhWuCnYqtZ7IpVO9MoPhQ==","signatures":[{"sig":"MEQCIFgJu1r5EZmceHT1lMLsk9Tuo700gTUrbVBLvaXHYQmEAiABtdwm02XE4WeetpJl0EbZvWiXVElMFmkHEeterypNRQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173388,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg37tiCRA9TVsSAnZWagAAuOIP/099P5OzQagkZ+Ayqc48\n41+XdhAuosRA976BvVxotP6t+E1fyFUaFUYbv2jQOTyyew574g/YaVTEk6eG\nGPjT8pQ6ONE6KXpT0TVRSD2+SdnI+B6ZJz9LXi6H8yXJmZbMdIoMK6ptajmd\nUCqLB4ajc3sQqT7Wmfu5zCJBz6nvuD2r6+1gJuSu6zEFA4xcm+0n0p2bnRRm\nEWVvlsd8hmitmtGxC8Fx2kS39UzT2nWl7+CUj18MnzqZ8Ue6kNNjfxEivnKh\nnKATILcxK4F1pJM44BDih514PxAHNT0Wis/K95H2RU+nrvmmvN17Xd1Hhkz7\ntV1R9tSAm6w+iZk3pZIluGlPYDD/9Lj4z1SGUZaPpX99m+UsEUXtEdHqCusZ\nZY6keuQsqVV0DhD4Jcc8QDT7BsBeNQCaCvndb70oxTxwBQY+m3d719yFhBRD\nU5kNxvo4SFUhkNFD0iIT4hB34aIYhED5He1IZUTq/7mFVLVcU5vA8ygdvEbs\ntRse+tVXQBnM/uEdnQAJqJhYg6NHthxRztJofH3DNXdlqna5hzkRTstr+mEr\n2K12+uTcAw0+ZLRN9cl0GOr28Z62zxybWzoVzGBdAVOp7vE9I78/TaweOtNf\njh1EnJJkSaplNRnVNPJ8zZg8lcS/L3Ww0Hsrr5nfw9UqOMPX9rqFTA25L0Eu\noN3Z\r\n=0jtS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"70c709d936f78d244e6987f37407fa8fa5603c84","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.58","@balena/jellyfish-logger":"3.0.37","@balena/jellyfish-metrics":"^1.0.302"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.273-renovate-internal-patch-70c709d936f78d244e6987f37407fa8fa5603c84_1625275233739_0.2915214573166056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.273":{"name":"@balena/jellyfish-sync","version":"6.0.273","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.273","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"65badc4fc5f532689792b33110a378c272f24c6f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.273.tgz","fileCount":24,"integrity":"sha512-v7x21uiwRQvAc5HLae/EvyJf5dNTeJwucFYnU9FSAJjs5xIfzdxCy4M1FVCz5OAS2U5Vecs2K/PfkSVc6skUWw==","signatures":[{"sig":"MEUCIQDuEOiPlXlCduPEM33W9VvEcy8k7KVROtvIFFXC3OyyWgIgMrr3pMqKLx0jkAwgYbVdWKVEaLi0RdLehqWt/2bQh8Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173323,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg372yCRA9TVsSAnZWagAAa0IP/jXTApQFYKjYKNUR65Z2\nQgIsM4w5n24XXwugk9mC/lacX0utPvFiShGv9x7Z19ep3jf9pOnzaE8d2Szd\nugpw+X5fh9MU609yNmrIbo4hnDIMsBZbdbsMInKk/tOv4NE9FR7b/bdHakpW\nmPCO78eaDaOzqUC3DvcuGsfQwO0j/Kj/328WUxBrffxmfTmp1e5/i86H7xhP\nsJq56tQtORjZ+6154rQi3FiKhvOz7meI5F1/SUsD1BcRoIeNed8gns4xDMAq\nIbSNtlJ5kbz0fk7x7nb32tOHwwSIAFEy06p3MusYFaTGuUqXP6Xkl81ariiy\nPzlh1Mk694StoDX0+uNvNZE4PuBHFtqeQJUdSyp7wnW8H6iWB+Ga8rku7R1T\nr6nhwvGkqAow+TRVW00JEF8Vc1MwBPy4L6oH9qxfxrsWWT05eTZc9ONytl5F\nv+f9bRAZ1xSWZwL+EygPLxEyU/N3rYH3SfQMXCgduW44JhZvVLYj2rtQQNw/\ngtG1Y7c0txCGdx+ACMTo27QXcSypuFboBnd4gDNUUftFlFhnDSJhOs4rHHRq\nkA9kwBRai5c/gArP+nBKBr2BiS8UQ35NZ5fLFmRWAURT6CDbn1qdbI5+1NOI\nNpblqs1Jw85Ta3ziGtGkt+Sh3wFrXayBsdeKAA/tfclwYU8L3DguuBokcg2h\n9vYM\r\n=V1JS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"90cdefb7f3abe41626547ff3f2cdf884419b4445","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.58","@balena/jellyfish-logger":"3.0.37","@balena/jellyfish-metrics":"^1.0.302"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.3"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.273_1625275825977_0.39277982415834023","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.274-renovate-internal-patch-f73eb2ceb8f82ea7066678a5431266127b160e3d":{"name":"@balena/jellyfish-sync","version":"6.0.274-renovate-internal-patch-f73eb2ceb8f82ea7066678a5431266127b160e3d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.274-renovate-internal-patch-f73eb2ceb8f82ea7066678a5431266127b160e3d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61d7404db71fd6dbdc0ec85f2ac5282f3a487693","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.274-renovate-internal-patch-f73eb2ceb8f82ea7066678a5431266127b160e3d.tgz","fileCount":24,"integrity":"sha512-PKqcbnSzJM4VYRMfkEjx5d7Mem5ySxoB1Vdq/2wRTpgpdc45/CiWCoBzeQE9eq/mPuDEir11gt+XT8K1VClgDg==","signatures":[{"sig":"MEUCIBzwcnLrV/Oz4waeT9B5EAwFvUR0wUF+jBlcbsEdV3yEAiEAkFeXeTZlNR26pBr9QMZESk28VetAjcFK8jA7KC+/rfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg38+6CRA9TVsSAnZWagAAb28P/ieu6pnKkySF+tEUVwcN\nVSTvL+ZSKZEzVhDqYqZXUwx7wgsT3j0604QwUs2x03OiKf9HCBm87XW2AOB0\nIT+7zTjycaYJz6r+jFn4GIrhsuVFG9Bi+WZdmNzO9BKvmeMnQhOhF23Ae+mg\nLLKvzeFldbdhFqxzntMhToj0ipmXO0wzhTbfZQT87cWFpam0cS7auj9vbB27\n8iVWePn9qMwtzxCcOvRQfXJq6ffg4pbd+WpVns84f3e1hSqUmFQ5qWRcmNlt\nFCA/HLSFa3Sq/xbuIcp1us3ImPctiq1rputQs6mo4aYOknijJUJ3S2PCnJmd\nt6/agIPkWqgiwx/4A++I6onGAva1joYEaX3QGA1lxNGNgltH7Lsgp4lpo+VV\nCgnjLk+yI2PW36x4JlrBh/UU8x0dChtPjtuyi9994Hl3zP8UEjzb5yEhUPry\nFphZt9ago1DFZStgTisfB33BEnluqRlz7g+8+VMCyc9szP1OHOtqsqUhvxw8\niDXVquQcxwPpXz8K6kZXOcbIOYWP5+tw8W3z4RiTk9ssF8YcsJm/yt3MPRCj\nB+hk7pJpWyx85RtaWhgNyU3Gz7s9VXVZBiyo8RP6sYt621iEfK4Z4Z1kvFyp\nfftiQ+ViW1n5gQU71OFXgaW9hwQWW71UFrw1/VYHV+9b2uNC7fIz1ob6aHCX\nGOfj\r\n=6Tc+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f73eb2ceb8f82ea7066678a5431266127b160e3d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.59","@balena/jellyfish-logger":"3.0.40","@balena/jellyfish-metrics":"^1.0.305"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.274-renovate-internal-patch-f73eb2ceb8f82ea7066678a5431266127b160e3d_1625280441671_0.5619552706756772","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.274":{"name":"@balena/jellyfish-sync","version":"6.0.274","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.274","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c73a9cf09b19884544a188b4dc433a63eeb33b08","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.274.tgz","fileCount":24,"integrity":"sha512-ktw2pxzOoxqMFtEblQ0ECj+F0I7N9Tp9l4/D5qjkPhQI9G4vj7NkJ26svauZrdussi4JmwT8q55dAmxiXnHoJQ==","signatures":[{"sig":"MEYCIQCXbq/DuzsYeO1eweMAGW1Pw/7sXf0YzJu31J9caQsXMAIhANPMl7Fjk143NjxELHr21yTwPxf+sZqFGHFqbWwL9mfA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173395,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg39CkCRA9TVsSAnZWagAAl4EP/jsfZJOZCIdGf5Z+3iMg\nO3nDe/yRphMOuYJUa8jFwo6J8ArF1Ygwmb1mE1SWLl3HLopS73b55npwWg8F\nDXG/zD5aOKo9CjIzUen6vASyoBcLCOjbyXcPT++yvF1W/BQehZPalEPEwXhQ\nHP4I+B5XXtfsw30fW5VUskWMZEIybBr3W0UAKo+gbgE3Zwrw9Min1AGVEAkc\nHxDe4jvFQIBzyfyP4Aqou6iSIkblVhZTN+fFDB0fNeUAtWLU20GKsIY4Oi4l\nVAKudBc8Ytziq/zyeW9eMH1NkkzF6z3BmBmZHJmWcYkakMyXkg5QrsET2qWt\nsS14TFXUE1nXkURmBIYB3yQB8tDJj5hsajaEtAzGDGVxIR060RWR04XEfozO\nS5SwhMDeKBlC5q8SUZIvCyT+kFDUCqSAC0tOaBkpshMtWOeh4OaKoHhpvvuk\nH548WTuTEinvDPxtMWIACK0UlVgb1e5vbCPhgmC5fMZAq3+lSbidbrSN7yni\ngnOnEZXQaSxNytYo9RjxgiLNFtfcnOK2BVUtwDHjJPns+JX+5WQzQRUvWB2z\nzlGgaZCzlHAsMQ9JXj3sPL0+UvZgK8jaCpWPDm32gszNd9qy7g/lm7pmTaj7\nBcSPW/cGZSphCyQZHZbDS0vNyQgHYZqcTYOUUJeS5tBhuSJGAoBTu1smHS+t\nvqrC\r\n=pJYT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0b3c8592e135a6c3e883862af0f6c99b01ae9d05","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.59","@balena/jellyfish-logger":"3.0.40","@balena/jellyfish-metrics":"^1.0.305"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.0","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.274_1625280676045_0.45992704835966713","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.275-renovate-external-non-major-ff53af08b605217066ca4dcffb3989f472b7425d":{"name":"@balena/jellyfish-sync","version":"6.0.275-renovate-external-non-major-ff53af08b605217066ca4dcffb3989f472b7425d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.275-renovate-external-non-major-ff53af08b605217066ca4dcffb3989f472b7425d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3277f66079534293bd1041c4ad2fc636d9ed506c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.275-renovate-external-non-major-ff53af08b605217066ca4dcffb3989f472b7425d.tgz","fileCount":24,"integrity":"sha512-+EUG6gkLrbnC/ggD2OJPzbD+bDllOHh/ECSrKnWFZRQIPR5cU+Hz7lUS/AQhL0mjmC8rjTJCUnT17B6yvB+rkg==","signatures":[{"sig":"MEUCIQCzuLSSbsUq5uPZVC9rwH9PuXB88030vDbitawvhQV9HgIgPKqaDTnP3RAv6qfGdlOjmvj64PvAGoRyjns76F9Kq9I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173548,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4hB5CRA9TVsSAnZWagAA86IP/2GBM/cd/zD+9iPQntnY\nOXLI+owX60wFMVBsz2xpGzSapaZDOTzxoXSpaM9QRjVgQER5ZqieKCgJSc+C\n6/KGeQRsiAAa0A5zMUBykLwYuZRqlXc0vuf7iJXIkQOh3qDcPRMWJLtqTAxK\nzmP5ljPLEH9xmJxK+rLXQBfMvt0+CaoNkFVCNkUoClAzlIV6U3l6Fj+jAfw3\nSQTn4y4+SeOn+ZMkjpDJbviHMEjSVAMVnBnQ4mUB0FWRyLsqbmVaMwYoey71\n/YFoyIEVShgBx8PnGNhQPtIvsfcyUvdpUHFJwc86MgeUFFinaVtv+6KkaGRK\nJYhCRdC/+iOrjC3rGMeHlEM5JvsXZQGS/OuBsDCdfyx2UZlKgGFoJzbQFyYg\nrDirUtDMHTx26jvYr8QCG8tGfqu/00twRuRJy302tS6/SK29wMaZ6Fjn6yBZ\nHct0+cXbozeR/6Lli2k5f+IcS3FwhzePBm7MP+PqxBg0hspEH0iJ1bLX+Hv5\nqTt4ZQ0z/v2Y+CkhRQMIAWETpgprnEIhFwlNq04ih/C9PRXwVH13VlBHPQ9x\n8pcGN5WzflwdSdoKiDBDYD17vzVTz8eEdROPquhwdZaw8SG5u9vZ+z6AHC1E\nN33rlRusyYtGMBriYD6PO6HoJW54vniIFoMb5IEmgxMau7apqeRu6OUeLBPt\nS+hv\r\n=4D5X\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff53af08b605217066ca4dcffb3989f472b7425d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.59","@balena/jellyfish-logger":"3.0.40","@balena/jellyfish-metrics":"^1.0.305"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.275-renovate-external-non-major-ff53af08b605217066ca4dcffb3989f472b7425d_1625428088655_0.2332729805067859","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.275":{"name":"@balena/jellyfish-sync","version":"6.0.275","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.275","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53ef11afe1b08ccb518ecbf27c736426331e53e0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.275.tgz","fileCount":24,"integrity":"sha512-vipGedbJI4eBAisPIWi0RkPvc/ZETM9yIQyR3FOWkS5UKhZ6PVVPdA1YrZPmD4yO8Cg5ZIjynDgEfaVyfRPn6Q==","signatures":[{"sig":"MEQCIFA6NtGzOq7AerhkhLjyszwo+WUX6v6GW6uUOrOvx3RBAiAOLwEIqbbFbeOu0O+C3dzRmYFZiyFsOZtRNaeJA+PylQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173479,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4hFuCRA9TVsSAnZWagAAUZwP/A58yEUs7mKlqX2wu3sh\nZJqzo4al8J+3tvDGhfODylTua0KwOZA9SSHMZmxqWu2X3VlfIBmroyNoXe5K\nLVcUxl7oLK5QQUuLFE7kXMX28ZDZDWZi9m3GhzL93TUDOC/3AMMnPb249ocR\nFkQL9qWPWJL5v/b0Fo0Vs+2LN058245Xiu5eWoaXi//vJNbfNHCRcMwcAyuW\n5Qu6FFJfZUN4sE0Gh1QpcOKdW7EE5xQPAFaom41SiQ/utDPx3Oyn5+rcyb+i\nqWU/rHJRkWjr9vTSJXbOE9RtfBEZudtRgiSgifePEm8zFz1LT/F1es5uPPhS\nPBvFLRyUOtrWU9c2Ppav1RsSxJBKhU0xtRLr+mGrfdwRKTKmkD2DSPWMMAFQ\nqMRm26NW6G0JtRdJ01wFk8+owhqJJTuODuChi6GuhEE33mq28zKNJ2HkRbm4\nBJEAGzMzG0Ei+UefFESL5dNRrhck6+MRlzaSzOOGeuyvMp1bXBk7jbj4QUmZ\nJ0quTD23gZfeQPlbYzLaaVJhifNQ6ZF1Ym2nxgn65KE6CN+DGsVhyqIw5r8f\nvrxQArChJtfBQpuN9jR+ludGEuuxASG4xX/mNQYTVMU75oNAQTfE6J+GqURH\nUqw+cEY44bjSxpoYCXSCKyFOWS6YYmd4ehIDU5gHEHJfQ8kBUAabKBs2lnlD\nl+Ai\r\n=0mlu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eafecc1bed3da6219e57617e3a786c8aa120e850","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.59","@balena/jellyfish-logger":"3.0.40","@balena/jellyfish-metrics":"^1.0.305"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.275_1625428333535_0.7560902034979176","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.276-renovate-internal-patch-d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55":{"name":"@balena/jellyfish-sync","version":"6.0.276-renovate-internal-patch-d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.276-renovate-internal-patch-d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b44b45a349ea48590a5ceb07c685cf0ebd06aad5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.276-renovate-internal-patch-d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55.tgz","fileCount":24,"integrity":"sha512-dc6uN8fI0EXtcZ5qshsrKubYhJjT6dbaZjDI9+w8/hAx0CXjvkQ/EqdlF4bG3Kzr18x5LvuN6C/IvtxKx8cqyw==","signatures":[{"sig":"MEUCIB8a9Qb/+x/Sash4xtYhtByinfpu+OTts/fIFfceqnhtAiEA0n0/+g/+o9V8L1VGPRWx3vXQmG6uXbi6YDmsLdS4yB4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4muqCRA9TVsSAnZWagAAxgMP/1eutvpGXPMSzMufXotD\nJRQlrmTF6b+5kNuqyq9A1ajmQPde8HJ0GuR7NwbsYepruRSN4V8Ud500A5L+\nubGEjg6baWhqIHagbJtj+YUibP4jxVGrjJsyNO7Ntx6ef2Mr85+GO+dYYOzp\nDaiVnc6ap7t2zf6NJF6HDbUBj4cyto3I/0SozlPXTm05Z6ArNHqR8iGoDYSB\nfD+JDWepD1Z3MeSSLmGqkL2wBX2EomUDFyWd7x7nxJM1wa28NtUhLJ6lHoRk\n8M77SgHXciJPR4gRyc4+7w8pD8H35qfnQpB9Fa6BRp12SBxBWqH2xZZJvR2i\nwlCFcon4qHIljTaiPPcjE65GWGr1opmWwSzS63fTUSOdlBR++Zr7o2Wdtzdf\n/B7DcnNJAnFUgm1u2vmpBFsfWsXNNoEjRq2nX1c5WT41W7QU1oKN+Yu3Yrds\nFXempm64x8Y9RT9eh4KkwpDUQQ0EWd1aP0aYh5QhAQTdWJy/wrgMsOpd8eRG\nF2eZZSzdciIKcylBJE6TegqDQnsOzEHtdxWU5kxthRTlDPcXsmQUu0Oz+MSO\nmBwAyXjBdJ4ktiMT9SaWoSdAaPALN1q0eKF3uHYPirqeE3OIu+IuVeufgTQ/\nFAQx9wpESTWxcNYgzr0xlatjRIqIC7CbwEgJd6NeJ02YeMfJqgw/VdGV13NW\nlgVf\r\n=zhoD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.41","@balena/jellyfish-metrics":"^1.0.305"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.276-renovate-internal-patch-d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55_1625451433739_0.6571444583564046","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.276":{"name":"@balena/jellyfish-sync","version":"6.0.276","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.276","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"06731bcd4a89054f457b0e1363392e64e588814d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.276.tgz","fileCount":24,"integrity":"sha512-tNzO2oLQf1tA0nzPY6O61RY5kFurjAq17GLUYUiNchMC3UbxDXMfnb+zNnAzAIRp8fPWpw0neETp8GxD5rAtpg==","signatures":[{"sig":"MEUCIFtHMUyZWIqsLYTBdht4CFgWBX5yL4Gm/1F/GOBqEDWBAiEAjcrbqTWiNTzP3IM5AlIWmnJBg76mNrWUy13W5YoZHlg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4mzOCRA9TVsSAnZWagAAMM4QAJdBLPjAkT0CTOlSbFDC\nOFCQsmwAmmYAz5kWr7CCcGMnPF0JtZ1neMU6qyHfe4HCJ47xAPgOwny1xSdJ\nEYSssWfCKBltZWmxPjhYTUPqsgM9s6qkkI+eLR3F85p8Q6cRw3LOQE2tG7ll\n3iINgtpU0D+IAqm61BhJr2o4U2JLoZBxn7rMHba3Xxa1DdinKDxaBVLe1u8f\n8B2PujO4DLSQEuum5hcch7Kt0kTT8Igy5Uwab+AeTgLL25xfhXu+1rmHGJWm\nLVpjncEHsWPdSa4q3EQtRqTKnFWbagKzWzSNgWiiasD8WddTi5lhrXqXbYUO\nFUhakIQcHK4MUNZLzu4lsR/OF4XVKdPxOf+24hwwQ1sTTKQfIo884gYzQTSq\ng7ndlaHtrHg+7RGT1d3HmaEZxYNJemdcCzhMQOUzBAgc77myrp23hKyLFotQ\nOY/rtMtNaUtQyLNZvgz/rCSMecdu/QxPD57v9I3/FqD4q+4xOkvR53RAptAE\nwfT5cscAxyqJsJTSWG/Hemma9ISPgOapIPIjCmscqZyOotaG/9K1g/bLRy8B\nNY2p7kluF6aiOGXVuCTBF7XQiMX3GIVvUO7Gt24JkaeqNXFNc7CnGwpZu/0X\nm0KDbvjo0NYUD3YmQHf5bFC5O0ceoHidU9CHGP11osVRCtBFr0t00fWzwrOT\ngBLK\r\n=KEmQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"44e78458ef78d44db5207f61b2e748465945c4ad","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.41","@balena/jellyfish-metrics":"^1.0.305"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.276_1625451726044_0.023791028040817785","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.277-renovate-internal-patch-ba3519434b1d58f20bf8838187a36e3b764512ba":{"name":"@balena/jellyfish-sync","version":"6.0.277-renovate-internal-patch-ba3519434b1d58f20bf8838187a36e3b764512ba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.277-renovate-internal-patch-ba3519434b1d58f20bf8838187a36e3b764512ba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b2e32742b17300310ecddf85e703a7ac119c11e5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.277-renovate-internal-patch-ba3519434b1d58f20bf8838187a36e3b764512ba.tgz","fileCount":24,"integrity":"sha512-eWcEiKb8+1wi2M5I9ZzTcCtj76tcCLUWjHnZ+kQ712CLRDIFSrHOH9iZJ3EpkNdv01cN9MCEdEMVRiSzttBqxg==","signatures":[{"sig":"MEYCIQDwtbV5s+KNagemRD8LGsMgSxyMSBpUp/RXETbxTVaYGAIhAINhuj+T/KCvPhsxaKct/fDxgJPHFWdRtNttBd1trvVv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4ocXCRA9TVsSAnZWagAAT/kQAJxeAJhiLXqztPTOXeTQ\nGEWsC5+eFMsQDdWqQmtgUuWV1stjoW2gfszm1ltB8a66NxOnSoQlj4OmwX6c\nr52vXriJmFesQr6ba4acRSiK+q2ljSwoWW66DJlNCPlKYUE1FltQxypF7lfk\noRBNfTuYdxavZPN/oO+jLPthxRCUA8P52POBf3mzqrInr5kyOoFD8PdkAimY\nnFRTyLzxz04YP6p6fIzgO9oONx31q/Q+OvTQgu/nlWnsRVw0/8h0h/G6vWFF\nPHlLeWkoFOVonc62s8Tgz/W28Va3eC3nN0LGhrw7/beKVc5knCDaiU1TJYi3\nNoQiptXeoFhHZxtLir9qVDe+Wz9XYrUdg51l+uessGokqkwq2W/RjEF1620V\nFjQMXu0URXWZdHfFdzrwpyKBaX+u4DazYfZuDFsn2xQAHnF7dgaYceodlsDY\nvFjXtXII7n1h/qej4mTwCnnyXzOGVaZD7mDKWv3cW21p0Ew9SrLSHzffSNhq\njpVX97dnWprmJH31LuHg3VoI65DBr9y2jN/vAWbLS6GiaoBOnJsZlSeg6Dux\ntwxjJQuYACqqiOZQHwqiqnVTX8eT6Xj6ywDWiQy0220NVIP3d9Q6BgAYzXQq\nYILIgXIbUgiPd3YOVpIWkWfHW+7moW/Vy/QANvZlsmH1v5XGZLOuKR4r9TSs\nM+FJ\r\n=80lB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ba3519434b1d58f20bf8838187a36e3b764512ba","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.42","@balena/jellyfish-metrics":"^1.0.306"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.277-renovate-internal-patch-ba3519434b1d58f20bf8838187a36e3b764512ba_1625458455526_0.7685475684164813","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.277":{"name":"@balena/jellyfish-sync","version":"6.0.277","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.277","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e55872217b84493a28c62d8ee5224aa72d096ece","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.277.tgz","fileCount":24,"integrity":"sha512-UTQ9rwpIVucmtP7Ntb0/gzFcgRQD0DjZvd/FrBUNN5ZEBP+RksbkiNoZT5udPfByPNdJR3u0G8jYeDk9FDw9Cw==","signatures":[{"sig":"MEUCIFW4ZXswSsWz0VdeJJI6M9SB5e5xMqd5NHpcfon+m4SIAiEAqzmeCFB9sWAjSAUN3dxN/aHVw46XDt79HWUBy9J3kbM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173623,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4ofoCRA9TVsSAnZWagAASq8P/1rMWfUMojVTPdGfW0ZM\nqT/6jjZavI6/6TbjB9lDuuzgve0vVLnN3k8CHDBU4b0RcQxY7exClQm0FJkb\nqalGirBS2xB68gcWb2OnXZFwGuNwjEzva2KnM/JAQlwWnHroAU6hH9aqc93U\n9tZFXLuzVXGJR7C6mfKR3L08NLMPl9C/Rim5lwGsz2K0CUQs3TqGVayQOiJN\nzDQYsHOE6MkQHEA/d+zNATv15MG1+jb4aroMhjlegp35mlT7fdyvLWzIrVXh\nNahfGf132ZjpvhICKzbsCMZzjcqLdiKKx3Ve6gJTPosTgzmCieH0IoEbVCLt\nyuqx7yGccnXivd7AxoqXRWXVYcThsIrI4JVXhPGNhQA688k6Ge6KgG5g3imO\nB40NADWSZ7r8NpCBz41jufLy7ymgiKT+lt20lz9GiHYL4tWSwXWTDwGuLpy7\nZhV1UgnYCqnl4eiLZ4vpyC3v3XsZ7dLEvfcAQosCM9oFIlpkW3dMSbJ4auAJ\nwe5VwPirtR+wNctfJFlUIHz6HEUjhHcrtxJu6VrAkvuTrQCuoyHgiX27DbJO\nKrpeJG5lk31f4vALB+q34Tbb0I4jYpAfDIZWEHI/etwCmi/PMmSC3WEcZzO2\n9JF7W4HHn3768v5TWxQBxOptXkkEIsS8MPq4qTDW7mtHIEydRR3BBmT+ZETE\n2gwx\r\n=FH3J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2797059d8ae5a91e5b03a3383bb208dc0a1bcd36","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.42","@balena/jellyfish-metrics":"^1.0.306"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.277_1625458663568_0.47758145649058936","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.278-renovate-internal-patch-249b1c64dc2cf573809cd8cc034e63391c792005":{"name":"@balena/jellyfish-sync","version":"6.0.278-renovate-internal-patch-249b1c64dc2cf573809cd8cc034e63391c792005","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.278-renovate-internal-patch-249b1c64dc2cf573809cd8cc034e63391c792005","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc80f4395656b843ccae643d25d4dbada949f4e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.278-renovate-internal-patch-249b1c64dc2cf573809cd8cc034e63391c792005.tgz","fileCount":24,"integrity":"sha512-uSw0rJgs9bSAC4LX89m0wOPGyY6z3ZbMXGnMqKRNk3dZjiKiM/ajHLLzVDHWfr+FFwPPqoSzidbx6qG3F7B/gQ==","signatures":[{"sig":"MEQCIGCcvKWK6VdkyXsSbfUte9/B4CwY7dx7M6WxmaMXZFPOAiBSGENhE1Co8asEKtddWvGziriOOlrOxKF1bFlFpDeNsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173863,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4yl4CRA9TVsSAnZWagAAxx0P/3lEUosWk65tW45Vo0kt\ncrxPmHl+BaFiOUhIfLcfXK6CadHAXb8ItYy+J30nA1JKImytKZQ+kea9r4qy\nBr8eGEsxCl+XYv+DS6ZixqBFzE1P/8CbEmyrStANeXAjsF5wL2LUExaHBbGn\ntzheZloU+oN3GNZYqMNHljDNPRujKAPyWyZr1ZUXqG0kw3BAm2RMv6+jsf8o\ntEOc8y5pW3cwYiu+rp5DvEDYs2v7puuJr5LBU3B4Ol7jYF/KJL03KLC4eP5X\ndM6b5J347jDb3yhdGQTvB0KKuE8DPliexWCMP68+kgQcEORUtNpg/J4DNRc1\nVWlJ9MM5Aqm7Snb/3JYiiRS0oVzDMTHjjE9UC18F0WxaBX25qvPsHM1tCCKp\nnUhV5HP0l02ODRKCvXZsqjRdSnQ50zjjGjxSXIpH7EZA1OjzqwapJHRAGOAB\nyYT46Sr6oD6G1tRuWLdjw3ntUzStr0qQtGWb2i8zOhe949+1mHd4RKH77AtW\niSOeRwEW05ndDy7LbCT3xuI4FSJeNS79b2UUs7+XBo/iQeSDY4ZvjyNCWvee\ni6LiJWMLGb25Jzpdpi1WqQEVlHpE+CoS0ujyyzz1RoY/pW9xnaV7/waWpxQg\nyRGRlr+Fqyp5RsVOJKw6bsFxElO9NkgakpIwfzpiYemklYcdie0cya6J6vfR\nddDS\r\n=3HfW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"249b1c64dc2cf573809cd8cc034e63391c792005","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-05T15:43:23.299Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.42","@balena/jellyfish-metrics":"^1.0.307"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.278-renovate-internal-patch-249b1c64dc2cf573809cd8cc034e63391c792005_1625500024152_0.08871995097433816","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.278":{"name":"@balena/jellyfish-sync","version":"6.0.278","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.278","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"59a88f1bc07bb3d5088c1ffd3db617f942a5319f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.278.tgz","fileCount":24,"integrity":"sha512-M2+tGeWbJDN3wwpsX0XgpusOyw/RUQ4BCAuvQvjgTd7OfITMbF/VDvbDv6z1JjVI9/1LbHK5a+d1EuBIp9kSkA==","signatures":[{"sig":"MEQCIFMSgBjCDgYhMcbAnCqjhVjXd8ayyYr0msuq1SPEB83pAiBmLmT3LjvxqnT3LqEQqQysBioZm8TQZIDE/C+GufghDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg4ypBCRA9TVsSAnZWagAAGUoQAJgJbeggkeQRNfKleagQ\nbRoFeut6isOFwQx3KYCxpjvfp7ACX6sW9tjC4mu2rQnCsmW2UW+7gE/fmslX\ndDAhlqStgU6fzaZHY1tMavd/Ojz2IwuD1kXP6+43pn11oEnVOpq9MVu2a+vG\nuiSGLZLiPNrbvErQ5v25QBZOFNBmoLSXC4/UeXhGxwnkghAwlJFnTEAgwR/Y\n32O6PHSHPkYXgzLIrmpHOonZ61QOzGMtNF4bcbkA77DGKGSD2WTYP/YMrB2B\n6SNzMEhQcHsphh8hNmnUoP+YiHUYFgLrmDohM0jIVQkCgqsYn5xKuXeKQ4V7\n/qehZn3PYoOKxctD1CHISwpHm/WmePQo8IEuRCF8Z1Ib7XpF58J93aMZ5Qdz\nvBiQQ/skXAviM7B2svRngPQC3otj8i9e9lx/bur97VhnTdJPm1KXJFmA4KUE\nSh8Vnf9AQ7RM32oO5wr36DEy0BhY8tEF26NsrEX00knoz4iRXCiucb4wamXD\nQ7JT0YsFCaCH4g6UZQWnJzGz08WrE7D5yr+BLB0bLmPI3pIQdVyyqjlupMRJ\nC6t1+yzKTlRjvDu1+yzixZ61Gd5Cn2DysNm90a+kn5m19pU2v2j0h6Ry7iW+\nALKx8c57CkyZhqW6YJz7mXOxP1RLN/Zj5IUPoCij6kr/xEtZYPnVOylqm4pS\nD9NZ\r\n=hlWR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"05f00aa28342266cfdaa5dcdeb233112fa697a84","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-05T15:48:43.190Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.42","@balena/jellyfish-metrics":"^1.0.307"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.278_1625500225377_0.6434950173222305","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.279-renovate-internal-patch-46f3d5e834ade57386997aa8125dccc5cc94be3f":{"name":"@balena/jellyfish-sync","version":"6.0.279-renovate-internal-patch-46f3d5e834ade57386997aa8125dccc5cc94be3f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.279-renovate-internal-patch-46f3d5e834ade57386997aa8125dccc5cc94be3f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"62ad1da337653318158b1cb25f37f1c888dff809","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.279-renovate-internal-patch-46f3d5e834ade57386997aa8125dccc5cc94be3f.tgz","fileCount":24,"integrity":"sha512-MJJodqr3FZJZR9Q5N80xlX84cIJpoz046QhWLyhq/ayu4QEytg5s7RkrNZHxSKzGbn21qNJH8XYWS75XuM6rlQ==","signatures":[{"sig":"MEUCIETrlVrdouXJ0fKlljLiwU0pLcPEP4UWoxoN4mJZ5YlMAiEArx4xLfZRf6+boan9neWjbpiaSMz8Nfpdd596Kmvikng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg40DnCRA9TVsSAnZWagAAqWQP/0bi4AeFMkCsRbmGlylY\nLNp5A7oVVnJyQSmrzqkXv3GgKYbmhTYsacOmdAePd1tHGWGZkFcpfFZHRF50\nyJRF15PQ7JLdArGnY05tTkfP5B3zcLoYESTW2is/QQU2V1jRSW/6WBa8UIuX\nR2sDAcI7GZU7SlpLAtQFMOsLYAevErlJWYVU6LLEE+H+QdWVtXlzOK2wQFXj\nXj9XWxMywCE8QSlriX+kOs7fMPHTkf1c77hkuIhr3tDQ8E+KpRav6akFbELq\noqpphRW8KHHmxyjvFl9Ak7RKbX8rvbqCm2ZhV0C0HwVSpvVP8RnXDC1nm7Xd\noYTbjDWstXSE2d7JgIWK40ZN8jTgQ8DzA5KDwZROHFh9kX9h2jhewxE8KllK\ntgBb7NAKVUbYGBtE2Sw08WUOdykZDSLn3ri+U4+Atb0TKCP/Nx/gaDMIuGC/\n3uAvo5Fca4pPAoF/NXE3PxWNUlGQa9vPHiyUiQwxWiG/EPQtaZtIxlWFQxAi\nYv6a5MGCD7/SS4oEAgesQPI9mxcdS1QCWOiK6UzaHCZBirl7b/jAbvbhuqYj\nqMbrfy5kWFR/O+lLmK4/fSJpnuCfmZqDNL/JSu7qsih+CBygfVTnMRugPhkU\nciNmld8aYK9oDzEREJeYdIhykWPQP6Ag8bN6nZ7KFadcVK/1102buRricS+d\nrNYv\r\n=ngXt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"46f3d5e834ade57386997aa8125dccc5cc94be3f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-05T17:23:40.083Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.42","@balena/jellyfish-metrics":"^1.0.308"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.279-renovate-internal-patch-46f3d5e834ade57386997aa8125dccc5cc94be3f_1625506023435_0.9546941466074634","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.279":{"name":"@balena/jellyfish-sync","version":"6.0.279","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.279","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e3ea4e2915e404d9fe146ecf8fd5ba5654b23014","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.279.tgz","fileCount":24,"integrity":"sha512-yvVmx29uM8VYG2SqBkC1l+mmogqMgcSb9B1my/N8PfmIUQcVdw+rGJB+ZNGU/CJSb2TqKBZK66448FobUmLQbg==","signatures":[{"sig":"MEUCIGf67Wej6Y8sxWrjqojwuRvG5EXfVKRu4w4e1tPxCTcDAiEA56eE2ERdeUItUwoaJjgMCmgYuiKtAu06xni1pwVSnpk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg40IYCRA9TVsSAnZWagAAuSgP/AhiBKBDg6P+BzZdfuOE\ndMGxi0irHeVTzxymo37AgUpO8HiS7bxoYb7ai1PSUlp8pB+C6EQOPiU3E7LZ\n2Qj8fzyNWlbduYVRwTMcmdr6bRiXF6NxhFBKmPESHIeVSWZrRCz9Hu77ICdb\nby8lInPLyA5+yOGAg5R627QMsZ6oSRY5hjAkFBBMKX/EOVdKzZMVMuXe7Vn9\nHyN2vDHzgSidm5cfNEihqarFrn7mDNSrtAcbiVuf50dWBaf6BiNyHODYZz3Y\nphJGvripxCIbbDmHYxbMrlTKbTvV/aUOH6ovJvustc+W84QDt4cMT03UVkI7\njiSqz7uHLLxRmxZr+p7sJarFa2wWLOvObTDLFQgeOMzpuFwpJFdkiSWK5U1L\nujJO6yvO3WwU4BuB68FW4XSk6NKouV4M6BdKeZ+dFDXtIyZcDkipUYaL5UOv\nuvPK8BtqQzk9P29acZUv6aio+BxIU8NLqxj0uzb6I9OwimWwixliYc5vsOMn\nYLrJYLKOq1YMoRBtVoYP8u8GPhOhtYqhJ9Iis6NfCo8DllTf0GvP7kQETA+0\nKfigaJVb9fJ69NdoKTnd9AG2OtdNnllh6a6RLUsNkYnJWx+2A6vPaDckhcB7\n9S3NRn7Klb9JB48YmLnmB9WQJ2izTD13uCvGR1l+KFJc0L4htkzSsBzHIRY1\n8nES\r\n=tnnu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"557c64003d59a29715ae7557b77b568d09d44a4c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-05T17:28:40.453Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.42","@balena/jellyfish-metrics":"^1.0.308"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.279_1625506328124_0.6462521325368733","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.280-renovate-internal-patch-174e2a7f0fcf063e9a11ca16838b42a0993d0822":{"name":"@balena/jellyfish-sync","version":"6.0.280-renovate-internal-patch-174e2a7f0fcf063e9a11ca16838b42a0993d0822","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.280-renovate-internal-patch-174e2a7f0fcf063e9a11ca16838b42a0993d0822","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab4dc91c6aeee0de39af6ed9e67feeefb6cef8d6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.280-renovate-internal-patch-174e2a7f0fcf063e9a11ca16838b42a0993d0822.tgz","fileCount":24,"integrity":"sha512-fbO9DFAr5V8ohO9t9Z6H6I5bzJTJT5pm4UOZC2Ew2hkqaJ9dCLGT2PBHovMDysA/trND4rV/c/y3gzBSqtKQyg==","signatures":[{"sig":"MEYCIQCUE8zm7L27xpqU6qQrsKKqTymdHzStwrBWRRapJC5gygIhAPpuyglBcHLKY00g5Myum7eR5oh9uecYS1kfSKuiPpF1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5QESCRA9TVsSAnZWagAAtiwP/2uvdLNfflVV3y+6y1VF\nJZ1Qwfcwl1JEgmfMZVns/gLGokkZa6QU1owk/NSSU3Q+J1ELdl+jJxAAipQx\n/NWWZGzm8jxvzlrd05MOGafx9uVbjWUSlgyR2LxQlt3/YW13Q+nG+Kh9Kzmo\n1+CLv/+dXgYJ+EaAF2D5TKegI2WynPPk9mKL2I6NaL+7yAH0gbW9Jh10TzgW\nqaJWoad5jtm0KAsZZpgduyI7hroTorerbFPYOK1DzFuiOTM3YGM82JJz88Qu\n6R3WVp1uc8yO48Ly7Npxeg5eJaun5wNyTwuqFc4/Fm3LPB87LSrSQaYtoBF6\nCXDjxAQeyp4G0ABzafQ2FRpoSRfFSuNMDMtce8cQWEj2L3XPIRQjHasX4NFH\n/FbfQCwIOHDXoOzsjvqwMkn6DeC9nRemHCW8IUVW61EJv2ct+MSQvM+5paGf\nblPZiLHpjaiQZWGCWfRboz0DpffoneOoRz3YJQC7Byp+06vuvm/zOURciEPK\nDdthAmjNGYCP4RXQUczypyS0KUzKh9gxgJyIuyblCbYQXWPps79aPjfJNlY6\nOPWqfeDQ9QKJl0SNiKKxzYV6X7u8mCqZNnousZ6x0AOiW31MThl9I+4lNhUh\nWvBhpo++TjWPpjJoJEXnFyccwBdSx9VNZSh4uKcuFVJi85EP680SGP34BR31\ne1B8\r\n=Aw/R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"174e2a7f0fcf063e9a11ca16838b42a0993d0822","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-07T01:11:42.004Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.43","@balena/jellyfish-metrics":"^1.0.309"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.280-renovate-internal-patch-174e2a7f0fcf063e9a11ca16838b42a0993d0822_1625620753621_0.061419597335599097","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.280":{"name":"@balena/jellyfish-sync","version":"6.0.280","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.280","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1773b6c889ea37d55f9be891f0733755d7976647","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.280.tgz","fileCount":24,"integrity":"sha512-upyZGBdz0gQwbTmcAvBy3O45t4MDSP8wYhsV8r5MaPXC5DhdnFKvTaBZFCW6Ns/ssjEoIuh7aVobA4ujk1BhfQ==","signatures":[{"sig":"MEUCICdpwpF1RGCvb9SStg5r0qHdrcecZ6satr/vTgGZ7WaYAiEAzkMmc+JjblqJJkZW0JaHIADaDMozOTpyjgnSVTeV260=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5QJTCRA9TVsSAnZWagAANfkP/3rrLxs/kwU1oPzmqbDP\nouNbc+/1UbYg6FpQRVuVxoUlranbAEVodBRdDLQpfQLuteJZE7ST93E3lFB7\n4M6Uq3leYHbdm+3GSHWSXtVLof1QC64a49P4IUCmNJlnRS16IYgF7Bnnxgoj\nWqP2RD5UI9YeWg+diwiW7NRtt2Uiax6oAfV/VeTNvcE6KTXHoJSBerNhU2LH\nJXA91dm/sfa4y6XdGHY+KSOTXoQtQeHLTn9mf/CUBkEWC0LSuta6nTC9+3fH\ngCnIiNf7YKzarp3io5k+LaFNSzTGxB9QQFBx80Qf9zou22ryFT2X/lQZUI0Q\niJx0SRqT7X/aQur/shsBS4lIbd/sRnJJTwC9kkU7rr62pvU8E7BvX3QemdWV\nMYtqQVgqojyPk6QtRow/fIudqg2uIMJUaS4/ZgqPoN/Z/ZmBl1rop0xSQBSv\nvL2qLeQaxlJcS40SegppuEuhPM8VE/KpW3iJ7fWfvq38c3Rkb4hfOrrpbh/W\njRK4nU23NIgiPtDfULFnXvXHDO5+SmiOzFh4a7qc9tFrC03lEIblIG4gcl+T\nVbKlT1kUio0LLaxkxImyII9LM0BDWaBlq0Gh4Tar3LP6yAFW2YmiKvdU+S6y\nY71OnUji8V5jer6X5aGd4ikDJzQGImdh9lLNPLfVT2YxsRbwyOxs+Ts1YzO5\nqgeF\r\n=6odO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"31389e581ec518eb34c9fecc51e69ddcb403b64d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-07T01:21:58.774Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.43","@balena/jellyfish-metrics":"^1.0.309"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.280_1625621075169_0.6608989543024617","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.281-renovate-internal-patch-7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3":{"name":"@balena/jellyfish-sync","version":"6.0.281-renovate-internal-patch-7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.281-renovate-internal-patch-7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c40f28c854b40a9aa0c6d0b0c826d5f3261eeda","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.281-renovate-internal-patch-7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3.tgz","fileCount":24,"integrity":"sha512-iEyt0kSVLNjIxpcGqIvxwPN04TsqhEW4ozeB/n+2A6PtgBbFcHsvuom8cjOaV8p4t8XatM+1Wl3D5sZMdeRp2A==","signatures":[{"sig":"MEUCIEKHqnkMYtgE26Rw8av41hOpBP9gatfgzkB5LUuEdp5rAiEAxGsTL3IUQrgUoWBUwtesQVLRRfmrCJ3fExUNxUDT6i8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174147,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5kFACRA9TVsSAnZWagAAMzkP/3998ZJQ/CTdU/l+eXBq\n80CqYZR90FrEIEp/mN85c+xLxz1domKeja2oH6RYaBgT7HHxJanPxw8zRgmY\nv/7Adp9oKgjsyx3R4TdBkFM3gDMYrOFUhnA8FsYIrn4jOv1IYc1D+V1vF50r\nvglNhMIhtWI3h249MoIEhkuXeo1Pr8Ka8eIVobGAe/o7Zau/CXCdFXxaAp1K\nLQ++UzlRr0gVs0wxk3nf4nuforaEwTfK+gyowiwiQyjSUOka3kLBnKcUTL69\nq8xBU7WYMKaqUZaUMjHI1eLX6zR2uMVPBCNiKsBaXDL0rcCQwtBWnTMnipmG\nZ3BVQRcd+nyvOoJJAoPEu+0MM7451N9G2wmiLG59DOrnnbjQqw9PYxKz5gyj\nDB0iL0ukTAxd7M2lpnWumRZrgGo8EAKhb97kNe7GxBGUvmxuz4vz/0gYwUBw\nI3w7Z9T+PCYiG1D+ekoLGbxWkRuFY3jWqSLwaHDBGgNuhAHa4Bo3exYohfzJ\nD230bTHbjgwUf0jXAIb5UVynnC/VrVZpiKahDmEWJU9jg6f158ED6Z998RpH\ne1SDYIhohPIL9bFH4DczhR3LjTq+1XUEWB0OozuZjj8AjTb0y08Sgn4PRLsm\npZa8GIWnWlT7GPpXIMU/wTQdSYFmlDpssIxv1/7HHTc1nlYtZ1GhSQANDpGX\neP85\r\n=LYaH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-08T00:02:12.422Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.43","@balena/jellyfish-metrics":"^1.0.310"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.281-renovate-internal-patch-7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3_1625702720171_0.7502480460950269","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.281":{"name":"@balena/jellyfish-sync","version":"6.0.281","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.281","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"40f0196f4ebb17ccbdd8b0c116921c07ef4a18cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.281.tgz","fileCount":24,"integrity":"sha512-7LcrlGNmgCC1KZzKydSAkvHgAf2r+SqtiPaob4IPZeidF6PurymHsJ3aS1lnyMvciNtgNOIWNY0xdxY8fgviYQ==","signatures":[{"sig":"MEQCIHtWx5kGasxxp9GB1e3sLM8wCtABAdGwIeyRmHPzLzK2AiBIm7DaorL/jj23w5CYTYVCf9QlRENcm+nzphMaMANpCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174082,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg5kIXCRA9TVsSAnZWagAAb3gP/08o1ePEZq7rlieXhKes\nhClNThEUwVv7//NXoZEWBSB6avSv1S8hOMhWsd9ujm6yX0pzFZShtB6p5rlY\nO43wngXdD6VFsVPyr4zUPrVOEXDmbPjIrtS0AKX9BoRFnyh/GsoOdOKgXb3o\n0noe0zMV/2t3W2sUUPnOYzT43+xUEs48mlOKREpVdDT6bg4rW77n71MprLWK\nrPF3jdpYnbLH4wvKfia0BT/VFKswB4qIe/Jj8xZPgi/+EJes38WfdX5XNUnn\nkP379jBqaS5GLRYupaw2tqXpyGjxehGRpr5KS8LuPMXTk4ULvzr/sAAVyM7f\nJ0OZHhcyUEV66///KF8DGH+E9mwmxJuDQnIpfj09Q5LJHze19txuFfsNe2qV\ntLHLJkJzIIKr8bdPdTfe1NrREENoCwjL0X2GBpV9Ttg8xtr0mxE6lzvU8FXD\ngLei4Ru3O8lmLf9Iln4BK9/YJXNsiOvh58KsdRiqjyrMmVE1faZh6l6rjeya\nkjEMp7WhJFrd+f3sPyhk1szA9gyNXQ7/bkQJk39xTEygzaiFQZjTv5BL4Osu\ngciJH5jwspCwY5Ca7wipfgVajiVERIR5sLEjZbVj0ywbuRIs03/VUQLns6E+\nXKLcue54286I5QIsmyMryP2SfJKMk9inj/4tX1AwECRlEIOKoLFPjJOBT6V0\nuIXf\r\n=CjwZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ca64135bb41bbfa441d220877331b870dd76bc25","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-08T00:07:13.236Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.43","@balena/jellyfish-metrics":"^1.0.310"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.281_1625702935130_0.895625195796464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.282-renovate-internal-patch-1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6":{"name":"@balena/jellyfish-sync","version":"6.0.282-renovate-internal-patch-1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.282-renovate-internal-patch-1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"05deecf93c35cf3a44da14a584d7c882668971b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.282-renovate-internal-patch-1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6.tgz","fileCount":24,"integrity":"sha512-ww8JFRYSp9qqMTcmfQjJXeWO5wqaEVPj8DiHvmmwt3fGgY/qY2RCc0sYmBAAw1681+IlbXDNS/++eWTdpafc7A==","signatures":[{"sig":"MEQCICQpGTlQkgLHHF2kD3cUnLYZd42uV3nVRVr6o2e02eMZAiAnymdTqT+H6Wh6L0wWqD3JOfOt8MH1wTca7LdLY69L0w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg57KSCRA9TVsSAnZWagAAe2wP/2QKvSRv1b+KShGFItxu\njPXtBPpDC4Z4EijUdkcuTXem9o/j0H4GPmSx3Uyp1p8QqO0e9q5QixulP7/4\n5+2L152xeDkTNY1oizc4LYL21Bqgy1cI0+JG0KO2mbLDnZCW3cn/MIo5gKlP\nH2qqMsNlJ0paTGJYNKHOZjgKZtJ4MrCS5QX/88Fvgk377+JCyFFfOeN6nD65\nzZsvlH4T0OIsqECGG7kw2W9Edp3LcIDI2Hlc3gYam27qe+ZrkhMknacYhkG5\n3hbn8w5jLfmJA5Em8YYM5KBWFMoSQLFz2U1TFsKySzmXx8pr/zgsqiLUOQ/p\nE4XxuoHiacmsKEstxvqIdAcUlfPkjBSlkyOHHSm4pjBH8w4mzdVnIQkmkePI\nBA2YxtnZWJ4JloQUHWlyByN2RCXfF3wBVIv16lSWImgKr9TFso5a3kVlB0bF\nvlL8MYMfQhy/qTpFtrCroYTYYI2hYN2ardIYS2U4Y3SwSxGIS9E4ZLxUe9Rx\njvrpHqDepABPMFrvuv2xKk0OXfTbVhaJYQJQdgtULk0VynZFieFEgCRTYD1o\nOt/KRMtpq4oKSh0/IUKPOVIhXTcAl/hYvOKIy4vJ05xx5Pz/e4Zxwlay1NgW\nxiRoOkn6tPi61uKnmwbAEqmL0wjqB7kj3pjti+/e9and9E5KVw+abSmsMtsp\n+Qiw\r\n=sAf8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-09T02:17:17.815Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.282-renovate-internal-patch-1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6_1625797265771_0.23252928640390857","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.282":{"name":"@balena/jellyfish-sync","version":"6.0.282","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.282","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e233d8629958e76a0528e3e2b9288e4930ba7c54","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.282.tgz","fileCount":24,"integrity":"sha512-xT4pQQ7rea16nRLhTx8kxFB4/wUgvwpdwpuqeoh5OTBYTVZiv+IJ+wigo6cm1or0ONomfHm96uZQrQch+JLc8Q==","signatures":[{"sig":"MEUCID2O6yZvnRv8a85cEHqgss2kOM0SvbzIrsw5qrCrGrN4AiEAsz1r8+2nYeIKFoKsbfAOR8H5APEAqO/GhYD7BzxBBbw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg57ODCRA9TVsSAnZWagAAy+AQAIm7x+z1pAdAsGsKzf/M\nrxFkCN9kcAM9YWKi42/4QvjUOHxBTP/gn8u+ckI64s448kb51xX0XfGCYALK\ncth8bTbrW6Gf3VnvMfLbJhWLM9eSDtgdUUIfey6KalV24yq+GLJ1wSo7WrzV\nCvsr59BKVU/09/rPRdLpr0snfe2IgHUzIPd3A50EnpSu52wEEamz2xYSIVyX\ng65D7iMNa6UJhCgNYQXM2IN/HEv8bqwaM5f5GjrEO5Het7zuCxvfw9G97rIK\nq6Jk5XJ4S5viSV3g+Sp+cgRcDAG+6QOYuM4NkXpQKZIhOe2FdKlfjTP0zvns\nVYjk2PupZd4KJpLEsMtMDZc1PmYL2ZZ+79tcw1TaPWz7LVllSLzkGQYiWJNl\npo7kl+4ACmVZ+jnIq2OK5P+aihRFs56+M1g5XLetKUuqPUQgIYaq0is+OfF4\nnLtcrliRZTDIYOMSpxkxCLOFi/1drljPAk7eSOo6tlfCBcwy7aLYUh5LvkwB\nvmQI2d5gGRqYEmtR6W1V01o2srMeWg8arYV5ja23FMm2VDBvHE54nMpe28su\nC5ryiVQYDxcn5cQ3B01lyBW6vPb/Marfcryse5IcitkzCdGVKUwkr0mwwrqJ\n6iefYZFYBURobmjxvgiM6LBU44OYghgOUMWpNI+aHk1obKvN6f20zw5YeM4G\ntiCn\r\n=6i35\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"46e27339b45c9f52fac9dfb19479b044560ba23f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-09T02:23:24.315Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.23","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.5","@types/bluebird":"^3.5.35","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.7","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.282_1625797507183_0.9535960173878368","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.283-renovate-external-non-major-ee3dc69ca8441a91c286564a1b9a8681f995410f":{"name":"@balena/jellyfish-sync","version":"6.0.283-renovate-external-non-major-ee3dc69ca8441a91c286564a1b9a8681f995410f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.283-renovate-external-non-major-ee3dc69ca8441a91c286564a1b9a8681f995410f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5bd51d0ab6303d5e38b99c4f9ed6d75cffa9217c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.283-renovate-external-non-major-ee3dc69ca8441a91c286564a1b9a8681f995410f.tgz","fileCount":24,"integrity":"sha512-sB5kjIQxUnf/jWk+ND7QAbPGA9+qHphsFl78fsmCUoOAQpB1wsOvbeIISLc5Gat1A2QnB/lAmf5PRXBKMfnZSQ==","signatures":[{"sig":"MEUCIQDpEYWBx7KMYh2k3BP9WCpdd+gfT/hgTWAWq8G96rTiVgIgP225H38v4swaIte6vUtz8DMKtpPVGGz0RxrSJdqWI8A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174299,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6OhVCRA9TVsSAnZWagAAyWEP/0N+PRKyw2qgAHj1aE0Y\ndCizURXxd/YqEwj4CH1UatziXEIX3Ap4VoaNKvywQQyzE7iNwTDDeQ/JzrME\nCEFjHX15ytCOK3ik7yR2y2GxDeeiSBkkAZQF4Stbd5eMVSnb97UEiLaR6f9O\n0OcHwLf+4zrDXuBruIBmqMkwNz9tXE4V1kUf0D99izHmCyM5JBLySCpYVlzj\nH2pw2XlHBaze5ZIckSshsrqCEgDxMzgNrabBAx4mxXW1UoiTnE3UHCTeHYRn\nhcrNxzC/2MT6li1VPuX6CiB8+Y3Njfg9fI/m3E0fFn6GMy81WRi7dpUAI+jW\nJnOhXOvcrsWKnJkiF9IbM+FEX8z4CEtI4Ac+V1/dzaUEjtM40oxlTuXLDJld\naKW4n5CKvnzVy/Q9OdIiGTqqMH6XAGbnOOEDqLp8OY1pN5xderJ+x7wfrm8j\nz/Eowpj6u8lmHBArQRrG8yPcOCM7e6JdlgNzyZf+OyhJrxFOuoimq9Py9xYk\n+VddQB1HBrAX5/iI1A1SIyH7/OS3n2LPWuQafwv3X5EcN/8ua7bSCBKoPTz7\nUFX+6GCZ1zyjva9m0smqPK4ghGIad8/QBXoBtBkPlZgNZtD8Cl1ZrUeaEgQB\nUhhQS9ejLst0JnsMfokxQJZYySh5pSUKDh0mru0GKLlJL3H0qzHEtA7YyWvC\nTmoj\r\n=yFwC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ee3dc69ca8441a91c286564a1b9a8681f995410f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T00:18:26.513Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.283-renovate-external-non-major-ee3dc69ca8441a91c286564a1b9a8681f995410f_1625876565391_0.8757205409426494","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.283":{"name":"@balena/jellyfish-sync","version":"6.0.283","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.283","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ab46e66147b18e112074ebc45e6d2b3119baef26","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.283.tgz","fileCount":24,"integrity":"sha512-s3CyY7hvv9pv8WB4Mc5atE5OlVsclWJUrYCzIMN+XWx1/OLR/IsJ2krXd60w2gzcZnWFySLrWpovo+VDU3BTfA==","signatures":[{"sig":"MEUCIBUDKYi+3K6UZfn+4Uw4DmX2BmRAMGB02PwmGSMYIBYlAiEAhNuT4/b220ZXocVT/cYVpO6W9zyUWmBCzu28zGZZPy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6OluCRA9TVsSAnZWagAAXwMP/Av2mzlF+/edBN/juHMT\nwnfOaVsGUDqi6e37aZRtAQx6tzbcz0gne4yMQDX2+qGaLG2tbHNiI8OMvjrH\newohPtDFB415AaElGlS02Rdfvw3VXXGEmnWIb7NTQ9RH/PpMLBWR9Ez1tgaq\nAigJdSj9wZRo0/eUR0MBP+Da7DTpoRzR+sb0LRXo433UkoHCYWQA/EDD8NRa\nBsYYOvgM46IjkPd1s3CTp1IN80YFLQHnYBSISL6IDxckjhjxjPZjTGtUl9pk\nVdUS+RUfgB/3yLMg/VK2Ymi8vx3dwjNCKikC7/0iG4YJ8+LKpkMen4fa4GYl\nvQ+tfFMUMf3+SLVHuDf7vgxIJNLVDdR3a0T/GXhz1TQVz+HVsS/AuSPtcCXH\nooyI0bWLIA/5VeGSYDVwXBxsykR7YOc4azCTdSgVXp0nmO6JEvaoVtQabElL\nd0dZUsiaxW1hKNIZ5BIlqGNw0b3Ljji09NYpmboMc5wo5xGl62SANz/OcRRw\n22AXuljtMhh1bI+HAHLdm1Agp3U3CWiRSaaaz1IEaASvQ4WiaUT7sAIP2v0n\nQPw6dzPNi5yZsE1XHitZT8C20L50NqN/5/J2E1QG6rGcp/39ZzwpbNw8Ps7d\nZ70YbSOMkwawmIGbyqsOKiQ1lTb8uYs6eQZZoiZM+O8LcN4lkVo5iL3GqgJK\nuUDx\r\n=a1mo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d091781b677c48ddb84d7652d0fa4ce41bbffadb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T00:24:28.732Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.60","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.283_1625876845561_0.8124173682325069","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.284-renovate-internal-patch-02369ba570852bc98bcb33a388b6b9d37d6f3cd1":{"name":"@balena/jellyfish-sync","version":"6.0.284-renovate-internal-patch-02369ba570852bc98bcb33a388b6b9d37d6f3cd1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.284-renovate-internal-patch-02369ba570852bc98bcb33a388b6b9d37d6f3cd1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c0efbeddf51c198d74ea7d28e8277fc326273c9d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.284-renovate-internal-patch-02369ba570852bc98bcb33a388b6b9d37d6f3cd1.tgz","fileCount":24,"integrity":"sha512-Twaehj+/K0ZadWqL2t9vsoA7/RoQSiEItrxX0NHUfY/1hOlAPizBDslAVA///FLiyUeo+qMR4kBKSzbD9py3uQ==","signatures":[{"sig":"MEUCIQD4olHpqg0c4Fihz0TWqC27CPdaJck6qNwjC5ViPFspZwIgBJrqYy6QEMLxzm2WZnrHzRaR70EXg6xAkInSWCZPbpE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174399,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6OtNCRA9TVsSAnZWagAAb/oP/RmaLqo/FMghyZuSuWTw\nvu8uAQpM6zo9Ujnf9rhifekR1goH3z6bK/H0IwDcSEemleYgaj2cEMb1hfem\n1sZgXmTXSsx8sXyvHAZ2NXZ64yD7ZVaKXwS9f22wWBdqp3cTJSCkwF5vAMej\n2yipZUDCn+75Vi/T84NodWDDzG3x4v04n8kVoUtsnPg9nDPvcoGD29Q/km6s\nlgYTYnMgUsDyaPcnVtYX11rJ1hIfyzgOsGRWOf4yGbuPm5d/0bfyCoMye+HV\nI2Xfe6v63Uy0IZ2Efbzhq6/nsF7LoYPX6UwKRZh2vxWAeAAPgFeXUhaAa10L\nwTgpoTSyc4OhAqXzXuJ5sTYwmzUWkYSLbY4wPw3XidxYWTjiNG2kZ3OaFdHq\nzRr6OoiO5TvyH+uahhdTu2vLlBADsxtb/GPa7teyZwx7wXA+/zxl/NmoDvFg\nvyVEOq/ZsU1aGG598kw09V5RKWMSr41Y6Dk2aPhEJLDYbPKTy+Ntzvn0PXy5\n8g5hUIkDnJ01v5CCMN0gg8lt1cLyFr0npakGJ/I9vz/zztz3nPWenmVfq6R0\nygwvCLlGWTIoRdACGFa+y+Top/uTDeRUmXSnxgsCpxnKG7+42kFLvp66jF1h\nujiJoKqJJikx/A8shmJqFZOosY1yzNSGJhDfIo9RUbU0TGMx/AR3esAxCkea\nv+X9\r\n=THUq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"02369ba570852bc98bcb33a388b6b9d37d6f3cd1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T00:30:54.792Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.61","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.284-renovate-internal-patch-02369ba570852bc98bcb33a388b6b9d37d6f3cd1_1625877325419_0.2253208390385224","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.284":{"name":"@balena/jellyfish-sync","version":"6.0.284","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.284","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"17c09be54d0b358d93a71897e070ff0632ddfa63","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.284.tgz","fileCount":24,"integrity":"sha512-55FRwcusFFG4BJZ6HD3od19OSaHuCtx5W+Axx0bt6GocYOGzh+Nxn0Ok0zqnj3gZkSZDrZS5DMh5KFeiH7lgXg==","signatures":[{"sig":"MEUCIAcbAbRHFJNwyC5G/zgfOfodE8jS7mpZlMow6GUEKgxbAiEA2e981rj7Ayb8/avi0HVSNP54m4JBP6DIbWKgES+xVUg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174334,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6OyfCRA9TVsSAnZWagAAMIIP+gP6RJ+tLKFhA4zMVsfg\n2Md1Kicm7myhZenoEqempmUzNXDob5COdS4jfDK4O2zISI5E2kT1kvo/dZKf\nrvyvebxs1PL4i0N9OZ74CFO2YOjqRzfE+ktH7ceFIo4wIRQ8Uow1wHza2Uuw\nglanC+3mg8g7riH9nL72k6PzqJD9Ytvw+hkylp71He88QBVPyEZnascFA5+L\n5XpInhhYaQAb2TAQojkt4qqP6wu3WNXaH199WSVKM5o6vvovShWmRTqk+q0L\nCAFKR6YyBomZwXMQUPel5MXWlG6nzBy909lODyH45O2z0UtMIIPzAZxcGkyy\nnNl3f+VU1Pjvxe6OZkpKKOGSz/Ja4QcAQczjYzuDOyyXcisAqJq2abLNMKHk\nEI2Y5WScWakSrjxj2XIRMV93MPkGWiFk7XoPu2CWkGnqHGIz43aGKe/ovMiP\nXyEf0ZcvYzQwLxLSwfhmy/ghgBuDto6RZT5bPIRBa/VzHG7u2AiRceyXrLkd\nszFjxr8AaagJBxfu85hBnx4QrT+ss/Zo+15xTp5E2LQZ84grkYa7R3GOKWf9\nWTiSrKoZ8XHUo3LbGR0RDP8O25lUv+qNI99B4d4K6abuFNoQcKlZLPf6bryj\no43qDnfxcJ1lQiwJvG3MUJ+Y2bvkBjgDRCkAG6oHUVqrW2TsWVMz/C44lTPl\nPHhx\r\n=6Bo/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b0c2b6e314ad4cf59803aa24d78adeb27816cedc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T00:38:01.664Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.61","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.284_1625877662902_0.34361655434892246","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.285-renovate-internal-patch-1484e8a18111639693e948260ad561568a68298a":{"name":"@balena/jellyfish-sync","version":"6.0.285-renovate-internal-patch-1484e8a18111639693e948260ad561568a68298a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.285-renovate-internal-patch-1484e8a18111639693e948260ad561568a68298a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c3635408716a003b682a6f42f4132f8fe8a19a54","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.285-renovate-internal-patch-1484e8a18111639693e948260ad561568a68298a.tgz","fileCount":24,"integrity":"sha512-PU1Vk3YyyCApWS3qotCANsr15AKciBFL2xz+sGrNO7c8UpAcfLnJezWBhWN5574AGocLlxkrYP4Vq1/MtnEsSw==","signatures":[{"sig":"MEUCIHdMUKr7QE0mdEe2pqSIsRy0tJYqS4LSPtAiWh/6J4aSAiEAloqBLv5tjMO4MGJ9CL2rkZKUnd2x7nuNURl0SS4jk8U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174503,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6O4UCRA9TVsSAnZWagAAv48P/A1MEx6pT+e5wnOIV29p\nz+sksFciN4zGZ8OnDFxwWmmiEo83TJYgLljj7WNFA9CqHPlbqnzgK+8DzZxz\nDLbpaOg6OpqcIf4zu+rPAcVpcsoCZwg2j4fFpQCIbsMZsiO4oyJbAznP4Cuk\nrOhN8qSuol3vdQLzb0ExIizqZ7q0+BpN/p+JU71eDsEBhuE+i2IWtjh3eKj4\n2YyCF3IS0wr6wP1itwS+Q/Q4TPlcmw5GJs1xsX2rxBiVEmtBfTknbqR86AH7\nHabmr/tZwD+e6Cp3cnHXA3Y7nXuTwqbIwHSHsF4LE7dpoACkTOZJySsdO+5M\nkWg/f5+l8Xmj/r0T6KYypncF3iDxG9lV/mC3DV+qEctzL+yaLE1RzaaG+qSI\npltECsy32crE8TIE9MZu7bGh9SiVIx3VG8QXSJSBc2q8U5TT+NC3JGninkYs\nQIsR5+CoPdE9vD7Iz/92Fg4YRsqWhNKKGkXnzb3taOZHHQkylyWXcSkZ2j9s\nfZdTWofZd0UyZ22+wHkhj1ObzFgZrBWR5h5D4iDH0hARwx8t7EJONOrvtDML\n46PvUjyB29vEi3al3nJqlOKb3UAiEkvT4d7vDWWmJ9+T5fKB7ibYsmYxHtWZ\nEw/yVtr00LsxYfx6YS7l7ebC9C7a9ycwNDyDl4tNcKomWzNhDZwwTKH2FpTt\nl9rE\r\n=N8TI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1484e8a18111639693e948260ad561568a68298a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T00:44:33.678Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.285-renovate-internal-patch-1484e8a18111639693e948260ad561568a68298a_1625878035920_0.29905074626705996","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.285":{"name":"@balena/jellyfish-sync","version":"6.0.285","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.285","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"be823ef91790d2dc66859e49c625dfc17d4367aa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.285.tgz","fileCount":24,"integrity":"sha512-eUowpIfwm04138Vl7J0cIoHUv8FaD0TweRpgLw5adwlo+6YY5mdyuDNdLq2H5fDacDqq7up2agg7NS+uc2xE6g==","signatures":[{"sig":"MEQCIANh9gNjDxzF/m4j6Jw/HWoNr0Fs+jyS/yT1FW+Mdpk7AiBejxWdsE7g1ayD81EDH0Fw8xKHLfN3qLuw34R3C8ymBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6O+CCRA9TVsSAnZWagAAobIP/135GZRZKVoKP2k8xX8Q\nOWWEND9kTdd06CarXW7JDWJFf0DhBKBfZdv+HdyTFfMek8OfHnnD34CCuCP1\nk++tWyUwyxSUTq4PrCag8W16/xcOLaXyjrdtf62Em8/Q/vrSGSzArdYIqd87\nn9mG+o/vprDxdwEWp/fjmftLbB9Y3vby9J7pZUmXd8xw5oXpMbaMe6ldiS7y\nXVmlmeEwuPORxeiaWQejXu450VXwE9NiGOeKU+ZdSUgJcsDPAahMPO7YSebS\nYJQwCJBD2PcgX7BXNiBAGWtda8bTzMmG2DyBOBNVGXLJ77f8sVEZfY2/kgwC\nFVB6wTZ6UKA6IQ7e2E9mNgizvcAJJJZrljatI2GJ+Xpzj8l4GSbEvGXVOKWS\nOCMmvzMjFK/852hBvkcbVlVVWBaIdW5Kuf5JTufIr0ovKdYQhoyvzsjqMIKd\nhIS+a/L6PrS8Dq5SNCFEmruOZ/58iw7mfbFPr1wS3sfgrbL8lqvBF1sVCu7m\nlZ8uC/D6yNrKcHc0pTdViGCfkNaAV3dsHADKDoki4zB91I6Dn5N7nKrr7Ln2\nSPOINGgb1OEayqro0UIbH5EI4612I/ZOg6TY4kAvaWqZQq8EaJEQ5WVflWQ2\nyfg2xSjP/5H3YqDhB15e4QfpJFDCciAJ3vUSCdI2e0V9y0JD/fe8fPyspqXF\nmsRZ\r\n=10kp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"08d44809d1682c97edd41d523116c5edef0b2598","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T00:50:35.970Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.44","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.285_1625878402065_0.915391217511863","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.286-renovate-internal-patch-1acc9f90d20911335db17f182f1868aad33775b1":{"name":"@balena/jellyfish-sync","version":"6.0.286-renovate-internal-patch-1acc9f90d20911335db17f182f1868aad33775b1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.286-renovate-internal-patch-1acc9f90d20911335db17f182f1868aad33775b1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"61948dbbb040c857199dbf816aea1f203be23173","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.286-renovate-internal-patch-1acc9f90d20911335db17f182f1868aad33775b1.tgz","fileCount":24,"integrity":"sha512-5Bka9llQLxBkvG4bsMkiLETo2LQwNXoEykGWqXQL68CdeWDyQrvGjnhO7te/sXXEJ/9rvd4YBAFsc+/G+sf1tA==","signatures":[{"sig":"MEQCIFeiuPiqCXU0ATRX1ayZHE9xbh2ZmkcPNiJgNvm2eXBMAiAKLp8ziTJm/ldvEFpss7kHC99koOMrDHBZn+RjpBNjTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6PcFCRA9TVsSAnZWagAAcTMP/0Q1QCK7kt5RtQ1DHBZp\n0dqPy0NTURmbOwWRtA7XFamUbrX+p1bl0I/XPAYA8WNpL/AyyRlwUP88ZrcG\nDGaRH6PSqpI6gNIV5xRqyiZdJPCnsdC0j1vd0MQsfGMNaO6ZX5qTeWRx6C79\nN3dY2osorZqv2cf9p9j/GE+uZLFf2ltHR23qEkTOwvsoXDKLO+ZBhpisjuQk\n/eow8KOG1EtWUDdRQN2BMt+nc1Bco/ZEcb25CJpXWHzolO/rOARzD43zS2jT\n5uYE5L+ESL86ob7ET9RxpKyIbUbgZoBXUiM9PSROhOPdhzX49bebq6fq7+9/\nP/OMI4/o273u6Etf1aXRAt1MOwLqAXu/W5uF7qC2+FYe71zrVfc9jJztm2D6\nrPww7aXEvgCuvPeUJKJCXvwMOV6/EDMtHjAWLuaScCYLZHVF6sDyiNHxw9sA\n4vgGXlHWMt97TPNZy/cEG+OA4K8wLRljQd3fHSsFoJpaWJWd3zW7QNe3lzRq\nYK0F9YzGnbmDR/Zqsne0xzRF2mCUH9yWL5G0bZjqOgTehnWxiemkTwI0yaJK\nW+hbW837/dHb4RksKuC8nJrJm5A2xGWayf/KkzScy9xZCwfIlievatuv+jl9\nCnCYQYEFdZWBSLqWw7jZq82cAWOLquFpmK5sbOtl6b9M87IULZFdEqybY/ok\n3sP6\r\n=sslr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1acc9f90d20911335db17f182f1868aad33775b1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T01:22:35.496Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.286-renovate-internal-patch-1acc9f90d20911335db17f182f1868aad33775b1_1625880325164_0.47172543434499237","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.286":{"name":"@balena/jellyfish-sync","version":"6.0.286","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.286","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae74ce0a2e343a5261598760666a5d43ba4d60cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.286.tgz","fileCount":24,"integrity":"sha512-TgRREXugzR8cb1krCbNwrsl81PvGwpxpWNMZ2piiFI3zbs2RrfdntRntVYiQS/1g6gfyP6HoFtK2RVBO84cZpg==","signatures":[{"sig":"MEUCIQDi4GCCZ2CBMqZPwJhieSCdvEXyBNTm9gJ0bpRQf8f8twIge427E8nAykH0GZehxjEMokKOhqX+RPUtHPtJtQ+RZWU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174510,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg6PgcCRA9TVsSAnZWagAAywIP/1qAcNJT2KZ+O2plmLwN\nlKENSpBsDkHY8o6sXAZO6fUIj/w5K3cILVXYpJtA4txa469f8iAdS9j1k+wv\nGFIeNlVBAUnpCS4Cj1QZXv0tKLTrjeqLqLdDSVrfgeV+d+v2GFQINLMro7aH\n+gVTY4PE0ztOcHRWHlpJvc4ONy44SNfsfP7YpWa1qITD9b4ly3efAloqXVkV\nKHIX3cVImgO87p7A66gOo5+dZJgbrxOqwLqCPotQzdJ0u7UkprOWtRDmBGow\nsZ97h0drC2ToH9SbGo1WPqHxIG20FAyN5ZlC/DaR6eO0uWVWaP+K5yzLKorQ\nCuFQ09eMzvxsuVBcBNHO/kjWoEATPrZmtPyyJ6ve/F+lQryDtbnVOt5TN1YQ\nQ06MEmxr9KX3nQUUROcFt4IMAummGw8t9/yL/YSn6u0ui0EWZCYFj/WbE6/9\nrerv7CRBooSY7cROA4QmZHJDpOk60/T7NEDDgzEuX9niDHKns+YEubKbFRz6\nbfSYlK4S6u9H++YuPdYB9i5p102ZrZ86h4XGj4Enbf8HTSFe8eft0pfwodTD\nFR/1sNI/gYx0+5ZGkj+L+CT67QKtsRGT11DhKKA6OZ5q7UceyEOuF4ZwIpCm\nGrVa4G7yNBJZi8WOamQTfLAdKoU+Y4eQ5yN5BsFL6hr9bWhXLRPpxPdvQpXB\nT45o\r\n=+dEs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e184b9130f10e888fadce8708e661f652b5f6d0d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-10T01:27:27.232Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.286_1625880603726_0.17702772584509874","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.287-update-pipeline-types-5a84d72c4788d20ef0cc704b46ff76fd71a049a5":{"name":"@balena/jellyfish-sync","version":"6.0.287-update-pipeline-types-5a84d72c4788d20ef0cc704b46ff76fd71a049a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.287-update-pipeline-types-5a84d72c4788d20ef0cc704b46ff76fd71a049a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4f9f92738d2a2ae1beae69a0f5a33d162ed1679e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.287-update-pipeline-types-5a84d72c4788d20ef0cc704b46ff76fd71a049a5.tgz","fileCount":24,"integrity":"sha512-eVge6I8go/ZbiRTasc9y7+GKTgNvBwMIMV54QAJobFB7z1CgRNjoOhBYpVEv70mYS24sdhsXFiEtIrgZW08a3A==","signatures":[{"sig":"MEUCICaSLXPHo5gB1AP2yKBaklZF31M6JjtmhEbIaZNb/8T/AiEA7Wl5GQ2P8rUgpyvewFkDtNE6hAjXzxAgFQpHx2KRFHA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7YLICRA9TVsSAnZWagAADT0P/iSvzRpGuw/emvNxRK4p\n9p05r4uJVQ8F13hzC10qmqx5EPlYyCsNt+lEO3+A0l5d2W6VHRM2V3wZ/DsG\njvnz0HeptCjkkoBJKKN3wiUhsSiKeVYRkr9FdmMHpIYeOpgyXSXzI/2q0hoq\nE/qLvsaBa0Em9yiWYRIh7KETL6bmvzWUplwMXYJAEew7vwcvuk8wf6ZpZ5iA\nWUiSUY3778xqK9b/ToYJg9gsCMfZ95ATcAxRADnOtBobl1nO8X1oxoDO3f9T\nNOAjxQ/9hUnoqGp7g/Fm5yKjONBq1AQl3vxB6hipIkHcNElA6aA4yT17NIwV\nWv49xUw45Ia3yxmiF/74P3XMQ0NfXtO+5dEJW8LqMWQ9r+NnTk/aAR4S5hx9\non9VhfU79u8rq+yrEmfOvB/AemIO1GXxQmGYHYMRB/6IANXB17Qa8KGTL7L2\nyKOIWIOl/r0S4v/PGnx3kwmKafCX6JnxstI2c/mIZrNV22U5WbNmwzW6WHNC\nMTIGSdB7t9PQSQggpghyVZis+wZ88eQ8fWPuaLEbrAtYE2Q6KiNG7uiLedrK\nuwvGXJWooHlTt1rVqTdTT2DNLDZFkl+07Plc+FMtpVrij0AbNQ7oUYbqdbGH\nAIIZbfv919HY6EVkks479bCfa4uv4Ws0onj+BwM0oo+//vEAZXUiL9I79G8D\nn1zR\r\n=xXNS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a84d72c4788d20ef0cc704b46ff76fd71a049a5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-13T12:07:43.102Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.287-update-pipeline-types-5a84d72c4788d20ef0cc704b46ff76fd71a049a5_1626178247770_0.5099275082455659","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.287":{"name":"@balena/jellyfish-sync","version":"6.0.287","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.287","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a53aa4264c12d4bb294b46c28aeb6f465e8b104e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.287.tgz","fileCount":24,"integrity":"sha512-3ne6SAaabNLs0xsHDGdLSuqYAbv4Jvk1XTWJ6YGFtgicFJi4Egynst3DsyJF1q2wyCPF7p77MIBmUcNhHhM/Vw==","signatures":[{"sig":"MEQCIBYZZrEShhRas/1wjddE3zxvGzMgoxoNiBHO2S1O3bpLAiARHUq/zg9BtVksAh24zUSV5ziAwDcmhfbQCAgjKytGsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7nXxCRA9TVsSAnZWagAAFEkP/1DmlMaYgKN2YlDsWPZ1\nYCingpl2BdyDUJDHkw+siJKN7nBSkYi/tqvf2glzhvUo0caXxC8DIyy98BzT\n19UGBNmdkjB5jddg+0ksZlZ8ck/Z1sA8TQ1Xmmc/fH7bMY+o4GBQU3m01ZjP\n0/JpTeX4xjuWrPn0ltr6SYjyW+nJEQ/g52kbI2G9d3oml/9Uvbthh7UOIpB6\nqgFcxaRAs71VHmQIS3t0vv8YC3813+xJs2BNpN3IIGgm9lY4GvyDKWIneAy2\nrVl4ljOzZqpph5smixbue/saHxk7OA7/+lG+ghynHWP+nubehXOOwUjSnegR\nDb8urJEnWh0zuNUxkl5U91ZqcwnLWOPNutakJSc9suJK+FbpdUsgi/1aFmPa\nQceu8H1oqM+R6xYrXzxlKyrT9HFCfW9g3xTM6ZZYhXbecwjbkLG1uCVgR7kA\np3EaLt4Y2IcfZo04NEbPEp5+P1Q1z89H5iYtcCRddA0L91XWHZxRvudaomAQ\nn1H/28/mZm3Inoyh4VJH++kYRCtNjebXLOuScoVjNOEFpzYqdIvtHCdQihR1\nsf5EFQoquPnbdBuDPIR9atBa7PEoJQl804vNJYNZv+PrlSTdUU2zbE1BWi5h\nf/Rc1axBMtrSVyxM+Y/qO1sx50gr1A0AuvFhK4b8zylSrAS23vyyRdqzF2U9\npQ4s\r\n=R/ZZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"51b349e92f073a04451adb9a112eea729cb6d4b7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-14T05:26:00.162Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.287_1626240496931_0.9389640818353269","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.288-use-jellyfish-config-10b385d35a9268dfc835a4d1aa30737072294f5f":{"name":"@balena/jellyfish-sync","version":"6.0.288-use-jellyfish-config-10b385d35a9268dfc835a4d1aa30737072294f5f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.288-use-jellyfish-config-10b385d35a9268dfc835a4d1aa30737072294f5f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8cdec7ca78492f72d3e5f161613e398144e14ed0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.288-use-jellyfish-config-10b385d35a9268dfc835a4d1aa30737072294f5f.tgz","fileCount":24,"integrity":"sha512-4mPeyN/vijW/8ggGiQ+qB9kx70cXaw0ppo2e8CFyS9BWPSRFjsPsB9hH+NUOsJRQax4qxMJm3v9w4I/40wz7zg==","signatures":[{"sig":"MEQCIAHQ82K0dV+JzGLb1HsXUY56Pv1Hf8AVL1c94tpBsEF4AiBj5NktFtth3EEwy7GMlicTpb2iaXlRyQgQ0frj5PcHoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7o3yCRA9TVsSAnZWagAAb3AP/RvyecZeCDAjsc6r6h6C\nJf/hK/Ebte9yQmPzyjsA4ZYB2PEvd68VPghs4mpcJGHK09d+M05ixLiw/wUb\nHQLdklO8g/OPFkqNRW4FBDCR1Qyc4kdpl0cvcO6IwbzHPIGDOWw4rIu7zymv\n3CyPKykmV9+JBGUex1RnReNMLl92qdqmxazlbk4gx9SJTTgVOG8S66Vz+4DI\nRYNO2EOqQ8VVYWKb2UYXVJjN2te2YeKAV4x+OAPd6mO6vV44xkuYlxFa2El/\n6w81O4KyCGbSaTr3LCxIT/aMbuKUv7plEF6FBNE4HYyg45BgIKoPXXff2VwE\nVJVZshRZtYJ8NCLVJXGFMIUhB8uOhIJixH74F8xtNdXA4J9/l1ezyKsvvJXZ\nqSolnXslGT7jA4WKaZyMmEAAvNXdd5nIPjD00NKIGBqi+Gc02pGjXx9fGlxG\naptS0pwv5rIh6ezxiwkGJkXKA4fJGtpmBzHNqRfSQxc7ReVkg40eUP0CdPw/\n+IUxx8nsR51wn187l5YsHYCeNwK7sOpdoMHF+2MScmCCVeimFPjVCWYcqJff\nlrmAy8/E8R8347DCzpxR+3iPIe9Nebk6VZCgqrhako9jzWFs52WZkTNSh1pX\nRg/h2z4tAyNkIGQTSVFSjAfuLqYP5HcE3Oa7v/g8KIGxS+2bcWaGXCISKNz3\nkp/n\r\n=cfOq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"10b385d35a9268dfc835a4d1aa30737072294f5f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-14T07:07:11.178Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.288-use-jellyfish-config-10b385d35a9268dfc835a4d1aa30737072294f5f_1626246641743_0.45142966542568597","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.0.288":{"name":"@balena/jellyfish-sync","version":"6.0.288","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.0.288","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"36e2155b688df1d1625223c76a55b9c2c05fde75","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.0.288.tgz","fileCount":24,"integrity":"sha512-a8bod2N/l6LulLUf0q/JclFJZT/O1t7yjUFjJQ/rI88eGHldEcZO8ICNy90vWK/79N828XXer0F06S/zHNfu0A==","signatures":[{"sig":"MEUCIGrnFVEt63C2v67WbWzUuKidf2Vlg1mpD8Qhz/DD5PSJAiEA450KmXaVpGwimTlnSZYRaT5njsn5j1Sd6LU1zjDwh+Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193355,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7o7cCRA9TVsSAnZWagAA+xoP/3QNw+iWzAuFcpfj0mGm\ntw0qC8nDXCg/YLQ6238qJo4dZ2PIPhSaLPAXt7c/eZDBp2s6eOZZTY/UVYFa\npKeKjgV0i20DamOaGAdZ/dU8+1EzvoMwjJRwyGfAh80LHLoFUgpEtHKElL+y\n2KYr+cUZtSLGgxU6dV6TeZyIIgbiaWzqEHDPQC408YU0cWQNXfOFEFegZKAs\nt2ClJo02N0yTIpgJCauNbNNvWu3JtR2UpJjoo5RO0QUU2MD+a/urD28+QH/a\nCqLhLr99ilLpWSoNg0+Ecq9ij3HHkgxqLylaPXhas9u0D3/LrlZhdl9Lv467\nm7lA5yPKsp1cDU2UAVlyiz7N69I4A1CgMj2WIDHBbX6plHAaDDjOnnb8xbFN\nBY63MWGKkbW2vAb7QmsIkN4tW6HrVq3tfv+HtZ1D9la+iQrNP0nu7m9hMy2I\nFgkAnB3myUJocgwT4RSK1ebNJ1aSsPhRsvk+V57wcrGUjkCgL1dioDkmfQY3\npuMcE56HChNhBfN420eaFHKfDkjdS4Je7ifkrs/OExGZvQGdgufOyzt4An4n\nXM0Tq4vG42OoDcX+NMhSbxFWbqh3T0In2sT9o0vFsSX4UlHPyTQ9nlST9fwx\nPgsqCXquE/RDAEMnkirfll+/QhymJkkid9vP3gp/5G8Y+kmmxmhvrLiqIyVf\nU4J6\r\n=I+5C\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"663cfe6d9d93891c48199c63524a4c2b109163d0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-14T07:12:54.354Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.0.288_1626246875789_0.9296552980411543","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.0-allow-originator-optout-ba8950ecfcc59903b23f9d141e40df0b00b7bea9":{"name":"@balena/jellyfish-sync","version":"6.1.0-allow-originator-optout-ba8950ecfcc59903b23f9d141e40df0b00b7bea9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.0-allow-originator-optout-ba8950ecfcc59903b23f9d141e40df0b00b7bea9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6970ba0a42ed1dc6be726aa559ffac32362fe6ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.0-allow-originator-optout-ba8950ecfcc59903b23f9d141e40df0b00b7bea9.tgz","fileCount":24,"integrity":"sha512-sYSGOKor+qNMPNUpuBDg5RnWiHBtgssvYbKPlZ9g5xr2f5gDpw4cn6ls2+zezZVtgzCN8wcxzGzNAn78YCT8Iw==","signatures":[{"sig":"MEUCIQDcbwPB1T3xANNlutbfg2T1EohCfo95E1Kz4PwUFs1AGQIgGGizwiltZsA9sejWRFFvbtkrGQeNTSwUMda0w+z4p2U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174860,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8WrwCRA9TVsSAnZWagAAMBcQAKM5IzMMgy3jbsX7cFfQ\nmk6XEtnuPG7Ohog4jaicyddqg6/Q8jlbW8FRbVO2Fs7/3hU5YBzCd2G99+yF\nsBggPApu4q6qP7CDVAm/BENREnEZBuQwMlLhh9DJAkci6beXe/90K+UPGYW8\n58tMKhtpwvrNR8ByAh2hEoFyDSPtvy/RWQiyseft75vuWu788i5JP07gOf1F\ng0oPet4AABokLe3ZkeSTGB0ZF1E6Ml1c0f1Ypse3+VujRdMzlBaixCuG1++q\naK1pgv4+WRV/oyRi6EdRQXiVDuCFTP202L/fAMcN4OMCNYAHM71pCeEQ7bqa\nOsImgd8MU75y5QN7tGms2B8SotyEoJVnt+gdP9wpK6qXJJUWjvgRYQFYsZ/j\nY+QizJR2d1ffHFikNmPvHe161sbnAlyx8j18Er4XXxvnwLEwvI7bLjLhWcwu\nuGNCH8JYbtEler0ekEQ1cwwXEppGl6++bHnM6MTGHRbXBE+6Pr0MdUTBHIN+\ny0CkMcTDT96qMxs2sUrbhzw14EfKkrDhRjV2LgsJHb4ABsqDTYqXEfdiaPuv\n36ElCfkglDgECNWk/a1HeOrjnu5hrB/POPW2v08yOvXa512EteNnh9cCpEJ8\nOQY1cMn9gOGwxCXnHZrQGk1riecQz4XUObAjuOh0AVw8TBVzltYNqB+Uk7Gl\nqitu\r\n=Bd05\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ba8950ecfcc59903b23f9d141e40df0b00b7bea9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-16T11:14:03.661Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.0-allow-originator-optout-ba8950ecfcc59903b23f9d141e40df0b00b7bea9_1626434288329_0.9866056078270433","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.0-allow-originator-optout-ef5ac3496186d3198fff7302dbed88a0b52ed28c":{"name":"@balena/jellyfish-sync","version":"6.1.0-allow-originator-optout-ef5ac3496186d3198fff7302dbed88a0b52ed28c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.0-allow-originator-optout-ef5ac3496186d3198fff7302dbed88a0b52ed28c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5df3bf7a92d19a85309dad6f179b936e11e03e86","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.0-allow-originator-optout-ef5ac3496186d3198fff7302dbed88a0b52ed28c.tgz","fileCount":24,"integrity":"sha512-YvycJHKnvMXiD05/jC27TqVXrw0dwGlySI9hn+sXZxVmksyrXY1ZXnAJPqomXf6jspp7o1y1C7BholH8+AcPVQ==","signatures":[{"sig":"MEQCIHeOYouYVYHf1g3egFRtuYOnbxDk6hKeswctOa9lZEw1AiAaAUEECAxOXqP8CE7Ur3lHN9kq3TtGkp9G36FBE4syGw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8XceCRA9TVsSAnZWagAAOq8P/1NNasua3P/Tt76VeTAh\n2xnmBiv/DvEXkOAYJwGY9zdO4TGZEVgdJIVnhEnmwzcSE4yEDIbJc/Uc8Pna\ndcJGG5M11NmOjOg310wlFlKZ4O646FxEAaRw8UH/jp/AhGeT3IN3RsJhMAz+\n1TVZ40G3tOIvDRQvJrrRjaz2k0UBAiVwTegPb0NMTzoBJMd4o/717jV+uJJ5\nCaMsN0ipqflSOa3GUKKGSs8XwadKqAgIRG8a5EOz6wcBr0XVU5vBvdi7uvps\nbu8FS2vScS5a74xowrzGLPtVVg632DBtBJA6ZJZE/hNz1Xk1ATLAu4NRlVWi\npsIjVIUCUacK/L5ohUpay+IqaIfNRzcdA0dcI5oeBRekenMV9THi5zvExmbh\nwq5UHOa9O4LcASoufSmdFqahBvWQboY6Qq2HeWLEKAOXFWU43gl6SNZh/qDh\nh6ZXX49fk7l8DSuie4MLkQ2cLecUP4Wr9SkI9KJweVtWY5adCkB9asxGvGqT\nEORIYCsukKbSM3aHG1cE8cQeoAxN+ITHHLiGJG3NoYs+dr8GLlM4ERi6vVwR\nwcKudPWIdnvHqKTEfjLbnyOnaETkcvi46PHdWXKFlqNG/wxyyD5Jh6r9dspK\nRbGnbnGYnYKvsyLEhEZDsNM4E9fxKrUcohR7sGjxrhL8K96NtOdQxhm7LGPF\notx2\r\n=c1jR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ef5ac3496186d3198fff7302dbed88a0b52ed28c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-16T12:05:52.554Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.0-allow-originator-optout-ef5ac3496186d3198fff7302dbed88a0b52ed28c_1626437406374_0.19759248231521442","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.0":{"name":"@balena/jellyfish-sync","version":"6.1.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6d670af4cedf8dba2cf184cada557a14fe517cfc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.0.tgz","fileCount":24,"integrity":"sha512-pbNNuxP5HsyGS7AjvElAL8HwhmTwKZgHAaodfv2JbpULHTCLhMUWjJKyVnPWhKPvrzjQyhAnBH5b5jB63LvCKw==","signatures":[{"sig":"MEQCIGwveCiuvabWIjMc0L61dkev+BHlQ4iMmuW5MUPvJc6BAiBiurD+4Ixcqi62Q/vMr5yxRpTKKinJuZi+Xh5W6CJmXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8XgcCRA9TVsSAnZWagAADtsP/2ktjynjyDNQc+mGQEq0\ny7c2Qik8ZnGvsEkHutJtkIBuPSg41oe3MlNRGHyyC6UmYHmFMsJ7JD2HNQPr\nHqBpVYJGnCuaWDXSjr1t5Hh2/q4eSH5tYxL/Iw4JApH3cdN3eKBj4UCaly16\nVkmRX4WZoAn429dvixgNpdz9GpQ1ZEVGzMlQ3HS8wgV9thFHWVdeV/e4c/TR\ndjGSZD3Z4Yycpz0z2yCGNB4ib4eHMEflqLcLQHt84zQnmd1JVZUJwhAKegpf\nA0fTpCL4qJjJoiO82bYQkYWPhZUo7WBXIyQSDXKZajGM1qPBAFXD/4TvTYDG\nQUPrXC3SSKQtoxsCI1ZnuURcmaHN3caQ/pWdjyZbGyOqPLZ8VKXEJXDdgMSc\nW1XBd70h4k7MfPuopodu8TvFhilU85TEV3DoiJvg/HZ3Mio4JQpWhPMvlHMW\n7eYx69DZVFsA8FlnFB6jhJb2Ak982b2DVQ0/4RinRqS8viafx6g0YnwpuRVz\nx6A0VN+50FQ8/qsO26K2+5q+fnfcmqhT3fZb0j+6bdeAtnhlC79vz47cB3ud\n3FHA2d8lf+cLwauJWCyzbORE4DPlMd8FMNqj2rDZWI0Xt7Q7JWio7J91SQYZ\ns9HetHgpisRyIiolI7KOFTuvcfrViok9H75c7kqnSe75grwD1weJoEUrh5fP\nRgaU\r\n=KKC9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0e03c17c82b14c9badbab415ef373701dd983dc8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-16T12:11:40.956Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.0_1626437660333_0.791554649998867","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.1-remove-whitesource-b9959bfbc27605b15c2eba824f8940db50788ff0":{"name":"@balena/jellyfish-sync","version":"6.1.1-remove-whitesource-b9959bfbc27605b15c2eba824f8940db50788ff0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.1-remove-whitesource-b9959bfbc27605b15c2eba824f8940db50788ff0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3d1b516e32f4d995bdb43ed6b0c15f2defc895f7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.1-remove-whitesource-b9959bfbc27605b15c2eba824f8940db50788ff0.tgz","fileCount":24,"integrity":"sha512-hMoU5HDeRxxaVcd/23iqVOXMRLtxWoTll4LSILdAFvrlKpTM3QqVwVi09hwaYdFaHXN3viFs3fGKHfCMtVyVLQ==","signatures":[{"sig":"MEUCIDxqCK00qaodkELGGP3kXT3yclBKH/tW9QM7+GXKjQMjAiEA3l1f8lmaiSeXjTfu4iHEhGXE84t6cHDQVVQfKGO6ILE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8hWfCRA9TVsSAnZWagAAgvYP/1ChEsKZafIeLQHCy0Fs\n+KL691sYNaZ9/s7uS6Ww6fjar12MSb5136lsa3DQGyy+w6XwmDVTdbePW+TT\nGcGBO2eo0HdsULVPU6Du8+NkIOeKTUbmCpW1ghPmoOZ4orcbaLiaQFAgk+Jp\nVKL2c3nGM50XEonXfVLBMkukvgI3wgSBO2Bm776sUxJrp6hDRX+3wV6GtMLG\n1h0DBmJlJku9w2KxtEF6AVY9ziGSsd3FsC+x4dwHoNm+h7ZdW8Wj2qNzZREw\n1iSmj5dQBywtuMUljKQVtsLL9cArd1xRHNgZ/JmXd7qIobMsPXJ/coEQZiyd\niw8PD9uYQAKewYVYUxl6tl34SFozNDoV3bdF4E1U5ZIR/b/wY6SStFT1cQSd\nTCtqDcW4mFV+LWYn+/eU/JaGI0OZ1m6uciaUjP3HXoV/Y9RtylN60/2vkxJ+\nhs0NYC2zW68kM4EadKTDHO0d3ULqza233bWe9vFG13pE1n2O0C+htxCaOr3R\njB5htpOIz2uQjCJv9PFYP3mnNQ/yIF0f8gsP00LS64uy2Qqu2X4zyODscdJE\nmC4uIictNIn8jcBHqTIFCaOorPnBDPqa9TE0caKHRuEmv7dY1Erp0WYCNzq+\nCr62ZZUAESYRoy4mr4POHfpkIXTKTlITHSmpzXIi0/WUI16X7plnguG9EKvJ\npmj/\r\n=64gL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b9959bfbc27605b15c2eba824f8940db50788ff0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-16T23:23:12.642Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.1-remove-whitesource-b9959bfbc27605b15c2eba824f8940db50788ff0_1626477983647_0.025185127710103616","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.1":{"name":"@balena/jellyfish-sync","version":"6.1.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"99d4e3d50d70c0c85191ab7734c92a61b328da85","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.1.tgz","fileCount":24,"integrity":"sha512-39lsyZbNUxyE2nf+HpQ43uVhqwHmHJcSMjb5VTZSqN7lunBPWrS6Y8esecF7dAhun1nXhnINfE+2iAeI8YWRWg==","signatures":[{"sig":"MEUCIQDXsoOaNruDK0YITormMpz1hNwUsrGJORFXv4TXVN2wNAIgKPXm6mz/NxoktGPvA3gYVFt/DCCrWrYOMBTXRF9PptA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":193958,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg8hZvCRA9TVsSAnZWagAAVKEQAKDndvn8fQGhkdB5caCc\niPg4VL+g8QubfNFZBYaiB/UhPCb9Y6tD/8pw+/hy7QA/aB4J7Fst+KjqPcU9\nCRxGNRlQrY5FDRTiw1k4zoZVpE5crsDTpSRjmfmU0IzpCFf65d4t2uY8990z\nAFF9vK6A82NRuVOgQFSRFOuARP2ocd5M5tkD3embvjX+7LeRhAYHFORpj1Dk\n/f07rsIIQI9O0Cp+oFoz0G1APzFTBLQtxgKb1tY2Fo/cIk+1BASBlA429JvQ\n5lfSZVl38+JYnV6smzmfBY87EYr0AVzxcKekLvhaEL4obU41k/mGvRsX1izp\nrEt7r266Qi0QBOXlIUqZjWJskWQJLzoVpJvlpv5H4WRsM8RXfPIcv6/PSsuW\nsVr/rdaQua2Z1ayCS0VaPJ7wZuAGn+U9rXACLoOhCphx7G5gYLPXSW71vjTh\n6Tmbszyp8IYX/QfuyD8aaUGfq3XT5C9vl1suZAj9e3R2hYcEpNUaqP70flTe\nCFJIc9SKlS48HFKqbhUzQv5uTH5xGxA66xgVTXQJAY7o92AaqGwfE76nW/vJ\nlAMMc70AKQh7Sc4Km8hj4wdck9tYMsd0tCBKQqP3STu1BQACa2dpgcnHD55u\nFJ3Wk8LWYdd+tdoGgtsQSW+LG2OaRhLDiBXKN7bGGZJ1T/Z32yImvO3bhfuj\nwLVl\r\n=BXiE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"630fded36e450030e84b90077331859565882d59","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-07-16T23:28:12.953Z"},"_npmVersion":"6.14.13","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.1_1626478191613_0.20678354017662315","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.2-h32-unify-script-names-6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8":{"name":"@balena/jellyfish-sync","version":"6.1.2-h32-unify-script-names-6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.2-h32-unify-script-names-6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce632db6129801d42d4960569df6ad8d0c16d2db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.2-h32-unify-script-names-6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8.tgz","fileCount":24,"integrity":"sha512-0CIp+cgpUXlsNDDkhGiSPGgXkd1SXteU6WR8pH1sYYIeOSQrESmRgroHEP5aZUgj5s4fTeV5vIXr7qnsRW6ovA==","signatures":[{"sig":"MEUCIFCCBJ8ii2LUWGsuKdKhfDc9b/e3kj1xz9qwqJpZypgqAiEA1rAXhzHsYdhdbIu3C2A85eP0+WgMlo6s2Rk38MxVQM4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194119,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCxmBCRA9TVsSAnZWagAAuLEQAJU788R4ADwDiHWKCA+L\n4eGY/iS0GT6OlAoE0dIAfxdfRUxBokAjNIPSIPA/wnDI4ZwdFFrEAqfb/9oO\nAUvzeCRwXm6sXziLS7UcMYa+7ATSdhME3RMucAEgUPJedpSg9ci5nUqJvgWZ\nvbUaZdQ2TGl0ooKQyjSnQ2P+zzOMvYWzfYppOaENWGAe24ZsINSFkouM0q8J\nHL0s0vNGvu2gPo3bSFcRxZaLJVteI1a+cBWfef7lQEGuOwqCloXyb4S/Thn0\nzbrNm+80hqlItPj84ux5s3608Abt+tqkvM2rXsFIdlWQ7jDFhz8i0WOCeWmr\nhpMGX7+GrwIEPGBNL6nH1YYq+dpyLky7vua+md3VUhCyVXd997iv+X1qqXsy\n20Z1+7HRmG4aYHIPt3c6ndPYN3G5x/fwZH4mBNQRimZkseckU3nEKlGNhfu3\nMCQ8Rp7EnLv2uct2a0NA9nJ12fEXPyNSEEneOYNfoOBnfQ3XznDZNn9Xp2qa\n4yo30hoBerIPK8drJPxOL8nweVZhLjGIkxePygdb9TY910kIOawk6HZEGpyL\n0wzmW937RiENzr1Chxny4MnNwllt4cFZYoX7FX1DHUQMR5PTRRtyIn1TmTra\nXzo79oXadaGGP1nHDZmex+d7fOcGhfSu9V+GXX0rfznhO+MWRuBeOkk8jRUd\nM4r4\r\n=iHib\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-04T22:45:53.514Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.2-h32-unify-script-names-6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8_1628117377077_0.9395858321121677","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.2":{"name":"@balena/jellyfish-sync","version":"6.1.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f1f0e17800b4e10be90b0a38ab2194adc38d55f4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.2.tgz","fileCount":24,"integrity":"sha512-ukywafplb/U475bfpzc/xGnspmnaSMY0xs77xZbgWK+VOBj2j7WLSKKpn0UdA8A/s5O8/Jsj3wqyc7v/EMiylQ==","signatures":[{"sig":"MEUCIGIlsgwirA8nUoM/Lt+9Ty9b1eTB4Xlcf9RyuNS8r4P3AiEA4j9iAewH+rpt7qiS/Lqw+ScfIKeDF/4jDvjfwvDK4qs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCxo6CRA9TVsSAnZWagAAtl0P/2pdqhAVtC4Lj6we1S3W\n6NOMSbTXurMrQ1Ub11idiQ57zGv8AMhnRcnUdAt/wOwrgfcBL4/UoM9ZKRni\nejbyqxgOBN+CNBqBMD9OZXYnXyqKBPq0DXUKRdrjo3J5wZ6khYe/jZEZyabU\nCiaGQaUblAdGxIAPdfrApGeq6iyDZ7nCAntCV0JyVUxefdrsamYUPEoaE+v9\n7r9NSKwgkLHpEew3FnPNPy37clz7HBdHftakzL64LjlHBc+RA5QDXSIzLg0z\nOEIVYvF/CtBHwY148NfJdVWur86TdnHggp/xIvA4b+q+AFgXBHOfOIa06gxk\nHohrSXf9xhhhoxlVpe6xLmG8WCVMySISxE+sgclCOVtMpuVvL/Jts/ITcGbr\nZHtByOFk2uUb7RX6/B5uZ34V9xfbI9AXkwCqckE/6Zd0Nm7IW1Pn559v8Gh7\n2JnWgqGxV6Dqk8p4nxLDT5cgev8rn3oc7dsYnp2KNJtBckeEj4IlJJRUXqRS\nx9s2aFh+MObjbAd+oKp6vlz5x4HQYMoASSIxR0A/prHYCQT9Lcg96fVaLttR\nqe2e/D/gjCzQ6qJYtqE4AAN2UnX3hOgWl0Iu+HJnTmeOl4j6f2Rhy4rAK+L2\noMLriroM59mO6WsLdhs7leryezKb8ezZpIt3vsuhIc+KirvgBG3yJOmwLRP2\nsK82\r\n=8gbe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9267ef34a4c4fc4079f8dff5847d9dbf50d3bb9c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-04T22:50:48.904Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.2_1628117562402_0.6524473638257866","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.2-skip-origin-fb5790fe3ff2824671a2dde2eb780df6d726a79f":{"name":"@balena/jellyfish-sync","version":"6.1.2-skip-origin-fb5790fe3ff2824671a2dde2eb780df6d726a79f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.2-skip-origin-fb5790fe3ff2824671a2dde2eb780df6d726a79f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"decc66ff535ce185ee814f061346997ba5524be6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.2-skip-origin-fb5790fe3ff2824671a2dde2eb780df6d726a79f.tgz","fileCount":24,"integrity":"sha512-goxXhnM/bvBNqepo5wxw5+H2ZugRC3QrKedoZthSBkZLy5UEJpnyqQwHsbyTow0wwGdl+nGUDct//x84ZjfDAQ==","signatures":[{"sig":"MEUCIQDjl4HuI4yRb7J1v/7649uGw+fSo9epxAC3h8IVJlf0pQIgeO/F2DLa/cEbhkJgQH4BMBeSvi0fblUJeu8+U32n9gg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194172,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC66VCRA9TVsSAnZWagAASekP/REUjY4GGvchHmGHpCq4\nTtk9LxBmwuvIP8D94v1nK7W7VpefylGV8p8heO1Frh4wbbpRK6h8osEy43zD\nkQjDGI/NVPQZZ6XmaSOIfr1eDMpr1V+DhhFHFEfiSOHNTMZJnxbrcelsFwTp\ny79qBZCUqKPmxJTroP/seYdU/+TZud11kbARsf82u6R9udE4ds9VFZgZpxKc\neIMUILnpGBZu8VgP1nx2cVRFGGj0U8Iy69Gt91HZHoA4AO4a/ejfBuUrb79y\npxUjgeO07YjiwvjmnR/LKaGq8g72UDfqGFp9WbmrhDfnnglxn56OxliAmy0i\n/efVGm1PeV9KfizApNTldADG8hV71JpyQDNrXM6ueHd9Xcgg5geDeJzVZtW9\n2SyUkDZ3sYULi0YGAba4FDC031ek9t/lzUb9oC6wXb4ahqR89PhMizwSZl8+\naEbrJ1MVEXKIgaEKvTRXQGbSAFcBMXC/1tbvlf66Mukn4tdZDiS1ciZX7LII\nnZnuIv3ej+Qvt+SbObTwf3GrRg3JY8kiyI9Z148S+MCdiDxnqpOcrlZFf0i8\nI+KdV14GZbnSK7qX+Xjnnq+02xLc8sFDEwKi9L46kv6RPqgEjAMsOc3VxlHR\nmcdJWsO880n4qZWoEMHFQGmwFPxNhe7wK1fw87MOO4W9RRaFm+ktIGHwQcPK\nPhPu\r\n=x/Ek\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fb5790fe3ff2824671a2dde2eb780df6d726a79f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run unit","unit":"jest lib","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint-fix":"balena-lint --fix lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-05T09:22:33.178Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.2-skip-origin-fb5790fe3ff2824671a2dde2eb780df6d726a79f_1628155541647_0.8752063657392881","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.3-skip-origin-d72535222a4f50999c5d8cd2429a17f0198b0e33":{"name":"@balena/jellyfish-sync","version":"6.1.3-skip-origin-d72535222a4f50999c5d8cd2429a17f0198b0e33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.3-skip-origin-d72535222a4f50999c5d8cd2429a17f0198b0e33","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f6e7fbceb87e8f8d5fb21531dc4e1d4fc04813b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.3-skip-origin-d72535222a4f50999c5d8cd2429a17f0198b0e33.tgz","fileCount":24,"integrity":"sha512-x1xvW+R4dSV+tkgf+usMj1FUUG2duqGjLKcG3UEuS2vkTZmtYZFTIy0WW9da1DN9+nLOYRm/tvafKtvyZMlLyQ==","signatures":[{"sig":"MEUCIETwoUPuLnXW2S0XQapjqT+IbIz/r8ifJRZqsAKlLEjKAiEA1sSJXPizkk25vs/uv3Z5M/s7UmH6/PbuUW9eDfCgSpQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC69uCRA9TVsSAnZWagAAA2sP/0jMmxVFwfuUhHFmDrA0\nhnAPP2/cqoa6mqPHBkZeOwsx3Wwo/9pXK4x937tuNoNtcLp0mofxWlzrgSNi\nqibhz9TuwIEbF1GYL/1DQImfcOa+dpeeH7qZYYMtQw66oBMIc7s5yVMjhR5P\nKUIvTEyCBdDl8+if/Np/YVjNI/oCy4jI+RvYMlzd6UnazRDk/S6JrOXLqPWH\nTxViHSr2KdCtnckG20WE0ysPRk2YoUNVKH/f7g7Di3xaOp1791Og/KcFPi2n\nYW5emHCBmgysJUxpZ3iXpa9RdBtEhQ8smHABjQp+8S/MVOFAb1CtxSrEpWsc\n7Ai47t5OJ64GRv+mi9yy4AtQjSZYnWl1UBWt5MDDkPPQpA+0hVGr0cxy0nm0\nx9UZiKUx/JiViaTiokL7DpWa4QPQUScLCi3Bx/0Y1GqALlwqEXyiWA6HNpvj\n+iAuJJyrpQlQCJeUNsAiSpBjGf4RHvke6n1PxXw7/+UItywm465ow5NCZlk7\nb8mP8c/2ozHJKCO297ZIn5s9mv5a77UcH0cYO1WWDU9vk8HJ0exMC/z39zJo\nSSPvx0IUQUH7rkOGfIp767uQKux+DEfJnR2wFJbqHb8p19M3RpDYwvrfHVvc\nuGk1x04qX4+9/5ENJtbl+CdOPeHQeRDxG8AHvqOgNNgF66xUdWehqAC6ZHIu\nzhcb\r\n=tBpr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d72535222a4f50999c5d8cd2429a17f0198b0e33","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-05T09:25:34.124Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.3-skip-origin-d72535222a4f50999c5d8cd2429a17f0198b0e33_1628155758429_0.08539487939060275","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.3":{"name":"@balena/jellyfish-sync","version":"6.1.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"95daa41585697f7ba75b92497c0a4124e06f546b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.3.tgz","fileCount":24,"integrity":"sha512-KqtcG4TQFLjaEFif0Rz3lv/nql7d76ZqO1eNG1sTMrde7rcec1F/+G+R2QmywOCp+X0qWrxzp1Yf51oDKL2FfQ==","signatures":[{"sig":"MEUCICRjoQcrBiylmBPgq2BmD+eFS+q5VZQhlszeajCicNpMAiEA4v8EvFBYi7PnFSeSOpv2Jpz99mgFM/mjNONhWrwMr6k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194216,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhC7BHCRA9TVsSAnZWagAAfXsQAJ2zcDMgfoTBcziJN5rZ\n2dXHs1Ar91d4VolZpozJv76UURdGuK5SOMF2lFW+N5HIjONMOAxUtIclHC7W\njsYKkyNJQvS2KT02/zdISVheeqs4DY3uUZok5J8fOHIAvE+ZXSQqpG8ULo+N\nP7Yo3rMzusW79UtXhnEqrDev984Uc8QgXfToALRnvHG2ouz6wW1us2I+1qR5\nANmuemiVU3CnoenqxQBi7h/k4j2ku6kFclEAB2m/JyQaIz55JgjxYT4F9dLa\n0rjNnrrTHMx6jrEccib93eGc+UcJcNYVXOrnvM5VuGXKv0MGA5fzOMJRHZ6Z\nNH/WqOP/ZqEzQUVJ/3xn+x9f3KlXVDLfYr+3UzMQMOfjt/SnSVLkuraZoo+8\nMiC7e9ZRgDBm2syy3t6NX53QbbcJ44/9R0vS70dk0uHzNHeoHpOdKQW1ocAI\nH98q6ndchv2AEmKbeFILSWfAtDDKC9Dm444BMzle29srXW66ClCddpndpxB9\nVMp1S0pU2FYXAt/Ko+jZzdLyU74H+5TVoBxFTMObVY5zFQfcyIQT9wJaIcjt\n0gD/G57TBV9bpacNEATtfW9IZ+otCrZ+2SqbT8nS7VWx94lrElpUNsZGnoav\nit+j/NssAL3dTX9kQyIKIONtzcNQAx35UW5LqC5ri6AuuqgZfygieMgYNcXl\nbvpY\r\n=Dl1M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c17d0c0c85e667c7673b9387816d7ad8996cc1a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-05T09:31:13.238Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.3_1628155975366_0.8022837661236768","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.4-lucianbuzzo-skip-pointless-origin-update-969838e8d8055db4fa055cbefcb5a1810a7a123f":{"name":"@balena/jellyfish-sync","version":"6.1.4-lucianbuzzo-skip-pointless-origin-update-969838e8d8055db4fa055cbefcb5a1810a7a123f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.4-lucianbuzzo-skip-pointless-origin-update-969838e8d8055db4fa055cbefcb5a1810a7a123f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1c286c1c348a523f1d76df618df2961cb2c38c74","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.4-lucianbuzzo-skip-pointless-origin-update-969838e8d8055db4fa055cbefcb5a1810a7a123f.tgz","fileCount":24,"integrity":"sha512-J+bbJpmn6CZFJ1j0H01lmds6IEMkbQJgC0AySEVVzLerz0+AYEoSHD01kqdNpzh6knD5kj9kNTZhNwFYv8z5oA==","signatures":[{"sig":"MEYCIQDI9Dxd109CWDIRRyktn7NTO2kULHMY3FwlC0Sp2u6nRgIhAKDgOPNfnH48kHnE2GDprSOZ/V0VBK9fnJ9Kwn8EDjZp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194760,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH5fHCRA9TVsSAnZWagAAnDAQAINeINEHjO0T9vn/dUvk\nZ5kGCGDhOghTeurGvcxhPh1bXEp8BpiaFIjPo+v727QAdBwXsj/sBRWiqYMZ\n4IyIppUvqkU8yNv45sYOqv759BitDjmeTFo6DP2BerTSkTp5UYFi98McjFSo\nxXwqQwaYZRPcZWFSy1lDap/NgO9OHc/YhCCfTQrfiya9KNxCo4K1XjCLmkkd\noQiCgglJKEp/kUUqB/7Fiu0lhIK/2nMiTsjeDqPOqQwU8nYtrTJlWaUdwluo\nIHJ4wGg4WtlwWh9oQw2hUWujXk8V+C4wpL9q8oBUTjTz9FShIrwFWmugD2LN\nbiTwIe6WEXpYe4BeJ9+4NUFsPEVT2dC9hdB04YxGAOv2ihDAAFPleu7bF8VN\nkVF17X2bq85SPzS5TeugaP8lq/6b9M/s93GlPwG8NEFLOA733jMQTLgLj/OG\nIXMVkmENmA7kB7aHdWNjwmFweU2EIn2YDAEunQfPgoLZSp8EaKQBsBm9/Nqt\nfsEL7xzyuO/XDxq3FgaiqzbcVVBwUTGOdQB4I6pk+EClV/bthxNdoAM9TFXw\nk28oR/bsNTz2cMnMA3aMuiroczi7VRAqJtah8oKK3+WWNarBn7cw93xCqlWj\nvBb62K1plLioDgJd5Sdyh8yFsH3onw54E3wrgIxs5ucVu1AyibOF2u4EEv5W\nOASh\r\n=zIPe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"969838e8d8055db4fa055cbefcb5a1810a7a123f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-20T11:49:58.608Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.4-lucianbuzzo-skip-pointless-origin-update-969838e8d8055db4fa055cbefcb5a1810a7a123f_1629460423147_0.7647380160622146","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.4":{"name":"@balena/jellyfish-sync","version":"6.1.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"85548bf91955563a55eac6cac483de276a7fcd48","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.4.tgz","fileCount":24,"integrity":"sha512-nst5oySmDQxIvXcFxHIXXIsuV7ic2MzyqmQQTnFdwNTpeOxyxTqd9YpunIzZhxsB+lYgMVUxH5vYcntsYJfmNA==","signatures":[{"sig":"MEUCIHCme76tMjQheaADeIS8YQXXCKceatLw70Y87ZTLrtc3AiEAzWwwC6p/Um/3pZvqqrzfpysRYIEugMvOxBobtzf7FxM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194678,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH6ErCRA9TVsSAnZWagAAIg0QAIC7WuhSVrPorQJp5gzH\nX1tnjU0o4XLqysAexGfWb/QzU2bhBk18kQnkMs+dJXgIQ2zLc5WSdLoOmUbd\nDmi2MgpV9DEClOEfnfEyLCXLzcC0phL2a6aDaH1HElcSvBa025Rvhjhtivmd\nI+/+nr7RwL4ZjCxLEw3SMcBDu4J46nR1kooeLtaeJD2J98CofdkL0/xjQfeJ\nUhB/rTl0SWxn9G8oA6G0Yhn2ZdlQofbOKkq0yNvADOoBjbG5kXyVsrYIUekr\nwt5Obo+P3pxz3nydE5OE5SowmNjwSMq0fm3xgc4floB5qkK/Wr+IN9LZUGnE\ngnMMwr4R7lbGeDM8ejR738A8tUNTWc2OO4s5+12cIL5+k66ePE9ZjIXlQAmh\nidCiy/VPA3x4YI3YVgzM4891i4v3WJwV4HQ6qoERrWsb57FBawMxVrDIt6MH\n8QgmXgTRG6Sqx3wqjGvittEYbVShI+2WVw2pil4lZYXzuyFENJV+8xdn5UZ2\ntn9KHYPAnGQ0KxHdBW9lJdBlnnfvBcX/wfRdD6zaxFbFdZupPOiACJKBxQnA\n6EEA0OyQDVO8XxvFlYuNIWK88F5QW2+Q0kdgJ/hbcEwE4JeL8YKurgnJU0lg\nDGWJUQLDc1Y3DM4zUgA6yZSvzif/KAW9i0j/Fps8JD0T8VqPL4WZOpioEulL\nfoQI\r\n=RB1a\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7730d5d27a0031679133eec169e5c5b582684220","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-20T12:32:02.783Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.4_1629462826959_0.4117145697784983","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.5-lucianbuzzo-check-patch-op-612dafea5fb6d103068c0b0f5544576cce3ed793":{"name":"@balena/jellyfish-sync","version":"6.1.5-lucianbuzzo-check-patch-op-612dafea5fb6d103068c0b0f5544576cce3ed793","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.5-lucianbuzzo-check-patch-op-612dafea5fb6d103068c0b0f5544576cce3ed793","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"acdbb5cf0345253aa4c0e1c97926e3031af15fcb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.5-lucianbuzzo-check-patch-op-612dafea5fb6d103068c0b0f5544576cce3ed793.tgz","fileCount":24,"integrity":"sha512-KSVBtlYPj/RvMySyXF1ywEeQmxtZRjSpGIoOHj1atkMg77XdI5yfyc7MfMeT63uY6RzZHyKhtLMCbCGzH5G/LQ==","signatures":[{"sig":"MEYCIQD9CO8CBDZPMLLa1YKGNpumdJvmUc0Xjrtw6wxcgu9HrgIhAL+hpezZmbBNzsRXrJ9VpktbskCEghhAqGj/MbYoOglT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH7vqCRA9TVsSAnZWagAAub4P/iGRUQG+b4SCxqQQ9MP9\ndNDAb1osJ5wYu6JvP5zZZtAo2UyWuKHtNfb6Lk8sVJdQih3YzWWyaSi1LaTt\nKZEqGUYZuNAPpfVI34894H1Rt7jdT5U7SaNlTTZUPd8dJtLL3eXGmG549GmJ\n+HHkvehBpO8WE5SFgcx0u82psQQUkKAXg+Ffpp//4G3pJHEr5SYhZdWXnX6n\nHoCK79IAIhO7Mm9tIaCLYthuqRom52bVcL+K+v9J1pt4nJec+IcqyRPwYcrq\nqTJuDOGBH0MSDc3qFNjKGSOBYLeeMmLi7u6bVnjp/XZXIygyzsEegryl4cEv\nKx4IXTkVvdWvw6ynuZv8J3JDEdx3/6gDy+8RyUQ9B40GXGCW2Rn6RyXG8vPK\n10dsaU0Ywhl1b9TU/78pNTsms2fHiFnAxePkWP0NkB8MIBxmai+CtTqGz1dq\ne84lX2xMAL6agsjnCIXAORysG4qTB3fgcAEz+335/fdLD/CS91B7n7trn8TE\nDpEvj26xow78adJyCDprbV2B5ICscCBElBjY/nKZ4ASCaM8wnq+eLkngMAmz\nMiFqaB518dhOk+InzQWtxpbp2JcrcNU44dG9ShO26sPJSQaQMDZiF4EhiyG6\nSwc7YcbYy5Sado8YwK+vr6vURDjW2tPDz8i75LmLDF8DQk27OPjhlM4Az/3+\ncZfL\r\n=Ijnr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"612dafea5fb6d103068c0b0f5544576cce3ed793","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-20T14:24:45.434Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.5-lucianbuzzo-check-patch-op-612dafea5fb6d103068c0b0f5544576cce3ed793_1629469673964_0.6545388239717986","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.5":{"name":"@balena/jellyfish-sync","version":"6.1.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87a97841e90485d7dadeaecb0f44ec8cbfcff67f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.5.tgz","fileCount":24,"integrity":"sha512-Sy6yuxTyl1pdGALhlR6QTDGjBmkKWUjUxobusmxx4PrJdOtE/nkXhvaNi7y3naSZWDGmli1eQLgVOSYhk6RdGg==","signatures":[{"sig":"MEYCIQCdCJHSq+VMiEMlS0ZGPgWPhhoX+a24rn6zI4779BgKNQIhALOhAI21hdGNEL5NYlYwp2PXL9QKdukRF93RaGopi9Ae","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":194995,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhH75GCRA9TVsSAnZWagAAcH8P/1hULmqd115QZZncCbJk\nCnqMnE3sgv6jHlM4knX/8/J/p4D2JlK2q8wPkN9gZPGoaWwiGXx26ramD91n\neoUWvxi0J5acOrG0K6l4JJvsILYHhmknw2qeZFS71z0aV/B/7Qfl/L0/qRaD\neQJJDHQXVUAUvc5qmxXb80DlPvi6mAUCTlnzhEwlNUavw9nYOFQF4/1hLEuJ\nFLr3jbFNLdqTNnTWIeM9PRi/KCx8gsieqTQ2oY144seS6Lof2eOtEEzMu6lO\nHOTwq34sp1yZeK3Kl80a3tQu+nAbMCtttgibEPltofieY1Q3UzMvSVPHdan5\nXuiEqUn96MRM1XDVZAa6PIfpxkjY4E4gnIiyoR9CLF5NIlCCYEYm2kusn6i6\nlOc8dBezlST84urQhUW3DhsTTDcg8d+h/m2eciN5qa4m/atMiW/3UtcibIoS\ndtp/dUbG9IEbxFu0eD5EGdIJVMZlM3yIoadsk66p6N7lfEHIBZAm37I07EOB\n2gHvuRTujz5+PAhvs7gfUp0VO9EpWxiqCxiko/LPgKvra6JAwiPj06C5+RVl\nXHFhJQicU+nSvL63yR3SDEfGqqZq0ch2esBF8o/RZqaMN6KanRDaDLeeRF+L\nqrPL+9GOgknJ+8vrEp6ZbjHajSY4YAeyH6FzQHU5Gly0xkj5OKIfmOZnLoby\ngP7+\r\n=EOrK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5a7bcc36787f3c0a13d3f777723df1ee89a21a8d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-20T14:35:51.768Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.45","@balena/jellyfish-metrics":"^1.0.311"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.8.7","@balena/jellyfish-config":"^1.4.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.5_1629470278475_0.5069609179515722","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.6-bump-internal-dev-caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4":{"name":"@balena/jellyfish-sync","version":"6.1.6-bump-internal-dev-caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.6-bump-internal-dev-caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b0c3540d24c219ab2239bf52cd38495ff580a73e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.6-bump-internal-dev-caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4.tgz","fileCount":24,"integrity":"sha512-8U0+KCUaivTyuQRN583gb/Ase35E/biFJrDOZ3TywAGi420cTKH8e+Zyywwml920zgQ6zVXXegv5pkifF8Gzcw==","signatures":[{"sig":"MEUCIQDsVP75lErS/KRs6ssOsxKECb1iYgc9pc3rJ9ZSnyJG3QIgE/ROZLrRGM/peaUJLbqPSPdDt4e9cOiX1bYYnnDqNwY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhI0bSCRA9TVsSAnZWagAAqMgP/0fv6IA7Sqhr2v+D13q3\nOGdiGCk+17+/ZFUYtkOEfkFPZ1nMvLYkkvTGQB3CM09n1C+FbhnMFtfN6EM4\nCsFdxqTHGZJOJa7QanGqXflyHKrEWiXkPeS+DVtc9D64D86ZKWF9n+fcRXKp\naz5LTKc48PmSwXZQuhrvlFL0fQSL8+w4Dx6vQLrjueF+FLspRbSJ8fwoX8Jm\n+xnqG8Hkq71zhXxN0XJJ1DNLa4w9lTrThsvHnP7eES1UQPLFiiGd5Pq9AQgR\nvrz1yOBQ2VBOMyab00hsbH3akHRT0wnsM/gR44BgsOYDWjCYQNUrnLY+FAHP\nCWPe+u/l1Zfh2lHZvGW9nDipJi7fiEmlpA9B1+MWdLF4ltbIfzJXp+yRR4OT\n8yEE8SHXjgvR6m1o0JXa0swHwvcQ4c5A6kB1YoJoNOWpZ6ZfybTJoiu1uBRN\niHCp68PwA1OY8W/fKf93pqIu131bVgY2UcnFKtQSI8tZ2DBIwgYi9T0CQL4e\nEUNOhV1SMdhiq8jqhGL0l8+swsud3oyM1h3kBYBBubEaB2AFugcz8kvK+QW0\nQN0KTSpDnvw/IaIq0hXq7akTEn4jaiHw5qCONeEFDAQ3ar7DLeyO3yps5XoJ\nNo7XykGR/dqkSMqn4BFws+DByDxLMXZjW9NmCo+rKRPyAHyBjfj9M1fFHF7/\nYyKR\r\n=2a1H\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-23T06:53:52.837Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.333"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.6-bump-internal-dev-caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4_1629701842339_0.7033309235106378","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.6":{"name":"@balena/jellyfish-sync","version":"6.1.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"459c0a5b78089ad13a2f287ad59402fa6c577a46","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.6.tgz","fileCount":24,"integrity":"sha512-ULIwIWg910YCgj7HkixxzI5KEz6m56/du4tQetvhlzgwRZp0mDeXaITcngiO8a/QUYhfS74EQDZUUqawD7nWOQ==","signatures":[{"sig":"MEQCIEim9KL4eZnVcq6fCteNauMFCtrK8fKajczNCvzsodasAiA1b4h10etE34S/wQXLnZBVoXI8HtAWXEO9cTAwDtQHkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhI0kaCRA9TVsSAnZWagAAqJEQAJqo9Cxo7rsK9uGRQNfK\nF4ynyW+QP8a2l+keU1ZD2vmn0BIvG599mQo5HVfZY4yIllZ/MGMIk9Gx7duu\nIDZ9vVYjDEgidfx/Al6y6ac6cc4g4ZD1ytuQtegfx70wmnSp3tVAU2SZVpH1\nd7SHXxkMntE263aplKuutikpf/MKRsawHdfTqa9KKvMxh6VFNiRKVVIczvqW\nKaOaWcUsVp28TGxUn9aOdLq4+dukM9fvjoX0ks/7IBESurAu3cCTwoMbrQmG\nhxst28IDMV4rtai3LjqLZi/TS03HA6F8jacPOgjFuDjLE4zM3ETP8AK3WT+i\ntShGpAgYKSiOot4f9AmDuOA50856GAolTA42jqMRZ6Kz+X5NE9w/Sh6OcjyO\niAIuD0daQXcAz9J3ZAvycdzcuhh/x65MAIMv0RE01DOSwuOp+0ryi18eWF1N\nFfShHVI35Z0ixb+i1lmDO7ZRycKFVzIhiciLBp8LZkYzGrDkgfqs+w3ey+/O\n88KyH6HNaUfFAymKluLwMY5ePcTz5znZAz+239cynNVfxdjgSBQK4xsCClrE\nb7QxOPzbkhsEXfXX3ssVMQLok+doscS0QMqptPnL16Ad8/F5ej0BbVrOFrab\nzELwy6wt5nmb2Lx5OUNMcQK7P1KdfD65xdMFEt1DhGP/pUnXnoZix4CvuYtm\n/FpH\r\n=0Uyr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fa538f0b6282b146562e313b9c6580662eb944dd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-23T07:05:07.955Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.62","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.333"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.1","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.6_1629702425874_0.9607286013648304","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.7-renovate-internal-patch-d989248a28dc56cf614122a825061ecc6744cc0d":{"name":"@balena/jellyfish-sync","version":"6.1.7-renovate-internal-patch-d989248a28dc56cf614122a825061ecc6744cc0d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.7-renovate-internal-patch-d989248a28dc56cf614122a825061ecc6744cc0d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9c0750b9b4809cfc25ad87ba2e4fb441368ea6d2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.7-renovate-internal-patch-d989248a28dc56cf614122a825061ecc6744cc0d.tgz","fileCount":24,"integrity":"sha512-ZoJF/wVaezKa2JTRzu9vAFMfX3OFQZKt6esUaKBQhFsrZEid5/BjlEczERQA+zL6YcjfOVlS9sCoHY+u+r8nhw==","signatures":[{"sig":"MEQCIBfQO/WLeDSr6mZn4hiZr2QvAQp3gzIgxW9uEtzfb7h7AiBqJuUFCwzsh5wqPDR3dCwNYP3ENvDnCOen9nX4N93q3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195202,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJSzxCRA9TVsSAnZWagAARE0QAJO9HBiYKjuLLqWchI5/\nDPjpFoEdvxjZwGnpnsGuOSYRT3jfcAX8/ptQFY8mkLoYwazYJc727lAjxD+h\ntBXKsh7bcJw+cxjC7wE94xkaxEkfEU94mlHIdQGc7sDrJNCZQ0LKNLvWCJcp\n16OLwHgqtICpPWxKQG7emrJvOT6PkC0OlfQyYt+SUAn4SkGeURRNuS/6Zmw8\ntIqQpbFz2Sp945CE7BKd5Vna1aTJDH6jA7LRTokJo40pBL6VMNjcpTIOkCbq\n7jxFy6UfTT4nTGXvHP/B7irCAd+/TjdgLoLlkJXh8M8C4PBkh+2vQZMnxMdj\nN6KY/r87Kh05ekinOonSIoFV9GHUvIudFofQIZ+sTaKj3Pj8hBfukpIr5Q48\nPLCK54d1NxI24TAv5WwS3PkUYUBvwJSXpBpWUG7lzBeKNYDTtjKjQhWiEu0Q\nS3WMu6HEkDqPdxh0izi4Z1ariqKIlaxctpvq0V4zE04aCivw2Cd2Sw4n9N9O\n1vy2Amua9oPEzcBpBLlrNMbUuVvxUffqG3J9vylgr9OmMVLo4VFBcKGVFhyr\nxqqNva7dBd2/NxxDVvKY63dvTK1Q1vgicIeXcNEbgHA9AYcIrgWh0/7rv+SC\ny3y0zh/3Ttrw8x5WkfbrKf0M6nclLNYJwX9YslxSk6l2vJFlkZ7C9AurcCA7\ng+Ck\r\n=uwVw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d989248a28dc56cf614122a825061ecc6744cc0d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-24T17:27:37.107Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.333"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.7-renovate-internal-patch-d989248a28dc56cf614122a825061ecc6744cc0d_1629826289367_0.8350165021992193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.7":{"name":"@balena/jellyfish-sync","version":"6.1.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e62518bac3be58e9a3d5cf8042121e0010824ee6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.7.tgz","fileCount":24,"integrity":"sha512-UXLE85Kb4/XkJqyuXq0CdMpShyNbRx6UcLFiwNVn2I/JgTGEjfwtGzOXdvhDLkaHAODwGo7j6Yneg9+hNPIiug==","signatures":[{"sig":"MEYCIQD3dRfJhlCklPlPzvz2/BxQq2UsvycPMA5Yj/gWckug4QIhAO0bw5UR2UHCcrqY7OiHyaZHRODmfI321aow80USj4rw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195137,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJS3WCRA9TVsSAnZWagAANikQAIL+vJnvVktLwt1nirTL\nxGbaZ2tqitpMnsf/CtnL6gBi70xQIw2cHNrbM0q7+WqBYHw4dEdFr2+uOmGd\n976YUSZ/t90lvB9Oxjor+IhyGxp/sFthAwulgCyDnzi9j7Alx9stLth8j7Zk\neWiwVTcAAecD/XiMYyY5oIiq4nue6UNupDvdfgnfXCXM5wHuGgjqHkZhaYbA\ndFEGzUidOC8adIM5Z+74qPSTAzl6ZT0vj6HNpFhTGmlpaV5FRZ+6E/ALZwHe\nBkTWfMImpaFshcO8mxUcmPNEhaZoNVPFB+i1WqNdynCnc39Lux3yLjLtcILJ\ng+TwU50bb3iTUlE4Xt7nmo20b5NktZkjwZOVQyUeWzRqN4rISq4mDnXe0mC1\n6qSJb2vdpjKLascZuZjcR8kRCZJIFSZKyxi9210nVb82mj7dkDxz11p994U0\nC0zLGz9DVU5NJgiG9vo2VJ6nPEk6RQAaCPZNvx5sXfja7HyuIBJf8uFDTsQl\n1NmICMB1N5wX5QrF55XAvCw43IwqCu8Ii6xY6b1D5X9TwU3bZnkuFSDWzEvM\navWX0+EC9xKB8VVo2wFlI3ISA4wjl0VzsNGGxuWhsAnW8e0hJgHtjGF8uwic\nAcnjMxPYO2wkptGwIuhBh6unnVukxTxUWisA02E96TebzEVUpK/HF+SXcZPx\nWf/i\r\n=cYA8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b60b1d434caf7e86ed0ee5983fedcb915317806d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-24T17:33:03.136Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.333"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.7_1629826518431_0.49712087922225434","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.8-renovate-internal-patch-04dca1e061eec5ee183560049b8a64fbe3c72090":{"name":"@balena/jellyfish-sync","version":"6.1.8-renovate-internal-patch-04dca1e061eec5ee183560049b8a64fbe3c72090","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.8-renovate-internal-patch-04dca1e061eec5ee183560049b8a64fbe3c72090","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b7da0bd5a40608266befc941cae5fa28c8ab0b6c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.8-renovate-internal-patch-04dca1e061eec5ee183560049b8a64fbe3c72090.tgz","fileCount":24,"integrity":"sha512-lPqArU+ePqaIAL+cQu72RRzAHnAfNJohaPtAlwB34mGcGEp3q4+soA/D9fIE8uu1Da6QL2e62s0+UVL3U2K/0Q==","signatures":[{"sig":"MEQCIDzoMXZb7ibXFBhIzuw3YHY0fPP2/SQunxEthj0vRae2AiBh+pt0VQ9/deiFlIg94Z4Sv9fLE/u8L6VEieE+T51gNg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJjkiCRA9TVsSAnZWagAAMCAQAIaUV7DvxX7v9/tEJiA7\nlJFvG8eMV2dexwS+o4puzvS72jpW2dHtREvXesTumhGlFTTSmWmJKuMwmsAM\nK030xL7Tc+m6C0dMzFi+WgsL5ghKr+QDkuE9Xm4YQGtP6qWeQqbKoL+8pJH4\nced0rtmVwEv9fq06OqzBwW3O5Pev1cc7me7GB6jjKM2gMAS5fzal0X+IY7oK\nup0AsaE1yFzCEUz6j3OGfY5lUEiJ4Jv1iQO9PGe7wunBW0B1OrlzKSZ4aexr\npKPCXTlZ0yT0c2a2GhVktugK1wVocmxdaxts4a3jVGhDHtkl6tEIRtsX5j/0\nMjf/jmhNXvnZ1a7OIv5Q8nxg9LfQDs5UNAEB8U1XphwO9q2SypSwFJQoObbl\ngyfFv8eOUK4JxcshgoLMGlpBHp1uqk6ANDQHbQXvDa6/fqzFwER326WfMZtZ\nSDTPh5T1BS9aqcFAHFaydOQtOrENr0EgTHsCWNgXQ7uEQwSRc8568q2VJdpN\nDNIU7BSfZpUKEschc3Js+ulT+s24zBB56/wl/FnhWGWvNTM9iWAHBJ57XJI4\nBIv/e95kXaerrkLiDl4tpV1PHiv0SWsdh5x39GvAQd4veK2YIYnCb4IAg2bW\nw86KMOiOYRxFL+R5sXCSaZvbJqfK87Naa+3+7k71GEk539ptee67NdodifTO\nXME2\r\n=NfM0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"04dca1e061eec5ee183560049b8a64fbe3c72090","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-25T12:31:33.466Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.336"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.8-renovate-internal-patch-04dca1e061eec5ee183560049b8a64fbe3c72090_1629894946129_0.8316877443295434","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.8":{"name":"@balena/jellyfish-sync","version":"6.1.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b318e2ebdfaa6327a342ba1828d8b788b214122c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.8.tgz","fileCount":24,"integrity":"sha512-E3mqZWkSd+eO1RuEcoBM2HzkvvhtIu+PznWwQxD9Wm4rmx/1YjOJ4o1k21qqkyfd5fhbdRcDgaLC/wFhMdQtGw==","signatures":[{"sig":"MEYCIQDsFse9Vd3VBCa6S/cp4jeP6yVc3iNkuMn+rgjH1BqXTgIhAMdkZAaL/CK3Ss7Xf5BqsKYEJQue9Eygvte+8fYwYdkV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJjn8CRA9TVsSAnZWagAA8aEQAI+rfRPK0QyyvQbT19De\n8sr4X0mGvBv2VXCBLQT6miBHFDxuYdH5x/Cy/0f9moY65zU8jd1aC5ckqRKw\nlmX/Bq2fEHc1uDHbEgkynIj3JgxPXjMJ/vUbw1D07YOqgKFPUWlG9uJt0/2U\nQwx/W9XWwXs3mgeBAwqsVNHEReKLaPChgQ8fRge1I9T8YN/p4naf9rUud9V8\nXuMyDbNqs2rRWHkj/18ijjK7/gPWmh13xp4/juKvViyxS6FgTmOYsB+U3mbR\n7P/r9EIew1QBsFMvjTbmjAqFzqqRFZw65tNOOWpFSuk6SFyHJyrIRmGTwISs\n0kuDdfP+hxEQnaxjC46zBeZCRLtu/s+ddePdsI8mWDWBIqH6KUkrnlRK1aqj\n94FrEBjMMYTagqOhafD/pgl6aE3VZxZnIzUcbS7YP+r1liklBsdj24lmaqcD\nCsKY/aWWWyDyU7nmH5S3Rwxt9HwUX05G4ETOuRGCEYo0SVQ4cu78Afq/v/MS\nZEWzI3TY7MaEu3CjZ8e52khqtgyJjxRFkMklYMA+tkEPI4DL80pxsJO7XXUh\nYCeVrq0BXbS2H+EoZWrm8urcUBXzL42Lni3YYXEmL7MbtUU935mSEFJ0MSM2\nOIPtRyBqabnj29gOUgGcVL5SdFk6V3zGv/OROouFT3879kita5zq3jMHdQBE\n8qqW\r\n=jZBJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6a73a59c49241f7115b60bb8b6450d3d627a7961","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-25T12:37:32.385Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.336"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.0.6","nock":"^13.1.1","uuid":"^8.3.2","sinon":"^11.1.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.3","typedoc":"^0.21.2","depcheck":"^1.4.2","typescript":"^4.3.5","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.0.0","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.6","@types/bluebird":"^3.5.36","fast-json-patch":"^3.0.0-1","simple-git-hooks":"^2.5.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.8","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.8_1629895164472_0.4174744088272935","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.9-renovate-external-non-major-05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9":{"name":"@balena/jellyfish-sync","version":"6.1.9-renovate-external-non-major-05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.9-renovate-external-non-major-05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"00cc481f9c4b59ae2e17e9d244d43ed88dd98916","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.9-renovate-external-non-major-05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9.tgz","fileCount":24,"integrity":"sha512-Ba5ULzLRqlqtwzDgymio9KkRIv3jklfG8+h+0b5eK6wfCBVEUdFCGKnKUTrNKx0JHGUpJVGE+W0YXBc8qPHjSg==","signatures":[{"sig":"MEUCIQC2kyz7NcJtdSigc0Hgg06Xv4lBS70+gRnhbpRis4fpdwIgQr0njo1ZLS9pHeVvieiskkvuvPCqLwx/KI9G8uOvTtM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKuUJCRA9TVsSAnZWagAA+l4P/0x0ON51LDG2/cq8dnoK\nyRvVJe37RvagUR7vkKrCkV10NqBlQaQnGyR8dl1DekQx71t9sKABk5Tm+vxE\nzYarlUzRIP7S6HBmOB00Enf5+aPGdShKddH5MMEb3Ek3HWjp2TWf9zQXROmb\naye0k3Ng6MlN9ZNiP/smjkx9rb3D3eIHUJKn0n7B2IpnghoorCQtwFCT7stL\nFK/+xm4LvoChrZRAfqGddLNCqddvAPE3ReOW23GWAbFbI+3nFXPDWtOk4LQ1\nuFUmilht6Y83A5qBiAAkBN0DjsHzX48HI/ESzYu4c0eXwJoa/FfCW4sOWUKj\njT7ZwbFza6opIv0XJR3uE+EYLYCo1WIdc7OIYA9AOu8TjBWOKXA4YkkLwtuZ\nagDjotTQ+IxTFZHlYzKtpYDZAR3PL789SBM0u/ORYraJUrelpH5E+ZFheKvA\nK6KB+VNpdqhArCLTtPZFeJ95to4RCGH0nmRLJnir39vavSQofbynZmUZJU9D\n+1kRq7P2zp6fEG/UJucJsVdQqR9SrB/BoYtQeuqO5CDRc9EqaEn/bzevdqHe\nOchxaR0q0Irsnfe++ypphOiplZLFyM/IoruNpSq8asimXWgRPF5siMz+abWb\nGhhdreRvnpcr6v+CnGXtIeu1f9TM+doayZknv3bxoXsQrbNf/p/9AjMPb69U\nL3/M\r\n=wOyM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T01:35:02.875Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.336"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.9-renovate-external-non-major-05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9_1630201097147_0.9289878539780128","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.9":{"name":"@balena/jellyfish-sync","version":"6.1.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a683f0f1a9ff4858b9306f377d586464e40a051","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.9.tgz","fileCount":24,"integrity":"sha512-wmtoy897CFzneSGLEPBAkYz/ecPf0HnQs/YR6T4j5dMo+j9fYJ20Vy54AvFYOkOJ8cHXI+KrDjxCp1hYRlG8Rg==","signatures":[{"sig":"MEQCIHTqDix6rxBW7PjbRiW1BeHllYbHjH/k7HhKTu1mntOLAiBadbLi1fkeXWZMpAqwDq7QTOPPo1F02wkbEZdwWBFnlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKuXTCRA9TVsSAnZWagAAkewP/j1UnrbxE/jEyilVtU3m\nQ6spImGBn8HGKe8XRLkQe1hIHHDyuKN+wr2E0mS0NQvhAgob8vquaot+HfLo\nM33ItKisacEJSBpdddd/rIxccoiGNJeu8X9PJyQs06JZr2rOTcL2Xrc/uKgr\nN5/rMVjJ8q85vSjOmVxvjobrsfgdl3bqJeOM4a3LDZz+TluVi8EodDBE4LA1\n+OWj+67JYeNkpaQj9Y8Ir7cfO1qiakaeeC6EQbu+TCo1xzoEW0AqETBlv08T\n6FvmmsvSIYYWLg5K0Ny1UGr40UBxm+bGjefSqWoXlT5clQwFJH3trN6BK7LJ\ngYiu7szKQY5CXilx6Ds9CIfkdGQGYvXNw76yT0BxJmhiTcO80z3L10VwEo0c\nVbl+8yyfSNXarF0SE/nxkhU7HapIN/NiOrdn48yeGsB3zA9ljz8THX6qKaUg\nBxH91irvSmjmSaqm7WjYq+4ggn75DD5SX6ERwh04gh7tycocPpxR0T/opMIZ\nULM5vSygb3o6nohK5AItJs9IVuuBTuJDgx7cMadle7CgOlvkGVWFcltwtroA\nTO36k0N4GtdGLiuH7pKIcNMRBhXFyQAi8OTzdcI43yEp5AuexVxOOFERGUQY\nMzVpHWKfAezA8XjqBXpnx8pwechPk5+921ASo/wmtIkNWDdQOh+gXTzV8HH8\nS0uJ\r\n=vEiY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6295e4db37156d642bd4119f67ae6f512821c571","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T01:39:32.313Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.336"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^26.0.24","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.9_1630201298907_0.5585769704617369","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.10-renovate-major-external-major-ad191925d3884713aa167c96bdb9ff0e764fbc93":{"name":"@balena/jellyfish-sync","version":"6.1.10-renovate-major-external-major-ad191925d3884713aa167c96bdb9ff0e764fbc93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.10-renovate-major-external-major-ad191925d3884713aa167c96bdb9ff0e764fbc93","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2af13cdea33da47100e791a4d8dfde547ab67f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.10-renovate-major-external-major-ad191925d3884713aa167c96bdb9ff0e764fbc93.tgz","fileCount":24,"integrity":"sha512-OclCCtAIok2xdNBdAHjlwqs+DgGzmAuAoSJErl6ecLSfaFv6GVLOmJmzGsaN3BRNF2VG+WmYH+qznzRP0AapOQ==","signatures":[{"sig":"MEYCIQC4lzGoIjaFJsnwZ6Y5tmbMEse5793EBvfYIY1xoigaRwIhANkdq5khb/aQ0du2gSpHW91ScUwo9+oWAUqtuxkRQsB6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKuuBCRA9TVsSAnZWagAAz0sP/A0f3Smap6DJM8X3u9fb\n+2CpPo7QgutFY22+DqOZRBrHIpidcS0Mqi/CYEGNEmx0iiGVtGbemHqCBEZx\n+K1X50ynfj+/nr8oLWdCzaQnGibyFyQmgeR4VN9uFa+hBUE8u9VxlyTl3lwD\nBTP21tQmgoQy9FzIPPUoGuUgqDEQgZ5gqoVymd7ExNvdCv/rTknT9l7tlwP4\njX67KpBHzJubtHm4Dh9FwsAF9gFNjFdQZ9gEOYuV+JQXQUBMjpEVZeO2ZQgZ\nOt+EoEwk+B5qVwlsaW5GWvxdXS3h56ao1iYN5yY8l1aiVBDmSBYRCzFq/I7y\nKTIKqXLlTm5Y+EmN9/0HFffX9yz8pGDM7XoSIApxyUKTr8NggvGtIWX5ClnU\nMCrfpllT3ahgKu2VKEeqM0wBEa2AqE4LFp34YxoZKXPXwA8l0XhwRoZ/3Pz2\nhJlEaJDD3i5nCgHl4upN3GOXOvJkbzXQvGQ7neA+NKRlCYhsIAq2/OtWyaaB\nonGrJq9yJhXiFR8Thh8O2mVjx6hZSMbLU5MLoH9pR5rHrwciTgY4Di6Ikzk7\n0lA5Bbn6svhOEllN8D57g7mVsaAzoLRwrRmgF480LRIYXbuZKbHRfkTRHQ0y\n+0RzwM/s1rhTMGZPZit4Uyt05Xqq0fx4fSgmrl8D/aVtvqFmVtdZbMZLhFhY\npFUV\r\n=ADhZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ad191925d3884713aa167c96bdb9ff0e764fbc93","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T02:02:41.781Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.336"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.10-renovate-major-external-major-ad191925d3884713aa167c96bdb9ff0e764fbc93_1630202753089_0.15538910524752203","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.10":{"name":"@balena/jellyfish-sync","version":"6.1.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"54b8c23a73958722237b1a31152363166b101f1a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.10.tgz","fileCount":24,"integrity":"sha512-dCHOAZqWBz2XvZ8vETzUmYsG4QwsEDrUoMbsyfM4/U897/qsNSghpRpz34Sdb2654Vmxa15LMyZiZcDSrkzXdg==","signatures":[{"sig":"MEUCIGCcm/cLGXmKSe4qzln8nqxf2pGs4IJVUQkYDtSBQK5UAiEAyoOfG+vemald6IYYz2ETM7MQGNnfSRUOSdE0WS/ngMc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195522,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKuxpCRA9TVsSAnZWagAAteoP/jBVFB2F8LvsWdCQELVD\ntp+LZT1Q2Kf6kUJXsvEuJYaZJ/DTm3g2nqfxxtsQ/v+7r9VBUpK7CWnjmiHj\n6zvZWy+miSPr2nNRHw8pjTSbQtnm7cAKFW8FK/BXRHu2aMmWvIep7I2A4XY8\neBZqaIqF2L9mqmC6hDY9PUMTbkZZlPnm4E9RKmT0SaDTzrmvL3h2A00VCt0t\nbEXafgxz8BW53ItWIcRbseXvpY/DbBnu4dVODyoFe6xGVN5QTTx4ULuovU84\nYmN5tutAoM5s376XO1yMf0zbZgemBPEVXj++wnRK2MZKisv1Em4cv0MG+YNH\nxxqGI1zf4oCDPnTVyjp+uUa92cIwvHJLLW32LuzfLYwUeqWQHGV9dTKrikG3\n5DssdhAHzgNvyF/sAZSu5GV0FSNPljFnCTdhdR1RmSQ/oZo93IwSvAIaCJXp\nMcnZDrUf+HSqiqRz10bpvBwNMdL8yCZWJViL0kc0l81BC3jhbyp7CtWkV8Vd\n64B2ccLv2PNVn1xBUIg6hxBA82yntGPRe0K9ne0892B9Vyg6vAtEgYe20Rzp\ndeOv9TuwfPRVuEwL0yNbggl70wdIz0y3WKG2NNBPqFgeNvcbBDxYMByMTdgf\nvIioOiz+RVB1QlgPWfv71PkgCFTYnso6rAJxs9BFM2ODsedIzuKM0txjYnkY\neIAs\r\n=7fE/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"184dba2df7f0153cb8da664ab586e3571ece814f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T02:07:51.916Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.64","@balena/jellyfish-metrics":"^1.0.336"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.10_1630202985132_0.633580025868568","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.11-renovate-internal-patch-5aec53f456957fec95a4883453fc17b40f42efee":{"name":"@balena/jellyfish-sync","version":"6.1.11-renovate-internal-patch-5aec53f456957fec95a4883453fc17b40f42efee","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.11-renovate-internal-patch-5aec53f456957fec95a4883453fc17b40f42efee","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b6fdca0dc6f796a3f4823ea9306580d47786e16","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.11-renovate-internal-patch-5aec53f456957fec95a4883453fc17b40f42efee.tgz","fileCount":24,"integrity":"sha512-s8DugTAA8/i+obvgOi1x/xiJEgkVJBJ52u1mcUblAj9Hxz5te/pZHsjk94BLcLwbawb6q1fuVYZNg6bhW0xeBA==","signatures":[{"sig":"MEUCIBmIyxwZ7ZNN6YuedFMdPTz4iv7jOkqXb6XhiFubLXR0AiEA0ox3S5IVTMnadjVh2CRAkclg5nEGkMhAyYVbPpU1J0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKu2WCRA9TVsSAnZWagAAdfQQAISqx4vBsG1lpmuW+ZQl\nS3L9OFqXuhqqtznfUx2USzgkutWCR38U/U/ZBblWdFiRUVUXLCMFurBeJGxT\nvdvzYxP9o68TbeMHwg3TVbe79OI62AJPWB70EJX0US/DPIjoOShrFVXuRjUn\naxt8b71lEU6MLYCiU33SXgFFuJRilj5Wd4re2Az+8qTqCz2QIi+05I74myLa\nTp+XEdytU7ln91wUDvpxc4wdsykJNs0qw0S/ZQCqjIhT3MG5eCYBXaqgK97x\n4SZ6fZEwgD1i+XaskBXSkUJ1rzaCTp1Tp6yY16NAntXbADzWFAz8mYbA68M7\nOTNIUJSFFXdtXnNmeIa0zcU1onSpmUq+VcsIu+1cm38HgwrH0N53QTGtx57+\noq107FxJzn471H7naBOV+U1cdMPIiFSR1YpRGZIpnq56xX7SRX7JHk3Rp4pN\nDhRwXmyxeP53veZXBe4BIidmbAvbEQodAqxogtYYWl8MYB8OQbvhMbAGAR2H\n0eqaHrJiRGMKw3hRf7hJ6ZMqq7IVtKqdy91BoNmmbaZ9gc7zJQ1qjkXIQC6Y\nx88Fccsk2lDAV/HGDCRms1YGER+PjP0RDywaDDfnp/tSNQgOczj33N6BblmR\n1NWj+OkYZvBX1rA/AQroB6mc0AH7p8s67ZS89JL2Z5+LlUjBEWZM1T8X1gni\nnoOI\r\n=97LT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5aec53f456957fec95a4883453fc17b40f42efee","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T02:12:02.367Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.337"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.11-renovate-internal-patch-5aec53f456957fec95a4883453fc17b40f42efee_1630203286044_0.24358655100542137","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.11":{"name":"@balena/jellyfish-sync","version":"6.1.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f577fa1145978cfc781bbec4931371d045114ccb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.11.tgz","fileCount":24,"integrity":"sha512-1cEAQgFyFxLBDDuKZYaV77u5EFxvMKkcyv4M45t7GykdUt5qpFaP8NCMo4tlg7NMngQqICceOGBxdLAhKHOhkg==","signatures":[{"sig":"MEQCIGt95T8bSSfKqFbUxjxY3MM8BHe3VkYOc9lQCFArl9uaAiBbDiDIqpNHHyU+NIspG4KQ9Xben+VeRmo2SYDqJELHWQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195593,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKu5wCRA9TVsSAnZWagAAd+IP/0tJ1Kct+pcuBfxA0ZC9\nzQ2YuKMrqR6J9KcNlD8fQxK/dO23cIVcd7IQKMYzr9U6X3BfWF7khX8snq8Q\nm0Yen/EseZNx00InLPi//HmvrtlWw99DVsIBTRNAE+BQCDbwyJlPAN8qcimc\nWpZ6jk2G2F3rUiCSyjmRJ9Jx61oPz9/PUVMH8/p48xwIWSSDCDBckE8jhAfY\n9hy58c2C1q8x9rEXs80PM+2haNbF4myp31SimRYJikHXMGpBDQZb0wFc41VP\ngBrziTPxYxZSSgiEPRyGz8eHLGlmhBjtd972QQL88C065mXd3vRKOTorddRM\nHCAJYBihtBTuTjsoN4pLdQGRcGm12t85KXtlPAhC8RdhdEBTzZhya7mF0adI\nMVyBiKOBwT8JylKdnZpB/bOCJL8UPni3Di1yHDZ8cFeaCJBBitSYADohHcAm\njcgfNQ09hRCukdtigb8QuDhk2Xn07Mes2ti2r/yOfoPxpnab1SsfAtL5Cy1j\nwLKTPIw7CSDlghR3cn5efPtSB3mQTwMIKHVSgdn+DWIW5vkOxP9mRZvSLgpx\nZtWXIkiULHBVVOCcWZi8moJZBody++xZi5S62+qBEwmNOGCG711jb1MCtJev\nD8ZtP3oIeweUDLXS8p8IacUxEhT0/E/mK/TrTeKKF5nUEUxeAKU507YiRDRX\nNLAB\r\n=NNba\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e4fd0a98b39a60d9cd824c04fcd22b64d740eadc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T02:16:42.031Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.337"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.11_1630203504739_0.12118762077075562","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.12-renovate-internal-patch-39d171332f5d5dd3fdba3ca3e6eee8542ee12357":{"name":"@balena/jellyfish-sync","version":"6.1.12-renovate-internal-patch-39d171332f5d5dd3fdba3ca3e6eee8542ee12357","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.12-renovate-internal-patch-39d171332f5d5dd3fdba3ca3e6eee8542ee12357","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4b0d4aae5d337cfe2cd34ed167a9bb36bd967b64","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.12-renovate-internal-patch-39d171332f5d5dd3fdba3ca3e6eee8542ee12357.tgz","fileCount":24,"integrity":"sha512-kddzVUc+a/xU+dmq+xS930O+ucFk/9/bqAq1ulGz+CSeg1yqJys+a7EbpSzsJTYqYmBVNdfEBfo8BXeDPplJ5w==","signatures":[{"sig":"MEQCICk2phyaoiHA94soJCt37nyVvqY7ZsoI543+GKAlflWsAiAmfpQeduXSU0njOy7ZeiwqSeXsrbxCEl/bWvZgP64fVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhK70+CRA9TVsSAnZWagAAidAP/01YTUskS+MfJESCIBFX\n8pCwKMzZAzOKwy/K4OenwdyBqVDIsfYdPkoMTojxBwJLVyfTTkw6dKJr1wc7\nzIUO18x7a/nzfWq0GNVMcWjVzaTQ+n0pNFE2NAisej0KuZo1blk+/UEoHmkP\nqHBMiI+kzupjEUxUDBVWje6HEjKm/+iQa9tN2TE1T5C1e7F8h+G0vwTMmrAO\n4D9qXiJ1PffVAkCodAP9P1iM5SNYvtkjpS2EPAJsnpbJ+l2c79YMUTNu7bEM\ndDAd8/xHRnmeuB/NZfL9QA1Nw3+sovWbjmzuya1YD2tJjilS+Z3WyqxWCpc6\n0Kyty0mITJiPNSDbCSlDfe9u9YZSiCRm+75582KfqIF+/MwrSgEVbXbRxjjw\nswMSGhh92R4U+NvHmGJ2ENubnS+pVtHv8omkt2fdzhY5lCwq3LnB3Jpth0Qi\n1+rBvJH8XLme0CecbaHItokb+iNXV5A5jjMo8Gl9RpvFHerxroq5fzu2P0/X\nItCfHLs+1OUMjZtviJ5HQL3sQ/g63Ss6W3zDRgeoAg3KcfcxXg6TGbgKg6iT\n2FPB2Hm53RHDNicWKRnkisq4qMNj79/gVTOSrFnwDcEPkhSJJTVYVn+moMqF\nt1gXvMucdJI1/Rk6tUls5XyTuXhXhdM3HRcEJn4QnAhQH7+UOlWnbY+BXsLv\nNR/o\r\n=tZGU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"39d171332f5d5dd3fdba3ca3e6eee8542ee12357","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T16:57:22.473Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.340"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.12-renovate-internal-patch-39d171332f5d5dd3fdba3ca3e6eee8542ee12357_1630256445895_0.8838160441320486","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.12-renovate-external-non-major-f09de48617d4532f0f5e9cd283ef4d589450785b":{"name":"@balena/jellyfish-sync","version":"6.1.12-renovate-external-non-major-f09de48617d4532f0f5e9cd283ef4d589450785b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.12-renovate-external-non-major-f09de48617d4532f0f5e9cd283ef4d589450785b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aec94df66e7e93ac99c3d0c79e889b5e5742b3ff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.12-renovate-external-non-major-f09de48617d4532f0f5e9cd283ef4d589450785b.tgz","fileCount":24,"integrity":"sha512-IRpVGl+O1pm6YyEiLfDJsDx4mZsEIlqXj/r9dXBDV9Xf3T88H/Jk587y6b6eL8sYyUyz+PoaM/8lcbDZn1Q/mw==","signatures":[{"sig":"MEUCIQDPP+dmhdHFV4hMST+3aQQ4UVcdJkwCP2NUxe0HTiQkDQIgc+bmZMAFYJqYmHpd7Jxar0yorI/EQP0pOwECYENGQ3Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195748,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhK72XCRA9TVsSAnZWagAA0jEP/2i2wgvit/ICetYjthZr\ndIJZB+XhDlADxssHkof76ZyrG+8qVVAg+xttHK5sYlMtdNRybfXnEgEnejim\n1K3Pm+moNMSVMmL/d2oj866BHmm5ykrgt1TNHlHpHlIjFsF04VNknhoFdXOc\nRMEH8ud/vKXRVjafzZ+dACnZZoNM4j2sxEJhkx6Y/Z0w0IcZcUQNhBsV18Za\nEyOyQoaVazZdOnLc3rOriKF36VCP/2KzTvwDoMP00lPTUuFm+cnp8TSBCdy1\nRR6EO5WOAjy+FBeaUGT4BupQaqzQMSPbZpPATuJ4/WfE8vycd4tMRNiKCtbZ\nZSMyxXeYbIiWWmui42I2iifq4sMNJOK264a1QfNuZui9wwndeaYRG7QgMpef\n+hJ3cesS+9grqbBaBvhd/TSlWx/gO1Gr77tcjlBZlLX6zt1bXjGMVveMDAb4\nZ3wpBb8GOYYbKFQcv4QXHT6cTK3ENOmnhEAaru+qDQpLf3qiDuBb+qPHsdoc\nj/3CxAoR82IokYl1sxpvhYLb+l3J3FJG4Welmt7FDiXDQ6GQZA1Vb15O7smh\n+fzFPtSh80DzoxukbbLLwCzn3TGNY6t0xr9AqwELtbB+EzAkQhxx+h2pxC1M\nQ2OWh3JBswGOY6ZbDiT4EEm30JKdZz8Tj1xXOTH1agyx7gffXtD5tJD/mhn6\njqvw\r\n=EEOW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f09de48617d4532f0f5e9cd283ef4d589450785b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T16:58:32.997Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.337"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.12-renovate-external-non-major-f09de48617d4532f0f5e9cd283ef4d589450785b_1630256534580_0.45942369699790553","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.12":{"name":"@balena/jellyfish-sync","version":"6.1.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"086eb4d60ebe5c31bebf78df825af7dde55b026c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.12.tgz","fileCount":24,"integrity":"sha512-EwagpcfWrm6AKqgut8EiDTWDvd7iNcZHXs8U6rGtuntldlDzp/HkCthKaZCQb9lpOURy1x/XsAXk4n4QLNx03g==","signatures":[{"sig":"MEUCIQCS2jZyQHGUYoG5T3/55Zt7oBKdmwAB5bSHCCqOk6v6mwIgZzs3ewpRHQT8UzwTRrXiJ62/l9CHgmqvWWJoqXbaUh4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195698,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhK74aCRA9TVsSAnZWagAA8UAP/0jzkQ35TspI02WgSxZJ\nwFMiWABD5Sp9nGweoArSSjjanHeI9T0xHVlIuTCmj8cpuL3DgPiUf/o7eDsh\nESYgHIX5nDV9T2Bnk1p8dDmO54EQWLh3aOe9CgjN/kpnQUFcNAmMWP6zj//C\nY695XULQqWb3SUV0oz8P78d2lyFilqijb+VXFWjjcyDXr/UrvQzxZq2nsVSq\n1qN+wGMxe/rrfM2ODPp9uefhN5jpFftsCTzSlPwgGJYmbhEz6UbqJjAVwGk0\nkXGZCDgHLT9QRs46pxDDM1u/mzJiRYEHIu0vGe4aXlKt1fBThTuJrJPI5SrZ\nIM9WKOv22V6ktTncW8m1DM+a44+8edm/AR9+LS5ndKlgSi+/X8vBtAIZAM6f\nppxSQ9AP2szoKcdBQpTFRIySEvfQDZdogeSJs7Jlq/AmDc31B3IbPzKDQ7e/\nvMNeBB84rBsdiwOyikD43TSepCPMmIZw+5V3sMRsc5CB76zicJfSn3osreLP\nHSxhP4bKAsuLbSNNZU4a211tKLSbjklMh/xYzQErxWDtCCe6/yekawSP0P1x\nsYEw1HRVoBnj+Hv/bTiazslmnvXkIkuWoi6g4WZmeuoTOovmvFc4rEEk74BB\nLjYIlpeNxKxmiv88pgWl28TwAPcxjnkFAj8kHEf8nUhQxekCsXTCKwax4FE8\ntFf5\r\n=TmZp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ab1bde9910be5d493c861d36772bb9f988756fda","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T17:02:11.740Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.340"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.7","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.12_1630256666366_0.3975214080428673","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.13-renovate-external-non-major-251ae101a4b3a2c7361d502db70aaf78861b167a":{"name":"@balena/jellyfish-sync","version":"6.1.13-renovate-external-non-major-251ae101a4b3a2c7361d502db70aaf78861b167a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.13-renovate-external-non-major-251ae101a4b3a2c7361d502db70aaf78861b167a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"176c2dc94ab5f31e4fc6d5b38ab1638176fd4a71","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.13-renovate-external-non-major-251ae101a4b3a2c7361d502db70aaf78861b167a.tgz","fileCount":24,"integrity":"sha512-xZozTJ3nokiXl2y1v/kdmBQVRCE/86mvi2NToCpQmc5f91monPQLXBdRW3spmFIwfBBIKxbp89w2XgSH/nu1hw==","signatures":[{"sig":"MEUCIQCOwF2F1QJWvDZgEPfjx3gE0n8a2BWpQ2PLVE75+krxygIgIp7/w71fxFQfnrdj+n23DK1VBHa3dx2Fm2f8acDwIlM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhK78WCRA9TVsSAnZWagAAfdYP/itd/z/UlyPh49SsHpEq\nZXpLHmdmi/vIR7FIAipFW4UVu4pJl3Rp/bqW/zMgutY8Rp4wLxyiMcAuc4pK\noWzvT1lsjF4mHcmwxBedABs2E3H5y2qE+ys3T9BoWvEFqGSXpUxWZJp7jIj4\nrmX9cuMbv2p5PfVhpN5ez1RLCltNBIo4wAPgpxZBGqque72myeGjx2WNLEiV\nOjts/BZbWhSwvRkjrYCqM6y1EfDwNukcqx6Zz+ji5xu7H3CemgDWEQz0LMQB\nIOUcfXOFSBe8LXe617P3cWdXy0Lv0kgSqqeWyEND0UF/a3iflInqypkNzhXw\nxjLlYZ58qsOBk0sBo/9F47Rx7nCkxS3GlExWM5ZcL+fzZvzbyEz1JtnOgp1q\nUH9dst2taxaxKhAnt8GTWiZGzLE6X3g7rIZknmO9x6mcoh8SlwppAlrajAuV\nPGP5S4QEW5sUFwPQIW6BzJ1CHZ3veGgHx1Q6zghnHJW4gNLOV3EYUIxtIy9p\nI5r6hXVZRkpFdRlcno/RgJwZMSvDdyXbhD4YRDILza6YnSkrbKirYyZbiir/\nn502FIoelozdCMMo6HdFRhK9w2gffloNWKzxFgypQM7J1WidSAb9nnowybL5\nQ39dBhBYowAD+0K51ojA0TZQ9Cmi39tWIoYG7DfE6DLRU+o4zFMsmfXZStkz\nMVtl\r\n=PI1Z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"251ae101a4b3a2c7361d502db70aaf78861b167a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T17:05:22.560Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.340"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.13-renovate-external-non-major-251ae101a4b3a2c7361d502db70aaf78861b167a_1630256918367_0.506780739506028","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.13":{"name":"@balena/jellyfish-sync","version":"6.1.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"98690c177f4caacaa02157b6e2be80747442318c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.13.tgz","fileCount":24,"integrity":"sha512-cTkxOcFtbHiZOnEBGywPN3yb65J70danADR8IiIrkh523aeNoFeVRethoYTqv1kdGaS1wMSbGvxmZwI3SvVWEg==","signatures":[{"sig":"MEUCIEkyhWCJ/v88praDDhgT/DcfmW2jp66OVwjh7QdA/hAPAiEA5jbHG0iVaaKmQq/K9/XmKG5m2P1b2/1POHeW+c3q2e8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhK8BzCRA9TVsSAnZWagAAv8cP/3oYcovs9x1A1/ABG+FL\neRQz418eo5wGNMB4uKmNdUIypBxhpZy3v6vros/iVMsIUL7veKfH2zx1Co2I\nCnkJFueHvbDsAmRNBjuoXVRigfzPP+hROKiZ+d+zUVIuOrj3ppSBz1pDpNrM\n0OgnqUwIRnUW3Y24voP9ptu1k18wqQxe5Go4outULQi4p66pTwGXz1wJiqjx\n+9gQ5FD6TFOOtfEsWEbKmJz3eNKNGeQz9dV1+kZuVG42XYSs+Mk/LMJovAzw\nhqicEPf5e7YUElj91+k0BNXAvx2Mxj/qARaAGkAP+1coygBVOD7IcvyBum7x\nlqMdxgmfkfJfoGwCXXIv2ODX8uBQw6ZqCR8wTYRS79UoqdlmG8giV3xA+p4c\n6j1jW1/LJboshLehLBz/hSd+a2EygzfpCW7C1qTBZPD1MICY7X+kfUFOmmSt\nqF28S4vYeEKhBBL0u6MgDiKNYL/Hi3kPq9ocIPHllM2ZMl98eKXT+sz7zb7P\nxB40LaSUAGzk6cnF0PFlf6MUwzYcH2qmnKnylsOSRgutaJtzvPLFP4RVUkNl\nQAUBc12QA0HfK4g1qpmsXkq/1/TdLbQKCiHK/W5OW+q1mTwVK3OyyzJ/Ssx9\n0Qrmi2SAbVm96VQg7nJobS8E8w33oNbvjA9r2ZsAl0RVdz11egPDWUhFmHWY\n3uVl\r\n=I5fg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"35b75cdc4fdc9e67eab54ea8d2a813302a9b49da","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-29T17:12:33.356Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.65","@balena/jellyfish-metrics":"^1.0.340"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.13_1630257267632_0.21890655900843092","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.14-renovate-internal-patch-5f14a42954d45face13474cc99910239d9b6bcf0":{"name":"@balena/jellyfish-sync","version":"6.1.14-renovate-internal-patch-5f14a42954d45face13474cc99910239d9b6bcf0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.14-renovate-internal-patch-5f14a42954d45face13474cc99910239d9b6bcf0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b7ed67ee81e8ec1c0a8cc41ea33fa73ea16f7c3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.14-renovate-internal-patch-5f14a42954d45face13474cc99910239d9b6bcf0.tgz","fileCount":24,"integrity":"sha512-/P1bvYpa9Mqvo3TacnQz6Axd2/RMJBwEzYSUY1tRWfk0a686YQ+L30HcziAneTDGS5ijgQm3WNtzWtfQjr1cNQ==","signatures":[{"sig":"MEUCIQD/BR5IaKo3HuLTM0FtG6pf1tI84tksCECvjHgx0ZOTnQIgcwScPOTakFFWqZMvaIJ0a9lDX8W5lILNiInEFoKCOIw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195952,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLKmXCRA9TVsSAnZWagAA8q0P/1WnIcmzljdGx3lp1G74\n0H4WpcOtCn/IiaDld79W6uIHVkslW9q/lLsz88/X9hfcq5z1L5TfhvIgO8y9\n/Q6FvAmzrc3soCC5plfopjfglBscNs6l493bCt30UBQUYPPj2jkRM9JBiV3N\nhpYCnOagRLbNpIQwr4iAfQOIDuqv4r7uL8X6tIvdtj55oVYrN1Yr/Orlk440\nTJwtOQ2Vnx/VnyBfsxz9W6o6Ua+i/IgZAR1VktYWLwg/8ewAdxYmKf9lfndG\nWNc+9V+Br5mSMa6YBvhK0Oz3v97H7c7EJo35XgYUAs5bQ/eWfHjKjCH9/r6T\n97tSPn1hQjC9uQfurpInmTksl0MjwBm9fnscMo4Jrs94lm3+1N3ioOpRk3QQ\nWhVrDP6UjdcSqo57aMxiZI07la3AnZNhXgbVxL3wyfX7R+gINw5Z4LEQ1oUU\n9xCd+qWvafD6mM9xB/gsCfL1dMga02NCTBm4i7eM0gDsR8/rSxe0m2NAMKSu\nhyXg96F6wOUj436iSxIDBY/4n3k7VVLPPjJv9P3XgvShtNtEDnB3GzlKEx9C\nq56eA33WEWTFlhtAvWSuYvY6ePdX2ZorEL/R2kfbfia9McALbKKAa7Hu3/Vn\nNvOuNzW85y/9ovUq9DjlPakXRaKlfkBJOQYHvVr1ZMPQcm1eP7/yXFmnmYsN\ngqkZ\r\n=i3MZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5f14a42954d45face13474cc99910239d9b6bcf0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-30T09:45:32.783Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.66","@balena/jellyfish-metrics":"^1.0.340"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.14-renovate-internal-patch-5f14a42954d45face13474cc99910239d9b6bcf0_1630316950914_0.48806384717496765","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.14":{"name":"@balena/jellyfish-sync","version":"6.1.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c7cf8c495f89eb8189f9c79fc81854a3b233699","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.14.tgz","fileCount":24,"integrity":"sha512-rJx9gGw4dso1hdifwBxyK9Zw3mRgPdD305lbvHX5GYIRr7B2gfE9VFiDItf+zncAAEZ5rCRgLXFB+virtn+y+A==","signatures":[{"sig":"MEQCIGxtyIBddtWU1LjOr3aTcOzjE2ghCgIDhOBOyRyYUIRGAiBBP0OyUtJKZLVAFSKS7Cu6Iof1E5gF1mWqeHD7CANwyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195887,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLKqXCRA9TVsSAnZWagAALooP/iXSHqqoCKhf3UK+ZUGJ\nkjDUK9yGAayuxAQjariImik60tEtWL6My5HiD+6+jqvWdEZHJtVJd+ytsZOw\nkb0QfewmBklmUfHMTfGF3b65pJ8SqS9Ft1XxnFpJHkY6WCeGVkVpHQ6HjOlL\n4J7Hv3hvSsdcCBDWowglzjDOEeTcwa6DXusvkz2R7zzV3KuXySRQ/sy1gZUV\nnh7qdSrsxyFcWYVAutnN/a5cixgCnzsuBJjnwy7DMVbu9e8QhNVaP4WsY+5R\nnAjCbsfHGThV1zbU2Ay5ZKAzZRvO0aG2gxCcdQxDA8GzpMjHC8wHD+wDpynU\nl+We0yMR/XJb2WlZt9da5cTGmjs6hurzgD3ZjnaEAOaaU81gb0N9gx13PEW6\n4R+OXWNdxT5Ffg9mPT1ymN1gv9ipo4HadFV+1cCnoetwWeHK6ed+e7FtIzhJ\n8SIl90n7WZedkbuCb2hdU5dJ/mGH1+xaIXktuWBrTLbViPBV3oSbN9v5Pjfb\nrRsnMnNWF/ach4bHlj2ZwblyKPfjGzlMluLHYTHiP9NW1l/xiV2Ck2UlJDQd\nqTOxbErMRwwvLthDCfhKPH81/9UE5CgKpFgAWu9wWmmlex8wgF2uF5nhM0B1\n8Dw3CwYOSduHS7xosdGqNvb1F5aYtWIksdroDJjXG/8lilTtYAgV0F8NPEgv\nkgpx\r\n=S9mV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a3b554fd66f3343a483277f8b6787f512d410ef4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-30T09:51:15.348Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.66","@balena/jellyfish-metrics":"^1.0.340"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.14_1630317207034_0.5226988904372132","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.15-renovate-internal-patch-f3af450e7612a561e16cd8e6886afa0dc8da551c":{"name":"@balena/jellyfish-sync","version":"6.1.15-renovate-internal-patch-f3af450e7612a561e16cd8e6886afa0dc8da551c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.15-renovate-internal-patch-f3af450e7612a561e16cd8e6886afa0dc8da551c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"72dd9c604cd23280534bd2dc4bbfd190933e4700","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.15-renovate-internal-patch-f3af450e7612a561e16cd8e6886afa0dc8da551c.tgz","fileCount":24,"integrity":"sha512-mhIB2UHBTm1WGfv2mcLZ2IuYPxsifmbN4bnVBKHbEu/97D5STyyNMLctNPg4reKGyfIJI1syG934w3DyV8kxNA==","signatures":[{"sig":"MEQCIHeO7deNop+DSFKiIkUNw7m9F3mIZl4gabxdlwSR83uNAiBTdaRBO0hO6aRjPMI/7V6oLpK5nE5FjE8a356veiA88A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLMRhCRA9TVsSAnZWagAANzkP/R2glB3zXQhERY0zvnZ6\nK8IxqU4NiShxc4kb1pX+24/sYPmnXAd/rd7XwD+XpESFMo3MU8uPUzOulrAi\ns1/rpoUd961Cd7I7p+PUJaUhc4RxlJw7cemDJqTg+XWP/H9MHTFEIHENfAyG\nOlSa/8cHItmlu1CzDN/Bcx2IBQ79O47Q4p6y+EVU9CvoIzuvpUnGR9iFQpwx\n+0+NopDWUhAhNpFqkySbRZ/o7rUKpd532H9wmmqwA4Cqmrs0uzOpZBmFNVh0\nNPGVjE8bBZwVrIkJEaN6zszud18DOVx8F5u/Ed+bfaJDCIPP18h+aIZuMq7M\nQua8wVDOz8tY52gxA2g+UhMBRSgeQoNKsaW71gVY4rwb+0qYLm6jKNuaK5bj\naiwq+EyVCo9CqNYeBtTlbejihbsub10qqmZA+PcAsLim5j1kk2tGKjLJtD5J\nBy+zDm0aVxpotH4oSgopnpibpooDSMvHwhDBHJW/QeePC5fXe0YWt2ZjZedZ\nlmkmVhiTW5/6IH9RxZA3NzktSW4YLr6i0lJkq1PvU1kl3myvMYwawTWn8FAW\neADMCRBQZddJfefSIIOLCYJDx1qncPh6YlWADRCB91fiFxDUhgtXcX6aHLzL\n95/lOV/5GDOHdoRbeJNJB+M/Sbfur63OgSgWPbL0h/j8n+TTUdeVouNPfBR4\nwW/2\r\n=/XH6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f3af450e7612a561e16cd8e6886afa0dc8da551c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-30T11:40:02.667Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.66","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.15-renovate-internal-patch-f3af450e7612a561e16cd8e6886afa0dc8da551c_1630323808942_0.8631621149756561","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.15":{"name":"@balena/jellyfish-sync","version":"6.1.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"92d151a1e68d3ce689fddac9d795297fb893d5ed","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.15.tgz","fileCount":24,"integrity":"sha512-AUyAFPAYriTv+oWx7K3dB7TScQAe4+L61KbbWlXRnaw5ZDu1lkYoYWiELpqIS4aH1xN9cCugnEpqYJSjnOFluw==","signatures":[{"sig":"MEUCICKDP5OOxm4R2Ari9NYdumGelk7/dJtsewoeCkvAhqGJAiEAz0wvEB3o03Iv1obkoOkfyHrrEB4mpqERH7QgXSSWQQc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":195992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLMUlCRA9TVsSAnZWagAA9J0P/RkUwjoQO0PtaZk/hfWu\nDlaJK/jOLIS6AA15w5LBuYxoKlJGGb//jF2ylw+N61dCMy6JOKzj+830dDgw\njXVQ3eMT0PlA8UCr0NySSDm2elc+rPwpDLBAqkkHNrc87izGTtFuzFkuzaVh\n+f1MvTwE8InraaESCz8EPgRChLauYZbgGlB1vFFiR8SUKJYfakKtAzAd3CGL\n6a7hWL4QEMlusNuKsHPK0gTFDhvX80sdWxtwaCCGjaQrCGF62WBv7pD8Oj+N\nwbHT1Mns48rG7Nmn9m5HBl/ILKXrHaeUZsQZLdCg5nnNBE+7O6weFTM298GA\ncGmeFfKV2HYXnVdKc0HT4PbqJq8lh3gcfnqodgZwB9zc7VeXUHs0EMEXaBmb\nAuMN7iLgW/9ejnsADIBmqCHqcDGhuIBnUa0v6HoWl1N5BdDtywBKpotMLgho\nYhNG5P9aTV/rEyq/EDcxWqqNCCMmV08p/94Wtsb0iPdLXncywa1Sbigg/m3E\nIf0B+qS85rBJwFqSVW6mtfz3+Z+v1AzRyRuMpmV0wqBfjbp7kOUy5nvphUK0\nXBaIvErRR35hbq71tpALfD5QOQQh/Xix/R0hSEgEiRfUn+qIWxHbOXxnjdQC\nDDh4of3SEDvTYCvPJl5mf7Jb5qFAVkUznbQkz/14JM97ZV8yi0OssDM864Cn\nTYtA\r\n=TQR2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"62f208163ac29859413a4d7e78f64a34f38a7365","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-08-30T11:45:01.635Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.66","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.15_1630324005321_0.6986533776955193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.16-renovate-balena-jellyfish-types-1-x-0a7116ec9637fb3ac875c405cdf0116d5c3a16dd":{"name":"@balena/jellyfish-sync","version":"6.1.16-renovate-balena-jellyfish-types-1-x-0a7116ec9637fb3ac875c405cdf0116d5c3a16dd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.16-renovate-balena-jellyfish-types-1-x-0a7116ec9637fb3ac875c405cdf0116d5c3a16dd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c754e614b492f83b860e12d087ccf4aaaff5f1d6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.16-renovate-balena-jellyfish-types-1-x-0a7116ec9637fb3ac875c405cdf0116d5c3a16dd.tgz","fileCount":24,"integrity":"sha512-yOJG2VAhC0gMEgBYIUjA9vZ7zzXI47/uTvMYhqLBdbxUBQxoJ06pQYZ70OwpNb2KF7JZ93sZoqG2j0xVGxqbHw==","signatures":[{"sig":"MEYCIQCZfHIi8eD8c7zNbBhNAxL4Drk9QVMnNG6lQk9Yj9BUTwIhAKviSnLLq2YID10APiuzldAX2ZKJ5n4Cs7QZlGYWgvmt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMC3BCRA9TVsSAnZWagAAuD4P/3spWM6rAu7/swVFXVw8\n2TzpJ7Aq3phb0I9+K4MwpmZ67T0DW31MtgzTfCngd6GGb7VkOe4drJxVo7Yo\nlkfRSD6f6wK1jU6MKukIJcT02np4E2SiOGuTJ6CA+QaemVWF/+w9EJaW6oRb\n1UX8CmVY1zKszEHgpHwX2UfPsROqo88eQGK+zKpoEhTH/xr5Oq2e9DUieedd\nbmvARKf/aSmSfhxq8ia5P8nSxZUwl5Fjx/Fl6tWF/gjMt6eR4k/k+bUN4eZ1\nx0H4mLVa1biCa+4aj4ks7rkEXfZN7kutUO/68QE94Vi+kq/3V+jZPVGLek6c\nH7Vbp0GRB9uYVmdjABlWiseMB3sX+el4je/QH+bHmGOSKGVGJxi4tSsATyR6\nllfI9ndgbzm4C27UhUGaDfn/lxPiksLjEdi61y1jghgek/Bk/yZxDvX2RsLi\nm03YcQ4LKj38uxnXIf2DfHpgabtXuiSDvDADTcFoUFiAePfPSD/XJsahpOE5\nG9eQff/zDGJEhHdQSCW0Xdavla2A3cYmBOk7/I/yB3mtgOgjlaZP3nYEMAS2\n8Go1C1A5Pvotf+GrpmljFxTz/JNMHfAi/yN+hpAR08WwQM6Mp3vyZWiGvCzr\nArmJHtRvhYEfiaP5BBmxTTyGJlhsXPrUwfMelE8DpP69+MnlyosaBWB+3GYT\n4vtL\r\n=Ufhm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a7116ec9637fb3ac875c405cdf0116d5c3a16dd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-02T01:47:33.082Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.66","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.0.0","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.16-renovate-balena-jellyfish-types-1-x-0a7116ec9637fb3ac875c405cdf0116d5c3a16dd_1630547393430_0.16799669165669617","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.16-renovate-balena-jellyfish-types-1-x-5eaf917ed064c9450f25df03a361659f8af8fab9":{"name":"@balena/jellyfish-sync","version":"6.1.16-renovate-balena-jellyfish-types-1-x-5eaf917ed064c9450f25df03a361659f8af8fab9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.16-renovate-balena-jellyfish-types-1-x-5eaf917ed064c9450f25df03a361659f8af8fab9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"191b1b28ced2dadb8388a66750f5f48463d7f992","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.16-renovate-balena-jellyfish-types-1-x-5eaf917ed064c9450f25df03a361659f8af8fab9.tgz","fileCount":24,"integrity":"sha512-wIxh32Iwe3Y5kGwghS40Pp7L/NASIqIy/YOnAl/EkJkt2FI0WhPGP/BYC7Wdc8P916RKuPtp45EH60/hFip4cw==","signatures":[{"sig":"MEUCIBqltiFbWdw7cC1+OyKeeZzbHyarCyXKFjKLUpG4s+AxAiEA0TVPi98LF754v4O37xHngkKH5lxZtPuYcfRoKzEkndo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196166,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMscACRA9TVsSAnZWagAAwocP/3CETz5QvHqd6OOKcrJ+\nn2xnNq7UvLeJqjlaU2w6fG5+YRuBiswW9yZDRReuq0evbe55turWK1cbzuBc\nheP3znn+1mUvbrZNhqNbHM9mOZsW+J8KyxoFevsHHa8B1FDb6ycaqo682WL9\nQf+95wit9csC2l8OTCiVOtUwEaGqPqLNZY0NXdH5MKokKaUaiQffQNb/QwD3\nOPYZKEq0zQKOXydPt07nUqr5VXPT26wK3VXP23dvdipUYgUEkPX5/99zvBly\ndXsfDLHkA5zoLtXJgg1tybw4qSKzYGFPu2uk1yMauQkoiurUqIkt+aanyif8\nv0x6J0OQ2QURgQKj6OfVgidxzruexttQnCfFzUDBGd1roPiaM7O2MdtV6lmP\nK8+QYt27bqe2rED+K3i4gFzb6NzJv3BQeeVFPDwWF9Xr4QUtHW27XL8uy48b\n2NmONXPJcVML5NCB/hZThzFPgasl5uvgI9DtynuumX4j0MyAxbdAHBfUKmCk\nhC8AAkDFM4q+ckvniXmg2JVXDBPGXdAjO+ObE1QKggNnOPHlFfHwFztiUtfG\n+gAjxTZ+TeBcNJoJ6t95rGfyDFZTUt7BCn2gvpYPaA2sklnS8Z1I+wTAJbwA\njuHqrBZO1J0dTsGOZWBLxBwLK0ek0joh2bwRJVO6YgTGPnxkpvcABlUc7aYL\n8IqS\r\n=AqBs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5eaf917ed064c9450f25df03a361659f8af8fab9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T01:04:12.157Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.66","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.0.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.16-renovate-balena-jellyfish-types-1-x-5eaf917ed064c9450f25df03a361659f8af8fab9_1630717695834_0.6610712555405465","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.16-renovate-internal-patch-8464dc58d7b65a9e951f8157aaba356949b98d36":{"name":"@balena/jellyfish-sync","version":"6.1.16-renovate-internal-patch-8464dc58d7b65a9e951f8157aaba356949b98d36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.16-renovate-internal-patch-8464dc58d7b65a9e951f8157aaba356949b98d36","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"04e0801da115d95e16731dd6ccd15ec2f70e2c8d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.16-renovate-internal-patch-8464dc58d7b65a9e951f8157aaba356949b98d36.tgz","fileCount":24,"integrity":"sha512-Oeegkmxm9s6u8ebNACkOnW4D2NV5eJUyvFzP+Sf6+E7+mRBg1uM9qO3RJ6fiQdZS5u2c3hjnLlKjc2P9q4LuVQ==","signatures":[{"sig":"MEYCIQD2H724FYZ3GwP1MDMIVgCM04uLZmAQ3foakMEKwYGe6gIhAJpVfGsTlqalL0fiQTlh6fgzBL6b9mVUTj1gILmjdUVe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMsisCRA9TVsSAnZWagAAIG4P/ApECJtZSRrFa5vx50ES\nsiuj5ySN9rQYPbfr7hjomtXKBdDXFH7vIFI2f2Un48KskS9sTZIMqXJS1yW9\nCnru3ps68eWgSF5O6reUKbJiPtqT54K1r5IrnLz36L471zvmDTcLq1QrIGNd\nwoU9ro1JbNF6IMSBRKLAgnj0IDxRe7h3CDl3AvOU3vid5xJx3Baenv6fVTms\nideJ1yypm/YbitSR//ozbuWt0hD0SreUP+ralQ+c5wjFPRHrXjfWdCVRmv4M\nH1Fy6HcMMEh/eDMVI1vFBRaMO8i12GMI4HWfqJflcqIVgi7gdCgzcEGyg4cH\n/4ETGFg0qNuAg6lvVI8a4Gox/PFmpljqN1CpRbH/doy9WMNU8FKVhP3Oc3da\netYgytIDtnp5VRBQC/p9CqhM+f9Jel5ot6+7PP8YtaWUYsDY0/7AEfOUKtc2\nSgJ7fRlpxMuc2LRIjSm7unYqJFeJQdLcYMVId/hmL7jTUScCBs+uUSSFrGnG\n0nhXA7N77Owa13H1QYo1LSxkTsRaCKFx/uhMpdMtISG6OPRBetmz/ZtfmHFX\nKp6NAujBueHowUnmwq4I0TkfbrhDNWNSLym/KrEqvft36p+ydTOjSS670U4A\nQeXtsZnf5DReyhfb8nWlUjQaeMv0x+2fTaiF76Cbi1lovP2uRDe38kSu7O8i\ntBHQ\r\n=jrNW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8464dc58d7b65a9e951f8157aaba356949b98d36","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T01:10:42.077Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.16-renovate-internal-patch-8464dc58d7b65a9e951f8157aaba356949b98d36_1630718124420_0.5026002182796907","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.16":{"name":"@balena/jellyfish-sync","version":"6.1.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"297bea18f9e84c5387538fefe89a08e3eb2956e8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.16.tgz","fileCount":24,"integrity":"sha512-wrGtJCnOdFvEb+kx7dvca77JhqjfYyr2oiqwEcuJREZ3t2PDJ3dcXFFpkzc4ZRHgp4zBBl/COV+aGsuRrimn1g==","signatures":[{"sig":"MEQCIDWqBGrfENbB1tNSNyx+EmX3NCEOU1vAp9zHci9C/nIJAiAUIeRw/nkY4iB+Wi+hRyGdrUqwo6pZyUtuuxzYSNWtLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMsnjCRA9TVsSAnZWagAAJiEP/2WnYVFUhL1F0xoj5s0A\n9dy87bKh1mJQ3Ik6o4D5nlk43i4An9HaAJAR/oDWUXYYxmP5io4eziMccHOC\nGtxGiL6PkS5Q9qTNpmChZxx2RyI3V5YXDBa18j2l9PwFMwBPG1YIXfzynvnW\n50O2A/4y4bi8Ltt7YzqBsAyNtDDc1xq6mFx9bo+6QXblz7htJ/6pY6sS4i9H\n5DFK4MSuoGHb0j5+IK4sCfjM5JjbBN0Bese6/Nwbf/MZE6STCttd3owomT9D\nZygG1dfij6Yi+OiNFPu2vNJXMlaF9Ro3gCAJfID5IicWHtHnoum/Uee+2efy\n8hWSYhR1Md57xXCp7I+QYNKwed5rjQmNEX5fZ+w+Yd+Yq0bKTxFqzLzhEOEJ\n/l9fBAWxJn8mroKZpUKH0j+teWPquEKCcUq1uNCid/cf7apSg6HfFEYbWgTH\njpeYRC0Y9qbDZsb1bVmjKW81wL7SFB+OAtwjaMDKCCDuM1b2hysisC369wFC\nTCvnB/qhe+AAoy7/K51OIyUJqE/rqjPAuSvL5axsuNpt5FGnC+TbuiXbutqI\nAeEt6K3kkvFDuPuP5X7oIhrGhCg8QQZxD4jfQ+vbW/NFrOw3lJ1uKzXKoili\nxFsoAS2uu5HoApOfxqxuc4Ef8dl+CQWQR/7xJybVVpGOKMwy/QJZQ+ZXiZNM\nQ7gr\r\n=7ueW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7c2c7065587ca3bf2e334d0fcb974b198c5f38f7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T01:18:05.354Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^0.9.9","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.16_1630718435481_0.9574274615077099","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.17-renovate-balena-jellyfish-types-1-x-149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719":{"name":"@balena/jellyfish-sync","version":"6.1.17-renovate-balena-jellyfish-types-1-x-149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.17-renovate-balena-jellyfish-types-1-x-149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e314980190134a16c19de2920e959128b267c00f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.17-renovate-balena-jellyfish-types-1-x-149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719.tgz","fileCount":24,"integrity":"sha512-2y5eJ9cgO+QnidzGdPM/fT/SoQAVYI8lHrxjyfLx8HH0xVNau8dXnpzzyzI8TSf0c+TaNR7yH9I0xATwbuHRoA==","signatures":[{"sig":"MEYCIQCO0wDDFxmXDMR7SBmGOO4ckna+cI2xEKWvsVrfgXS0xAIhAMT8T4ws2E7kvlPbC6Ud8NkXxiw/KTNKgC23dxap1z/N","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196269,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMssvCRA9TVsSAnZWagAAQ7cP/0jq8cKjjgjmDe3tDISl\nJWDG/jcJGrSKgwhBPYd65zdUE2JRldodoI/Ebcrht0ZWTbMkHQd1HRpUq56s\n9qtdLOu4tsZWVEH7oHeXyCle5NnTrhK548syIIyHpFutUXO+4fhJXnNsYKKP\nBW7r2lrdfkBB0fSlGMgSOfVySdA8ZGrJaPH30GBXnfOCtddxXC+7usYbfk3Q\nZT2oYcOH6UvgbcomvvnK/xL6Bw7jbXAcpJKWspCZhDbNysOaQSmsHu1nWwbu\nAx3xB1In56yihZdiY5JyvAdnUZhmfEY0nG7v1czL9aSXIJpwm7bK1bzYU2OE\nbDroTmWg8R0ZBEzGe6UAk17J5ClqMYvo934RN9DbLlPUJVXCj3yDHQWf6UvV\nwEr2BvzawDiywuXdRUKRymxAJMboQOCuFVh6QDFB5z/xHnK2aFsUgtONgGJi\nJ7pxcKUdP2hUD3CA20coa+YngMPN+cNOGIcgUx8GFxCrlrEe/Gold2WfvB+R\nqX6OM70aYTJhrRgbQJKirvrZhogW3Ab85P4kbT8rEDgDiV+0dfSd6NP+pBFm\nyDTglqwvvKEowCO8xv6AvUZNwaaM12wFwocK8t9NnAm2kkOHnwiU6IiVNjtr\n39J+xnyhCrldtFR0e0WSi0iPiAEHLY6nEMrWT4qNDCqzCJj/mvn2fa+C2UBW\nYDKQ\r\n=u4T8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T01:22:33.295Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.0.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.17-renovate-balena-jellyfish-types-1-x-149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719_1630718767313_0.7528842011908128","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.17":{"name":"@balena/jellyfish-sync","version":"6.1.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c08a24e3146a40e55d9b34b706a2e005d068465f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.17.tgz","fileCount":24,"integrity":"sha512-3Suw/svGIpgEMasdGh4NC7W+H3JiwuB+3z+x/sqUOI3WMj+YqsYGkpv4TxAeNmDbnVRY72LVXXMI8yOqwIjyrQ==","signatures":[{"sig":"MEUCIQDMJWxBh3WZMpQnoZ89NdS+N2MvnABD7+K50GPrCu/jPwIgIZHORsoDLasyhgIhullrZ0ZbqtFW3QqfFCa1BOGa658=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196192,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhM4JNCRA9TVsSAnZWagAATOAP/i9g7kekA+FnP1awP8IZ\natZ50MZUN0SDEm2HppekO78RvJIJh8Nb77KwGC+vDFBTzzAl1vZlCoyzZmhU\nA+6o9ebBFql8ihE0n7TJjlsZVN0oc60Hx8vSVO03DfV9Jp8uZxCiHvihv1n9\nIQ4BlmDofRigLTneb6AFGeVZlGXaPOUjw9eKG7tDgVDOqsnwQ4CAnMsXDk/w\niq8tW5qI75gqtp8NZMgEG/s4IEQa36k7QarYKmx5JyjiNMtgcZB34pcW8o41\n60ISHUifXYsUcVQdiUJCzDPEcgxD7XFUap3S/GVJYlEXpMw0CRlfEBAtJZ9T\ngoszoMHYWCrLwLlRYCqgRXxzXDmyQEB57l5Z8mVD+Oszt7JGH/SRsA9Iqykl\ni38PbvYl366sg/JUa4EaHp0Oesiy0YwbUZq3vowUICT74i5SXdPH3j5b8Qfn\niHW4a+ZFUykkC08xbUJ9DG7MTQPtv9hK0h35VLcNP6E40J+JaSssBQSrgEGW\n5FNHYNBCTjUbeZjfGHllpcTBVLoyUzNkd7tTVe8d6XqKG90xFG6UeWgfz0VK\ncrwnyrwVadX5wEOY8zE7lW5jjipOfIhJ/5tqhTMVJorhWdSQ6p/Cc7CelPTf\npBIZO7l3+PMKj9dCxcCXM+jz3Q2HtOCIGW0m058+3YNX2dXAQBa4dzCnmCRL\nf9Ra\r\n=tqbe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c0dfac6c7978fe4bb75fe2e17710dab4b8654a0e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T14:25:11.190Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.8","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.0.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.17_1630765645016_0.9533176958397931","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.18-renovate-external-non-major-730d29b5a52f3405dec676344eff58091c9b836b":{"name":"@balena/jellyfish-sync","version":"6.1.18-renovate-external-non-major-730d29b5a52f3405dec676344eff58091c9b836b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.18-renovate-external-non-major-730d29b5a52f3405dec676344eff58091c9b836b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"123892215990426532f7c4d7895db414ca7246d2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.18-renovate-external-non-major-730d29b5a52f3405dec676344eff58091c9b836b.tgz","fileCount":24,"integrity":"sha512-5xio5SqRSuW02jGzAuksemRlhICqOD/fRPQ1gANc5kRiLNjw6Fo6XvfCTeEtfhBAp5qJ2MaR5TV01p2cJbWCGQ==","signatures":[{"sig":"MEQCIFk9fR9Op3N/mO5Qb9f9D4wd1Pse/5Uo7RQUyGcew02WAiB6rkxPWW5Y8hezMqzsqTblvJZav4NeE2YrJ3iB5AgMPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhM4MSCRA9TVsSAnZWagAA824P/20qfMigdqVoKc3eJKTY\npsLKSVhPe4ZoCguzt+qL52wP4s9u3WG+TiU8VkdPVa8f5FXYKZ3UuFdxNLcS\nalviyWasZtIaP4fj+2SPahCsd2qQHeLnwyqWI1vkjDGVWNTKfQQLgRFp+rsX\nQtQZnnwmaPCnZ+AesX8Ocmh7oDTZ0D8JW7bkJJ9SqWRnW5R/0nvMXrRno3FL\nzxAZQARJtXahDvSYDmGN8I7ivxHv8idgSV2fw0cLQwqcJkmBXwfNaCT0hDVR\ncTnQVa1xB1CzkfDNbGsHu2sywUbaBObEFs4wGUGBUvoMrFQjt5eXYSw1tn+0\nRaxR3gyEAD/d7+ik67mQDLwRb7Wk1KmnNPLu40njA1fjGeQ+wpdSsyQZr2rl\n6RiXaP3W1oYdgGaaJVZMxFNZ/AApo0Eq1X4hTpoanOQ8RgVsPHzUPz5jRHDu\nDn6f9rQ9E/rBgVmDr6bi3V0Y7bS7LsZWR0LHwmB6ZVe3hZyIV6KoKmSogp75\nuKTL7q0q4JAlJuo38hNgKn/rsN6RFI/fthTIZHhtaULoGbV3V8depKXQw2p/\nm3pyCDkqKD6B2bbobsTzbSvZ9/+WfVt7K3jap6HNLF8x3bm5EAKM9lwvv5u8\n1TsWWvoqwXIg3P8bAbmIedsuqPizGHebY7fZu0SxO+A8zjnho4dSjS65+Brs\ndFep\r\n=08VH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"730d29b5a52f3405dec676344eff58091c9b836b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T14:28:31.680Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.0.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.18-renovate-external-non-major-730d29b5a52f3405dec676344eff58091c9b836b_1630765841814_0.41289114042651565","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.18":{"name":"@balena/jellyfish-sync","version":"6.1.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53ae0824c66dc4c75db40b6b235b8a5163cbf253","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.18.tgz","fileCount":24,"integrity":"sha512-1VAnQLD2x2YGgozkJ5LgLFW17jA7e4NPa0ZVm9gQmyEhbPeDbVpr8we1PKCAdA/D4BpJ7LZ/1pIOlFzSSE227A==","signatures":[{"sig":"MEYCIQCzh8SlluNMt5Eb/lF0iLx8qX7h2aOIYhXUoLP9+SxYFwIhAPg4lAjMuwY6viYGTCLXqC5ktTKLJvi4sv2lGzi3YCQA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196278,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhM4QbCRA9TVsSAnZWagAAj+4P/jFBhKnFcepcttT9v6yX\njtSDmNpDtS4ZDEQH1/pHBuaUkiCwxL0CP2bl97KXl1w+DxByGO9F/aBdo62s\nKTcUoKixPtOZLvjkWhPTdVExMnEYst07rrGHVexQnNytiXZdAk3+n/P4HX1B\nuZnoJutpG4395kzegZooPy47Mm4uwiBDPn1+7oRREvh07zABa/WzG2iluQMN\nn8O11Pn25xG1jhx+yD9IEZ/TL+HqGZNMC3RausHtGvBT66Xy+mTAd44nSYgq\nronAvxV0oTLxgm9HScvMEvKwyD5OG0Qwcl78WGVhh1vBquSB+pLoUuLbNvwu\nP1zIHK/Q2F1raZiiefUks9g0zzGtUKG0tO6IV5rk12qK8u5WRM3gTSMbOHlF\neUvotCD5PipaItQVOLI8eyPY779r0VKdKBpFnD4ybk7mBV0Be/yKPgdo7eQQ\nNHxbNNCKuqQfWdq332YUX09qt58GbTFxQuIXp5y5SlQLeBkrE/pZmFzDoVa+\nHwmtZflHqILSuQsDjOxm4JO6iLxZ87QV/7VIitpL6Su+EBXrzM7xZYQWZQRi\n0nhmdJFJYMJScMQGDTtoyxUlX2WCkuW3cl9djA4ShPQ3edlQeZlIIfTv/K07\n6pMQuBRo7LlGbRbZ/EyzKDtfgbbW7Y8hOtf5gq0pul+4+MAhpzJbPZz0o7gy\nMr6N\r\n=HWMY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9cd1b886bc2e462692c7b0c74ceeee8cc3937f6d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-04T14:33:21.815Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.0.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.18_1630766107161_0.362490753024737","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.19-renovate-balena-jellyfish-types-1-x-a3156f534fe9b05527c0a93b2f028bc4feddedfd":{"name":"@balena/jellyfish-sync","version":"6.1.19-renovate-balena-jellyfish-types-1-x-a3156f534fe9b05527c0a93b2f028bc4feddedfd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.19-renovate-balena-jellyfish-types-1-x-a3156f534fe9b05527c0a93b2f028bc4feddedfd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ed0cf2a23708d54dbf41962e61ea2217d2748a6c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.19-renovate-balena-jellyfish-types-1-x-a3156f534fe9b05527c0a93b2f028bc4feddedfd.tgz","fileCount":24,"integrity":"sha512-E3Vn1K7i0w3mYueOCtyKWZdwNx0u3ralE1BHPhkl1p8t4IgjRPQHZ592fR6t8kOJirXZjbgTtTmrfxi8Xf/6QA==","signatures":[{"sig":"MEYCIQCNz3OKSJIxFYpMSoeWBoobZGf6wimW5pagz+/ryFLkrQIhAJvHT+eMXiQUe1BWPM9ekeSPonZIehV7Px+4XZh43ZwE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNJQNCRA9TVsSAnZWagAAmGgP/iJzBjPgU9gcAi8g+VBW\nEwSXoXIlDosZff+DUcUAJO49lMd+6FT7zcpoM7/ROgHSeyS2oWnnTwulij6U\nuGuyN2Fs7vy81yvrkQTbSf5ST+XCrvxeqlzCIxlRUITH7gXu8bnHX4tICo+v\ndgJfTYcydFn85B/tHoH4YQSixUI3NClrbIXs0S18sQ9LvcirzLS2EPSeDAm7\nf10v12FhzG+Yem7WUqXj9jsu8cy6y833T3Pv12kfzG2p6Yw6Ly/jnp0Jna7h\nqdZLu88jBDW0Q0sm2GD5aNXsvhEsz9OdxC2J2gG+j0fYAloomBLgWWnWotBy\nTJbIbgLvnWdjq0xxOBzgtN7prHAJpZvd3RdEUUK6cVJ54JURRabnYSZH55od\nWks8PUhvGgIwntmai4EnyFIWSC15B8VLZCscN1WpSqUgPQ8dv9nJZ8HyZc12\nLwK7XtS+YKvdpTt/e4LIdLZQykabDCeh3+w9ViLnvXDyfR4rGnOwzzK7UeLO\nK4Y8k+sOJHXh339RRArNfsLB0nXrGngSszXiV9nNnwEeRBAkzMdxLmgveWTr\n9HXq0olVcnxUcJ1PmjPCP5IlKrM9dh0mSv9R6h21hoT0hq246H2qLnUODX9s\n/Et6kHs7D/5nS1d6uPCpBcEUtY88xOtpBfPdWwG9qWzr5eCLB3eCbrrsIQCi\n4Lrr\r\n=z30w\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a3156f534fe9b05527c0a93b2f028bc4feddedfd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-05T09:52:28.593Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.0","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.19-renovate-balena-jellyfish-types-1-x-a3156f534fe9b05527c0a93b2f028bc4feddedfd_1630835725813_0.6581034628637479","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.19":{"name":"@balena/jellyfish-sync","version":"6.1.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b6b9fff8165818e994952e4c5b64b2773490636c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.19.tgz","fileCount":24,"integrity":"sha512-WerU6vj1YHhxYKigbUspEcWshH41xkw4TJSBXxvpChlzBec8NChc1bVVX3zqOucxgF0/sWPnFymQcrMZfuk+uw==","signatures":[{"sig":"MEQCIDUkJlwm3CyEDb6Z+KCuywu7HnFkPt3CY0Zfsu4QmRB5AiBEFyUgAdT2A5ZQF98CSQD2gV5lcYCA9g/oB+KaHbNioQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNJUCCRA9TVsSAnZWagAAcGgQAIUsX6gSIa94pjp0vxR/\nVW6OMT10AiCAIGJ3h479rt60hoRFBQbkjV6LlBGmOwpfz/5mAzjxHMZpH29o\nwnTVl2icUJbl0nOcjps4Z+MS9yuwQyCo+m3tTZmlxnlfSc28gnanYqlMR8kX\nCc3cnaRBOJ2aRqvlxM1StofykBQbzf9jMJZYxGygPESx0iU9THRCwNw+xeXi\nCNY86jXtydO1Uu5HAJcUE+1OLC4H7oXYtJmYrww9zNq+r7v1HjvwcRTaR1L0\nkPl8r9i14iOkY3TE6yBls2OKikgRnYeqcINKTuDgTRtuIC9dNdXaQUPdq9v+\nT/bF4kNGs2UMH7j5R8dJHS8BKH+hBG4lNboOcTvQX49ZOd6ZDTI26hd6DAEW\nkd2Vj6IFeTqjsVppjIHDqxBbHac+pbLr9j5MlVYdCPXYQt2yYPFUveRTxvMq\ngMdbwnzpuYJRQNcWTK15bhVByi1HOPl8xRQ6BQEEAFluOzosP7MP7X72D3Z2\nZNHaKNkEEIv/OupAzl6wQGzuMRRUQ7/8j+/1K/3nbBOVV805QY8ybdOPoPHa\n9eK37vT0H4Ql6C6a0HsXOvzkA8nSW1yYvPvQeiKqu+O5g+hhhUvhhiea4Zy9\neiEK6D+mG7bWrye3NjT43Fk32wO+UB5sj919+bA7wsyoCflk+rUDG9YkcO3Y\npqIw\r\n=yH/K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a8cb5b1a2c3b549f725459a3dc2835aebe907ff9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-05T09:57:22.365Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.0","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.19_1630835970096_0.7194034605570143","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.20-renovate-internal-patch-2597c0b7acad9b18e7f6498c24d43d8f20fc8abc":{"name":"@balena/jellyfish-sync","version":"6.1.20-renovate-internal-patch-2597c0b7acad9b18e7f6498c24d43d8f20fc8abc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.20-renovate-internal-patch-2597c0b7acad9b18e7f6498c24d43d8f20fc8abc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5caf9a31cba59d8ba4c82fa1463f4582da05107d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.20-renovate-internal-patch-2597c0b7acad9b18e7f6498c24d43d8f20fc8abc.tgz","fileCount":24,"integrity":"sha512-dYhbsuRfGGxutDMMFj4w/2N862NO4fiJ4glTqvqQEdUiMBU/ciPWr5waijJXBKpNb4X6iZLmA0rV/UmGhJ43/w==","signatures":[{"sig":"MEUCIQDsaBTcWwHMMb/Tg+MZqsPx5DipSJHDv661/3TcIX+/qAIgMPFjevW7wzilUC0QKMAmIhR7qJUvMZ7xsvISC9nLVR8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNatvCRA9TVsSAnZWagAApMsP/Asyphbx6+lES/nfUllI\nybLuusnera7JPNLTE+Tig59zuJRVWBKq3mdA1mXw+lI4cTExSw3bIeaNRLdy\nyHBgttNZU4BY1zSipmq6m4pH2Q27SIULZpJNcnAIpRX2859raq7vwdeuJB6L\n39k/CaxuNUykPGRxMXGu60pcy3CmvhFxyVtlKSvZk/G27no10fSblKsouukF\nZXQFISsowt3AaNf8Xt1fA7mBeCtp3uF9424yYa4irX5su9LyUFJJf7ja4Hn7\nYBBMil4z+7rVuMbeinO3K/pXd/W7hjTi5NsYXlTcq1XUWZVhRalaa3fE6BFF\ndzqDUBT71CeBefx81RqHP8MrO+tCYB3GgpodpGc0k5KUl2u7Z+hD4Pt4fc/0\nv14v5uP/CDE7ANFJOk/1h9UW4KMQHCsgC6Skmc1asis9OQVLAYwj+MsqbB0Z\nyLkxqFFuvfdKwBGlj+zk5I0jOwPH7J1mqTTBslP/ghQbibwLyZ/W2HOQRO8q\nZU9c+frH80cD3eyvsHenZrRt8SFG1lMJsZFkbYWB3ebEEcVQA6ZLAaBSawrX\ncY1NnEHzx3YE50VrcvBKC6wmJkH+rw7sKjBAapMOyvOUok68zQxpv/tDefpO\nFSBfwaxrWgisXC1hIbVHGwIAyAOseIfJ1V5M6z3G/AKhmhZm7FhRcm8+S3SL\nhx02\r\n=k3Mc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2597c0b7acad9b18e7f6498c24d43d8f20fc8abc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-06T05:43:47.164Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.20-renovate-internal-patch-2597c0b7acad9b18e7f6498c24d43d8f20fc8abc_1630907247629_0.36326593944515406","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.20":{"name":"@balena/jellyfish-sync","version":"6.1.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cbc46c3099e39fc065abbfeac7efb7e98f76afbd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.20.tgz","fileCount":24,"integrity":"sha512-xpUy+JHb5kqa+AxgdpqghcryE3uiJuS4jTz7Zh0ayd899vdELNaOxN64m0rPCs9rxSEr+36dqdXB4CJL8MIcqw==","signatures":[{"sig":"MEQCIBpNFeUVDEYl2hXJl2QP0aBRIxa0YIQscFzCiwBxlYWKAiAESm5F0uncPQypZPU09nbXj8DBIIz5ezyO0zyC29dMTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196480,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNaxMCRA9TVsSAnZWagAAx3UQAItnoaSflubz0uIxYLDN\nHE0JRmLSDmmY+cVOrm3Yz4ZAz+0o1S4nes7qPsEZQqpevsFKb3YiWqkRYMIY\nkbvwCpdm1GSNJXwXTCvcGC3enAM2C/hQ0wQyUs/vN1xnuzH90dBrTRu/0H9T\nGm2dErNyGYUz+BOZdjm8tMtGC1HseIPqQKw+YeTOhAC7zf52LXOf3O1gt9IG\nQy+4MZ+q+VZlCALHlIzT1DNVGxDu0H/pTazBGd1XwFSR5lYtXEjMp6ATNfpT\nj9QFtx/gKl/oU7N0irAZTTxrPui0Y1PDa381eUOD0VgQI1JguSQpb5c/AbM6\ndEbluEhMffL3LpiFP6ifYlUbyxkbeKgKh+M6q6Soj92u1Eg2ilqW64JxnD+W\nu7Fu6qvx11sEEuPZaT9KQWCMWsmS000tgNRC97eP2zDPzOAl0yXsw1fwQo8X\nV1ErhL825mBMYSIupuZ63ei9BpPS6E5YutfhOaVnDJOaJyXWtXRKoAtGoMYS\n+SM4EhmeIkltmMvxFzUvXHGVDesu6HT/XNfch098QMRaVGbxP5vX2q9XVjfS\nvLA2JHQWXeb505WNFmpsCU1uFSW/dNMx+APkvvP0b4b0L1xAM8ARkNXKcB4x\nXAQ1S+lK4jTYsS67ae+CDLZi7wThGGs20S+DWJ6Ivfj0jRNmqJ80PEHBiW7R\nei7f\r\n=McBA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c25a796a2063df1278c7a5923324b2a057a855fe","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-06T05:49:22.338Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.1","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.20_1630907468580_0.07770989745344714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.21-renovate-internal-patch-bffeb01a1d80a21025c641689358e7b2eefa1d10":{"name":"@balena/jellyfish-sync","version":"6.1.21-renovate-internal-patch-bffeb01a1d80a21025c641689358e7b2eefa1d10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.21-renovate-internal-patch-bffeb01a1d80a21025c641689358e7b2eefa1d10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"621200ea67df983a51ca51f565b718bed3946016","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.21-renovate-internal-patch-bffeb01a1d80a21025c641689358e7b2eefa1d10.tgz","fileCount":24,"integrity":"sha512-67zHsAAZX/10BlNZMinJMuHfVc8Z066j/aQgTat30OtzzO5kMcBfECnOLkeFQ+qassTwsCpHp0HBz4s+BxU7tA==","signatures":[{"sig":"MEUCIHYhKEBMt+G6FFa8/2uQJTdW4ihzcuTy/p7TBUZjdqdeAiEArTbRr8GA0M41NisMESjxMrxmEKEx0cFryLiC1AKOFPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196646,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNzzTCRA9TVsSAnZWagAAgT4P/1zJwOV7rlkI9X+bx+xg\nWhJEYtTL+ocZFCEeJIrNRJArK0Jqu5TYCI4kCc0W6W/CVkeVTPedbtBXfCoB\nuRSb8G4ew0N+3uIT996gh9j2/NtCtKCdCcAc4OHg21pIzyS+zrUlNqSrMVm1\nwcSU40u2QwibnIhwdFXhx5SXvhhWGj5KrHJuy6Lmby2tSK+wwYVsN7kXpPIB\nOlEqn+8Wh5Sw4xrQ1Rn6DTKVExNBapo3alAJWLJn8MR2otczQWFRrvtMb7yu\n4Jk/EegDxoCzEUPt8haLgohe3oU0x3OixHgUz++Jg84Np0pn5AyyWQgedcuE\ngjnKeAub6158T+Q/6UfOFd72aEgYFv4bWVKRTva/C3V//Cscl/FGCQ/awUKY\nYxEwrDeOKLaPHRmGSX6P+T1Ys67OO2Uk10FLti+abBMKxbXdcvzWgoKgUjkZ\ngzOmxTv9U6qaSHzX5y5H2y57/Zu0TyfTAy6vQiiryKhoGvjU2oaMmIEr2yjl\nnqL/jEiO+PjRp8/Pg0TmMJBAHKcIpZ4lBWQAorRBToO4sL2cvYMBrJ8v77zA\nOlEFxzmHSzFlWOtwYtcUmgc/hAgeg6grXY93GzrgSoo6ItVf1nq0OSM6Kcax\nPiLL3P0Q+xXNEkMx5LfS4NhnBTaQ7e5pnpxbJPHNikZyxcBA7mtQw20csfKm\nTM4r\r\n=2OdQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bffeb01a1d80a21025c641689358e7b2eefa1d10","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T10:16:35.914Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.21-renovate-internal-patch-bffeb01a1d80a21025c641689358e7b2eefa1d10_1631010003346_0.13615174404126118","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.21":{"name":"@balena/jellyfish-sync","version":"6.1.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bc53e2f3d757d198a67c317235033aa7c3fcad4e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.21.tgz","fileCount":24,"integrity":"sha512-wu7pO6BuddxnoMwhCSpX/UMzhocPS8Cerhi43V4T0KDxpfpgEJQWCQKSeHiypsSnncVB0cIs3JwmoH+ucAKUmA==","signatures":[{"sig":"MEYCIQDPZk/apMKYKu38SooBG8jzwg4nATNTQHcVjQGEg1TUmQIhAM3hGFFThX3DJgy0x/G/vXrgjUBmftV3bZS++JwEzxLd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhNz2uCRA9TVsSAnZWagAA9LQP/i8ApSH0LpR8rLBl21S4\nlLCyPuXRd1szqo6oUARnTncrwgaO1BfGkInubGDjKtZXPn8UhoaH148IK80j\npZuBi6mcqLFgpeXG26cd8r4+XRHPJk+VRhk9+EAR7sieXN195+JRQ1271owZ\n7aIJ1KO7yVgHo2QfAFHGi+GUyQMIyS6+Wv4zoKyGE2ei3pPENDLNREJesogG\nMb9eajMOsY7ItVPQUUZLVqFSEUNk/NrS1plQiVkPCdhp2I/RJuCYXDhvIYH+\nRiIi/s6wjEQaNwXewAQBSC2hvbgRvta/KN/zVarvqNJMW2KNlzcO9T2OuBLj\nvRrp+p3PGzBJCYB6W0bQP8TGG3HoFjKu1G5oaaLA5n1JB+GVb2bMOfKCUV/k\nj/bbHBUdTzH+1YN3A8w1g86EZbi0Y9HOkmvVIoKFT/0WKSNp9GVKCrr9IdJe\nUdrOpmhYMSbq5L7vh6FGPQRO+LjblAONb4cdhKqWPGj15OpEQDRWwIYXL1UO\nKdgh5chUb8uUIeGZX824lazZVMtGP+YF/HieMJi6nYrpNysJIYENYkSJcWX8\nlqXymwzoCZSl61EOR28OlHwMMNq0wy6+ZtQp1iMK7YH0mEemzmBP+RozJZbT\nxgrEMiGNrrWbldq+wFH1HZH5DLCyF+xqq7SM9idtg/iHtzK3sN2IIT2pilpe\nGxos\r\n=vWoy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"960e515c9c46ca81e0a83aea14685a2764bbacc9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-07T10:21:51.895Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.21_1631010222735_0.9557536990184086","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.22-renovate-external-non-major-479ee0fe151a8a707adf507e69c6d84538da2864":{"name":"@balena/jellyfish-sync","version":"6.1.22-renovate-external-non-major-479ee0fe151a8a707adf507e69c6d84538da2864","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.22-renovate-external-non-major-479ee0fe151a8a707adf507e69c6d84538da2864","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e6fd5b00084d42c09b33f9607a44cf436dab1175","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.22-renovate-external-non-major-479ee0fe151a8a707adf507e69c6d84538da2864.tgz","fileCount":24,"integrity":"sha512-xN7RQAcGJTy42a5u6KNneCWSSdmC+uTW7vO4NKHzfQmlZjI5ovwAcjYCM6FVW/YDu63aAMFPAXPxrXH41E71nQ==","signatures":[{"sig":"MEQCIDTz0PM9GrdCUdNtO+UxjghyFt1Um6AzIZT4ejY1VjwMAiAKMRaXHkQBbDZ5vc0tc7FU0ACf7B+79p8YWbRF/T+Heg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPAR/CRA9TVsSAnZWagAANdsP/Rt3f8qVw9eB1oMojrh3\nBIr3OHfa517z5P3IcEO/D2zm4XwjtwuaGPIUaExHuZpG8qwuE8jFeiwFp2hk\nq6JULuaF05niZq7BLOmU7rsaY8kydQo8eU992E03xsQHQ4PcFGnQLWtidfhx\nWxuAcKKidGoEeCEbv8Uc6AMBKEuVK8l6TgF3F4g4QBslkqyVTZtTn2v2Fgu4\n5VDYuOuWDuHdKXCUQP7mqG8QSe+aKin7Pzwbw0s8I0RAvame7uy+mpdYljVH\nJ3EbRbS5Hm16cXhotybXjfwv9sdPN4bJ6Hpvumv1gaEcvSWrnyz8ZG/PxAW6\nbQSl5YMOYljdCAHkj7OpMo67SzKv5Q+hUx4f/veRh1t/LdiS3l2cSUpqXkAp\nRtJtSNPtTiACIg6QN4IiDGdoA0MvfdxyaHyb8dKw34N7IzY2P5RCLJ20uYuf\n17l3VY0B3TsMQcxAfM/XjIh1Q2ZpEeCexV5sb4P+6svRsQoeFwz4/razOh0/\nPe01CaZ9EL/KWPrmzf0tVQEpea6BACSPCvzJFT0CyOZntp45wvhNMqhd7sIV\nG26hPgWePmLcJq/VgjQbbV19ffzWX99iZps6fHj4oabXsTGQq5vu+deRdNN6\nUCuye8HQOAIjXq56yAIVgRrrAMP3gSAh1uFdgiuIkmEXS+t/tmiJrF/2tVd4\nFY/a\r\n=Pjo2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"479ee0fe151a8a707adf507e69c6d84538da2864","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T01:18:41.688Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.1","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.22-renovate-external-non-major-479ee0fe151a8a707adf507e69c6d84538da2864_1631323262992_0.19576068804145752","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.22-renovate-external-non-major-3c02f2789ec35f20ed248d09f5707cbd4a37e732":{"name":"@balena/jellyfish-sync","version":"6.1.22-renovate-external-non-major-3c02f2789ec35f20ed248d09f5707cbd4a37e732","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.22-renovate-external-non-major-3c02f2789ec35f20ed248d09f5707cbd4a37e732","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"647aecb244c3e1917702de179794325b893b13c4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.22-renovate-external-non-major-3c02f2789ec35f20ed248d09f5707cbd4a37e732.tgz","fileCount":24,"integrity":"sha512-AQOBUr/REUEyVIU0O1eOGNwvqZZHddJG3C1zFjnhv7NXiaPo6Xj+GeKi6K1yVLcDZS2Uxh/FlGR2MCMc9tj1lQ==","signatures":[{"sig":"MEYCIQDrKzsjXsIdePMcZX3LcUHIU8kC7wZE2fs5faUgJbe8RwIhAK37bSnD2QN/u9EdMI2+tlbXDmXjha18Tiz34Gj2J6WB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPCQiCRA9TVsSAnZWagAAdFUP/i6zKvbl50yRoyDU1gyf\n66zTuv7nYNXOZTxQkzQpxiwtm3hCWgb/SyRsEIG60DKnyEa27BbvTDfNFBw7\nNSjchDLfho7TQ0A8RtvVgWo5aN30SL2irVS8k0FPg+CynBw9plkItE9y6ODF\ncLtwhwplJgIFt7Dbn+mX6LTn54KNvFuNbc2ScOd9jIQj4tlZL2Wv8KUuDcIC\naALbangGsl/ZnOwey4EYErwmk0CJcRhjIhwvtvVWWz6okzEyx7qZUufn8kt3\nEkMMAfU2Jr/UuVVSQlXE7F72MkERzhMt9A8YPrZzqX0mkiYCt6oAYflaX7tT\nPCBeKYQM5C5VzEx8HVEBbMG5GMjuJ0p2TxdoOB6dKNi1ECKbbN7BhgYcIGmZ\nm1P3xPZ2YN1RWhkmI0GXEwS8Zw5N0SA4HkJ8h/bRNyv+LlBJiVAmz0FbaSuD\nAhlJ8tYH5ZfEX+moQNln6Thbtswht2bXZx6uuyuX/w5kUkDirk73u1ujJZK+\nLDe1KllpNDbzeU6SpDjFjiAHcEoozYf1em6dnzeTtWInjaCyO/0+t6YiNdYJ\n6/mi5MHkMcMrpZ0TF7fBMXVTJIrbj6TxuAAkZ5V1OyWfCT0L8f7AaDMzdsus\n0a5Z26PY35LhIo0VGRNWN3YqxB6tPSmlfsQ/CQz9nl20YuhwXVaa/I3qsHYn\nQbPv\r\n=W1ur\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3c02f2789ec35f20ed248d09f5707cbd4a37e732","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T03:32:08.463Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.67","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.2","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.22-renovate-external-non-major-3c02f2789ec35f20ed248d09f5707cbd4a37e732_1631331361813_0.622210409521865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.22-renovate-internal-patch-d3d1b965a633529903b755b66026bc7865a895c8":{"name":"@balena/jellyfish-sync","version":"6.1.22-renovate-internal-patch-d3d1b965a633529903b755b66026bc7865a895c8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.22-renovate-internal-patch-d3d1b965a633529903b755b66026bc7865a895c8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"575c57c104f299ec75f405183b8861c4c6c306f9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.22-renovate-internal-patch-d3d1b965a633529903b755b66026bc7865a895c8.tgz","fileCount":24,"integrity":"sha512-HPTkOovdbi55ZsXAsIwUCi0BBSbefjzLRh1Jb7wrSANdcqHoi1pfnQusuUtOdJRw97OTN6gYjwEwpJpm4QtOog==","signatures":[{"sig":"MEQCIHVsctZ6XmHUb8qB0QFRpknkEz8aCLt3QPl66UCU99cpAiB2lLAWEyfwhrB6KBCG/l4a3iW8aD0L7r2I7v1OpgdGkg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPEJ6CRA9TVsSAnZWagAAvegP/0KxLV9B6tgkSgcTGUIw\nHrw7e/M3HnlkxDROlKvzEawGTvybjmmqOmTSScF9w2eBdh1sguNfzIm0cvY6\nVnFRK9xr/+MOhOPHVDLPuifFSFhv+yGO9m3vjRxMMitKCqWFJzSkvrxfmXyM\neeBN6LdwL4TDsyJcsQWewbKG2o7op/+RcFzSM+RnjT19ZfqR9+JCN0cdqAt4\nTB5bniAJ2YkHKX27+tNrSSiyo5lYIKl++LszqQOZp4J7PICuD1Y8LaYsUALz\nLmXPcVZpjOx1UPFwfWm7xXNlCOuzYdQDKT4TCZ6F6KfJcrhluVLTULhK9wDw\nEOjjstKs8OYB5YYb4N3EwMpo3IGj9+ycXfD7MPEGQIFMOhm4Ajv/0d8Xm0MH\nPYrOqUqc5Fgkgkwz1rgK5t/G75c/KLDue1TAP2mUMq00yq/7kV1sHaBSpztz\nYfNoMOhsPc7/4rJiiFcpdsQOdlvmbqZh7/78L7Ka0h5Ub4FuetDDkawTwmxC\npcQYtIWJvSAjk5SYDhMmVxPYCKVsesxw6Px37Jq9WypHN5npnLF8YnpdFq/R\njMWM07j3HwlGUvGNFphxknSI8yj59tIR3D0/gczuxv58sdAuJGuFwwsWANfx\niNcLnVMciuniQeSQpssk3bxCZkVFxtHkZqRYWKzZZO0HQE8p/db8dQ8vpSI4\nsNDa\r\n=0Uvk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d3d1b965a633529903b755b66026bc7865a895c8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T05:42:22.273Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.68","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.22-renovate-internal-patch-d3d1b965a633529903b755b66026bc7865a895c8_1631339130141_0.23701287618166056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.22":{"name":"@balena/jellyfish-sync","version":"6.1.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"55aa45d69120d6f65df018042ce720d46b034b79","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.22.tgz","fileCount":24,"integrity":"sha512-U2GkzgYLqzDu3z05Jk9ZvVzlSMmgVkGbCjKyaGFuHWkI/jxzimOkjBpUvhgakZ/lsQt1VN1Vk3eK4VnRES5Ohg==","signatures":[{"sig":"MEQCIExHnqrnF4Z3XselREMLaoVqaYxFcxjk1/KcButwMS3EAiBRCr1wO3wNMuZFxEFZLXyjTVotSpe0zcewcN8IEo2xGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196684,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPENbCRA9TVsSAnZWagAAThIQAJas96A7BhcVv5evX+Up\nah3AWcAjAQRIf1KNuqQnU/H3kgEjn36Iqm6X2T1Lj43AYyP/JIUoxXxIbxUr\n3OiVIkrOG227zTtaRbM6GkWaB+KCYFyeGwi1mUz8lu4R9tVceXbyTD+1xOaE\nM8ctM9FAOtRfuubYuWARuDO0JH8Q56NfIJrJ+ykez7akhe+FFyiGzcpf6mxm\nrJjwHZeaaTCHQyWCQT5i0i6KPu/Cdxc16z1Mute7s6jXw6/cXmVCii5XEYYP\nEbEALNzB4iPWWSKEtsKEHt4ZZ8TSeaVSzI0OnnWlRjnbe144xAUBvntlbCHu\no8Kr3G4qyDvrjFvJ4OWAxqfCWL8622MQua3IZMSl2/F8tVWwlzQMkqEuLCIl\nn2mTiVvAuF1fbtudnsG9yaQeF8kJ2/udJMKSCS4+b9c/WDyX0r0eLg+qC1UN\n7fnDdMag8q+qgYCS+1KKx4f9P2idr9ofRR+5a6hp8u403rfqqsf+oWYIMgpB\ntFOBXRPogFSOa7fsWczFwiXZLhAwH5H9rw2PQUg4rZHZhXhhrecTFht7+xIZ\nKDsL6PM62izWe30+/aJvQ7nzfZQko1nowenZleuodk6VrPtQvhfoOA+1Ks3M\nasN+XULxU0Ws7VV3EUXs/C4YZuNfBRsR/CaebHoSMdepRt/CVJsuXnk51r8b\n0wK/\r\n=Q9FO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fb9b8c788075aa714e39aa0e0f6f814382eb3acb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T05:47:12.656Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.68","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.0","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.21.9","depcheck":"^1.4.2","typescript":"^4.4.2","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.22_1631339354882_0.49512961875933414","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.23-renovate-external-non-major-9c4e17667563a82611ca328882406848fca93f23":{"name":"@balena/jellyfish-sync","version":"6.1.23-renovate-external-non-major-9c4e17667563a82611ca328882406848fca93f23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.23-renovate-external-non-major-9c4e17667563a82611ca328882406848fca93f23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4d8148e01c7e04f8c53fbbee3b743e556155ea69","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.23-renovate-external-non-major-9c4e17667563a82611ca328882406848fca93f23.tgz","fileCount":24,"integrity":"sha512-yVMfG5T/DeNG3VHgtz5FeylW1xwEuJD6Tvb4jNkdzyi1XbURnGhR1kZeVTUBXY9SaJtexEwRhLOy5OvxVKDOBg==","signatures":[{"sig":"MEUCIQCHrxLvghzj46jMudUj2U27nR8NWSsLxC4VTbSVx8kxHgIgYxJcPjSddevGgGcXqKf8RYKJVVOqrCGE9BCGt/sTcz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196828,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPEQXCRA9TVsSAnZWagAAc2UP/0LIEL7uvKmLyw5/3INu\nldv5EafFEx//h/tsEb5cEKttRoyV/dcqUH4c7Ibc6YZy0WlY2w1kHjwCjNOo\nVK5QgbiyH2KnWGiqnI/LAUOF7HIaM1yNELfu5Lzxl0XI5rBiQ4tSK2rLp/YM\nLeB2fA+lL0NxJbISlSLb6AO1Hgo17EUxaSATrJTHiSfLG1bYOKR4VVOV3Sgy\nanPE3TZdCQ7REo9/wH9++G9Hjg2wrrFgXHoNFvR3S42kdMFiOfqY6YyKLqJg\nL/szwhAqazufytD+wlQXxwKSD9wTaWD53BvwPZz6E8lOMNptUg2BLyUJove4\ng/9LW25JE+GLuHAEgpapRKprjvqpTSV0V89P3S8wC7MwmqxrtFymjO7lssP2\npwW/vAuwbvg0Hgx2z62MgtDQQ3oFm3g9OMZUwTt6qLR6wywpoF4IKWxM1y4P\nTOTeYa9Tz2k98ht+MfhkYz8waCJhs/Wcki5Cozjzb66uy5DlQJaBndzfhqlr\nd3M88bNB2Xu3J/cXE0SBo3GR06We/2MkNEW8NaCMzbb3Z26axFxZV8GDDwwx\nGyUERo+S9G9qsBF/+/3V3TzySa7Cz4NpTrAQj7/86wN6PjsbHxkKu5Carynt\nrmeotKxPje3UBnn9h5Eh5M9FXkMUNDNPA8lhfzTX7FTcpGEkehdmI6pomNLC\nr8lk\r\n=7jjQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9c4e17667563a82611ca328882406848fca93f23","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T05:48:47.595Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.68","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.2","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.23-renovate-external-non-major-9c4e17667563a82611ca328882406848fca93f23_1631339542856_0.2022811209051265","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.23-renovate-external-non-major-d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc":{"name":"@balena/jellyfish-sync","version":"6.1.23-renovate-external-non-major-d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.23-renovate-external-non-major-d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2354121779d5a9b3caa910994fda9716350a80b6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.23-renovate-external-non-major-d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc.tgz","fileCount":24,"integrity":"sha512-KBwtSHpfNb6rBndRtWEuszzos0dV+0zbnOK3pn0eMc1wKgFMjJSLGZ0RzdtQc5f2zgoWisR7iF6KOlF8hmza2A==","signatures":[{"sig":"MEYCIQCzcBu1WtSKu4crYPEzvMummtTkce5mJBPZ8YIlzhjvPgIhAMajesXoiRxvO0PuJ5/6KM8QbuJ/4NWpQYeRF5UIabqM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196889,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPK3KCRA9TVsSAnZWagAAcaEQAKGRNyULtvDB0Awg9lYu\nAXePS2sJakCHBk6yq8HT7CzGJoU9VCVfzy3kVFLhgTzDUnkWi5qbzEyNQnlA\n3yj/O118+7lzS59YZ5UXsucDi8xDkuPn6UH2rmcVXx29ouGO0eY3I8Pbp3J9\nK0OW49GVEe3GKvYXl62MfevMFSqiYQkGK0TUPv1Fy/nDXS3ixTOeP86SAlBs\nUq3BXUanRDRw+hOMJ4t1jncDz8OBD1vMfSPbF3hblFX5H88iw4MEmLHfdLbw\nN6IC2IelbxkOhkNIR9Dkxti5c3B2tlsQWj7mi0pa+/xj1THWklt69G7aqjQY\n1KzA2TpbwP5SA8QnRC367O3flqmu6baSjc/eKi1AAckOAHbtEZgxZ9YNimgq\nrNUN+q16QBM//2g1QbU30IPZltYxiH95nZ1YkmowE+Ql9ZhEH8GLHfVRgHow\nPSDamjhGbj7wjigJg2Il/r6eER0UVA2Q9KhD9iORtpKmKQnYgtZiRRZ5jdht\nhc6pHk99hhSNcC9rZwzekcbjPT+hG/Yey9xlYNh8TsJFlqSaaqRx2dDIkouc\nFJDnk1m535CCa13icZHjrAsh4qf58sykW6HyM3ZxRT6xjKHxaES4Oih6iH3q\naA/8F/hDA0ed+t7XxpPsPtPjTvym/w8ojcZx9rhBOXBZjZj/LDfWVsvFY3l2\nrpaP\r\n=zqxb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T13:20:42.636Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.68","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.2","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.23-renovate-external-non-major-d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc_1631366602391_0.6557667206170501","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.23":{"name":"@balena/jellyfish-sync","version":"6.1.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b488182d1932bbe6ad36a7143db7bfa661987d84","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.23.tgz","fileCount":24,"integrity":"sha512-a4mzaekVhjnh42gCVgrHNU8rq1w7LRI6Nu9YHx3kBkfCmRM0NW3WdINZ63VE4EnVqT7pdPE5wvucQQlFEWgbQQ==","signatures":[{"sig":"MEUCIQC+2KkiKkJRzY94wdIfwP7GEHIQtvdrlly9rIqKGpkdLwIgULnlGRuXH+a2MNFGwzK1RS98BycVPilvh+FIjBJy670=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPK7RCRA9TVsSAnZWagAAJoEP/3/Ca8aa6aZ1WUgIQSC1\nrTn+rU27sfW3PJwOkLSr9yg/BhgYt8x0EgryUGMBjYQds1JTfy4bIJGj6fqZ\npSCGAxwYzZLPRz4RtXds/9qD+cAgmji0jliqPPv2QoIknq6DduEVYRowy8jy\nkzWkmeadgFt2qd4jhNDV7+4P4540s2IffeUpu/skAYzhFfy1uoot2k4Mc7de\netrSBgz0wfz0myEIGEo3AANSqIgM+ms26iJA8ueXUrStOMBV/EjnvjbcMOpd\ncl4GhCyk5YQ/bAE6lNnGulcgUbtj1pisGb/I/IoJJr4/1OxyPOzLUOdXfy+l\nitx+Z/n4+VwsNhoTBUBMxcS8QZcXvVeRjNzaDwGDqVllD+yCNRGwBxVnDnej\nI+DpD1QxHgrigyI3CGUuMrC4EXlNm4RobBOdLdumBhReZ6dKKLmhaN2jj5e3\ndaEvg6GRJXNeAOYnmhpkPhqKe8fD5Ao7u2KdOcbBE7K3cjhD4u4r7mm2sS+d\nZ53+VHxkfftduTcE/yn3b7FkpWYE+2N2jeFac/YcDaK952Hci6q/Eq7IsJLj\n8ajCD9JUb+xtd2OzTUplSN2vJOOWcxddSWW04I5EdbmcfPHeYKh4Bo1E4Q9g\nLmdLmOK94WOVQBzk5AQgF5u0+kK97JgG+nY2oY4HKyKC/X7+JrS5dX1IcG8/\npflh\r\n=+JNt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8cc3c6c415cb84bbb4093b357e7a61203fbfe33f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-11T13:24:37.549Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.68","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.2","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.23_1631366864958_0.31984321204447785","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.24-renovate-internal-patch-0896a9e77e00bd6f12523d9a6214cf7279bdc17b":{"name":"@balena/jellyfish-sync","version":"6.1.24-renovate-internal-patch-0896a9e77e00bd6f12523d9a6214cf7279bdc17b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.24-renovate-internal-patch-0896a9e77e00bd6f12523d9a6214cf7279bdc17b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3a4842a938909a6f8c91ba14b168425847d858e3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.24-renovate-internal-patch-0896a9e77e00bd6f12523d9a6214cf7279bdc17b.tgz","fileCount":24,"integrity":"sha512-KFF4KK4M5rRNc1Qf625hwW8udE6zGbBMnzqN8wcQRuYJD1CvlMlmzvORNiaADQvi8Wr62jzp58x/Hk6SbfztwA==","signatures":[{"sig":"MEUCIBHqvQb4vIFFQkeIDVntnbX7E/BH2HmdsKOho7hElCQFAiEAoD5d4zD9fYOPRvhMXa9QB0RVGFvtUtUBo/Y98bP1caA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196988,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPf9RCRA9TVsSAnZWagAAux8P/3lkufUGr0nPUnxaMOzS\n8RvpN87c5WUVtZ91Vx9sHYIesx7JseBkMn2iigjTabwxY/qhLyhjHBw6Y3yK\nkreD7JZ1ujSmiVLHXa9Wz2Xx1zVr4SZGcozeC4XxGlt1gpannIQHwYWTQ703\nxqNjB4zZfyfrXQb9Md9y18d8y9m7rrKChEhJpbT+Ssw5ZEIRvY6ATQykINr0\nE8v32wPsL4wBLpeydi0O+AfZHUSD3CtZzG3QaeE0vV9Pqyo34dONtYEkl0nq\np5C4VGQ8W/mZnX9Qr2HWKYMduKsSWBDTnAF/8XJ974ghRYoephUFixEeG28f\nKLz3rJiPEUQnrW5BbKfzGem8IVKOOO0jRXHZJcT0klfrZWXCh3eC4E69phhL\nMk2eo4tK+5haGdsvnO49/JdLxv0CuKkHOFrDnajKeifqfIAXd3JfNVWslCGU\npMeJ9VY8kXdyLJvmncORwDxptzE1UeCOeqyLQrwQBURgUgOcBZ5N07KNwS4e\nULw2AuM0O71dOxBrTh255s7oHKiE/teHCs/4FeW569EHrS9A3ngNkdvW9BH0\nJyz2ES6uBgaU7cUgWHeNLgbWqk4lMWPQmkeDIX+Xrl7FLxglOA0qel1FQ0ke\noqAXsQJy6ue6QRCAxWaS1Hba8JqGK2aF4dU+CPgzE3mNjme/V1OUMLlDGr92\nYcH+\r\n=N8rp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0896a9e77e00bd6f12523d9a6214cf7279bdc17b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-12T13:20:42.111Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.2","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.24-renovate-internal-patch-0896a9e77e00bd6f12523d9a6214cf7279bdc17b_1631453008601_0.47877014932862516","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.24":{"name":"@balena/jellyfish-sync","version":"6.1.24","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.24","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9e31eb9c8c5ea040b07c9005c99bc9977ddeeff","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.24.tgz","fileCount":24,"integrity":"sha512-BZSs4/PIHS3ivnohQ1elVCQ810Uuj7wQWF3q+OstLhuHgiL/exQWDfvUHDt3nxww1j0hiF5HEgdtUUCO15CqYA==","signatures":[{"sig":"MEYCIQCwJ5IeqpgH75bdRN3PSZ4aHFY366GV3DUTIATzgl+LrwIhAMLm6fgz0jPR26Rrrz+NSk/53mMm1mwBlGbmjlZJX6xT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":196923,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPgAbCRA9TVsSAnZWagAAxcIP/0lgXoOfW6eZNapGv7qH\ncn8r2vEovntVRW0gXMzBlBhzgB2zL6KMWoEb4Mxm5LPJ46k1Xvq95/hjOdZg\ng0ubY5SNSaEO9sJrwTkhNqm2JrZy+rkTcOFxPmktT8Jja3iyegrGWojynS3I\njW3TdU+HuClxuCztmhh5iw4bfHcsZGWHtZfTPq1kV36pqBmB5mi782RPl+Rh\ni/1e5zDrHGFk1p1c/DosS7qfWqhtyQfMSInl0LJ2X2uLWHUjbYg8haHtX/uS\nkNQVQWUklx/O5b26dXlx4X2genBHl8HnGXL4UctPPC6RcAUvY9LyB0T7iJYF\nV/oOBNdgNn9d1JKTsn5g6DEbYCPXc3pyGNImBStUlAZMJX9z6Rrkb5XYtyhZ\nXiqDYC7qRzjOoBKk5Wsv/xJhsC6Ociugxy0whb9dQyTjYu2uGz0DpLweUIyh\n8SzMf56Kz+D83R2XzIA1jBcuJmu5VdRyTd0yhWs/ZE0GKMH++Gr2/hEY2me9\nBYSq/kANY2c38Wt6dD/dxLPP090lHWrvMnXCM487HwfyCh4F2RXswt1qgHHF\nC2R18O+zutUdmo/rbu98TQDuBNvNITMkGtWj9pVCAOo99axrb4Aw9js3wMXQ\ne7XhSU1FqyrgMUsSOU3MaIua5J6m1SBsoX6SkQxI4keU8yy2cgdjzRgTkz2I\nvLK7\r\n=wqow\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aed64ee521b13c69bb10b17959becc6c6e690e6e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-12T13:24:49.336Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.2","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.24_1631453211592_0.30785428521790315","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.25-renovate-external-non-major-6938de93fb28da10c8f32f98d80ec23609b88559":{"name":"@balena/jellyfish-sync","version":"6.1.25-renovate-external-non-major-6938de93fb28da10c8f32f98d80ec23609b88559","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.25-renovate-external-non-major-6938de93fb28da10c8f32f98d80ec23609b88559","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"60cdda8d762f7fb63a9fc8af6c984fc24c5ea853","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.25-renovate-external-non-major-6938de93fb28da10c8f32f98d80ec23609b88559.tgz","fileCount":24,"integrity":"sha512-zYV9JC/BUj7NNpMBU47FflYGJ5LOsCuBc4dmPGxQqKTymjO+SHGW1AIIANxSi+gtWwIiyMwWhfa2rhR2g8DfOg==","signatures":[{"sig":"MEYCIQDcm2SM3ye0fC5g8FV6LMdxPkqQ3jtCkyakySxgHCo+bwIhALCMGfZ69xoOaNdrW/NTmFY5WC7FA7aiLseaNKxWvZ1p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPgDlCRA9TVsSAnZWagAAvsIQAJH2weTQPJxUECm9J4nB\nocBHvDuPObRW4fm8MSVxfHBmdiHZwFTzINp4URvNUczB4R7gRGKb7xrGKDNG\nPlvODrF83Ycn1xyNDSBoFJxgFGRQmlPHbba+el54rJ0ndnTZD08r8H1wfNVc\nBnuUr95vtJgabQums8Y6CXPrNMT6JU9b9tt5TqPnxfM1Qx/k/FYJGoTfLbQZ\n4wvi2cdj81p64aW0rb5+uVV/MGy1Q4/W8pi5VcwYvknpx8xUzsCZsa+l0Hj9\nYsvO0d4naxmeQK4zPjKY7PDEGJo/iwW1VaN/9vNxg9de0QmGjS17835VruPc\nQeOSBPxCwqO2r6zU+U4YmHVNJCxSh1ZLUStFjfrcuhZL8O+0fkrMexky2lm3\nyYBd2HEmW0SKf7zanfhoMvLxlFZb6vEO1IgGL+W/Jusrf95Z0IWjVD3IEwmS\nuIimtphzc+k4hrC4hzPGKLb6g3xTesxEkK6yMJFq4hQRz0rKxnDFASfzEa/I\nZofxd6loMsa6IMA+YPM1qMN1z/MOiiNAIErRHEzxGdXmmRmhJTnuQNDcLU62\nKsVCfOuHr8us+pss3sfMgy174ZQyGbO7++ePdH+85VGjQj4ZB+pZgEqJEN1H\niJcv0bkuCWXKlxiqhWW25lwUuLfWzXd/ThhHVgcxTJ1V1DJHXefFsBqXXC8F\nkZ6W\r\n=VJJh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6938de93fb28da10c8f32f98d80ec23609b88559","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-12T13:27:25.962Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.25-renovate-external-non-major-6938de93fb28da10c8f32f98d80ec23609b88559_1631453413188_0.961400707142112","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.25":{"name":"@balena/jellyfish-sync","version":"6.1.25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f444775d97dc7b42b08183ac9f9bce59be57c428","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.25.tgz","fileCount":24,"integrity":"sha512-XPAw35NxICnkPSIZOyxJ5FIyOH7GYLHIYLwbsKTUIVfwAC/x0/WF+W2IrLtsYeG6TiCSf8JoPyU1tu9gUMMC6g==","signatures":[{"sig":"MEYCIQCK4afIeoYIj6qYqs8q4ZBckOY5Bq3MbUOKDfsMkNJezAIhALCrviPiAGj0OCqXsPuP5DPFqWE0dGQT5Tv0fn4EN/nd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPgJkCRA9TVsSAnZWagAAdhoP/0281FApOIdj+3dZg7ip\nFK+Y4XmHxuLaG4SMRktKSSEVhiGPX8ZzHWNvGJEvUYM+TLtFQiLADyd25Mlp\nr+kHco0qyUWJCgxkWxrhpLYvEkfzKTEDeaj4WgoTCW/LozcUby3WO4zkr4Bm\nvchL9egtobhzy6P5bQ7SKe1yyqR8SlYxIkcI6U8wD7gppyaRU5MBsfdoqZ0q\nMBaiaiX8rd+bYVmNNtTmPKbiAnA0zRaAkpyZ5pxkBolOKUVFx91Etaz7UEPd\npSyf15UElC7m0Mj0YrwfcpALEm4lEkYa3Jfl3et88Pn/PsxjbE8iI5DuD59g\nSfVcuoks60dcyQc6WOd4Jbg4mOQvC0RHPv1gCX8tm994kwEoZDoFlXE55pMN\nRY/zOrDeVy0c18lIFnL+4HT/zrLFH1jH4xICknoW2w50+TWyhdxM0cOrwCU3\npKWtxsOjBtMRIBbdpAPrzJ3m5uAcK0+7Tsb3Jf/4Csa0fAoRypAezfTdcpHE\nLZJb59XTztXjzdyqwmX6dlf+uHV800mOrVbe/d+4qO9JNm62cdnSPsiwBCOs\nBduV7CnQUSQghia6dMJ00SwPoUGlUrtkBAppbi07j8AVFS5zCtbybOHNXdCH\nCsMthP2kqNHY4rs5Ds/RBauIJWtsFtOR6Z6qCi7n5+pOfPDr4ebSLYSwCd/0\nsPco\r\n=HZVO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2d75e255f7cf736dffb151cf0191de4ccbefaabf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-09-12T13:34:51.915Z"},"_npmVersion":"6.14.14","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.25_1631453795968_0.26091178829161565","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.26-repo-sync-jellyfish-config-default-770f15d3f86a211a47dad6a9aac999758a54b84b":{"name":"@balena/jellyfish-sync","version":"6.1.26-repo-sync-jellyfish-config-default-770f15d3f86a211a47dad6a9aac999758a54b84b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.26-repo-sync-jellyfish-config-default-770f15d3f86a211a47dad6a9aac999758a54b84b","maintainers":[{"name":"iayanpahwa","email":"ayan@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c8f1513a2a42ce81a2bdb7b93967410084f31eb1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.26-repo-sync-jellyfish-config-default-770f15d3f86a211a47dad6a9aac999758a54b84b.tgz","fileCount":24,"integrity":"sha512-ziw0Rany6TsnGDP1ewJvlVk5NM1kRlvjjloq8XTkNlssSFcBJQhf4+kJCfM/EoRU44HHaVXW51RUwwW+y/ibmw==","signatures":[{"sig":"MEQCIC7RFOJWclUOMPWhUzP3aToEPT30Znn1lw5TKTORsrwBAiBHf1ZUKsfgHaQWL78ibou5eB5cmZgZKfOQIoAcLgaDwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197177},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"770f15d3f86a211a47dad6a9aac999758a54b84b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-04T04:28:13.560Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.26-repo-sync-jellyfish-config-default-770f15d3f86a211a47dad6a9aac999758a54b84b_1633321897695_0.9475150639277037","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.26-repo-sync-jellyfish-config-default-93d3a4ebcc45a933d49070f7de998f6b66d913b6":{"name":"@balena/jellyfish-sync","version":"6.1.26-repo-sync-jellyfish-config-default-93d3a4ebcc45a933d49070f7de998f6b66d913b6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.26-repo-sync-jellyfish-config-default-93d3a4ebcc45a933d49070f7de998f6b66d913b6","maintainers":[{"name":"iayanpahwa","email":"ayan@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9d8d1671ae2c3c728742eda5d62d731692bfbd88","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.26-repo-sync-jellyfish-config-default-93d3a4ebcc45a933d49070f7de998f6b66d913b6.tgz","fileCount":24,"integrity":"sha512-tYE6DQLoe4J/rzCOS3FVhkYofSCxwNXCM5kZUug+8T5Sn9a/KNylsZgi82KMbwzJ5YcTLalMS/8zEP2e5KRrYg==","signatures":[{"sig":"MEYCIQC8zgnGXmn2l8OSd7Vpu/lUqTIhu08rsamo9iu/rKvxdgIhANje1ZhlncHkMU46gQAUfgK3kb1/KjLuM5FYaEVzYS0I","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197177},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"93d3a4ebcc45a933d49070f7de998f6b66d913b6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-05T00:32:10.884Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.26-repo-sync-jellyfish-config-default-93d3a4ebcc45a933d49070f7de998f6b66d913b6_1633394076856_0.09494414863758815","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.26":{"name":"@balena/jellyfish-sync","version":"6.1.26","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.26","maintainers":[{"name":"iayanpahwa","email":"ayan@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"nazrhom","email":"nazrhom@gmail.com"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"98a6e8eb01e25001ae6e5792773cb4213615f8db","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.26.tgz","fileCount":24,"integrity":"sha512-kYXmlnMMqy+QAUBHmoPJgL/+fepVzJh9PJ4vlBRXC+TY4Mr2KS2TN5LWvlIAdMwcop6B+j/NlUf7D8BF+0gjfQ==","signatures":[{"sig":"MEYCIQDMZtO+eO7Mi7sjGnL/eRrT3JrQMA33XcPl5h0asZrfIwIhAJCpalkhKkSOrLCFtI6DZhJRhjMJtYwPXHxEFQKlSQUi","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197101},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dce3df01a3b48f9fbcd0f1f4029c18db323bf173","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-05T00:38:21.230Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.26_1633394406977_0.081885353498234","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.27-renovate-internal-patch-069ca80342b178a8f86d4edde0e3ce1a8ac5ce78":{"name":"@balena/jellyfish-sync","version":"6.1.27-renovate-internal-patch-069ca80342b178a8f86d4edde0e3ce1a8ac5ce78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.27-renovate-internal-patch-069ca80342b178a8f86d4edde0e3ce1a8ac5ce78","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9f59f92393fd7bc9a5735cba6a98ce0471e2061","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.27-renovate-internal-patch-069ca80342b178a8f86d4edde0e3ce1a8ac5ce78.tgz","fileCount":24,"integrity":"sha512-OFSKsQS21Lag6VpoGJ9NmgNfF6uYa43t/Nt65oHc0H+wdwptzRME51E/bXR9ykg/CpjtSY616x/C/7a9E5shIg==","signatures":[{"sig":"MEUCIQD5x55R9+f8MMLAxFN7taxfFhhWY1p6dV1F9oN7J+g54AIgEmqdVOqWyycYdFL7Ca9Yi8Ab19uKL/xdsmrxD0iYfw4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197237},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"069ca80342b178a8f86d4edde0e3ce1a8ac5ce78","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:33:19.537Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.27-renovate-internal-patch-069ca80342b178a8f86d4edde0e3ce1a8ac5ce78_1634596578691_0.4450451931279451","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.27-renovate-balena-jellyfish-types-1-x-7f8c1ea983c461c6908fef40422fc2c4af53fa19":{"name":"@balena/jellyfish-sync","version":"6.1.27-renovate-balena-jellyfish-types-1-x-7f8c1ea983c461c6908fef40422fc2c4af53fa19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.27-renovate-balena-jellyfish-types-1-x-7f8c1ea983c461c6908fef40422fc2c4af53fa19","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0d4007c73fb7627a51f0e8ab5db453ba66d335d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.27-renovate-balena-jellyfish-types-1-x-7f8c1ea983c461c6908fef40422fc2c4af53fa19.tgz","fileCount":24,"integrity":"sha512-gnayv45SFd4MT8j3MSVaEi/4ekLr6pdalKPnV8K0byl7a6mkPrhY/mPe/bdhP8S/j3Q7LjF23ELJ2Ilfq/RDnw==","signatures":[{"sig":"MEYCIQC5fsFxPUD16M4iM/oNSmKMsRkU6QGUV+p9hlsd4p9ffAIhAPxc3X1AUpJweoBIW9q0ir3S7iQGz7h0KWXmHc+Hj4sF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197279},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7f8c1ea983c461c6908fef40422fc2c4af53fa19","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:33:40.779Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.67","@balena/jellyfish-logger":"3.0.69","@balena/jellyfish-metrics":"^1.0.341"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.27-renovate-balena-jellyfish-types-1-x-7f8c1ea983c461c6908fef40422fc2c4af53fa19_1634596593143_0.056605405778852314","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.27":{"name":"@balena/jellyfish-sync","version":"6.1.27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.27","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9e7263adc288efb1f81b5a898c9252af3908dd2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.27.tgz","fileCount":24,"integrity":"sha512-RFytnry1fl6dczZsc4XY26nFUtGHjVtQkk0QDDfgLPCjvf62/GzIUL7ZxvF2mvTqUYULKWexglzC7/27Ybspmw==","signatures":[{"sig":"MEUCIQDih13hUcpYcnAdsl+3RZhccbReocie3ZTYoi5SMDrsDAIgCmYi61u1gBoK0rA6/MJAx6CqCNO6KZ0vS8b4m4lEXyc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197172},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd3ebbb6c22a2727a4aa5cc99b45da39f9718927","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:37:49.622Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.27_1634596773213_0.40380306019359","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.28-renovate-balena-jellyfish-config-1-x-348da0a1d60eb0ab2fc2cfeff105365fc9f01655":{"name":"@balena/jellyfish-sync","version":"6.1.28-renovate-balena-jellyfish-config-1-x-348da0a1d60eb0ab2fc2cfeff105365fc9f01655","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.28-renovate-balena-jellyfish-config-1-x-348da0a1d60eb0ab2fc2cfeff105365fc9f01655","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4c5151e8dcba10e08a612299b2336e696ba9489f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.28-renovate-balena-jellyfish-config-1-x-348da0a1d60eb0ab2fc2cfeff105365fc9f01655.tgz","fileCount":24,"integrity":"sha512-tb4+HGNnv9rpOzBpEyIRCuIuC1nnkV6eldOsjjWDr3KcqsOPVRUqO5yFRyk5zdt0qlkx1+cM+ofWjCElPZ26+g==","signatures":[{"sig":"MEQCIFIef4PJhLapGcqMTD516bPWtZHtDBqJQipNQPnJ+6bxAiAc33b6nzh9M2UNWLneMF6XTvlEe3X1pesab+YvClbovQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197352},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"348da0a1d60eb0ab2fc2cfeff105365fc9f01655","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:41:09.892Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.28-renovate-balena-jellyfish-config-1-x-348da0a1d60eb0ab2fc2cfeff105365fc9f01655_1634597094402_0.3471530689365965","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.28-renovate-balena-jellyfish-types-1-x-cf6377addb8c922ce273a42f4ff3e1708fa5259c":{"name":"@balena/jellyfish-sync","version":"6.1.28-renovate-balena-jellyfish-types-1-x-cf6377addb8c922ce273a42f4ff3e1708fa5259c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.28-renovate-balena-jellyfish-types-1-x-cf6377addb8c922ce273a42f4ff3e1708fa5259c","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9b65c9b15d485db3935239be21be84e54961b49","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.28-renovate-balena-jellyfish-types-1-x-cf6377addb8c922ce273a42f4ff3e1708fa5259c.tgz","fileCount":24,"integrity":"sha512-nJis/Q0O2cSibwzY5QYs2gnb+N329lf0mcXlVCbbD8zqGRYMccPOFkC+ya/VX0NHPR5rNnE2YWa268AbtLQp4g==","signatures":[{"sig":"MEUCIQDsGo600I7QIPz/nKojUg18sf9L3isR45a2zxHRsxWr8gIgXbp17MaNy0/woDxa7+0VQXYXXycoGNmqcWh7jQKZQ4E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197350},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cf6377addb8c922ce273a42f4ff3e1708fa5259c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:44:19.645Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.4.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.28-renovate-balena-jellyfish-types-1-x-cf6377addb8c922ce273a42f4ff3e1708fa5259c_1634597208639_0.5589795031033686","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.28":{"name":"@balena/jellyfish-sync","version":"6.1.28","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.28","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"efc8b4189603c4c5e1b2a5f5aca6f39d44dad671","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.28.tgz","fileCount":24,"integrity":"sha512-iPOsN6FSAaSM4DT/z9J6DU4Bm3qK1M6qy4LzE/R9aXufI+ugD1xiXktMK2QCOVn9Aqv2mlk0Bz5HzHr+KqNlNg==","signatures":[{"sig":"MEUCIQCJnQjTfW8SCyKKQNj+YulXlPYS71/SD0fEs+Do5/5SFAIgH9Hp6RTorKE05HK5VrzGRURe9e8HrQmdYSJcYoWZlxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197274},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"64cfbcb678aad081d596442c67a622c799974e3f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:48:28.928Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.1.2","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.28_1634597412579_0.14217789487387145","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.28-renovate-balena-jellyfish-types-1-x-e5d65d419615533cdf9b76fc98f77759402a505b":{"name":"@balena/jellyfish-sync","version":"6.1.28-renovate-balena-jellyfish-types-1-x-e5d65d419615533cdf9b76fc98f77759402a505b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.28-renovate-balena-jellyfish-types-1-x-e5d65d419615533cdf9b76fc98f77759402a505b","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4181d8d87e56056374d4c7025b4ebb25f32fb90e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.28-renovate-balena-jellyfish-types-1-x-e5d65d419615533cdf9b76fc98f77759402a505b.tgz","fileCount":24,"integrity":"sha512-mgJ7eUAJDUoZavVL9utv1cuNUtd2FtR1WwFlDHtuirRchnPgjLf4rWJBBDM/SydyfJeXqq++R3K2Gd166uw7/w==","signatures":[{"sig":"MEQCIB9wjTVDLNXuRzNd2y2XaFvNFu661VHrU/U7YQkviytnAiAe4wnQSsAd4xo/Ovuz6GBtGvM1nu7T7LPtLjx3TiaEHA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197427},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e5d65d419615533cdf9b76fc98f77759402a505b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:50:49.147Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.28-renovate-balena-jellyfish-types-1-x-e5d65d419615533cdf9b76fc98f77759402a505b_1634597635190_0.6333072595691518","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.29-renovate-balena-jellyfish-types-1-x-58fa74fe31b40490be973fbac6b3cd1f92a936f1":{"name":"@balena/jellyfish-sync","version":"6.1.29-renovate-balena-jellyfish-types-1-x-58fa74fe31b40490be973fbac6b3cd1f92a936f1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.29-renovate-balena-jellyfish-types-1-x-58fa74fe31b40490be973fbac6b3cd1f92a936f1","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2eb2f321c0138fa7ecf8f6f7e5e063350e870792","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.29-renovate-balena-jellyfish-types-1-x-58fa74fe31b40490be973fbac6b3cd1f92a936f1.tgz","fileCount":24,"integrity":"sha512-E9M9uJsqCXRQrJhwvO+j+3ALMG8qAIgpg/3toWYaovEVVRevIYyY9PVxbBxfbrZMVvgYCXmmHoJx/G3ID4YcSA==","signatures":[{"sig":"MEUCIFgXnxuhNA1DZARcWUHz8BSZy+i9CAZuy/kFZBk+jfUiAiEA3qtzy1Kp348chZGonefQjofh520dSPyE80pMdjnZj4o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197452},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"58fa74fe31b40490be973fbac6b3cd1f92a936f1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:55:59.485Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.29-renovate-balena-jellyfish-types-1-x-58fa74fe31b40490be973fbac6b3cd1f92a936f1_1634597907528_0.01955197913728468","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.29":{"name":"@balena/jellyfish-sync","version":"6.1.29","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.29","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"23367c29174681ae2cc29111a843cd594eec6eba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.29.tgz","fileCount":24,"integrity":"sha512-lqj+kZSMZHnynHtrvtfnMT8Yw49ABeeduBmrYxQ+tTQiqpJhX3VzEStJJNzBvfVjxCn6DWMCqAhoiV2sgkt/QQ==","signatures":[{"sig":"MEUCIQDlm6SM2gnPsnYLh+12Bugrz1i8XfHP7J4ph7dOITRgDAIgaaN2tgYCK8G5rpildQHeYNofA53soR1a6s69dgH4amI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197375},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"51a66e25d5d07f640136bc79c4da37ccd2d199bd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-18T22:59:44.790Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.86","@balena/jellyfish-metrics":"^1.0.343"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.29_1634598104397_0.7104878484109252","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.30-renovate-internal-patch-1db9388f6aef529792611de6e9278f0a8951ee98":{"name":"@balena/jellyfish-sync","version":"6.1.30-renovate-internal-patch-1db9388f6aef529792611de6e9278f0a8951ee98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.30-renovate-internal-patch-1db9388f6aef529792611de6e9278f0a8951ee98","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"625f63c0f343707fd85a936212b33b4126bd6e91","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.30-renovate-internal-patch-1db9388f6aef529792611de6e9278f0a8951ee98.tgz","fileCount":24,"integrity":"sha512-9uaNU8zYLMwb0WoS1hWVXkEG+AzOsRfWcLKP0gZyqAiJq6X5+0+MZurafiw006LlRDrgyniiPRSUiiWZR30jUA==","signatures":[{"sig":"MEUCIBuMNwJg5y4IobYXS+MhbMLEe1eXY8BCctVkM/JlgLh8AiEA1R53X6SmJ6JCDkra9CXhKORodZ1SYi1b//uH/paKo+w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197511},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1db9388f6aef529792611de6e9278f0a8951ee98","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-20T05:50:15.618Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.87","@balena/jellyfish-metrics":"^1.0.346"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.30-renovate-internal-patch-1db9388f6aef529792611de6e9278f0a8951ee98_1634709230263_0.5787841337524571","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.30":{"name":"@balena/jellyfish-sync","version":"6.1.30","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.30","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"93404f563cb8beb2e62b1e0b1ea5846b61427893","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.30.tgz","fileCount":24,"integrity":"sha512-1RAr/hHTBZAtY5Fr1wSOfaaZTjJB5a1wtaCtUzEZhpFndOF6+frlTpNEgFYUT8IUKFOlx41/YK8wYo45tlSobw==","signatures":[{"sig":"MEUCIQC6MANI1a9Bp9FG4MvPkkuJQE9b5QNFeRX5QmVP1yqDHQIgcHWtKm/xDtqIi/VKOGTYbK/B6kzFLCQcOop2xiiyURs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197446},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5416fcb2c4fd72caf417a7658b058c492d5d7068","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-20T05:55:16.690Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.87","@balena/jellyfish-metrics":"^1.0.346"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.30_1634709443427_0.32341742433144605","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.31-renovate-internal-patch-bc9d29214159f14f97a8360dd0b62f77f2108170":{"name":"@balena/jellyfish-sync","version":"6.1.31-renovate-internal-patch-bc9d29214159f14f97a8360dd0b62f77f2108170","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.31-renovate-internal-patch-bc9d29214159f14f97a8360dd0b62f77f2108170","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6a71ec3cd87086b7733bae2a57d006e5870320ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.31-renovate-internal-patch-bc9d29214159f14f97a8360dd0b62f77f2108170.tgz","fileCount":24,"integrity":"sha512-/ZO2PMNJiW/fxDO4WtOpDQJTa7/5zJJNFSU26hD6iSePmwqNStbDGTWfnyoJVy9Fh9tlHummBw5MHvvdaMPZYw==","signatures":[{"sig":"MEUCIGmFDVssQumCC0VhkaTB0TDHs1vLvb+8i9dC+wmpuna3AiEAkSZvekz9k+TGmVVq8k7qG7SkG4x0GiXuhCEg46AjjjY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197616},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bc9d29214159f14f97a8360dd0b62f77f2108170","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-22T23:21:50.363Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.87","@balena/jellyfish-metrics":"^1.0.347"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.31-renovate-internal-patch-bc9d29214159f14f97a8360dd0b62f77f2108170_1634945084176_0.8456614997968912","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.31":{"name":"@balena/jellyfish-sync","version":"6.1.31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.31","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ccf325dfdad346f23e1a364939f4e865eab7fbe8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.31.tgz","fileCount":24,"integrity":"sha512-dbyJbklLI9gfglavz8fkUqDuJBYh0gs31yWHXOVO6tRkvK70fH1UvNxvcPT7v2HrbAhQAbuyDLUBvKqVY9Srvg==","signatures":[{"sig":"MEUCIFAXvrFAPFWifTapvcIzTGpLBcMPnKFKImt+j1xAYMApAiEA2p1FSCzOifLCZ1qgEDEtg6rrmCSGUg27W/tYuCEhwLY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197551},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9e34f4a66a09014d117e4e59592e9e06447f0a2a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-22T23:29:42.331Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.87","@balena/jellyfish-metrics":"^1.0.347"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.1.1","nock":"^13.1.3","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.5","typedoc":"^0.22.3","depcheck":"^1.4.2","typescript":"^4.4.3","@types/jest":"^27.0.1","@types/uuid":"^8.3.1","lint-staged":"^11.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.2","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.31_1634945548576_0.6330329765875586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.32-renovate-external-non-major-8376ddb4d130a01b437ee6b32e6dea067de52319":{"name":"@balena/jellyfish-sync","version":"6.1.32-renovate-external-non-major-8376ddb4d130a01b437ee6b32e6dea067de52319","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.32-renovate-external-non-major-8376ddb4d130a01b437ee6b32e6dea067de52319","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6d99e769e42451a06d442ab85186968bcb958c08","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.32-renovate-external-non-major-8376ddb4d130a01b437ee6b32e6dea067de52319.tgz","fileCount":24,"integrity":"sha512-JQ3dTcCOc3CVr8R7/S4oxR40mArulweap4f+PCBqVuf2XHx05MOtl+qG6jG+HX2/VUAQA9gtuaUinNDI0WAuOA==","signatures":[{"sig":"MEQCIAUh4Uo/DJTRccDSZXPqwQgwhbhRKNUmLmBemdNDe7hHAiBi7Ubgtf48D4VicaQSYlpwtNMVlRch3A6VfTrWT6yY+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197695},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8376ddb4d130a01b437ee6b32e6dea067de52319","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T01:44:49.938Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.87","@balena/jellyfish-metrics":"^1.0.347"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.32-renovate-external-non-major-8376ddb4d130a01b437ee6b32e6dea067de52319_1634953659697_0.7892045885115402","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.32":{"name":"@balena/jellyfish-sync","version":"6.1.32","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.32","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6c81cd4465b4ffab9b33f4e562a55cda413a2968","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.32.tgz","fileCount":24,"integrity":"sha512-T8bgmyK1hlIp4J7M4vTCIGmSQWxSeVsbl6ssdv6AhYKh/Z68DuFWVxEu3r7s40bFLDMt1bOeg2OJQDe/UB/NEw==","signatures":[{"sig":"MEUCIQDskBFqGhjSThLqo6A/IhS9vQaa1mlFlzZNxtD00V1W9AIgCFWabTbY6tsHFUeXg8mZFtvGzdUPm8IHFPDLBOXecT0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197626},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"33b6ae53d95eb5e9a00d69dd67839609914c77d0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T01:52:31.132Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.87","@balena/jellyfish-metrics":"^1.0.347"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.4","@balena/jellyfish-config":"^1.5.4"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.32_1634954106948_0.993026866910286","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.33-renovate-internal-patch-218dc7ec1975a1e9a30ca021cb5338a671a3a1d6":{"name":"@balena/jellyfish-sync","version":"6.1.33-renovate-internal-patch-218dc7ec1975a1e9a30ca021cb5338a671a3a1d6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.33-renovate-internal-patch-218dc7ec1975a1e9a30ca021cb5338a671a3a1d6","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"44ae1a5410154cacf656984b55bd96368ee958b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.33-renovate-internal-patch-218dc7ec1975a1e9a30ca021cb5338a671a3a1d6.tgz","fileCount":24,"integrity":"sha512-+utsuI5iIRyCbD2cIfu4+DdbXxCWGcbUHf7Xud69g0cS62N+u9n4UWwY6YiEceZfOQkVek8WihefcjZawODy0w==","signatures":[{"sig":"MEUCIQDlwg/tRwjOsksbIvqdP+kHnl/lYYfZPX4z9ozDiiLnZwIgPgrK7J/m+KLQdAwUoimTrqMON5BqamqSmIM8uJVhQBg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197762},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"218dc7ec1975a1e9a30ca021cb5338a671a3a1d6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T01:55:59.907Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.88","@balena/jellyfish-metrics":"^1.0.348"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.33-renovate-internal-patch-218dc7ec1975a1e9a30ca021cb5338a671a3a1d6_1634954395499_0.3499195466766696","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.33-renovate-internal-patch-aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b":{"name":"@balena/jellyfish-sync","version":"6.1.33-renovate-internal-patch-aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.33-renovate-internal-patch-aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1b7bf07a3a3f1814b32cd625e2d417b81f89ca9f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.33-renovate-internal-patch-aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b.tgz","fileCount":24,"integrity":"sha512-GfbXZvzHSfzV58Phgn8HI7uoZvRXyzrZK9gndF4DWJ0iE9TiXiidoidveNZCdKabsooK976AK3i77kpb/0e8dw==","signatures":[{"sig":"MEUCICrJO2SWbDB2+41eoN1nO8LuR0d02zTO+F2foH10sEPoAiEAkrcXBl3ZlKvf42//fsV9253lDvIoxLfAzU74+f5MpZ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197762},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T01:59:20.939Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.89","@balena/jellyfish-metrics":"^1.0.348"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.33-renovate-internal-patch-aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b_1634954589560_0.33757875786165625","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.33-renovate-internal-patch-32749c95fd0e95496c6e4d2aa97746e97733fd23":{"name":"@balena/jellyfish-sync","version":"6.1.33-renovate-internal-patch-32749c95fd0e95496c6e4d2aa97746e97733fd23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.33-renovate-internal-patch-32749c95fd0e95496c6e4d2aa97746e97733fd23","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"69fa7c5560622292ef564e5c0e782106c118a8f8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.33-renovate-internal-patch-32749c95fd0e95496c6e4d2aa97746e97733fd23.tgz","fileCount":24,"integrity":"sha512-WtrnY+ijj+K8M3Y3SwAGkNH3k01BZL5q35K0+GnbhabSPJD0ZqR+XBz11DvIp8EugF+975+F2+dkm+4ulK0L9Q==","signatures":[{"sig":"MEUCIGULHuW5gTNhgprWfd3q1b9EARwsl1W8W1OdnWs00Gp8AiEAzX7+v9VlKOsRLCrGf+KdDLRzhwZhN+u6hBgKCBTp8Lo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197762},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"32749c95fd0e95496c6e4d2aa97746e97733fd23","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T07:02:39.219Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.90","@balena/jellyfish-metrics":"^1.0.348"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.33-renovate-internal-patch-32749c95fd0e95496c6e4d2aa97746e97733fd23_1634972754266_0.4772885230712449","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.33-renovate-internal-patch-f6d9c319dc7d212e59533f1e89cefaa5e2a72126":{"name":"@balena/jellyfish-sync","version":"6.1.33-renovate-internal-patch-f6d9c319dc7d212e59533f1e89cefaa5e2a72126","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.33-renovate-internal-patch-f6d9c319dc7d212e59533f1e89cefaa5e2a72126","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"577b792c02aa43f1ae4091fa2534374d23cceab7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.33-renovate-internal-patch-f6d9c319dc7d212e59533f1e89cefaa5e2a72126.tgz","fileCount":24,"integrity":"sha512-qCnO4ds8H+uh3RptJE/jDW3dBe9U3oIQ2iXBPHBl/Ks1OwbTEYVdCcmg6iVDPGkWa/gaZfkU/0aHul+F6AXuqQ==","signatures":[{"sig":"MEUCIFUikiMchWnbdksOLgL8voMMRUnMga/sMCPpcKRYNL84AiEA8uE9fbtcBd1Wj9mWmMoeJbXHV+Y344sELakJEyQXahs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197762},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f6d9c319dc7d212e59533f1e89cefaa5e2a72126","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T07:08:30.135Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.90","@balena/jellyfish-metrics":"^1.0.349"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.33-renovate-internal-patch-f6d9c319dc7d212e59533f1e89cefaa5e2a72126_1634973077274_0.49557960347910557","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.33":{"name":"@balena/jellyfish-sync","version":"6.1.33","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.33","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8df59e143b735c6b833462255318c910524a9dc6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.33.tgz","fileCount":24,"integrity":"sha512-YOMHinIaVxY9W6RE4LxjFH3cticoFEZl+Pc/F+Y+Q0dYNUVWRv3fT6wTC7xyQEq8fI7xmOg2yOEeTL5QDlWvjQ==","signatures":[{"sig":"MEUCICVlUecUikwjj0cay9BEuJfy4zcK99EvWdg+YsQWJN2hAiEApIH/EPK9i+aLmNIi1TFMqAsJRH9qUEhhJRnq1vusVu4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197697},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8c6473ffb572bff5a83a62e5d6d0403ac2af4f2f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T07:13:40.409Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.90","@balena/jellyfish-metrics":"^1.0.349"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.33_1634973323507_0.6400779938341179","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.34-renovate-internal-patch-cd070c09c06db2ee922181ee2fa62b30416f570e":{"name":"@balena/jellyfish-sync","version":"6.1.34-renovate-internal-patch-cd070c09c06db2ee922181ee2fa62b30416f570e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.34-renovate-internal-patch-cd070c09c06db2ee922181ee2fa62b30416f570e","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53401d1e35e584f39763169a6aeaab382a02d366","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.34-renovate-internal-patch-cd070c09c06db2ee922181ee2fa62b30416f570e.tgz","fileCount":24,"integrity":"sha512-C0bo7Ks5NNRAPbNtEZHN0YZcBTjoyioknvRw4tcagE51CWW7YHCQTHnkS1EnFJjH539/sjljWM4MRfDRf0WG+A==","signatures":[{"sig":"MEQCICB6aiBW5/cJfVewKaWK4oAqY+OxFv6fyzx8jDXheDQrAiAuo8PaTT+sa0zMOCaz6n9ZI3k1LtKbxyVgCN8hfkL/2g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197833},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cd070c09c06db2ee922181ee2fa62b30416f570e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T09:50:59.531Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.91","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.34-renovate-internal-patch-cd070c09c06db2ee922181ee2fa62b30416f570e_1634982858178_0.33871571476245377","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.34":{"name":"@balena/jellyfish-sync","version":"6.1.34","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.34","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c66dd59b1fe58578418217f6662b0927ecda279e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.34.tgz","fileCount":24,"integrity":"sha512-m44s3gBTUEbq18QMsqms5lo05yVSGNDZowLHn+jytNg6W5Ua31m7RCo5+5Jhowu77rCZr5avs46bd3ZWiQ4l9A==","signatures":[{"sig":"MEUCICwuj1dEoOGfUPULfzzV4eO21Dka8RoDudc4Da1qqVsuAiEAnnT0+Pf8Hu4khhFOZxoIKLBLb4L2X1joXOPSqIYb/3g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197768},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"467494e6c051c4f02a614419e82df24df2b08f83","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T09:56:19.813Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.91","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.34_1634983087277_0.5175715414120237","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.35-renovate-internal-patch-ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff":{"name":"@balena/jellyfish-sync","version":"6.1.35-renovate-internal-patch-ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.35-renovate-internal-patch-ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fc29080c4accfa13a673efe379e56b1e3d47475f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.35-renovate-internal-patch-ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff.tgz","fileCount":24,"integrity":"sha512-08tlNbrMC74PK7BqUdt2btfJa5A/xD7HqcSKRUZEQu6AWp7FGZpeSAM/uR1nQLBctqxed3E4BKRMfdNo19yCJg==","signatures":[{"sig":"MEUCIQDAKpzvT15BEaYp6zy70Dh5y/Y6ZvAr3jCP2Deuj3lAlQIgJDhAe+tk1Qk35IBaFyFOn2lhb9V82f6ZWa34AiSolYU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197936},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T18:55:00.397Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.92","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.35-renovate-internal-patch-ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff_1635015532744_0.3425122318788909","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.35-renovate-external-non-major-9486254d573d0fbb0721f46b5783353b7c58c9ef":{"name":"@balena/jellyfish-sync","version":"6.1.35-renovate-external-non-major-9486254d573d0fbb0721f46b5783353b7c58c9ef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.35-renovate-external-non-major-9486254d573d0fbb0721f46b5783353b7c58c9ef","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"316da823f769af1353830768eff7e1a7364570e2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.35-renovate-external-non-major-9486254d573d0fbb0721f46b5783353b7c58c9ef.tgz","fileCount":24,"integrity":"sha512-9e7vbBoItB4tr7tRIqgDr9Zg1plhMR+XyXz+zWWOoqNJI9RmBnlAgRQIqIAg54OTRjJfw4s8BwzLYioovyt1lg==","signatures":[{"sig":"MEUCIQCAGonk8vlh9EG03MAm4CTfcqbw3MGU1wFKJqH/2Q9PiwIgFEfdsa3wiaF86jpnAlQwzI5gbzzbiCk8cqbKk/RXeDI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197927},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9486254d573d0fbb0721f46b5783353b7c58c9ef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T18:55:50.884Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.91","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.35-renovate-external-non-major-9486254d573d0fbb0721f46b5783353b7c58c9ef_1635015596416_0.25850768428342596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.35":{"name":"@balena/jellyfish-sync","version":"6.1.35","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.35","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f502a5840be1d5ea63adca6d69b29fc85a373863","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.35.tgz","fileCount":24,"integrity":"sha512-nBr53a4kjLMGe3qEcb4GOnsnEI/5FKRozbtsBeQIeFzDHUpJ3FPdHDDSbAtz4KvCSbEWw/idLtUCwBnkYjSo9w==","signatures":[{"sig":"MEYCIQDNAmBp5wsVMFlqYUeKv/S5ngCCGHmBXCYTLQWYzEFtMAIhAJEXrgjOwQRQXIhZG9H0WSDoiUhwmUnfX+RFdDqX2cnV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197871},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c412416d6bce90d5bab3a4dbf91a68a9651852f1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T19:01:40.723Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.92","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.4","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.35_1635015830710_0.3063952361143387","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.36-renovate-external-non-major-906cd244948b308a1636565f4947adc42fb91573":{"name":"@balena/jellyfish-sync","version":"6.1.36-renovate-external-non-major-906cd244948b308a1636565f4947adc42fb91573","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.36-renovate-external-non-major-906cd244948b308a1636565f4947adc42fb91573","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c64c0ee9dc7438cabdd7999dacbc5a2d284f375c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.36-renovate-external-non-major-906cd244948b308a1636565f4947adc42fb91573.tgz","fileCount":24,"integrity":"sha512-HoBfLEFvNCQN95c6Yw6QH6UmjDPpoooSvgz0muq31MIlUpNLpLrVAuC4jsT9enVUnlJuokGS0rUAIlME3eMx4w==","signatures":[{"sig":"MEUCICYpyNZneI8XZjTb0iz3TsO3liAgNfhkwZfhDjebryCCAiEAw75gFZsWlxEDGQgfQJNubrDWJkPDc/J9EpFIG35Im2U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198015},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"906cd244948b308a1636565f4947adc42fb91573","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T19:09:10.298Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.92","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.36-renovate-external-non-major-906cd244948b308a1636565f4947adc42fb91573_1635016388228_0.7619198112017938","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.36":{"name":"@balena/jellyfish-sync","version":"6.1.36","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.36","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4163078fa506509cd59a5cf6050638b943658dfd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.36.tgz","fileCount":24,"integrity":"sha512-QRDBSzV2TzdzNxayow78nAWqgQrIC4FjqAxPgn6R7ds5q9UUjbJzZNCWOXy/GW4xhDEHGq9CrgvA0jbBoq1VLQ==","signatures":[{"sig":"MEUCICLUt+1s/BnUn6CNF+YvMoc76JxAlsC2UCDsa77FJvFwAiEAlqvbEK+pM0nWoctRHL1z0tCsQ42oMyrCzzj9LogqQVU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":197946},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d87615f82e947575e407a21f717fa9442248c9b9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T19:15:51.076Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.92","@balena/jellyfish-metrics":"^1.0.350"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.6","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.36_1635016662997_0.08794582897453629","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.37-renovate-internal-patch-e0927454e3d920ac2283bb8485bfdd13e23fa128":{"name":"@balena/jellyfish-sync","version":"6.1.37-renovate-internal-patch-e0927454e3d920ac2283bb8485bfdd13e23fa128","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.37-renovate-internal-patch-e0927454e3d920ac2283bb8485bfdd13e23fa128","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39ee5145212826fc8dc6f6732f328b7fc724432c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.37-renovate-internal-patch-e0927454e3d920ac2283bb8485bfdd13e23fa128.tgz","fileCount":24,"integrity":"sha512-otrGaoTPVAOEUgHjhVQKTxL5hDP/04Kw+imcMg9e5ttclRaRSbNHSmFrDg0zv0ev3t01Hz6gtkdjy8839DN+sw==","signatures":[{"sig":"MEYCIQDHbabDbAKHw4yoikd7G4ruBW4Lef7zgDRVhii6mTiBoQIhAPLadwy+P0WUo8dqv45zcE21nCJoCnQM7OQxKa9kRDb2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198082},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e0927454e3d920ac2283bb8485bfdd13e23fa128","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T21:13:59.797Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.93","@balena/jellyfish-metrics":"^1.0.352"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.7","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.37-renovate-internal-patch-e0927454e3d920ac2283bb8485bfdd13e23fa128_1635023852733_0.8532534674458563","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.37":{"name":"@balena/jellyfish-sync","version":"6.1.37","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.37","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f21e466ffdcddf4553efeb99637842a8aa0162d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.37.tgz","fileCount":24,"integrity":"sha512-HXuwShorb3w500nzDMNoQaRA8fSLsp07lz3WjPJ56+vhCX+pxwuuKxpxAd0cheGJmwAazs1Q6BTOFqVxEulnJA==","signatures":[{"sig":"MEYCIQDIRkjoUPBOjq3+g+P7nPJfuxWY66fCY8U0c7/J7aPO4wIhAMP4Z0cSligF1ekqcKWPR6/qJR0QtMDRwB9ZlcX2I3vl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198017},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"654b08d48604af709f290b9048809e4183cc0621","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T21:19:59.739Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.93","@balena/jellyfish-metrics":"^1.0.352"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.7","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.37_1635024105989_0.7829507119977157","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.38-renovate-internal-patch-7e712c154b671ba18534ce62d81ba5b9de9f598e":{"name":"@balena/jellyfish-sync","version":"6.1.38-renovate-internal-patch-7e712c154b671ba18534ce62d81ba5b9de9f598e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.38-renovate-internal-patch-7e712c154b671ba18534ce62d81ba5b9de9f598e","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ea6db62d03d8919bb9d0d31ac506334ae2117677","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.38-renovate-internal-patch-7e712c154b671ba18534ce62d81ba5b9de9f598e.tgz","fileCount":24,"integrity":"sha512-hVuZoAoxk64y+rJZcF3/RPBTNbRGpFvK2gkWOam4jSRr0qKa/x422zf5kxBTvdeb+MPmHXMVSH2IY1PpHmZYrw==","signatures":[{"sig":"MEQCIAvsnyARLv7o8uwIHVMxvbC+8e2dGCU7K65hniaCL7xMAiAaL4oludJu40qjABNHiItZGagzNqVbrlSjwc+jxUt/Ow==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198187},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7e712c154b671ba18534ce62d81ba5b9de9f598e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-23T23:54:46.506Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.93","@balena/jellyfish-metrics":"^1.0.353"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.7","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.38-renovate-internal-patch-7e712c154b671ba18534ce62d81ba5b9de9f598e_1635033567921_0.32618948302355677","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.38":{"name":"@balena/jellyfish-sync","version":"6.1.38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.38","maintainers":[{"name":"pranavbalena","email":"pranav@balena.io"},{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b2c0ed37767c7fdc0d7d1230d162cf98ff7fadbe","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.38.tgz","fileCount":24,"integrity":"sha512-4yQyM0/DK8WUfhxd9rbPbrjH3irq5rFcPgNsdYz4dUCzII2CPzo4zL/6325kP+2uKXtHzsanyoDDLY8feYXRlQ==","signatures":[{"sig":"MEYCIQCd3g3dBA2s4ly2JuYc5WoGvaV8QzrEIGfDOQhxvpHVyAIhAI9cZ2mUV0aPQQl9fSoUU2NIlntpUnFmWTUzzCV8xF3h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198122},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eacc69d5284510655b48acc700ca51350cca4d40","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-24T00:02:02.691Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.93","@balena/jellyfish-metrics":"^1.0.353"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.3","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.7","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.38_1635033852495_0.02317800324841235","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.39-renovate-internal-patch-c85828e7ffccd7687294d7556431657f8266a654":{"name":"@balena/jellyfish-sync","version":"6.1.39-renovate-internal-patch-c85828e7ffccd7687294d7556431657f8266a654","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.39-renovate-internal-patch-c85828e7ffccd7687294d7556431657f8266a654","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c55a2ff9f4a4f01fe3d24767868301d4c0a01c3c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.39-renovate-internal-patch-c85828e7ffccd7687294d7556431657f8266a654.tgz","fileCount":24,"integrity":"sha512-MmG5mD7b7mmHTGldKJqvoUbgMIR9HZyNxQFZxn1s7ieuD+CFJ0Yk4AaHoxjpZuQXhu7/7SV1EN4N67vJumI1ig==","signatures":[{"sig":"MEQCICqBzuXDIXP/Vbe0GMzL4+T/wnxSQjYNr1rJF22qnEU5AiBO9JTAC2LYpP23Gwl7wi5vM9zZAf419OD/RwssRAbGzg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198258},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c85828e7ffccd7687294d7556431657f8266a654","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T01:43:21.795Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.93","@balena/jellyfish-metrics":"^1.0.354"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.4","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.7","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.39-renovate-internal-patch-c85828e7ffccd7687294d7556431657f8266a654_1635385583046_0.9204990556077433","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.39":{"name":"@balena/jellyfish-sync","version":"6.1.39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"225da59c748935a94d9c949cf6df1042f6293b5a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.39.tgz","fileCount":24,"integrity":"sha512-88/tQ6FWuaKm5AFt2rnVN6gswHoan8LDSbSVITjdGGJd5LnUvm+U8UE3J510Hy30jrbpc1XOwp1FTVYHooSEAQ==","signatures":[{"sig":"MEQCIHRE5sUCpg2G3Wd6UiJZbw/gP9d87hK/DgZli6suOnbaAiBWjk+IlfLuJKnh/crkSyHm8Drpkz1lRl14oArGb1+okQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198193},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"52e29efec7583845f99fc9a96547cba6bc325dd0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T01:48:30.934Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.93","@balena/jellyfish-metrics":"^1.0.354"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.4","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.7","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.39_1635385834372_0.3666495833754706","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.40-renovate-internal-patch-a5161e884f7fee64142c5a51729a27da54366ada":{"name":"@balena/jellyfish-sync","version":"6.1.40-renovate-internal-patch-a5161e884f7fee64142c5a51729a27da54366ada","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.40-renovate-internal-patch-a5161e884f7fee64142c5a51729a27da54366ada","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9500399d488a2feee59b815d6504c5689b56c18e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.40-renovate-internal-patch-a5161e884f7fee64142c5a51729a27da54366ada.tgz","fileCount":24,"integrity":"sha512-Ha7Wj9tqChJ1kyhbNe6recXm0k6O/R4jjixuP7ayUZHSdbcB1Tnp1Mgy3+QSRYqtsX3beLQTBqp/mMOWjS1ivg==","signatures":[{"sig":"MEQCICsJXBBiz+QEvYdGKnUZcMbfM+nQCb5smUPAo3/3B+AuAiBsqq16PLi//t4fmbXEgcsDp68d4JU9p+0+07j4PNyz5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198329},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a5161e884f7fee64142c5a51729a27da54366ada","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T03:12:54.064Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.94","@balena/jellyfish-metrics":"^1.0.354"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.4","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.8","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.40-renovate-internal-patch-a5161e884f7fee64142c5a51729a27da54366ada_1635391011976_0.7820124700694784","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.40":{"name":"@balena/jellyfish-sync","version":"6.1.40","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.40","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d326b63a6bfdb91c965c909bf6c29f61a3071fa3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.40.tgz","fileCount":24,"integrity":"sha512-39Q2o0y7si2/se0277dPTKg2vdPKyFxjnmWYlE3wIyFKi21SFR/XVRI7d4A9o/pyZLa4/I0DWlUev0r7vmVzUg==","signatures":[{"sig":"MEYCIQD485A+aqPW0QJ6QqsVjIwIEKU8nPHI7DkC8zr4CVmJiAIhAMGPrR0cCEm+4OjYT4lGx8FhIbdntG5WpiV/h5RtbNR1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198264},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a66053a80e95b7a81ad175ee901af4c08e9a817e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T03:18:58.703Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.94","@balena/jellyfish-metrics":"^1.0.354"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.4","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.8","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.40_1635391242925_0.04792366282337701","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.41-renovate-internal-patch-4e3e9b8cb73165f214e2ffbd47592ff39402c1b2":{"name":"@balena/jellyfish-sync","version":"6.1.41-renovate-internal-patch-4e3e9b8cb73165f214e2ffbd47592ff39402c1b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.41-renovate-internal-patch-4e3e9b8cb73165f214e2ffbd47592ff39402c1b2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd10f113c1bf017b96273dc3b66ea9a823b9a546","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.41-renovate-internal-patch-4e3e9b8cb73165f214e2ffbd47592ff39402c1b2.tgz","fileCount":24,"integrity":"sha512-joesJSWpqUQdL7m/0Ahgmi8Wirz9jWxpw23eDRNrmYt0eadnjdKtgtarZPhxmFMnXNP5xxD/XqhsF90MvboBmA==","signatures":[{"sig":"MEUCIGO9ZhoI/2Yd/pjGijg1B3tT9aLPYY8ROipGptXRquDdAiEAlezxxdvSVswA3Co51O0rXuGjxabuDpyuWMHrYEvriJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198400},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4e3e9b8cb73165f214e2ffbd47592ff39402c1b2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T05:34:10.586Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.95","@balena/jellyfish-metrics":"^1.0.355"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.4","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.8","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.41-renovate-internal-patch-4e3e9b8cb73165f214e2ffbd47592ff39402c1b2_1635399488462_0.21396731608047515","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.41":{"name":"@balena/jellyfish-sync","version":"6.1.41","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.41","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9ddc572edbfc6cdb4aebf9dd37316b9e652465dc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.41.tgz","fileCount":24,"integrity":"sha512-Z9+k6FX+POPjJIeuIE+NATEGyQMjyiRY5wFkfLkK4VPx48eG2epXHrqIT6sxNfPPMTR45B3u6L+a8WdLuaPg0w==","signatures":[{"sig":"MEUCIQCXuSgPrtwBJdc9323xvh3H7OlUS3pzNKphVL5fnsgvYAIgKbv3ftOhZ137U4PhHXRGvGskZARtaOLp1LH71Aw81Kk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198335},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4a2ef7d8f0b41fab22db095e076c4c96e2f6b21a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T05:40:30.446Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.95","@balena/jellyfish-metrics":"^1.0.355"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.4","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.8","@balena/jellyfish-config":"^1.5.5"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.41_1635399744156_0.36032238124096283","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.42-renovate-internal-patch-98ab2931d1caf6873323f32c1e3dc87e6c9048d1":{"name":"@balena/jellyfish-sync","version":"6.1.42-renovate-internal-patch-98ab2931d1caf6873323f32c1e3dc87e6c9048d1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.42-renovate-internal-patch-98ab2931d1caf6873323f32c1e3dc87e6c9048d1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ad37a87b169f5f46c91833510f380a5f312cc29","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.42-renovate-internal-patch-98ab2931d1caf6873323f32c1e3dc87e6c9048d1.tgz","fileCount":24,"integrity":"sha512-wtjw/T9htoc3gdUTJY4t/97IKaRTBN+6S4WWtRfNxEZkgrM3vx2gXD47Y4dOEwRjKohX8i7p+F2/mgzoabsttA==","signatures":[{"sig":"MEYCIQCVS4Jk8FVJWwXYkOesK/mxgv7VRb9Q8OdPActus8AMIAIhAO8dlrWT1c26OIZ+nEbKBKlDrMBp3p0hMr61eWKHldI/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198471},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"98ab2931d1caf6873323f32c1e3dc87e6c9048d1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T10:04:59.693Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.95","@balena/jellyfish-metrics":"^1.0.357"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.8","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.42-renovate-internal-patch-98ab2931d1caf6873323f32c1e3dc87e6c9048d1_1635415647622_0.3675744976679918","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.42":{"name":"@balena/jellyfish-sync","version":"6.1.42","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.42","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ac70c4c69be3e38be9658b32050ac3fc9f215178","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.42.tgz","fileCount":24,"integrity":"sha512-wVzPhsv46ia730OsVRhd63iQrQMaJECCxxK2AxdRlJ3giKaxFj7KtMB3iy3MttMQuaLNzadDtZ2gkavifyaing==","signatures":[{"sig":"MEUCIQCJx1ZnJ4EqrZ6opr5uZgfynp5wJwgA/hY05KZ9qXVduQIgcce9st4ylfK1K6/wu9R8frh3gXgzLov6Otv3lbpmmCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198406},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"407ee883b535140692a7f58f233d1ea2c437534e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T10:09:59.431Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.95","@balena/jellyfish-metrics":"^1.0.357"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.8","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.42_1635415904821_0.38703713329478395","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.43-renovate-internal-patch-7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7":{"name":"@balena/jellyfish-sync","version":"6.1.43-renovate-internal-patch-7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.43-renovate-internal-patch-7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"af1ad0158d7295dbceaeac94db08466bfae2d62d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.43-renovate-internal-patch-7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7.tgz","fileCount":24,"integrity":"sha512-Qh4x0M3fqbDn1KBObdiY7Te1dOWV9IZCQnCvsTFGOIgIwSFLghS8WoyxAxEBpm+JQqPpFBThD1ZK3pV311Sk8g==","signatures":[{"sig":"MEYCIQDutiFUXXBhwN4TyPYH2gkQ9j5HyqHTfmcz0EnJ99bTNAIhAIPU935Sow5w9xmvPOrZ2w6Lffh9yXGBHzc6apyv3Uuc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198542},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T14:25:05.769Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.97","@balena/jellyfish-metrics":"^1.0.359"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.9","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.43-renovate-internal-patch-7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7_1635431347065_0.9950164239539572","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.43":{"name":"@balena/jellyfish-sync","version":"6.1.43","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.43","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7802c6c81a8a08e8c2c36f7e0fdec2e28cb475a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.43.tgz","fileCount":24,"integrity":"sha512-7uS2MZJ/DWQCRT34zG2D/cnvHsYTx1Yk5qeBZ4kv+/Gtfd8vlQ8KVjDnI0ZWbf34K8RNP+jgLe9WF3Y7z/O7xg==","signatures":[{"sig":"MEQCIGed5dqRBFlsaKWQnilFceqDZmvEr3Ob6acQCDOC4LmiAiBIYxrOx00o0IeQRWykBHmLr1+NNQNmQkmZCP11H4bBfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198477},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"497df3629d84859115a633b6182ce4b7664d943b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-28T14:30:49.509Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.97","@balena/jellyfish-metrics":"^1.0.359"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.6","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.4","@balena/lint":"^6.1.1","@types/sinon":"^10.0.5","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.6.1","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.9","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.43_1635431555847_0.4259858562118166","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.44-renovate-external-non-major-168da06f2b6cd5ec55355fb41e649ab4b0274266":{"name":"@balena/jellyfish-sync","version":"6.1.44-renovate-external-non-major-168da06f2b6cd5ec55355fb41e649ab4b0274266","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.44-renovate-external-non-major-168da06f2b6cd5ec55355fb41e649ab4b0274266","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9605e0d47984fc74e6f0e555fe57a41dcbba53b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.44-renovate-external-non-major-168da06f2b6cd5ec55355fb41e649ab4b0274266.tgz","fileCount":24,"integrity":"sha512-wcVmsnchl8Tiul7SswsMe+T/8iDPASlaUjH+0GHiqKh+hex1oEq4ovtbt8RV5InBIsAbkhFuvt0cdNDKiTcWNA==","signatures":[{"sig":"MEUCIQD/rGtv3Hwnz2a+22f/rTmw2JCwMD6plHYzFNpD9Xv3dwIgLomDCBjIjLmJg5DybR/MTZkV4eY7+tF2cPuRxQ58zw4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198621},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"168da06f2b6cd5ec55355fb41e649ab4b0274266","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T01:41:19.133Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.97","@balena/jellyfish-metrics":"^1.0.359"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.9","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.44-renovate-external-non-major-168da06f2b6cd5ec55355fb41e649ab4b0274266_1635558317906_0.8950220357581844","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.44":{"name":"@balena/jellyfish-sync","version":"6.1.44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"79ea80a29b262a7ccb157c3c7cfaa4ee5979d87e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.44.tgz","fileCount":24,"integrity":"sha512-PQga0z+h6Ywv3C+x0tGYhxRx9RZ0/8bIsxotYJ2T4xUdOSIB0fDrrRUwttU5QQDAuVoayhQfWDchSYPnb1LhTA==","signatures":[{"sig":"MEUCIQC7dlr1kITIFBWcPhz39KDOxuIJOD9JI9CaqeIRujmZ1wIgXYzpb2rqaUXpVO/SqfSX/yd3ckktk9rl6au7FDUy7MI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198552},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"05cd844ca30596f5d63adfea3f068b291a3f246a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T01:48:11.033Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.97","@balena/jellyfish-metrics":"^1.0.359"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.9","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.44_1635558599874_0.25046996101925534","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.45-renovate-internal-patch-e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032":{"name":"@balena/jellyfish-sync","version":"6.1.45-renovate-internal-patch-e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.45-renovate-internal-patch-e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ee8ef5dd6e9dbbdcb9677424f28e2093f768f6a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.45-renovate-internal-patch-e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032.tgz","fileCount":24,"integrity":"sha512-eh2+RTYEuNHuAFMND3vBcBWSqdUzH7NqA+2U4p55GwYH1PXq+JvrLofNOoZZq9GL0Qeqh5e/pRcwTV2jJA3TzQ==","signatures":[{"sig":"MEUCIQD2mCVBA7IUGIbx3NOERUbvT+xrpfKmUQxF4hT86vL0FAIgHGHe0WEzaI3E8iUF5BCb01hIDLGm44I+z6pBiF9Ixms=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198689},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T03:34:50.369Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.98","@balena/jellyfish-metrics":"^1.0.360"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.45-renovate-internal-patch-e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032_1635565123839_0.5999888472116475","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.45":{"name":"@balena/jellyfish-sync","version":"6.1.45","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.45","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"85721a8943fd3db4dae78879021960e60eed3a8b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.45.tgz","fileCount":24,"integrity":"sha512-G022giKldq8rs1J7NmsSaO0qh/vLM14t8KvMMD4AqeJhiNvPiG+88UQEoIy67vpf2YAyXrieJ4m6bqbStZJ3nQ==","signatures":[{"sig":"MEQCICB6HdkKkOrRYwMFEfSozTcFGprvrPqhtEdgCHKV1vG2AiALe2Mowpt6zeZ/DSFLz+WuykcV7kCTXRyUeEiGsbzBtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198624},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1afabe12b76220465c7749f194676886fb9fc7bd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T03:40:50.297Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.98","@balena/jellyfish-metrics":"^1.0.360"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.45_1635565361347_0.5276924911318395","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.46-renovate-internal-patch-a33a5435c221afeac0b55bc9d891b2773d55dc51":{"name":"@balena/jellyfish-sync","version":"6.1.46-renovate-internal-patch-a33a5435c221afeac0b55bc9d891b2773d55dc51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.46-renovate-internal-patch-a33a5435c221afeac0b55bc9d891b2773d55dc51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c2ba104e6cf5950c31f66c2f869d204f4c764566","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.46-renovate-internal-patch-a33a5435c221afeac0b55bc9d891b2773d55dc51.tgz","fileCount":24,"integrity":"sha512-xyEYVuzThV0pp19lnVPheSSjkhr2cOYB5pBhZjHYGL/MQZOMBpiAKn6SwE3FAlQr3jtN342wfucisa3oG2daSQ==","signatures":[{"sig":"MEUCIQC/ge3GxCWCCIpkl5m4FexYTdd7vlYOvcjvHRhZi7iMSQIgF6SOY47eK1DUe1/icpNTjndKbVuLRzkBTrTVLP3KC0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198760},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a33a5435c221afeac0b55bc9d891b2773d55dc51","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T03:46:29.661Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.361"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.46-renovate-internal-patch-a33a5435c221afeac0b55bc9d891b2773d55dc51_1635565814193_0.9586179771809731","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.46":{"name":"@balena/jellyfish-sync","version":"6.1.46","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.46","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2e63d4146245f48dd4364aed185f851dc2888242","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.46.tgz","fileCount":24,"integrity":"sha512-rGhWY36Zo7IZ0UFgpbym0k9Y7hPdMWPJ5JLvAOv0a/GNAAS0S1jxlBZkL4hhK/shUE+v8+GMdr7MWOChfEVamA==","signatures":[{"sig":"MEUCIF4+p/TfGJ9sHZJyKRfxumiJ9rboNVWL3ZtRMigUDFEeAiEAxebsvKwBElKuoU31aqUlFfCFFmNhTxVOO0X/NLfWAjY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198695},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d29ff00988b758a8bd9248cab00adfea0fcc3703","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T03:55:20.241Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.361"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.46_1635566243634_0.041188505494063055","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.47-renovate-internal-patch-b997ea0c60b332f00162bcd20c41613c879ebca7":{"name":"@balena/jellyfish-sync","version":"6.1.47-renovate-internal-patch-b997ea0c60b332f00162bcd20c41613c879ebca7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.47-renovate-internal-patch-b997ea0c60b332f00162bcd20c41613c879ebca7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9499d39a4d3c9ee8dd3207bf40f5950ab9f4410","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.47-renovate-internal-patch-b997ea0c60b332f00162bcd20c41613c879ebca7.tgz","fileCount":24,"integrity":"sha512-0PGHT2JF8h2+JFrKh6pW5G6FINpbbzjy9sXIVCe9JO83UgFMCkNN1SsuPd13a3BEhDi7VAAHcEMzzeH2BzAB2g==","signatures":[{"sig":"MEQCIF5YLpyZfwXsq/dconudegM1HpfsVI5D0aSTst1JLnm5AiA6xAma71bGg8B+kp+7ECdRFJWExKd/5MOYQRz1xlmk8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198865},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b997ea0c60b332f00162bcd20c41613c879ebca7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T05:48:00.378Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.362"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.47-renovate-internal-patch-b997ea0c60b332f00162bcd20c41613c879ebca7_1635573034010_0.9690498953878042","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.47":{"name":"@balena/jellyfish-sync","version":"6.1.47","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.47","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22f3be823941ab84f887e70905799a94596f6a39","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.47.tgz","fileCount":24,"integrity":"sha512-CnoAMw3VH8x02LmJL0bHmYwNeFOcnXYRrWTJnbkwIL99UjUOYv63wXHwFKcRDgVXcXB/AIbwcWQy/fpj9HdH9A==","signatures":[{"sig":"MEYCIQCFfWA8VTJmlOxMsB46do+m53J09RU8S+bP86X+Ztx/XgIhAKoKknUo40+qzeN6qL2Pv3b6XOnPSwtoJCcbUm0A6jmC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198800},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8debb46b34ea4bb8d7e8d594306f757cdeba6b5f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T05:53:09.517Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.362"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.47_1635573298196_0.0799641321651614","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.48-renovate-internal-patch-593fd03227488dd601e810134983543eafb2a8bd":{"name":"@balena/jellyfish-sync","version":"6.1.48-renovate-internal-patch-593fd03227488dd601e810134983543eafb2a8bd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.48-renovate-internal-patch-593fd03227488dd601e810134983543eafb2a8bd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"653b0df8cb6657496ef9fffb97d9cf2b320e394e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.48-renovate-internal-patch-593fd03227488dd601e810134983543eafb2a8bd.tgz","fileCount":24,"integrity":"sha512-Y6EduEuy9Zw8CG3hGG2p54p9KgVaNsehRnL5NyWKbIPlmfNTYqR7WQSSPBGMRQCgWoPxPSjHFJdZeD/myDDZoA==","signatures":[{"sig":"MEYCIQDE5CvNpsjC2ItMzBSlhN9HDViB+AJsAiyOSjK0kO0BWAIhAPbDakV2RxS/lqD/J/Tnzah2XpoFOqExxYpp+4lQwhE7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198970},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"593fd03227488dd601e810134983543eafb2a8bd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T11:29:08.985Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.48-renovate-internal-patch-593fd03227488dd601e810134983543eafb2a8bd_1635593549817_0.4155601264424249","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.48":{"name":"@balena/jellyfish-sync","version":"6.1.48","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.48","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d83195a82be0222e304a6ebeca2ec9fd38b4ee88","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.48.tgz","fileCount":24,"integrity":"sha512-HgL7QPOhK4tkW147kGCvA73jWc2y75qOURrU7vkHnnrMsCVqYTwJF59xJH4zI4YMkZNxQmjJ6y4JXwPrCmxItQ==","signatures":[{"sig":"MEQCIEPf7VrpBuGyEb9TvyUJlKA1UcIgQMaaHVNupsBmICXJAiBC2MRyitOQophR5OtJMVrnlDINz40KhZqpuA0EHDXHcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198905},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8b87c886edd52f8cfe3677b3f07dd719c948fa29","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-10-30T11:34:40.093Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.6"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.48_1635593785286_0.526035194169679","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.49-renovate-internal-patch-55fcd0bf9e7371422bdb44acf75a31af731ff59b":{"name":"@balena/jellyfish-sync","version":"6.1.49-renovate-internal-patch-55fcd0bf9e7371422bdb44acf75a31af731ff59b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.49-renovate-internal-patch-55fcd0bf9e7371422bdb44acf75a31af731ff59b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a0f53bc0163b4ddd1ec62ed946938aa86ab68d4a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.49-renovate-internal-patch-55fcd0bf9e7371422bdb44acf75a31af731ff59b.tgz","fileCount":24,"integrity":"sha512-1aBuDeLISAslFKsAQEGt6gDYDzqzgGYhJ56C7Yj9dOG25iXRmRE/XzkhGnhv8UE1NDrwrk8tOB9zNvJjT5E/8Q==","signatures":[{"sig":"MEUCIQDl1aJjNBwMaQeEgE08A95ES3gK8/FTo9UhoVcxW3tzxwIgXSiWrjUaZIu0oQvqbViLunU6cQRZ7ubdJ/mcRgE9UAM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199072},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"55fcd0bf9e7371422bdb44acf75a31af731ff59b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-05T10:46:01.529Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.99","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.49-renovate-internal-patch-55fcd0bf9e7371422bdb44acf75a31af731ff59b_1636109327586_0.08074287581841744","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.49-renovate-internal-patch-1119c4ceab7da6ef1a1e97c2ad80b6242e716163":{"name":"@balena/jellyfish-sync","version":"6.1.49-renovate-internal-patch-1119c4ceab7da6ef1a1e97c2ad80b6242e716163","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.49-renovate-internal-patch-1119c4ceab7da6ef1a1e97c2ad80b6242e716163","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"42ee59afc0fbcce9b05010a1f26d00c429a1421e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.49-renovate-internal-patch-1119c4ceab7da6ef1a1e97c2ad80b6242e716163.tgz","fileCount":24,"integrity":"sha512-XAQjFBaUwaIAbm/Q5fb8umNsVFjEzLUiJhj3hr1I3Ysmy416RbDg1OMH40nwHr8A3ummeyrFhV9bTrWi9DlPZg==","signatures":[{"sig":"MEUCIQDMY7Hq1ZIEHgzo9oBb0eTRmeBsPHadDrRJqHqbafyU5AIgB00J+MhHzN0zFGnWbRACyflnc4r0Z2m93zLTdRGvQ+U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199042},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1119c4ceab7da6ef1a1e97c2ad80b6242e716163","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-05T10:49:33.729Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.100","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.49-renovate-internal-patch-1119c4ceab7da6ef1a1e97c2ad80b6242e716163_1636109642513_0.1161024188011226","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.49":{"name":"@balena/jellyfish-sync","version":"6.1.49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd35272c2e9952ed3a6441f91e1a4126a5fa4c0d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.49.tgz","fileCount":24,"integrity":"sha512-nuq91ZAgs4A3nJn3DfyR7pUsQzSY2XFxmlHeAPdGxmkjcTZPIw+lpoJ+cIbMRUcNd9LpcmoKTGFHzrROnRFmFw==","signatures":[{"sig":"MEUCIQD502bnUASYP+9vXquzCYKZO2miAOR8vkMZuo4DdlR+IwIgDYQiUpymAaz9oG9B8oVnYoEF9TjUl9ApwOO8Xr8euic=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":198977},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4ff92f1e58890a8b263c74115820429d103ceb59","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-05T10:55:31.455Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.100","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^11.1.2","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.49_1636109834750_0.9295421881939387","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.50-renovate-major-external-major-66d89e1e7d294bcb90149d8641e186c917d7a020":{"name":"@balena/jellyfish-sync","version":"6.1.50-renovate-major-external-major-66d89e1e7d294bcb90149d8641e186c917d7a020","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.50-renovate-major-external-major-66d89e1e7d294bcb90149d8641e186c917d7a020","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a02389f287d5eedcfea6619f3cb98e870254245d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.50-renovate-major-external-major-66d89e1e7d294bcb90149d8641e186c917d7a020.tgz","fileCount":24,"integrity":"sha512-7Bjdh+coVzvIRrbUguoAn0QjyWCxjVaKKfueeGytvx2gD1FfJwwoXoyn6l0p0UenP75pINqX0zlOYFrYuEzbuA==","signatures":[{"sig":"MEUCIQDsY940RkSIseoLp6zXIl9X/oSVdeKdK8B/Ul7LvOgIswIgF62BC4g1Q9NnW/EVymEEhgz0DS2KcPanwiJ1zkJeewA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199128},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"66d89e1e7d294bcb90149d8641e186c917d7a020","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-06T00:28:58.907Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.100","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.50-renovate-major-external-major-66d89e1e7d294bcb90149d8641e186c917d7a020_1636158759118_0.8232840600975879","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.50":{"name":"@balena/jellyfish-sync","version":"6.1.50","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.50","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9643f0f8b4c5c2a710b439365ac1f8950005bd91","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.50.tgz","fileCount":24,"integrity":"sha512-dMvWkXWpaI4CaMKAJ+kxh56AHh5cPiapX688coGmXJ41oWl+2WEymCTUcB6Li6yylxiu/oKxchbm0MGQ2a/L3A==","signatures":[{"sig":"MEQCIHEiwu+EGN8Luj6M1r5p3NGwBQ4bCwxY1nBua+bqcwpzAiANj47MNRtr4+zjDktqKyXdyZhO6c0O6gFBpGTb49K4fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199057},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d9a976fc0477f42165209756067f9432f3f2eeb0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-06T02:34:57.546Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.100","@balena/jellyfish-metrics":"^1.0.363"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.10","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.50_1636166192515_0.3351420087448864","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.51-renovate-internal-patch-bf578e631f230352d84b9c17bc1bc5a29b37bba1":{"name":"@balena/jellyfish-sync","version":"6.1.51-renovate-internal-patch-bf578e631f230352d84b9c17bc1bc5a29b37bba1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.51-renovate-internal-patch-bf578e631f230352d84b9c17bc1bc5a29b37bba1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10084b9b44ae71f5bc2362e1a5d4915e47970ce9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.51-renovate-internal-patch-bf578e631f230352d84b9c17bc1bc5a29b37bba1.tgz","fileCount":24,"integrity":"sha512-CsSPbRy0tCmp5w3oKQ2Ya3ejCt+iIDDb56eOEbKvHaYIDfGFzz7dUvKKTbwkO/nErTwfQBh6bWX5om7G8gRf9Q==","signatures":[{"sig":"MEYCIQDhCupqGjvaMq6yDY75DmszQ3mkzIGu7xtGTBNx6wOMyAIhAOrGW83cLDW5nGtLRrOGBlHhk2+ZrLnhRtqy1Ig4JeUU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199193},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bf578e631f230352d84b9c17bc1bc5a29b37bba1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-06T02:38:30.625Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.101","@balena/jellyfish-metrics":"^1.0.364"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.11","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.51-renovate-internal-patch-bf578e631f230352d84b9c17bc1bc5a29b37bba1_1636166513653_0.45512074635713073","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.51":{"name":"@balena/jellyfish-sync","version":"6.1.51","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.51","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"28728534dedddf55aa74f0040c180d4c56b795da","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.51.tgz","fileCount":24,"integrity":"sha512-3NrCs5g0Js1jQ7QzVsG6KC9HpOX5bULG+vzA0XpBHsstV+CRyd+yyxrkdzC5m4HNqPyFuPAJN/kJ7KLFSGpVwQ==","signatures":[{"sig":"MEQCIEJ0TlfNxQNLXhJyCH7f3rbzxqz/MMDyDrLvsdRXNZIfAiBXO3TMynda6FlyicMX1h4y4OgHPsDCQREdBUHlLQAldQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199128},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c1640399371f855d3be8a87eedfa67e97aff2857","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-06T02:43:37.813Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.101","@balena/jellyfish-metrics":"^1.0.364"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.11","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.51_1636166710834_0.05818158481241853","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.52-renovate-internal-patch-808f181970c86b359f8c93f3fb7e696aae2cc635":{"name":"@balena/jellyfish-sync","version":"6.1.52-renovate-internal-patch-808f181970c86b359f8c93f3fb7e696aae2cc635","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.52-renovate-internal-patch-808f181970c86b359f8c93f3fb7e696aae2cc635","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8e1f2119b1313558e798991d9573542981d62a38","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.52-renovate-internal-patch-808f181970c86b359f8c93f3fb7e696aae2cc635.tgz","fileCount":24,"integrity":"sha512-J6dbJXUZvL0dK5CS09JC6JLAPY4Bjt883bFwb4mOBDotozincBMWVtrP/UxMmPCVOIU4PqaEIgzQdhRezg8img==","signatures":[{"sig":"MEUCIG14By8Y8MizGdUuFQH0fUUm2YVNT2eX7KAoHwZ7YrmbAiEA6VttbJwtXzcn0LLvLMgirKFDiSabi0z/hNXJJDi0QlY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199298},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"808f181970c86b359f8c93f3fb7e696aae2cc635","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-06T05:10:20.601Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.101","@balena/jellyfish-metrics":"^1.0.365"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.11","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.52-renovate-internal-patch-808f181970c86b359f8c93f3fb7e696aae2cc635_1636175544401_0.6866403537169639","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.52":{"name":"@balena/jellyfish-sync","version":"6.1.52","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.52","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"eac29858203889b38a3363661a2f0dfaab54767b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.52.tgz","fileCount":24,"integrity":"sha512-SGA4RKcNLEHgibI3hdQr5drQJMsJFExyUrn1pWdkk+GNx+DdRm97+RzTAzqCDVBV2DlLZBaqksjrmVyXT7LR5g==","signatures":[{"sig":"MEQCIBXcXtxmwQ+SD3xcGW36lUHN9+Mv3cYH3BfOsmB6nRqNAiBCkFUp5/f7F60RVjqFW/6KRsbeyct1NY1QQc0/eqDMhw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199233},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7dfb3e1e86a46cc2b1ff5c8f9ac5df5d4ecaa337","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-06T05:14:05.553Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.101","@balena/jellyfish-metrics":"^1.0.365"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.11","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.52_1636175752249_0.6845252781152249","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.53-renovate-internal-patch-d1505ee107cd5c285ae171c3a712ef68501710dc":{"name":"@balena/jellyfish-sync","version":"6.1.53-renovate-internal-patch-d1505ee107cd5c285ae171c3a712ef68501710dc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.53-renovate-internal-patch-d1505ee107cd5c285ae171c3a712ef68501710dc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"00b9473d9d9abdfe6542fae463224705ab244a5c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.53-renovate-internal-patch-d1505ee107cd5c285ae171c3a712ef68501710dc.tgz","fileCount":24,"integrity":"sha512-aW5FFolJSdiqlsmoqrq/vq5u8rrL4NooeBqNTWkxqvnLrWv3MQrOeqS+Vyjg/sK1PcMSLMOKC42V+PC3xjZgkw==","signatures":[{"sig":"MEUCIQC0WqtsrYFi3ezg1wwNLI58qmo0kLgIbcvGYhsnANRh2QIgZr6aa7QYmnWK9KuToPXGPo3W7dfeFmm8rtN7fk9M0AQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199369},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d1505ee107cd5c285ae171c3a712ef68501710dc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-07T02:31:35.954Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.365"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.53-renovate-internal-patch-d1505ee107cd5c285ae171c3a712ef68501710dc_1636252467985_0.1663718115202797","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.53":{"name":"@balena/jellyfish-sync","version":"6.1.53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"228624c40261bfef1a665ac9efa16db8132a6e67","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.53.tgz","fileCount":24,"integrity":"sha512-7otzjJYPAnLWJOmy63uxUzxkTrDsHa9QUwWBz1pm79voF5CuVWX3lhRfyMFk34Pwhwxvl3bFH1VOzrfryH/hKg==","signatures":[{"sig":"MEYCIQC6CFCZfNTUd5RXr3NcXoIFjJkZ2Lbn8TlsGJrZq3v7twIhAPjeisDIdsBFdVgWvwBhRimplXHq+Ws2ztnfaPCL897R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199304},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c4df4c8ca268c4845724562a70ba2acecce5b994","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-07T02:37:06.657Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.365"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.7","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.53_1636252766061_0.7712194552975817","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.54-renovate-external-non-major-2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920":{"name":"@balena/jellyfish-sync","version":"6.1.54-renovate-external-non-major-2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.54-renovate-external-non-major-2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"17d81e9170e22e1b9d373884b82cc871005bb340","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.54-renovate-external-non-major-2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920.tgz","fileCount":24,"integrity":"sha512-JHaJlPgaNgKLNKwrOVk+agSI/RvANIrsuH0TO58/qdBLxDfjcsvVh6GmxAQ/P7K6qseIM18C8I/b7u7vwMmVmg==","signatures":[{"sig":"MEQCIA6424djIJHkne6dJvU6Z9Qz6JC0FiZhxQnBqFdQB3eLAiB8MgG6RCFtVRnZ7I2/RfTh6mlo48SdQ/OXDEdiMprFAQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199459},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-07T02:41:59.469Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.365"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.54-renovate-external-non-major-2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920_1636253081981_0.3486217344705651","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.54":{"name":"@balena/jellyfish-sync","version":"6.1.54","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.54","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ae0f84853e3c291dd673dc428025bd66f520ef0c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.54.tgz","fileCount":24,"integrity":"sha512-RNWVJfFZTUbqT8c8XfsD8+mbmH1aX3kUUjkdkaBKCgjPx8Z7LudIueygy2Q/HOvI1cGh7UMqHUXYCSPCE90QTw==","signatures":[{"sig":"MEUCIEtezKWvs79A2gRJAeyTgJE89GMpgoefuwbxX5S0CI0RAiEAvFMQj2MN+jekIQVS0choTcWRwT9I6rc3IxgmJXeuvjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199390},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"019df2069c80500cd70d3a5b80235cdd91d902a3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-07T02:46:40.189Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.365"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.54_1636253330505_0.4239456968634647","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.55-renovate-internal-patch-b77fd047e46c5a226ed63a6e2fd9fa872b6ec312":{"name":"@balena/jellyfish-sync","version":"6.1.55-renovate-internal-patch-b77fd047e46c5a226ed63a6e2fd9fa872b6ec312","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.55-renovate-internal-patch-b77fd047e46c5a226ed63a6e2fd9fa872b6ec312","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5d2cefb8ed1a91268bd77c69d435b34d723ad69e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.55-renovate-internal-patch-b77fd047e46c5a226ed63a6e2fd9fa872b6ec312.tgz","fileCount":24,"integrity":"sha512-OQwMChLLS6MD1BvJM2VzwSuW+RHfgkHryDmP35TJbr7ydUU3EgzewakU8AgLqkvMFiE8JHkRmfw+CNows/kzZQ==","signatures":[{"sig":"MEUCIFWCpLeNM0evmOuSKubunyjOPvPmLFxmN+6uXShzN9dFAiEA1tEvERZA9YR3kJ1rtVd9pfmUOnC6FpDlNMA4pz2h3Jg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199560},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b77fd047e46c5a226ed63a6e2fd9fa872b6ec312","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-07T04:38:21.775Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.366"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.55-renovate-internal-patch-b77fd047e46c5a226ed63a6e2fd9fa872b6ec312_1636260077804_0.1766093885597506","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.55":{"name":"@balena/jellyfish-sync","version":"6.1.55","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.55","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fdb417cfff904b441d25b2227eb48bbf189ebe9b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.55.tgz","fileCount":24,"integrity":"sha512-LAt+pYYZb5s2u+cE6HutYbPLQGDB3BSRzRFwo1gptjHdq8UBhaOMCgnwpyvO3Yjpm8A8zVhvLzAl4Hvmxl+eEw==","signatures":[{"sig":"MEYCIQCl5rGLYJjibkOzN9zvb9IuWZS63YlY/yU0jqcgEP/0AgIhAJ10CI5XN1WHc6ch8NQiDcO9XZup4IIXB+XdLbk6IZ8c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199495},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d90e6eb4fc60f6553e3357c57b939bd30089ae51","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-07T04:42:54.661Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.366"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.7"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.55_1636260361587_0.13676069493043608","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.56-renovate-internal-patch-58452bf2cc60488d18351a9b86d171e03c55c5c6":{"name":"@balena/jellyfish-sync","version":"6.1.56-renovate-internal-patch-58452bf2cc60488d18351a9b86d171e03c55c5c6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.56-renovate-internal-patch-58452bf2cc60488d18351a9b86d171e03c55c5c6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e2e824448cfb9a8f69c46611854cc9ad32ba1409","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.56-renovate-internal-patch-58452bf2cc60488d18351a9b86d171e03c55c5c6.tgz","fileCount":24,"integrity":"sha512-Zns4+uEDieg9NmHID+uAfECEeZLgQsI1tMOxH15Psz36f4DJE7VY2oqM6uYPp+cQlfLsGxrvLvA7LftMICJapw==","signatures":[{"sig":"MEUCIQC72xqgPPK7LaABaz0O2K8FbrLuWBJ17CNP1HNCdVroAAIgaSqsITDsg/1jDjUGV2U6hnjk/G/353Y1X81hbY95SWg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199662},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"58452bf2cc60488d18351a9b86d171e03c55c5c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-08T23:42:11.486Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.103","@balena/jellyfish-metrics":"^1.0.366"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.56-renovate-internal-patch-58452bf2cc60488d18351a9b86d171e03c55c5c6_1636415366717_0.008434165818793193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.56-renovate-internal-patch-1a5a8d0245c071f112f1f75399708079be7f2c9d":{"name":"@balena/jellyfish-sync","version":"6.1.56-renovate-internal-patch-1a5a8d0245c071f112f1f75399708079be7f2c9d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.56-renovate-internal-patch-1a5a8d0245c071f112f1f75399708079be7f2c9d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"892e3b8439c66c911eb898e1ac66eed1e1c8ba4b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.56-renovate-internal-patch-1a5a8d0245c071f112f1f75399708079be7f2c9d.tgz","fileCount":24,"integrity":"sha512-ecMBcvDLfMPV0fS01r4tUmWUukYg0iod2V9hOraT1WNhISKTwpbLKlQX82LClBaHzMebZN1DLIz4vhJBk7lGTQ==","signatures":[{"sig":"MEQCIENr7YBEM9IshttNgkDqxE2qRolqYnRQC5+xwPOlVTXvAiAPkuPEP794Va2mhYLuANBNrqr0NHyag8CzJXjs5PTLdQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199631},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1a5a8d0245c071f112f1f75399708079be7f2c9d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-08T23:47:16.867Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.367"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.56-renovate-internal-patch-1a5a8d0245c071f112f1f75399708079be7f2c9d_1636415518040_0.9120860390921912","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.56":{"name":"@balena/jellyfish-sync","version":"6.1.56","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.56","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa0a4fd69e08cfed8e4f4682a2403de51fe86b7a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.56.tgz","fileCount":24,"integrity":"sha512-Zu+POYgfjX72Pqw6uqEehE4tzmix7qeGEvNVNYjWhQ3uqv01wbxFb6tJj/yUqfrYAa7mi6mcxmeSdAU+I3ktLQ==","signatures":[{"sig":"MEQCIAaix/rZl+HrKBclX8lB3j2qKetODmmaxPjHUZNttDl9AiA2HBB0MVtuUviBzBQKdOct8RxhPRJaWiMapPuT5q9jbg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199566},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5f8f72600075711d0ff4aec67fd9ec5d9dcda81f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-08T23:53:37.891Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.367"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.56_1636415727633_0.04069641206110819","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.57":{"name":"@balena/jellyfish-sync","version":"6.1.57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ca0e5ab1a683b82ba2419bd94b4cc949bd7f276a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.57.tgz","fileCount":24,"integrity":"sha512-lG8/Swm9FO4AtiMhoXbXRY2nGXn8eeIuq77tFfN1tBaRr6GFkq7xlc5MGkD4iOl1iQ1FBup0ZragpxlJDOLaHA==","signatures":[{"sig":"MEYCIQDA3lCLmIwlA+19m5IFPLUCr5PmZVjQ7VAVek5AERBMUwIhALIO4cfh9YnqrN8ET0bqWhHEXnCuVy7jzxZB/dSpBcaU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199671},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e908705b668e3136fae847398ce3b0a4d1e7bd9f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-10T00:10:02.757Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.12","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.57_1636503145262_0.9637603589909047","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.58-renovate-internal-patch-398158b6a6008df1ee31c89aa3c747642500bd1d":{"name":"@balena/jellyfish-sync","version":"6.1.58-renovate-internal-patch-398158b6a6008df1ee31c89aa3c747642500bd1d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.58-renovate-internal-patch-398158b6a6008df1ee31c89aa3c747642500bd1d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d9e20ad5c0fc337f43370d922e6637803bbe9e59","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.58-renovate-internal-patch-398158b6a6008df1ee31c89aa3c747642500bd1d.tgz","fileCount":24,"integrity":"sha512-oyzOcqhXzcDhIVg0z9dGsGJyxMH1qIdzAuYvU5QWd4ijVYKOQteCm4yXDxLIRIDsxTI6gRdj9EBAsNU9dZdV6A==","signatures":[{"sig":"MEYCIQDX6CppAs9fuHGtGxZDkB4mNTTJTuRmbcyBmhB9x4Q58QIhAJTl95OxdxYoW75uZT0BIT6ZIFf++JoIgd1OSh4ZAlss","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199838},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"398158b6a6008df1ee31c89aa3c747642500bd1d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-10T02:52:51.376Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.58-renovate-internal-patch-398158b6a6008df1ee31c89aa3c747642500bd1d_1636513063932_0.5450576213457714","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.58":{"name":"@balena/jellyfish-sync","version":"6.1.58","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.58","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ef9ddef1e2ff82449330673c245e637578ece780","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.58.tgz","fileCount":24,"integrity":"sha512-Fsvc8TYUz4Y5grLmkgHn+dA6VHLczMr6s6Yzyt51rC/Bkgj2HyChIshecdiVTeWOHkzatUPVotGJt/T3ScMSxw==","signatures":[{"sig":"MEQCIC7sHKx3/u94cPrSAGhtWjHj9Fl/WU0HlqaH2SirerGoAiA7f66p1G17R4gDBgu439B+JjWszWvBKsCj1TcGRATBng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199773},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f981e35bfe6926cc510ad0385d0f209cc0475f0e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-10T03:00:32.314Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.68","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.58_1636513447741_0.7312802551212971","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.59-renovate-internal-patch-0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf":{"name":"@balena/jellyfish-sync","version":"6.1.59-renovate-internal-patch-0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.59-renovate-internal-patch-0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"04cab47c4221fdf447e4dc6178fb78ec7866f896","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.59-renovate-internal-patch-0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf.tgz","fileCount":24,"integrity":"sha512-7Qi7eCoS46WDdBrz18q/4wphTF3n5NQOeVlZewR94AAmEUUxPiCKOZMCC/bNk0FRdY3EPK9J/Sp9IB1T6WuT0g==","signatures":[{"sig":"MEQCICPOIw7BruIwDRVgILA4SGXkdgSsxIJO1z6VDB+w+2zPAiBqScwcqIb0LWUC97wIWcwJBUy2dfR1X6ICOLzEC021CQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199941},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-10T23:23:26.754Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.70","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.59-renovate-internal-patch-0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf_1636586815407_0.26457644813117676","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.59":{"name":"@balena/jellyfish-sync","version":"6.1.59","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.59","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"07f6b1847d87459ae669939e8563d5a25ab555fd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.59.tgz","fileCount":24,"integrity":"sha512-1Xz123Mwe5RF6JfU3PnqBoX3Cex8j6AFHfEUU430t+Nujk05HNZ/aT9XYxV31L1aFAVrqVsvJ08fO11cH5dziQ==","signatures":[{"sig":"MEUCIQC7cyRBDtf8y7dPh/qzxqx7koEUD2727K4QNfjvThr1OAIgAVIm0p4lM0RcoXpfebH7nuDQuUbvKO/6k98cJoV/tvY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199876},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ae7b443886ae5059f3462d353b9604b70c17595e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-10T23:28:33.384Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.70","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.59_1636587061191_0.9383859745236431","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.60-renovate-internal-patch-c7c828c20184bc48b974d0cea4d00bf745ac6be8":{"name":"@balena/jellyfish-sync","version":"6.1.60-renovate-internal-patch-c7c828c20184bc48b974d0cea4d00bf745ac6be8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.60-renovate-internal-patch-c7c828c20184bc48b974d0cea4d00bf745ac6be8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"297feaa16dc64d540e585e3dac0b50dd42994e44","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.60-renovate-internal-patch-c7c828c20184bc48b974d0cea4d00bf745ac6be8.tgz","fileCount":24,"integrity":"sha512-B1nUM/vT5MU9IJlr9xnUvg7//6t48ms4VCGX5r/vPePBhEtA/dkcPTv25KuGNMrRtQLZpCVEzQIIDPYFPrUGdQ==","signatures":[{"sig":"MEUCIDRvo71Y9FWNLQe16JjbBxSB7EzkpuHP4P2h51aLrdzmAiEA7CWcNBKNrWUUvZU5AwjDygqY3NvwhIbI0q0qVFDg1QY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200044},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c7c828c20184bc48b974d0cea4d00bf745ac6be8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-11T02:17:00.245Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.60-renovate-internal-patch-c7c828c20184bc48b974d0cea4d00bf745ac6be8_1636597168384_0.4731018640797424","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.60":{"name":"@balena/jellyfish-sync","version":"6.1.60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.60","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bb8edb6cedcba8e0216c685eb607b5bbe281868","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.60.tgz","fileCount":24,"integrity":"sha512-/Skm1U5O+HIVF+i61aPWr47hT+hAg7NtUHXFPPc6zuobkbHSuPCSFeMxdSmKlTguAH8KmGYsBS9JLORKcAvyDQ==","signatures":[{"sig":"MEUCIQCvmdeh3ovNhXQvN7wZpOGXqPRNUQoqgPRgJfpqcgn6aQIgamxsN3RcFAM4W2V+dwzsr1m3rU33VjPU06/XRzNUxkI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":199979},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"27872b7ab6fc678e7769d6b336c1b3fe63258527","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-11T02:20:15.705Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.104","@balena/jellyfish-metrics":"^1.0.368"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.60_1636597357243_0.664124442271866","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.61-renovate-internal-patch-8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a":{"name":"@balena/jellyfish-sync","version":"6.1.61-renovate-internal-patch-8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.61-renovate-internal-patch-8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a1c8a54a4a58663f70f52dff6ff9970d5d5ec8cf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.61-renovate-internal-patch-8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a.tgz","fileCount":24,"integrity":"sha512-Ik8twf6PF4QX5Hwa7OJwCGa7yleZWJ7I4lN9OiPEHHTVPzCb2caYt5fuVeD067xoQWsvMt4XS47SRoUwLjU00A==","signatures":[{"sig":"MEUCIQC3npLRcWS1fSQcK+CgWKJVXnka/I12rmhYYLOGs5RIrwIgQAjSzwGReIzuwZWKa/hEdvLMBembZcK8aQEea71zyUM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200115},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-11T08:43:37.432Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.106","@balena/jellyfish-metrics":"^1.0.370"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.61-renovate-internal-patch-8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a_1636620420604_0.8742112160587496","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.61":{"name":"@balena/jellyfish-sync","version":"6.1.61","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.61","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b40b13545fc1cb01ce31382251d0a256915f4c5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.61.tgz","fileCount":24,"integrity":"sha512-2WqqGQsHASxkFHSz+qytcGEZC5vr8/HZtGf/VNo1/5qB4TdWTbwDpFhNxhbJbauNiuT4a0YFiwvVlbKeIXs9Vw==","signatures":[{"sig":"MEUCIBb2ouZOZPKPBLtvJCjyn5xpd+qRwInR0kIPJNgHfTD9AiEAlypeAyAWhfJTOTVpXXhj0OUSa3KBPpSZTUwFXi6j+No=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200050},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8ab36dd94482194656304204da62fd09de40f740","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-11T08:48:59.795Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.106","@balena/jellyfish-metrics":"^1.0.370"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.61_1636620668192_0.5393782083126204","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.62-renovate-internal-patch-178ebcc1274e6b7fd06c9aa5714995f86e8032d6":{"name":"@balena/jellyfish-sync","version":"6.1.62-renovate-internal-patch-178ebcc1274e6b7fd06c9aa5714995f86e8032d6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.62-renovate-internal-patch-178ebcc1274e6b7fd06c9aa5714995f86e8032d6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"730ac7f510383378ac2e34a894e49e86c57c481c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.62-renovate-internal-patch-178ebcc1274e6b7fd06c9aa5714995f86e8032d6.tgz","fileCount":24,"integrity":"sha512-ScSNgW3zhCX1zrBVjmvCcJHeHdC4b6TJbLY23Pncj35DQNkING2g++gZ5efEEDtQAQPHDVEmCFaKXIgAA+jyqA==","signatures":[{"sig":"MEUCICFivDGHWaFg/ZK6mwY6sFGjvvHgkRHw4BKaa64kBnPhAiEAkN6EIf9QhrB1PwseEmqqulg4KR12MQSHpj8ZiziuYvo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200186},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"178ebcc1274e6b7fd06c9aa5714995f86e8032d6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-12T05:20:04.834Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.107","@balena/jellyfish-metrics":"^1.0.371"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.62-renovate-internal-patch-178ebcc1274e6b7fd06c9aa5714995f86e8032d6_1636694542129_0.1816758413903481","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.62":{"name":"@balena/jellyfish-sync","version":"6.1.62","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.62","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"11fc81d047960daa5b49c3984b33471dfae2ac7d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.62.tgz","fileCount":24,"integrity":"sha512-s9TZUDyM1jvnpyV9molgYxigCeq6SwsGmc8mNUKCUefxb3SxApZmHcnuItVaVy1M4sNvtpSYP9c8jkBCAez1+w==","signatures":[{"sig":"MEYCIQDClox+rrO9hqowT66UH7ht0F7npqEKv+27dF8d/PUmsQIhAKD8wgB94/EYKSXYc6HDfB/dT4ePLerVgfB3tykphWv1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200121},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7d6367af87dae5a09a643a5bff9fb806cc777b53","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-12T05:23:46.768Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.107","@balena/jellyfish-metrics":"^1.0.371"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.62_1636694731430_0.992900301111777","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.63-renovate-internal-patch-c65abe4ad8b281d723ca294b5fc9455d55d7ea79":{"name":"@balena/jellyfish-sync","version":"6.1.63-renovate-internal-patch-c65abe4ad8b281d723ca294b5fc9455d55d7ea79","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.63-renovate-internal-patch-c65abe4ad8b281d723ca294b5fc9455d55d7ea79","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"013a06964bc67c0ab5eed11c34477fb7a023b6ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.63-renovate-internal-patch-c65abe4ad8b281d723ca294b5fc9455d55d7ea79.tgz","fileCount":24,"integrity":"sha512-1sK79X/xKTDH0JyovBd7osxiANbUNg9sk8qbKhCcFjVXKiWnZQHmoEgBkDdjoFcbDjQSNOaB3WG3tlBvM8K9tg==","signatures":[{"sig":"MEYCIQD0wmvbcKzkDeOgka02uYXJS30ECXHyeldw5F0fttv1twIhAPNejg/+jlho6R29KQbN+YBbzJTei7ZpdisAsBvP1lID","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200291},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c65abe4ad8b281d723ca294b5fc9455d55d7ea79","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-12T09:47:28.741Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.107","@balena/jellyfish-metrics":"^1.0.372"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.63-renovate-internal-patch-c65abe4ad8b281d723ca294b5fc9455d55d7ea79_1636710622500_0.1786818102741905","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.63":{"name":"@balena/jellyfish-sync","version":"6.1.63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.63","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2edb89eefa22b29079776970e76d0e02ed500d34","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.63.tgz","fileCount":24,"integrity":"sha512-B7E4ElMEmRTi1XuTs3oEbF6XOdLfXcI1tcf3Qbmkx1lSRXn9agEjr2gnz0o6hrK5qkRil6EjtZFohSZuk/YZGQ==","signatures":[{"sig":"MEQCIAPV6HeP9r2al3fb8t0F39P+ouHhjL2stUNfWLL2BAUPAiBlqPcBMyrwKGFnq2hGxbWTGZHsjxMuEQVrgs+vkIUFFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200226},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"59c0e8ebeeb27f55be304c5eac1c0582a50a3a71","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-12T09:52:29.646Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.3.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.107","@balena/jellyfish-metrics":"^1.0.372"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.1.4","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.63_1636710845060_0.9297623349402631","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.64-renovate-external-non-major-73174d54870e715dfdd29687337830dd9f2cd2f4":{"name":"@balena/jellyfish-sync","version":"6.1.64-renovate-external-non-major-73174d54870e715dfdd29687337830dd9f2cd2f4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.64-renovate-external-non-major-73174d54870e715dfdd29687337830dd9f2cd2f4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6acdfbb58f231ed69db48e6e0485277172b0f55b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.64-renovate-external-non-major-73174d54870e715dfdd29687337830dd9f2cd2f4.tgz","fileCount":24,"integrity":"sha512-DMbNH1MS6EXVJlCnfnJr1eUo4RjK02LTR2X/5GxXmhiHMokPUh/KFccBd8SvNgy/9lAaE85U4JfxDoq9JpQRWA==","signatures":[{"sig":"MEQCIBOhbiy2rOlgBAZgmskKekPsEp2sT4AVuLaR21BpKbYCAiABa3o7aaU4MtbR3ZC39zGX/gVKt7xy2tF8l3CZkVG7QQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200370},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"73174d54870e715dfdd29687337830dd9f2cd2f4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T02:18:04.853Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.107","@balena/jellyfish-metrics":"^1.0.372"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.64-renovate-external-non-major-73174d54870e715dfdd29687337830dd9f2cd2f4_1636770045418_0.38643250627495274","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.64":{"name":"@balena/jellyfish-sync","version":"6.1.64","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.64","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dda726c77cd2f3048adcf7024e958aea8cfc048f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.64.tgz","fileCount":24,"integrity":"sha512-DhTPazMUAitHn9uSx2NkJ9vOXp+sBUvWKY8f8jEupKIxHQ6qUu5y26Z6uBq/QOwljSD60WB2/aNYoF0Xeiqa7Q==","signatures":[{"sig":"MEYCIQDI/UXUzXg3jKCzXSozpWVkERAOzpB3GKZlZinHmgwt1QIhAMp5e77v2MbcqRIFCQPpGEwhiLwLPYDJN5oFY89YDEk1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200301},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9db7e0553f87f105ba0bde8ad45eb7fa1ece6d46","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T02:21:55.232Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.107","@balena/jellyfish-metrics":"^1.0.372"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.13","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.64_1636770212739_0.8669080847700144","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.65-renovate-internal-patch-100066c0c9ff76b5259e66a059bec0f57a7764bb":{"name":"@balena/jellyfish-sync","version":"6.1.65-renovate-internal-patch-100066c0c9ff76b5259e66a059bec0f57a7764bb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.65-renovate-internal-patch-100066c0c9ff76b5259e66a059bec0f57a7764bb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cac29a65ac1b96f17d7f167ad4dcb183722f2d04","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.65-renovate-internal-patch-100066c0c9ff76b5259e66a059bec0f57a7764bb.tgz","fileCount":24,"integrity":"sha512-7a4XXCS0n1SIOHQOk/tXj1kxLfKiMf4HDwDAg9NCzizvQLXt6ER4hjl5TJElBVtMAnPFIZ9IkXYZnRNlefswyQ==","signatures":[{"sig":"MEQCIFGgh5raXUD4HsM9tq8RvIuEmLSF51bcquRume5DKTpXAiBmXNbpqv1X1WKsZCeDCqV68KV29J2XPJlqCKz7WDM5zA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200437},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"100066c0c9ff76b5259e66a059bec0f57a7764bb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T02:25:20.351Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.108","@balena/jellyfish-metrics":"^1.0.372"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.65-renovate-internal-patch-100066c0c9ff76b5259e66a059bec0f57a7764bb_1636770491410_0.8043016568373913","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.65":{"name":"@balena/jellyfish-sync","version":"6.1.65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c550deabcb24068b477fb9f248ef694083b9b66d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.65.tgz","fileCount":24,"integrity":"sha512-IQxbHWQNNNpO+H3JlU2gz1p2AHECPpqAomzBI3hPQB87ugUJA2HQ4IoQvspgzE2NMMsdtvqR5eEsdXBKRHMDBQ==","signatures":[{"sig":"MEUCIQDFOBdVXafWqa/vm9Y2lFrpaPT5lMEmwaFfDjKH5Pz8vAIgSpqMWlVnEUdWbsnJ3rfr1kEQDhccwvhJjqoNTRFKcpM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200372},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d7a1a1f3b55b5f9bb8d5ed2af6cc328922bfd3ca","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T02:29:24.795Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.71","@balena/jellyfish-logger":"3.0.108","@balena/jellyfish-metrics":"^1.0.372"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.65_1636770673224_0.08892370922165549","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.66-renovate-internal-patch-7386fd629863aecf3247078631e1b19e924d64e1":{"name":"@balena/jellyfish-sync","version":"6.1.66-renovate-internal-patch-7386fd629863aecf3247078631e1b19e924d64e1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.66-renovate-internal-patch-7386fd629863aecf3247078631e1b19e924d64e1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"560afb92e1a4da445ac132e7186ad275250b956c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.66-renovate-internal-patch-7386fd629863aecf3247078631e1b19e924d64e1.tgz","fileCount":24,"integrity":"sha512-8lxVh7kQNre81Jw6nx3IJVNM/++lF9WW/TiXQglat9tEf8viDz2KeuXMoZrFoMCH3qmwYsvXHuG/ZlZ6JX1huw==","signatures":[{"sig":"MEUCIQCL0ZpxvL9JO01UDe3fPwqPekknSmtGy6s/HtFgzfmgDgIgd1VnQoHiU/ipZCJHaedUS1IWvJwnRR/tR4Cw8EM6MVA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200508},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7386fd629863aecf3247078631e1b19e924d64e1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T08:23:03.417Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.72","@balena/jellyfish-logger":"3.0.108","@balena/jellyfish-metrics":"^1.0.373"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.66-renovate-internal-patch-7386fd629863aecf3247078631e1b19e924d64e1_1636791976865_0.7149185601004748","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.66-renovate-internal-patch-52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006":{"name":"@balena/jellyfish-sync","version":"6.1.66-renovate-internal-patch-52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.66-renovate-internal-patch-52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"54bd37e01c294c566b76780ffd221fb92a97328a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.66-renovate-internal-patch-52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006.tgz","fileCount":24,"integrity":"sha512-FuowCeSRvW+HhZaTK2n9W9VABGnOow2lP2RKCW6cThKdhtI9uIYf35Bouz+EFHFSfzCplldCaou7Hd+Eg4/WTg==","signatures":[{"sig":"MEUCIBtDihWmbyWlnVefKDRgyuqlaCGFow1Z6TKs9JQTTyS2AiEAgoBVXS+NHRDNKswJ+z96uh3h+xdGFWnVA+hLlM/aTpc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200508},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T08:26:26.492Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.73","@balena/jellyfish-logger":"3.0.109","@balena/jellyfish-metrics":"^1.0.373"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.66-renovate-internal-patch-52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006_1636792162573_0.8000688341235676","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.66":{"name":"@balena/jellyfish-sync","version":"6.1.66","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.66","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2e153f3cc881b59fa30dce17395c1e64250e49dd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.66.tgz","fileCount":24,"integrity":"sha512-PBUtLGDt6EHzA/jcOL6Xp3dvOuF8pbt1IlETid75ADZpSxJsG4WivGrBfugP9VDX0FZRuE6u3AR+on/MHxn73Q==","signatures":[{"sig":"MEUCICHVgWrQF1pZWo0ZcdRGMckkToOf2hLWOXPjtfy154ozAiEA3RJ/V1Y0ojssrTVbotE44whSpagFSE1vKXfqD98Kjio=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200443},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"81f8e44bc52ddb32a9f8e75e929362e6a87ee9e5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T08:30:34.123Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.73","@balena/jellyfish-logger":"3.0.109","@balena/jellyfish-metrics":"^1.0.373"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.66_1636792344440_0.38531645496083167","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.67-renovate-internal-patch-2c6be3eb30e289e6b80e28f947acd3132d87b7af":{"name":"@balena/jellyfish-sync","version":"6.1.67-renovate-internal-patch-2c6be3eb30e289e6b80e28f947acd3132d87b7af","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.67-renovate-internal-patch-2c6be3eb30e289e6b80e28f947acd3132d87b7af","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de3addd0013a0ac376e5264b39cc543b94f42b20","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.67-renovate-internal-patch-2c6be3eb30e289e6b80e28f947acd3132d87b7af.tgz","fileCount":24,"integrity":"sha512-GdhYsAsHv/+OEnfZ9R18FzPf/27E0n2D4JxqftvP0OeiKP1WncTTWpZp0sVq6wZFJwaNFRGDRFsxzAiLEk5wYw==","signatures":[{"sig":"MEQCIHeZEzfexd7ZEgFg+WsTu7S2I8ggEaVdpC/WPqm2XcxRAiBZcQd2cVz7AQusMDyfr4lFtOYE6Pl0ADb05m27aiEQhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200613},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2c6be3eb30e289e6b80e28f947acd3132d87b7af","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T11:02:45.511Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.73","@balena/jellyfish-logger":"3.0.109","@balena/jellyfish-metrics":"^1.0.374"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.67-renovate-internal-patch-2c6be3eb30e289e6b80e28f947acd3132d87b7af_1636801541166_0.32825731471633235","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.67":{"name":"@balena/jellyfish-sync","version":"6.1.67","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.67","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b64c3d1b3c7f50d2c2601b807c72cf5198ff1c03","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.67.tgz","fileCount":24,"integrity":"sha512-1Bq94GRx/Va/PBBnVTkHbDwh9NTK2gU4Xc56Ru75yFGPmUq5FHoMGU3gxJ52fc4ShSX/vuueVCOI+LwgIyX9Bw==","signatures":[{"sig":"MEUCIGBEYP/XGfm3mSvgFtpq7IslLl3FDmJj+g7xSj0YEyWAAiEA8DAgfvYxHEoemR89oe8JKVKtxq1c1/Zkc5G/nTxol1w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200548},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"270e6a2e09a57d77808a70a6a8eba0e2dcee4bfc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-13T11:06:38.240Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.73","@balena/jellyfish-logger":"3.0.109","@balena/jellyfish-metrics":"^1.0.374"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.67_1636801710618_0.5362814222980066","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.68-renovate-major-external-major-2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c":{"name":"@balena/jellyfish-sync","version":"6.1.68-renovate-major-external-major-2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.68-renovate-major-external-major-2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cae989dc5693383ca5de90076c2d484b91dd1f07","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.68-renovate-major-external-major-2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c.tgz","fileCount":24,"integrity":"sha512-8qerzVlqY7cD4r1b44l94W5oOhWjO+aF6PLZd53hHBlg/ZaU/RZWp7FekLXLStjXuQdk3JsagTAYTljAnEydpw==","signatures":[{"sig":"MEYCIQDGPRh52RKLaC4dK8Q6cBLzWKO89nd5lcsTN3cknYPQjQIhANuz3ApYzr5vBY+LYaRcnPV8dzII+iF4Yui8Aw9Eg/qd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200705},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T12:13:12.978Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.73","@balena/jellyfish-logger":"3.0.109","@balena/jellyfish-metrics":"^1.0.374"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.68-renovate-major-external-major-2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c_1636892127727_0.04543977089431572","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.68-renovate-internal-patch-09e6d858c60780c16b4a33e0aadac8f83342c122":{"name":"@balena/jellyfish-sync","version":"6.1.68-renovate-internal-patch-09e6d858c60780c16b4a33e0aadac8f83342c122","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.68-renovate-internal-patch-09e6d858c60780c16b4a33e0aadac8f83342c122","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"de4816e6804507496fbc54d972a1c133c32cdaa0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.68-renovate-internal-patch-09e6d858c60780c16b4a33e0aadac8f83342c122.tgz","fileCount":24,"integrity":"sha512-oAUV6F2AKrxjzR/llribPuyP6V2xajZ4KhC/yOhrwNUeQijx3A+7FACQMZl0Y0zPThARUCkuaI/Ch3bpyLu/LQ==","signatures":[{"sig":"MEYCIQDcSQgdBjC/GTl2bOsu60v4yjKYQt9b4Lb1Nmf8RzsfaAIhAPCn93+Gm5Y0MkPF9EgECxwZJUghJPLUeoBrBRC0yVUV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200684},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"09e6d858c60780c16b4a33e0aadac8f83342c122","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T16:44:53.316Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.74","@balena/jellyfish-logger":"3.0.110","@balena/jellyfish-metrics":"^1.0.375"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.68-renovate-internal-patch-09e6d858c60780c16b4a33e0aadac8f83342c122_1636908426776_0.8384108673396395","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.68":{"name":"@balena/jellyfish-sync","version":"6.1.68","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.68","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6730470a9ea0db2be9b8f288a5fee03fcab09806","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.68.tgz","fileCount":24,"integrity":"sha512-adcAttmMtf6Ne/42dk3VZWVlgB0cJYwhPZbg45KUQIvnI5Z6hRY+fU/l8/8pMh3RGmtlWuV9S3uPiVcy/WeEtw==","signatures":[{"sig":"MEUCICZOGyo40kccUA5V1BVWV2ducwTsbehXTwWkfsuu30EeAiEAj157i80PLQodNv8AcOZ/EyHMKvwvP8RabaWfhEGkhM8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200619},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a940cf7594370186a6d7b395a17fc1db2a157ea0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T16:48:15.533Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.74","@balena/jellyfish-logger":"3.0.110","@balena/jellyfish-metrics":"^1.0.375"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.68_1636908603855_0.6590603428650754","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.69-renovate-major-external-major-f08c25c041b96026aabc820b34b8732fec867641":{"name":"@balena/jellyfish-sync","version":"6.1.69-renovate-major-external-major-f08c25c041b96026aabc820b34b8732fec867641","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.69-renovate-major-external-major-f08c25c041b96026aabc820b34b8732fec867641","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ce9610cf5aa092eea227d362440713a81cab2476","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.69-renovate-major-external-major-f08c25c041b96026aabc820b34b8732fec867641.tgz","fileCount":24,"integrity":"sha512-xxoTAJEB2+ERWC4cWk9+5HMMxRnJasYSnoJD18ukASIW1P3xRBFlh2Hg3gcUnW5LB6/QxWkUMQDXoRPf95cX3w==","signatures":[{"sig":"MEQCIEIABrk192JhIzUznH8512JUQ/ejoSt2qubIjw8L+5cVAiBLE3x/8y4kcIpYPbTB4dvo3VRuY21kdFlzhFrPnUFVkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200776},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f08c25c041b96026aabc820b34b8732fec867641","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T16:51:55.338Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.74","@balena/jellyfish-logger":"3.0.110","@balena/jellyfish-metrics":"^1.0.375"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.69-renovate-major-external-major-f08c25c041b96026aabc820b34b8732fec867641_1636908877721_0.9292077370030369","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.69-renovate-external-non-major-97f01a556e2cab626c50ab7206a89bc7f80ae22d":{"name":"@balena/jellyfish-sync","version":"6.1.69-renovate-external-non-major-97f01a556e2cab626c50ab7206a89bc7f80ae22d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.69-renovate-external-non-major-97f01a556e2cab626c50ab7206a89bc7f80ae22d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"224c86b55a442f5fb524ee77a6a2921c5739cff8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.69-renovate-external-non-major-97f01a556e2cab626c50ab7206a89bc7f80ae22d.tgz","fileCount":24,"integrity":"sha512-Vh3IlfKVmwuHn/OWkniIdREvtLiwhIY6npCrApaqu8t4cVXE/GSbw0x4Vwd53eFntG6ilpQmAQoTUYfdWkZpiQ==","signatures":[{"sig":"MEUCIQCUUlrJ/ZA+xIlWCOWvrjzFQz4neB292/tFmmEZTcSfxwIgFKnIMSBuX79kbQ0R8wdhWXFYMSKJf+agVJAKfvmCXYU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200774},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"97f01a556e2cab626c50ab7206a89bc7f80ae22d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T23:06:37.911Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.74","@balena/jellyfish-logger":"3.0.110","@balena/jellyfish-metrics":"^1.0.375"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.69-renovate-external-non-major-97f01a556e2cab626c50ab7206a89bc7f80ae22d_1636931387235_0.0036317510249761487","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.69-renovate-internal-patch-d012b4c7b731be022577105100c8a0ea88ede07f":{"name":"@balena/jellyfish-sync","version":"6.1.69-renovate-internal-patch-d012b4c7b731be022577105100c8a0ea88ede07f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.69-renovate-internal-patch-d012b4c7b731be022577105100c8a0ea88ede07f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2837aae501f8582ce87c76ff2df56d1d0bd1a84","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.69-renovate-internal-patch-d012b4c7b731be022577105100c8a0ea88ede07f.tgz","fileCount":24,"integrity":"sha512-DYMbD/S5FvfbiBFx4Ab93oT6mwtB5nuiMsWwXIJe4LV76KbZ0I1w4S/dgk46Sx/VAtxP/+/rhklnDPNassEodA==","signatures":[{"sig":"MEUCIBj5hriVdXHMes6o6LcoBmCaeABLykhppUI8qoJg9iv0AiEAsp44ra4VY+iBMFxbmqADRWmcCIuk/trB4dPAFNkvQKM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200755},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d012b4c7b731be022577105100c8a0ea88ede07f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T23:07:38.987Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.111","@balena/jellyfish-metrics":"^1.0.376"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.8","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.69-renovate-internal-patch-d012b4c7b731be022577105100c8a0ea88ede07f_1636931435553_0.9194865034365614","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.69":{"name":"@balena/jellyfish-sync","version":"6.1.69","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.69","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9ecbeb64d6a982f75f38ef7225c4c753b13b7eb4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.69.tgz","fileCount":24,"integrity":"sha512-4v8PS2xWctHHUjBnkzegxStCMNlvrbNZsM5qW7xzKpwQ6BoyJHrCZ5EpEac0vq/SZ4eU7OF7mgrRYP5nLXu05w==","signatures":[{"sig":"MEUCIE0TbgiAsIjg+Q2Zqv28HD4NrL5BrEJcLqnqYP8XbriVAiEA6HQoxJtF9m5xZb8pbrQx7LLzGK2SZNAyUs6Mz6bp6qM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200705},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4c53b81d08832ec56a245487bea9050617d09d25","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T23:11:44.487Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.74","@balena/jellyfish-logger":"3.0.110","@balena/jellyfish-metrics":"^1.0.375"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.69_1636931623496_0.5330075239955101","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.70-renovate-internal-patch-844325b46be6f2d9bd0249cab67c65af0589ae5c":{"name":"@balena/jellyfish-sync","version":"6.1.70-renovate-internal-patch-844325b46be6f2d9bd0249cab67c65af0589ae5c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.70-renovate-internal-patch-844325b46be6f2d9bd0249cab67c65af0589ae5c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"77f14772f808209e4f71fdaacb82646584b5fa9f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.70-renovate-internal-patch-844325b46be6f2d9bd0249cab67c65af0589ae5c.tgz","fileCount":24,"integrity":"sha512-nqQpI38umWKhuaimj/Wg/NUuagwOjwUE7O1hJYmjvyk/+oFCccS6XDnM6WspHSxoF1jdAgm2yOtlDUrxgfpecw==","signatures":[{"sig":"MEYCIQDV+PtEDNa4AtbpMpnJPvea0hf7ZxFDyMCd2u+NsndojwIhAOaE4/RS9U1Yu23IqQu6cVXSh7izTk1uAXw55CZHG3gp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200841},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"844325b46be6f2d9bd0249cab67c65af0589ae5c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T23:15:51.594Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.112","@balena/jellyfish-metrics":"^1.0.376"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.70-renovate-internal-patch-844325b46be6f2d9bd0249cab67c65af0589ae5c_1636931910693_0.7592439660296433","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.70-renovate-major-external-major-960eaa4b6f9a62506c7b07796d312e658a58ac70":{"name":"@balena/jellyfish-sync","version":"6.1.70-renovate-major-external-major-960eaa4b6f9a62506c7b07796d312e658a58ac70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.70-renovate-major-external-major-960eaa4b6f9a62506c7b07796d312e658a58ac70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dd930aac4781193eab77da6197fc7dc8c9d02633","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.70-renovate-major-external-major-960eaa4b6f9a62506c7b07796d312e658a58ac70.tgz","fileCount":24,"integrity":"sha512-0nXKeTuhR+D0AkWXNVZI7fvcFelxT6Bd2iwSIYFLZXl1nsYd9YOFlgZVM2V490i8wIFaIzFD4MO3sdmCb9b0lg==","signatures":[{"sig":"MEQCIB/R6yXuubt4t5a6oNsi3aKiAXdsVjkViUbP7IdBO+iNAiAhVDU54ievFDFthmD/CvSR5mDXbSzY6KXBflJUUVqngQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200862},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"960eaa4b6f9a62506c7b07796d312e658a58ac70","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-14T23:16:24.414Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.74","@balena/jellyfish-logger":"3.0.110","@balena/jellyfish-metrics":"^1.0.375"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.14","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.70-renovate-major-external-major-960eaa4b6f9a62506c7b07796d312e658a58ac70_1636931995134_0.6039532092186843","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.70-renovate-internal-patch-8696c714f7e52461eff73b372f7fd679362ad069":{"name":"@balena/jellyfish-sync","version":"6.1.70-renovate-internal-patch-8696c714f7e52461eff73b372f7fd679362ad069","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.70-renovate-internal-patch-8696c714f7e52461eff73b372f7fd679362ad069","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"75d26ee4523a543ddf09c9db7c47a6740247f946","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.70-renovate-internal-patch-8696c714f7e52461eff73b372f7fd679362ad069.tgz","fileCount":24,"integrity":"sha512-KVXqNi3LBS2zwwMNE4+/8+IrLzB191eiBkF17BEeWKkLS3nYIehHwAjzUmcbwW/KtA6HQK9koCw3JKNpiaY37g==","signatures":[{"sig":"MEYCIQDbq31GynAKfsyKFn8cBKzrPegKVkKJoKGlUapDrQiNIAIhAOZ/sA2F8g3f4iilhSOA93q9FnqqYqGPGLULykdc9LR0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200841},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8696c714f7e52461eff73b372f7fd679362ad069","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T02:16:12.732Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.112","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.70-renovate-internal-patch-8696c714f7e52461eff73b372f7fd679362ad069_1636942728086_0.4192840313605428","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.70-renovate-internal-patch-8bed90ba1a8041334684f00d845157cd0195cf11":{"name":"@balena/jellyfish-sync","version":"6.1.70-renovate-internal-patch-8bed90ba1a8041334684f00d845157cd0195cf11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.70-renovate-internal-patch-8bed90ba1a8041334684f00d845157cd0195cf11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7726f7d05bccf2b0f48c64ceec918dab792abca6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.70-renovate-internal-patch-8bed90ba1a8041334684f00d845157cd0195cf11.tgz","fileCount":24,"integrity":"sha512-GCC9gWqWJFo9tOAuXiGcShY0uI2TUmyZsdnXeiLkCi0qyRTa3CstajGeSaUT2/khbfEb+y5teS03yiLxku38Ng==","signatures":[{"sig":"MEQCIDlU60RIfS/f3xXuLGahObqRXshZjHBn6Kc75nTxKIaAAiB43lM/TWaevDZrwZxpr5m1EU2bJkNYmGigGGxz0e4qCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200841},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8bed90ba1a8041334684f00d845157cd0195cf11","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T02:19:23.087Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.113","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.70-renovate-internal-patch-8bed90ba1a8041334684f00d845157cd0195cf11_1636942930175_0.6670067775228998","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.70":{"name":"@balena/jellyfish-sync","version":"6.1.70","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.70","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3e61896be495d023373d6aa74fd9630c3ff84d11","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.70.tgz","fileCount":24,"integrity":"sha512-x9F1Tzp3z73t5TwiibFo9vT07UzlNYb/DWA6mnlu1MHSenBX0/sKRL7Zn2cG+k7Sd5IfDDSjCQZmEK30+FHvAA==","signatures":[{"sig":"MEQCIBRw84YGc9Zx4PY1S4ivzQP/DqbW3k8pBIft2bM3v8lnAiA2Y4fPrpUlKxNysqFvjLXIDI1RpDeYdKoIsAIwiZ/jRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200776},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"eb4193202ce17b1ac399388907c375dad877aa61","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T02:23:13.449Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.113","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^11.2.6","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.70_1636943092476_0.1596881310381526","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.71-renovate-major-external-major-122245be04031cf70f797f1fec994cd49cd3774e":{"name":"@balena/jellyfish-sync","version":"6.1.71-renovate-major-external-major-122245be04031cf70f797f1fec994cd49cd3774e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.71-renovate-major-external-major-122245be04031cf70f797f1fec994cd49cd3774e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5bb333d81ea9b23748b07d05f39452e589e61d44","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.71-renovate-major-external-major-122245be04031cf70f797f1fec994cd49cd3774e.tgz","fileCount":24,"integrity":"sha512-0KQWezS08F0GrChkSi6No1gDh6MA9B7x9M7RA24C8mU67QhfejLo4dAQv0WgXEjBFu6PKdCERhS1z6hWgcFiMA==","signatures":[{"sig":"MEUCIGEG1sMHvuH0+6kHF24DNFubYdls40S5Wtz6FsrBGBK0AiEAzT5Y+qsDcEgDII2s6MCQaEl483gKYav0uk51CFFb5QE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200933},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"122245be04031cf70f797f1fec994cd49cd3774e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T02:25:13.338Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.113","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.71-renovate-major-external-major-122245be04031cf70f797f1fec994cd49cd3774e_1636943277200_0.3146514463861878","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.71":{"name":"@balena/jellyfish-sync","version":"6.1.71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"UNLICENSED","_id":"@balena/jellyfish-sync@6.1.71","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a9d7d27b516884a46a8bb65690ebda0d34fd4ee","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.71.tgz","fileCount":24,"integrity":"sha512-XQek1bYk5qmqdpWSfgeD5tRj5dza23SiRfg7+6SwCL1cCQBxRtTsYrTW1J/W/UmK7mg/tcwkX+RksJpd4bTHCg==","signatures":[{"sig":"MEYCIQC0/tuwvFmfSQph0IzbKcT5UdR8cjteQNKJ+TGlZDBU1AIhAKlPdgAwQppVBhNutQWTCOFRwfRErEa58U0wtr4B1i5E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":200862},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e33d4cb3ca27b220003d8a174321be0987d47231","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:15:49.028Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.113","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.71_1636946258956_0.3632620949515244","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.72-joshbwlng-set-license-6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce":{"name":"@balena/jellyfish-sync","version":"6.1.72-joshbwlng-set-license-6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.72-joshbwlng-set-license-6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cdc41ba61ea89e20be54b0c3eea110a093e0c057","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.72-joshbwlng-set-license-6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce.tgz","fileCount":25,"integrity":"sha512-hQfanjFV9YPJoF0jElLVtJFSLaYf1k2tCywz8IrLmANG2CuwFJtPfKh/yWnq7DwpUQt+Ajb3+6cBiGgI9m9Pow==","signatures":[{"sig":"MEYCIQDFIKELxoIwUsvXnEqA18uK7GaTNgiDLznVOHs26GeCewIhAOWG4gqwZQPaoIY6xVbqZxidWL84P2s3h/7wQSVgW4vB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212315},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:31:10.096Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.113","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.72-joshbwlng-set-license-6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce_1636947237732_0.15228864068782832","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.72":{"name":"@balena/jellyfish-sync","version":"6.1.72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"39afad74d087dd9a35bf13753dd89db67797b6c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.72.tgz","fileCount":25,"integrity":"sha512-hvSmw4J8xTMV9RcrAdlQETO/AvJcBzwv5kD1aYFhqL5LLTi8JJCFvyhvSGZcMT+qOdw1OlHeOlccYlopHI3tKQ==","signatures":[{"sig":"MEQCIGFhBaYJbVVVbOiQpp42TX63j8EKHRdwnsUr/h8K1uqUAiASI9k5wKa4oFLniomh8iJ0Cxa6vab/rKijuKV8isoCxw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212252},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"46310f22e4ee45ed9af7ea4c7c97df8aebd583fc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:35:44.491Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.75","@balena/jellyfish-logger":"3.0.113","@balena/jellyfish-metrics":"^1.0.377"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.15","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.72_1636947460803_0.32100334935897146","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.73-renovate-internal-patch-ff06081e35804033be02fe1c75f600502cd8c884":{"name":"@balena/jellyfish-sync","version":"6.1.73-renovate-internal-patch-ff06081e35804033be02fe1c75f600502cd8c884","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.73-renovate-internal-patch-ff06081e35804033be02fe1c75f600502cd8c884","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fd757ba19f7e518b4c5f7562415468622433a18b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.73-renovate-internal-patch-ff06081e35804033be02fe1c75f600502cd8c884.tgz","fileCount":25,"integrity":"sha512-SMWHkWF11d+YcJXWhG0v0APCiHVkEvlG0ki97i8TlPuHP4b/SF1N6AFnuGWPTWOK7RVl+qCD2BkSot1fY+U5Pw==","signatures":[{"sig":"MEYCIQDNERKpYHi04iWNNF69d38/B+IzCr2nR4EDDtlnEaxZAAIhAN9hEX6xl0PfDJgUlzxV4m2EVHy/qSSEMMvHirnW/Bb9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212388},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff06081e35804033be02fe1c75f600502cd8c884","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:40:11.966Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.116","@balena/jellyfish-metrics":"^1.0.379"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.16","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.73-renovate-internal-patch-ff06081e35804033be02fe1c75f600502cd8c884_1636947801093_0.4589981682372115","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.73-renovate-internal-patch-20af4f5666a8d1805b741feca9192b7690a74fc0":{"name":"@balena/jellyfish-sync","version":"6.1.73-renovate-internal-patch-20af4f5666a8d1805b741feca9192b7690a74fc0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.73-renovate-internal-patch-20af4f5666a8d1805b741feca9192b7690a74fc0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9c90eca2003a35367bae3a5ebfaccdfe8bc619e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.73-renovate-internal-patch-20af4f5666a8d1805b741feca9192b7690a74fc0.tgz","fileCount":25,"integrity":"sha512-fD/AKYS0YesP0Vf6pURCuXl/Ymvqao+u/Xll6xEbNHg96kkv71ZOi2eiY37Sn+irsjO9C80woP/vOqn1BD9GIQ==","signatures":[{"sig":"MEYCIQC2y7rPdAfZxCwpNyguYxws8OBJIP27FFEjQVgUCYISfAIhAOvP26f1FbtPqc0UxOJAl6MfAkBrSd7hfD2eAzWLyxnI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212388},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"20af4f5666a8d1805b741feca9192b7690a74fc0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:43:56.147Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.116","@balena/jellyfish-metrics":"^1.0.380"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.16","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.73-renovate-internal-patch-20af4f5666a8d1805b741feca9192b7690a74fc0_1636948004795_0.3877535609983964","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.73":{"name":"@balena/jellyfish-sync","version":"6.1.73","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.73","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ec206db1282be5c695afdb21d0a7d7e4e82d9065","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.73.tgz","fileCount":25,"integrity":"sha512-B4TBxuQglmvDCITAP5aj5Xpe4lnXkgAyYneQyeKLahpUAcp7WIVMcFVAPc4IZNiUYrhu2n4zSfG3Hd7XLouFnw==","signatures":[{"sig":"MEYCIQDjqmvbHNrAmJZJglCgglaFQrzo5F27Oq5GRyxGEtqOgQIhAIfuLrOSMKsuu991DPVZXsnMKNiyHL3k5AESo6A7Ndzt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212323},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9fb9c91643611a80a8998f61f8e4bcc0cc03e2d3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:48:32.103Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.116","@balena/jellyfish-metrics":"^1.0.380"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.16","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.73_1636948214240_0.5437236878545473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.74-renovate-internal-patch-a8cfa4e94d0326f859ac9f3db2c4daf823c0f221":{"name":"@balena/jellyfish-sync","version":"6.1.74-renovate-internal-patch-a8cfa4e94d0326f859ac9f3db2c4daf823c0f221","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.74-renovate-internal-patch-a8cfa4e94d0326f859ac9f3db2c4daf823c0f221","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"147c6f3553402dc48ca6797b2d0da9d951da09ba","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.74-renovate-internal-patch-a8cfa4e94d0326f859ac9f3db2c4daf823c0f221.tgz","fileCount":25,"integrity":"sha512-ObMKem49LNLnQOknwTM1wNqgMFMshVfsAf893wpAdnxE/yps4WBwXpi+rOEGRJhni0VQ0VXzW+1FmmCEDS91rg==","signatures":[{"sig":"MEUCIERmpiLylq8+d4ZV3H7BkXRsSOW6ETCHBCn5eZPDtSG7AiEAz1UWKO5541u7rp2ZMLTAhkMgFVFwbauQVnDdXOP53aQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212459},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a8cfa4e94d0326f859ac9f3db2c4daf823c0f221","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T03:52:23.390Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.117","@balena/jellyfish-metrics":"^1.0.381"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.5","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.16","@balena/jellyfish-config":"^1.5.8"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.74-renovate-internal-patch-a8cfa4e94d0326f859ac9f3db2c4daf823c0f221_1636948526088_0.48350581445722796","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.74-renovate-internal-patch-dd72c9312dbab302e062ab6cf60ee38257e15fc2":{"name":"@balena/jellyfish-sync","version":"6.1.74-renovate-internal-patch-dd72c9312dbab302e062ab6cf60ee38257e15fc2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.74-renovate-internal-patch-dd72c9312dbab302e062ab6cf60ee38257e15fc2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8d64f5eeed40af794c7a57325e2e91bf408509a5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.74-renovate-internal-patch-dd72c9312dbab302e062ab6cf60ee38257e15fc2.tgz","fileCount":25,"integrity":"sha512-O6jaR+fZMEFN+vbDcYelCKXNQvJ3uHbiDM7MBi4iy7efHyQ/H2K3EPpEPJJhfR5PFknkoIIrDasPa1fkRfOqPw==","signatures":[{"sig":"MEUCIQCZSfi9ov+GJ+6/25mdEU7d3bBHdJSLZx+3BbsQPMiKiQIgDNv5DS9id4OeCv1HKzZO7tfPMGzvyDzcVr+HxP9tJ/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212505},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd72c9312dbab302e062ab6cf60ee38257e15fc2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T06:02:50.804Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.117","@balena/jellyfish-metrics":"^1.0.382"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.17","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.74-renovate-internal-patch-dd72c9312dbab302e062ab6cf60ee38257e15fc2_1636956353881_0.5475681374703623","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.74":{"name":"@balena/jellyfish-sync","version":"6.1.74","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.74","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a27cbde0cb9f624ac4d87c9a0f1f37975b8e331","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.74.tgz","fileCount":25,"integrity":"sha512-vW6kwqku+XvfAC8bfdkyXs9FlnoJvfX5AaouTy5Z0VsZQ7Zvf6HwKx68VRnnp6f2UUdB6m0ORQjSh2neVg3UEw==","signatures":[{"sig":"MEUCIQCq87FvROE5LYlSIAoimw26yWOJ26ciiFBicz3nFQDyBQIgQSBxuNKNktoIESfcu5KN5VHKOnNrDP3SBC9inlFIegY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212440},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c699b8550f4226035a75ad6f5072f1b42b06ef29","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T06:07:04.820Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.117","@balena/jellyfish-metrics":"^1.0.382"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.17","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.74_1636956546248_0.223300016676506","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.75-renovate-internal-patch-43ad86441ca2ce95b194fffee0e0838bd9d50504":{"name":"@balena/jellyfish-sync","version":"6.1.75-renovate-internal-patch-43ad86441ca2ce95b194fffee0e0838bd9d50504","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.75-renovate-internal-patch-43ad86441ca2ce95b194fffee0e0838bd9d50504","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"165ba165fadb0caf01c93babc8efaebf6be1f67d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.75-renovate-internal-patch-43ad86441ca2ce95b194fffee0e0838bd9d50504.tgz","fileCount":25,"integrity":"sha512-cNh0WX9xv3odeTwfmV9+q3TIQ4d3GOP/bxB1imXoeZfkWl0Xac5OM9bw5m2umhLuLiy3U1SlWnEXJvTLwfzR9g==","signatures":[{"sig":"MEQCIEA+sSEt6HXHllCAH3OhuxNIh6/iHtceiFqO7OX2HVKIAiBy6+wTQRWELTzz3n3u+cxeoWFtl1T/1lEPnoZU0q/www==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212609},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"43ad86441ca2ce95b194fffee0e0838bd9d50504","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T06:09:45.333Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.76","@balena/jellyfish-logger":"3.0.118","@balena/jellyfish-metrics":"^1.0.382"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.17","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.75-renovate-internal-patch-43ad86441ca2ce95b194fffee0e0838bd9d50504_1636956786595_0.31279952158449875","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.75-renovate-internal-patch-8d7403a431be0ccab61d6de3cd2b34258e2d0911":{"name":"@balena/jellyfish-sync","version":"6.1.75-renovate-internal-patch-8d7403a431be0ccab61d6de3cd2b34258e2d0911","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.75-renovate-internal-patch-8d7403a431be0ccab61d6de3cd2b34258e2d0911","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ced4c208e4ba48d4b9432846f3da7da3ce9d796e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.75-renovate-internal-patch-8d7403a431be0ccab61d6de3cd2b34258e2d0911.tgz","fileCount":25,"integrity":"sha512-K96kM1YE4xXtvQ2ZYaJqkoRlz3gXRkidg64vQHdOm5HVz/E/lWMRm/7pjZNS5BvQ9rykbxiKzS3pg6MomGDFcQ==","signatures":[{"sig":"MEUCIQDkCyRLcd5XfK1hWU5GVFVUJbrx6fwTbzOybWNcH9pnBQIgYs0KVgmebpCgL9d8zB1Mn8DVizbUymDwc96Pr65/AJ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212576},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8d7403a431be0ccab61d6de3cd2b34258e2d0911","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T10:59:27.181Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.77","@balena/jellyfish-logger":"3.0.119","@balena/jellyfish-metrics":"^1.0.384"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.18","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.75-renovate-internal-patch-8d7403a431be0ccab61d6de3cd2b34258e2d0911_1636974117702_0.11319586342891608","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.75":{"name":"@balena/jellyfish-sync","version":"6.1.75","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.75","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"013be512749c721cdba4589ddc1b9e0b1265ac6f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.75.tgz","fileCount":25,"integrity":"sha512-Knshs6JoqTeHbZ5RzW7nVJ3yeDsQDbhwdEOVJBdzKT6J3vQL7PMBI8legkpsWwAlsPE5xw5inFGmtpDKyGClfQ==","signatures":[{"sig":"MEQCIF3Y/7zmMFnHdZ5yBgPLW2XFNISahs1GAcXk9PGLSFuKAiBacq9NIOHOrI86lcUvYK69AARVNqcpxxXblLkYB1wFZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212511},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d427af5fc436f5cc24f5357872dd77c03f9ec09c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T11:03:23.754Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.77","@balena/jellyfish-logger":"3.0.119","@balena/jellyfish-metrics":"^1.0.384"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.18","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.75_1636974315758_0.4431040508221673","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.76-renovate-internal-patch-22a3c52ccb304bef1a41466427d5bf9412e6a56e":{"name":"@balena/jellyfish-sync","version":"6.1.76-renovate-internal-patch-22a3c52ccb304bef1a41466427d5bf9412e6a56e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.76-renovate-internal-patch-22a3c52ccb304bef1a41466427d5bf9412e6a56e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8f5208db3f83582fa47f7c7a40c3676e049904c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.76-renovate-internal-patch-22a3c52ccb304bef1a41466427d5bf9412e6a56e.tgz","fileCount":25,"integrity":"sha512-Ji6zJq5n9aSR7dMkYLJgBdF9AAktLBpM9ff5NYzMVLgDVcAtx7Q4XHBGjAB1yLmkSPi6rRJacFHGyH64W8eBeQ==","signatures":[{"sig":"MEUCIQD9apY7f9CqhqxBuboCEwLJ6MC2zFRzCGjlm+PCwgxOogIgFjAnaYbJMIV07PKN4yeS18caxi/uOrfuYM01rsFDG6E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212680},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"22a3c52ccb304bef1a41466427d5bf9412e6a56e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T11:06:56.742Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.77","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.384"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.18","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.76-renovate-internal-patch-22a3c52ccb304bef1a41466427d5bf9412e6a56e_1636974565198_0.3397604592475354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.76":{"name":"@balena/jellyfish-sync","version":"6.1.76","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.76","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fbf413095a62e558b715ada310cc476ed786cc53","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.76.tgz","fileCount":25,"integrity":"sha512-EYK33oGtFNfR/KaCnjgh8Mrg2nDD6FJAXC5mP0Abp/ojbgHd+5YHcJGwfhD4T3fkOoo/UDS+BrPCYpau/Q/OnQ==","signatures":[{"sig":"MEYCIQDw3LlrVxVcTniw/JQNmDKb34fcviQZfWNKyKald6aT6AIhAIq3raBToXKlVroQhIp/jFhg/SmD0ukdGhdA9U+IfZPI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212615},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a521d5342a9c2bacefb53bcea8d2f9b4fdab7fc8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T11:14:12.407Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.77","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.384"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.18","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.76_1636974959432_0.6195887448193031","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.77-renovate-internal-patch-5e5a9af87a6e4921be5bb247991eeb9243f97eb3":{"name":"@balena/jellyfish-sync","version":"6.1.77-renovate-internal-patch-5e5a9af87a6e4921be5bb247991eeb9243f97eb3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.77-renovate-internal-patch-5e5a9af87a6e4921be5bb247991eeb9243f97eb3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5f42dedaec0946e2a682925eb19135ade55dbb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.77-renovate-internal-patch-5e5a9af87a6e4921be5bb247991eeb9243f97eb3.tgz","fileCount":25,"integrity":"sha512-bv+8jo7AQvGysrbOcayj1lmY3CmjyYCvs2AFW19Wk/N28Gi1HmzePIGIinxWopUpQp/2HaOL/IxpQFpcKFnDYQ==","signatures":[{"sig":"MEQCID2axFcv950gcLO5CTZVhXetWx7HFKHx5lwjsLWfjXqQAiAfm7BiGxufK5aLYir/mzgzi6m5vIX1rlIcV6bu9kwHTw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212785},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5e5a9af87a6e4921be5bb247991eeb9243f97eb3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T13:51:38.365Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.77","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.385"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.18","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.77-renovate-internal-patch-5e5a9af87a6e4921be5bb247991eeb9243f97eb3_1636984450392_0.3949253837522413","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.77":{"name":"@balena/jellyfish-sync","version":"6.1.77","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.77","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f4b2e03fc8431cbbc4662cd03c99a45ccb21c348","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.77.tgz","fileCount":25,"integrity":"sha512-+Nhxq5gbgYl3eJeeJOkUaAQk2xvxO4q9Z3bg3r2cPzK2U5wwQfNd5IiTJaqHa2uRvcF3naazABwG/CgPpIN9qg==","signatures":[{"sig":"MEUCIQDdxznXlBcDq2P1j1LB8csnOS8kf08SfBKQjnBgv3kY/QIgbr8ZfsSRUDiG4qAMDd62LJzwdpYvehbAIvUd7ju/8q0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212720},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"197e6f1c55ed7bfeff4b3bf7c486de21494ad398","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-15T13:56:11.018Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.77","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.385"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.7","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.18","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.77_1636984671053_0.8726241474386374","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.78-renovate-internal-patch-a3f999ca89c96384426f6e5cc838a04487e007b2":{"name":"@balena/jellyfish-sync","version":"6.1.78-renovate-internal-patch-a3f999ca89c96384426f6e5cc838a04487e007b2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.78-renovate-internal-patch-a3f999ca89c96384426f6e5cc838a04487e007b2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d8747bc112590f3fe0e5703ed03b056166304a7d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.78-renovate-internal-patch-a3f999ca89c96384426f6e5cc838a04487e007b2.tgz","fileCount":25,"integrity":"sha512-0Z0RzV/7cTRKDSDsD8djkfFBCF3pzKFLJoLm00VoT+7S7fEF1h4/EZvghoSGRZ+gqYm4E97iDCNZ10f0P999aw==","signatures":[{"sig":"MEQCIDE2XlzSP5n6cjvSD7xnXffca7FGmdrYUy3mf0eqve6PAiAJM3sh7ga7Nlggs/58eTC1xQDzC09Ik9RfqrFRLqorlA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212856,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkw6GCRA9TVsSAnZWagAAmOwP+waUSSgmMEkX6G8UBmcI\n10iN0ZA2blIbUOIL+THyanu0JYUR8n/sTXjP9+QRq19pTecFEyvylpMUVFXw\nUcQh4TSpx03c9ynwcIezOS9Ksu00ZSIM6AECMf7wJH4SsYIeBF9JLGHcGk9K\n6HoDGEBf6Gtvtr05l3jMQ1wftKfGsfSxsbBFp+iOslVmjx2I9BBb6tzvfEN/\n4XVFrQs+RsSTHqvKR+NoPvwxM1nc6jlZqLTaOrdEcGfMboRJ446gTKYIXKTE\nTtyJlwHAYGIrMv/uKpCiwnQCF/b/9+wk94JWRa+EKu498pU44biQkuuLUEqA\ntA8DtQ4KfIek9k5qLF6u5jvtnD85+q0/5UFiDuoKFWamLtnR/KmzgKPd4eeC\nxSLtOO/PaBPcCuFdRxvt5UY6AD6b9HYnabEckmX7sSre8Kwio5JnoIANtaKz\n5+MZqIdqIQAiWWJjiUH0tWdYrav0fsj9vXLNiawiqDibtaoYAAQsAmwaGhpr\ncgUlopncmd9+q9yQcxlVDuXaHCJWU8mqX1O6AqKRrkfNwgzzBHI6GrRCMu+V\n9htz/9FG2bu3UiK2ZzdnR2K+sHF3vEFotb8j9teodwsCYiLZq2sFf4YX6veG\n+0zPYk7BDuIPsBmpG47dmHBYOYy7r7B+eE2L20KiAIU8M1X98jYBGOmwVUeJ\nRcxC\r\n=aY/b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a3f999ca89c96384426f6e5cc838a04487e007b2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-16T01:48:07.327Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.78","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.386"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.19","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.78-renovate-internal-patch-a3f999ca89c96384426f6e5cc838a04487e007b2_1637027461597_0.46990663785754583","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.78":{"name":"@balena/jellyfish-sync","version":"6.1.78","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.78","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aa112faa6c638f2f319ce8788aa3dd24e4c91c02","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.78.tgz","fileCount":25,"integrity":"sha512-uEVpdspBrQ5tp3tSn6mLqGi+ROMaf9BYuh+Bo43GYe3lgVUoECwuqlZIpPRKfj8nODVYVQBLmmRGNkFyBshdOQ==","signatures":[{"sig":"MEUCIQCbOwnsGQa5nr6ju2Vscq/BdZHTWcuxjiK0o6tmHoXINQIgU36o7AuAQTofH0qJ4e7gHIAGnr7tEo+y7hrNA/u/IlE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212791,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkw92CRA9TVsSAnZWagAAVl8P/jvqnsEVDVJam0RD8nbA\n/weegz2wcugayfnZkQnz5nf8mlqy4deLkMHDZtd6hWjGnyY3/LP8x+SbYOvw\nF8c4NhtBzHKayJkFeLqWxzP0YJxNfeJn1M3EKWivq66VFXXRGKHryJ1HXcMP\npcTBhnC8hCLcNha/M+o41QTuMI0cFnc3RagA0pqOy7llwGA5FCSv5sNbX7+V\n+q3BCahCW+ZMZzB3JtwAnccrL/olpLhM6i+tGVLaSjZuEHIy4e835g+9oIhj\nI+7wW8EgpqxYeN4eCd1CRlSVf+Ft+MWvbbmuH3UUeqaXlQMvTf+KQq/W1Xjp\nIOrQJLVlyNjuurEuuOEqeFMTkaBFI7RQao0wfhPhjBwBxHLqeY4DgwH7Sa27\nP2EGdIAz1xotpbs4Zh7pZdhr1MQerGZ3rwu5pgRfzfItVYj8nXG3kKgn2W4Y\n4DK0Jpi4gd6zoHCMDcMuDe3iDOCq2mDYqyl9nX9xQvDNlinhFGxeFUx8AflT\nAWjfT+iWlOg2Ka3Gy6slLI7JQ5SNn2LvBb8nTWf/QkD2e2nychFmHnNDGYuh\nOBGi2a1tDKaQ1DCbZccmvJh2xhWWW0dD4kJCYM4g3/mww3+4VmkKaoKHfcn6\nMd4+ahUofc0Bo4n4huYroHV94OpT6lrZ0qvuqrOp1hsslNEGEYBdDVL+spD4\nJ68L\r\n=UKvd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0bb4e18d6ff12461f8bf1421faa91d90dfbd0580","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-16T01:52:41.438Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.78","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.386"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.19","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.78_1637027702105_0.9645040422288422","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.79-repo-sync-jellyfish-config-default-92695571f8114c64b16961878c4fea78f0c84f31":{"name":"@balena/jellyfish-sync","version":"6.1.79-repo-sync-jellyfish-config-default-92695571f8114c64b16961878c4fea78f0c84f31","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.79-repo-sync-jellyfish-config-default-92695571f8114c64b16961878c4fea78f0c84f31","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a2687306bbce268854e1e0f712f9593273a7854b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.79-repo-sync-jellyfish-config-default-92695571f8114c64b16961878c4fea78f0c84f31.tgz","fileCount":25,"integrity":"sha512-qhhxJDQVwEjtVkevxne8BuOM45uTXexPhqnMV2nyIwdeWZYo61C8gbnXB2yFBCZDGMde0AFb6TBRRDQJfF9tow==","signatures":[{"sig":"MEUCIQCxIhIUX9OmSZjmpebcfkTD87/vEKBLSy6GXvvvHHnafgIgadnzNVNBCi/UrcuJpAqumqbT1nUT2Mfhpfxnh57ryQI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkzy2CRA9TVsSAnZWagAA+YoP/j/mu0D41v2nt47UxgHR\nfFZd0xOYz7AGzoVGb8wrReXWAiwPaLa7bbuM/E8Up3tXqYfTzNuet2lS4oe0\ndC5aI/fMwM0C5OkdskDz62skdyHoegN4Gpj8Q5tncBoDxMBlgdpHIEGV9WPR\nZ0LHB40+fuASYT+VYYtDcJmz/JFm87Wt48ZuJDulhvJMj14XbDqpibHmTPhi\nZNEkzh3cP6E9LKeLADDTDYEZdMVH0laLii9eUsRYT+PaPquqinqha5vqozGZ\ndEJnJ9VshK263rxOeEBAxlqt1VsaB9A6OwnR9unl1FcwjfEBBBw7dwSG09TK\nBGSULfNbJVeY6xpONnF2yFvbg8YYvBJ3GYWp8lq2D6T5PuIPN14nH3NYYGrt\npq36ncmSTMfYiI9fdFuVGiXJB4Un8RVJx0ecxLahtOHWo8a2OSjRGnalFKY5\ntiq4Bu5xzU29ITVZpuY+9789M7mPGUukgo2OIexYV/6iNRvwdsZNw9vyGmEZ\nxzRKvwlOu9g9CXijm/OBndzbhw2v0OwfGgOiQsOzdTZZKP2/XaGwVWC0WS2a\ndxxC8Tkc3cv5OwaGnq3C8V22fzv/42HbwNSY2cyANJIi6GNb21nBnTwnYJBC\nsBBKM3qIPs8dhy6HUSxcp3jYIYMfKWiCu+9g6DUTl4qt27WoATOZ0odIdq5T\ny7O5\r\n=pxuj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"92695571f8114c64b16961878c4fea78f0c84f31","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-16T05:05:28.153Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.78","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.386"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.19","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.79-repo-sync-jellyfish-config-default-92695571f8114c64b16961878c4fea78f0c84f31_1637039286658_0.42399882179152826","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.79":{"name":"@balena/jellyfish-sync","version":"6.1.79","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.79","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5b9b0d51f74116fd86a87aa1629741ee6f05e9b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.79.tgz","fileCount":25,"integrity":"sha512-TzYt6TJfwZRoA6WDsWipZEpfXstUcWmjdHokd1UTUSU+GqllaYj+pk5oQ9kv5Ym2hCicejkV3i+kF/+qCEg1Qg==","signatures":[{"sig":"MEQCIDqU9TNLizGP0nvRxYY+B+/kVlmf4nxjVwh5pA5ED8/8AiBnALgasjmRoEZoqQMo8tAzXzBkRNtKJAkX4uTd8upvKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkz16CRA9TVsSAnZWagAAxWkP+wbZP+MSFFOGCmaIFHeX\nk3Wo0I5UV51QlPV34R2XTNDwhh3sRPffPTbx4petvLVPVhF4ZluG+QY+zBVn\nonwboojfu+stMKYK5Eijlj2jDGFZ1DatB+FtpoNmJ+ioNX9lDFWOYsJHsC5D\ny2zOG4A1E21JaX1L6ZaQPChdhtUqjwyIX+BPftBv5sDa8nghEZgceDT49de6\nE+9Qi3EBiaOrkGgz5+lBiRB300MNhUeF97ACED2hWSRBFcdlPGQxFyAvaaiB\ncagDYhskmZX3lqhdeZhfL4LZqFZ3vJPNQR9yJBH+ATVAMUbuwRa9+Z6dC6e8\nE/5+9uHwkCUPmEM50znzVmg/iHvUGh8K10WT/7hBb9DVI1LISDydwN8j8Z8d\n3zvLmi7SRMl0puefwjjDXtGxAkpS8HF5I2N6XoV7rfmT/SRAEGm7MgFdhvWs\nK1UGhPBT9AJWCEXWs3OoRs3GACRFMMkSca4lZBHAQ3PiMsTcWt6NDLnVDsw2\nwU4D/U/Yxx2/Dssobp6Fx8qomH2zbuj1TGh7ioIf5MeT5ilLe62hI9Zl93Xd\nvnWLPgoyC6C6i/ZI5eRM7d4+vXt86RtIAUkFitPBAZ3DxxRtK/y9QcmMxbFa\nI1Hx9bGB1HQud3q5LYkMYVHDEHyv4b4gX8k/Y6T/L0tQyOsmI3ji8zqpoqCF\nyD3V\r\n=HrCD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"974f7d4b01f22db8348a954d945822eea02c38a2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-16T05:09:45.083Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.78","@balena/jellyfish-logger":"3.0.120","@balena/jellyfish-metrics":"^1.0.386"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.19","@balena/jellyfish-config":"^1.5.9"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.79_1637039482239_0.7941915510581019","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.80-renovate-internal-patch-10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80":{"name":"@balena/jellyfish-sync","version":"6.1.80-renovate-internal-patch-10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.80-renovate-internal-patch-10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a1370ae5df57a9fa427aa91df6d601ce87918003","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.80-renovate-internal-patch-10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80.tgz","fileCount":25,"integrity":"sha512-ldEx00IymQFBKm7/cm7fZy+ignN4poggJJWRIofBYeBgGj/qSf4CV56UmGoCFK+oJ/3zJ39xfhsEjYuLlEuJ2w==","signatures":[{"sig":"MEUCIQCqqHDxsKu6j7VWsKnsyur2dD1DP4Ay2ReZ+IkmrYD7ngIgYVTtGGzYZAniYYF7doDn4Y9vyoBTHyhfJ1HkAJcEt3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkz5zCRA9TVsSAnZWagAAuJgP/AuGXHAf8sMiP02kyGmZ\n0H6lojdRUma/FokXZI0pJ6mQcsaOUjCBqkNPCB+Ns3jxCcv7YIjgYINqQnmK\nSUD3+RfZJsKskN1d7+X3cn158t+yup+bRp32O/bA0zMmd+VKwncCzNfLJ5FG\n6TVQNqvO8TfDgzOKPCeII+sUeeXvCOX/HfQ7GHP9Hnf4yV+5HIhJfk4mibZE\ndI07T1/G+VF/c62z8F2uu/HFLw1BEeDj9ZJ3PyRAVF9L69dnp4a5kW0X6g6r\n5dy8ClPY0SrEwXk2VohJDWpbCKUTJ48eK64+XJgXUbG5ie3QAIayZmD3Z032\nR4g3WCLBjD5NPQ8wrYnBDcv/vmjClyG+2Bh5BMGPkpRWB+3qftnc/u/LuWOI\nQbi/SvfVC759A33FGfPevzDoRqkkMOiGMc0cq+vk3+hPkixiKZy/Ozh9I6/s\nUMaIzgC1vz6kTVLQ6lI+DfALv95ZEBMSGbIHq425RD+WFk3syzg1qWUZqT9H\nXJnVYewxGHhAKDTS6AEltYYApET30SHU88HlLYXNJjL9iBKvgS4cFuL2Puv6\n8tEVKvBUP0IDP3HeuxUeZE9AZ/tLfKktRQeN4dMB/hEhg8U6MXHG6EA6WY40\nCQ6vxhpxkBe/+D9mTGJoxqPO5SxLaVQGDUl68/Bx/lt2lw5DZTCodpBwLFhz\nvcCt\r\n=kNdc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-16T05:12:42.371Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.80","@balena/jellyfish-logger":"3.0.124","@balena/jellyfish-metrics":"^1.0.390"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.80-renovate-internal-patch-10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80_1637039731555_0.41620416703416363","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.80":{"name":"@balena/jellyfish-sync","version":"6.1.80","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.80","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9b790fbbd4401f36d70309c3b6cab0c534f79f76","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.80.tgz","fileCount":25,"integrity":"sha512-LTj9MLKdhF1sj9OkFrZQj0tIDfachcIdqzWpKi1Ub0gPmpGAKsPIYMNBxvRQIE3/DVwdisdbv7A31MF8CchieA==","signatures":[{"sig":"MEUCIQD0LoYr37snbGWygKHrMDBYEtckqfThvy5jLbMsn8AIMQIgWjEP+K7Q7q2Uy/hkFnZB2zj+FQ9nQ5kI4c2ZodnKu5Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkz8kCRA9TVsSAnZWagAAQmMP/2IkzIDUyFDoQFupvM8l\nNTq6sOd45CXQAKsPpgw4PuieMkKBLPYQ+vBSNXHmpXCnEJnpUIvibfG4YM8G\nKWlCm2hugx2M4Pe02Du3R7/esF45e2jPeh174hT3FyLp57QbbqnKBK0NQ9wr\nFJm37DoUWhaBPqvNNmCJ+n2AGXgAnuEMha4++2P/MpDqC3ADQLGCt3x9sBfe\ns43HswoF9o+CJxOsQUiOPMJ0cVy1SbAhTYCkXfgvpoeoujcNQu77nH0vE7xV\nzIp5+ulawBCfALpIj5AbSX9mb5CDSB8o/OKe/rQ7bPoLjtdEtzS8UNzltC85\nNyaSr8SfpHifHDxCUP/5lN556aUyFOecO6SOTx6tdRar+JAzdo6KRbqlxsa4\nHYHRg3w4iCodrP3uktTKIGKkZFdSxhWDhKTBLytT6X9SRqPF6d3PpnGVWjZj\nB3k+FeLO9uplA2TOcGtvenyVFDJ7NagoF5ifxgDxOVHN31sADfzUP4GAgzPO\nbsjHQIe3lfV2+Xig3S9bTsondjzJm9+KNN5hAE1LFhDRhPr+CHd5HqQoE9P/\n7vZW3QlpvYnbrIfbFqXPAr4/SNouayG1jSz3vTRuiRyOajLY6wL4rzQ98ays\nnJhhtGHiZk6M1SN0fVW/2IJzqmCfGFY5qcr5C5uk/Ev/pR3xo45VmILL8NKg\nBMXK\r\n=fpY0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4cb28119d444b91dbadc6aad75fef26a9d11ad7b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-16T05:16:33.746Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.80","@balena/jellyfish-logger":"3.0.124","@balena/jellyfish-metrics":"^1.0.390"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.80_1637039908546_0.4580617290346851","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.81-renovate-internal-patch-437d1947a6383fa01471af8a7ade4a8ca8f71deb":{"name":"@balena/jellyfish-sync","version":"6.1.81-renovate-internal-patch-437d1947a6383fa01471af8a7ade4a8ca8f71deb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.81-renovate-internal-patch-437d1947a6383fa01471af8a7ade4a8ca8f71deb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22663035e3277805debf5ccf02c30f983e1c10f3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.81-renovate-internal-patch-437d1947a6383fa01471af8a7ade4a8ca8f71deb.tgz","fileCount":25,"integrity":"sha512-myLzC8DFeG8b+onkYyChNzZstKa7ZnKh6BJvEP3gSwqD25c4cWTRs6VYubPHp6iRSq5c8Z/Dr1jIt7IFu+1ylQ==","signatures":[{"sig":"MEUCIG+76AZzkIZepmm5iWGb92uowoVch9Zb6V4ufBhHsq/VAiEAuQOnKrRFrLgEikZsqPXvmT8/FcabL8zxIK9rW4l9ZRQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhl3wOCRA9TVsSAnZWagAAJ48P/jKqqIrXcq/PTT4+aMoE\njD9S/y01HT4ASSpnN5jiAXMreMJEhS3gcV4C3hYn6LSNvqRE3UytLlcnw2X6\nIiQr/hHQMQl0w3sZaNt1dUbJ82ydMtI4a6avSdi5Fb66z4cASVtOiiCQHVH0\ncak4mZtJJu4viONNouUVk7gKV/lRYb9t9eTf2cqA3AYcSo3LY5PT9d0W8yXn\npnU2mh4ol3M7Dd7yZ6xBywuN/w4m2B9YijtM1CHzoOCFgAR0U1E6o/AkohzS\nGTj5lsJrio0wyzqRQbaJcrUvNBZSOH52JhIwAm0gm2Zk4E5j5QjrI2V3+E1u\nIp9PCbdL+ZVgKJhuKi7kqx4l90Jx8IyajPdwJYi3muNRfPe7TDMLi1gaMTVm\n5i74kmY5zvUwgsV/cw0eYljJcvIAYh0xnrqCEioDx15yZhXAHFD00Nepg2cT\nHci81XkG2o3yCZjx6dol9DmwmehHs/9XbLSrABlI1+jojKYwGOYQMvHGNlCC\nTWBwlcveURLL+BfeEawDvJraOU/5EJKLA+WcRlCyliQNUR3dVP5beMN7lnIJ\nRBxj0OPnYTUjr1yHG1QjDPx8WOt/ncGl01i/wIwCUktQFUT8UXukFFyWaVyN\n5OTP7UFpMtX/NE9AdEdqgo19M9lIXBpQKBknCaxwVjMZVthzNbm+N3OnfC6d\nstgG\r\n=Sjpc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"437d1947a6383fa01471af8a7ade4a8ca8f71deb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-19T10:24:03.422Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.80","@balena/jellyfish-logger":"3.0.125","@balena/jellyfish-metrics":"^1.0.390"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.81-renovate-internal-patch-437d1947a6383fa01471af8a7ade4a8ca8f71deb_1637317646301_0.8998164910168449","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.81":{"name":"@balena/jellyfish-sync","version":"6.1.81","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.81","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"13bfdab3624098ca1234f584d1dd9359a7c2eb88","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.81.tgz","fileCount":25,"integrity":"sha512-u3DgEoEevYd5gwZUI1vcVhuQkcWW/gNQjXhMWhEwARqDvO3GH+FvPK/d7JVKm8/ByvHa4Ce0E/aZzPdOejqJdw==","signatures":[{"sig":"MEUCIH/bmiLT3DeEdfbv381ikwuOlZXJWPkckX4NRotd4G+ZAiEAnD2Oo7rDqwb4VT1hGLty5cBxOVVNnSZNWh3/1/qdLZ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhl3z7CRA9TVsSAnZWagAAiOcQAJ2g6k/y7s/8dzOw/yQU\ndgue/gGonjHnrajoTavampCNJHLhAhxjLONK5C4Im917GDNhq5l6TPKodni9\nBXARcGkkSON5il30jkCFrj9nefvoICT/82fbwEDUoFxl5nh+rblQWVTP6C8k\np36ehLpSDJpicTvzGDoWqqNnHSIvthOiTBzF+Db8jmOhOBv0X6nFdI4YfLCG\n+/0gu+oI89xgeZhGU/5G7BoAw1oSWxkR9nWGu+PF2klypHrjTMsd5qp2DGqb\nK5lJbmfE33LxMggIicTmddXA+4umHAW8zOoAUtXuuD8X9XyRMOvpdS5EhdrE\nFUDn41XbEgwq+j0fxqkgGQYK1hBysh94xt+RSuFkzLBK/qeJGs55mOFe8Mnu\nhmhnwppq5q8Eluw92kQvqsOM6QQW+2EeQGBLCmwZabZNY5sAWFDAN1aqfeA4\nTSW2jg7hvrLC+FQv9hMeGzOZ1gSc9uuCqqjeEU3/lMN4U6kiMYDYSVXP9rIb\nKpM3u3VeBot3lnFu2wK90QVTLa5PJbBpKu8hqe248NIonkLeFjSic3ohmyAW\nIVfka4fsCvgvVLKzwaYJ6NM5nyf3pekuoI1A9x29/44ENZlh+ahRaWVDiQV2\nit8zdp059K0oNzmJ8HjkODWFOzpwPnm1yFzjBmf++tz2dqvh+NgBtl/WxEHB\nHTAb\r\n=/IP6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c6cfdb48c480a38af9a3b59f257053527708d01d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-19T10:29:16.888Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.80","@balena/jellyfish-logger":"3.0.125","@balena/jellyfish-metrics":"^1.0.390"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.81_1637317882898_0.9108838926273892","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.82-renovate-balena-jellycheck-1-x-dff89706839afea0f87709c03dbce9869c0453b9":{"name":"@balena/jellyfish-sync","version":"6.1.82-renovate-balena-jellycheck-1-x-dff89706839afea0f87709c03dbce9869c0453b9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.82-renovate-balena-jellycheck-1-x-dff89706839afea0f87709c03dbce9869c0453b9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c5cb219794030e3aaf7f00cfaa3fc6590bee17b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.82-renovate-balena-jellycheck-1-x-dff89706839afea0f87709c03dbce9869c0453b9.tgz","fileCount":25,"integrity":"sha512-xV9Lyv7Y1MsNQ2M9CxHB5bkXz04SGfTe9yP4d8QDg28LkjEvYSMoiuI3tTVfDQTjNWKO7y1DWV0zwc8Qgv+qjg==","signatures":[{"sig":"MEUCIEMoYkq9MwH8DLMS/CNkOillnOWTTBRt13oQkrewt8CJAiEAtG9EOTIzzR+iKqlmhz6aJYNKXABtNBBqYyklEi3U4W8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmFFyCRA9TVsSAnZWagAA6QsP/R0+vVxaMi3TfMchdItn\ncE7ACOB2WuzjA3IigD4RU0AKHuvgmD54xiIsHn5zVEuW67dhW3ad7r0vcj1f\n5xl7nDqr/SiLnALRDyKa+/gzJIbVfuv+qp2CE061uIe6mYcuk1jqVjoCtmOf\n0I3wqHjD8X+IQpZGpjfHNBpPl5LheOFaRwbMXbnAUhLT0e3yOzTpZ2AAJBD3\n57NsyZ/oEIaPqYHZzrd4fiJXcBxLM2N2cThwpIazfP6+CWeXYLp7m1okP716\nJH3jms0nxET1SaqmoRui9Z8bYDtG0rb6tYAekuznA3fVYyHrhLYt2HFVRegu\nO6Emv+iINlCb7pPjljyyJCwI/GH6cAEuWl0ktNvHPqvd4obj/CsTW9s5mg2W\nYIUrmOBLs13jXZwNcZREGd9BMDXyJy2iMoQ6uMkCu+HB2OpOct1bWGBQbKYO\nvSxiM+pwBTmkrmYOYt4+a/V8EH04LIVjGuI5PJF5AVdMlorY/4GpHctSZ9db\nrdpx8I/7qdBNmbuILLxbxtpIjk9wBSDn2DNBaGHr/yjO90fowtOh7HOdcXoo\nr8GkBPAlABI94NzcIcvvVCaV3fZGw+CPndag1FCOqwnAdMCy/ycHbNQlooHa\nU+RJOtAE6w9VaoPaT2Oo9KkoaVwrAHvcPgtELf48nBHJaczMlHK6fu2FJ/2S\nuDGP\r\n=hPw8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dff89706839afea0f87709c03dbce9869c0453b9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T01:35:02.126Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.80","@balena/jellyfish-logger":"3.0.125","@balena/jellyfish-metrics":"^1.0.390"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.82-renovate-balena-jellycheck-1-x-dff89706839afea0f87709c03dbce9869c0453b9_1637372274515_0.403676594315042","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.82-renovate-internal-patch-853ecbfdc43a8542ca934989b7eb18e34c4b9faf":{"name":"@balena/jellyfish-sync","version":"6.1.82-renovate-internal-patch-853ecbfdc43a8542ca934989b7eb18e34c4b9faf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.82-renovate-internal-patch-853ecbfdc43a8542ca934989b7eb18e34c4b9faf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9a0cc5356b275492a22a8a9c0cec4e789c6580f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.82-renovate-internal-patch-853ecbfdc43a8542ca934989b7eb18e34c4b9faf.tgz","fileCount":25,"integrity":"sha512-gVfQ46VeyYDFYckGKwKQLiiABdImgH4F/x7Xm8s2RJLM0t2sfiiKFs1vN3REL09tDXFphtqM5v4tmp0NpW4Kpg==","signatures":[{"sig":"MEQCIFCTKE+EaKjGUsH8jI0woRDIBoj+pUs9pcPq9u50+PtsAiBOiBVZO1XCgGI/Ct1KiD8TfxVkr9D6yowbUvaeG11FTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmIhtCRA9TVsSAnZWagAAGHQP/1HHbqvfW3xcI3ZMJGdm\nFOualjOjoseY6Q8rXrlcxsUWpYhs25TdeGItyJt2NtMFBiO9jfmKpsM8xy4L\niB5BUC7Rcaw6qK6iG6uAQJOeS4/4j7w/L2XmNzxZxeYFb9bdxN47eNcnd/xu\nvx9mnWmaGk8fJr4g/fg/WFi12zBmkwVQnbWkFmW1HZyDU1u/Ij5ra98v72sZ\npEEchOiOg4T/9KuUwknwqonG8O5v8LkbUfeAwN4mb1/AeMgRPICSUyvKwKuh\nxmUtchflM6/h2uy4QboosUzNFsE1uaxFdJOlyTT80HMrcBzMfFscd3NymydY\n0RBwUPIDv8yBSV5RLSLj9DQK2HbJSd5Mm1dX7mQ/hr1RwcgLibbGF25Mbo5g\nJuXtwjJ3QRZ0uHlNd6fsYaDjmU/aTJYGN+0Oe7DIBuBKLF9Y+NiW6wTOMZzZ\nmIme+NtGVUqKT39dLPM/18ZR2yg5mvOkoeOcCJlmSSG6pqFaJ31ehuYoJMWh\n8OIq/bj8fjUCPSWZ/mCx317vvwZISTdfSWX3SGCfGkFVpHn84RK4xqmMaXhn\nmPBMrT+qBtKu94bf0YuIOquQgeUB80bPf2p/HMYWEbqrT2mpxextLxqOvcrZ\nh8lu1CeO83b6U3SOoiaqd6nLf8bVXeOeZKB+OF9m9CTo34PdBO9POMUX4L4E\nbaZW\r\n=iSeh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"853ecbfdc43a8542ca934989b7eb18e34c4b9faf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T05:29:44.723Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.81","@balena/jellyfish-logger":"3.0.125","@balena/jellyfish-metrics":"^1.0.391"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.82-renovate-internal-patch-853ecbfdc43a8542ca934989b7eb18e34c4b9faf_1637386349065_0.3718046393012209","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.82":{"name":"@balena/jellyfish-sync","version":"6.1.82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.82","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"529da9b88b6e8316c0e0f5e3805d0a00e4688bc8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.82.tgz","fileCount":25,"integrity":"sha512-n07z5lk+73nGhWk9MJ7zNJYB5yUJ8Hv7LAucKZ9FllBiepdXccraJ3d4EmFd61sPAWTz0jpaO3ByImHSttqZNg==","signatures":[{"sig":"MEUCIAomPahbpP4yfC1qfNkAjDv1XRec/SKOikHDXcCGuZHKAiEAiodQf4gn8QJv17TMoljcwjatrX2DVaEjl/SuyuqM/eg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmIkaCRA9TVsSAnZWagAA1D0P/0Hn7khf/btEgER57OO5\nb6+XdcrHMIZaTfLHRDmVQVK5ZZxLlaKz9MymssLXMDpOf2DAwW3Oz4wAFIXq\nmqeZp/Iqm48gnmapgDsxefEmAY327SsU8VreugQD0ePQ5FVqBXfsSM0X5myy\nR9rOLPO3vx3QLA1QDyNhIKocMRACEEw3YzKfHQrgJxxEoYupB9LIZ2WHb7Vg\nlimRWAmnLI/YEcZuq5ZckHRmjAFTYycMCkfLxKijVPXjYqTet1GcVvmq5dE7\nfd65OJ1b7X5ywha821ogb9kgih74oqZn55PrgjgFkuQTIjfW0mDqVsN4Lu9A\ni9eyHnaPNaTFbZ2CN8tznpUiXQV3utdMqal2yfag7tFb3Hbsply5klpfDCKw\nbgq0PZprA4CivRr2VErwZcp0T4nlNulTAqBjYpOfp/n/EtOFsC6HQOsVFGib\nHiG+hsJxpWUY05GuxO0Men8uZ7i49yprtpV45SrkGVW80vWzqa/1j5sYoQGe\nzZUQJFvbPFY/3ROENv6X/9ybUHe13LIeJ43Qjfuhir5BWEjJalJHSLuzPICE\nnP2dZknSPWanjyhvDPhSqRdy6tPR2fZ2PyHlclEeLELE39TJgLWMpRQi0Vs6\nwtXnxUfbQpkjwZ4xvFqqCyYJ9iGEXtu/SO0Cn3zMU4aWsTmjt62upGdNLV4l\njYLi\r\n=hHwJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"54a7b62d6f3010eb51db562932fc53a6a58b4c54","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T05:33:34.729Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.81","@balena/jellyfish-logger":"3.0.125","@balena/jellyfish-metrics":"^1.0.391"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.82_1637386521916_0.5251913529128596","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.83-renovate-internal-patch-0807a9057a5da7be2fa1e88468f140917a01b666":{"name":"@balena/jellyfish-sync","version":"6.1.83-renovate-internal-patch-0807a9057a5da7be2fa1e88468f140917a01b666","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.83-renovate-internal-patch-0807a9057a5da7be2fa1e88468f140917a01b666","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"342f170e68567d82abbd5c3ce95adecacebf66bc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.83-renovate-internal-patch-0807a9057a5da7be2fa1e88468f140917a01b666.tgz","fileCount":25,"integrity":"sha512-TuPOamx2lXgBjCx0tanhup8uH3IPhqS1qOzNJ7pgCSSXl8OK6JMS3otBwFJuVWKrxkd5sae2fpok7sU+AINNRQ==","signatures":[{"sig":"MEQCICWZsWr0JL4XMdfS/NqGd8eBMLyOTxiXxBtE3s+g4AIGAiBCcj0YeCXUcCrkRl80djXWhCm2aVwr3BlbwzIBGcs4VQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmNUYCRA9TVsSAnZWagAA/14P/RknHMJquo525Zo+6BGI\nNpKu8VEi51JMFi9N8cXrzc5jr0zP3F89giuTbZ/eIDVW34E5jBR8KG1VMFdt\nFQnruac8I8Dx6SUVAmL31LfKnLloQjaxZtsGVTq2opFOROeX0mR6X23biZFV\ngSK6Zy6hcL+JPSxniSq+rydWZ5MmIkYeFeUIsxUR3Ud1dMYuA52EXcJDBpzk\nEXLHqrRoAHOatDv2cv6GDNm51Q8IzkIiC+CmkGz9Ysc4SIa5ssEBHncNUmQ1\n4zhkIr3QKrdBhxcvQllzsBlfE51irGBk/L7n/Fb7Lzkn+TR5xhh4QE6L8BQy\nC6YSqi47Qs/2LBZiGVbEiDfRftqt0gCzgINLfgShXJNRPgbOWRWxRVaoQ6c2\niP8Jv5NWfP3haksC8xv9USAmTAS3RMkBUgq6wZo3TNjMnZWebdB9pnb+N+sX\naMmlMpvkO/1PzqmeOlM6iF10NbdKpAR0qX3myhq2D7b/rUyRLclxNt+UkfyZ\n/kgoXDYsfdsNv9P0sjIGpZ9AQq84hJPoo6/DMK3Mc4Xp/0/7bZ05MMd0NisN\nhePqLeM+KcyEg/yuuKDnpoPaglZgbBaWS6BdgxcERQoP+pDUeMUsseCE+bqw\n8l7P2HpEtRKY+qu3jvV78zBx1iLiXpVOhB3Vw6Db6D3tptuX4BI9iUzvyvVn\nvtDJ\r\n=2/sZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0807a9057a5da7be2fa1e88468f140917a01b666","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T10:56:30.558Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.126","@balena/jellyfish-metrics":"^1.0.392"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.83-renovate-internal-patch-0807a9057a5da7be2fa1e88468f140917a01b666_1637405976367_0.07387615997260166","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.83":{"name":"@balena/jellyfish-sync","version":"6.1.83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.83","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"26a8560d3063db8a246947bdaf492f671f8e8dd0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.83.tgz","fileCount":25,"integrity":"sha512-mYF6WxiR8BelG49UZXTGhdfdlfZdK2AqtcTfCejDs1I+VY58Sh6OOrjLTfxAWc+aY/BCEAzeQyNl6yfral2F8g==","signatures":[{"sig":"MEUCIQDX61vbMTNUr2scKTixSsyUaE0O/V/vVnrvdhnaAYreBAIgc7WEBcnfOxasaReSjgY65CDSgB0eI13WW9NCm5Cn7ug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmNXACRA9TVsSAnZWagAAo/cQAIKNwDzysjb/b3AIFgMC\n31jga/98jjDW0EunRUR+2cQRKYPeNPwO8QmiwSGT4eG6fJ4Ep0aLVoxEY1kg\nQ+rnMl5GLEAsy60tPLCR+fPI3XnRKWVw2fnriZjAJYWE0sXrQ5HamaHUyD48\nws8djMG+/4zEcch8J8oVqTUiqgHbkT9qKy1Tcus7P7o7zxuSQMU/l9LPkM0w\n/zJuSqB68mS8yq67qKRSbwevOMYvIhgPmtEPajwqbEI/KPGmPh+7XSPJCQna\nlhkiJcsGAhStX1hLX2jQ1LNulpuf9RZ9gbhNf0ZXZNCdO9fDg3P7sdEkAZIO\nFeBuJHO1qt2yUcxuvSFMWL8Scgx/0EAbqOuvetdI/6PxFlQD2Z3xD160Cek+\nOwhioDw70RR8AEg8T2Go+gPmppsPzPhSIC3w3rddmkqWs+uKJogxBw/aBc8b\nkSaCPAkme/BAE488HB+gJUw+xVDbn47rwp1b5Z3rRkOto8ryz3Tf0Qo094EE\nC2nZr3J2Lp7sM/uykmPrfATTVnT5cEShCwp6/792ut3nwLIaPD79W/QzeLsH\ncx/AxfxZUsahD/bd0C1/bqxYdQDuktPg0/VveF1AgoaNG4rQ737chkdMOzHd\n2HSKTcacrojnJfsnweBu9eBug81/7LILge3S++Xs0xXoB+nWu4jFxBqc0B1M\nj2L6\r\n=gC5j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"44820bef6a1e0760c56e2df98f8edfade170ef9e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T11:00:18.956Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.126","@balena/jellyfish-metrics":"^1.0.392"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.83_1637406144591_0.23033879318579298","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.84-renovate-balena-jellycheck-1-x-42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d":{"name":"@balena/jellyfish-sync","version":"6.1.84-renovate-balena-jellycheck-1-x-42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.84-renovate-balena-jellycheck-1-x-42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c979523a2a47513e4b61226c9c77afb69a1be323","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.84-renovate-balena-jellycheck-1-x-42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d.tgz","fileCount":25,"integrity":"sha512-0TDv0HIry58g2GqH0WlOn6hYUemMPSRsgrWrIzz3myo8RFfnSvrE26R+67Oj8UUYCpWTdr2jEaddLKSrcqpsfA==","signatures":[{"sig":"MEUCIDmxNY0TcYl25NoqpVB4haqZ4JWl169TsZCiNpCEz5+7AiEAkJNm+Lovkupt1P7nkOhVDj+tDsCO/+FBPcT2SpxzpBM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213365},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T11:04:06.479Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.126","@balena/jellyfish-metrics":"^1.0.392"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.84-renovate-balena-jellycheck-1-x-42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d_1637406451290_0.6386249218605984","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.84-renovate-internal-patch-c213a35c29c0e4010bd522eb10c291dbea4ae8bc":{"name":"@balena/jellyfish-sync","version":"6.1.84-renovate-internal-patch-c213a35c29c0e4010bd522eb10c291dbea4ae8bc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.84-renovate-internal-patch-c213a35c29c0e4010bd522eb10c291dbea4ae8bc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01f649c7a455f3acbeb1fc763bb59a4f1bd4b0c6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.84-renovate-internal-patch-c213a35c29c0e4010bd522eb10c291dbea4ae8bc.tgz","fileCount":25,"integrity":"sha512-5s1bY21EPvYin9OPdTscHr1mmBeoCpigloLEuwB5vCMD1X7GJ0rZz77HEU4mm1Q1Avs/XukgIOmijdX6XqUQFQ==","signatures":[{"sig":"MEUCIQDu8MQjqECyKoNuaq2asHpJ7BSXIfWNLMntkUDjdvYF9wIgGqLNc9P6RO9fjvhX8VmlV8+THyOiLvPk+9eqflaDcWY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213370,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmOzLCRA9TVsSAnZWagAAI5kP/j3mF/6ACJ4toO4f6xyV\nqsDwD6SKdT9SBRc94B1O2qu8EAZO4iJIP0lChA3iLKai5m0jyAdwRFfzKlnq\nfWJG3m7DMZf3uuUxbXUI+3ehlEKs2d0yfMLfj09VOcvqI4I2H4E+gY4ukmfw\nFQthBLUH3Nb94TziG8Ib/t4EhQC3dtSs+zhme9052GreyB2mCFTJOWqPcqmH\nfp+Qa9Sh8N5lW0nj30H7smlYGkpBSDXJH5G6rK/y9MBNUFg4i/3Gx/Gkcc37\n+ecJUJTcYrMb64mmZDx8yf26h2VFB8D/VVJCiHOzFa0PI1sayN49VLqVVPa2\n5IosL0+6dtYIlgH3YP3ntcyVbKHQepfkR46rTbk7FrW64KdyMRn7zE/rR/Ld\n7dIRktPTl8/xDl+RmwtYYUxTk+XW1+iExJ53f4uXhI0RAYbDK+iBFi5Ox7iy\n2g98WDx+FlBLx+9WNj+FaEQn6STPZPCG1DhJ5KJy0DLIGzbHHmvcp06t6spk\nooSl8awJzDlrGcix5DePvfJbJ6s6cQBi1CucXSBorCUfvxJT0ddPll78qhx+\n+T7MSIwY/ZMZ5PeabHo/aaUyKK/5lrueQURQ/VzEiaEDHeDiTBht9t2GboMx\nocxeor8T5Ax3aCE07YSPLh+BoFRq7xGDxPtDWnWhmaegCbJrREGTmxfRr9Re\nXASL\r\n=uXWo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c213a35c29c0e4010bd522eb10c291dbea4ae8bc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T12:37:36.673Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.127","@balena/jellyfish-metrics":"^1.0.392"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.84-renovate-internal-patch-c213a35c29c0e4010bd522eb10c291dbea4ae8bc_1637412043282_0.7916401317595885","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.84-renovate-external-non-major-f9e4235b2b8aedce6779b7ffa81036a6f671f4d0":{"name":"@balena/jellyfish-sync","version":"6.1.84-renovate-external-non-major-f9e4235b2b8aedce6779b7ffa81036a6f671f4d0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.84-renovate-external-non-major-f9e4235b2b8aedce6779b7ffa81036a6f671f4d0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"78a96cc8b695f99605714bb1645e648bf4928593","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.84-renovate-external-non-major-f9e4235b2b8aedce6779b7ffa81036a6f671f4d0.tgz","fileCount":25,"integrity":"sha512-pkbyEoeKGT8t4oMf+nht9mSssVs9Rrg0JmMTdNHQMKHS7h+NtRFth7BLtdmPiok2OdLtAjBc+01XhABXgydn7g==","signatures":[{"sig":"MEYCIQCcTaO5rMU6WOYGepSaXPZfMEFKfDXY89PnJMTvy5FpcwIhALKm8w0h2HChCY+h3+nSBzuL7s8TZDZoRZs7D5E5BtyX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmO38CRA9TVsSAnZWagAAsN0QAInjV+n2YhEJkWi4k+u1\nXrGpfIxoAtl5C9mZxDxm6QBN0TH5L0hosI/V6Pv9Cm1sR6Hwc7GGsTbtf0NX\nEa+UN/qngLCZ2AqHWDq6NhB3x91vj+jN45Ei5L24zAuV2wISwG/sW1j2N2H8\n6aQYF7pVQIOClGUmhDk8rMsA+4Z6iQn7Yuh1uVsppcbauITOS/kXeH5nsxRV\nd8u4jTChNlNprt1SGY5jJRsXgeNZ/1nIS12L+DKf8pDetsbqoZUAUt2lXGoq\nwMFxPdi4dsoR42oheRndbusj9iwA5fjC2qPrERQhYhZrSA4DGUyKDAOaAPD9\nvZjc9vKWpQ7Jl+fHAnJRF6qeMDjPLt7WldFN5fdkleuRwh51r33U+cUhwp/+\nuKi6Vo3Eb2OdznK26CUbqFYN5JUJMwuTa8tB7i7vn2CKAeqI/+93zEQngGch\nezD7zXf5pguI5fEFkEPyvL0Dz/CYYUYm7KTJngYSQ3+O3VOfw6k2xnHEjxaz\n9eiLp8GebTvNR11rRZyvp5noiiQ4excMHQppCOFjJa0rice6TQRNFesmHbii\npLe8NIz6lnwjWqetFcWOEGaD08j3F3QS4YhZYWS3ykB1D41e93yOtFU+kj/B\nO5JeGWxfC7Xhbv+xvlYUfTv2g8t/UizTRUF1bOma7E6YW8QLwR0hzxj1BXua\nFKe6\r\n=JqTE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f9e4235b2b8aedce6779b7ffa81036a6f671f4d0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T12:43:34.684Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.127","@balena/jellyfish-metrics":"^1.0.392"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.0.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.84-renovate-external-non-major-f9e4235b2b8aedce6779b7ffa81036a6f671f4d0_1637412348711_0.08580682359746805","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.84-renovate-balena-jellycheck-1-x-ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736":{"name":"@balena/jellyfish-sync","version":"6.1.84-renovate-balena-jellycheck-1-x-ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.84-renovate-balena-jellycheck-1-x-ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"97ce609ab5eaef615090860420a5c892bf69e7ea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.84-renovate-balena-jellycheck-1-x-ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736.tgz","fileCount":25,"integrity":"sha512-Zhj5YBaou4oqcqnYCDywck862hXPe3F5Sh3f+anIS4gZDMRpjtyO8DH1kDgl3NF5hbV0A4qJ8lVcUBg0QO9ilA==","signatures":[{"sig":"MEQCIEVpYi7I3eNiuevYjv0H17vOIxyDwVS0uclxsRhlc+A4AiAS65DHr2A+hHENPAKHdBN1kjqmIMzS7U7mXLWSEy0JSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213444,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmO51CRA9TVsSAnZWagAAV88QAKGPhkQUJl2uz5gKdz8x\nyv18vEg4/GhtUUIyq1ltrnf4myFbf4bb/qKi7ZSc+JJPdnlr1IiFlM/0BNNS\nrULF94I60QBD2W4w0RMC1A2FToorSddPV/cJAjDb1NVe+iiIXkQNVdaugTcF\nUz3AeOQCek3X+GbC5o103q4nfnN1q5YbR53ehPwpTGHptDgCjPpnJRlzv6YI\nTrxdKfo0lAffECQcqmzSzsEJiig5x8EHOvWkcB/bGFBDvsUH21aRYDpJg5FM\nLDynnRlxCzOd7RvhSZJADmEnDcVWQ7kENHTI2Lzor6iNGYdThu+brKKP/cU/\nBJFnu87SDTCdlqDgyrw8aWDNbe8O83KmDFSXoAyZpR8wFnbZTIagAPyHcEEB\n1dBzHM0TwgFwyBN1bEJJn9SGMa3djNQiae1cjCYt3ojQkC5OMO9W6EpYHDbC\n/qp0Rm7UPROIdBzJm0PwNlPz6p9tWY7G7Kybf0CPugqlxbGKfvPqHA+lAesh\nkYr0RLjjsrEL40nk51FlXj9x0zq71sCW6YL6pMeH3h1N3im2pcDqsRo86Qs6\nn80dxv6wRRZgcwnkoR8XNVRiwvxl2B6RqoRD6pYt22Q4m0GfLfCc+Q1r7BNl\ncDIO7T8QtyPArbNZrUHPH5vLfIw/RGsXZT72gwIEY7RbBk39EMKk0Stp+FTh\nBL2l\r\n=SInF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T12:44:34.330Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.127","@balena/jellyfish-metrics":"^1.0.392"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.84-renovate-balena-jellycheck-1-x-ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736_1637412469219_0.7757961147044905","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.84-renovate-internal-patch-55a792d408a44956f09611794516f51e1cdd90aa":{"name":"@balena/jellyfish-sync","version":"6.1.84-renovate-internal-patch-55a792d408a44956f09611794516f51e1cdd90aa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.84-renovate-internal-patch-55a792d408a44956f09611794516f51e1cdd90aa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1ac8a6196074883efab6040422e7a182745f7d18","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.84-renovate-internal-patch-55a792d408a44956f09611794516f51e1cdd90aa.tgz","fileCount":25,"integrity":"sha512-iPMulH1jdo+phcDOxeAhG9/Y3xVHJ6qqk3ZZREbJj6K0NBlH5WhCf/doUVTPvEJeanruE0w4Qi58b9LnKJmTnA==","signatures":[{"sig":"MEYCIQC+aCSGn5Cpn9XTwyIW7I0tij2Y1WhAULP01LQh9q6dUQIhANeQ5DTeOQCrzCDtSDrGGj0VBJum+tXbQkGRflBW0pv9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmQkcCRA9TVsSAnZWagAAcIIQAKBXX1OHkZDrq46BImTo\nCdRKk++0wCPoJQ14h/R7LblE9aUe+80L42krv4Ss+yZYc7UCY63KwsZwXBjE\n+BV7c1C7Vox51NoMQqgKnJhrudcmxZgWeQ5TZ+FpbktW6/jWTTNPMG547ipJ\n1D+tNklbu37Xvi1jZfdn13F6T6cN2uL7vEzKXzUiRngRJUC6mULn90Bn/AYs\nwDIl+92dzUTgRPTLpAcTk7f1HCh4JLrLbkPWKdBuNCyH7gBdxxkVVlwiMtph\n7C1vo8gSjuxRqR0gtMEswohk3zPlYVZueh0EGI2410gP0Gp4IRFPRFEc2tys\nRiNHpd6Sthw9UVwPnl4+7cKeOjbd0b1ufSaxrnCsXG22tp1W91V8joB/BTbt\n+Ww6JCqCdpoX/VGDo0EvwksCYBU2M//5K+DbH5BmxJNMQsCBv4OYhdBC0jn6\nztcmiUTwL7+h1GeAEmzmwkHnxujD+M/Yi0d70sh9bw4zeB8DLU9xq2z+6Jef\nQzXXpHiYhVJJfVKSUBmezrenzktI8rmDxMCVoeNS6QZ1aECm1bnhCRIJOCT4\n3wT+AiE98mxmTtXVWnqPcr5K1p0sk1SsRwZfjIJF9EdEPkzBsmgX9z8oHdMT\nmnR38IjwYVgUPP1kXbO+lDNCicQOA0UMqHW8N8zaYTZ6FPRFz+KRZ/RxsxZ9\ndybp\r\n=XS05\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"55a792d408a44956f09611794516f51e1cdd90aa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T14:38:26.016Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.393"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.84-renovate-internal-patch-55a792d408a44956f09611794516f51e1cdd90aa_1637419292125_0.5087483670132502","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.84":{"name":"@balena/jellyfish-sync","version":"6.1.84","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.84","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"aad3ae1de0b218438e82cd891238091dc212a158","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.84.tgz","fileCount":25,"integrity":"sha512-LsvKcxCuI4uK7o8nphJZnaaKbMqatKdemfwRIe2cLGac3zjhn+gl2/PjGi3H+GcXY5l9IZuspKA1JDNvXOeX4Q==","signatures":[{"sig":"MEYCIQCy8SfTToVjETI2vGcp5DINzreeIaxEy/W7vTWwoY4XEgIhALCrSdiPo1lUMGfgOsM1aeAe6CcdfiAqZlu0raw4vQyq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmQneCRA9TVsSAnZWagAAiBcP/39aap+uNtsIe7nthNMW\nXvva2/nPl6rg6AVoQbFnlOCV4KgCpJQH5jQIc7djZaZc4xoxUwsUgwJW8/b7\naA5DUel2NiG8NUN0hLzlGVj+IUrvs8ImHXXDOVg0s2WSVYNQ0RRdM+GEUrZe\nCzT5cl/5wuvoRs4Z8yM0NquyBwe5HzIRHSF5Fogd6vSfVlEsJhOyOcA7giR0\nUGrmBaNPE0LMtXgGCkNr2WuOB01Gt9t+Fvk2/O/di1tqCoBzvasdTdQYnbkZ\n3b2UbvOtQBD9DtgQMvaTx68U24GrgofwPLpzlOKZCqziZY+xDskOX6w+Rst3\nCudgJLQwXV6PIccLQQNGFlxCd4UzXHNYd2Rc0rx34ABAbmCemvTn9YXDafEW\nKmxhAOPYb2Blu/5xLlfcojphiSQ7epprmNBBD7aokXJBOmldbBMRHODKOiN9\njw9zwbC1pPZ+zpB6uJd2h2CS4BExJPGrE+Nmpxu+BaUoTWx/8Jf/GDqVnorR\njBBOInRViR1+T3ueyv7hERXUAvRPLolK6lTKgj53HAepCsGMS5xFGMQBmy9e\n2xjgOBKbPRjAtc02ZTkTadtaY6VhGby6iEnfbYiirVEspBHn4qgvnkEEy946\nvslrxMS4nENrrza+/ATA38boEJ2gwZuenmEl6PvOL/GCdhTag5oSVGodIU1O\nelgb\r\n=wsPH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"33c2490842fc133c0e6557c4c4bcae2a82646449","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T14:42:51.934Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.393"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.84_1637419485855_0.9029702376472397","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.85-renovate-balena-jellycheck-1-x-6d6024fd785bc84da0eba602053b1a29effe979b":{"name":"@balena/jellyfish-sync","version":"6.1.85-renovate-balena-jellycheck-1-x-6d6024fd785bc84da0eba602053b1a29effe979b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.85-renovate-balena-jellycheck-1-x-6d6024fd785bc84da0eba602053b1a29effe979b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"74041153e9a132a5456513da0803ce20e3be5665","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.85-renovate-balena-jellycheck-1-x-6d6024fd785bc84da0eba602053b1a29effe979b.tgz","fileCount":25,"integrity":"sha512-hOlgu+unen5tdAtB0bC3X69g8zHSmSvbnfvHTkbICKNYllz5cx2AxZ7RD42hZ0fsULV/up7PIxzGIqDUWpxcjA==","signatures":[{"sig":"MEQCIFGMlonJFBAuHcCMVD0AjWJrrJzDlvpFj7TYhzngnAS8AiAY2T0TlQ+HulPmD7oSlGSJhoVcMb2EkNsmPg9pSH9+xg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213515,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmQq3CRA9TVsSAnZWagAAMboP/2Ua7S5+FM2YEFCq3ppN\nsnD+O8v7h/hNLtlfiuzQDNrOGgbU/+y7wJvAYLHvLSCUFmufi8JEPF7xG9L7\n73BCxCeFURV44zhFyotAd5x7JvxzWT6jwGwcHBmA6WeGIV2qyvMXuQHlwQOX\n4JPYWjj6DBFCwl80p5KEeYLOqb9qo8BsuqJm7xOK5EJwLjOJ4heDTQABs0Nc\nWsZF77iKvEW2blDPvZOh3LlUtC0uxJRfyBNbZjhc2UKU6C3d8WfLVoJKqTTK\nOdokUvimd7QOtvfAmOfE0RzYsHeekywBb1SoJ/9dPmEPqCRKsLSpTYb56wL2\nCgrqHpmWqJjjT2MJQZ1EogdBjEhggsB07rkIEBCPjuzKBMwuPrZOUWL+ZzzT\nruIktDePHGFrEXzzXUx/JOmojJ8AhnBEWf31p4qV/tXB2+3EpvxmjB6mfrHu\nICjgkVKAKp4hwA7zqVVJHaSPtHwWIgtlC79h5XskGBHb6rtZTVfkpx+0+oBE\n7nS4iW0Y9jsP+r01zvcjgg9ZRZTK+jrzBuRKa0R3AYr0f9rWoWRigcLnn9To\nP3JKtVivezBWc3sfnDeO8Q/J7hDbILr+L1hVR8Xvwj56gmagY3LNIVNVbiX+\n+5VQ98YN08wfLJEMTts20iJsHALoyeG82DNffXyecyQduNKbVdM8ptqA4A9S\nLYRh\r\n=jYkM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d6024fd785bc84da0eba602053b1a29effe979b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T14:44:58.944Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.393"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.85-renovate-balena-jellycheck-1-x-6d6024fd785bc84da0eba602053b1a29effe979b_1637419702918_0.19164595872877999","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.85-renovate-internal-patch-708c54ed0e2e41e8e8a9caa8100cbd696036428b":{"name":"@balena/jellyfish-sync","version":"6.1.85-renovate-internal-patch-708c54ed0e2e41e8e8a9caa8100cbd696036428b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.85-renovate-internal-patch-708c54ed0e2e41e8e8a9caa8100cbd696036428b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dae4b3a55f0c6e926a6b6ea2e5981af952a24016","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.85-renovate-internal-patch-708c54ed0e2e41e8e8a9caa8100cbd696036428b.tgz","fileCount":25,"integrity":"sha512-pRUMM2cT0bw3qqNHnX/5yVwRCAbnAUHLmwu2Jj2e51fetJJTlVfFAzIcYTvBlXSKJQv/BNCop/pyJO+vl5O1uA==","signatures":[{"sig":"MEQCIFiTGo4t912E7LZ8OPgEsjqODaMB7HCtVCfcokZBYyXtAiBWlPBOFek25SjR8IrlqZHDMfBQQ2n5EF3KCG/l7UoyDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmSdQCRA9TVsSAnZWagAAf+UP/jJfDdIrlByhzi4y7Jws\nU6N998eib5rTgyp+LsW84S7VR8im/rvsPUcEvLGdupaee1rJVOHu+/FuTAeA\nwx4RUrCp0n6RwvV1GVEm7rGZKHWcugx08eTLd7uSSDID+Ft3OdbcZV+u0bhJ\ncY/0jCa/j/VFurt8Kb6y67OCn0fRQjGdY66l8VHs8NUqxGbrMJwDpi9hN07C\nJ2SsCfumZqwWpEaZ+v98hY+nBpow+q3GIhK18LuqAE4vlbJebjdRTAtXdOb9\nE5yrkzDZQ1gXWr6VloCs+eUVDt9jyXRYK8AIcyBr/1+kmCAfeDTDfWQTZ/eC\nsrJpxTLrNyg423J1ZQ/N7zGK54HbIv3DrL5QVqko1peHUa1Z6ko/gRxlU+v4\nrxWZE7804aae14As28UZ5OAJQ1FIAamV2R08+RlLHqppPFwJS0lXwAoQp4v3\noXrym0W08P28ftck7Q3j2vd2mtlKatgdMJ7DuXoTCCVK/gON/c32Vgwz020i\nUy7kuSD127G5AekTRmNVdZac+iWGmYnr7p3wThT3RGQOj5pSoC8KX72uz9Ai\nSb6f9a55SNCHL3VwviJRmmHz6PNEHvN9MdV595ASOJCZOkGYZOiHegcg3KeX\njI/QYUOz7ZieKveznNT7otaTwLLGI5QYaW3/kLfpnKn2hEoitkuGPqgFGYF6\n9vK8\r\n=xngX\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"708c54ed0e2e41e8e8a9caa8100cbd696036428b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T16:47:47.114Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.394"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^0.1.8","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.85-renovate-internal-patch-708c54ed0e2e41e8e8a9caa8100cbd696036428b_1637427023990_0.5164214547327737","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.85-renovate-balena-jellycheck-1-x-720bb7d0e5d6240e5c55c0583c41b68d97dc5598":{"name":"@balena/jellyfish-sync","version":"6.1.85-renovate-balena-jellycheck-1-x-720bb7d0e5d6240e5c55c0583c41b68d97dc5598","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.85-renovate-balena-jellycheck-1-x-720bb7d0e5d6240e5c55c0583c41b68d97dc5598","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"94e2915c03c3faea26a32df26222a36fcd19efcb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.85-renovate-balena-jellycheck-1-x-720bb7d0e5d6240e5c55c0583c41b68d97dc5598.tgz","fileCount":25,"integrity":"sha512-rb78rbr7T6eI2ExaWOim02d4mqppva3M43foxww/XP31DFUGYky55ZMN3H/6Q1O0/RyKYU088jvUxPxQ1p/f3w==","signatures":[{"sig":"MEUCIE0ImFMGbjLK09/FxFn9hmp3METsbgGs27ZPdmkzjoOuAiEA+HKD3UowKrYgEicpAOYSPPj56ow/1yls5fLS7W5vhsU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmSiyCRA9TVsSAnZWagAAP9EP+gJg5EN3/D5PklC8xf0t\n36nRFPToZHOly4Ktiuq9pwUMrzkK5QP+L3kHiB/xYssU6i16wEJ1UHoePqu6\nNGL1ffLWSOFcmUfE0k25+TCE/3/KE/IhzwJb+xCFT/n75wILy80r0voRklIz\nO16YXwTPcgRFL985xwOqg4laca92XVh2riRGHuyS57CRY+zFZJD9cKtrJ1Po\nqAdqQDhlGAReLmMcYD/RFuc1vkRtailtEoFXNwVapl8yhw5kPLhZfxuFNRLC\nEsLiDNj5xPOm0SrILyF1vhd70q2VXpp7B9PmCJEOJFkT5bU5LOUqBJLlOBTv\nktSlF5CG8BEnBPvTNL6g40w55x4VIvr5YGQgtvCTEY+3oN7YvAJhh5spcsUO\nv+vRmNPkxYAvWPJkuaT+/UiGLlS9fp7dNwQNk+TUjB10N+AZz0HHMG0c7EP8\nW5FqquGtKdunS5vCa43sedxq/M4559vJ15XNiwHaWo+IRlfZe2qaY+nBj2x6\n2O3zbePe8zss0cs8vdRBtuIQiuiMfmpT5u77vXIiE3Jzj4Su9IJ0VytasaMW\nxaSki908tdMsUIBsmX4k/A0RtELFTV+ZtEmeXikkw3c6IqdIKo7RaDjKifit\nl6lCVy+8g1YGHW4emAhz4Fen/KHYT4oeNBxZxkWx2ytgLvUGKniItvJ2SVbI\nGWr8\r\n=i3v4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"720bb7d0e5d6240e5c55c0583c41b68d97dc5598","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-20T16:53:16.606Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.394"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.85-renovate-balena-jellycheck-1-x-720bb7d0e5d6240e5c55c0583c41b68d97dc5598_1637427378149_0.6746934359587342","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.85":{"name":"@balena/jellyfish-sync","version":"6.1.85","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.85","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9503256eef407ec447f25fea9258afe9d3040a5b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.85.tgz","fileCount":25,"integrity":"sha512-z+kXfAvCzu9kCm8rnjRfBALeBT1lnI1sMKLcPpl6gDrKyg1csVbN8AxZa32SV/1+zag/OaicRr+6I77pN1Z8bQ==","signatures":[{"sig":"MEQCIBuXMggX05S1y+TwIvv2hfcEwJLv86MMND0MP9G0E+otAiA1zPMCG4wMUt3hx4VteAcOis1sE2d1IojlBWrDrLLQyQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmcqzCRA9TVsSAnZWagAAACwP/0nJ+XdGPL0U3Px32mob\nLjDTkKVJOPyvnWcf0vO72FImahm6+h6s95Xd673E//gpib9K+xm9j5fIWEmQ\n9lxERCi/5OjRAaiiJQ8dBc+xO0e0yf1dwnNoHJ2Ub/ZVGyUIteM0gvjGwXqa\nSRlxwQgHUfp/4cxeDOcCoCnnM8Oxzu2pWRCJfp2XEUl5csfANdH9Mo+H7/K5\nQ6ok2FkTbVR91bsJWn6M6g/PtATUedZwznvhxpPUohqbdiWzs6c8ejOfzmfX\nwv0T3LmRxy5Ft+YAyXHH5j/mAa1T1oWODodi5+w9zXB2TmyhfOFCcAZm+tHF\nSoFAmb/KZxitt4+RIgYaPejo1/dCh3CkubXAIFobcZmweL9l6MfYarsfDoDL\nhtrRKWZOE0luATaYpj8bCARuCwp/YpnaYuhCWm4LXZxmBGKVd4xNKN8cx6xq\nyqz2zn4mY0urs3rKqIzkg7598fKm08VLyMf0DOjfpW0SwX/afbXHw7hbrw6D\nZn02Dp7O2n4+joIdi7t7cZU5ID+lrREQRV9XnRTzmlM7emWJCzCqO2oRdZER\nQmBqvCvqHOu9SJr8BluRrhTjnhb9QvkcbTJGnp/tfPI3frqlCvYOazUtldCw\nzIoItp3mAJBFhZbmtwD0eFBzf31NBWU2+5bHcefgsc2es7gaXNZFb20LD6fN\nP8UZ\r\n=d9of\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e5b40c76b9dfa7afd4ce794c227d928d7f84ac72","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T04:25:39.699Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.394"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.85_1637468851645_0.9092924889362379","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.86-joshbwlng-remove-license-headers-49b7cd7d42dd0907188a8a91391b546216d3e9ff":{"name":"@balena/jellyfish-sync","version":"6.1.86-joshbwlng-remove-license-headers-49b7cd7d42dd0907188a8a91391b546216d3e9ff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.86-joshbwlng-remove-license-headers-49b7cd7d42dd0907188a8a91391b546216d3e9ff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8979a3bc149e48e26bfb63a1c47ab08d1248c10b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.86-joshbwlng-remove-license-headers-49b7cd7d42dd0907188a8a91391b546216d3e9ff.tgz","fileCount":25,"integrity":"sha512-SoC/McwYLQoONGv6AkVBF3ntYpebCjjHKoUUPIbm3gCwpfiBqkqlN+1JPoAe0O1YuWSwjHW0ty2yaXeHQXZAXQ==","signatures":[{"sig":"MEUCIBOyi7JqTHs0SA+rQLAUwwGmtN7PpAgWCdYpbc/DQiv2AiEAyk5akdrkYWtd5sl8K3LVq3RkVdddKkr1l/GplZdACm4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212588,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmfnhCRA9TVsSAnZWagAAfT4P/A8PrFuoncYpbPx4e9Am\nLkbXpn9T5Ihpdl/GPxV37WRI5xZ2gznruel3WvHJ+O05Jl5dVq/zXwBphon7\nUHivleScpAtLtlMqbDPwKavWvJovrExt1/lW0eBJDFosy2XkUPOlPd0lq+VE\nZ6ca/NdpT1kISfa2kGTw6WggmbsJhPAKHjrMIQN0e29M9b5ZO8wR9hVQtdzq\ndpVjsh5zlR+kiIzN7FQS5DFbFRK2DIp48ioQEJLvSpoSJGQ5Bm/Hvfh/j97k\naZT7KZVWIftmKZTu+gPomGeNZksmuslc0pkHFOwSzM+NOf59rXp8EEo6oWkX\nzSp6bjKZcc6tbraExzjfXBlO62/l1WDS+d9PwMjJGEICre9EQ7QD3JSm7sc7\n5R9pxEJUSdeIhlpsHubjOq4yKaesSUJB9epL+Gu2lLhdiJJIKHT/8Lo0USdf\nJ5WTSzJSzG5rpZl3qxtuHGjExxLMusuqCGyOQDTw/a0npWUppTwv4OqL70A6\nl+7lnV1WOyiBGlcdsqmu+e9vmdGPcbMBn+I5CGeUMwEhzdfv5AV7hHbDO1EN\nedzMJUQkWZ4vb8Nl5HaInEI8QHLegsEOnaaeaKV6/Sa4udasnaKjBoAgrdCW\nBg/HJqtWQ/Fb8qYHZ4JwwOHDIsMSKQ11FAWVBKqoSMRMevjR4nN2axfd4LML\njuoL\r\n=DD3P\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"49b7cd7d42dd0907188a8a91391b546216d3e9ff","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T07:46:07.883Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.394"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.86-joshbwlng-remove-license-headers-49b7cd7d42dd0907188a8a91391b546216d3e9ff_1637480929236_0.8344302146009013","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.86":{"name":"@balena/jellyfish-sync","version":"6.1.86","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.86","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"53f328e1e109a95ca5afaa4d194288ff01eb0688","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.86.tgz","fileCount":25,"integrity":"sha512-rPrL9xImAR5bSFB6cLLJgPyyEgAb22v9xOjwP9exrzI1atc/efx8x/SQFVktrHHO7fOMQlPqVAHC7QR71qjnvw==","signatures":[{"sig":"MEQCICIVdm4cSFo0gHR0no6DZMpt17ykP+Rl4GUBxpjJW0gyAiBM271356FGLPor78L0CuGs2iseGEuC9QNgovhTT/8jsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212514,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmfqSCRA9TVsSAnZWagAAQiYQAJP31pNwjo/i8ek2cjxY\nyM8lRrWoSQInYeHPy5/XtmWJ3ZIT6LpN8cw4otvGGHoM3yrWZG1Fbp9zm3Tk\nqFi+cwqkII58LGSxPiGUirDWUUIM6Xxahv51us4PhTXA39zW1unTRLPCpDzb\n3Jb7h7rWwiD+QvGv5ypXAQ1+TZLZNiJCf4xohRr7R/SCFXuQ+TS5IHE8QGHb\nN4bJjcWN8pA/9BRKlCphgXXuwveJhMxWum1wvOQzbMiOwtT8ZrZ/k9oz31c8\numvro57oAyOqBYUaPKB8eGtDcVMWc5TAw3uJ2AdXtXtligh+0nQUHuDWMOr3\nhCY2kAy7rYM2dE1fTrnbkodeaDQhdwCVQG5gW/LJES90bYGMCgAPC48Fcsde\nujpRYnpPuz1L6eZPAfDOyGjyCuTcF1GiO0egcgcjugJXYUwi8TtTUOfE73Te\njOHKCfavXss2BcDJv9q6Bn0jdsDUhqfQied53TNnHrtANHR7//p1S/JsFdH/\ndjB8sw5aB/BptINqSpdKGqjom4dT1VfgW1LM5bxGDvhgbXKQYuDkHp+p4XnH\n+SVYzxeT12LJjVvDbqeDVM+42dPbY+49PehhMehVsz1xyyAthMhRGZJHMuDo\n+0xM4+lUfQeF0UMUlwFpnBipT0o5l8c0ZxPFDEO4rsLESf7b9uxEQSbJwKN2\nS2tO\r\n=Q/CJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f7a6b7b9e1da55e4a6f576dc5108e48df71d9d82","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T07:49:58.778Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.394"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.21","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.86_1637481106736_0.47703812929735","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.87-renovate-internal-patch-2da5942149f733400218b5c30fbf8dceeb6cecda":{"name":"@balena/jellyfish-sync","version":"6.1.87-renovate-internal-patch-2da5942149f733400218b5c30fbf8dceeb6cecda","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.87-renovate-internal-patch-2da5942149f733400218b5c30fbf8dceeb6cecda","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1309623bf3364643a50155559a26e60dc8c532b3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.87-renovate-internal-patch-2da5942149f733400218b5c30fbf8dceeb6cecda.tgz","fileCount":25,"integrity":"sha512-+DOCqZGvd7Lb5OTxtWNBaqykgAVqpeBLlNogzBuBaJQ/Xer6f2IDXN2k3B8s648y4qEGXgrYU+9n00Iljc9blg==","signatures":[{"sig":"MEUCIQCb686ykfhCKSRvQsYCE4XP52IeHNh0jNibMlm90t3NHwIgXmc6NPN7nYbdpNXWcq70qkNmd2FZeFb6D5A5n5rcXYw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmfubCRA9TVsSAnZWagAAkv0P/058lytFWhd2j2WBcBm3\nijz/XP5r8WT5wzaubjx455cgA2WINEMtRxrSKYmQNkq4EqpBxRwbJlqPXiBR\nV8Av6K0hjOj0F4l8m7FXP14Oh82i7ad77Tud4b9e+Mx+OeawF7bWQMT8bwSn\nutCWNElEjqXpAYB7WDHe/w2OA6mrwUn69kFou7oCST86nQYgilTWCoN2kZgd\nSChIt/HyULoq8lulEi3dHnP9lf7S+n+hV8ddTt+sL/oF+rnh2JPv9IQtIJz3\nYhXj7je578Vm6ojzJdPQ+7r1llmerqOszcgocRW+TVuZNEeO1j+SrKVkm9hh\nrs7yb79Xu6rNhXYohQgn7cXFa+qV1WJm46WhsOu6tKhkc7OqP98q5r2H489v\n3w5wfjqBYXa01MuO7WcIFVLuUu3HYlwVsxII0vlz52jtlxuIAUVlodyFCdFn\n1D4HSUDoTaMFTNgPGjceEgSsLjGs3VGC8S7Q3477uR79f7mwXc8jbg/kjhGI\n1Zb+f/xWhLbEms+9MUKbK3nHD2m02gc8EXtY9AChGL3jfKNhf8H6BHHE/3Me\n4/4eb6wCetGlyNGzet5C6EN4Sa+o03njK/vX3patgEkLLR/hCCZJ5Iuvr8HG\nueNY5FpWErBh6+LMzXJZWAH+4UM+13iif46VMUPtVe4+TDDstQUHFUH0VqxS\nGFr9\r\n=hTU0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2da5942149f733400218b5c30fbf8dceeb6cecda","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T07:53:01.916Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.23","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.87-renovate-internal-patch-2da5942149f733400218b5c30fbf8dceeb6cecda_1637481370837_0.38261273815515096","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.87":{"name":"@balena/jellyfish-sync","version":"6.1.87","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.87","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27e19fd19239da9e07ed1815fe4796369568f9b9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.87.tgz","fileCount":25,"integrity":"sha512-JC6liWwvfGNu5JUHDpLqepf+Ohm3rd90ldioNyCgZ0RpbhTRvZmfQJ4H9+QtQYaCHnEhlnXReGt8fqnGP0Uq3w==","signatures":[{"sig":"MEYCIQC6jnZdpXrDVXSRkED/2T83y8blIZSGrPNN+8h5f7lotAIhAMcUEyH1rA3cgfLsXaSyJmpfYaV4wB2W3myABcwkvypo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212585,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmfw/CRA9TVsSAnZWagAA2OUQAI9im5JkB++yoslcpBwR\nHOWBAaDNyhTKryatUYvdCAB7yx476RoyGxCzODn8/p8x7PKc8jsu/7mMHAez\nN0i1vsn2qLGcBugRzuTkpGLoiSYELV13FujTYJafKUCMvufoeuKEjpKKbfpZ\nWUTBipR+/rDEnOfX3LHQ1sARanjQwHXeG5sBt2KPtMA0AzDN4BmGi6K6e72y\nqGIWYfyCwpJsoN9ri0s/iHj8BKC/Nr/TUfXGZucovqXveHYMZvDT2fdMFOq/\n9UaiCDP3tmHYLNcZuey6C/1P4e+uypiiESyMxt14i7sMSB697MNRDze2h2e9\nXlMLVAV91V6ZLiTPFZ003YkLtmtBBI+L6Nh6OaS/w1tJj1nzntf2ixSe6uCm\n9q9UAoFdKuLRAOpP5t8L7h2Bwoc+JanzerJ5L8HXrocp34JlC/jlLeLpaUun\nR3gn2PeeIAdlU0MPbilxxRZJJVB5h0Yly2KxDXmJsKAxmQLNClEzhwYuNUv7\nz7JOCGnDKog2YIWLEVp20mVGKLvbkkSFUHPg8FIEucr9RCEWBZ9nJMFauvEo\ndMH4dwV5kF42Raa4e41Fr10iMCMwPjGTbAYnaHQPkcu/SMH/NKwRnrwNQ1/8\nApTb1wrOZkfW2VTNnQJteW6ElgUl6NJ6G5mGWuzwyDAzqCzqRbM1SkzcqnNf\nr0lA\r\n=Yy2m\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8e13b68fab0ed1104f69c909131469bad6a77b40","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T07:57:02.170Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.23","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.87_1637481534895_0.6014864818751622","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88-renovate-external-non-major-2ade6db09d64160cd3af2ea415ba460e34298660":{"name":"@balena/jellyfish-sync","version":"6.1.88-renovate-external-non-major-2ade6db09d64160cd3af2ea415ba460e34298660","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88-renovate-external-non-major-2ade6db09d64160cd3af2ea415ba460e34298660","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"912238737c096d1c22d79f8d7ab77202877a7389","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88-renovate-external-non-major-2ade6db09d64160cd3af2ea415ba460e34298660.tgz","fileCount":25,"integrity":"sha512-8KoJLkh2uW8keZD9ubRMYAODTZ30RRyf1wpqjHNh6QS/l7SckgB0XLbJX0M6XXEDwGu6RlRZ1fbkJd0gDOjBSw==","signatures":[{"sig":"MEUCIQDXL8B4CcXHfN+KmEbWP8fSGGAQGjkrsIhwOXn1gz47ZwIgRzr+z38/T47+VQFKkZFv62k4d9PwBn2hF/twm2tmCFA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmf01CRA9TVsSAnZWagAAka4P/AsZlcqwFifhiy+fwCc+\nvGPGmBqZ1sPATlOwg8VGDK9L0I8e938I+4x4AakhUQEz9UgPFjKzgpXHZZAA\nSGOxTmhurALmJR+XeZYW1SBNz8Gcne0JiYSOT3QxduFi9VKRjuEUHIEmbHzO\n75+T6aWWA3r+flh5fPgarx45jG3nZ2DfCmBR1g0ibBF6SpOLIE9lMMmOO1gE\nlSRxkwLEnh0xS55ZZrDUJsmZrBcQrNnUYO+Eyz0asHmZI3OGayy9SHSqpd23\nCa5fJk/iZmP6+XrzwdLhpCyZ2IWDsCU2lGE1v9QolpqzpUDrHx9hv89fKoHR\nwt8TISUuyddGPpQ41s67XHhDJl8+HqwTO9Etq8Euxv78G0fo1S0tkVLwyZkN\njsmVpj5dxZvqioGrRj5TemJ1aQ95ynx6XcYlQvHKywTvyDIqO7RTZfsS0rN7\nrT0e6Jt0htYeudVwcnlvnnLNu0iDZfmNItgXmCjr0EJRUxc6d6YEz4UcFvE4\nPgI7cJKb+0b1Jf7YEod+0KG9bkISyVkazU5INWK7YPALVxXVpkSU58WkQYaD\nxJeZF1jwMn053lDO8jCS1aBYtEqF8CFt7IVPmYBjAHUK9n4AY/F3LTKHytnM\nxYU1UOhQIEDk/DhZNBmCxltQBAm3+x120Apqx6XcNrRFv46O8TRfeJEh0FcP\n006A\r\n=e+wS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2ade6db09d64160cd3af2ea415ba460e34298660","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T08:00:28.851Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.82","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.0.3","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.23","@balena/jellyfish-config":"^1.5.10"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88-renovate-external-non-major-2ade6db09d64160cd3af2ea415ba460e34298660_1637481781426_0.02968963450469153","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88-renovate-internal-patch-e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b":{"name":"@balena/jellyfish-sync","version":"6.1.88-renovate-internal-patch-e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88-renovate-internal-patch-e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b10f36822534f647676e2e81692c1e4312fd497e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88-renovate-internal-patch-e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b.tgz","fileCount":25,"integrity":"sha512-kb4BiszCPySFr5T/8dqVzf7BOEoRkTcalTOZbdP7v/wsSqNAsGFhbVAhDOXe8gDjOtq2Fp3o7rkbyFUG40Leog==","signatures":[{"sig":"MEYCIQCurHppZ2GwkY3DUNcakkAdDfBxMduSp2JvDdi/0j2ymwIhAOYQ0xCwSHKBShtncCL6kqyauvdOD+H1UOLfa/ra3vGb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212721,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmn9RCRA9TVsSAnZWagAAcLgP/2Ls6pC2tfijYzYLvs+Z\nlQZpE3NKbCmbIZQSieKzP40XmZI06easUSgCeC//5TyY6LFNBNNwxKEiY5pN\nnp11kt7FH+uHqrTXvjWKCf8+VsTIWQiEmH++nTbgWFxXDQm+3vHyQrIfNLkm\nTUp2LbAGKBYss6obYE4mh/54kd35QsvlhsKb5MoBLqgz596JKtjj+/Emh+87\nu/J1xcbb+y4ubwRTqlhb+ViTqiq0lkBLubMEw3UeIv5cZTCgf9WCPsVw1N/k\nhLN91DWVOser+BNjkYiBOCHPP8oseeF+d0O4hZvjyWx0UpMc94vTjvPLRfkB\nZ33+cV2awKcZPAlbUAku0dH40dEG6JGVsdCOGMZ1Y3VF0B7gwEM1PdlS4zJB\nkkpn1Jz8qzCe0BwVMY2Kjwl+hChdNEVGxXw6gdlEbJW00uvo6lACMkknXf0D\nW4TLj6ILa171zy5nw32Exx6P0SQyPksTu+H+665sJ4wzRdyX1HG0ZzGgeziG\nYRkm5rphB97dzPjOjM8yQbUCXxJAIDKaCBCZwsE93v9JaJB5r9Mx29ePWM0t\npoxNRfMIH7hUd65h1yZhJBHfnOlDOjQW/brXT8is9PJ4cYRSmC6P1Oi9W0lR\nPgWbpizY9EjPJxRmHFMtrVqkBtwrpvqSahp+zTmziSoC8haryo/8u/Hf3N9g\n/N/n\r\n=zfC+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T17:15:12.944Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.83","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.23","@balena/jellyfish-config":"^1.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88-renovate-internal-patch-e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b_1637515089182_0.13404294571521858","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88-renovate-external-non-major-141adcc026f5e4ec411512b242a9b10138d31aaa":{"name":"@balena/jellyfish-sync","version":"6.1.88-renovate-external-non-major-141adcc026f5e4ec411512b242a9b10138d31aaa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88-renovate-external-non-major-141adcc026f5e4ec411512b242a9b10138d31aaa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8385be6734773033c999291d413a5028d159c6aa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88-renovate-external-non-major-141adcc026f5e4ec411512b242a9b10138d31aaa.tgz","fileCount":25,"integrity":"sha512-LR8zFWA7eEmBhvM3e6xRrZL+hzuqvhOZOymB6VLWvIiA5rcOrrlShW6/x8cmYO/y2y6OIdStb3X/iBsbPkxniA==","signatures":[{"sig":"MEQCIECl9jR7Fo4C2Di6A5iaGbqDRTHcc9pKPuh4ZK2GB5pIAiBk62mQDiy2r1rlMNK4qkq7LVH0ByP5NXvtIJ/8gfdH4Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmoC+CRA9TVsSAnZWagAA6dkP/Ro73oe6OXufh5DTFwbl\ndHlQtM8S5rVhCQVsd/9aLLqIyWEnfd+rbbq+kzBL67HL9AuYWPyrdH7fofLP\ns7JhyBQ7xaCsPtfA/3+kyu5LUxZ8hwSs7veUyCraoijYltDNJzTb3LcJS+3a\n/eDXQ6joKO9AUg/B1ezCpcbBFnXv71VOWrU96WeCXq3RdAIbRTrnF3h1xRxC\nXG6Riyme8nCPIaheuCCkkKYovWpOwsEQ96YSGE7d6am+IqYmWcVzM48bVCLO\nY7TfZTC4lJyqnwFNCeZeyScXmYpiPNxkaEhW9sSMVSGGtuhUEGhj0E12aN+3\nQPBhj7TbPJ+WzYASsPjzPMLwnEck7l1cePid1o8SUlc2pBNSp1CeQrJG5CUB\nrAKZSsNflnRiV5REfbXVK0Q4nqV2NtGmAaNhSya9Y76Esh4YilB2Dvk9iyX2\nM8K1viozGTDloOgpDG4abqTtYci5SY/6WnD10/SJOjOev6Otd+SO5ZXB2Nh/\nohgqyyBcLc0gzr/t84ZUB4zMDC2+9DEQNEW/E4kVX5Segn3T4MyzbT64yemk\nUAERRdgWIE+V1MDJaPzP+b09/Bi4/F95ORB0Fewkq7YHTRNXPM+fu9p8w3P7\nSUFImi8taGn6ppLRoch4X3Bel7fbIw1Sc1ooN3RyX4jCFld69Q2VJSZFmADv\nT7py\r\n=C+Kh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"141adcc026f5e4ec411512b242a9b10138d31aaa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-21T17:21:34.032Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.83","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.23","@balena/jellyfish-config":"^1.5.11"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88-renovate-external-non-major-141adcc026f5e4ec411512b242a9b10138d31aaa_1637515454067_0.1668263542082975","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88-renovate-internal-patch-748320819541a950076b35479ddfec48f61a07ae":{"name":"@balena/jellyfish-sync","version":"6.1.88-renovate-internal-patch-748320819541a950076b35479ddfec48f61a07ae","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88-renovate-internal-patch-748320819541a950076b35479ddfec48f61a07ae","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"426c1f661bf2fd38cbd634da161f06b5a1251e77","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88-renovate-internal-patch-748320819541a950076b35479ddfec48f61a07ae.tgz","fileCount":25,"integrity":"sha512-CriyjSyuYjr3+Yht9OfBRuUB1KZbLr2iitHK4oGv5pVA8YaHqgwycchCfevdTogvjnyBlSGOy4BYm2wL5kYpvA==","signatures":[{"sig":"MEQCIGlBF2jYSrdH7hjstEiZIgp7rrPThBwIUra5PuR2g75FAiBaLLKrym3kGcDNIbiHOMG21J4kXphwOwFKeo/o4RL3lQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmt59CRA9TVsSAnZWagAApe4P/0uLGOH1yvdWw5AAoGgd\nclc2pMXP5zjI62XNj7o0yqE2TNzq5HhUc/RK/6n5KsKn34XjQz5fJ27MlP1t\n/wmxl/WHtM3H6x82kR8mz/Bsb3JarvcEXV8mv4GKc3Xvihw57enjK2bOnv42\nAzEi8GOrU/cTwNoBowujPzoV0lX/0Y07eV5eod57sG4OGouIKjhYJBzOK1L/\n/24G03neJzUZp+k3g14eIOmcscsayKtzbJc5FX9q4w7O/CPTujduSLEmVAKM\nviSU+avCfhsW5lkFmiTROnB/n9z3yQ8d4QaQUZuRDrQqr/2igRksfhLEjh8j\n44A39Maq7ZpogKCOm9Xpq/waHHSsLFr3BvM7NnuX8DWZJdkI6RjYQUFIkYMO\nh84/2mtgqn1e48uMDg+PE7opscxthh1ZQpn77w8FscCofxHMIxwL7PkZF8Sk\nWZgo6+lSA6htCv3glbDRPFasQlM9aI498dVBTAgpXqHBlyCT8HJ2/UYGpPKi\noqcwcl/lWOaBmtV9Zrw1CetSwK64ZQoKOREnIaz3Yq9sIexQIPS6Z6Xd/10g\nAnidt+OTrBOh8kcGeUrr61kXfx6xBwkQWasN+dcQF+6pCaiHGE5FL6q0K55/\nt8ssXghxjtDv/sx7//TVf8j27OGbKcXX5RlAImpKN7p/XaNxgFdq7INmUPat\nrE+u\r\n=ODbj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"748320819541a950076b35479ddfec48f61a07ae","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T00:00:26.813Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.23","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88-renovate-internal-patch-748320819541a950076b35479ddfec48f61a07ae_1637539453671_0.42973338245831383","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88-renovate-internal-patch-aab08d50b99b13aa1117e05716da8db6e893d93b":{"name":"@balena/jellyfish-sync","version":"6.1.88-renovate-internal-patch-aab08d50b99b13aa1117e05716da8db6e893d93b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88-renovate-internal-patch-aab08d50b99b13aa1117e05716da8db6e893d93b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"55d21313d2ccb7ce22815de75e948debaca6da5b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88-renovate-internal-patch-aab08d50b99b13aa1117e05716da8db6e893d93b.tgz","fileCount":25,"integrity":"sha512-6udOFzkC03Zk6VarPJrFMCcOpBNK1Pcv6vONwsxnOBEr7z+zS0NpAK/ErPFPH/Ui0MPtPe7PzWNyDOUyT4yfgQ==","signatures":[{"sig":"MEQCIAOzqdSGyyA1kpupmpng65is+9Bpi7RHno1x62TnDwAFAiBvnEr7CWEggcO9+etw1dTsV4RVaKWvPywpQGZoLj7NDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmt94CRA9TVsSAnZWagAAhSkP/1r2uPeGUE/U/iinCgYr\nkrLA57mTYGY/r0JAfManBORDPaqwkLHXKjsSUwwWClwWQu2XBKycCRKnFogS\nv9F2bUkO9P8O50+ZK3J17ks+2jPOKkzqowPp/77FI6ZKbodPi31hbKbDswRE\n1zz942Q6iADK2+dwAtdaNzy3hDSjszIYRFUiaDjvmjnCoDFz436Kb3s3/5nv\n+1zjJCraHwzYZyTdgWreQOZ8qtlLIixBgsaDsI4UPErrxGRc1yIcpHRJIBxe\noEG+6/cT4XBDehgU4Zndd8YZW0aiCYEPVK5yyRtvA0c1iz3idM3k2bTOI6FA\nTqz75KkSMXjYIBz8AGLKnEgzusx3Xs2AAqtiuI2vMjt75WS0Hnsh6ZHyVCy1\n6q/0xHHaBbUVgNGCqpNYRnoHnkmWXIn/7DRoSFYRLMeVrvKOOdhawPfTv6LQ\nZjdI98PuPD8JPnLN85Na2RKBdxrmb4nFwCr26NF2vlfS9aTzp59MrXY0Gluw\nv7Gko6pwZLcLL4Q850++1yOTtwbiFF/WSKMFDQz3+IQm6srx//S4a3edLzgQ\nwih0wsxnBnq9qFhtKZs63YHWQMT2dSNAgpqQPWNT6FQqOFTd8X0cNFlwKjip\nPFnCD8vKmHNdjc7HHxpT/ia7vpLwA1I6b+dwGbLpgUF6+UX5xyvbzi5DlP+9\nnhvS\r\n=/tjR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"aab08d50b99b13aa1117e05716da8db6e893d93b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T00:05:15.368Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88-renovate-internal-patch-aab08d50b99b13aa1117e05716da8db6e893d93b_1637539704402_0.3977233967625631","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88":{"name":"@balena/jellyfish-sync","version":"6.1.88","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ae42d4cae98192b5b7ce7e3cdab64afb1fc5c79","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88.tgz","fileCount":25,"integrity":"sha512-6Yol5qLL1YYp277gD83jOZu1HPJpvnG/P/XsE9GtU7611QTnzF8caPg9g3QHUWxtBiCObMHtk83yoDpsmq11pg==","signatures":[{"sig":"MEUCIBRqgsbFRi2OIQAreIl7ZJ73AoNti9kqfSiZWdjuDHKqAiEAjzDVPQmhetuhhkDfwrQb/XUMMlxR21Afdi7QQvctByM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212702,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmuBcCRA9TVsSAnZWagAAKc8QAJXx0JpHj0ssMh6ILr8g\n2XVruz36pcRGEPjwYXpqSqsar8NTFoM7azO5tdIBwhnF8asoiFmzRJaU2sIb\nSiI02gmxtyf/m3AeDfzS+PW6B4p08a2LKdFMdPnER72o1Iets+uMcyYd37Jt\nAwZPhZIQZF4ed/5gmjV6V/3o4p7BYjxSTYrm/krUgp8mbToJt25H5R9tJ8xu\n/wXudN7vTho0Lokk1fXFgN8GraKkcTFBDlspHoUyipRCPcwxUOXt4JQiCkgg\nynuxSpzfs7AenBExAAfbpVOLSaIpWribBv+nddBtI3ZN/jv/62IqqZpOctyh\nKlcH5HHbNV77yX//bhWOXhKkXHMoxH2AYDLkXoZg879vZkhlUiEJ11UlVVrN\n2ABMw1fHk8vU6EUjKcIfXNPpVfHqPpKAyzBhtZbdB1JnN1VsyGJsOeON7B6H\n/yiR6fTkW73reg3jYp157hvJCknWJtX+6zirBWS6eyp5B8memXpvoEp0lnHv\nEMwFndZ8P7gM5reDSuflf0GwbUtwKdfUfYRjLi2D8LZ2w9PAamZnqdhl3Ajr\nGLBJEYaxPLumAMPzH7rGNJf3va/kgqnWsnuEZ7SuIfughULxMjLvKgeB0Cl0\n8iW3+1nuF1Yo2i+8brQmoCfMNddNtnzCR/Jta1jIzuGKUfbCk73XHdSuuxVP\nie77\r\n=pot8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f32d5b217b7785e3599e85d0f9d7e90ac41583ad","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T00:09:56.203Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.1","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.2","@types/uuid":"^8.3.1","lint-staged":"^12.0.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88_1637539932647_0.23490309463073933","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.88-renovate-external-non-major-0ba16215490ba6e9411c3c734e7b830fa5b610d6":{"name":"@balena/jellyfish-sync","version":"6.1.88-renovate-external-non-major-0ba16215490ba6e9411c3c734e7b830fa5b610d6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.88-renovate-external-non-major-0ba16215490ba6e9411c3c734e7b830fa5b610d6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cac1a8e36c27909ce18516bd4b12b430b59fd6e9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.88-renovate-external-non-major-0ba16215490ba6e9411c3c734e7b830fa5b610d6.tgz","fileCount":25,"integrity":"sha512-eXunCHYj9+NiYSpI5QSVAFtQtjWUCSNB7T5fIXfj4VP6Dpu0MkBMAtQG6qZ7By+NF/putNsof7dppYUCSSojqA==","signatures":[{"sig":"MEYCIQDMnu+SNh/eKd3TOeXSQywnl6TAZ4SprZnA+TgDypUBPAIhAL+2+1Mf8boz8Dz+RYRxx/jYIX7AfhjzBkIETujVZdsN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212821,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmuDLCRA9TVsSAnZWagAAdLEQAJh9N0S+HbC6keXf6592\nJTk8wE2r828ZgC/rzlTE9R+oEwxWiF0USKXezL2/cxDFSz6vOUS6ncK3Nlw1\noUp5oaJyHXqVcqw6kBkZUYx2Z+83BzZ7CwiF3BK3EckplvtOVPjF0g2QljA3\nV4yeDIe+NVTxptmaY/twYlF1sUi8FZNaTAQ/jpf6ol0+iQIMCrLXd9grNogY\nB/AfYNF2EE3WlBaR6WmivrL6t9iRIHCp/7XjK/Ea1Gh3241ku713C4jOK89r\nx1fXuU/KgaC4v7dhRt+YZNDhOfoPh1KyouZI10vD+sfNuaHg0tRGWDZSUuCd\nFQgCRNDiyCo37432gU8G/XoFTUcwlXcp0j+ZQTJUDakQtVVchZBiKpmFPkYS\nJnBp1gzpgtFc4NTJAaitBjpbjkXVrctUl4O+oTRAnIpp0YlqqEHEVo9sXaFG\nkjWRRht4eGgnzRlnSmDsLyCYIsyXtu6hbO5VTy9fQhShvOnM+6lNTpl3m9QJ\n0YjIKPd59AFu2yri4QMlRoVFaKKP2//pyGavMbrHlBm1FUSCORrr7E252Ae9\nCT54VP9HdbbgKcfCwHoNtRuTwyEILH3Jiab924QqU/huYXx/2TbVwfqRxPYx\nVQ6Res1QOJbb5AD544NnhUppycU3C+/zezF0LCr3AcdWZ61CdRdXPstzkALD\nVGoH\r\n=LOxC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0ba16215490ba6e9411c3c734e7b830fa5b610d6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T00:11:22.879Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.88-renovate-external-non-major-0ba16215490ba6e9411c3c734e7b830fa5b610d6_1637540043536_0.1503835910996505","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.89-renovate-external-non-major-0e55903e26f32f1c18a703bd2f971e34b76a1128":{"name":"@balena/jellyfish-sync","version":"6.1.89-renovate-external-non-major-0e55903e26f32f1c18a703bd2f971e34b76a1128","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.89-renovate-external-non-major-0e55903e26f32f1c18a703bd2f971e34b76a1128","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"189005f216b76e1de496d1bfb9ab474ee1395a57","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.89-renovate-external-non-major-0e55903e26f32f1c18a703bd2f971e34b76a1128.tgz","fileCount":25,"integrity":"sha512-9GPqfAaWPPSiWLncL3awxJOKKadAncWoAWhP6FJdeDxqgHhkHff3MJhaTULYqUoIU0czOipCGkTbtVeCXCJH2Q==","signatures":[{"sig":"MEQCIFbcyd3vO4SE+qGgScRKAmj6t/gxswsLsXSLrFb/uIUoAiB0Uz18t3nng79JdNkiqKRGy+ddmNDHCttphBXVeLUWIw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212846,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmuGBCRA9TVsSAnZWagAAs/EP/1C/mv7NVXaNILF0Ppi7\n0Z7axNTDcDV5SlkS3LoX8KMQEm25tKPN5UPKaUkuoRNkzRJd6k4a7EQYr7W4\n/deUrV2G+m9KVWUoER1bf7nVfqCwAbEQMIUS0xj8RvarruYfUzk0vUOgnoxu\nKRK2rMZwrQdyr2CpWmJPjspjBxjVYi+YmbXQETgV3oJAKlxhCiL8lKJj37Uj\nChklOtb4hTVh7pyVVq17dyL2OZgRYfZsk3BDdtwdbXtUuqjEy708u4hKdlIO\n3AB9/q20U6ofq/c2P+IYf4D14VvVRx7oI6+8piJ4YBE0RpJEl6aCIWxkO1px\nmOHSM1DL/S71eSIHRtWAxwHhlA8bah8i+olqyLHpvhN6Gd9tgg2Sxoc3+WEC\noM0dRu26vjW4k0sYob0lAXiwrEt80/DiVLGTO08vellwhW0AXiKVjleyrdef\nkcW4kwmdDYKvolJ3tdkvtuQOZHZ7Uf/SjRRcSB/cdewjxx8HD24z3au8oA6t\nVx68Ayb6mFe+vSlRDi7wrJBBI+vE4Au9lrEOEFbZctrK+1piAkGyzkTuJKKN\nN5ybkHvXVjantjixPAA/hWZTXl05mEjKitFJXfzj+t28F7Fp6nmd+Q5BU757\n6XlSLomA9UuJ1MkR3mS52PTCUginMl+YByV37kTWhY7BvIjoB9o6QWrVRrHH\n01R7\r\n=IQvF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0e55903e26f32f1c18a703bd2f971e34b76a1128","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T00:14:03.380Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.89-renovate-external-non-major-0e55903e26f32f1c18a703bd2f971e34b76a1128_1637540224841_0.8881464971547754","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.89-joshbwlng-bump-deps-17df227fcd16b8c86ff76947dc1846b38f4bfec8":{"name":"@balena/jellyfish-sync","version":"6.1.89-joshbwlng-bump-deps-17df227fcd16b8c86ff76947dc1846b38f4bfec8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.89-joshbwlng-bump-deps-17df227fcd16b8c86ff76947dc1846b38f4bfec8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b8158c72747356528f68f264f2c2bdfc9b22a625","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.89-joshbwlng-bump-deps-17df227fcd16b8c86ff76947dc1846b38f4bfec8.tgz","fileCount":25,"integrity":"sha512-KANdk5BeFUNssR/+UkdbF1a+K0fgiTN+wI9jEgbX4aPdwEPLCTPur81AsZVSK5VF7gK4PzlFTxR9NRXj9pTFKQ==","signatures":[{"sig":"MEYCIQD0LI/a9m4F47CIx2KWqLTTVVqdZDOEwyPqTUYPnjd3dAIhAJZzf4UvdJASNr63vdTmGwAj5cbk8Aayr3eDQQdkHASm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212824,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmwLICRA9TVsSAnZWagAAfxEP/Rn9M0of+/uvVXTTnjYE\nLHIMpexypkgz/MXmKVuWycoyUvsIhWJpYX+AtrwDK0W7hcRduAb3mj6dnazL\nqhaJmwaKOs9pnaYpDCPca9A6mhDSeoNKKe6qj57KBwXUAgJXmWwL4LTEB+hm\nMGvBfwQ/vLEXtosBTvHbCZTKPPKFKeWDu3Io7X7q+g4W8P3rKAy8osEqb41P\nIzAA3bMKGFPtlxnjc48e7YngYH3C6LL9cs2MJaG1/herQmyqwQU4V2shJTSC\n2GbflHNi45MZUcaXKHlfD1U5TALS9pCKK9w1aPqGw3Dc/5DdGRrZFd9p/zuL\nRIe2vGRIzfmNxqXpvDLM0KdgIq8n4ZVsNslQOmuzX1NQWts4S112klqnEO+O\nsD9GmZHJjshoxwi/VA6VU88dOVPjIkNiGbST4CUNW5LSmzGXNAC5XY1ToI1c\nIadjqCuJsBSi21o/PUoL7IizF1k0gZKPpendV9wOJWLrT4bselF3E5aO0jnJ\n2zyRA4cK3ybLTcocyobRaD343lwt8ux9wfRuSCFA3s36xQd2umCvDGbcyWUv\ndL6gTViSOhkUlU9qGthnX6bKMJ7kfTP0Sf+/KuTW3pWaxo9NgFHoI+8/tx8n\nqFAvuO8P0peXZQY5Xlc0b8R8IWQoiR8yYQEMVGmoxBxMrYrU/GA8KybeUrUd\nAU9Z\r\n=e52T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"17df227fcd16b8c86ff76947dc1846b38f4bfec8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T02:35:49.267Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.89-joshbwlng-bump-deps-17df227fcd16b8c86ff76947dc1846b38f4bfec8_1637548744112_0.7094948158175725","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.89":{"name":"@balena/jellyfish-sync","version":"6.1.89","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.89","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"12832f4bfaf15670aa0d285f8d2eca69227a4f19","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.89.tgz","fileCount":25,"integrity":"sha512-Cf9Rcv8W582g2+WdqXgk6JH1nCAu24uzLhBnFxgxJhkxdsCHYSQE4kbgUJwypYQ9EC86bFmSOPryRmoI5/HShw==","signatures":[{"sig":"MEYCIQDYvlDk8Xh9qQlj4eSArK8SqNuJbRSulFQ1pB4j+RBCkgIhALoKp3po2800WlmgzMkWrsA1YBVQVY9msf7LMRYba9yN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmwOqCRA9TVsSAnZWagAAboUP/2WytJzkJyvEJ3c8JrJy\nOi1TUTL11NDuwn4EnDJg5MT33Pn2CZsDM2L3cW2+2tzp3CjDwUcijWIgiIl2\nv6OKFD3XHjJNCn3HXyfEdQKN1E63E+oDfxZKP89oJJbt4WZlwKfnWbFzLPO8\n7DMzpnELW/d+shdmUDgY0s5/AFbm6G9g73N97eA0mF2Q/FLTgBal5bbuEXgE\na9W0R7ou6Jgko327/CEriwtLGwZciYlUW5iBg+N4moDIYxvmaPaG3yjgRFrX\nZZgDd6JdVxQun5vWIdbKBhiDbj04P2NuLtGc+2XJ+/Q3XHXy1mPiHk4AGHnR\nh+ge0mhQ0RhbgaK6fllaLQydiO6gJulLEFVWKLssjL0SuttH+H7/SCBOaX9u\nSfX1b0v08c3t5lP4guftL2yVKIFbzEQZnM/BXjK8gbCVaQyQnaASZcWS52VM\nxjix+5KzKMgew48x5Idre5P8s/jYTb/36xYjR0U71YeNBZFv1dpBeJWlcxym\nVbZzaiqkx89CQyjMi8Yw1qj1HBiaznq3va5ahNOyNKodiYqz7owokF+wo4tj\nUpzUYOzM7+osc7l5Lhp3aAujVOF8wfmQlE5dadG0OOXW7pZ3IixQcwSoXT2O\ncTr40tOo6GeW3rr+FKMIrtcyj2CRi+8hia0LwS0iiY0G7D0iX9Q+1h68/91F\nSRHM\r\n=MMNS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e8936c940740709caf2097c4fc74f152ebb64f05","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T02:40:52.514Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.89_1637548969829_0.7443105386164652","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90-renovate-external-non-major-b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8":{"name":"@balena/jellyfish-sync","version":"6.1.90-renovate-external-non-major-b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90-renovate-external-non-major-b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e01ac758f2c38b8790e0a8c4e35d5246a2da97f1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90-renovate-external-non-major-b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8.tgz","fileCount":25,"integrity":"sha512-4rCE5IJ/A5fbKejLqL8UTreXQmyxCvHXRC5FsqMCevm7B5P4SF1Jwj2ZXPMCfYVFFgnzjNV0G+jbYyNXfVRJeA==","signatures":[{"sig":"MEUCIQCAsExYCoGW2o+wrRuOPFGyQVyh53IfeRCcawKTSlsF6AIgMvwtZUSuctmFVZPOmyi4fZkVaaUWZ9CYlukuW3oEbeU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212920,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmwS+CRA9TVsSAnZWagAA8boP/3APqNT5p7p6kEAmYzCt\n43RUilIO1UTP1sMRkOvjYtw/nLWVFcuaysrwEo3llsA2+Me4AdLjbQ7Pip5B\nlj5KFKdSkbHUdB/MB3PNHGjTwwzcT4SyFiOGvW4w785WB0NqwoYO1A1Q0bOl\n511e/cDNHlQ4i2m5TPjt83zQBPmlmyHlJsquId9iTHYloE8B+Dl7Qtwu/E+k\nc/INelgQ6T8zCQICGeecKA7cNPYU5QtRoXRbWM/Mdjjo9xoVHg2x4L1Or1cN\nL9zbsuxYUogDgOVOEI/8+895YKvLa47vY85VQ2hfjxpr6sj4TDD8TOCYYKPO\ntd5Q0EtAhxBPgntJooSiWUtFYfyRdfRBqUL2+xrTe1kJUBODLyH6H9MrSkH5\nL/R1Pw9gbMYe3+KTC5EgK4xGp05EFgbC11Pg641tQptH8suERqrLo/eNf90G\nzhMqqzGeNyjPNT+Aqf2ALf0odL2xrTwCOuf682EOXPoCw/lsNWBCv8Sk86kK\nLGpyK7t4FwGyRXm7Zpn+l2WsgM6hWpQC0iqfP4xx1tHRpSboxzwb8oob4q/B\nLrxz/CPGQ6WVW25d92vvhUa2fPqFWFN7x3/fJDa1NJx6LOKHVWHGKX25qYsn\nPta5ElsvOBqltfAGATNPIGxNyY9nEsb8sQK/HHuPGoE+FnxQWCRLhq2+J55J\nLo0D\r\n=SpRI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T02:44:37.834Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.84","@balena/jellyfish-logger":"3.0.130","@balena/jellyfish-metrics":"^1.0.396"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.24","@balena/jellyfish-config":"^1.5.12"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90-renovate-external-non-major-b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8_1637549246716_0.40545276343966474","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90-renovate-internal-patch-94e89f8ba77143dc7f6bef88e65259c688be7723":{"name":"@balena/jellyfish-sync","version":"6.1.90-renovate-internal-patch-94e89f8ba77143dc7f6bef88e65259c688be7723","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90-renovate-internal-patch-94e89f8ba77143dc7f6bef88e65259c688be7723","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6bff81948fd120b9a1e6c5130972bbdac90bd401","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90-renovate-internal-patch-94e89f8ba77143dc7f6bef88e65259c688be7723.tgz","fileCount":25,"integrity":"sha512-OeF2+NYXmwPNRMD4qwlYNliOX20GfKyG4cDL42++RIK6UgU7OiFA34hm+iiI7PbXtRV4ewCoL0oOb2hd+C9qzg==","signatures":[{"sig":"MEUCIQCkG1uBMS79/su82JTbzqKLJySPD8eTwVGnmtiQznR6wwIgOCk85VjedhnvOFnrO9AI2B3IMgjLb7q6/7KVOflIojs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmzOTCRA9TVsSAnZWagAADQwQAIpmJZ9Ge9+rsztHkMvO\n+gSEkRgaynNN2go+1GK7gHcqbJYLn9hYbqf3x7cTKgwTUFeYubVmeQ1usNr1\nq6lOaUfjj4YrIS1cYdiPgDXUi5G/NnnMQg5tLkFciBp6oR+Cj1YspjOYJ9iD\nxQ3AbUw+XvIupla8PwgxYMDEYAfxI93vedYhkNpegoI0FJyzGLLTQJp4JhdP\nWb6rmHzH5cS6wsqnNmInz/5q3Q4qnSZQhto6r+Ct7/XUofibYqQJ01XvlIjD\nVeOblRXGMv/r063bNzlnrMgJ8MwSoUfxjoifJQJDyvyrFrgomJZFGO/eMof/\n3RXEPPUbZYS0yZZGMUXeHfMN+DMvobnE+LcDPVespbK7bVS4X3QmLyvBYtEx\nhf5eHwhFpxk1+Ozz5FJsqTb25GKj4B5koNbVamHCa5/63sN5ENjJl28QC/bt\nWMq23OZWgHKNrCQ3aAf3U67mEZ7Sm4gVEe3tDciM6Ir95gv6iMXxXvDwhDLw\nVqHFoXdZFse9DnqWjTvLQjRuuHGN1eIcIU8qT3T638bwt1NFud7gW2xT8e9V\npxdTb1+Z9ADoP/hc0eeLPW2FCDhBHGlMAaDVhHr5Ljqj8HhmOJyVE/SIMNeT\nWlxL/eSiIjt1ujQD8FoU76SWUusXT3uw+gTnwA2ZcY2a+pFIIkvYdDFBAyfi\n8hE9\r\n=agdj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"94e89f8ba77143dc7f6bef88e65259c688be7723","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T06:04:51.877Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.13"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90-renovate-internal-patch-94e89f8ba77143dc7f6bef88e65259c688be7723_1637561235610_0.8331057324210536","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90-renovate-external-non-major-f5f1aca244e7d8bba042d45ace5bb76b43b35eff":{"name":"@balena/jellyfish-sync","version":"6.1.90-renovate-external-non-major-f5f1aca244e7d8bba042d45ace5bb76b43b35eff","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90-renovate-external-non-major-f5f1aca244e7d8bba042d45ace5bb76b43b35eff","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dc8590b2c88bf76e1696eb7b9b47f96dec428ba6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90-renovate-external-non-major-f5f1aca244e7d8bba042d45ace5bb76b43b35eff.tgz","fileCount":25,"integrity":"sha512-iIeFCVaLfpyYu8BzenXpIeJFyWXeCC1ihpA2qL0vpIGIzNcIIhs9Ji2pLFbK86m1Blsd6krY3y2zrDMtxRVV6Q==","signatures":[{"sig":"MEYCIQCPFLM0v7KQ0lbIZVFTk4B0k3cuqYVk4D05587CzEBjKwIhAK04JssfRKRBp62Bmp35Jf8A5qMAyD0YX8w/trAo64Lt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmzUbCRA9TVsSAnZWagAAKagP/RUNS93t+NuLLOzSoYhf\nK1ZOOFlZ63DMDqO60nHxUDqRc9hSY/6l3mIKTuN2o17JSZHz6wCeLIuAeTs0\nL4Z9KIFPbGaR0jXdo3P2GQpA22PJzBvO74TfZNYeZLSTAykOkgBWtkgagruw\nrn/8yr9ccN+XNDrK8+w9gh2DUAdcSSDYnx4BmU5f4pnFmNGqUAY+HGNwYgIn\nVdVEkcZXzAS4PlJVwRW/+gzM/c+2AgZ+k4HnnBo05fvl5AlCOBwg++Uaelwz\n5vd5UEApYwWnGRaHPWI/irF1FklG+Ru6spzxMF8w/Yh1VC8XOnZF+GSDYjpE\n2G2yxzIFHd6xDPXzwHgsDwY8PFzsp1TFfUvumpetWzl9ElCihB8ggPf1y7zH\nxw7dGx9CSTyMrA1BF52/skWu/2CJBxZuDwx9R5oZQCOG8sCIO2neIQPDVv6M\nTp9KHEWUYs+0PinhE1Avp++IKuaVbRukpU4Lue8Tw/K9gU5HvJTpUqLlXTjE\nmLdeHVKPe+lvmGeT4exPhe57elPdd1W9gekERROiXoFvcvtjMonUL5UsUX31\n4vJrS5rHOMvyRco0QFjNH4J3qO5mTOFIVB+GYreTrgFJRFhAFCOMtUP+1jw+\nmCoKI6ighJeH0LFUaZl1sNrR4kn9yH+ezDcVkvC6xWRGp0UAYNjMmdii7eY4\na+GX\r\n=EN1c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f5f1aca244e7d8bba042d45ace5bb76b43b35eff","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-22T06:11:15.411Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.13"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90-renovate-external-non-major-f5f1aca244e7d8bba042d45ace5bb76b43b35eff_1637561627272_0.1400678675066518","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90-renovate-typescript-4-x-81adf0afc40a63f95ebc197a29c01599cc208046":{"name":"@balena/jellyfish-sync","version":"6.1.90-renovate-typescript-4-x-81adf0afc40a63f95ebc197a29c01599cc208046","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90-renovate-typescript-4-x-81adf0afc40a63f95ebc197a29c01599cc208046","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5e6d9167a57ad0f806b322c1fbba58c9e506a23","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90-renovate-typescript-4-x-81adf0afc40a63f95ebc197a29c01599cc208046.tgz","fileCount":25,"integrity":"sha512-YxKj0XpzBfpOcqASqPE5DhqzmUpXCK1RY5w2ra4zNc+Mup/oyS1SujE2UDY4Efl2TYkgzUMCWotUrUWfaOCtMA==","signatures":[{"sig":"MEUCIEX2K/7adK7dU9ajcRRiOc0vMXksI7SplrqcIuc7Dw4SAiEAs8s/hqHLEvqULxM48NQTwf7sSw3uX4XKa3EIeqo+YV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212962,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnEopCRA9TVsSAnZWagAAdpEP/jhwVk9scu9RngvO502d\nEaznYRZywiOR9NVd5g1KHyksqrkajRoH9ImW+6hnHT+4kTJRH1K6f0/ZlimF\nLEYQQ1/2K4Q4lGBlKXBKJErOlgzVMpt3mdoRfPGPCplYYomdWcSrNaLFWnhg\ncwnV7hHftBMLAvCGv4fVzv0dohXni9rkQhh0P7O67Bpw8wRDh7Vmfp7Wka+g\nmzX5fJcaCi/MBTezJIMn/4urLmgNKauhwBcZlMRlCxb2wBKovrshXKBzaMvF\nqaXAiZXB1vtN7OheRG4MEd6p1DtdtE3iRuAPkeX+bQTAKZS/MMULiFdygzav\njl9j2A6C9FYZ+lpP6pLSI2jN4sEWTdobRvSJsuQXAQDVoEoyXlZ3NOBZyF0A\n6NMCygfOQ7S/lawkKkZi3fybArLDmunpyKschYRiEgV1MkbSlnXr5EZ0BN2m\nWiLHyLw+M/+uIfRw+oPUAH6IdoUNtcQmNtP6pGh+I7Sd+LfBxuT+ggh6SUKf\nZB+8nBrKL2Z39R+TvqflOwyZo1i8GzCjdV9GRIhTEN7lIpg6jr+UWM/wWlJU\nFB+acq9zoipn5Ch1WBNXOlZZiJi20jtoTnA39B0jIT+ShuoShh6gNTURnRxP\nzFI8MDDk+YewDvuLtglg7kH6dvXMfXOtIiCwSiTpsko0zj6evyejGlmnDRYC\nX/kO\r\n=VPM/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"81adf0afc40a63f95ebc197a29c01599cc208046","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T01:53:13.965Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.13"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90-renovate-typescript-4-x-81adf0afc40a63f95ebc197a29c01599cc208046_1637632553473_0.7153421249665528","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90-renovate-internal-patch-01f7fc01ca85dec98afb72c59cfb6a37e3047535":{"name":"@balena/jellyfish-sync","version":"6.1.90-renovate-internal-patch-01f7fc01ca85dec98afb72c59cfb6a37e3047535","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90-renovate-internal-patch-01f7fc01ca85dec98afb72c59cfb6a37e3047535","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fbddca16be9d10e1054bfb55c8f0ad36231d3084","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90-renovate-internal-patch-01f7fc01ca85dec98afb72c59cfb6a37e3047535.tgz","fileCount":25,"integrity":"sha512-VP4DapcWSvkfQ2OSta/kSvsVmem0SulBDDLri1rgbEaz0/VqusqA2yeWC3/hymoFh3UhPiWMzrQ4lhiyIRL4Bw==","signatures":[{"sig":"MEYCIQCag4t0gHkv89Mfs3D/J1qP9E1eSslBWY6n49KuJEv22gIhAOzss32eiCARx+eL47ZRP2EAB5cI8B3XKTvpSNCHDs+1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnEr0CRA9TVsSAnZWagAAheoP/REU+N5hs8pbny4WVCfn\nXK6iXv6fGg4OXemcYM1JyhHGx3gZaqV3VNqi73NZQbJ5xd0zNqa7wHehANR5\nfB5a8fA/x6zSV1PK0+iEkqF4IB+zbiF5rh/h5+kKMVbgHz/E/iVvseliVCiP\ndlSlk4Nh7gJoZ7Bxy4HqSILmJONNTzhCjFYeTy68lZ1HtOKCCsjgQrvjJdK4\no3ilKI01O321aC/R9AqXctzLlKcyvxb9nO6VOlq9HaCgpmwBze68oUyENWl/\nGzVVRo1olqh0EfmHIL+OotBTy5FxHh4sXgip4wMhHb1x4NOxmIqtv89rgSY0\ne9r3/w5G+LkDZcwz5ZGeahfyX00et2MAr8Hgif5QgpOWdmXPs4XFyahxiZ24\nHDT9coVzTIaj0RZN4AyLLYpxFTKFEdVErjawgwmjw7lSonMXIS59E82bM+83\nAkfqWEgxGqMZM7E8yWpukVUKmE/uw6cB6yH+pGzbZSJTwQFck88Yma0XHvL+\nreuIOH47oFcKil0OPOURvXg5fMFNBF2RBsB2iFkjHEjPEij60YBcyQu97onb\njSCrZU9bz8o7IWm0nzLp15oztVOreKB4p6O89lU9WYkNZKSOWUCel6UA3Qwj\nkNY7BCxG8NYjipNXsqan74MbiSrMHieUnXMXP2FtguA4TU8RvHtNtBoJQeqm\nYq3M\r\n=rTId\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"01f7fc01ca85dec98afb72c59cfb6a37e3047535","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T01:56:00.402Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90-renovate-internal-patch-01f7fc01ca85dec98afb72c59cfb6a37e3047535_1637632755806_0.3281689279672937","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90":{"name":"@balena/jellyfish-sync","version":"6.1.90","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a8aeed9641f4de68c91b9bf5c1f7e0fb35539f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90.tgz","fileCount":25,"integrity":"sha512-uV3lFmhBJ4Ao/tkbnZUVUZAnWRxRFEPeHuk7d5NynYRSxBbUwK1QMgvXWn8YiFW41gOfV16Gk+kxz48Cmw+92g==","signatures":[{"sig":"MEQCIEglfZD8yhP3VKkjNCZbph2v+zCdd1YzBlI8W2eXlKvbAiBmPp0CNxOjhYgP7a79fKLCn2kZrYSXB350/gqWrOuU7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":212912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnEvsCRA9TVsSAnZWagAAXBMP+gL6ilEfXObnfEd2zE9B\ngRBVl0FLhVT333dflIKjm9GlRLTM77+f5DBUV06a7Q5FdIq+uWzLY/HuDG6y\nC0rCMNZZz43obSXRyOS0T9Iv/3gVThU18FlBaNpyj7P67Iva2d6h6WihzGNP\nQqYQwtVKqdpikOZejHoiknuUWSqQu1IBF/HrpOfbp1FxZpZADZIOUCzqzOES\nOMsw57Vs9Dmphx2Y7Hb0fll84m7V5QaIaiVhADgqc2oYkOLF/oHnCe4Xv2+m\nrtEkvjsw4eQPMhN92YLnVc7tWcX6poe8x72e/0pgsC7CwT8Or7sA1gaofwqR\nbMMRZOy7iCPG2WvMpCyNUOIFiMFxnkKlqmZW6fA4J/Djw4FQ/D36dOw/2QEo\nFt9P8i3hSRhN9r7jPGyk2e2IyUX36Ngxyoah7Y664RoeXTuLKPe8JJNvQuPF\n2fwe4aBMQdnDuBpTRArPKvacDqDcsZjQ3Avo7VjaLXqR+jc6QyhbIfXJxXWQ\nM1AVA7cSm0aPraaca5rqlOhsI4ALwg1bkc4P7f4IAa9vSKLw8ZxyXxM5bJ3A\nLzlc1+Fu22U4E/X0PpoU+l2fHXxBpUYNzohVJq7y/4ciznrAAiDhSGCB7GOt\nYvcRb+H6tL4NL4zUeMnCwkUJevrvljTRDTOc1XeIxJvOKH3JmG0SxRjBm8Bw\n1aYY\r\n=73e5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c61ccbd6879081d24ba70992b20541994d866a14","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T02:01:26.269Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90_1637633004061_0.017103279002704586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.90-renovate-external-non-major-e19a74a77e03a60a2db7bbc4261b40e72452412b":{"name":"@balena/jellyfish-sync","version":"6.1.90-renovate-external-non-major-e19a74a77e03a60a2db7bbc4261b40e72452412b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.90-renovate-external-non-major-e19a74a77e03a60a2db7bbc4261b40e72452412b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"35065a9bd863abd509add3f325d64bc5e5e79bea","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.90-renovate-external-non-major-e19a74a77e03a60a2db7bbc4261b40e72452412b.tgz","fileCount":25,"integrity":"sha512-y9mRUPRhYUQTFaIAQwf1fLeWMlwoKd7vgWujXL7cnkTDC8Lq2lmRZ4s3uIRCJaiXaKgUAClPaXcZjuHcdnxMzQ==","signatures":[{"sig":"MEQCIBp62PpHMC5+YF9BK6yNm/Q0O+ZRps2F3ofFccMJdAbCAiBq2lvK34hdqh1DploQsBUn2fxpIfSkR1fBrxRPTPLQPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnExvCRA9TVsSAnZWagAAObgP/0H0HJwKwdkBRbCb38V0\nlC0qzUr/COPG5p/T6bW+ZirZD1EPFdZAU54C2rh09f93vCzcg+ru7fijkJ9H\nWSrN0lJFL8AGSK7CzZNFjquKlzlNk8TfJrmmrfY5Kce8yDy1KBC7Nb9KRBPZ\nwuuLYk8GXr2lVIyeVhuIZQqfxyBZTjVxZ8cKV1dOnI51Lw6DtObE3PmipBcE\nRL0E9o8gKJ0RSg7RlYfM0m0/tJ8hKeP2yhgIbni1HbvGjdKbwfHfoB/isdcY\n1LQWasp+ednfhMMeHLIfLQaUnuGa6i+6ylxauDGvUP22F1jOytDzj1owT3f1\nWsQC7p2P2Z7ysREAbyE+1b1egyjVLOwMsZToTFtU7+4boAo+yHzF0PPfiDap\nYqM133sSzh3f1x3zUkLe46yZDg5GKQGdPpAp58nHiQ2LNgXGlyI1B3dcpuzL\n1NcFfXJMgOADQl+Y44X8BP6heXGTBGzimASKoJdlhSCRzfGwk70kiU3zHE4U\niYtj3HJkntQJpLq+48Q9rmxH9BqWCZzA/khid3a8t5MxArwZQURbjQ+4831S\n2b6GaSkP7sTry3vD+DYqdOXb6JrxY6EAHeijMpn3J8EvNkbfMtvMYWK+Gc+7\n5I+pMNpJPlPlgju3ljtHMLScHut9TqeuSjeRVYAp7ApftDI8k/yTbQIg6uz/\nXst8\r\n=Ltih\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e19a74a77e03a60a2db7bbc4261b40e72452412b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T02:02:22.423Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.90-renovate-external-non-major-e19a74a77e03a60a2db7bbc4261b40e72452412b_1637633135554_0.6233162571260744","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.91-renovate-typescript-4-x-1d17c6028bf551e2426a6a45c4bbae50e76ecf72":{"name":"@balena/jellyfish-sync","version":"6.1.91-renovate-typescript-4-x-1d17c6028bf551e2426a6a45c4bbae50e76ecf72","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.91-renovate-typescript-4-x-1d17c6028bf551e2426a6a45c4bbae50e76ecf72","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e4dda0a931946bd582a537ef901c544565761d37","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.91-renovate-typescript-4-x-1d17c6028bf551e2426a6a45c4bbae50e76ecf72.tgz","fileCount":25,"integrity":"sha512-m5UtiS2JlVk/kGA4j21urIlzQGHTQtaH5UtuIaamWmt6QZrk5TY50CJgTUACutnCEGx4oV3IwyRWhQqwHV4hBQ==","signatures":[{"sig":"MEYCIQCF1n3pYNuqUyzheeviSLphOS5+gKuXkZBe64SmlhPRQQIhANiVMr9nWNcfEOZogevuNBwlUm3/nuBk4J5u9R2+HWd8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213065,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnEzCCRA9TVsSAnZWagAAdI0P/3qM/526dKvCvWjaKimz\nwIvBWXpErQ2MzX8OLQKjSVbXrzFLlp4nqQvZ12By2mh76pSn2QuXLToFMMie\nrwQhTtshuoiL8J/YINNd5gUBFCeFHu80ltVz8XS6D1FkDq+EJwwfPEefvoh9\nWVH03c17pJSQ2S0MCJpFEHnJU4az2+1FiNOnTDvOxqQWl46jLT9sqCzVMx+v\nNhIZVg5BpR5D8HnU5BOmj1ghKGfSQLomtdXA2x6X5SFbqozpwMGv0XRu1KFZ\ngCC1ONyD7llYlPUoOwyL9KZU73fDrkvlmL0ozLcS9pPlcYKhHwIQCep2Q8UL\nhGBGYhANA1r8PMzPifMiyzoIXd47EGvVXN4WPfBkJSHN4AfaGXvq1UwoAo+Y\neTLzeinYmqzNQWnmbuXWD7DGHKShWK90oyCzlkWoro6Wh6cNExc/x7z/6kSF\nMHSpvKt5ORxDMgYbDpfXcO9yctQ40EvtKh8r/5//2pZl6kNtgP5DxlpRYgAD\ntcjPQtEvsLBvAo2paKTB/4fWKqH6PowPP4BTEnH33WCj6rHB37SYDbLkQ78g\nMaaU7LBoy3LpMhtf6cHaNHKRjqTlX4p7EoI4e+S/kxhHRjbtPLpoQPRxyG/3\nY+jsPWY9dWMAOBI1YuIgZSRleUMSBkSO2xnratV/tV3GIK9W/5XO+7g+34Hy\nPC0b\r\n=DuEE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1d17c6028bf551e2426a6a45c4bbae50e76ecf72","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T02:03:35.265Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.1","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.91-renovate-typescript-4-x-1d17c6028bf551e2426a6a45c4bbae50e76ecf72_1637633218222_0.5844143713907839","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.91-renovate-external-non-major-d7bee7004fff49e7c660e54f6618be8857638c3a":{"name":"@balena/jellyfish-sync","version":"6.1.91-renovate-external-non-major-d7bee7004fff49e7c660e54f6618be8857638c3a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.91-renovate-external-non-major-d7bee7004fff49e7c660e54f6618be8857638c3a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"82e56d62b61024b3c97c765a754d5ceb6a33186b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.91-renovate-external-non-major-d7bee7004fff49e7c660e54f6618be8857638c3a.tgz","fileCount":25,"integrity":"sha512-QAGXeffXHztYIhNqnrl8HMkrD4hAFPs8SbHJSpOH5+fYJ8nSWFS20ocm776bwFYsaCbtQb+mriUcGjePrJvyWw==","signatures":[{"sig":"MEQCIB5FLoCQ9cckwX1MAOqfLJimQrkrDvYWcfbXhinjGunfAiB1UnXCiX107Y9VG7zAjoPbPlyHmABBy6Rwh5PmdcXjbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnGoFCRA9TVsSAnZWagAACjwP/iF8sSUaw/bYoWmKX2Fj\ndqRfnL0orzfRPngCY6ZzC/M3ay1Dre6ErJpSW+26TmI+LiWb8iYL7JgYY484\nNrrPAESFvo4bJKERidUSPLAgRwapemx8WuNlH1myJLGTjySrTe3/iGdmMpZj\n4J+qwc0kDeO4zzp+K2Bcwm+Tea0ccJTMcZVkeZUS2Tmb9MVHZnwQHp/Iyu+Z\n3vp9gQ2KOK1jj3x/MVVl5oC5EDs+k1Zia3qEoC9wY+UStGmHSWcLxl+cxNf4\nQ4tfVddURZLRozFRDTX7JSMsDfe8FO6L9uDFf3Bz+OvZPLwXEZcOI3pyWvxT\nDzxc3VtStfBCME6aZj562vFt/f0oD8eBcrbX/vUT5+oyAIfOHGn69QQz1v4P\nq4wyJDWmXCIIAW6ozrc2JyytiXXqverMCuCQoshVjT0zXFJsGz+T+tgHA7Vo\nV5BJ/sZKPUTAn8iFGSZtTDN3Uc2YZpU43n3Hm8j/MTbmxCo2ihKbYhjgTz9w\nFYFfgeyoPeFve8teoICnwLpHD8J+v8TF4OTuEGO2UFq143GuwprTnbVs+Pdz\nRvbPdhqcu8kgNnGiwuVPABO4ZM6HQ6bbTmDPQ0sC74ED7noiMheXK5cJcof9\nTwUge/5D4MtGxkC0g64hEKvKcpDJbqJfmreV2jBnjFccC7CckJNu2bYwwV13\nN5cS\r\n=V+0/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d7bee7004fff49e7c660e54f6618be8857638c3a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T04:08:29.798Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.91-renovate-external-non-major-d7bee7004fff49e7c660e54f6618be8857638c3a_1637640709357_0.09666015869928635","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.91":{"name":"@balena/jellyfish-sync","version":"6.1.91","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.91","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c65213672caa0d26822108e5d607d399f47c516","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.91.tgz","fileCount":25,"integrity":"sha512-g09cHsHCuuYCxJCtGE/q6iYckI50+0+0oVte4EgPWoNna66msLYa+KxqOn6z9fpc0PVm8oPy1PHi3hvoO1o8xg==","signatures":[{"sig":"MEQCIGkMoLcVCZuQGCAv+KVBILiMTRi0xrO/5A3IZHG6cQ6ZAiBB4AvlKgupsz+bH3tWVJufGXzt7IS5So75uEb/8iPvhQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213002,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnGryCRA9TVsSAnZWagAAYSkQAJbX7Q5MbewQ7S+JsoGe\nFi0qO7Bw8brufacdp+FhC5+LsrUkIVZFgtsyBe3V12Y01ynf6XrYKF8wH042\nVZSJWEBNrSbdQXc6V/bkqe31CXE3Jx8d1etKlEWX/0o9V1wvrpjMkMsz0ojG\npcexJUgm1wlL9xp0xxRjPSU3/2Qhkkmbzk7TbWNzaD3EaMWlAkscRDYEfPZl\njN4fLu5DWlgSl1c3WRbiJAHWgfUOKJWPlB6vNSQMI1+EzEgUtN0IuEoVLTUP\n6kme7Gmr+1wlDlt3zgqCaa9kJHDdlZZgBTJn0hL9i9lfQUTMMne3ALv+60He\nluZmstEAnNvbdsMBplAHmggdegqhkxeWzmPJRetUyNjmCxbZ0C+Q9jOoioJ+\nf8wa2Ud3aKmAHx7SZTtbq4vBGgHemVizuEs9YlXgPB0FlrRF51/ZMZgojKkO\nlfLxeepm1pRFo9UYrIu115GrjHqUCSfoH+6z9JnijaG11nymPb/QyHk9q0d1\npLmpcdanHcLde2sUhfSPVh3P+gb3z4AHSsj7QhRs6Z1L7I7404jZ0fvCRm1b\noWCo/yYYYic0IUBgLRCtNShAiDVJH4NSSU6iIAYJuB4mRoMrnUrDMuNTgCzP\nRcN+laiJ9OdmLfTLiWdXybaVmfqpHbArNX9kWRp4vK9yPtR90Bk8w39QZmvs\ngxsE\r\n=wvYJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b20d3108046919b533946080c9f83bfc050c9966","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T04:13:23.718Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.91_1637640946728_0.2539422582082729","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.91-renovate-internal-patch-e750293a62f3717db54b15b42c37ebf85bd2f689":{"name":"@balena/jellyfish-sync","version":"6.1.91-renovate-internal-patch-e750293a62f3717db54b15b42c37ebf85bd2f689","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.91-renovate-internal-patch-e750293a62f3717db54b15b42c37ebf85bd2f689","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a8a149ee0996dfb6a43306c45bd96173a4bee19","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.91-renovate-internal-patch-e750293a62f3717db54b15b42c37ebf85bd2f689.tgz","fileCount":25,"integrity":"sha512-wwq49VJItihtYThFAIrTH7oBt50q1ZQFau1OzThB5Tf4JFGnAQClSDa9E7QR2ejFyf+VRUh8r/yn/J0P8IdNzw==","signatures":[{"sig":"MEYCIQDbdH1JG9eoSMbepuqNirfFtNdOeBxaNsSyBZKt3a2FJQIhAKrRgeOfPqJB2T8bs8Rusr3F9Tf4jS3vR5cASc9H3MEy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnGsaCRA9TVsSAnZWagAA8w4P/1jWbRODSEU4ZDSmudnL\naCYXi8Q8VwBuJxYsn4+AttdWOemCC3tYz09lFboZkkZ7NaeouF2xsBGrQQGC\nVLqcpS80HH0EywaEZoahcgsotud3aX8JeDqts9OwzqY/UgyK406qcrSMs1ti\nfhUmSMTlaqzjvPEvLIXSFPFp/qYMBnZM7a1e6ErnT0OSUuSPSQmxaWMEY7Tb\nkWNV6y6VJVAC5GAeNADAOJJwzIkj4qooyZwgw6egflXjo3WiREuUdFPJKJ4q\nVts0bybI+EshAIF5xZFUyDITZhCbHMr8KiHr0/vE1ZgaRUaU7G3OtqwwOsE+\nQzAxv8EEDo5Z3AYlj1FWtvpqML0p92nQv/jh1mRDMjmlDt3Jw1wZJYYLDHgM\nU5uW6qH0YuQyDHfVh74xVUPtS9SQVwasWG+5m9G3luqJS+Oa3ZJyEn7dNUlv\nefjqHRVMRxrTj1HZJEtQJDaTKEPhSw/33Ti1daLoXstAYMvuhVfylRnbdghR\nCv6F5vLJj5Tzvc7xNAQzJ9TS/L2uclWHpAvtblyRsZBOM1Qdp6mm4JJqSGUs\nZRzR/BHbdDx4jXEs9D4SpwFzCLV1YkiROYis4pCalfky6gykNmKv7nei3WpT\nfR0Lh8OzTLQy6a2B1IJdq+psN8o4LqFkvqMwh8zP/ZR35oY4cyPIpN8085FD\nv0On\r\n=EedQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e750293a62f3717db54b15b42c37ebf85bd2f689","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T04:13:29.508Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.137","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.91-renovate-internal-patch-e750293a62f3717db54b15b42c37ebf85bd2f689_1637640986205_0.9592044808837834","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.92-renovate-typescript-4-x-63112af6f3d3b0362aff51fab2cc60c4b62a3a3d":{"name":"@balena/jellyfish-sync","version":"6.1.92-renovate-typescript-4-x-63112af6f3d3b0362aff51fab2cc60c4b62a3a3d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.92-renovate-typescript-4-x-63112af6f3d3b0362aff51fab2cc60c4b62a3a3d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc12121fe6083b34f43524d22f8c1ea346becf6c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.92-renovate-typescript-4-x-63112af6f3d3b0362aff51fab2cc60c4b62a3a3d.tgz","fileCount":25,"integrity":"sha512-SvzokKYSbURpUw1DFgC7gHYxqVcEvKH+8gkvBU3qTmbKLeAcvLTEr9FzaSWBrvSqtWwhDZny+yj4t/jawTuDuQ==","signatures":[{"sig":"MEYCIQD+E+i7YLuV2250OkcLz/5g1iwMuDLnlhjR9UH6swaxHgIhAIBJwmBLhl6NZgACpzMSpNNND75qRyvlN7R+vwLQ+E3w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnGvjCRA9TVsSAnZWagAAPcUQAI9rcbi0ywKiGSrd/VSX\ne14Uc9SnbQJfPbXSRVjlef5Lq81puM4ZTgVa+SVq4bY1re/SRRVoC3mv8R2R\nQscbJw9iaKXiLYybHqoj8XC08gTuykr+XmuGEEuUwjPkBii9QDsUsRt/N/Y5\nSNACW9071Fa/fOu3XBqeGrUsQRBjOp/4drQ9vPUem/Q3ukhM2LukAADnRtBZ\n0eFmy0cxRXl2mdsEHHbZNpe3ewYkYWD2gXIgjb68aQpNvdxsyVR4NJIRJu5v\ndSC1XtOgkW7CywpmOvmjr8/CXTWAyyIg0Jj+2ikTcOn2WQ6DP/tNcAI5eWO6\nCrZOGk/UUeCOCZIoJiEDdf/nwr9Aab18vyKfQv3cvlwMt5gLTtLz8Y1cqTRV\nHA1CHr5+1tfWn1jEKjMDCk/gl2bKZ+KeLpvsN+cayTUet8+ShUz+usdP88P9\nviDRL/ql4HP9cuH7KphzuupvTBxeXAucdp0cONm9Ljx8dXu8hTk6RwfyPP8r\nzXN38ugj3aIHevgOE2lyxlJv93UVRx7ydORkzBZ9Wti97TF1C4PpXpUruVab\noWyNPLENcqNefUbUPleoP1lX/90apSlyy9B6DRARv1KiEGGwYXmW/r9cMXiM\nObf2dctChadILywg3QXgDn8EdEXB+JE22iW6CuNyI4hFA0jrz3OPLRT+qHFO\nJE3a\r\n=y+ah\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"63112af6f3d3b0362aff51fab2cc60c4b62a3a3d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T04:16:07.398Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.85","@balena/jellyfish-logger":"3.0.134","@balena/jellyfish-metrics":"^1.0.399"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.92-renovate-typescript-4-x-63112af6f3d3b0362aff51fab2cc60c4b62a3a3d_1637641187121_0.6060019019146894","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.92-renovate-internal-patch-ae89b7b7816de1461a1ed2d8404043b87b5f74e3":{"name":"@balena/jellyfish-sync","version":"6.1.92-renovate-internal-patch-ae89b7b7816de1461a1ed2d8404043b87b5f74e3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.92-renovate-internal-patch-ae89b7b7816de1461a1ed2d8404043b87b5f74e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"22f80562ca3ad21fbfaadc081a994ef0edaf9e9d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.92-renovate-internal-patch-ae89b7b7816de1461a1ed2d8404043b87b5f74e3.tgz","fileCount":25,"integrity":"sha512-bRUgjjwYADFYUFN5cjXCRMj2aII9kA07cBdIDYS6+eBvZYNKYnD0XKLI3p923hAjH0/3KoSTxHlmGVSt2C/oqg==","signatures":[{"sig":"MEYCIQDCaLEb05BetaOHr09Ysim0L5eaEAFdh9ZtwRwTwFDkTwIhAMUDczRaVKMLL52VGcv1uB3bKpcvfejzTakWXPQMTxL1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213138,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnKgSCRA9TVsSAnZWagAAv3wQAJohb3sTC6BOItr8hiVN\n5w7ZHWQj31846AVRQMPaJ8vT5jrK5NcyyKUhfzwY5fSgiSp5zk7InX3jFFEv\nOCxYNVfMEBbnkvLVeUeSwo//7cPDSnvOan8qwqrgXc5vIlQ8ZX6+BIrQk3nM\nG4LIbsHGCcGxgLINjyGW4GNr2df4Pdgbv22r/5EBt41Os7IiME97R+TBE6nn\nzau70MrJhKEfx4vckVf1+sy+AIh9jqf5y2hAFVxYjyL7GAAGlnS7iKR/om+n\nDt+wy8aUNdwoA81pJr6q0Cf1vtZzU7j1r0sZEM0RBWhY6Nib+PKwbfjlHnE7\n/DjSy93XkAGarQ5ICsa01ycm3nvrN0ZmfkARBJWn+ap8yB56pT5A/pdk5Fcw\nqk0GWeC/poF8v5Bdoxq8RQXwUtT6+hW/W7RDtIURxDp6Oxdw+GMsV2OrSTVh\nZiZp03ny1gsx2WZQ+AvOx3qVeF3OZoqbauFv//YFLfmHt5sR94DZX6NjDgSW\nnKKzbmf/LmCVmwgHKjW0z2DNK03jNjQNdpi0NJnwC1PsiNRLCpUR9fdoMNBi\nKFTYOyx3B3o8zZAcEziKGAUPjK/fNVvPoLEL/oHd2bpl14x6qYf+FeRgoXIb\nejO7l16O9WFAOVpXMJEkZDjoNhbtrbiszfCYzVClivjzRlQUd08MCQ6z8Eho\nWeHD\r\n=WhNZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ae89b7b7816de1461a1ed2d8404043b87b5f74e3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T08:33:31.501Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.137","@balena/jellyfish-metrics":"^1.0.401"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.92-renovate-internal-patch-ae89b7b7816de1461a1ed2d8404043b87b5f74e3_1637656594572_0.4175801550856968","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.92":{"name":"@balena/jellyfish-sync","version":"6.1.92","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.92","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"564a50d5525ace68cde47a34c4b4a918e8173f1f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.92.tgz","fileCount":25,"integrity":"sha512-f1yICeyRCVqQnrmcWzHeC9gGNYlr/2V2IsswGVKNMptsjRdAwTwUm1lE+VDbfjnT442pDPp5HCnORcgEjaOEAg==","signatures":[{"sig":"MEQCIEE1EhTjxQBkT/TTpFUyUhIBtAV0g7YOiQzkj7i5yTDOAiBJbsgzkS6h6Lr36ILz9pGz5gkd44bZwjmtgUO+uU26PA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213073,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnKkqCRA9TVsSAnZWagAARiIQAISdSXehOuFgmeokDhvM\n/BwA1HU6WZu+yADo1IVbAgRyEJCTXgD8BijMzFL+KftyeYXjvl0IqEuJXjFm\ngPaVA3wS48INjrupkdU8yx0mPe7oge8n729IruQm0QyR2XQcgUIQcTqBXwZO\nG+5NYxLnhYwu4kUCwixGqlying5jWP6G63sWAkGXvMWXKADQL3gjoHaOXt1l\nOODehwibuArDhRiUeluHXQkafNhUrp0FBUhj3w9KhDIEWkpQwFjFsVzAZ6AI\nJt4pSrdyh9l19RgC/m9BS06k3sn4yF5zalwoH7tREOnY9l9FkHIWcozCjIF7\nrF1qUw73ZJZs9KDlDj5D0Tk0xDDRWqRt4cEQTeyjUQH1fu+pACSV2a/snrs8\nMnozDLXfFHdHjMhddUZ7rMv4WAAhYglXbVD27joSEDHkXVWiSdDlGQA/SzJ4\n7tT/ShUFqpm04Xxc40dS/QNtEooWhK7O5epIH7lTUFmNB0NaIW18Q6hkIGSP\nYjYdkrGLLHNmwv4E6TNlTqYQxkM8jEhgNo1+1Wrdsjha3U6x/IDMPB30zjl2\nT95zqsAjtd+/X5uzR1SRAvpjCHCPJbe6bMS36i0vgnO59Cfcp2gRVnyXbg8L\nwSXNhra5CFMtVSNatshwMFRsb7DVEQ4TyxYptF1i+s3Fpi74QlCAxFx59wXz\nQ+Vn\r\n=vOSD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fc196e0052c1bff2b27b84567cb1c4222daa9d45","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T08:38:44.073Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.137","@balena/jellyfish-metrics":"^1.0.401"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.92_1637656873940_0.9360344874108366","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.92-renovate-typescript-4-x-a45112cf4dc499a4cb33e409b071c40f478e39ae":{"name":"@balena/jellyfish-sync","version":"6.1.92-renovate-typescript-4-x-a45112cf4dc499a4cb33e409b071c40f478e39ae","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.92-renovate-typescript-4-x-a45112cf4dc499a4cb33e409b071c40f478e39ae","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"37735514ee1159493cbd9a6599119437e79bd551","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.92-renovate-typescript-4-x-a45112cf4dc499a4cb33e409b071c40f478e39ae.tgz","fileCount":25,"integrity":"sha512-MjqydmI6KhyaxIZkpYy5Wx8y3oREV0rC2fJOk8qJCozeLbvH/JHiTIU4sf6x5LfBXwUDYLZPmsv7hUKTDOJgWg==","signatures":[{"sig":"MEYCIQCvebcJzIKWqw1SheM8ltvqKn+PKB7KZvHIKMO0gNBHVAIhAMA7xoFvI3+nL1qBejW15ekDaKRqWnq9HUbI4ozaMXUI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnKlwCRA9TVsSAnZWagAASXAQAJmbR2QHnwNYN/elz9ss\npRRgaQ5Ldl3uT5eoLPilH8rfmhl84z7XHBfTZURDex2vTDoJaBMNkdBQJtX9\n1B8dnO9eBOlQL+LqxfaiyfYKB08rF3TQG51QS/equgYWBdGZSHDl/Qyx4ATs\n7L7HDXSjrDJjxyF7p1f9QbLkRkTiM2zfDfc81W7tbXXbY3aTYkIPVaBgozeM\n9QKMZFhBU+Sxh8nrJzj3j1jqJoucWhMjzEVHxiXUp24fgy4PWQ1IxrkrEyK+\nMmjIQKWkU2n4kOaBt0QffRk1Of7kNCqDdUqTRCYVfiFFhzucYnT+RpSEkHhy\nAmbjvaItouvcGGPdksOgcrhk8YVoWqmcu+MTDa/VWFRyKZc+6p4aotk7kYS1\nCuYsAMO10enTFPdJaBxTTm8M2uaD5bFBbmxY5kfC45tpwixFwzgMCukBmTp8\nOU99SCtWLE9DwbwltN2SK7KCWnkhEdQUsjiTMVZyCkfBcFhRz41SxBxElHAU\n5EQ9XdjkxcBVMJU/zgQbY2DO7Pxixvg30fe437V5+msVpI28k9LjBzekYTsf\nGVjzOnzjmrM3MWOqPE3yEtFN4FY1sEBHA1YbNYZkGr7/xfQ3SxGr22Yd5Msl\nD7ujP3RfkwAdbFbYKMa8UzbL8cyhVy3nGQ0FjLY4BkUXK4BA9vXAz8x1m3Cq\n4RaV\r\n=adEZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a45112cf4dc499a4cb33e409b071c40f478e39ae","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T08:39:19.195Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.137","@balena/jellyfish-metrics":"^1.0.401"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.92-renovate-typescript-4-x-a45112cf4dc499a4cb33e409b071c40f478e39ae_1637656943867_0.08221684155373565","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.93-renovate-typescript-4-x-535c21d012fba73b58e3ce84f1fd79e0e83f27e2":{"name":"@balena/jellyfish-sync","version":"6.1.93-renovate-typescript-4-x-535c21d012fba73b58e3ce84f1fd79e0e83f27e2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.93-renovate-typescript-4-x-535c21d012fba73b58e3ce84f1fd79e0e83f27e2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e6e29d5e35a50cc4634ca456c23c4aad567de4cd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.93-renovate-typescript-4-x-535c21d012fba73b58e3ce84f1fd79e0e83f27e2.tgz","fileCount":25,"integrity":"sha512-zkKD04YL1jT1+9Cob2i8Z2E+hyo2zICPaBRx9zOU0R4yx6BJFagPKCkjz6bxOZalj4Ezmms5o/56WLXU1tZCIg==","signatures":[{"sig":"MEUCIDts/xvPkoc3d8TUFjGOIMMpHDlFgmMDe7NeZNEKhmo3AiEAg8ggqja/cIVrBilxFsKmOy2zrIqGlX7bK4HuSJDv158=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnKogCRA9TVsSAnZWagAAPKMQAJ9qdfBhm+kJNEDPMkxP\nBph+EKCpLb3DHRlOF3qrZEmYGvOV2tBAZUC8SerIJr8AITKQ/tJTnOY3/CPy\nDiuefNxmKukQkfi984sr3Phlel90i/w97klw1yIPd2uoiYDVwbZi0rPNpMuk\nJfVlIJ5OGucnDv9FFdsJpN09OUsH9JsT5VzA27HVmN4VSlKxihhqHhjwwBpw\nIkJL3/x5bocuTrrwUU8bA8ZoyMhj20dwI2AXEDsb9C5bKm2UDGvJRjORYanL\ngB+98+cfOBr1Sx4gzzH3VcJT6Pe3USU9YZItaZVD2TFTt4tbh8RbCQuHPdRX\nvCZ/i0T/jF5q8Z89k8xIjdy7WRkl7jD9h+RF46FqpByBNC4nsJ4lrpj7hRdM\niMYP8d7d2Ig+WJTiWaF4Hv7fpR8PARsS8j2l3TKd5oreFGHud4Q4aHE77ruw\nT9tJ9dq42KvTyvPzy3A7d7kVrZ1uu1zHvepxZjYzlnh35ChLRxEiHR655vsR\nWMWQdeaZUhUTJ/pNEHE5kZ/nzNSuAbFmHeuVNSKbDX+fHsWmwrnSxTyUaPQ9\nJrp5OmRtRNuNkxsy8KTsWCFz6MEGLo9N4o/yIxRBvK+JQmU7IgY0b6jMW5Mp\n2ewRgssFR+B9X1wc1RBlhi2NvTGOEEIDFlfLhnVTNdo3HZ9KNNZ1qMBQskI6\nOnCC\r\n=TPNb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"535c21d012fba73b58e3ce84f1fd79e0e83f27e2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-23T08:43:03.269Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.137","@balena/jellyfish-metrics":"^1.0.401"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.93-renovate-typescript-4-x-535c21d012fba73b58e3ce84f1fd79e0e83f27e2_1637657120074_0.8590121136033937","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.93-repo-sync-jellyfish-config-default-429c135d3023540acfe2eb989abf2b8b36e9297f":{"name":"@balena/jellyfish-sync","version":"6.1.93-repo-sync-jellyfish-config-default-429c135d3023540acfe2eb989abf2b8b36e9297f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.93-repo-sync-jellyfish-config-default-429c135d3023540acfe2eb989abf2b8b36e9297f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4f3a4e45a9d9eba8ff409f76a83ab135f703a587","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.93-repo-sync-jellyfish-config-default-429c135d3023540acfe2eb989abf2b8b36e9297f.tgz","fileCount":25,"integrity":"sha512-8KABzvHt3qNn5WWrc/b53WMs5/GZFHhayb9LocuGkyzZj1cGXlxhZu32EkXnJP5H5IPl0wYhLSaXnX91yXBRzA==","signatures":[{"sig":"MEYCIQDmi2Ox3At9FpPMHHKbuV0yWYWW+Ug7NVs43LKi6yxGNQIhAN9VfmxJ+COICwiaVhMOOuiwpYo7HYLmQdQ6d3+PDRF9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhna2aCRA9TVsSAnZWagAAqSoQAJjMJP5uOxvr5ApXrHFE\nHCmEYFYUx81sKRJ5+irozR6uIRFSodqjSomIQO2uNUpVFhgrrbjqBXtc/VVI\n7qu6LG54Yn7Qx3ZFsMlwgu97FUx+t2Hh+AzoJde0vunLa0AbKvv/fLz8q5me\nF570nP9BPT8Km7ag2A/b7Gb8ZscrQDtQ0NgCM3XFh45lJUWIjHcuNrCJMSfa\nFeX+uXByrMJVeCPiepmHtzl3RurhPcrbQvWwNyeJ50B9Xng83jAsfrwQpV7h\nm/BsrRUujfGqgjImLEDsaNMoX3X80NYjLzm9KbtkdWwrRu0WGtWmJhE2Gk3o\n95z4MizsIvnFreeptRKN2/wSQpQzf1WA5h605w/boEwnYu9w0Y2pVBLRxNKu\nb1FzmSkGfK/3ElIIXCxHfmye3fF4Pt2BP3IhPXZIz+kWRwk2DKIcbb5ARgkt\nT9hG05bUWaQmnSE4IB+kV0TOM+48BX3I5YfdLOoL3qX7JYSrXHn1WNjMNLpZ\nE08gZN66TCKvS3162ZiM3Z7SsVPpFY+N7E5uNCxfmVMBuhZ9KKKU4Y0+iji7\nLhRPiFZcr/GyOuQ3+u8IKzBxgPcDiwpT0PS1yVOZaP1IoV0Ld44yS9i4cDUB\nKdeAf7BHTXFJhPT+gglZlJVbFsssiHOmT8WxIFr+6SGoGzsFRqtXxb2W4IcB\nfUIo\r\n=ea1e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"429c135d3023540acfe2eb989abf2b8b36e9297f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T03:07:53.334Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.137","@balena/jellyfish-metrics":"^1.0.401"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.26","@balena/jellyfish-config":"^1.5.14"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.93-repo-sync-jellyfish-config-default-429c135d3023540acfe2eb989abf2b8b36e9297f_1637723546828_0.8952450564608723","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.93-renovate-internal-patch-673568b07e8f080edac44abdc727983d279b4dfc":{"name":"@balena/jellyfish-sync","version":"6.1.93-renovate-internal-patch-673568b07e8f080edac44abdc727983d279b4dfc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.93-renovate-internal-patch-673568b07e8f080edac44abdc727983d279b4dfc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b16dfb7d05293346b4b9867494407fc32a3d28b6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.93-renovate-internal-patch-673568b07e8f080edac44abdc727983d279b4dfc.tgz","fileCount":25,"integrity":"sha512-6gvoLJrfKXHHHmx7HKDSecW8nINrfxjoyMpPEkvfjy14Nq2hABfTra8kr/h9f5HjarTWuWCCWFtQWEJVcoys+A==","signatures":[{"sig":"MEUCIEWxFvHcqnDpyB09/hCE92yw1EXnmry+Tjk2mfmbWvCEAiEAotkiev5QQTkhU2TshUkk0ppp6J9wOn5ktit2BZys/70=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnbKoCRA9TVsSAnZWagAA3ekP/j72zh1HwXv21G1QBphE\nifvKYu4k7lBwjo0qYdpF2Db4Ku0aZvGXgyvi1mL7pIY6udPp5omEKwj8lmjX\nFWjSQ8sszP+TzNnNuVjjGtxN4w2jh92IyyplnmnDXWEVmNjnWpSKzAoAA3XF\nXM9TszWhfZUiCVQ0xSPY+iiveQ8j8DVjBjNxR6g2GxMR9S0xRqXYZ8Hjo3iT\nd+VWw85k/QBRrkxfpVgIhME5tnogdpnUFR1bs1DvpVXLQAR27kONeG1Ya5v6\n92KOK+Dflm5xEwmY69KIKXUTDopvDXD9ot4EUZKlPJX4AwdrnSjaSMsm5Xoy\n6ZWlRL1/zI9mGnqOIk/gGXSHDrCmCo7YdKoDT0CziqECwDMrJVRp2d3h59gq\nVONCN/BcGEyQXEz7y8wLrVPwBu+DfdNsmGtus0sJpv/tGeYbtGK/1F6PeTnM\nL8OZMCv9SAQ7KnnZwldkTZ0m2BVKCH2Fyr477LmWxN4LhZMRmJG5EJCcfy9X\nXM9QLdryXVDn67mfnJfkYlnrmo5/sXQDy2DVHlxLAkW4/t5VuFR+PuCbPHtf\nUjEMCJ88mUNKUCcmkQ5rkVnmd6CAGW9u44+hlYaqpuocO0d4GBLhhTck8+1V\nyjpSR/GQhLD/m12m7WgS90FJbEpREVjat+rli7cOrj0zeB2Q4NSjM6GmsV2O\nY3SG\r\n=5uLi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"673568b07e8f080edac44abdc727983d279b4dfc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T03:30:45.763Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.138","@balena/jellyfish-metrics":"^1.0.402"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.93-renovate-internal-patch-673568b07e8f080edac44abdc727983d279b4dfc_1637724840665_0.832410252380914","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.93-renovate-internal-patch-ff27109f4bba47db748cb733cc9941e2bef0ac44":{"name":"@balena/jellyfish-sync","version":"6.1.93-renovate-internal-patch-ff27109f4bba47db748cb733cc9941e2bef0ac44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.93-renovate-internal-patch-ff27109f4bba47db748cb733cc9941e2bef0ac44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"146e1a77516fb51a12178be33e5c046493f61eac","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.93-renovate-internal-patch-ff27109f4bba47db748cb733cc9941e2bef0ac44.tgz","fileCount":25,"integrity":"sha512-bxMU4PbpPwO/RXpb/1wpKCCiZ6sBAZ5/WVrOqa+Mnc6uPj2ShShhfmRiB+LXYYebJT/tc8FJS/r3g8ETmk81Cg==","signatures":[{"sig":"MEUCIQCIHbXsCoW4vBNhQ3pEebb4k1UtIyDWVj149Z+BaJyPLQIgRFFjeQQchoHc1C5GUp+2kVEjoR23Y7WVZHwH7+Daf/w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnbNiCRA9TVsSAnZWagAA5JMQAKPD9pM7J06eb4QgS+7B\nK0IBnXTLWz9kbsFrSPH7/KmSyPh8HzcYhzlBX3Z8G21d+i0Ct8xFcF6taFTe\niM2oLVx+ctoQuGkNIEAr2TRv3TS9HpdVyZi4AudPjqR9fr7bUydEJ8eNSAGI\n4G/AxAbCB9ToMws0JJrFAwgZ2xW3aJWLjrfs4QR91QqsxMwfZwK11PWYOUzF\nAJoFf8Q0OchCTjJptRkF2ADolN0E1uhBvVjfynwZOPUEBXufR8imD+GyQ4DC\nXfHNxpAZcToit2C0xiafwnRSF7JKekmp+/2dA9NsKqYHHPoHSZI6lhQWaqCA\nfx5MiGr63+awAtEEWn+KrSXCoiKhAgcuEaUnPFLrfKrwcRMhr8bvFjXAv1dY\nNQLHO6JVouydu3DhKQU4pHtt6A/C9QfsWMwzF4iBS5vyCVGnNsdSopdgZ6bO\nKys1dqqgTKTGxrLww8UQbeuFPghADWZ2nADzGkclmYWE1Pn9att58hTFSvRC\npJr10hhkMUpAhyegfJy+2MZOh/h4ugISl7swWtuIupKlIf38YVJxwEw9bpq7\nTrHP6jue4/f/7Dd1wjp0vB1FAbJw89e8bECS8Jq48fWL/8f4MAyQJxQdmDO0\nhuZ+NynVvWlvshHJnAr6iVlHbpdBEmXXMcCTfWyrJLW/E+YGaHQTc2o5+i++\nwxJH\r\n=VuIm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff27109f4bba47db748cb733cc9941e2bef0ac44","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T03:34:36.980Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.138","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.93-renovate-internal-patch-ff27109f4bba47db748cb733cc9941e2bef0ac44_1637725026467_0.6889807763491911","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.93-renovate-internal-patch-db857dd13324e9a05702621d569b79e5ecb7a396":{"name":"@balena/jellyfish-sync","version":"6.1.93-renovate-internal-patch-db857dd13324e9a05702621d569b79e5ecb7a396","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.93-renovate-internal-patch-db857dd13324e9a05702621d569b79e5ecb7a396","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"44fea48e9bfd8da4b503cffeb82cf53fbedd0738","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.93-renovate-internal-patch-db857dd13324e9a05702621d569b79e5ecb7a396.tgz","fileCount":25,"integrity":"sha512-wHuEAETiewj4zQyQgpOwPHm77FvG4CsUlH28mTTnB/BmPsE1lHwS0QRM9zLkjfh2/v/3PJe60dzJz8dpVVjC4g==","signatures":[{"sig":"MEUCIQCmb5+ZQejxU0lE5rMDu6i2Qi2oEJlqxFN1lpBgOKBRGAIgC2lKpBd77Db4tWxJmL4Td85kneAxcoCYCjqJvvxljgc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnbQxCRA9TVsSAnZWagAAYk0P/i25fyJJOBFTUvwrZbr2\nzo7zGfoUAVMup6qrh6ZHOEqgUY5gXljk7TNe0JxYrV4fwpz2lYhpn55LsWgf\njH6j9BRXGIQB8PG+VA2R9J7+zqhXpsRstveA1eNHpjKkbuL3pNUS4XnyTDMj\nOm9XFnYFqaPMej5itcnepOGnsos01oR211sIzAkzjuvE9N7ARLc02w/0TK+W\nqjXEgEc/PI4ZCZqNYGjxAHizuwKENV8QzVzAIgBNS7SQ9ZIUKBFoj+jIyqD/\nzhDU+jFnxH2VhmTO3L630VtiFa3OeBe/69njayWBjALsZ5+IYDowWZMe9Jpf\nTHhL3/Z0t8ewkCFDraJqMc9enAkd/rJEo4yPevNCPq5JCb2cjS3buY+uwXfp\n5Wy8n/z0Np+I2Cyv9C1SdlfL2S8tb6TBKgnp+fb5Sp7igrTOtnaDbbRBHjMi\nV+lQ8yj+q7i64L8rnEMYlou9QTYetgvETKduhoUYcSLMmoxx0rqCXjpXvVJr\nYYOoQSrs3KErYZLWmDIHcomEHcbo8Y/ZMbD/7vj76LWy6PNUDX4CvwuRBfCn\njZex3Rqf9Yr2S/LXTzRSMZFLppiYiat1O7vUZySXbAS7RtQ8NaWpTaLM70Ih\n6H/jd7Qbkj1M/YQBclUGWJOswgv3WejroxG4QiJlAv22Giaso/4W4pJb8PZo\nHROp\r\n=tLaq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"db857dd13324e9a05702621d569b79e5ecb7a396","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T03:37:22.469Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.93-renovate-internal-patch-db857dd13324e9a05702621d569b79e5ecb7a396_1637725233214_0.12276434218207655","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.93":{"name":"@balena/jellyfish-sync","version":"6.1.93","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.93","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"60ac2c27fd20c2eab520fc342eff7ff01e35168a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.93.tgz","fileCount":25,"integrity":"sha512-puIsveUJFQQVhEANA0QqHec+w+Su1RRlCJDjvxaws/LF6Pp8JBSJbFfadyAlMMgueULHbxaozcHcviE8//1jrQ==","signatures":[{"sig":"MEYCIQCG97WDpu9NsyLNmdXrbDt+oCjR79khm2IM5y1Z4P43bwIhANT/R8WIfO20T085BxSWx8SKnaOm9cVIvWkjFCNFJYBG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnbUkCRA9TVsSAnZWagAAQ0MP/i2hV6dMO2+rPMtCNBja\njGEtlfCHL/tb4OBPLPWxUxgGGVm1lxAOry0jzcOmsB/8ii8hhlOCX3KsGQQ4\nFLxex9rFYzdNcWtA32045LaBmHt7wdaRYMo2KXOEm/+OZw27kbLDwoSzOeUK\nfqkpYcWTqbCr07gALhG9McCJjq9BhPYl8AEvn/pNJ2Oaw6utMcFBLB1mTWfI\nml33j19Tw0/t0eKUaLU8jwRoLDBWjiRofTBTkQBNTcLypSTabNGGezqUm4On\nzZzttiqlucF1FuK2P4O/olnthMRhWy3Z4c18LWzDvnB1wd9AHjjrh09Qw5Rp\nXaZbhNLHWt7zMC8RucO09seJN0FLqJSGanz3nHuI7fpUbk1OYBk8oeO4Y/M5\nAMC5a4AQCT5BseMmB3QOGo7vWTs1u/Jlax2WkLmotJ8Ui0l0MA/GjOP87vIB\nWIiWmFwkXeIhOEkxHNUMNsE1RHiSECwQ6Ke635QKGONFc8RAyNXEQcPJLuYt\nV1LV1p9dUBCC4HHdwzOZ1usOPYALVODc2/hWJPemMEuvdrxKZENN4SXcVmwt\nX/WuGWvuE4VwTIByQCN4bA6HO7SCzhrF7cHufmy2KfO1Uz4qvSeDt7l7f934\nXZLXoGVVCggTKq++R2WQws+0EipvabLIzNSU0t56GO9JCKqeYLqkPxCgpqbx\nEWAC\r\n=5sDS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bc11c8b5e6fa033e501b9ba2768d443e60f63f39","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T03:42:46.285Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.93_1637725476419_0.856608186712541","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.94-renovate-typescript-4-x-449e0fd0f1132531ba9178a62b057e5af62b39bc":{"name":"@balena/jellyfish-sync","version":"6.1.94-renovate-typescript-4-x-449e0fd0f1132531ba9178a62b057e5af62b39bc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.94-renovate-typescript-4-x-449e0fd0f1132531ba9178a62b057e5af62b39bc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2fa70df242688e6230ef314f1b67ad2b55902144","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.94-renovate-typescript-4-x-449e0fd0f1132531ba9178a62b057e5af62b39bc.tgz","fileCount":25,"integrity":"sha512-CLdup4iS64rhcZqnL4k5mRIUiSxD7dqSyEMN4BCgXmIHXT4mGcO8DlLQwNrsVagEZe/yBwJGmKa7bwdbapCKaA==","signatures":[{"sig":"MEUCIQCD7H4D2F3REDD1Hj7ghfzcWQoPoJt2OGgPtNXkPYPsawIgdLbFqddwzRTkTdew2eoZEwyAOLx6x+7GiiHyovPz0Z4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnbWICRA9TVsSAnZWagAAF+QQAJPUvkmC2Ain5cYH9TUn\ndZM3mqRaDB5dd23Me98FJjeHGIyjcZGzX6+eyxy+yM3qp0g4sr2izeT0CIvt\nqLJtdIwV1TRb6FkTB53Wz/XceaHvq7zMw2uXGozRudvvdaXlQUyGWu3KZABO\nSeGEDIMWgLClRnQsu6XHQ8lKNQdiAyRO8IKsObDEGbXClXGwUTnlZpaTc4Pd\n9c/DQxFDOBtJuj2nSh1ffRTyi4zgdQW1xtL8YK+EMxpbF0lD1iAkJyV7RlSq\nptkU1MP6r74xdbPWuJUVF1Iyc41rwHOgfj6j4LAgqeYd7lRw0Ukv7g+Oze2d\nPzI52OglFiFsSG90j5++rczLNjCjrqO5MuWM67Aeg6RLPbijHaHjhQvKSQVN\nH2LwCaNOleRvNt9N1rHBKXuKabhm5cpjsAgGK7Td7nf375m8LvAMKzabUiFY\nkAyyy3jgsIi1Eq0pxd4ibZMoOSkjwoNXBihJ7sA2VdFroqo+YkfLMrcm0SSN\n1gHc9igUlXDNCXKrFMFqUhuQu9C2qW6IxlI9jFTWTlAVIjsn34JMkWA1ahiW\n6YYvXVFDN0lol/+csb7ECqkVVtjYaa5UUx5ucoiZMPyKKQ5i9lp2SVeUbjDJ\n4D8/KNp7r87NumWuMwmqMZPXbA+OYBcxfBSqKmQ7NjQVH/Nwx5tTKBrt0J32\nFiZC\r\n=8d59\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"449e0fd0f1132531ba9178a62b057e5af62b39bc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T03:44:06.705Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.87","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.94-renovate-typescript-4-x-449e0fd0f1132531ba9178a62b057e5af62b39bc_1637725576835_0.1998089273496011","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.94-renovate-internal-patch-71af0e99b4819a5af8c20841d1e7d63c3e5d7082":{"name":"@balena/jellyfish-sync","version":"6.1.94-renovate-internal-patch-71af0e99b4819a5af8c20841d1e7d63c3e5d7082","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.94-renovate-internal-patch-71af0e99b4819a5af8c20841d1e7d63c3e5d7082","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"92a0f981df01c828755ca1a3bde2ae7613c896fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.94-renovate-internal-patch-71af0e99b4819a5af8c20841d1e7d63c3e5d7082.tgz","fileCount":25,"integrity":"sha512-vt8AV9HvaJBwU/aQ6j53++YTTo9AOm5MMkvs6p4Ny3lEKL8XPuqz+VXw95gp+uBOwz81ImBrjUa9SLwWPbqZgg==","signatures":[{"sig":"MEQCIAOJcKDGKKIvKS5n76kP9986gfGKZrzqhSqcOrQKuZBeAiAChHKTms2fpokyvzhOjJ+5aJRC8S5hCrkwzo5r9LB9Qg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhncsqCRA9TVsSAnZWagAAITAQAIrimkAyqXLB/jf5a95K\ng2SjAv6eoxt4V4RpjML8Rny4hs1ooqLPKFMDn5iyO/KL6Nciqc5XyKr24djX\nIgaQ+pwcQqtZsSYZj/PAEmSLLBqMCVTwYl1TRDx+Ln6Dt6blvdxAEcYoP7qO\njDfQhuqqN00of7QRanMF7XIlGulJ006N2YeE0bSsMp305v0aU3K+YvF6ihSi\nv4CGRWaCWukLZhw4rXnfqpLZZxkcglrVYZk9aBTjlWdjbmjnPvhhaIBdKhYd\namO3Ub4TRSdLDOuv4touxH/OKM/X202e3sufGmoeNAkuyjVXBjN6oeYmHfYy\nEsZVkH0lrcH2Vl51b7Wrm/3hJPeYANbIiQ5cJ2SHdGh7iFycPje6MKq1rv67\n30N8aOxNGFOiRR5Bj0zmo55jww6qDyccVwaqz+s4BjqblY1b/0+9CxoIZq8Z\nW5fhUSMPj6Qfilsm2bZiJQm6GrBevJZCjHf/Buc5mBs6uB7S4DH64zaSikaD\nxeWdxr//pwlmQD8w9aMjPwUJwOIzj1V8QHMvY+s/QAwBL6V9NEjK4xKjufPD\ncM1dnAvgE2hnihsOG+HAqamAkRgFgjp7ZKWwoNICEVW/Py9fE+7+9lnKTAL0\nyIREpdo2MmdkjJQledvbv/xx7uM4bEQ0yHLQmEe/okCrhvzdnDPVplpvGm+Q\nWX7Q\r\n=JEyw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"71af0e99b4819a5af8c20841d1e7d63c3e5d7082","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T05:15:18.669Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.88","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.94-renovate-internal-patch-71af0e99b4819a5af8c20841d1e7d63c3e5d7082_1637731114393_0.35355373104598553","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.94":{"name":"@balena/jellyfish-sync","version":"6.1.94","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.94","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"df9ec76041cc0fe0d8f3ffbaac2163cc3f63b95d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.94.tgz","fileCount":25,"integrity":"sha512-2LvfwS7QZf0VEgmLVb44vNL2/HGZv7p2t4vdyWsLsxrUvb+GN0yuahusaSG5idrMDIBmeQcDZb+rskY1Tdeo1Q==","signatures":[{"sig":"MEUCIF/ewaLk0wLZH6Qz4N+haponuFMvibArJ2xdLKW88Qz0AiEAiQ0to5rzrdlosloPpu31aZ2q8KCflez6QwNCMq59ZP4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhncvqCRA9TVsSAnZWagAAEl0QAI7dQ7PcpkK1bFFHDqN9\n+xLPwjsA9t5IoWFOB0dFSALV4fNafCT4gDtyBylcFzrZVZHQ869tJPWoFF5f\n3dLfqWyAAVKUV78AgHldpMyh6Gp4SsMX6SrkMpV9bVdaIEyOGygVEjK0Suzx\n3Ph4uyYp2mZ2aYmsljf9DfHcv8CdrbRbp9W8NAEmx5V0DAUdOgxoCBiiJMaX\nm4hfUABhY/jP2X3F6iXPIsydpDb6SSqEZ9rB3+IS7CHgGD7qz5rrz68mfUFf\n0gnEQkGX5g/rCfYbbxNvKQkUuHeEhGp+UpQDRwR01RmjI0Tyowpnph8HOXMS\nzKGN66PByTTfDxzndt+enjougwWSlXJmiK63yxdtnts/lXEfbzTrUOentwpL\nDQzurMkZBgON1UZ44ybt7zE9H17wf0aGkz6MgWzK00feJkNvi+8Y2zZDgoYh\nXeVaI6mkXYPKLpqinhsELwuLAejxTpVh7PfHQY6wE1OwVOVYpkKBonEwjjI9\nXvZrxgUhywfRZDh4iJc/KbbU+NUSICa7Efk3nrCAN9XHjjcLWJ+WOLOdNKiz\ny83+WNBOT+8/o6UwLLHM/uW3/Yjcz4gpqTYU6Nd8BNxoc1RQO7HYV81jVId0\nZej/lHrur0W155n2jyqrWpMaKJHFEQmUcncB0B3y2f4YhWX47bgVp608pEr0\nHmV2\r\n=By+i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b32298852aab32604a4e8641af5431cebd10ca68","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T05:19:44.921Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.88","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.94_1637731305965_0.6971614964785593","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.95-renovate-typescript-4-x-88e94f9458ea193bca07e0aaa5225751c4cb62f3":{"name":"@balena/jellyfish-sync","version":"6.1.95-renovate-typescript-4-x-88e94f9458ea193bca07e0aaa5225751c4cb62f3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.95-renovate-typescript-4-x-88e94f9458ea193bca07e0aaa5225751c4cb62f3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"88af349f1becec31b317e0af8f2d3245ba94d929","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.95-renovate-typescript-4-x-88e94f9458ea193bca07e0aaa5225751c4cb62f3.tgz","fileCount":25,"integrity":"sha512-FGjEQFzw2Rj+PbOMhJtrsspeOO4q5QH5ymk/7RnThGiSEPFdvq3wIwn5Af4guEISN0QMjNUqG1iuw7U9gohw7w==","signatures":[{"sig":"MEUCIBk4Byd1ZZ0Kz536RL3hUs/qIHANVBeKpR1dIOnOb7+jAiEA7NQ9y/dcOUhdl4pRPh4YakhYRWRAHvYJqLjm5bdUB0I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213400,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhncyiCRA9TVsSAnZWagAAuc0P+wdzQF0HXX+GaoExqB6J\nTT5SYGXMVmuqqF7gioc5KdXdtcqBHdx4Nly8Tl5Y9Pju1hdmBZ80dknpNhnS\nllhb/F2xMiABBYG6kTuCILVA0ax7jjoZ0DyrMT8FJhv6szl6hfz2aeaxsOQF\nJfMrqqK2+1QK1EzDG6CzKePPqagWqloOZq/Um3CQ+3zT6uKP+Q0btUdtzzxm\n5Aou8A9os7n4mHsYtso/+HEqKi1XFaQd5QNc2vEx/sec3fxk9fWnWBtpPzoL\nV9wExBcFYL9G88Jk71o2dPNtL3f21CzhHMFRed5pkeD9GQqfNqjwMZlhXIBJ\nthLkFSJfTqi5zZBwoXaHoBe/wgkKxh2KlP7aTKwskNBfnScDL85ZQqKyXLuw\nCnw+l/Te+lnGN3YFsuPVPkmqqoeDu1XI7tmLXCWbJ7hwSlzUd5wsysOzuF4C\nzd7vmo94eRR1eRcGmL/JedxWjognx/FPHkfVx4muSHXvDtOzqVIokvgG0o27\nKcVNfq59YmQM/r1J67boS+z3Go90AHMI18yGYbBWzMhTVsy738S+0SRDcX18\nNAZGnNZLf+ylDwMlISc5zVbzRvFngq7IwF8ssRqQsDshcA/n6s9bK+rObzBm\njXcG06tT6q5iDYJJT0qaqAZtrMYW6sRKzJb6zdO/YFq1o81WtVpXdxgRRd1V\nypdq\r\n=5jxf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"88e94f9458ea193bca07e0aaa5225751c4cb62f3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T05:21:50.583Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.88","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.95-renovate-typescript-4-x-88e94f9458ea193bca07e0aaa5225751c4cb62f3_1637731490393_0.6499528307861919","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.95-repo-sync-jellyfish-config-default-1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6":{"name":"@balena/jellyfish-sync","version":"6.1.95-repo-sync-jellyfish-config-default-1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.95-repo-sync-jellyfish-config-default-1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"36b983d81ccc480ac4429296a6faf7eea0493ecf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.95-repo-sync-jellyfish-config-default-1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6.tgz","fileCount":25,"integrity":"sha512-qnGM3pU52HmSxsGDH5u5gpgJAdR6MGM1yhNKk0m8yLcylJ4MzebccWg0uYh9TUaWOdnilndBNADSgzkjo36EHA==","signatures":[{"sig":"MEUCIEEar4x336cGhHq4Ouo3IvdXo1BS4hGrZJryIqjEBsmxAiEAk336sekHZMKDYD9duYjJjommSACLbTB+AUDUbPvKcjA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213415,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhndToCRA9TVsSAnZWagAAtbcP/3nq7tdgNdflM1D60vQw\nW22W+2S+iDFWyJaNVzXzbtkNn8nqz1aKcPAwdhnXNehm/xxPrUrvN4GXR82y\npR6jiu/vLgL6X8iiIoQUO9KHdzc/3faNGJ+jML57BLE8fY0HoJHbyj2Bgk52\nVXDsirZdqfBVe2ptt/L95tGCYZTOmvU2R7y9nxoFyA+YJQ7jYmpwAbVt6WYM\nUUqX2l5iLqPema4ElgybPB/3lMiacBgYbHW/uiQfOWptHrf4itSHYtm80Otr\n7vK3oh9pfG2ATxlHeqBVTaKnzoVqN0ne7w7MZ4AXU8LjjTUt+yOIovynMbTU\nR+PvnD7GXVxwnzb8m6if6dQnXi7LB1T+lOkRpdm+zjMCvjvwhNlYSydFJDnA\n7z9vCC2lBCOJ7Rw3DLjKecpi5++K4hfqYATBQHaIbLf88EKc/ABSJ6bhT9Ty\n/zr2GoGuZPTaeBItN9jqTpA6mMF57XsyQqL462rGcMWaiqZ8pH62mpMvLQoX\nOTmWWrknz+jYvriG4f4kWDV8u84FbGeuRy7C+VqT2cEVL58ZZRqQ23nzc3yh\nD0VtAc36l7qPUC8NWqnISXjGeh4t25A7CwIAe9+Fvlpwdj1YT8RKiW6qeFCs\nTHlNCJCWJ72slpk5HyrAumqNsjZJxD7CaHqtVgpGez0fs5Mqd7V3gGIQ/KzE\njBCM\r\n=N3D8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T05:57:07.018Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.88","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.95-repo-sync-jellyfish-config-default-1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6_1637733608404_0.6067264646276038","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.95":{"name":"@balena/jellyfish-sync","version":"6.1.95","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.95","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d346b633790e954c92b439a050af03b17ef1ed54","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.95.tgz","fileCount":25,"integrity":"sha512-elnXxhD3C8/GCgKtOwJvrDxTJHfGWDKi7jAPVyfyZXNlE20zAvo878wuqSHkYZeau3+/h+qnBrkqgc1KtrUHMg==","signatures":[{"sig":"MEQCIDIlfPGmJSagjqztpokxF+KYeA/AWDxzxxqEAfjAsz98AiBmDnEd6LRAQGVBvKUPOe5Bvf9woQMDUhseF12iDuMD8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213339,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhndXVCRA9TVsSAnZWagAA9ucQAJAR8mIl4KQ4xd4UGWTC\nwKpzbTBN8XlCbaelY1Z1HJmY49PCVVGMS2GWexs9mBUFcJEZyJOz9zKQc6M+\nEmjLuAhbFYFGvMUuAucMVHY3HM5KAA5L+q1eKpCqWmMztv9BGqfvtnbBSuaw\nwc4dEVXm1kPLnI6KOPVGwpyZWTHEP3z8yyFnVByjBYX3g1cwR71UtTRy/zPf\nI91MNAm7emrdy1fVxfrpiEIRxIK6bQD0Hi3RR+QdaMrNSrb3jOJApJ/Y3iKb\n8aDpa8VtM6AQ7+mfT5jLJfBI8m9kocYQj+4+PwTIcFgklIh6oR51OT8ufc2o\njNFjPXsEywHj6bnPa23JScwQLMEkyCI78EsalGB/sdZQholMJVBJIWtdPUui\nRrn4tYBsG+OexfE+s2LERp9++e14TEnjPH5iI/U4b94afpYeFrFrSQGSZlCn\nCl4vEyjHjCDMrwU3R0yYRmsdBMIM4AcUwk3QA/eYMCisMklrkTBWlRIUXkmq\nFVjvq6RtVnEvBRBMe6TmcCTsjwxWMRiGlMcs1fu4kthsBtBt6piH4JjIClfA\n3lytpt5htTw3U7YRY7kIXArnGlo7+bFYUv+efKIxZCPcwb4Fw9P5f4bv9+Ai\nUZmFO5S/4ucaoc3s+KIOuGNMU19DFkxtB6ESnO48jvvyczPUFIRHcyhbJBbS\nlmU4\r\n=VZD6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"12bb1b65d8a3ad7aba0b55a86866845e5d862d55","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T06:01:48.521Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.88","@balena/jellyfish-logger":"3.0.139","@balena/jellyfish-metrics":"^1.0.403"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.95_1637733845505_0.007257590064843056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.96-renovate-internal-patch-3351964e1f5ac9a0e336bc411796ed3c722b5734":{"name":"@balena/jellyfish-sync","version":"6.1.96-renovate-internal-patch-3351964e1f5ac9a0e336bc411796ed3c722b5734","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.96-renovate-internal-patch-3351964e1f5ac9a0e336bc411796ed3c722b5734","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0abd5d0cc2cb04ed07a4b5138a7b9541be0d3cc7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.96-renovate-internal-patch-3351964e1f5ac9a0e336bc411796ed3c722b5734.tgz","fileCount":25,"integrity":"sha512-88N00hn4PYxDYQ1bGUHazMpoo3p/Cg0rTd0+gDTmTofXuEG+vDkiGq0C6xKusCZ1PZLkOQx8MFxWUpvSel210w==","signatures":[{"sig":"MEUCIQD/hAAyHajFOYKCG/m62wDUm7wWJ7RZD19EfHqFSDsc5QIgFMDotG21dZwlIwAy49fYnSguvgYIFq212bUEahFl36o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213475,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnddNCRA9TVsSAnZWagAAdK0P/1b2mVvhuLetylbB7bNA\npljHbaBZkRN8J4xpvbt6Ku4caFelLB/aeCil4pNo439wReo6lLNKaVy1ApnX\n19UDPFVV2/D/hcRwvyQe1XgskZK2G/zF8+XqYmp2OgKtIUJcXJg/xe9PifzK\nz7Yp5NWEqQF8TNRI4q8r+BoXeNDh+XoXxpHnnNgevliIwyoIYVVUEzAV2gOl\nOnyT6xduSS/PuRJEd99KQRxwhn+gPSBJnQeyh9lDeoDz9/uNr2qy9/FixwgA\n2DDqMsz9GRBUBHXPwSEUHHzKo3GwSoNXzbEjTJjgKEpzvhOThLvNOxU+29Vy\nSa363PHaWrd5q5OqfMvQjr3wm8X+SuiTx1qmkrE80lp7dsGBcOKlbzLrUT9Q\nHy3PWiuaJHgTvdGF7xQiTlefDlw3PhlUQfNDiVrcZY0WyTGXU7vEF+UOvTWS\nNBBJte7Xi/3AtChbIzlQyFpR3vUWMjHSmDu73lP3RHo2FVyM/NC649hDEC9i\n9mhw0zN2A5TkkZ33EWknTrAu/qXYUDKwznoxXF3gbhMXgSK5C6p6VOa9j1k/\n9iBA+OKvVNJQbklpW3hPwpPhev9chNHp4NHctO1sh1+4tCnREQl4eKO3YEsY\n7YqnfxM51XKmLYeAchoUeoUYKZEHDvIJyAgMTxkYbBXh4JaOYC/9AV0KUbZ7\nxKxd\r\n=9Dz1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3351964e1f5ac9a0e336bc411796ed3c722b5734","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T06:06:38.183Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.89","@balena/jellyfish-logger":"3.0.140","@balena/jellyfish-metrics":"^1.0.404"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.96-renovate-internal-patch-3351964e1f5ac9a0e336bc411796ed3c722b5734_1637734221371_0.43885223663604855","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.96":{"name":"@balena/jellyfish-sync","version":"6.1.96","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.96","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1a9816441276e8025616bab5ed3a8d8fac33a901","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.96.tgz","fileCount":25,"integrity":"sha512-AR7klPuYBw3SWxODXVxCeN9jAGLJcrvPrK+3Bp/tJDTFu/p+eUDMUee8K9IJDeZ8Ob3EhJ28/TadlcvZlHhFNQ==","signatures":[{"sig":"MEQCIDwKUX9r6gKSJmfdBRtEfrYKguXIJV93w+SPUmWORJIXAiAEDP326lDhKUkkoL1bn3j0zZYJ1fRZTCrYrpz1zGnz1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhndhECRA9TVsSAnZWagAAh7UP/iMmm9NhxJV67fceBMJ1\nyh48tPZHPRI5NaXeYgNsoen/GoZRHBVSvhc/h5WpOdPSSxuy9mYKlYXmBGZ0\nAU0jqJP+cozDl2WNFLkVYERwgjY02mZ5OZLBhj+oZLHh0KEE+g085/OIRNqj\nSaztLv5xbTCBTr8XPZmWGh0mUb8KI9N79RqIXipl8peZv3fh5blHcxf3wie7\nuArRwHmK7TfCuOc3+5IEtueQdv/1VqzfpnsYJ8zxzcXuimDpDVoI/kcEHg+o\n74kH566jGIMKs3zbiqqueNui2kxxFOrpkYqASxeWCOVW+7HZsjPrF1I4WeSK\n/qMIJLZ7Z/ENE8YPqsuZDnzCvgakiuNkThkOW0BLRbF0K+rFqftVHGVjvmuB\nsH5yTgfF0cThBVZejXpqf3RRT1UXkbILMS/Ql1PGyxBEyv5ATTHGxtCkwvS5\nRQViPwGg+Fc9d2YVehpiOSLLhKbHNK8yP4n+Ke4ra3t5fJNLq1lMX1fE6o1B\noAEbE1f5iHsaIveyQL7hPv3V6zyF40iTm+p/TDMc16y87g/39XJCY7iwNyN6\nlfXa/ATwEUtdxXbAxyJ6tYQZi+KCMuBnj+Lf7VTCcikY34RnobscNkPRxqrh\n3i38zGfwSU5akCrRAX6Krpg0MCYBdPKcY5vyHuqwOIMdD6BbFLlG8fjR7QZK\nzjpr\r\n=IM/o\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d49e3dbe17d831134a1ded4cd5699e8d56a5c712","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T06:11:40.037Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.89","@balena/jellyfish-logger":"3.0.140","@balena/jellyfish-metrics":"^1.0.404"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.96_1637734468517_0.45096397104463604","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.97-renovate-typescript-4-x-5b9ef079be941d5c67f98d512952411528a3999c":{"name":"@balena/jellyfish-sync","version":"6.1.97-renovate-typescript-4-x-5b9ef079be941d5c67f98d512952411528a3999c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.97-renovate-typescript-4-x-5b9ef079be941d5c67f98d512952411528a3999c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f537fc045af958629feb99953c00b9c1b82b955e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.97-renovate-typescript-4-x-5b9ef079be941d5c67f98d512952411528a3999c.tgz","fileCount":25,"integrity":"sha512-geyMBZH+gR+Y8zOFSoxjZID1aY9tlbAaz993fjR/xgnR7GuVs33EYeTNgKoP+qLIm839gnQO/NRFrJOw1LvY7A==","signatures":[{"sig":"MEYCIQCwFtrNfrVUuAiKwd9jw2G7YHhfZ38mTBjbEfiEcVZJgwIhAIyYP6hK0UVNVHIwzTyR4KU9TsXcyNjLtrwalsAED/Dg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213563,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhndk6CRA9TVsSAnZWagAAte0P/j3CddVU09G5JwvsyHGY\n1YSmZ6qGV4SIxPhLYja/FD+Wjh4tLCK2mVASCBOh9pFk4oev7mja/pcBiKZb\n5k1rtvMdSXfZdabvV7dufp+9TFYjjXZbI9aavFhrZ4R4I4KDqBtNjxXIv23x\n5NTNwvNnT7FWDksdQdBOmPAxtwefsFIx3te7hMX6WDgu69Ti8TsCFpKWL3IX\n3D7TTxmr5Dphnhp2MqcALqzDZaox9Aft5KCa0CHnYEOET3b0ZQ5i99/Iyng0\no512oC5me12sQ2Sapu6UGL4ki7AEe/A6TUMNCNlifrmGP5N7INvIdZGoMfWu\nMfRaiGKaGwpujunMaGG9QoUykSjDNoH03V10DjsP0i1HLboiTWG71pEAyMim\nv/OVYipciDkSKL9JNl9eZB2fXANp46XTDAXgtCWXjCRPrwEtrB40RhSp03nZ\nGbZoqHDj/basXmbj/rEdskZ0bBMR79/wIvmhRqINouEGL5x0E5jtdtIJHLNg\n+9olRS95Atn5MxikesRWPM6FxyTbYHr5ngHSfXvL5QU8sIWqeogtMShhpVBu\nFRDjdXvPi4CzzVKajPsY7+UidZREZoCyGtXidDYUqGIZgqVIb2lrjMVc3F9R\nL+fHdvvdhpEUjsFgvYXzTcChb6805GL57dWoPASwlBZVhqpPgJH4uSazDKfA\nZc8z\r\n=ZpVY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5b9ef079be941d5c67f98d512952411528a3999c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T06:15:08.548Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.89","@balena/jellyfish-logger":"3.0.140","@balena/jellyfish-metrics":"^1.0.404"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.28","@balena/jellyfish-config":"^1.5.15"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.97-renovate-typescript-4-x-5b9ef079be941d5c67f98d512952411528a3999c_1637734714517_0.10200630219280193","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.97-renovate-internal-patch-9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49":{"name":"@balena/jellyfish-sync","version":"6.1.97-renovate-internal-patch-9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.97-renovate-internal-patch-9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1e0211c4ea15fd55d71eeba617d2bfe1a3bec4d6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.97-renovate-internal-patch-9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49.tgz","fileCount":25,"integrity":"sha512-2+HAvPBRuXYP1XDItZiPHEo6Qtu5Cn8CVgEHetQGZrshIe4N1ltWB6abAH58k0h8eIWsHElsWPLT1zCOineGCg==","signatures":[{"sig":"MEQCIGu//P81xrMlznpXtPOmhX8RdXi/VgICFw1wALmqO7aLAiBxjwy8ZuIIII6Gn3afdblnxurERkTelwE4W+NAhyykgQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhniMZCRA9TVsSAnZWagAACS0P/RYiCYxv+J+WR4EJIhSz\niwWkN5ncex/N5ZQ4OPH8td2cS9n+n+br8HTRFwLgzmAmZCj8nfFwjV3INjCj\nfqZVvDJasvQ8LfIZF/N2A9eKieNhKH1zwL8JEd++s0/ghPXsyBkxgQnbtlK1\n2SXiooTX1eBpNOIo+YZdOUxJ2ZJkTwEFuFieZMDd8jkcNm8ZzFmIgM7jYblW\n7QVriCHv1cd45JiqNFYUd629oI4gO5+cdh3xnCRdnfgr/PiuQ5r8AHfwuHYl\nc2FuQB9xId2v6ybZJnuiyjE57lGNhKTxvLXzcei9O0hf3x7TfFEKGSWgkRDL\naVzbLpH39spSz9nI3PAgfc3Dps005et5ridhHrxKAW0Rux4d75zxu3TTU0Bs\nuvTaB5clnZfbdLXo4/iMFPMo43QI8Hj5z22O6GnXAKMM3tKRpAFdo5+C9PvU\nDkFuuh5em8ZxGzPKL7jW8x4OA0THAy+8yc2+5M3IdIHzVDD+czUy0STCd9it\ncMrsZgdlBOZh245SmAviYfFCSi/jKWlccXaX0hRXIZFXBCe4DXgnh7Gnng2j\ni/5su7CtabnMeKZvyIBiXjlD5OgYEsG958msQOVT9lp91M9+PzT4HnWGkdhZ\nfo04XPfHyPVixW+QnT8uM/auvXhz9Ni/Fu8MI+6yqRvZFEgpuBoRGC4rBj+8\nX4Ru\r\n=1zZc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T11:30:21.754Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.89","@balena/jellyfish-logger":"3.0.141","@balena/jellyfish-metrics":"^1.0.407"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.97-renovate-internal-patch-9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49_1637753625239_0.04525057613144989","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.97":{"name":"@balena/jellyfish-sync","version":"6.1.97","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.97","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a3ee5ab0d453bbc7ae7bcd6b5cfa530d4d9f1980","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.97.tgz","fileCount":25,"integrity":"sha512-oJlSSPpP9Wva0rkWclKcEaecQD7hhCAGW0p9ItsuXk5wiSTjKmyMV+OuP3i0EPBIenFvDrotL+wkXHggmW2uFA==","signatures":[{"sig":"MEUCIEqt6ajpIGyW06mtujY+XcFaCmOrb1/TgIHyfT6dSz9pAiEAhwWvLfkYfScXcsrgq6U8JWPGx/5rXE0DEdjB5eWrvQs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhniPnCRA9TVsSAnZWagAAqk4QAJU6+9w5OgUBAA5jcJ5G\nt0Qr0ndIk/NLoo6ITzqhffXnBq8kjiI6Pr+QwfHgjcRiKw1FNLWpVOnYH2Hz\nnZolxc4Fyw9I2IgkbwJEdqF1ZNeyNVBsfsdG0BXlfAPWJ9qsQ/RaFHJlbFNB\nKAyf+rQblcWowpsal+SsXDVe4EtDvxgvDb/SMYpk31Z4qkp9e1GcvV6XCsp+\nf02Sl6udg6Mgl+4AMbG9W6cs560ec4eJ4I/6ucpQF6upwk0Pd0imCwPN5aRT\n9FNllnjNQy11sGGxYQzukHKjeVwjKcjNiys/T7Ri7jZCS3zr3Ce7ybvZP0HM\ndfbCphHlIH8S/23g1aFdEmEDUowXmn/LoMN9ksMgFsp0GCqFCI9abNzcD/nQ\nbE7/UbVh9pIlNxK4n9lWePsGZQo/JE69Rm07p1qUL6hGmJTFJPD8DL5VBKe/\naXHKWz7EUe4zOPmEAWCSGoaf5lW6q5HmAQc22K5Cv7EuVKXZTRBt+rgL68eR\n3hq2apI3U0Mwbpo2KytxiH7wAB7KxcXxFaLllZtMzvNUgySaRamAC3VtF8rB\ndZjFMNWzLAPUACfL8ylXlEvdk+YerRKew9EvImZHOyrOTc6L/AnFMwB9pLSd\nOmMrPJTLLQKUdaGienBLUHBIY57fT2O6bgcDwvbYfnARpeBm/4bOvE297dR5\nGnhg\r\n=GQJt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cab129a2e968e145a25571106952dcb42027d581","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T11:35:11.998Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.89","@balena/jellyfish-logger":"3.0.141","@balena/jellyfish-metrics":"^1.0.407"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.97_1637753831575_0.6271177503233509","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.98-renovate-typescript-4-x-0000c5e8dfac948548ede94ee6d90d86f1d876f7":{"name":"@balena/jellyfish-sync","version":"6.1.98-renovate-typescript-4-x-0000c5e8dfac948548ede94ee6d90d86f1d876f7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.98-renovate-typescript-4-x-0000c5e8dfac948548ede94ee6d90d86f1d876f7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d8817ef8274089ead51825393c5c5255e8c2ada3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.98-renovate-typescript-4-x-0000c5e8dfac948548ede94ee6d90d86f1d876f7.tgz","fileCount":25,"integrity":"sha512-RTwQgla3XG31QekcwYjjnBoeieHV+wrrWUIRgIZjkWHwJUfcxoXyBjzQSUFclZfYEXRG9XOR38irb59JFPo08g==","signatures":[{"sig":"MEQCIBgRQg6p8/twr9G1FWi0fCPAUG+idqnBrpDhniFOX9l2AiAhA6uEH2woicbDc9tAKTwrwl7QlKBVj+Cu9ZjesliRdw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhniSeCRA9TVsSAnZWagAA4wcQAIETqKlDBuD+MRxSU1dI\nlzp+OBN2//MWGokkypeQMc/cFrey3srgFoLnKp/BSTb8Ifd6ixWrSOncPHWR\nHyEOrMk6GrLouBREeIgHctwIb+qCqyV+8xNouaBwtKQLujR8f+eMtHV0nIc/\nJp89qZrueV8SQQSP8j/KoJmeWCi7/h6/+2qhXXz6ekiQiXnzBnIgpVFaLX+D\ne6XoyIzmTbLQlzlVDzJWMOXrSz92fSI8urfCks+0olgV52w9SFxQiy+YOrxI\nMOCCGgo2dWcggmiNQR0Ifda7qwPltSuHitoWd6GD48sGSSXtcizK6A8yzSU4\nGM6JdGgEf+CPP8/eueWC0oQTouTfsNRY39/H7+eeW2jxet5a8Pewq+gS/fcu\n08f63SVvnGijSwugR7uzHhwjvP42xI3/aNpjTKQprowcYx+DUMGi33LStUtr\nVY+eMOMO4igReODP+Eaqb7xNaCSLLYs6agziaPFihesd26PyvzOT6tHApD//\n8I2n2YysuQn0e7q1nGRKr4w1KVZjChVsHQYeTHvS0gnP8kl5RY1ZCue1icGA\nZl7OIJ/0GLAIKPS1Gw4t+pllU5/PHPZL0+STuV40DAOqECbN/XqJtfKT7PkL\niut/0mBoy/m0kHyD0R614PigYXE6WjGBfWgwI/GaXPt86uqT/oOS7YycvrST\nkXdu\r\n=d7eS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0000c5e8dfac948548ede94ee6d90d86f1d876f7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T11:37:31.897Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.89","@balena/jellyfish-logger":"3.0.141","@balena/jellyfish-metrics":"^1.0.407"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.98-renovate-typescript-4-x-0000c5e8dfac948548ede94ee6d90d86f1d876f7_1637754014517_0.06735545661295794","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.98-renovate-internal-patch-b53cf902cb01373b37d859b94af2d349cedb0c3f":{"name":"@balena/jellyfish-sync","version":"6.1.98-renovate-internal-patch-b53cf902cb01373b37d859b94af2d349cedb0c3f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.98-renovate-internal-patch-b53cf902cb01373b37d859b94af2d349cedb0c3f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"553262cf4a4b0d513236b069b736953ccad284ef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.98-renovate-internal-patch-b53cf902cb01373b37d859b94af2d349cedb0c3f.tgz","fileCount":25,"integrity":"sha512-6HvyZQKmOLln7SMbhDv2u9oMBPRIBytls+Srj3mvsUnKf6/veqb/Zw6SVu24+/bhP5+koe8z7EVIAQVSGPp9fg==","signatures":[{"sig":"MEUCIDXx3+CDkt+/JAXgUCamkvnN8S3KnbQqwDtAE1wqUWNKAiEAl2iPIzlwEGEal11ls+exFzEBAgHCIRVavNVyZFrxOK0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnju7CRA9TVsSAnZWagAA5k4P/12g0m5SmhdO4TEj8sRs\nZF96qikbX6naRrM6wLNbB80WftoXJkEItB11+B9GwdxChH/6PlhBYjSG1iWH\nj12Foe8uSLrBl9shlIXUcxyW1i15zj/uDTYcz2gydO8ZhMH85DtmSYS+GOi9\nReMuJ6HsCPS5UAJvr9rE7tfVOMJWU83kC31rapofhoNlVPDomNfiInazH8cV\nBhHWOJOzEKssPePXOyiDp7HiSr3z2tQs5E9eKhoT5Xvp6Q24Jht8stglBr2R\nh6omp8tgGsr+O16dVM/4ohB7nPFbnuDajVy6UkpTOccxrhzSN74/snHpdphP\nAkI+W2nHNS5mfizD3haRuMOUmqbKF39ZJRBEKwl8YxIimzCiQOpjzP8JJrTR\nToPskWxD336zQX3BRsQ3mWMdLizVIeFOJ8/tkUs8X0orKqAJ7uaLjvDs6nLH\ns2kaHdsyYNWD6MOAqQTKQYGxzCrr4o7a5q5gg7EDrFLsA01SG0vxay7yKMJs\nZ4QLKUGDLeHhyyXA3rBHjIMPsGdnY84LdVH+82OUQjcHqbRet/RIbV4P+fMv\nancotCgBbBCT9lwkAIPojyafVdigwL/WonGzSJCzoJzj/nmrfINZb01xTY6d\nwoAVls9clDu7Yz8D0spjvlZ+y00egZH2+zcOYsIpAdn6enyOkYcx9kzmLvdT\nr8Dy\r\n=iH50\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b53cf902cb01373b37d859b94af2d349cedb0c3f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T13:15:20.500Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.407"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.98-renovate-internal-patch-b53cf902cb01373b37d859b94af2d349cedb0c3f_1637759930928_0.6976619456062274","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.98":{"name":"@balena/jellyfish-sync","version":"6.1.98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4ca2892c3415c156e337ef72292ad6561193a86f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.98.tgz","fileCount":25,"integrity":"sha512-9ncBQ32J7Gx0pGDOjqNPP6s7CWh5ReaqQRTLgaAZblk2mGK1qOzW7an46TSOKviIiwUf/1D+h6yvFk6BPiRdtg==","signatures":[{"sig":"MEUCIQCNggdKahFgUF0XV1RBepGG+ahdd4WwrOOwjKrUR1zPAgIgGVBWKTRetvUGYrhITEp80aWKPfYQ1amJMgkbeGJAAHs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnjy1CRA9TVsSAnZWagAA74YP/1Ke6gpO7/2tjgXjwFEy\nNkWMJDcNdjCj4qyxxHv0Z+5sqGJzOjnmnmDN+tiBqvLad9QQ7QDnH8dmOyfr\nGDGc3soAmkrgNB/jXi7j8XsSGT9+CJVoZwDDcF77jONBdX6arQTlBSFC4F0A\n9nHRPdirpE/LPtQw+pJftAUdOPgZelfyvOqgVohjKm64FnyF4R1oWUHt717h\nMqixYYlIsS5gd43eb0CyFNdB0sc0L6FhO3T81h8lFc1HEEtbSPgQQWJAHOA4\n7qO7+AUSqFux7uWiO1RSPk14tk+ghsnLK+6MHo3AnfgzRbbNhZrHpZpr/d5V\nv5oBiLQN0rodjDLyItfm0ewoIgx7/4DSQAm+tywtgBuD3h3UTpsjl0vGi4gK\nJywUOHJA9D66e5FQmbtpOABUg/mmLF5CLNNMMCkv//+3pzpF7DH/9mlIjO9m\n+U5fmxpBdUcj0LzR7PRdo08z3xDz+SEdeiAPjqCBtgT7iqV8QUZdyu9Gf44C\nhPTq93A+Y4mjrMSE4B46HYhIhAoSm0JEssIzyubOmdeMqZA51qjmhNLh7rXH\nPYtC6LDoTaTTJdsKFmw6Xf5FsykTD7SUrhHZ8pRA6OyQPio0JKmiBBm9/L0I\nShDSHrDErCqXrxYv2msY/7SlU3SDwsSwL7Qef0DJkcDcj3Tz5YPqEy4KxKMP\nCepZ\r\n=DYWJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7dd90740a6ec94a835da5f789aab8b7e0999f2b2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T13:20:43.742Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.407"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.98_1637760181482_0.46797773742161475","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.99-renovate-typescript-4-x-ab40910ef390ae72553ef5d20e53c68b37cb4123":{"name":"@balena/jellyfish-sync","version":"6.1.99-renovate-typescript-4-x-ab40910ef390ae72553ef5d20e53c68b37cb4123","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.99-renovate-typescript-4-x-ab40910ef390ae72553ef5d20e53c68b37cb4123","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5bae07fafa6fa1c3a14a1541f164f1f0de97b5f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.99-renovate-typescript-4-x-ab40910ef390ae72553ef5d20e53c68b37cb4123.tgz","fileCount":25,"integrity":"sha512-haFBDkx3JZeMIfLjal1OMhrxHD74sI1wKBag+JizYqP3QCzKEXYj3968exKofBvWE4ShsBYW4OddksqCBNk5rA==","signatures":[{"sig":"MEQCIC6f+LRl5hk5KMWMP7Pp7ZXL2uOVd0z+JJdqot5HqLCxAiAtBaHFmDMhu/iB6qbGr0p1dxH/oOSLZ6vO/bJOesw+yQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnj1pCRA9TVsSAnZWagAADR4P/RItISU1Idt/2MpV/KGZ\nCkjm2xNNtJ2dlZpW0TbYiJVHCeK08jPFfs9kyBAd4MErlEolMl4ilkrWkrIj\noWpa4E0Z5uZyJgv7d7bxogoB0dDfiqhyUx8sN8Q2u9bTabgsjAk9ReNW9gq3\nN15sL4sjhldGcqsPcOYb+HyYyLZ5tLmb+50RZWC5QtdddV2LcDjJhoK28+IC\nmOLuHGXuXaZhVu6oEzGySuaSMigjpcgVzvEcasZI/NbAClD07gybJdXs32gc\njuRxO5+ChZLbmv9TUnAA2K3ge+AxAYX9cFdsW3HF4o6uE65BXE4PGEeZ8GK/\nQeY8Enkb0vsOMu94zArGvGMHX9j16AyYRHBeMyyq3dWFDoVcvHLtpQC7SckL\nPHko9uJjzpAHQKDj6PQ7uQHMo+z7vQEpibq0XpRUV+wQiigw7ErP0+rpH9gx\n4g5kC7Eiz5WkJg2ldkpsV/PhLzAbf1AhG+A57xZIExOxOP/t6762vWWIH2Yg\nQ0EhblKAXF1PuUzA5Yu0AkD9/iV5XejSWYC8h7Tv6AFQZQjTn8/H9FVZ4euB\nWJchOpbQrQ1FWG3ktXJ0VUlhM34P39aQKug21Q9PsZcM5wZudRESvbKGkPu3\n+ZU+3CTnFGGz9arCLPixZJz30DASJsS4dizR7BbdlaJO1VprzXYKo1v4AaCu\njQoV\r\n=qpMg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ab40910ef390ae72553ef5d20e53c68b37cb4123","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T13:23:21.206Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.407"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.99-renovate-typescript-4-x-ab40910ef390ae72553ef5d20e53c68b37cb4123_1637760361752_0.19953342182216627","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.99-renovate-internal-patch-c2fa8f47dad259991b8e8dd73e4471a5b2f538ea":{"name":"@balena/jellyfish-sync","version":"6.1.99-renovate-internal-patch-c2fa8f47dad259991b8e8dd73e4471a5b2f538ea","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.99-renovate-internal-patch-c2fa8f47dad259991b8e8dd73e4471a5b2f538ea","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21f4c5ba2db0c8d0c701b2576635c2d63c44341e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.99-renovate-internal-patch-c2fa8f47dad259991b8e8dd73e4471a5b2f538ea.tgz","fileCount":25,"integrity":"sha512-JPMCfB0p88z3uh7R9K2b5q2VzXTcCZRyifvtNVE5/amYmiQIm/iiny97hMYnz5bNpc29y9IKF22d5Sku/VVaSA==","signatures":[{"sig":"MEUCIAw8cH/zARlRx5XgkJQzGEteoD/mEJxCFR5iAwxpEwmEAiEAiYW7lMqOdKbsQV4kzgign1afRnViJqH0jmGQDdP3C4g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnlgyCRA9TVsSAnZWagAAe7AQAI8Av5NoGF3JyrYIpMds\n6jR+LRp2eiH6c1yvNpZhagBoZu28LSmQ5qkZrf4xq3b0hiEz+jMCn4aHzShG\ngxknSfM8E0nPA5D92Te2nHiUuStca5EM2NuvVTh5o02Ny+hYXctnVWv7fjOf\nlqnl/bhkWZQwBH72JRLxizr8GCPe/GebTOZJuJbBGQWXeK0EVLm6/co9EN63\naq8FHWGwGNCn7CU66jeqmnZqv2rgdqrXo98m/HrUjLXwX0OnsXnVAXchjouZ\neTBFOwIPEBh2x2cEFaBHOAtnVsPSPb/EK/eRWht4vapHkp0A2VNgpojFTs/A\nR4+BetItDOJT1hr+9ID9gKn6dArh44z6teqMyv9DPo2HkF3cxOfjxqzpgdbO\njBzzyak+8Lzd9mNEOvfDutKlStY1OKpMOuJIXDff3Uiiw4YVJiOdi9RNsxRE\nPah6QO48vqIs+uwW0voHHrk3sysIx8CguU3wEDj8x9RjjEdzaIJNkmH2H0FC\nyeH+H6F1cR0LPpfTIm4H7gSItECaQH5atB8ndRGlZfvnN+vpjI8Tc8ecpnHQ\nWxfc1GKknh8x0Psv4RW3NOsz2bL3E/g2c/XS1LbLcjdPhVusLcymu6vwMbsR\nMPS7NLtnw/iJUajMj2xkAYwB3t34S9XeJO84ImvTmtC6qhAc21FjzjZcVB6C\nv0v9\r\n=52o0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c2fa8f47dad259991b8e8dd73e4471a5b2f538ea","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T15:16:59.003Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.99-renovate-internal-patch-c2fa8f47dad259991b8e8dd73e4471a5b2f538ea_1637767218547_0.41714954728287323","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.99":{"name":"@balena/jellyfish-sync","version":"6.1.99","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.99","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7e813f41095f8cb9b11dea10f6e10df84d42c8bd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.99.tgz","fileCount":25,"integrity":"sha512-EWBlrwmw5BmTVMxV13Xv57VFT1Sf/OwlawHJcDV13z+hf/267TGRjWqOvR93ONW0353SgK8FW+FfcnqoYwwmdQ==","signatures":[{"sig":"MEQCIFei8pE1f8+2K0bgjq//kIIyxg1nQ9JWmzKfMk2Kei8pAiAKQaFbWPvVkHvd5D0Q/JKyUvujW28K/mUEf3yYZLTcgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213657,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnllBCRA9TVsSAnZWagAAx6oP/RmilEgzRXpb5U3RmwGq\nTJFDZyKkEb1USZD9jXHM+EFvqF1KYgM50y9LzTuu/ujopIicRhWEE/IOMEhh\n81dpcIa4YQBqKsGleXDYW7S5iPgVDDhFemmXTRiCgyCNhtqjILiMRduUOkhX\nje4ucT3Nh7vLYMui4w0qC15JbWtl43TbIEPHTWpeA+4gx/Mk5OUx74iynMCu\nOtKYEqwqm+qxkpmQZmwdSdkrccUsbEe3s04UCki/4Ff6U4fgtaBS7nuJQbOR\nzf0TG6msEHP9Z6uObbQ5BXOD791uUwnbK+09iDeHURZyjVloDnVdKHSISA7+\n9p+bdCKUtXw141FHMCJEWtzKOCvV0JDZlELmOqy8b+kKungGPA28jpFDbepN\n2zBWJRuLbxgFkuhV46aSQ09fkxBI496XoCV94UKWZNbxowbOOeNt950WA/AI\nfXWOhVz621z2pI0Cx851sj3L07uTzc72dRCMm7Opq7dd2BvPidUl686YiGnx\nfajVg5PC+knBEPabHjiyPj/5vcnBg5DKj8ndNGOyBLqK2RZ+PeKnHxmClzRj\n0UN9RZSr8gcP0QklVqvmL81ZZ5D3f/q7s+UnIUBJMU2hE3qX7ntEOTwg3POt\nCmQBD3XWpM1jBjuco3Oaegl51vUbyBI1pFY/HRgOf/YLp5Qxa7mntgEL80I2\n8PVj\r\n=VD6R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"abd2ad0deef34433325bc12a10839e7c9792aae0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T15:22:10.398Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.99_1637767488931_0.873997030468284","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.100-renovate-typescript-4-x-7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1":{"name":"@balena/jellyfish-sync","version":"6.1.100-renovate-typescript-4-x-7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.100-renovate-typescript-4-x-7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5bbc98a4b076b3ee3c5d3f87f4cfab2fb7af5619","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.100-renovate-typescript-4-x-7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1.tgz","fileCount":25,"integrity":"sha512-quo9svMBFGnB8y2p1QtCWZDyWnp+0Ls6HvRchkuZTnC73r1CmEi0o6Ws2rqmGcme1xy6LQXlEH5VhCI3RINfqg==","signatures":[{"sig":"MEUCICflvvdqAYllVFU3/+b0mp8FbDJj7Jn37wZEWIdmSs3DAiEA6pTCx0vM8IMwlNhxwqRq1ile7loJK7zVrTVTu9tAVAY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213812,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnlmSCRA9TVsSAnZWagAAo7kQAINIBjSF6vZJdpG+OtDs\nV6oH7gK93y59ovhK6uh9tjMuGbxeM97860+mzK1Go6wm4b+lt4bW0N8MclNl\n7gJe6YYDuHMlLsM9Gald7dYRFoTbOsrnVmfFPPL7hlFRV20oHzE553XwP36T\nxSFMW0rHCtfnhyvJw2gQNU/DwBYl0Vwk6fCS8pH4Ng8OGipfUuO+GVlBkSWd\n56ZtaSbq3o0GL8YzggZ9QpM31u3IbuQfFaOAyOuTo3HcnxcWGM0JDYsV2gkf\nrsA4JXE+clVjo+l5vnCKhdcAklKIBM3VRB40CEpRod3VzmScNpUG/Qbnpbf2\nYwkVy5Pz7ei+nbAxy3/uyx1IFCjGcdNUMupQGdER2SqbnwvfNAA3aYswgvA6\n4vodPN5GjGj/6TOhJ5sTb8hbRRjpC+aV67W96GUvKukPS6uYE4rFHJZ1LxiW\nYHgjC+sMd4rmr1idP6TZ0rVF39YYGQRLGp8FWMSITU7gbuxWa3hm/jH4/wSC\nKE6qI95uDBsmdHZxRtQR6eEgYyPQWRHqrldLi1h391thloK+iKNRnZJIm0xe\nqDVN1DHM92oaURFjkDveGkWn9y85P19n6O0ptGF8XYobsHKxn8L5ynvsW1Iu\nl5TwaxxaiyoKLjHkUinIK7JLIw2RkWs+DGbO4Qglt30ZWL4vWccygrFxNO/W\nUPxP\r\n=sgVP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && npm run check && deplint && depcheck --ignore-bin-package --ignores=shellcheck,@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","check":"jellycheck","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-24T15:23:54.034Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@balena/jellycheck":"^1.0.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.100-renovate-typescript-4-x-7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1_1637767570009_0.9189333082659865","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.100-joshbwlng-remove-jellycheck-14ad25d9069177542020b679eef2817129e04dd5":{"name":"@balena/jellyfish-sync","version":"6.1.100-joshbwlng-remove-jellycheck-14ad25d9069177542020b679eef2817129e04dd5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.100-joshbwlng-remove-jellycheck-14ad25d9069177542020b679eef2817129e04dd5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"259e9ff8e2903945af6b24d6c614431913536ea9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.100-joshbwlng-remove-jellycheck-14ad25d9069177542020b679eef2817129e04dd5.tgz","fileCount":25,"integrity":"sha512-t26OWLN29ut7ZzhYlyuDIT58nr+5Mb1/cmZKLR2pPlgSmBcFAZ+A+ETKXbyAx2CEBFb+5orTLJ6L7zFjlAnRYw==","signatures":[{"sig":"MEQCID2Cp2wn3kSwKOSD93ZXHLgZHS41p9gNB2AQjsUYZg7JAiAWm7jsGFV2aiaVsem/SLmTG5jUlpUjmgDz0BFPOC5Mvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnuifCRA9TVsSAnZWagAAnWkP/iuQq/lmqL5HgqDIMv3Q\nNVepy4aQJ0Wr9P4DDlMbIUeBeIJVF+xmyXU5vQsjyYJRP4ykGfIRZWjIpLcy\n/6eZuAwczxZTIClznqiS3QXkCjhZ4OHvwlHGMm9w5dUPHfN0avff94bYTi4I\nHmz9sWRtsQ1BmNtzrHZE8bYCJYb1Dl3aDLJURz7nAEALwzYCzMl4gvwGTUyt\nOpO8D2DJdLic9GtBUzSXrV4xz6TCRvxacFVQEXEaVvhfPGOEhUVPEnT2sRCB\nnPAIGb21uwM6tyznjrbUv8jAUrjNt7KFk5qgkljbaJ0Pw6GG//dekpmJkaAz\nOosvLb66/VdV20F0TQpV2PL0uMu/NSwEDBozYjp6M4n1ce6QYxesPGj46e3F\nPOQEQZFOSngYqnAmDwWwiyFb/sm40tAL7Cif3pJzjwopIVxePVzKGt3DxYx1\nmv38n/aNqcG8xh6Tdgbl2fr6BSmU6LcYePW1blffEYkRonimhvn4uGgRMETs\nd59Nb3hGOeJ2mIjrJIVGdOFEpxMJlYev1DaVfZgPxDhxfnWXBrd9Vdiihjmr\n0OiE7zPXU4W+0s+apFymTu3aK781ttQ5aPVqdaN5DH895dUUeOaIpPYDpFdr\ni97jTo7x4u26OJzhiSsB0y361Ogb96azFB1XUMZ8GpmX30YtjyJ9PzmIXuWD\nh80S\r\n=VdLE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14ad25d9069177542020b679eef2817129e04dd5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T01:33:08.116Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.100-joshbwlng-remove-jellycheck-14ad25d9069177542020b679eef2817129e04dd5_1637804191345_0.1909736522102241","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.100":{"name":"@balena/jellyfish-sync","version":"6.1.100","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.100","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6cdbc40f4e5c9b37c8eaee70fa22e51b4dc99407","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.100.tgz","fileCount":25,"integrity":"sha512-umulrMVsX76rZO6jakuK4bL2nQVjsh1dzTusd/6vqe4MOdn+pmJsmYZHlaXRSs17RF89xgRPMFk7V4Wc7uaXUQ==","signatures":[{"sig":"MEUCIDfiT+flab4pq+4TKCTpJYby8nMrqMuK68w1HhGXEfCGAiEAgnx6/WIQGJSynsFmjPOGLe0m+/+hpvk3GFi86OIORhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213628,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnumXCRA9TVsSAnZWagAAUlYP/i3aUlKE/+7hRi77gIfs\n6ljnfcGwww1gR+wEUzD5ImUDds4oPOtzlkhlxF0btoAj83cdTgdPNNxz+NlN\nmTRi7OGmYBG+hAy9Ar20IAkajbKXC0vwfrDyBLDA1X6r6I+PlTk2NhaBixi9\nwbk2J1eT6W29ZoFKdRFZRUkbvw/fzZqdB3Az/zYsvdDLbkKH8L9YGlo9ftsU\nGnxUVlX/9DcYIVAhhw+BCYpiNX7/DjvybxxaTZLHepz5vYc60EKVGCJdWAWs\nwxWp/EAU0v06oMMQIkmjJv6nDgFDh7xPfYvuqA0kuA/XtYXNM42kTJiLZCBd\nGRRPP/hyUAaroNhHWLjmaljuW0oP0sd7LXQmxyy2JbCUErlnri3JrUlHhYbc\nAluv14tMpaKvK8uLVE6zvBclCN71JQMUG5usvOzhktxfHV7dX1hJS3y3sHUr\niO0HFPppx9hL2qP58x8Nu35SAZKEw34ospaBF6NI5+CTVRV/P86h2//PKArn\nPovCa+LR6/5a388YbtRtyuk/b0mcBNobsEdG4eYvo/iG2YrATBLhKI3Ogspl\n4JOjpBXrMCOgh4ysO1tDP8yxgWZ8r6aSeMFyblQRFDRGDA976GJYM8DnicEK\nn0hfhYHu3LwJgFibHRpe1Esv/lK6sIuJvBIpq7TgKpRvJJhDAMmtGEqTCOTP\n/V56\r\n=KNFK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6159b8466a5b5ed189cd435237de75b6a53c7aa1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T01:38:05.864Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.100_1637804439686_0.19693726116204813","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.101-joshbwlng-update-repo-yml-c09900ad401afc6d9ed331a01cd60536f627a7b5":{"name":"@balena/jellyfish-sync","version":"6.1.101-joshbwlng-update-repo-yml-c09900ad401afc6d9ed331a01cd60536f627a7b5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.101-joshbwlng-update-repo-yml-c09900ad401afc6d9ed331a01cd60536f627a7b5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c214f383394341a2137784a95ae0df3d39a39982","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.101-joshbwlng-update-repo-yml-c09900ad401afc6d9ed331a01cd60536f627a7b5.tgz","fileCount":25,"integrity":"sha512-X2TSAo9TfTDPRdJHuBzAURgHdN5nAwtr4XkFata65RPQNnLbJZCYV/5eMhORwIIyDfqgQPfWBmQwenmA2x3OLw==","signatures":[{"sig":"MEQCIA4MSK7hBPBFoxJpR4zT4oMmTZPVbF/fNONjVl6Ed2s4AiBIQbDM8Br4TU4PaOoalNoxYHnFx2EkW8fPCyvd++Pg0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnw03CRA9TVsSAnZWagAABq0P+QAIZTliCLAJQo2u4xL/\nIee7v3+kx4szQp6JiKOG3aRNE++5y4ExapCjX9yMK8sA0OekhTpwoHpUElwf\n3ZbSUAwSHRRq3KlSSsmr/BFs7FaPNzWVTthSvtISEKIfp74oCuPOz/3t0nEz\nhdjeLIbxb1THFVKBwAOT5qyR8feg8+w5fudYD05zbP0OddQBLggyDaRrHENo\naikkL0YNG7jmfXaGvUKsnZakxuUmDenCL2icYzfx+Wv9r7ZD4a57PMUU2sym\niCwb6H7uNoqnbKmG8IVy6/5pnWRgCRAELEY2gwVSdZmuiqVaflPerIGlqrMx\nN9QGbUWyabRmdwiCtCkecfQNovuzoiq9NiwjMxw1/MkuftD6SVWAmk5JMiDM\nAyNQ6I/IOz204Yy0n5DM0ccEXLXxlpb2mg5Wbjqdp2QfAxQRFOKdfArVaCOL\n/FEpIyvmJ8UBWENYk6k7J3cD449/nI+6nJBq93rH2JqLZj4ZQBXdS6MrpiO4\nkTD/hLW4DfrBzHgGjUoFSLs/Nv0WegaxE9MW3SZTtIkSxpbKwO1slvFT3YWd\ntdZQzCHDOFnWxOMGynFgaTagNbNUohYVPjnTsV0DIz7coN22HdWkju0GKRnZ\nGq/NNg0MTxyOG+23FvJfrquOqY1mUogROyaEXvzWgyWjRcM9vD+EskN1Tyfp\n+xnj\r\n=ofj/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c09900ad401afc6d9ed331a01cd60536f627a7b5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T04:09:15.782Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.101-joshbwlng-update-repo-yml-c09900ad401afc6d9ed331a01cd60536f627a7b5_1637813558994_0.18029210761090564","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.101":{"name":"@balena/jellyfish-sync","version":"6.1.101","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.101","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7b89440b36decb141967c8c30f7b735a5fbc1679","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.101.tgz","fileCount":25,"integrity":"sha512-hNPbMjF7mpMGCzLIxASoCcmZgKtstd6QBp2Sea+e3FCx+bz1tydskL/D/SPWF1s17pns1hXBtUOVFYpOmKKfUQ==","signatures":[{"sig":"MEYCIQCG8ejIIEgoWKfF51RfHE+HMywRKcmKK0RY6hlkDRGafAIhAMYNIEOmhtv+lwd+owJHtgo8djqPNKvBCpKPzho9zUnr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnw4iCRA9TVsSAnZWagAABC4P/jwZOYPeAPlrTytg4wPN\nah9hsisiAZxJpttM4cl5FEEUknwVVj4H5B25eHF9T74UZXp2xd0bZq/zfwHi\nLeBD11oxe/HCcZq0pIRdY2OyDKKaNCb73yvrP8Y96KdEGxHfLtfV4FmTtfyz\n9oSDXnNieZqwFkr1GS2KbFvRYVfoSgPXMBbazzh8kjem+2ML5i9ufiAI6nZm\nOurHkUdVYDAQYWtCzd3YNy2ZfWRJO15cshh8T8oS3/WusLuWx0+T/GbWHXs1\nzeDgO7cszZ9LxjN9U9bW9DDUPsfW+mbYIxqLA6DWor9V66RXimEDrhtJz1MW\n81gb2S+5bHEcm2CoBpTHAZhCPaited/G8qTzJrwJXwlFiT8OQtpejuIUim3l\nLJMca42FQWU53eXBzAc8Yp9RdBpbLnGLzzVog2/Q/E2URuRmJjr5iokPhrP4\nhbZN9m+ie5mlaz/xETAX+DCc+5+EYvOay9l+LHqLr8h6+lzzYbeNMOSAd1sj\ngD0/Wg5SlyUPnQNAR+J07qeDekfxL2bD+Owx4VIVrNs3AEe6ovduG+HIT/xx\n7mjG36WOZ9yJPqDg0eB6/RokfN3x0qXFlw/XwwPJTDvCP6PGTRmxU3sQYh6N\nrL7NCrdIsslRFfo4ioZCvzZr9+AunzcJO5+CZZuuz07gjhi6KdSXYl77s0nF\nMSny\r\n=q/gq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9d72a9365eebd0b3632f35c065369a48e5056668","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T04:14:24.813Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.101_1637813794012_0.4361190794497747","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.102-renovate-typescript-4-x-427b19e9e444b7a4636c46a2f58fdf40225a6ce6":{"name":"@balena/jellyfish-sync","version":"6.1.102-renovate-typescript-4-x-427b19e9e444b7a4636c46a2f58fdf40225a6ce6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.102-renovate-typescript-4-x-427b19e9e444b7a4636c46a2f58fdf40225a6ce6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ec367bae7cba02637e474ce0b7a04d36729da2b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.102-renovate-typescript-4-x-427b19e9e444b7a4636c46a2f58fdf40225a6ce6.tgz","fileCount":25,"integrity":"sha512-wxciGQu83E1/hVA6Zy9aziwBZJi0VCRUKyCoK0p1fLvSvmGNMv0gEvRZ22PxEImrvDZW1Syg+JgBLy8EPqbTYQ==","signatures":[{"sig":"MEUCIQC1H3DK234slcnjbcwhHQaq9CIKeXSxfhfm5nF5FmiQCgIgHz2YhS6qtS/W9IUkFrJVFvX3JiPUii8946Z/UZFLXU8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnzCpCRA9TVsSAnZWagAAI3YP/3wD/Kz7BDslz5TMbrZg\nE8GCvb1dFO96lvQWWagI/MOl2LZ+1+rgL7cT+lmq/U12kE+xCmPZvQzn/nmW\nWoirE9d2kUM2vezyYsKaG1J6hq1oQ8bMCj/vyJsjXSd7STl8hesQe72cFUE6\n0BN0TfLeqGy5YAVHQjYQdmTgGpjYwtdgFh+QMdpZQphQ9NzarRXO8lFRHApC\nbwu9MvswfcyV8+9/a1cO+FtavJbHGH6VjFNKimoyt9S8uCQIXGAx0gCliWAI\nAcIm5/LEeF9H52UL0n4qK8NM+aLfQ1X8H//OCl4dqokltCJEp6HZCVfo1c40\n/dmDZrUmBLOYF++7U2D4iV7h6q5iTXhQc33VrWYX3Sjarzd0xXh/kfxSPPd2\nnJv6sAnGE8dwFHDvd9mZxIs44yqxdd9ePODWHUBDNCWU4rKrnKoyovw6TGLH\nXB/DJAKmXKuBoEzN4N49qJVZUcWDLdkIUhPweqcoSsSLCz8zy2fpor3Hv/o+\nRN26eYJbfYBfdyMpqk9r9JNFg61xgkVwp6qEcSIJIvHtPukTJgKdbSlrED+W\nDfZroVIknQszKSPZpCDgcaqvtBsYF4GqIMJUg6c7cvYMVDTdJeLKjly4TdDm\nzEGKpVXMmGGF+GIVCrOxvaF7ELOCkG/KqRhwvnOnNls6ELBSnSxXHBCDY0Ul\nGrob\r\n=wnF6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"427b19e9e444b7a4636c46a2f58fdf40225a6ce6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T06:40:35.986Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.102-renovate-typescript-4-x-427b19e9e444b7a4636c46a2f58fdf40225a6ce6_1637822632837_0.689908544186141","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.102-renovate-internal-patch-6768f104844771d63977b2011c65fe40304ae5ef":{"name":"@balena/jellyfish-sync","version":"6.1.102-renovate-internal-patch-6768f104844771d63977b2011c65fe40304ae5ef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.102-renovate-internal-patch-6768f104844771d63977b2011c65fe40304ae5ef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e2774db70916031760c0faf7e46e83f980bb73ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.102-renovate-internal-patch-6768f104844771d63977b2011c65fe40304ae5ef.tgz","fileCount":25,"integrity":"sha512-iJMERDQBnCNFHBG3SxEBV1LMKhcnKOmNcCRV6pwDQw1izkLdfVaa9RB4QnQXXpJOX2OOIQJSSxISYUBG2EWgsg==","signatures":[{"sig":"MEQCIHOKIKOl5Ql3ykDC8mfWuH3EcBRMT7hqhPL2GOw9Rx8JAiBWVTYigFqLOxaFdUZK2rINz5216KSWWYHf3sUIF2XkLQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213848,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnzDICRA9TVsSAnZWagAAei0P/112fS+or9vv/zXWeXez\n/69egJikbC+LHchBu5LfJwqHY5H93zp49+c7RnMLN0EkZt+rPL/921njYYR6\nZ0AYbRMGhOPI79IqKDl2a8BjoXrc0XT+QKOgmY1fPf33xq+jmXklct0SlSMD\n5sUTrynXAjcitI0kM3CN/6aQR3SxdzmPy9QQGp81OQNyoC5RGbUi5L1v0SnR\nEbb8/xfDgZdDD6GBy/RnhgIik5iq1Kn6FeYh76eo5000/zhJBzZsvA2T6eEs\nPXlGFGRTtCG0UjVUveoLLzalPHOAlZZY3WpWmIWKhZXnSKs1k/GI+uL8MK3W\ngGW88okObDa8SJDGPVpX9kzakzc0oTgCMGzv/HS9DbwcLl3IyMEIHoZRIlso\nsuqc04VXBDQ4ezrX79IQ9QKlA3UqxydVs4D3/OTCFHSSIAiHA9ZydUt4A6D7\nJHigjpfxfrehR2rmUlmhd7No5VLXYn1kBPa5nIWxHtPH773v+CdETaHNWYne\nbTr1VniBAAc+djF08lJFGyQkn9EOPuXO47jUxaYt3kmwIZ/mRXD/ht4FAQnu\nxXEE32pcgLb4BFx3w1JxlCLcEfl7DVSSnrU1ukP+D93eFBW2FzekUSQUsR8I\ncvmQpyDlxJqZDxx3FOuO4Vg36LU1Zx/h8WJS3ctYSFAbB7dtuNAmFu7ZsYXD\nnZdM\r\n=c2a2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6768f104844771d63977b2011c65fe40304ae5ef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T06:41:16.463Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.93","@balena/jellyfish-logger":"3.0.145","@balena/jellyfish-metrics":"^1.0.410"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.9","depcheck":"^1.4.2","typescript":"^4.4.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.31","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.102-renovate-internal-patch-6768f104844771d63977b2011c65fe40304ae5ef_1637822663999_0.968487193695339","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.102":{"name":"@balena/jellyfish-sync","version":"6.1.102","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.102","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f0532c65ebeb0dadf814b2d98030c57216ac3891","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.102.tgz","fileCount":25,"integrity":"sha512-uXWw9ySAfmZm4+TOpL2RfriHbFxYoiXUsznCrid03iyR05+ifUxyqcE5nuEgY4uYThLmC/xWmtojR2zxF5Uatg==","signatures":[{"sig":"MEQCIES0UnIbqw52KvmfVuuswerM9PFfxtV5nInVutf4r3dCAiBmqnz9tKBQa4UKgaqehJeZ4Ntr57tEXBPky0ISxeE7cg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213843,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnzGfCRA9TVsSAnZWagAAD6MP+QBh9mqN8SqAtTTRGnXm\nycml7sOC+UuHGI1Lq/Tb4fYWWXaaEXyLVE7wCA+cKH3khQsSmhD+NJBdRa7x\nPwv7wKcn40Bziuxa25sptxT721D08as0NORslSrQ0ML2U2J8fozVodGqg4Lc\ndY1oP1EVZYvDJ5V3MhaUMwNKcoPNc5+J1O+ZFuxveJsKax5ZHldYNQRpoEiy\n4EOlh/WJc+uAKaFj6/YRek4wDslElj2Sp2fmBBXqXqvJkNAyAG9bsqP3fNFv\nKSVj6BfO+M4btD3ZSNg02eCSHMhYj06isTtDhXXSLVOnip7C8f72+yJ3xUqX\nKpf8oLTnVzysQNuCu1U8/C15Yc59Sbq6xJnUeWYRKmYOuaqDGu4AEpYhUTfG\n6pe05iCHwC4s3ge3kjzu1oiN0R+BiE6zI47+69gr7gCSONtVyE2G3Igli0/T\nfAU1RGB+QztYx46J8R7iYNKYEHlNa1SpM5tJ/IS3fZ4A1wuJKBaMvUSkm4Yi\nISJZPs5Z/oh5YP3m8j13GtJZ9prBb+PhZzfWB/KVOY2B0S1iJZXR7OMUO2eT\nSzk6yy3pWDxHDrpgmwsbDv3sGsed3PbBtlPdI7os+H9e1qBhvTrQuTYypzeo\nishHjfVuDiiwT72dZ0Etjt8TRLQua/NkDaaXaLNjDLMeLP1qV/V9PM+Lu8Dh\nvAu+\r\n=55FT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"04348cab9c80ba8e5118534fb1aa3a11f7af41a6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T06:46:01.500Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.90","@balena/jellyfish-logger":"3.0.143","@balena/jellyfish-metrics":"^1.0.408"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.30","@balena/jellyfish-config":"^1.5.16"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.102_1637822879027_0.159297296081508","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.102-renovate-internal-patch-3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af":{"name":"@balena/jellyfish-sync","version":"6.1.102-renovate-internal-patch-3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.102-renovate-internal-patch-3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b32fa0c83fd0b9dc4f819b2b09e0be4ab6146fa7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.102-renovate-internal-patch-3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af.tgz","fileCount":25,"integrity":"sha512-hB0AFt2kzJ3vOKKI8UuCW7cr8aVf/VprD5nr9PP8bg/Gx02nOxB3ZGTp3qgjoAyjpAWTOESCU6dwjjDEqjehjA==","signatures":[{"sig":"MEQCIBo7jbkMBE5m1RpLxnRBNmo+mgGHh9SndKs+T/yNDWx/AiBv51MYy48oKtuajbkDAFufUKa6xfMC433z8hwzIkIPKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnzIZCRA9TVsSAnZWagAApOYQAIaWFfW8udXpiF5yDYvD\nTMVLrDudkbfSxHe8rxLoZPCAS+YXEdmjtWbpQ3vYygA6WnDYERGHLY0aS/Zi\niLwyxWN213K5ltpvnuqumLlbFE8DbEc2ukmq2iwYtfYi+XM0pmXc8KWTFHqi\nbgX7SxyuPkqIYwot+wHO+mk42vapvyWG5fkgcm9S946SYpjkUQWIICNkHm6P\nr9e2hjD+rf1uyEDGBxRfFUhweOfqUR8Jfvk9HTIwuAy5hImsJ7JJ6nZ/xx9I\nukNUMyvt6cW5TrZSehGR5Hlq09PmOb/GzKv1k3RnBim4y4OycUTTBpnKQiqX\nS7vibLnVugtwwxln7+EcVPfzSS2rjr2I4EwGrBUiQog7A3ygwrbsfxQNECh6\nxVobvWYeLZlYkbhUTWgpH+NIAi2q59K8AtnrisF5gn4aHetJKk0sC6h5eXsX\nPUU127DNG6JFvIDwhU6XGOHhzDS0dG6ffKvCqWC7ZtnlAMTRG1S/7OmbDF5H\nKF7+I5oPA385+0pruYq93LHpg5dvpwRK8l8tH1AP+lcxEJSdcFMTRAWCjR7p\n1KhLfeHS5ojJFURBp5N8t5hcVsBppb2BKr+eK00D24QyZ3L6J6xWBnCsODvl\nULvLJz7bH4EBsPe07N89B0lhfUcC1KxOiod/FCz3LCJ6jb3yw3/Sfahsi6mZ\n5UnI\r\n=n25q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T06:47:02.907Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.93","@balena/jellyfish-logger":"3.0.146","@balena/jellyfish-metrics":"^1.0.410"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.31","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.102-renovate-internal-patch-3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af_1637823001857_0.5777386609032822","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.103-renovate-internal-patch-f21fa2c128b14fcef2ee64d6471aab1ff7069557":{"name":"@balena/jellyfish-sync","version":"6.1.103-renovate-internal-patch-f21fa2c128b14fcef2ee64d6471aab1ff7069557","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.103-renovate-internal-patch-f21fa2c128b14fcef2ee64d6471aab1ff7069557","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b5abfc6fd5a2271fa34688808f85c9ddaa5b3562","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.103-renovate-internal-patch-f21fa2c128b14fcef2ee64d6471aab1ff7069557.tgz","fileCount":25,"integrity":"sha512-P/LxrG+eheIcCsi/NnMDnxfNk+BBBHBZNqKZhUcYaYVbKmsJJRp6g3Qar902zxwyFYr1GY2kQFjyUWEgCue7qw==","signatures":[{"sig":"MEYCIQDIVDoah6X2BYH+swT9LTzeYzd8PlDKSAUq3blU/fZYwgIhAKfQblpwul/+Y36SvCHWxXbGLTvpP2UHSaZ5nmu9BQtF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnzKeCRA9TVsSAnZWagAALT0QAIwNFHVsS/7hGWc194Io\nyA5HiSgiaxnfw2yMc/L6qe2xLNJT6Xr2X4L1nV+fuzHuv19h2TOgHAZNTC5/\nU6wYVMtbC7SmXLDb0R65G9w8Ysda8pjJU1OhieaB/B4AYPDGZwRpgwr2Grbg\nAL0KSo0HcBcxI9cAqrGYjF47QtPqvY4BbsAhdpHFe8877IedJkGEPcyl/wb7\n0zc3vXojXC9bH3dkYGXpLJAGy+zGrwU4evlU06uY6DPi0wJmkG57WYjUSFz3\njIVdWK59tK5DYM0h+z4xBqflk12i5UgI7AcVKMy44YOUqIa3ObHTiny57idH\nIqW5lkwCzsnssdF5rRxaxv2UC09vR2C9OaFauZ6LqSZPMy1m8cUJMsOs1TjI\npRIFhT+Umpq7c2AZ22Hermj8b6pqgo9yx5Ax+pJlOATyzQA4xyv9/zDbrzhy\nQwc9WOW2uZFRVlx44QrSAyIpu2lCC35TywNaiNDsWuxcb+vwRwcQMdQUh97k\niLodHCsoSVC8s5ghWJ/KukDr5KTDvIWbK0MGkTSZwsYn1gpydNbuQCkpoqs7\nQFsR7oECe4+NpbETP9GMU0CiWXoepBZ2ZNg+EioQOAiMzudmqTDGloF032sW\nxRmzoVw0V8KsIcG+tV5lawHeOIuyPhFTYXpFZj7JQDmexhQUT8xCucObuRvF\nocku\r\n=YIOk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f21fa2c128b14fcef2ee64d6471aab1ff7069557","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T06:49:32.199Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.93","@balena/jellyfish-logger":"3.0.146","@balena/jellyfish-metrics":"^1.0.410"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.31","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.103-renovate-internal-patch-f21fa2c128b14fcef2ee64d6471aab1ff7069557_1637823134844_0.8403312406295982","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.103":{"name":"@balena/jellyfish-sync","version":"6.1.103","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.103","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c3c09fb4e72c9b9ac19320d14e1bfc621950d924","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.103.tgz","fileCount":25,"integrity":"sha512-YYuq64hdTf5NUVLUlIHW9IA04MWPLr7AVkH0lbrhaKxSGdi+ACV8bPWYC0pctU76wH4WuvAt8NpMDZRsIa3VXQ==","signatures":[{"sig":"MEUCIApaF5Q6UjfshvTNJGbAVcJIIFfzHBO/Ke5DoCdihDxVAiEA8p9vz6zQ8gZf6+uN+JwxNwIEPMJrjIPpUppwSFriwIY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213915,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnzNWCRA9TVsSAnZWagAArfAP/jH3y/0f/6IAllss8OrA\njSMFWM+lWuH9FEVNTiDsd8k8YoKZ9hGZQ2xcmB3PN7ghtnRMqIH2KMh/P5fe\nJE4gxspyWHJgeMk3NLwKsFg84BeAy+1hBVxMDPbMEx/84JapXvGqSz/J7qHK\nqFPEl09Ubd9IHZ6MnDVeNxrUiBklrRXSgpyTnLt/6fKGzF54cZCzsrgvQwP2\nYQZBjNPEs9BeR0GuGklirzloTlyDu6Na2nOWN3OFkdyIvQg6YMIS2EBtuX+M\nTFmauGJMCIuGSt3neAakkdGicfQ+4VDU23uvtE4SsYFP06HfVBy/paYkACRI\nsovemizAtGHPco84u047/8ljoc1m+RuN9QQaLn9B/E0XnyxgGUIT44bAcA24\nt69B2kD29ipbAKVlKHOYLMGrkOcLLk1RXkWBVMhQuJw3bO8ysCp5Jber/jk6\nALmbeDIB/ekIcmgVCcRtO2oOb0duIaXwnopWh+lcCj4PtSgT6dOVlJDMfAU+\nZ16Ln4kC9pGOOknCOcmZQnyFTMjULD3pYO1Ky9siJGXy2zHIdArYlPXeH3ew\ndEMfQw7jHx39Y7sPPvjcc48Le8Drk4PoGsrC9FeyyZm0FA+KeHPF6OxA6DhK\nQQ7ZpHZB1zpyxiwMbWxEoOL5ViXjUH7RUzZW8lV507w0lt1vcqot877SfKW5\nl00h\r\n=anKy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2424776d62ed8fc0f9a590446fc06e3e4b182a2b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T06:53:11.710Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.93","@balena/jellyfish-logger":"3.0.146","@balena/jellyfish-metrics":"^1.0.410"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.31","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.103_1637823318368_0.5114065789752824","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.104-renovate-internal-patch-4acc980440a01bb03dab896d06d37de5b26bf80f":{"name":"@balena/jellyfish-sync","version":"6.1.104-renovate-internal-patch-4acc980440a01bb03dab896d06d37de5b26bf80f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.104-renovate-internal-patch-4acc980440a01bb03dab896d06d37de5b26bf80f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bb71060bf87fe9f37d324a1a37ddcc0674ecdd0a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.104-renovate-internal-patch-4acc980440a01bb03dab896d06d37de5b26bf80f.tgz","fileCount":25,"integrity":"sha512-dfwJMqCDTWFtTGPqbW/+KDb5KnDcQJcMRzcojJ7mlukbMR2zAwCGDABjy4e8Vp71/WxcKa0mw01lVd64rKdg7g==","signatures":[{"sig":"MEQCIHXJWGgUBu5NOqVFt0I7oJ/pjNszTD9RlajNIXZQ060UAiBGMerXNQsiLWSOidZy3d9Y3Br5t6RC1rzqMI2lNj/IJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214052,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn1TFCRA9TVsSAnZWagAAwmkQAKH6IDMWK1G5nDxf10h8\nl42K2pMJfWUH7G2Sfgusdi5ZkVehaxNFGUiqz3yDLnxtAEmHRq7esT/Ymd7+\nrY4+tUSFB+ZArUh63flUetW4doRszoLGE5/bdkK96eeIccmo3FSj2f0hi/xY\nqaekmOV5xHVdkEJw63KvTWHsLVdSam7cwSsK+3CTk1+5saxXyCDXcCa1cSmW\nm/EWvRv4/4M2K3GEJbHTSNGZvgXQ6xU+Omvn9PPbgBup1FNp/YVXfonDli8j\n8jAswljJv8cVeLLbUFyHVKhZJqkY134QZM3Aj6LadwenHnWyMGi0V6dgajDI\ndgd78ufW+yxhEfibrpitUvcQCMn27w3a4ebT9R/q0uiFzh+RSNxmxvF9BAH1\nb6tWMrINy1a2dsuyJ29E71XpBv7U6nr/sfVWerBASw/FgIqos6X99k3mCha6\nBTdwflC7B4daj2dgndjVMXoKevjjIx8HO8pBSNFsjfNKFoCmSZboxHWsIIrP\ntMpvWq+9gcUcYGCL8v5zk0gn2pM05ZBpHJHDt0kaMhtC8PONxcNVJTKg99BW\nz9l5eEBL5XCM/50CCdsbFZ2hfEr9gQg1EKsHhJe8Yhc/lH3lQarFAr4gbfo+\n01P92PNLtbFvz+8Pkbj7HQ2QIJKLwUTtNBuGAPscVPbAJ1RDb4DygdaSvhmv\n2Kji\r\n=UVK+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4acc980440a01bb03dab896d06d37de5b26bf80f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T09:15:04.432Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.94","@balena/jellyfish-logger":"3.0.147","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.32","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.104-renovate-internal-patch-4acc980440a01bb03dab896d06d37de5b26bf80f_1637831876934_0.25133788756913433","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.104":{"name":"@balena/jellyfish-sync","version":"6.1.104","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.104","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8fec00ddca96174e0a0185b9cc1c17f97aa9213b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.104.tgz","fileCount":25,"integrity":"sha512-a4dwZSq3qIK3Vs8jlmQQJBKwPJHmPPoG/0/J/khUuLBlSvrN1Ocmcsy9Bmlm+Or3nYwc6QresF4rDUIetnXa7A==","signatures":[{"sig":"MEQCIA8LONcUlU2OJuUh77ucGKLdk+2bS98YJ4By/Al1G2GcAiA/C/bosT6KOeOH+kJMKexlB8M3BI7PYwRQgmWgWli7gw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":213987,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhn1V1CRA9TVsSAnZWagAA5foQAJe8Wln5g4QYgxBR5sHA\nfdkqMxkaO0uZ1/xkojFjAL9Cu5SCMCzUBsfITp2sg30xN2wR1WbJ23GE9LEl\nIPkS4w0grre3975u1P3JsF+abXEYbPGNtrfoX4BvNzd9XxwuHxClrNNz0Vyb\nbnBo7Qp+sIARG54NIoIeAsuieU5Zeg3hoJjmMZHgFmtucVLf+tSvvlKM8SX4\nth3YJBjEbMaRypDx1hqBcFwn3VBcu2x4b+Jswi8unLS3Kx9W2KRTo63wreik\n3NkcnqbU6+y4uJGbvifr799vC7Ivg9iLlP7iZJD/fpNiBmA9fpYbvCiXlTqB\nxj2m5NmMLGZqZCUnYz7og1fHlYsBzV+dQawvGSqWqrou3PO/lKpHEKSOijgK\n7A3IPcMK+Z7HS6SL2vYXkgtq9hoAYoDVSl8dSzKlXuje9d6RtqVi1oqE3mtU\nHwfeP6q65a/mJ8rcrULp56S+uVbWKGTrBH1yOfJ/MfemllPnAaO0xOeqKbXQ\nq45VR6VAKx0VS+N7DX1YSA3LZKNpR50y8ZvmFO9jSsu16vkaRD5e1/NhLiaU\nb/6TLMjdVtH8pELCT62gWkPUASwLkV26wBonSYk9cPScNWqFQFFAdJg0jpZc\nqUR63+UOf666N1hwGpmH917kxIhvXDym0okeZNUNrCurc6uu3XWXvDP2Qre1\nKEkK\r\n=pT2v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8d5a2c017598af09dc38e8c02d342d59348a2fb5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-25T09:18:56.842Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.94","@balena/jellyfish-logger":"3.0.147","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.32","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.104_1637832053716_0.22218563741566344","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.105-joshbwlng-use-renovate-config-9bd8231d4956a25d58eb7adfefceca261d01db39":{"name":"@balena/jellyfish-sync","version":"6.1.105-joshbwlng-use-renovate-config-9bd8231d4956a25d58eb7adfefceca261d01db39","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.105-joshbwlng-use-renovate-config-9bd8231d4956a25d58eb7adfefceca261d01db39","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa9be7150457eb4b682c3708417b00df845380e5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.105-joshbwlng-use-renovate-config-9bd8231d4956a25d58eb7adfefceca261d01db39.tgz","fileCount":25,"integrity":"sha512-GiResXz17uhjInm+Obukll7Thb0m9xbngr2o/giBqxwXg6bhjxpPMmTGlrpWO+CN7+6LfRETbSnOKdUgtkKkig==","signatures":[{"sig":"MEQCID1M+DGlb6ViLsjI8ONj7GWDdeQKttT5cbUNjXusnVHRAiByh6Ba4Blqh70TS5Jfy+ukREIXoZScoAYy3m7Xzftwww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoD4tCRA9TVsSAnZWagAABBwP/2YUU+s/JssaHLQYUsul\nmq70/ujpWHrJf4UuQLZed43hWclozAzCYnpb7WXTafy7/eBw/nnM24ECm2EP\nJJ9yIuLzhS+WiIsqDq5mw8llDHTg3dcx4YgSIacwybe9fY0zsgvB7nze3p6S\n1QZd/osxI6tifJLwXM/79HovtuNm0y4wHySW2lLM4JlCVWRlHTwPSyxLw/su\nTCSFA2yIRBzVFZhfHYjenwNL7J5eB5W2D43DAy7JU/mTb9V+ROwz+Iw7E7Sv\nWVoDxZ5P9xbwoLeJVKVrR5Z6XwI3BEbYmx82McunzQHGPhEMzh7eu0izrGXR\n9s6GP4JZAV4lVQGzxx1/XNp/XwK4RN0DiH+dAIMWvlsFXw6TE/ClPw00SVwx\nDe+nZduOx5NVq31QgQWX6I/w7lZOtxEUhgG40ITbsfoJ8y4KcTemDwGzoRlF\n3TfCGUUJyu5UwK+FwvkJ0lAovVifyMLFB1x9LQjWS59o2apQQ+XQq1/pFqys\nzBaOTPbPrr29rRdUb09/S0azAcwSwvOqCxQ1oUSfqK6/RtqS95s8jHpy2U5r\nb8a1X6wXs5U0JW9qLTK5CirgpD8hjnTkaKp6h6DUzt/cq15nZy2LeVlQR7jI\nRBBYVh4/2kQEqGcMi2imIS8uqs+WYQUsmua024x6T+LC5Rq//Oovf8qpAAHg\nO/b4\r\n=Izwk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9bd8231d4956a25d58eb7adfefceca261d01db39","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T01:50:59.015Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.94","@balena/jellyfish-logger":"3.0.147","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.32","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.105-joshbwlng-use-renovate-config-9bd8231d4956a25d58eb7adfefceca261d01db39_1637891628936_0.9140176752044129","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.105":{"name":"@balena/jellyfish-sync","version":"6.1.105","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.105","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"95fd0651d73140d83e7992268dac9a1c3006b6d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.105.tgz","fileCount":25,"integrity":"sha512-wnlaAoMxwe3jHT0WezUVAbaX3JSWVgldqoxgCGoM3KNRNJmSBFlZBAbvL4HoDvnaoVSyUhIBcK+XyNdc2bWrKw==","signatures":[{"sig":"MEYCIQDkoWnpOKoUYndzswLlCnDiZIDS072YCAonXsyX2cUZEgIhAJvpqp4JmlsrZf19lG0cxfR5ah1AMVftFqhgnIxk+EIW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214061,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoD8TCRA9TVsSAnZWagAACIEP/09iTQ1nbpx+20+WK4sx\nBC7itcoybKc9muzl/25ugkh7f+Nw9YbrnprYgbnPQgG8N8C+ZhQKkEwI0BzE\n6MSI1LU3SMzWRaQiKZBR0vovlsaxWd1YH5R+9cMP54f67sjY82rmDYEBq1AK\nR6ZQ44tIzTWgp+QJO66cFWb6YQcROqWLfDg3opHVAhM0md5oyaI9+RYiKwV0\njLRw8crdL+VePR4yK5x0Os1b6i8ss88V11iP6tqdF7g6nVQHVr8nOlQaLwpi\naq7ieiiC8v5Y2O0g4QLXlj35dWuLru8uIqpYpWeJpi+1T86Xk5PEd0baW8Ox\nsQvs3gcL7MCZHuO2cQXZSdRqNvn4ySekchA1tZ+uKcEdTLXKYGGF1uqrvHm1\nY0NXRzwwLwzl1O+gcnIbk52Y78erApYR3ZamWAs14F4kAKSX4oAx4/rf1KI9\n98q/utf3Pk4JZ/EMOjS7wc3o+F2QIFZ2pwK2s8O3dsKDbU8Q+B0pyzJrmKDO\nETBbWWwuzbCStUUOwLMMU+m5v4aa/jmr+bzh/NCDM5BzhgdgkxvSWSeT/d9j\n6OEhz4oTPvFLnh+ahnj86F5aLVUO1ETJlx+F0S5+f8W+d5Zcvb9Ek+2O5JYD\nyhQ7ruGIrrS0Dr6+/q6L0Y6GapjLgOM3VI/TEKYvDryG932dn28zVbDV+O6D\nUUic\r\n=7zYS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"805cc57a3ab6943793deb1df4c14cf9deb7f5068","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T01:55:52.148Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.94","@balena/jellyfish-logger":"3.0.147","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.32","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.105_1637891859797_0.924448037672793","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.106-renovate-internal-patch-11f8cf9853991cee5077b81b9c75a217b6a2426b":{"name":"@balena/jellyfish-sync","version":"6.1.106-renovate-internal-patch-11f8cf9853991cee5077b81b9c75a217b6a2426b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.106-renovate-internal-patch-11f8cf9853991cee5077b81b9c75a217b6a2426b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"48c6aec9e7bc8c1b4a1b287aef00f8a52ed77089","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.106-renovate-internal-patch-11f8cf9853991cee5077b81b9c75a217b6a2426b.tgz","fileCount":25,"integrity":"sha512-aYJewW0bOTOiJWuB+w2A5bTXQWxuHPDYmD3affkO28NJ9AEN+GOV/CDlKyhKgX277lI9zY3WgilSpi5fL1vI3A==","signatures":[{"sig":"MEYCIQCI8f6usEysxK4sC2bSuJclACVBTwv3tPTtezrpze6d8AIhAJalTTwqdWdOsmHda5H5mQvoHevf68WuMtM6l2f6gdg0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoLD2CRA9TVsSAnZWagAAZwMP/RM/bSUJEjxeEEXpy9jn\n5LbvoOij7HuU5sGgFJAuAPtMDRFr348ziepwTg6ebFuRxBPUbI+EckhefMKA\nGnsNxGaemsjzJGEniO9guCz5KTOVm3ZGOEOCKBkd6DucaAc2hn+T/JnU3MzA\nCjFsg6zWn6PT/3Fmdeg1SMpoDu4PMhkzbgXdHY2QCVt8Lx9ZpKCagT/b2elp\n0Etmi03IFc8jUJ3FnUUNDBXVbfqZ3qfckiMHJgts/UXiXTO7IgK7/kfYQ88C\n3SGFhlIe9gOFmKJO9J9t1d1JL9nC9zsQtW4thU19Z4moDcsu3HEjXNeupCI1\nZ8OhHTxQGP2fkoHI+aqwtqh1t461NXxbI7WKfqIhbNUy1QphpcI7wChcUEYn\nw331FoRw07JcWoO4CRg6rQx9iJvZVrtEg/v+0N25Muf0JvYJsL0dP8SXgD8b\nypv2xDbTxvm4QMpT2YOlcy03/cmPHw6rTkWA7G/btj9G7lIVabZNTWP3LfPb\n1YQUuBfEGYqcLs8tdDe8SmSIjx/EVMdbFnJ2a0N4L5VHe1l1SCw7qCIAQBRI\nFmrTlqwJPgqZ9eno4aI1AWj82c2Pl+o45fpBMCAifqtmHQyyTf8HHLpb8pKA\n9ASJeCaBwkulDD2Xp4M8RSGQWUTbvUClAQgJZx9Iw0BcHs8mttVrSelQ7xWm\nPpAF\r\n=oS5i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"11f8cf9853991cee5077b81b9c75a217b6a2426b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T10:00:40.417Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.95","@balena/jellyfish-logger":"3.0.149","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.33","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.106-renovate-internal-patch-11f8cf9853991cee5077b81b9c75a217b6a2426b_1637921014608_0.7022848196599776","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.106":{"name":"@balena/jellyfish-sync","version":"6.1.106","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.106","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5e5f5e374b24b92f910a28c6096c7e3a1b5edaf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.106.tgz","fileCount":25,"integrity":"sha512-AVvzEHR9NSlOt3WB5UD32nbB2HsTGK2SExZc/69FRWnC/tXiWnDtSlA0pZcFbjjDmVsn+IXTmSBwODwi8maDxg==","signatures":[{"sig":"MEYCIQCEB4Ii2+2/8surNODjf812yOcpTWlixr+ZA+uSjVcwoQIhAKIa3m9aRPqi8t6eRu7+ee2dzWVsWPp15YaOUNKgP+Mw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214133,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoLH3CRA9TVsSAnZWagAAcBcP/3y4pC++Pa9jUFP28xlX\nMe5aSMvWpe5tDp0GLnI6VojoH2VPtcpI0eRdiV+KyeHaZsSgJxscHGASAgqX\nCJG9QW0Z5+TcPCEhJTxr69KXaSgKJmQrd+cIJI/Ln4vgBgnvUMLgbeN9fAdb\nv8ImN8wi/0f3bAzn9Ru4eP6LQp3+nqz4ZLD4al46TILYZ+yj1L0kmpubP0Tq\nzfK7af9dmnJBhdncGw2Ow7TuXoEPwimOZsEZE2Awk/cDMaGhKJnzgtSsP9U7\n28ifg89K8Nc/UazQWJMI10rXmch17tHBrKH0LAHIwE3SFMnBMQ2VeeH7pOUW\ng4vl4wTowvHVduujSr1bAj+KYtwLYOTOX3AQAoRikU/F51KjFHWNHqGDemc5\nikr4yFS91VTE3WpCgy5boXcAxsqEloOAd7KG4Vqtx9jqAldfW9PDml6cMn0h\n3pBJqYYPpK1R5BT2ibF8n1c/6fhPog1xG1MLY0CgLfdtHMhvi3Jh8+QmcpDu\nn86X4J6xonHGbUYXH3QHNHflLc2VgRyVe/qcTGHLme/I6wxdE7LhTwcqEbF8\n1ifnPLyGYOUv4WpQuv+mxj0yLaCyiqYXbt0Ms0MPO2lFsJqzQhfKxaXQVUVm\nhKfRZUfZjFBAX9KL/FpAGFi+SIn+ml8wGvkUQpAuH4lPLFfl9xLLFyrZvNWT\nFEgG\r\n=6FNl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c8f41dc38194fc28828a57893e29b62d57061ea4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T10:05:30.554Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.95","@balena/jellyfish-logger":"3.0.149","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.33","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.106_1637921271243_0.3772836213318669","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.107-renovate-balena-jellyfish-config-2-x-8dc5a27a0f8ac2237f1e222c971500d9ab3fef53":{"name":"@balena/jellyfish-sync","version":"6.1.107-renovate-balena-jellyfish-config-2-x-8dc5a27a0f8ac2237f1e222c971500d9ab3fef53","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.107-renovate-balena-jellyfish-config-2-x-8dc5a27a0f8ac2237f1e222c971500d9ab3fef53","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0ed968cadcb3a25aa5b8763ea405c897acbbd0d0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.107-renovate-balena-jellyfish-config-2-x-8dc5a27a0f8ac2237f1e222c971500d9ab3fef53.tgz","fileCount":25,"integrity":"sha512-dPmpNrxtZE38PV4c29ONszQcT5dVcjA9sn7ZTcOewO3zKZskFHFp3uM81WvAWHCSzTmSM179JlD0VjJK61+IFQ==","signatures":[{"sig":"MEYCIQCZMZjTiiNmxQuSWMhTtPYX+Du+3hq4kN/yTd8Af1H2FQIhAOFvrBuRO6vG11fW9k52SS0d5ER2EUTzmZNJyWU9fD2E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoLKQCRA9TVsSAnZWagAAY4oP/R/m93hj0zPxkjYLkX3F\ncYUp6+awJ3N6zoWIjuOK1MXfYfV+fUeImYaonxzyA5SkrCPwXXcNwRhC8UBy\nSYLEZAhjLFa0Jbpoo5ipwPJq29cFSriJgbL8pL7tUfJHZqaM1uRuN51ev7Bg\npFH0L+py+BYUN7RTaPQCW3RiU8fpM0qo9BqepWdfxe4CXqtOyXruJCWoNkeN\nHHk33bVqhFPPyKLrjHDu/qquU7bVhUFjRGo6Y6ud+L27ekhPduDUK93eFMLw\n7TWxRGvCkVLxqMaScCd4knYUaXsFclb7UlaR51pNMOmcCgC8qf2VRL3BOiPy\n2N3Ngnacx+xq1OpgewLq4I8SP/a0rfoJJBAY9PatifdH+z9EdUppsTkvIBt2\nRgYsLeIfV9KvYFDk9QW2jrIBI1agvo4iCYCHhQTH+CMF4xQpeL11KCpb2LQi\ntaRS5pqjbjNI1ubj2QBPQ7MppldnLztIAeSpAdk0UVUJYp1uukvToxEFmr08\nf3PB2oz5eZZ/O9H//tAyF33fyVxRMbCID9kUzc/GjD4JaPOU8G6uU4E7DA7t\ngKGoJbfQs1/KKD+UDr812wjkvZxNeUxxNWpjEgKXva8nG6vIRb35WUtJUlY/\nGEMTTBEfHh8yVhwmHLL3o6j14kQotbrtRzGbfXmJTE/OqmEnSdfCaSaHOCWS\niMVj\r\n=aMiM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8dc5a27a0f8ac2237f1e222c971500d9ab3fef53","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T10:07:21.784Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.95","@balena/jellyfish-logger":"3.0.149","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.33","@balena/jellyfish-config":"^2.0.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.107-renovate-balena-jellyfish-config-2-x-8dc5a27a0f8ac2237f1e222c971500d9ab3fef53_1637921424211_0.17518050374176464","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.107-renovate-internal-patch-893f272f37aa48d0340d9b990790711fc505a684":{"name":"@balena/jellyfish-sync","version":"6.1.107-renovate-internal-patch-893f272f37aa48d0340d9b990790711fc505a684","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.107-renovate-internal-patch-893f272f37aa48d0340d9b990790711fc505a684","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c4828ad63ed3c68d8b1489008c1b730c8e7699f5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.107-renovate-internal-patch-893f272f37aa48d0340d9b990790711fc505a684.tgz","fileCount":25,"integrity":"sha512-McfOcGiAiPXbz1hxccbgxjZq/8GB3V0z1c2HY+XL179wgE9gLfhV3raX4jFdyLHxihsorPJGdsUFpm9SOHMnmg==","signatures":[{"sig":"MEQCIHhNSPSGa4aODvE0nCfjcMjjxu3pWJtxxvDU/NF39Xv7AiB4iy0jTAWtqvtq8tDPEonXgLqLP+brWOuI/6O9lVu9OA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSflCRA9TVsSAnZWagAAGu0P/RXTJ2PBP+JBmEJdOH/Y\nS+pnN5MjPwz/iwGGUeEXMTlV5TvWmXIva0QwnznU+BYnv9zjzWEnZ66ZTZSJ\nrG/VOoKcHHsLxCJbhGZXwETV+bKy36+05kfjNOFK9s3zXrLCSlJ/04Q/6Eei\nI5etOWVohPZK114wvs2/HFgFH6RFhuteUH+4UlF6uwPqDwL6Hu1pfBKchl2N\nPvrKpxXaAj7FA0IYvTCcFQ++zk/15WNnRD5Ct5jHw4d8wytl+hzi6MaitLTR\nJ6jXoOoLRkSZI+soU8Zdo0TbufJ7jycDB/ALX0ceJi8G69a3Jdp3mb0pgN12\nvcq0osy0emQbHEkqNMaqUKYx6/R9wnqlj3svRFvnZQQN4fYvZfuckHBDlCwf\nCFxj0lAdlTcYL+l7D5zcbLVhiNT8M4OZgkKWvwSsU5BMacINMeLBtq1CZFwU\nsg0zFeAn/P/c9TJqCZuMO7AekF0z3W86tEi+NQKUgZ/ZEOxxuyb+ICs1GaUz\nsfhBxJnmArvnX4AOL+/KWUMbiuOTxnc6V+NULAuC8FaaaEbaXe0+x8GAWVvW\nM9FhgoLGu8AgaT7GVxP4NHXhHMiQeW79bqWy0tUZhRY+qoP+Vh7///nTA2Qb\nb5/VRQiVsVYXmOWSn79Xxds3cv8BoYgLKj9yQ3W0Vxv6lz7OUQigDQl6rL/9\nNMal\r\n=Oc82\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"893f272f37aa48d0340d9b990790711fc505a684","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:27:48.133Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.416"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.107-renovate-internal-patch-893f272f37aa48d0340d9b990790711fc505a684_1637951461348_0.7028356483800178","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.107-renovate-balena-lint-6-x-c50dad1f2ffebe650c478c74479c91a83caaef98":{"name":"@balena/jellyfish-sync","version":"6.1.107-renovate-balena-lint-6-x-c50dad1f2ffebe650c478c74479c91a83caaef98","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.107-renovate-balena-lint-6-x-c50dad1f2ffebe650c478c74479c91a83caaef98","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"89983aac55139587215f0d10919ff43f6331c659","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.107-renovate-balena-lint-6-x-c50dad1f2ffebe650c478c74479c91a83caaef98.tgz","fileCount":25,"integrity":"sha512-WPPgUyrgvKTeCA/LLDkzpYZvwFoyk1rJU3Od1Ju5cLY1RqeOikjMMCVgY2UQB2r51vcjhfXdsEHmpWqczNKlUw==","signatures":[{"sig":"MEUCIHc4zmsJwC0QGnVcypAcQ4FYVoiVNCcqljui1Tftd6J1AiEA4jSkx/BP0u+g6/o0DaKbZKc88WCI8IVAuk1ZXfJcfmc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214290,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSf4CRA9TVsSAnZWagAAAJUQAJH1CvUX/gqX9RpI8LJE\nhic+X7EUhnM6FWp/Td94PsTxjFfizIjl3Lbt1LNzkRPYp+cmPXcEBNeodUbM\nw7X/6EJRbSB2vsnHgjb3QpqII+5HTHkg9qybl+xZ1wFArtse4je6XUHxW0FX\nZWqcL0JdOioMge4WfjxPr0oGol/hLojZ5ivnEHXVAFgQgALlHPa2vZLT/XeX\nTLlJzkgBomsPK45Blobo4XbGWsNzor0qCEmMjlkFCOaOKBXLy7/gFoJyGKSU\np1BPED8qtBcIIQb/Shc515T2RLAkUtkKhtiJ91/+VeZbtR9j3JVCGPhoim06\nGjWyz6CEG+qzQsvfIZgJVkHPqgLnbOU3DXxuWT07vCqC8UXCXrxbtQHNE0+T\nsjCRCkgIJOLcuRc/zUe1BljoKTRpGVyZJF0u+OVgugP5/Q4XivwTwSaKGaPd\neFyvjzakN5HyGiwnwGo/i6f3+CtL4QeLRWCrPqHZhgH+qlOhL14HmOlTwLIU\n6ze41Z/5chseKmhep/K1nWEJ15W+28h/Qxlp8DvoSHwCscSuwkFeBtZOg/C1\nt0d5bfLHfKNwJHRnXwXzxJEwZ3lfOj0/WvEBKRdA1Y/xuLES9zhpWOzR+6uo\nHPnjWuPgp3acGj8ODN5AbQ/qo6oFKvaJl5kisopo/1pznQymnjAiLSRzedig\nCd1U\r\n=vlho\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c50dad1f2ffebe650c478c74479c91a83caaef98","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:27:55.670Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.95","@balena/jellyfish-logger":"3.0.149","@balena/jellyfish-metrics":"^1.0.414"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.33","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.107-renovate-balena-lint-6-x-c50dad1f2ffebe650c478c74479c91a83caaef98_1637951480266_0.7949387417274842","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.107":{"name":"@balena/jellyfish-sync","version":"6.1.107","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.107","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87b2bacb31ad6ede667b3b0d4b845627907ef46a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.107.tgz","fileCount":25,"integrity":"sha512-6ek1i/fV0pjbnbfldxin0HjJpOXB8ikfojXpDGymxWhpLqgv4H1nUAOhpA9bw6vqjT0ITkcknSclmTyIlFCcdg==","signatures":[{"sig":"MEQCIFTVtiLvqvZvf9uqZmVnhCgta3VO25uMjJGcnFSurUQmAiBOReJVopDXD3njcdM2Ksu1reZiJ68yvOBSYHzNl1+w7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214205,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSjNCRA9TVsSAnZWagAAqtsP/3Hc6lmxJMIUQQrqVQO5\nH574d0RW97VedHM2vFwxkAhgqJL5tcKfpz5n+X6ytf/tRd67mw8d//FFtbOI\nAnsnP4UYF52OB2uwutnqdVAqCTS5ROcQq+/26enDkVTylWeuX9hXPTpfmH2u\nVyJU3d2bftzDBV6blbnKSZ6BF5SJvZWHbRztJdVjiXoMYM2og5xNbxt99ME1\nP6OVLbEH5zeTmdpiJ2kW+jrTpp6s4nmQflKwGngLrP/cuLuLQv9pNImaJqkH\nAiVd0+HagV7J/GCH9ErprX09C2vwNLBa9+2iDoLEMiQeNvT7o4aEYCDgJHfA\nfxz48DTErMgvnOjV0YPpu/77j494uTB5GNDOmqb/sIXQvyD3ksgFD3/KcAR7\ndiZoofmS2VK0wBX02CgYj5h1HJwK+5IqBFX01oG8S7qLawVxZd/g/6eySNYj\n6uIHDMfic6iHhI1A15/QnAZeaSTtnYlVLFGxru/oDd0sXPbMK90gTRCDO2sr\ncZTg2ikqaQozwtDIJJA0Abf9S/Iyo2OTVa7fhIdpi+Hpvl9atpbv8Jk8e/yg\ni4fmN2TXi9+i6qSqZgrIuaqtpXcDNrMi8ImjsTGz4znPa06mBCrOez7Mzyef\nNUPYffPVY6vr9PLG8nLmHXRMXhIR015s8aqkjGxH29KFPApgjeneqrUYyAK0\naQln\r\n=4qTr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"543ecc7d3e3c6d09dfdfc28f220fc6599e831a84","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:32:23.234Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.416"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.107_1637951693776_0.5379796242829109","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.108-renovate-balena-lint-6-x-a91ed80bd973cbf56c3a074f51692373de23e515":{"name":"@balena/jellyfish-sync","version":"6.1.108-renovate-balena-lint-6-x-a91ed80bd973cbf56c3a074f51692373de23e515","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.108-renovate-balena-lint-6-x-a91ed80bd973cbf56c3a074f51692373de23e515","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3dbeb66414d7c84316d1a80108e59496b8cc94cc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.108-renovate-balena-lint-6-x-a91ed80bd973cbf56c3a074f51692373de23e515.tgz","fileCount":25,"integrity":"sha512-2FMcfOw2uifN/MWNgdaNM/RXDo/GnyHGkvnNGKk+Wzxov4gkTdH5P8Jo15cZRSbCXavARfNKNCAPSiAjbVvfZg==","signatures":[{"sig":"MEUCIQD7adJ7/d2LOQ1m5vAmbXIV4pviHd4a8i9waBvJ4OpWXQIgNYLPNU8x0oeqqPoxvFiWv0wVfwJI1mgtp1w4Dt5uhB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSl9CRA9TVsSAnZWagAA670P/0DsXNVcqvn+J63C8iuk\nFOR2JNLZ5omovJbpobgm9xtfcwd++GVD286ZmhMwiSE4Up59YeJTMOcEjMya\nH2jiZ7SRRqjcVx2uls73VH4go3h+FjgkqRNqgLG8rMBgbsp/fBY6o4+HKE+L\nBJNDq6MGcT33p1aOu/La3cxC6MXp6PBiQubcYWHEiUN88qcEgTgSWUsBxC+s\nVycysGfPQfKkcNoTV88SGYOWXQbuWa83q2MG4KBPcJ5fjFwnTRlfL2477cQb\nTPGuLsNSEoJi3QzahRU3UQ6jLlkCMnsp+4caEMsZAntpPTWDU5loXZb9oN3F\nDAgDyVmAH0wLVcfqzm06PI/v5xnqMe3apuXC4jbs3lapbPk6Y1YPaerUwxNw\nGeZd+MghSMp7QKUTdX5yN5jEGWXzshT96FazqiJI4AX4zHpbACVl3ukGYfD0\nbzRnW7zqSYonEtIwd/iDndpoZRjAbReg5leGf2wb1efpTA00cIwLLfKd4mFD\nV47mOED0glCGogODV4RDbnEdHAF30MYou8KS/UxHprCt5G/BmvxJkDTwHMdD\n6CXOVAx1rNlogti9fdZkD0XX1zaqq+K+ausX7lHH3xUFn5oD2g72D3LcV3Yp\nREYeBgsT4ZTuca7n83GQe9G/xAmqsa3bb9mwc4qu6gPQSjQb5tDOb0uoldX1\nIlQd\r\n=+UKR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a91ed80bd973cbf56c3a074f51692373de23e515","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:34:17.598Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.416"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.108-renovate-balena-lint-6-x-a91ed80bd973cbf56c3a074f51692373de23e515_1637951868847_0.8311918563959935","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.108-renovate-balena-jellyfish-config-2-x-a8c75fc8669107e6c4c0eb964c3124f6cd6b758f":{"name":"@balena/jellyfish-sync","version":"6.1.108-renovate-balena-jellyfish-config-2-x-a8c75fc8669107e6c4c0eb964c3124f6cd6b758f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.108-renovate-balena-jellyfish-config-2-x-a8c75fc8669107e6c4c0eb964c3124f6cd6b758f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2f0752c2de9770dc75baf6c322b3e2ddb7a90791","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.108-renovate-balena-jellyfish-config-2-x-a8c75fc8669107e6c4c0eb964c3124f6cd6b758f.tgz","fileCount":25,"integrity":"sha512-cs8PBWk7Dq+TKL8+z6Bcj2N/VIlGOJtf7qyvjoJHFb2LFAqcMhvdC6ZGYaZKEDQTZFErAyKj7auEbvC7UMb00A==","signatures":[{"sig":"MEUCIBaYI80PIGyCp9FZ35fZ/qpC/tyaJk3VnvVdzSoWB5vrAiEA/7nBF1bFZ/Xc6cXvBVK63ZZo1viCC2+uUpf9Lckqm84=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214381,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSmcCRA9TVsSAnZWagAABaEQAInj1MD6aUstOScjfZpG\n4whFof1+8BxKBMplYqzNgOG2GRvrk1qkYwkKAlXcNMi1iMRoZeaLWceuWBS1\nwT3gHUPCXWgPU20eNnPmmlNZdrYYzQ+g2VCTNrGf4SVl5A+5aZ/DzoBsNVZg\ncV2BYRQQBNdF+nzSnEJKBjFLNVToHdqZN7GOzYqecq1qPbSSbw7Rjv+urIgO\n3Tl/xDjkFF3mSQVyJmJQgNJnrEcUgQ1UDGg2I3KXKgd1OVgO9dCIHMYHfQzn\nmbLV8eS6I5/3kQPs3UEgi+hs4psyApngjX1F9f9T77FOjSPB51vaTlVLEM9f\nsK6tYKxenB9znzu+/cAoLN/1NOUOCeElztjWWNwx+8sOSgd/CtAh2lGFtdBI\nrrscYvJuMpu4vgYFagqtc2++irwam3Q5JrLGSz7wAIOQHWK1xKCCNBWknQyf\nsSrGuvpWVOdVti3txjWFft08AOe1rkgAtVvc/+nHfUxNjL/kops4eMRNUDhV\nnxgN3ykAcGMo9LcC6mTt6c0VQ8wrHD+PtNMKfNRvM5iAIN1EwPE5duA6cfnr\nA4WFv/eZnhJIBZeuMEBzqgLIJplSmFv0ULiOTnGCjipHkeEv3WalMqjL/S0a\n2tnWhQ5JcNUnvf/5pQvK/34gTLOsKvndW3Nyx8EtMn1PU8Ewg8xQjx1Rng2K\nn1Ks\r\n=xhre\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a8c75fc8669107e6c4c0eb964c3124f6cd6b758f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:35:09.093Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.416"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.1.1","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^2.0.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.108-renovate-balena-jellyfish-config-2-x-a8c75fc8669107e6c4c0eb964c3124f6cd6b758f_1637951900149_0.5041734668295612","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.108":{"name":"@balena/jellyfish-sync","version":"6.1.108","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.108","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6b8e437ee062ed572638068f97ea6fdc42f2ba37","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.108.tgz","fileCount":25,"integrity":"sha512-hjrkBIY8KyMf6wMytfioAMG1ivPChh6Ol9UzFzaZwPU7ekpWw4NoYUtrnM63x/LcuwfOxAKgu0CuAGHX7Jr85w==","signatures":[{"sig":"MEUCIDrSYK7DbqWVgxlbL4miCMCHxB6FDyCo/WaohLnt1j8dAiEAghR2m6hj8/zXrUkENw3ZxdR0GCgw+/vNrKcbjicK6oc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214296,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSqXCRA9TVsSAnZWagAAUVgQAJwhg6cRGlZhQe5V37oG\ns+Kt22fK4//YXEg3CCxBk7RvE0WaE5vEATe15G1CvrS+8/L2eJJgk8umBvcR\ncMAhW8cuY3kQnrlRvtyZS+lLZmq3cwmO1Y6x6mjlGiHwtBO2XPb6ON2LwI9s\nsWDzjtEV+ttzklXqUrGU5Ouq0Z7jXTSZ2wrSkdel37ZqWZyLtaaLU5NdvNg7\nX96knOkmkQ66LMkKNyDUJHBGIOIACOfXiDto2TgRxQEKAaq0kYPLXcODLmgg\n9iKYuRld4Z+lZIFx2u/JrhXFr3JcdJgP/HsR90tx03oUqTibafG6FRz3aAzg\nbt6fB7tIUt3X1JPcspuPtkas/u6Y7rQStPlvfIcvJBjco5LtoqUAr0rxS3dm\nhNBohta9pmQXdLaDfQB2pOsCRFt4LcVTJMWomsgKDERegV4chtWQgdytEDZE\nLZKQSzBh26ZzodW0XEqXwFXZ7id+qWadLQtX4WzlXzGtBYSmDAy38vOc2KFp\naeBuyBmaBc5RcgI38okvKP2zLefYojSuEzUd5SPahXOBUxfe5NzH03lw0XbI\nswWKHOpRqbvsC/YTe4YfWIL/VE1InqMCEEpGJvHMNfnKvizZticdSZsYDyWl\n1L3kxJYoAE3KJ8PLZ9kJttaQT6/l9VJ0IGWwPiZg2CWvfybB1zdrX8EJB6cV\nzm4w\r\n=HeuW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ff7606dc26cc967ca4dfca77c9c4b8a0ef47b1d1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:40:21.530Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.416"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.108_1637952151316_0.13232572231966877","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.109-renovate-balena-jellyfish-config-2-x-dfbb0e01f5f83985e5279de4113b5fae1dda5fe6":{"name":"@balena/jellyfish-sync","version":"6.1.109-renovate-balena-jellyfish-config-2-x-dfbb0e01f5f83985e5279de4113b5fae1dda5fe6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.109-renovate-balena-jellyfish-config-2-x-dfbb0e01f5f83985e5279de4113b5fae1dda5fe6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bec7d9fb4d5e0fe65c03b7e3306a0e658ed909c8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.109-renovate-balena-jellyfish-config-2-x-dfbb0e01f5f83985e5279de4113b5fae1dda5fe6.tgz","fileCount":25,"integrity":"sha512-QDW3q7obcNc4pB95r5MZ3+mDEycQ7/FkZqe2s0zlz5f+ll8sSappe6ze9lV3jhZXXDWSZ1oXpwW1/gUHs9aAWA==","signatures":[{"sig":"MEUCIHDwTQSAA/n7YG4i8Y2Vu3/u7EQb6rJ1KcCU2INrNIrwAiEAzvna1Q0TOzeZI+HAiD3OfOFKNfThj0z6o6Ys4YP6s2Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214472,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoSt9CRA9TVsSAnZWagAAacMP/iJgj3iO6c+sFodmk9oy\nqJP658tlJX0cl+9PCajAOH6ma1GBgr7blSqjT7lR3QGTxFtsPcS1iUoMFTBf\nhlGtPc7TQm5Baf11i1J3lMDowRYBLEc9bVM1+ATQJuvClJICnnjyGbDy4dHS\n4sZF3jwv+2O2W9wryDpObawNph/xvifgq7wbLt7XXIxvAt6ZB0T4oqKipHmH\nHAnrXh9umDZzx3aseLEhCt9SFI6Wzk6jUCzojZeISm1JSBtxfo8ZHHwqGzPa\njb/hDLWE2yD7pucJJVO4DXlWlM+ODCoIlp9vVhdMks8ZZUhFgtMZylqhoBhH\nagvKzREHRqBFaVfnbcild31afHiFX00OU2kg/yuvAGz5VjXMh5q5PyAp85/N\nLftVlTwiXXqAy1pE6lFlZeXzRmginkmysOihLqs0japDO9JgEyy8s3zXhoag\nGXsCiCTn2CsgV4VI8QTeY4+AXOEaNEHHy6xQ+Y9Ap6UHV5yeV9fNALJLwQVk\niShF9uAJnrCWwUYa7UvcmCnFEVRi3ufMuSgj0mSxDakqZmfqsxKBMLACyo6i\ngzOkTmcgn/HRz8kvMltX20LtJCFxqZ9yyWxo7+5xzePCjnme7LcD2HBm/5jO\nOU1s93DoN54FbbgQ9z4QvQU/GLy9lMZN8VcsRncJoSFYqsZ3qBhBoQTRlF5q\nKxa/\r\n=W8kt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dfbb0e01f5f83985e5279de4113b5fae1dda5fe6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T18:42:54.087Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.416"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^2.0.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.109-renovate-balena-jellyfish-config-2-x-dfbb0e01f5f83985e5279de4113b5fae1dda5fe6_1637952381384_0.07858661952479462","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.109-renovate-internal-patch-64c17a539b93e1807e2cea3129514d82f0aacfc9":{"name":"@balena/jellyfish-sync","version":"6.1.109-renovate-internal-patch-64c17a539b93e1807e2cea3129514d82f0aacfc9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.109-renovate-internal-patch-64c17a539b93e1807e2cea3129514d82f0aacfc9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"982c8daf9acf11f6bd9c190a32da43689d8fc49f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.109-renovate-internal-patch-64c17a539b93e1807e2cea3129514d82f0aacfc9.tgz","fileCount":25,"integrity":"sha512-m0U7hx/DzhslhdZrCcnEEIUJIaFSSIg54EqQfPEoc9d3eRqwRArYj+SNTwMBDJ8tHpCGHN/AHS+75435nb6Aww==","signatures":[{"sig":"MEQCIEj3RXwPqwzQx+cKKx/atwWEp2wl0DzXw/tYPYW4IHszAiA+GjisKqHf6f+ykvBh4DpuRprb5i76UC4I7IX88I93ZQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214467,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoU9pCRA9TVsSAnZWagAA7PYP/i5agSrw2QWyZFmWqW8y\nsOvrkC/X4yYakNXDkzipzC7Hs/Lds0Y1FHerVFbtI0Iz3X3hZ+lSYyZl7wks\nzLB2JD+EKc6XoA8g2KuzF25Q216/ei1Odgqg6VSEb/l6bRsYq3w406ljwbeq\nH+mKdYu1q3tWHCupLBxgwd/NMVqRoBG85QPua/cA6v4LUbFVPlIp+5wThknW\n5FmCY0oRqAzQTEBIdmXGi1biFu6u7P/FDCNvG65NjVbWtFkeNHeorR4oy4h8\nUoZb2wwaWmI+6HEiI9SAk8gINkg/pJTW/xAAyjNBvoCOyu70QAse5BiY18fr\nOJW/nWHbfgCxQwJ7iS12lzgUT8HlRjkrpBrRcqSwY+HN4MEaVblFDMqNvn9X\ngAbxI/dYizQJ3jsLdLaK8aRkA7klKwpHgHquOvrASvrxirhJ2LeXkrZWABbL\ncHNLwWihR/w7Lz415gT0MEYrnhHVUkGNyOsP7VMY3vcw9eQPDOGrsga4bvjQ\n/U997hfhtWXlo9Q0hSzw45SPVFtAgghunyOtUkQ6H+VRjR4dzgcdIa8MQpU6\n9VwhO7o/TPTATtLCJuWdT7X20hVVSRWFAZSME4HF8mX0V57ahyuuhn1D6082\nR2afPsCttz+mWNyKLeNowVFzCKHzCz6cWr1gmajQrB+sEFLtLZ5NOdHatrOZ\nHE0r\r\n=cXm6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"64c17a539b93e1807e2cea3129514d82f0aacfc9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T21:14:54.630Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.109-renovate-internal-patch-64c17a539b93e1807e2cea3129514d82f0aacfc9_1637961577327_0.4380134847019217","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.109":{"name":"@balena/jellyfish-sync","version":"6.1.109","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.109","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0628a6587b218523f0953b600546ed1e07aafa4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.109.tgz","fileCount":25,"integrity":"sha512-VPr+qNwXK6Jh778HR4FGAgr7waXrGbgoLsebl0jhw0Ln7w2sjXomtYwcqvhss0/LP7zgEVXkl+iV8mmIoAjjPw==","signatures":[{"sig":"MEYCIQCmoVTocaC2lQypzNJs+uuNgZ6tML6RWUsw/4lwO+QVxgIhAP4mTt8DZy6dhdOTcsj2C549yEVXZELWxC+6D+cCYkyK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoVBCCRA9TVsSAnZWagAA9AoP/0aDVCj9M3EQXriAvW3T\nrscvdpH9B4M0KLgQCkGFYCUORZODlP2PI9a46hgl6wRsm1J3owdMfKMgDV5k\nu/mej6gGza5JZ0xSa3u8uKeg6aRIGTQHV/GS9kjupWJZnDvkDoiuGIh2cFW9\npBt+5qT8KCFXf7jNtoyZMk1nZynwYArcDqgRAnTjN/q63bx1ADwWMzSNbBWV\nLdFAtla+EmCfHVtmy/TxbWWVJZovoXC1Aw4w1lTr7elh7vxYwznsIr8DAakZ\nj64Anfqr2gZ+3G4jC2Et4nWcolbr21lvQNl2bg8Mq3KWe1vZt53U7Me9OE8b\n2koI6JSJ0O3PzflxkwWoxdrU7Mb/5mKhWxRl4FOhCr+9XH07K8SOdm9I0GBB\n+z1IDaY67cySbxW8Ve+sB/8umRjK28qQC0TpLw2DeWV9lx7Dic6zx74b3kon\nQtBpS3zkaDHQ3HYQyruC5nDa9vHEZwEW0EjYJGU4Sx7OudWzugrv6Ojj+tY5\n4KizBqM2b/TBKTwBmdBHRp0muGscZTb9SUyyy6wV1zJ/1LSYhavc/fGgi131\noagPQ2Kg9EEAtFlGhCJNOqlwCqJgmhR35RSNPICFnqXDF9zdTZQY/IS06QxO\n/Fq77A4n0eNKAIZAnL/1/sEpfILwtQReii85NPrANvGHEzmoAgVpht7KHUf1\nENsE\r\n=NcRK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"04e859147b687ff4ef563e5bb7bd572d5d854466","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T21:20:49.693Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.109_1637961793926_0.49899408281091895","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.110-renovate-balena-jellyfish-config-2-x-d102a37463896af675bc16cf25d9d53ec6bdedd0":{"name":"@balena/jellyfish-sync","version":"6.1.110-renovate-balena-jellyfish-config-2-x-d102a37463896af675bc16cf25d9d53ec6bdedd0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.110-renovate-balena-jellyfish-config-2-x-d102a37463896af675bc16cf25d9d53ec6bdedd0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5a2123e4ef2583a19bc559315f1964cd9ad7bcb2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.110-renovate-balena-jellyfish-config-2-x-d102a37463896af675bc16cf25d9d53ec6bdedd0.tgz","fileCount":25,"integrity":"sha512-LbXWrbkFH076/DFVfAQw1868CDa11BL0+lb9Txkvgj2tJiE85XsRLErlnY/+Q1MKkgaw8AumkVe7k3fuOq7j5w==","signatures":[{"sig":"MEUCIFvu/mMpLs7Xkclp3gYtflmuReJJfEgbPdWGY5UKpdzmAiEA4+4UEBhl3UCrdMiLoNlYh7eSNaiV18of57SOyisJWeA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214578,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoVGMCRA9TVsSAnZWagAAx/gP/iJxApGr48FyTmc1Iter\ntEgHuidElkNtXjacgL7+2YjdoPE3kzYrh1+u6sKv7C+LCyUFWbU/iLW2EYz1\nuAQEyvVNPflXOuJll7C70kAMGIQsn9Sj0gISORwGeHuMmY/+byGIV4tmW5mC\necg1VutWN09h9yOmbzgfQLvBPz0j6gxJmWkRY6Lsv8fEJbGb02GuRzpWHna5\nmd9jcXsXxzCTVi4lQnMhYhCeeadCyMeVI19CSJPa16fOZ8tW8QAS/fUucdFg\n7gl+4r6HnolZcnJZzDeHQn40qPJpDwuyXB0Dg5ZROhXtPUQgwVb/JaijAFWm\ngPp2CAHgfgidKYk5La0VbOI+VkKQQAfBg5ZSO/0XNOzyuyUFf1AiZz91iYw0\ngsFLSkXebQKareVZ+ADObprCSsVBR0hs0GWZRMlqxWaIBaV/1Cn53ROXup1I\n4SNdD4ofyD+kvBKa8J/jNUlGNq3gmVRPh4135mt0OjplL+JBxWWouqpEVUHE\nhKth6f7fzsGEfG0V1THem1g3L+nhFwR+Ly+db6U1pZ0MCyJC61I+bQCdHwRm\n98aHfAY+CwZxq4jykoBnnfU0cA3CvwFMKM0WWhwPKfnuGZqWTyRcPIQ+EOdB\ne+GL0qpZpR/SfvXeNd1yF30o8nNYnDWzZ5BOJdQdel6VxWt20fuPds+oGW6w\npYZf\r\n=aY2n\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d102a37463896af675bc16cf25d9d53ec6bdedd0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-26T21:23:45.989Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^2.0.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.110-renovate-balena-jellyfish-config-2-x-d102a37463896af675bc16cf25d9d53ec6bdedd0_1637962124222_0.9032665435809091","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.110-renovate-internal-patch-51204f54911ae1c5cf829b9ff5051dfdcab79db3":{"name":"@balena/jellyfish-sync","version":"6.1.110-renovate-internal-patch-51204f54911ae1c5cf829b9ff5051dfdcab79db3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.110-renovate-internal-patch-51204f54911ae1c5cf829b9ff5051dfdcab79db3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f4fe5d030505869e378622fa4eaceca1f235a85e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.110-renovate-internal-patch-51204f54911ae1c5cf829b9ff5051dfdcab79db3.tgz","fileCount":25,"integrity":"sha512-QmjQAUUAzLii/E0oENecw8JpDOEVWfOOj0mVfB2hxAGil/u4Iocp6uyo75THvWHKXYqXwdjlWoEhY8N9i510+Q==","signatures":[{"sig":"MEUCIDaQGtqcFi5xNuHbXbNvCWYftSKqThjsCa96kP5nQ+OkAiEA0rI3f3OgzMsITZiFyQeIIqQqhuHtYmEtHGBpuOdfLrs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214539,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoY7jCRA9TVsSAnZWagAA/loP/0oPbg+YdWZH+twSrtrY\nWgSr8IWFy7tGTdhjfbQaH2apErHEgT1oeIexJtOpAaVCpzAp7KIYwtlQKoZm\neeGDtV+KXJWdv+wGaetGtluohCLcO+ZQv7GNjYybUYZ9DrNBLLwJWz2BBKFS\ndSR7vXEpqWbrP9XFI1RPQ3y0zeczJLVb/1NnniumezEvgY6h6bkm5INpSglw\nwnRJMXHuFj1VnwvfcPQrrGRpP50mkfNy++Qygc6lLd+A4CKySVdUbOEnBBlZ\njEjVcDJ734uBcdUTcM++gRourXny8s7IppBXlweVFUS5TQn1UGPSt+ehgvi9\nD2UDBjns3gqN5GFKf7pbxOQvrc5S+eLIsdApaP25Ahyuh+eNjNaVAQvJB6RL\n8Ioq6eox1aph1YXX8Ew8nrmr28afjYhTmWv81DbZn6TyRUsHE2IkHate5S7k\ncU6J8wSGE35MX19yOWHP+g5dki1WqVWJ89M5EDD90rlAC/z3gD/NUQQ2ivA2\nUZ8GP8/Ys1+BlFtJGRInp6gheTiaRigL5uWu7QXoEP6sisbTEkeJoDUsVUVz\nVZoxB2IemcZCHNYGqmY+fRcar00D7wBzzLzgX7jWL6O3mwaz1f+KSu/je/Fb\n+dXsfCbFvvH84ekdYB48VxKrT7tWJqDzbQFMykugv8nGF9N2c3L56Ibr3eSI\nOHAg\r\n=V+MP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"51204f54911ae1c5cf829b9ff5051dfdcab79db3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T01:46:20.575Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.97","@balena/jellyfish-logger":"3.0.152","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.110-renovate-internal-patch-51204f54911ae1c5cf829b9ff5051dfdcab79db3_1637977827762_0.7330898290060295","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.110-renovate-balena-jellyfish-config-2-x-5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf":{"name":"@balena/jellyfish-sync","version":"6.1.110-renovate-balena-jellyfish-config-2-x-5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.110-renovate-balena-jellyfish-config-2-x-5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f9641d340f8e264d1519eaf3209db699256f499c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.110-renovate-balena-jellyfish-config-2-x-5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf.tgz","fileCount":25,"integrity":"sha512-w8vWplgZv339+I4oq9ADbPNSjMFnJCLkAgGFDMwQS+LUnlmRUBoEwpTvQZ5+IesXlQC3vxKo48SAWmtRPQKcUw==","signatures":[{"sig":"MEUCICHzghJ/lsWx/wTHapdacmXQO9FuGafta2fJuTlPauhtAiEAghGspJzRs4EnTSHY9mwF/nFccaPdKYow+bVtyljKS5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214578,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoY8BCRA9TVsSAnZWagAA7CMQAIC58FCO/aJhpU8MM/sN\n4yFpwGoS5yuQABaq+OoxDDyzRFLQzBHCUvQrFS4l4WBrmCvGafElBeQG74U2\nA1hHZpsuDLUAjDbaHzX2BnnJno9TgpUvK/1z53RZqc8APC+SsaAWhdRaEQ7+\negOzfKvyE0EesEy7wacqe3XSCWIEWDTEr7LfVVZ3/2iXjkLPvdZSyi7wdRJK\nr4PwKRQrsNGIXz9VD7369p05Nb1CNtQG+6WdQdUkxPX8IsCzsR+38GOYdp9/\n4m1sw1/yz57p9CBW7Z7m7gSyMNVZbS9ivJ2r5eeh7GbPh8CuU6GT1OLG8vcY\nQxB78WmepXHOHCi0vMuLakEQ2Vad0vY9mM28BD8owpHfl8gkSC2qgckocpl2\nc3Jfa+hyzcHD3H2ETO2R2h4v8E0MeTkNDALkTw09tXQbU4iUSRpCwMyGKDNq\nGqve2PrgfdsHeI/EljpIWP91vmtCkbek5Xhzn9WZYzPSFcccg7OHMxsyOCZJ\nON6wzpmwxrEOtGqmWY9Fz07U8jaWWzK1+/EqE6gD6TQvn7a0DlBDjQtADnjs\nH2QD+Wq4iNkANHzXSwFKTEYcoQUhg/WMNI4wRkqbBU6DR4pgvQ9ZtQeOot9Q\nquZPo4YToAgipGcVctUnTtAxXVISX89KlgQ1UOBx9jx3pK3KJCDj9SRc6Rok\nDHPZ\r\n=oFJ9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T01:47:23.192Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.96","@balena/jellyfish-logger":"3.0.151","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^2.0.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.110-renovate-balena-jellyfish-config-2-x-5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf_1637977857496_0.9352879913490308","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.110":{"name":"@balena/jellyfish-sync","version":"6.1.110","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.110","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ac4177342994d6538110b0d0c5d2fec2e8f9c85f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.110.tgz","fileCount":25,"integrity":"sha512-PY6OCCVfwZKyVWhiC6gm/rbViUAObOJCiJJzvnTSXAEkMcOH2LMZ89S6Q3nfDcRkNGSRG/WqC6FHLuvqDUpFNg==","signatures":[{"sig":"MEYCIQC6NvbO0bSFvaGTWHnRsa90kLeajB8JZDRPDB0YKz62GwIhAI1bJ3MK4PZKoPhoWuaCKcR4hxdgBnOtAi0NyjGbjupf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoY/PCRA9TVsSAnZWagAAhd8P/1Z4/hZbH1HkMYSoL0DI\noRSFvPnH3CRsU7zb+ESISPW9ncsAsKUTGhhEn1BoNXFCBMBJ69fW9l0nP3U/\nkQgbbgYX3ld9ovz+cYrqcfRG6llyB0fc/wNhs98gIboerRQMshq3cv+CqtKJ\nwpQS7DgrCrSwO88xkgCnrpjYa4RorVh/GTiBM6g8xV6xPUZzx8eDh/tTy4sq\nZDB2el2VcGVeDsUL7Z/zxMzMrRPU/dp+gwcJTismfc7oHlLdWw8TrUDLpxZG\n1rMsAvrVZVBhin4ClTcmkil9zzq5mY19aW+UaPdRp3+qikQHd/gdyDe8+O2/\n2j2JwyaKfqxZkIZQPiJsSdJFMKuqneLZ6Cmmqe2B8kp+W8qHt9KrF9g/fx28\nSV+WL2UDAZ7WMDl6/sHHn6euAIwPMIETEN6ZVdgoxniCYSbsAG0rjvGvM8vT\nyb687I/gwszXe8ixdepurDUE2VBk+KlXbsteC82R9lxoCtQe5luLstRLPids\nTXgsgSKihO0PaiVcw3ca1DGyZAvxpbp633Rkl5HvtkGNOwDl5shjseD9HfhQ\nDCC7iMMTE1sRmCcNffyAO93rTBAgbaGNFJf0WO1P/NKwzuaJPIezmG0H+OXu\nLuVFVrcR/o/aMgu7dvxoGSQfCDEU4bBnT1p/4TcaZ0yzEHWrP9djjlQ5Fht1\noU3t\r\n=7cGA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"befd904f786b402feede43311ad6561cdcde7ba3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T01:52:15.560Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.97","@balena/jellyfish-logger":"3.0.152","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.110_1637978063731_0.7990666696285535","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.111-renovate-balena-jellyfish-config-2-x-968e05efc24a7a5838943b007119938cbc6d7804":{"name":"@balena/jellyfish-sync","version":"6.1.111-renovate-balena-jellyfish-config-2-x-968e05efc24a7a5838943b007119938cbc6d7804","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.111-renovate-balena-jellyfish-config-2-x-968e05efc24a7a5838943b007119938cbc6d7804","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"0368509f0c4d39daa6616176eba0a52a35b5ec70","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.111-renovate-balena-jellyfish-config-2-x-968e05efc24a7a5838943b007119938cbc6d7804.tgz","fileCount":25,"integrity":"sha512-5+HA5/aCkiEC5MqX5lihHs8iS6PU8JIb5u4fRuidHXTLSMprkFDpaS6N7gfWmTPpxtx/ZCqeEUQWKnIec7srKw==","signatures":[{"sig":"MEYCIQC9lo3kZUcjPs2Xqd8TE6vVTJer7uCygYzuo4K6jrWYWAIhAKy76o4csNz4cQRXGsnFG9X/zpYnkECGmGw0ba3fAEB9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoZCqCRA9TVsSAnZWagAA0tIQAIR1BQVciOGsTw2Cix2n\nktsGfXqhw+m/Fgr/jdsPSZCUb3zacZ2M1BVN8NmRfsslQL7I3DVIZGsdLIkF\nsViYeB0Km5t0HYVJKlDvpwQcG4H8yvdGgQgaB/5Ts7gPaKSjVlPQ6bjBQU7g\nP9UBltExxSkaY+FomNxrZh1XbjhuYnm8WVRVRm5B6kLEF0ncsZmrB1VrCqpc\ne8I2XXWxHsaQo735tHuvQCfpq7KNoQh82qS8FFTrhcS/VuigpKS/j6BML2tG\nnMZVel2j6Zu9mEFlOeg+f+Bl7UmVFY6T+lBcBAle0H8uthjhLbJ8foDUhNHO\nZDU+9mcvdxexLEYImJ2smbMdBTyPR/ovArF4HeCYXJ/0AVJJfcf3vA5IyHuX\nFJhc0aqE0peiX0qA1+tFmyI6ra+g7u0uhy/Cwkjv7a0lOC73wNJ8c0jzUoRA\nI5pRhlUc2myPwfOKOvFcnUoXK9hXqsX/iHE2Mj+hxGRVjV6rwU/9zoxnwYjy\nVkBt5Sbsh5L8vPtLeYOSdCWcIva1JyBaDvrS6sBZWXTBQqXw+OdVgXRVkgRm\nBPcrJOf8crayOH75hM0jGqrQHUxvarK8r5hV694EYw/dFdHOJ+hcheXAgP6c\ndbmIh05PGV+7BGut/eM3V1w+ZpqJrbZxg4LjK8wDA+SDXuCM0lQxWl5NKFxs\nM5ts\r\n=2nCs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"968e05efc24a7a5838943b007119938cbc6d7804","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T01:54:29.641Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.97","@balena/jellyfish-logger":"3.0.152","@balena/jellyfish-metrics":"^1.0.417"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.34","@balena/jellyfish-config":"^2.0.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.111-renovate-balena-jellyfish-config-2-x-968e05efc24a7a5838943b007119938cbc6d7804_1637978282112_0.2697100930159315","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.111-renovate-internal-patch-6d65bfd95634d5d47a33a39215f0f625ade3b0f0":{"name":"@balena/jellyfish-sync","version":"6.1.111-renovate-internal-patch-6d65bfd95634d5d47a33a39215f0f625ade3b0f0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.111-renovate-internal-patch-6d65bfd95634d5d47a33a39215f0f625ade3b0f0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e19930ebc85fa6853943025e22cb21cb82cd5b00","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.111-renovate-internal-patch-6d65bfd95634d5d47a33a39215f0f625ade3b0f0.tgz","fileCount":25,"integrity":"sha512-9+qE5Q08SJ7gCHMOYWNsg2AMQThF6gtvRtKUkjfgv02tDq4BXZVxlgkITBxI7LGexcQuRYkjtFnkPvT5qXegCg==","signatures":[{"sig":"MEQCID9dCsmOCypz4QkiFoXqd0Ffq61NLyWurGS2X6Z0Sui9AiBD0reNtPX7RK6m74W2U5ZbC52ney/GvSbzemwthsxuZA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoa4rCRA9TVsSAnZWagAAZooP/0SarjeR1l8zW8EL4n/V\nDUv2z+zaMl3GC47WL6jLgdPAIGy4SC6RehTk80MGFlI0iDqcw92IGZYw25zu\ntTLK8ldz4sGP0atiSGvXuoe54xG33eY23thqthOlb89iV2In71bSFmkdyO1N\neYY80DixTwr2yDfTHWuTkrXOmH4AnMCmv6cD/vvw9jzqInIADQlNxJ4BotIs\nlhKQ3vBnutCthQG38Ny4ADCOwPBNqY6F/+X02dFIfhmHk6y1DzRIUdU95INM\nZWwxqDbXvXLrLy/s9K21oGhetnqJPe4TrjxOFK7mcQXZbC2u5LnfDYg7Vveu\nv4OSLFrfb5JWIdwRy2TMkSyD1uyxDnwwxzXn1jWHYgytF8WwWTB50dI9lhN6\nLX04wpWTKgi+SjH1tuwNDWubYYB7gpcHjVqA1aNOBadITUMshx+Z/8+xqaIP\nNFZLh1XQCSvZEH6vfW6J7lAloaTncNGcCN7TizFx1FASOydGf/86ro+W0nZh\nL+Kf2wHiC2YDichDyuK1/w0dTBgO2TmsixdCu5sNYFWKfYFO3zLzAHX+l70g\nsLIxBWhCDFpGORx5rURr9jSG+9zUx0XGcgab1CnF+7ahGM4f7JxPcNgV8GoK\nZQIzumrhLykCWyucI8iWnuD0ItJLj6RIjakSa40vA/QGBA25O0DqKSwy7eA1\n2jq2\r\n=kTto\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6d65bfd95634d5d47a33a39215f0f625ade3b0f0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T04:00:07.420Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.97","@balena/jellyfish-logger":"3.0.152","@balena/jellyfish-metrics":"^1.0.418"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.111-renovate-internal-patch-6d65bfd95634d5d47a33a39215f0f625ade3b0f0_1637985835455_0.16803266829129093","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.111":{"name":"@balena/jellyfish-sync","version":"6.1.111","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.111","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"df128a88b67ed34a8a2b9dd8fc26b2a2fb48dc14","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.111.tgz","fileCount":25,"integrity":"sha512-Xm7MlDLgNYKzNxvGK/lTjU/iLGzXTGMYhD6tSuGWhyIHyIlQfvC/mG9pJCL7Rrij0Lw/tVWyok936Msko2VTAQ==","signatures":[{"sig":"MEUCIQC2U2g+dZ6MseTfsiIeyV0NnSFDsnSgi9cqDjrKteazqAIgFcapPKEmCCaJKIqUSOSNgqGvr8zfoJAIDReuw4LwJb8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoa8kCRA9TVsSAnZWagAAEyoP/2XkgmvVwe7PgMzBeKVW\nvOeHM4NrRogKNjL6nkpa7bZIPyofgQOZVSgIDUUb2fY/sbsoc3xKiP1zLuyN\nZO8d1lEVoU3vQyU9IWRy7ydgCSEALnYYJ8ndr3qv1/P4YHSSL/rTjI+05h/i\nddHBiAALyvph097O4BwwAUDILa3n7nMyyQ4IBumfLkp1RJS0AN8DAN+qVmdr\nbOIdIURa2oN8K7WT0kw+Wu8RkdoErggprGIxWwHiglulXihnH2+WXY/9zX4E\n/AjwMt/ek/nH3X7q1YyqtxLNTedJ39ad1a1Xev82RhJWc78rhnr4C/F1iFh7\nj08cuDyBRNMp142Gj1W/4YGb4sxSzHATIJLH7iTcjpWZzpxwbsFKwdS76iGf\nRw8i5E9W45U9A0mFq9uXBtl6InWckkZfRvk15mgEgwm9/sRDPYKVWIPq6DcB\n9eu2NUH348HPdIkaRU84Rk7zCe8TO2M0F/mk6Ci4Xv1PSPjAvZe5BEr8aL5X\ndpe7E2GAMRgHS1GNARkhgQP+N/sa94NIl/ZAG2EoImZp06CyK7AhYISibIy3\n1rWYLi/jAKj+cAr/wGaou6Tzv1HikUrloBBaGlwJqwa+xrWIvbBqOPCG28Sy\nKRgk5hHPkWV9uIT9/4paaVPfK0se6tUIJORYIJzs+t6eVvSctohp3cEWLYnw\nIZ/G\r\n=Dkl3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a2f564b9a25a024a1f9ca10ede88881301fc7377","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T04:05:57.899Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.97","@balena/jellyfish-logger":"3.0.152","@balena/jellyfish-metrics":"^1.0.418"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^1.5.17"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.111_1637986084498_0.4560929710848687","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.112-renovate-balena-jellyfish-config-2-x-0ec4b473af08c677b294854a4f57f2a2bde8716b":{"name":"@balena/jellyfish-sync","version":"6.1.112-renovate-balena-jellyfish-config-2-x-0ec4b473af08c677b294854a4f57f2a2bde8716b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.112-renovate-balena-jellyfish-config-2-x-0ec4b473af08c677b294854a4f57f2a2bde8716b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"63adb9067fc8c0cbb73090147dfe9b31fe984f58","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.112-renovate-balena-jellyfish-config-2-x-0ec4b473af08c677b294854a4f57f2a2bde8716b.tgz","fileCount":25,"integrity":"sha512-9mj643IMbK1JzDZm+oZtJVYY3d9CleraQz0NNZ36PA7Eo4187LZQ/izQPiSjTtWWEyG/4wYMC1MsvijhMURAGw==","signatures":[{"sig":"MEYCIQC9vavpdMrf7p7aI6ah4XyJPhTHCOGSChIeR61H5sAdeQIhAIX9G8JxhF4YexT6iIRGZ+hW40ARsoyLahTtYZgImnAU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214722,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoa/WCRA9TVsSAnZWagAAdZYQAISgog9rFJ+gyofOWJ35\njE+2kg27mvVO7OFNudYDkXJib5O7tHLBB44EjD8RvQa0csYR/XlaccrjCji9\nSC3cgz63GiiecQx6UGrQNKcCiQfv/dpXwbZfuOwFv+3BSPCnzoxQL99aSJ+4\nmg4a1vEdQL+BnAEWLzla649FVzLErqmHLb8tVzIO3geogyKFmD/3oPUDMVya\nc7cg/Cj7MH8JILgbEsxlRe8LE5/myGiDuDv9FfRyO1jVsQuFvu/sVcACEQ9M\ndQIZoPkX1LKxXEeI8T1/WmaIvBVj7AxLSjNDpvLoj6z0hEEJt4g+MAkaRiOW\nezdmejQALf0xdxXulTfxWL0OlPd/kOSUd13lDV9loYNTzUyHEU1KhxMgi31I\nV89+znymrTmbV/OrO6bHOBm4HMV+D0gNx0VnsP6AJ52NiuRFERh7ptOk4ZRj\nmHF9Kzx+Cq6F0Q0kAUupmrgKssXO6fNFXRC0f9buhAW0HIyqw5yDAy9yO2Zs\nWIGQHK4oO0Yn5OOPVYdmrq8MXH3jGo1/aayf5+S2ZUVuRbXTIrK7q5+gAd1w\nJmRVv0bKcR8Ua6Lnq0+2ndhdZ9DthFEfFnmsN/XfyafwvvzxUI9z5DwtUCv3\n++dIJfSZT935/QlaJzcuGzjfl/jQwkk9nw6O8iq/3C0KdlJtkfkO6B8atWhT\nx3Bx\r\n=QNNc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0ec4b473af08c677b294854a4f57f2a2bde8716b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T04:07:49.121Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.97","@balena/jellyfish-logger":"3.0.152","@balena/jellyfish-metrics":"^1.0.418"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^2.0.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.112-renovate-balena-jellyfish-config-2-x-0ec4b473af08c677b294854a4f57f2a2bde8716b_1637986262236_0.022075840200580954","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.112-renovate-internal-patch-7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd":{"name":"@balena/jellyfish-sync","version":"6.1.112-renovate-internal-patch-7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.112-renovate-internal-patch-7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3745a2903fbd43a5699e227aabf0a7cbc5771bde","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.112-renovate-internal-patch-7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd.tgz","fileCount":25,"integrity":"sha512-H7fM9IJfFQ0wSGXY7OB9AIRmWfVNuwrWTu6pbzeBhzSDbIN0Nq8gsLbEVnA8vDbw7S5m5s9cExI/NLQK8A78jw==","signatures":[{"sig":"MEUCIQDLPRI8dmMN2VmXZN0rCMccaOZdl2x+d6m56BzmcJixTAIgE5xbO8+E3NW5PNCXcpx/dptX8fBKr+irIbLW4IVCRkk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJholmhCRA9TVsSAnZWagAA7VoP/3P8kNlGKzOHjM7HRSpn\nVHNJ7j9UhPKDnp0EhlwmHK13CmmVccSvSO5Lg5RQ7Nw8+EJ4AYMlWjbPkFg4\nBgrtC+iJEIGLNghRpQU+rUrXYZWWiAx8zV7U7wCIRM3LOKe0HySwplnS7pIV\nBP/G4JmowaIoonZjLT1wX9o8LHU1nqiDht3/xRR91d7+5FTQTdEd/LXrVvsn\nPrpTPO9rWYzxcmEaTUni857ZPvVft9NtM8zdzTUtf01cXSfvcSS++jRBDTEl\n4MTIBK9HkjTvRDlZq82q/2E8KmYGDdF7Bh4bXm+ZSBs8pNzqkuTd64OEjefW\nwG9cKM8K8yFNuPJJeQ8tfXQppwkSjlnIsSaFBkCYjSpP0h/hImT87dtiOsmc\nOHkMokoYFaYRJH6ITof27vqCpSqLVQBEOmHgM1eeH494IQ4Bgy7ya4Fx96+D\nDit5McBaQ+/rlWm04zLlIzxFhDMaDCxhAwmtU3fshNJPtDXq++WmxDQcQca7\nJbK7YjafMqRxg1rBi/24VO+wNpIaLjuhtDQdN2ilQzssSAytLF1VKz+PekP/\nD7mY+BKVjob0esWVTGj1H1RKvA4Yjh2mB7M2Q+Kr3MOjtgsEepFe8CWnJZKV\n+e0CRKGaiSeqc8hGX4S/BaFziGLoxFRNUAbSQ35s/UmeoOHj2dHUPHdxTXbO\ndVsJ\r\n=CJAk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T16:12:23.246Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.98","@balena/jellyfish-logger":"3.0.153","@balena/jellyfish-metrics":"^1.0.420"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^2.0.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.112-renovate-internal-patch-7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd_1638029729615_0.06300930831211371","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.112-renovate-internal-patch-8fab4bb5614e0177b9946d4217a5c62f32a89696":{"name":"@balena/jellyfish-sync","version":"6.1.112-renovate-internal-patch-8fab4bb5614e0177b9946d4217a5c62f32a89696","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.112-renovate-internal-patch-8fab4bb5614e0177b9946d4217a5c62f32a89696","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1efaba8e1ad39b99190ff4c61befa99166f97d3a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.112-renovate-internal-patch-8fab4bb5614e0177b9946d4217a5c62f32a89696.tgz","fileCount":25,"integrity":"sha512-YerWmdAbVEnQPonFVzqOWr8HYCpzeBYWLn33Fsl86JO1nucSmkdBBDjZzJSxQL7CnUQfXURUbj/KLt019v3n2Q==","signatures":[{"sig":"MEQCIEg9aQW/OwApRtYdtmd3vYaXWNzpb46W2q7oimZokgXYAiAZN3UVL6zPVb1TT/i1E5MYx7l/zahicjKMKdYod/s56g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhonddCRA9TVsSAnZWagAAz/MP+gLkrzYS0d1YIJloEgmH\n0Q9Y5WgSMQ5GGknQHhd4e+p8OBaeWTpsbPtSS1TPEjcKjD4gGeYK25XK/r/w\nt7GEbGic6p/p/unWaLcJNk/WZz3/mbS1U3sFeAxEmBqUkH6I6cnp/8zjz3hR\nfALyGDhM2iOpQwnEBg8GjzgFZCbAobfmW9Zq/VjFBNxFhiprsM6uWvhQHvht\n1/S5piMOvpRzBqjgliqYZqfrnkxgSxYdwKDgqueVrHsuXYJtybxK7z+rbKiD\nJUYfL3QvccW/RDI57MK2hn121YmWCyzS6xtSPKIbRh/nv5UoBGYfN5UzbjUp\nurEIh2dN9PcCqBrw3tssDAk11B4ItehTrjxX2yitOUTqVknH5BpnYQHopY/a\nWlCkfNiNAyIv+5fLYgXkBI5he4X9zhwdBV/JPNbgLn+4KrABQHrDBoYF2u+Y\nmamsOV5KTQ4EbQqzsXHqJiQUQ6WwAR4OrXPLKC2TqNY+QOQfKphElBAOEXFM\nyEd3jw/t3P3E7xtRoc6Y8SP7eLvtxej9utLvT/ZkRc1GXv4P72osw5l40XgM\npS7fN8NbX1a6eAOkKA9pcFavtmJ9RueaMbWQDntN9xqmWZaFAO1AiC2zrw5Z\nSoTKXxuLFm2FLXpcOl9LGAjvCfZBskDI90p7sgR0/vN0fPXEtGzbGhWaUxyW\n3XIT\r\n=FGWq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8fab4bb5614e0177b9946d4217a5c62f32a89696","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T18:18:33.680Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.98","@balena/jellyfish-logger":"3.0.154","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^2.0.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.112-renovate-internal-patch-8fab4bb5614e0177b9946d4217a5c62f32a89696_1638037341307_0.0163037020491128","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.112":{"name":"@balena/jellyfish-sync","version":"6.1.112","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.112","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a4d5d4475dc603e14c63eb745e13793edd8ef346","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.112.tgz","fileCount":25,"integrity":"sha512-hedz27PaQ5riy9fHhSUeO9gbjVbmpDPLZzv5lP45EzB16NkXkMmGuu73aRrgXCBMFZ/eZNt3FSIbaGOxxE44iw==","signatures":[{"sig":"MEQCIDAJI3v3oeZcctB+W7NXihAB8wsD+Va2Ol8Izz10kvgJAiAYEbK/FULLWYRgzsFMCOBxwA2znGltnWrTLD5C64Nrvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhonhbCRA9TVsSAnZWagAAtVYP+QG7X/L9c3+nzdMp3lg2\ndBMtVzslPGM1GbsA8MXWLr+NYYECZKY8KtgqRw5ln+E51ipvNMQhq0bUM8C1\nRHEFNguzl74Vf8cV6Gf41lfvGPZi3ZpzBzlW+GlfabIElO5FOLVaQUW6FJOv\n60Zg43NZhMiHo9hP50uFsQUdUKcSqbCMG3VXZqejwed/Fn3N1hUDFSt0R3YR\nH0f4f+Ci1vsTiahXqF0U9Jx51Sr7wLSz9MmsxHikvyDEqqVKNvmu7SQ8PN/8\nbf6tZ0Qz57Z+IGjq98ls4nqx5Mx8X5XgnFB447g5B5ReJqn08zyPTaZ4k3zW\nHuca99JusPMf5c+bSM1FiMON2pT4GzeNr2tiGYALJaWIA4D4lYOS6XXb38gM\nn6HRxm6EuYsErETreJqzhCZV6e+LTiIe3z+qT97KKeJ17MPyT22cDLsrurbr\nkZTT2fe1H8lJh9XdiKQ6zYgrBnMIh7zQywUNOCNg0CXPvsxdeKXmUDvNVm25\neCRsQEIusZVWASmqCMb4LW7SO4+V5m01wS616Q/6toC4y80ydDXFBQnYbnb3\nykPYRxVk+BIvfSw7LE4V+OKVRbZAV+nIySXYgwXrfYlrbQP47Q821/4322VN\n0WpeX7SluF+eM3ekG2cWuDP00Nqn9BGXZPnIEZPGpE2sie/IwLYgikg88Zdo\n7trC\r\n=Fpnd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f3863e62fde88ce1d1e26abd38091edb8c7725ad","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-27T18:24:15.324Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.98","@balena/jellyfish-logger":"3.0.154","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^2.0.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.112_1638037595119_0.9835774024273514","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.113-renovate-internal-patch-fdafcfe724df520b5ba16299405d93e94dd2f2a3":{"name":"@balena/jellyfish-sync","version":"6.1.113-renovate-internal-patch-fdafcfe724df520b5ba16299405d93e94dd2f2a3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.113-renovate-internal-patch-fdafcfe724df520b5ba16299405d93e94dd2f2a3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"faa0517b61cff0fcfbfe7eda8f3b7b547723a1b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.113-renovate-internal-patch-fdafcfe724df520b5ba16299405d93e94dd2f2a3.tgz","fileCount":25,"integrity":"sha512-lUtE39gItWnUrUw87TBXMPpziBYwA1ZU0hOo5hz4kyN+102dJm+xKIL3Ja3Gtm77fBLB2xS2c++iJ9iGzI3w6A==","signatures":[{"sig":"MEQCIDpzsh1WnOqzK8k0DIJJGCllMtTO8i4Nc43ZEvfs04ZmAiA4Ap5p7sA9SACl9qOM2TXL2V1bTGmsJ6waTkV/ybRzSg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpFgiCRA9TVsSAnZWagAAHhwQAIcDYNPIb9Jywbr9Pffw\ntpJdf0RUAvsbOfsATRr7/YVVwWNqPJIoAwhuXuyT06S10WgCSH3P1PHV2hKU\nfwFK29tuvH5vzC+06Ts2pSCfIUldAnl/GIcEfzRrWEhNHVHSd5rA3optXrFF\n9dewn5kVNT53yxcCTewKAWElxxdPevb9X9/4aYSCNA/fwQ7fCNqC00JNdCfL\n3nvmkXF0BMj0ZALuA9Y/urpOopZHB7Q9pCDR4hAN5EjAcLzh7XQQr2XarJCx\n/xnDMuH/+D6MG6VLEvGPgorH8dB0yV91sXSXxBJaDn+XWJyrPDThtx7RxsY3\nLaLL8XrxvDsTs3eiA05uBKNhZjuWFOtBIOj81U8c4ekGmXgVSxUZpZftT/z+\nsKKnBoNcKrNNLh7tRWuHqJao9/MrrgWqMEeb6fJ0jxIZiR6YgvFMlMPPlsrG\nBorVl1aSIJUduVInLGHoSCoKTAxSOmdR1vTEszKMv1QLVwUOka845kYG4FAS\nbc8LF1b2epFq7jQmGkWOF/9s2mBs7LdUixKr4RT5zJREzFKjDRyItkilXhDv\n32OSW5PgEbKFW9eitU1XKmRcvT/BX60FkCzwS7nXB/bIsGYyPzUQ3SgIqoY2\nGTGWxL+bBPks4Or9fU9RWlFrUo2bzjIw63OgLxDB6chDmBVquK3XU9YZD6Xz\ndBPv\r\n=nBVg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fdafcfe724df520b5ba16299405d93e94dd2f2a3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T04:30:28.280Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.98","@balena/jellyfish-logger":"3.0.154","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.113-renovate-internal-patch-fdafcfe724df520b5ba16299405d93e94dd2f2a3_1638160418383_0.1787541933421617","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.113":{"name":"@balena/jellyfish-sync","version":"6.1.113","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.113","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2e5b849b7dcd1ae14192611a413d7cb1eb05e21b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.113.tgz","fileCount":25,"integrity":"sha512-1/HKQ75wQ/LeogebA6Ef2/6jkw8vbpW/sYWpsSsG2ks27VxAFAEmDJTKrMf+zU4Cxq4/2rNgNcUvaxPTONQFGQ==","signatures":[{"sig":"MEUCIFUBx4Y8S+W5006saWv6TvB738135ynfrdZlSIjR7n2/AiEAvQsbDjIO9rh70dt2le7wYJtVcdtwIiePDesxwDJuG40=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214839,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpFjaCRA9TVsSAnZWagAAkksP/RGOOZ3RSJ7xXxlyRviu\nNAcxOB78BXHe7vKATuGGTTu7b9r8x7n3tsGvFHZTCB85v/FeTYPVhAsHJjXX\n94w+ikZbACj4zfDNL89vMduJ9LpFQiuInnsXfP9MwPBBv/ir2VeVNmdWZa/a\ngHYLO/XcZvbGUS1ZXStyJqhdBsHnfYnBv4VXDTX8uN1GGkVq5BZjxpxGvvBe\nb8WlF3u5DT5qQ1VlZ5D7jzZpazyGKpv7k89gX8VN3R30b5e0NT9+ejb2oR15\nwNwiqxi6+eQEF2cJASIVhXQEeMmf6UPFq8/nfXPtH12jQdZSctSC1Ta2GdFO\nPN5xrJMdRBX8ddrgtjxQ9DO0sGEcZxsPz5F6//32BAI8ZGzYUVmgNOTpVvhL\nXslfnD3vzsr3ltZfKSjHLcyHur2otXqZve6j6DaNH/FzVgZaKkzkdmqw6CIN\nePMGhAUG3pwG3V0XRuk/+eG9yXVZM1xItQwPiEybyTDPv0AKpI+nvauLXfVF\nW/kyeMZWqRqDiGsju4aAA07VCDfFHuT0jF8rU5lCFioGjJ/GkFwBViHX/GR0\ns4SAUDeh2pWPJit+mRk34s3RPhkTFrsbeeAJc6OxD6qJWCDG+aENXya2Nfct\n891dnQ8yvADwknZZ5I5QOYrmglSA3/z29GfmMXNuHpm9LP1xTGNF3EmQqjMB\nSEWc\r\n=5WSe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f91214e311150910f7d0dbd99e8f11c2934c2636","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T04:34:46.060Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.98","@balena/jellyfish-logger":"3.0.154","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.35","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.113_1638160602117_0.7363360402888315","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.114-renovate-internal-patch-dbd7b8127da9a9dd33aa1ee59d00144f4441f003":{"name":"@balena/jellyfish-sync","version":"6.1.114-renovate-internal-patch-dbd7b8127da9a9dd33aa1ee59d00144f4441f003","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.114-renovate-internal-patch-dbd7b8127da9a9dd33aa1ee59d00144f4441f003","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fa81efc1338644f5f6c7e55d5725020b0785a71b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.114-renovate-internal-patch-dbd7b8127da9a9dd33aa1ee59d00144f4441f003.tgz","fileCount":25,"integrity":"sha512-T0KLUdRQnMdsP30jN8typRh+u0FypnnCy08ziFOHD8kbmQg34K9wle5GOhsTJF8q4FpS+2FHR1NnUuetKdupAw==","signatures":[{"sig":"MEYCIQDXErZ6vyTCEb3JMeDqC5jatiXftO5EsrubTw9rmh8bcgIhAIqaxuknRSaFVbNy+NkWWD4QlWjDU69/ggw3sFZG6Fst","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214976,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpIZxCRA9TVsSAnZWagAAnYMQAJmAnxgmL7bugDseDMNt\nyF9kuYrVx0+gxt65ESFEcoiLCHBTee8GAd8K4jhMBu/MlU108xrh2mds6pED\n7enFkzUiKDcRYyLP8gm3UV32YCAmqI0HZxnmj+jPf8Lysj3KTyPEZn654xCh\nMReJwpfUTyzBUXsgPTYE4E3cfGfzatp8MALH4jkdVYJPwvubF2ZKJtisHEU+\nJT+wOF3ujbXwXSggsfxDgCpF+pKj/26QkpCzx0hOSuXkyWw04lP67kectSGV\nbzmWa2gEWPm06kMmscKBs/J5VyfmCGvNa7z88KGlbYC0ztZ0PbMFEwJQLqzA\nymmLMcA6uXzL09+m+1ZyJOWMcn7aG6kYCtzvDfG6cXWbjPyYffLvIVeh4gel\nyhS+6yTZMUqb2j43/+SQQLO/Z1pYJdc9nXo23Wi5luBne9hLomV7tJrmBbq+\n25+mcINDHeswAMHsD+CtA1o4lw59xfplLkgyGyMYITiqKUXDoruTygZKKlBh\ny6mEwjEsP5Ov0YIaoS12tTf+am+5REtNVGEa8hclEJIR7tgp7YfocKR0fOsT\nEzNnzzWfe3Ce1YeGQpnPACQq6RPiaKP5X/Kousw1PLdg0FZwB3+J2W9qsEp4\nQgKuJrFwV245cnOz5k9YEm24p/06/7wUIFKsufwEvoNqeSkEFpCw34tcajVK\nq7GL\r\n=vvtc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dbd7b8127da9a9dd33aa1ee59d00144f4441f003","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T07:47:45.201Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.154","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.114-renovate-internal-patch-dbd7b8127da9a9dd33aa1ee59d00144f4441f003_1638172273346_0.27061341258235383","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.114":{"name":"@balena/jellyfish-sync","version":"6.1.114","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.114","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e70e6fce199715392755a547888ba6b4d2664758","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.114.tgz","fileCount":25,"integrity":"sha512-5RnWfbxiAgGYEdbMgLhN9VwkW7uFSBAXx3VfMfHK5UCgW3NHSDWeNp6C8wyIysvhNISaHD/8CDm2qZrOwANoDg==","signatures":[{"sig":"MEYCIQCnnfir1iEW3Od/qEq6oOD2SqjExtRiaMqrkRGyLEgC9wIhAKl6SEbRPeZIiJPs1L4DG2YL7QcONgWFaH13fOsmhAjL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":214911,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpIc6CRA9TVsSAnZWagAAqgcP/3M+nkohNyYhNGG903Mz\njREmIGTSE1mXbF3VEMYfKbHLe69a95KOyPlBvOVM1XO2hPMROYxrs+wz1pOs\nAPoiyIRSYr1sxMDM/mntpMGcNh1ob4OO6OWG9el6C33i0cUn6KqEu0+Y2nbK\nhCluTRmyuaibcRpbT8DYgVQ6i2sRpZmeaMIMpOz51neXYx5wMAw5jcfhWInD\nGrSRGyaetOC/ebsFEY0FWrwaPMOIX9tmEXh9UExXeCSoFOVoNNc87sJVQKQI\nbOP9wf5xT32fMtIk50ItMX0JW1TDVOt4Q+0qPUqqWinyWEJrAgHZkYMJuYLg\nYoQcOesX2/iQXiFS5lIjkKi20/VvQGPw7r8aIQuMRjOoptsFlqrkOnZCGLyg\nF9+Zq1g5JX2gfV13BegBB4ThWO3Voe8omatXQqatWTDdVMSC2gFJ4DQ9+yuq\nLnB1UW1FIAUviL0qDLQfswCI5m3fHeUqE9F4BFzG3rGGcajg62pQPeo+lhr7\nx46CF1Zlvm79dK3BOX3cOqsaOx0UIEEYNscKGpcS2YglUdiRkbtiEhZgfEUD\npoKkNFrSkJB/t+Epn23sP9gePHgoB8c8N+LeHhl8b2/jnx9TKfaqUusMiJtq\nUJWBfPNe+NrniKF631pmnF4/O70fyHU/ZuU72k6MmpQl3I6XQaEu0P7ZaG/d\n6TgL\r\n=3SAA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"34b0aa752997b9e82bfc80576ea4b8718ff6ede2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T07:52:24.248Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.154","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.114_1638172474351_0.27886668756236643","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.115-renovate-internal-patch-5708b395a16af7f53e4c988b955076be26800b38":{"name":"@balena/jellyfish-sync","version":"6.1.115-renovate-internal-patch-5708b395a16af7f53e4c988b955076be26800b38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.115-renovate-internal-patch-5708b395a16af7f53e4c988b955076be26800b38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e516d580bb88dfcef31a8da3f0e6a80d70b3baf4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.115-renovate-internal-patch-5708b395a16af7f53e4c988b955076be26800b38.tgz","fileCount":25,"integrity":"sha512-wuSO3D8kPqScFeY3ykSdKuYJHXRHmILOtXWKGBUWnuLMTrw4GQESTe1GKCntp0MoWGNBmICif++u2Sy6caZsYw==","signatures":[{"sig":"MEQCIHiz4NU3CEtqrMFSnJgl9sP1F1CcdgamYNnQ7Mww+/zsAiBNwfTOIr6vnJnd808Ml29C8jD0D/AafalV0+dn5CyDFw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215081,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpIg7CRA9TVsSAnZWagAABOMQAJ0S0VBRId3CWdY0UIF/\nTc+h5ZqG3GEjHjCMXEfWyZsvetKiL6j/i6u+FgdMgosLVWX29jJkXDTUi1v0\n0iATXFVW+3cJC8K1KwZABY64vvRW4tmvodk4LuNddODL99+7vS/MWYoRuG8G\nXaAiA+SQBp7kbl/v468QMwE/LgqnC3xA4pFFP/jqewFqbavdDhKRXEAntHkA\nf5pgFNOvxk3Mfc0dbsVylbPkREZzqOZCrCOTi0sON0A0Lfxg0ZmxKgIXhTzj\nK06YS67wA2qnSM18ra9pBmIXgA55xl4P8wOMqpmxF8+EaBVNTozs0uWJnJCM\nIHHMCH3wGCTGgpL9K/0F5hoIdy1T6LlY932IopYQjdr5TMRYZtoVHvOLHJcY\n+5w02Sb/8aUt2FKHPIOw2Z3Yt3QyQ85jkR90UwY1OL3zSp7MlezS/is89H+Z\n8bSr/7SXZz50GiA8FqAOeIn3syJlDjs15EcL3t5pFNLWkYd0Zr10sFLK3j2R\nSAq+yvaJZroNGAq+Efnu6vh8fmxxCdFf3/epFle4uJpjzTsPlKclPtOjtvVQ\nvMoXnmEOl5TglPL6HbCFiGpp5JsHxtr6LotJIJ/WNWNeTB7myGZY9Etgw96I\nGGAVvHk+6hx9/pjmcYdQyWoW+kqyhBRAjMjIZs+LONE7vexVpcwyxvOLq1rH\nCAJu\r\n=cuKb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5708b395a16af7f53e4c988b955076be26800b38","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T07:55:59.221Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.155","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.115-renovate-internal-patch-5708b395a16af7f53e4c988b955076be26800b38_1638172731649_0.33472851319196417","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.115":{"name":"@balena/jellyfish-sync","version":"6.1.115","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.115","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6754c6cca4d9cf7d130912eed500488bcaf5930d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.115.tgz","fileCount":25,"integrity":"sha512-+uq7mWVqKL+U8acoHKP0O5WhqxhT+uVQjCygS0tKXmPr6o/edIXXFPJGekJy/Z/VzNUvpdVMtt9CfJahltqWCg==","signatures":[{"sig":"MEUCIDUq2OfmMO13CmBftp6Ut8baorSXb4lEGlOueHcwvMjoAiEA00AzhmP9Q3EKJcm1jsdMnbP7ZgqK2ZjQTT2fzWFirT4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215016,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpIkrCRA9TVsSAnZWagAAF70QAICJ9BzLh9ZMYPY8puKs\ntSqzHUBLwFWhAXr7VxqT5HS9o19IffY9t9OxMN1LS+qWOrSc96Y/FyhDhAqO\nERKATmEuJji4SHnm/NJRVuDVkdqmBikqyTaLuUq/cRKlSYwAeqzT8SRggjUz\nMLyMiiGtB9YYuQx61AIVh0/N4EoW7BQmPXLN1lPUyPUqg5WfON/NMyLGAfAe\nGulko4/m2vLiPqpgtKc08V3LILjCcn+52qoFE0bzndKhIk/L5IGy1/11Ebvu\nDp3tUs5EyQLpOzwYZe57zcqY4ky7Qwyn+arF7YfQDz/FgRsH8yS/Ts4mF/Fm\n8VKvZECDVqKa14L56Vm9Cq5XPtRv0HGEPblles37i4TIpKho6HD5demiUVJd\njU321PWzjWh4IsDaOEHD773JGAiPK8yEeKVp9lkAktNuMLpI8ZjVvUzlMDsG\nvoUKcJBOZuLYjzG5fvwDEidMh9ugAwSNpx/niqlus1fM3O+ikNTfIJfezTNE\nuGRKqep6yPnsUNYHKFm8ycoDAdzNJwYa288Z2ILsvb7kj7HqUncUUMvKFBkc\nb74oOTbiRpV67hGgijQbF9Ia4e5HES4VtidbtZygaie3TEE6Nmy0biA30G65\nAv7ZZCTCxH70BIPD6sKdTwTalirz2CUxt7OrBVe1igt49ZxMKROcFV6Dv5AR\nAWsY\r\n=I1tA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4cb0a672a04e33481954c382322bdb366ee7c2c5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T08:00:44.356Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.155","@balena/jellyfish-metrics":"^1.0.421"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.115_1638172971146_0.3201734536067993","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.116-renovate-internal-patch-924fc6285b2ce70d7065384cc60b119d6a66411c":{"name":"@balena/jellyfish-sync","version":"6.1.116-renovate-internal-patch-924fc6285b2ce70d7065384cc60b119d6a66411c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.116-renovate-internal-patch-924fc6285b2ce70d7065384cc60b119d6a66411c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bdd453479da65e27851500f11e8ea6271e6e320a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.116-renovate-internal-patch-924fc6285b2ce70d7065384cc60b119d6a66411c.tgz","fileCount":25,"integrity":"sha512-YLp3gTUyrCCwzOk/SSzcYiogRmE13voGQXnvASYo7Oto+Cnryic1bw6O+aC8T7h/X6ITbdul9Vu9UIfUey0Qgg==","signatures":[{"sig":"MEQCIEB8L0zhf9/f4n2Lcf+w2fMwazn5Jlz54xsuqyh4OtTpAiAaw16ftCEY37/EvcVLuUnOEbJMpFK6mdKcr0SSIUVFbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215187,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpOAfCRA9TVsSAnZWagAAC5UP/1MB3fVEpumUXUwsfFpi\nQCuzkU2DbJ7RKevkZyGlTO4uBLYPyOurcjOkhwxMzHLzmsM64khLjVK7FkJH\niq5o3nSe8YVDhhVIujWO3dI6GfIUtB3EIRaUzX8D5sWIGKtU0Z/T02uRrwDw\n7bStLHOsF1vFJD5fZ1pV5Z4nP7cdw7pi82+88nYZI0lSPB+iAVD8OZO/nzXt\n9Ohzhd3gtirjECTk7wF1a+33mFJwEE1o201NuSpAz3YDfS4lkN2P2xrizYVe\npoio3touOs4Z9ttSD2bFKttrRIqmQT3oY0VkdlB0/JUBVn+rDHtx10Wt1Xl2\nwAZjxxzUid0oMDtMXklMh3A4I488QEycgSD/KlTBAl404LmsbR1FyUtBC0SR\n1r3d+YemoYS0tJi7rHeewWARkEG9ltXVV20Y+Jc9YiZ7iIrmlp2DZz0vfj1U\nYB0bPoEOPk+R/0k28oC985Hrql2GpqlyBpfuzA+7Sni7F9spkv6KoxT06meK\ngo0I8RbtN3VILKOB/PDcYbwayDwSSEhmasCb7S9/UYEQJd6WC9Raj1V6zf8Y\nUhzc92jNj0DVD90txdCaKkI0nZ1RLSbEJKnqx4YaAEY7C1XPlq059hnCifKx\naTRbsg5paEOLQknVgKs9hchFl6QGhIn3beh5U8MQH4rfQD9qyyK/NfM7cdXF\njAkK\r\n=YyPJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"924fc6285b2ce70d7065384cc60b119d6a66411c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T14:11:00.467Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.155","@balena/jellyfish-metrics":"^1.0.422"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.116-renovate-internal-patch-924fc6285b2ce70d7065384cc60b119d6a66411c_1638195231507_0.6647062659469691","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.116":{"name":"@balena/jellyfish-sync","version":"6.1.116","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.116","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3f935528a7d61b5deb556871a30e6058bdb7142c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.116.tgz","fileCount":25,"integrity":"sha512-M/G7EdjqK7/WGpmqtYt1OcRTjO4t6Qd50LWGFhRhiVL5gFokTM9x2dxebk89EU/glRRv8kHUeV/TGxv98nUzyw==","signatures":[{"sig":"MEQCID4k4DMamZF1WejAftuYFCd/bmtJxEVNiVKdl6miD7+KAiB/TiTvyKTcrui87F4NkyWJhRmyhAkiZcv/UmwevrK0yg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215122,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpOESCRA9TVsSAnZWagAALkIQAJX51tg9PBlG816UQ30N\n07jRbqbEiEdMKzKCtXbiYGoigoEeMNMc9fYTaebCSx95znNUg6/LQDfG8n4h\n/I8q/cfrNbvYihLznzKPBQJC5OG35HpzorsC9ASRxebNGk+Ll6CuvSq7P3iw\nfMDbe6FjW9Kqx1r+Su94FIh021d6A5d6t7bE73jcWwDUdV8OoFPe7wjxrh8Z\n9AVWr2kpvnc+v0wRFE0rOpqcCrMxVU4uZ7WQC5/B1Zrhhx1HlCr4qcpBQCvC\nRST3xh7Zy7JesxZj/nM0HqN+RPyXIbf0/OP1hvVxLgfBwbIiPJyQQQzLoPHn\n/RfLsaHm31TOWHb+si7jLCzTLFlhsidoSNnD8+zVA8nJJLftiJ8MZ9L6AdsM\nNaFD0e8n5RJcdoCkyYhagsbYnOOi4RX7LfHeK1VJARvsLszVFFfVEZbv2R+Q\neSSCVsuTqJY9U93QV8unezdRlITOr2OVf5zdAQCFUpDWt8mbosjeNTM6GeCF\nHx+8JGxOtvnArZljjEnXWattKWlMZX8fUHMEPlt7y5gULc6K8lmR3V6inf6H\n4hA/pIbZ35v5OieZ9uYLVn/EjPySrEN8p0s6FzqMb6nGn2lOovpZQVTVVd2c\nvpVQEW0SwPyHuREPLFE9uJzkGkNTHjo519HteFd7u7fAuh29ApqFS1CIk525\nBPm4\r\n=ynsN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"98ade50e4a8727cc15d9c64f66ef18a9451f5cc9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-11-29T14:16:00.322Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.155","@balena/jellyfish-metrics":"^1.0.422"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.116_1638195474246_0.8609413486848607","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.117-renovate-internal-patch-29bb6192f955ccc30665a4127cab38fc12e66515":{"name":"@balena/jellyfish-sync","version":"6.1.117-renovate-internal-patch-29bb6192f955ccc30665a4127cab38fc12e66515","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.117-renovate-internal-patch-29bb6192f955ccc30665a4127cab38fc12e66515","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cca7327db5ef238f6c1adff816ebb8e10c1e97c9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.117-renovate-internal-patch-29bb6192f955ccc30665a4127cab38fc12e66515.tgz","fileCount":25,"integrity":"sha512-On2qVwCuZE0wtrfOwq1ay7NlTeOf89zrPzTpHaAEtahcL7EAYOx/ALeWyj7ta9e1XpryHMTchp8dd3eqY/MQcQ==","signatures":[{"sig":"MEUCIHoavKkDdgp1QUnax9KnuciozggEU1eFuR9m5xD/qNTsAiEAqAoeBDL+wqga1aoinWuC2bL+5JiihzkfQS3CJfDWPGc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhp2KuCRA9TVsSAnZWagAA5ZQP/i6ubJi/C5yeS4KpijbA\nOIT2HzNI1ekyq+9LJQqIkO3WYyxbO8x8VTvHxuZYiIrghnWG29YeS3AXHzoG\nJX082DknIMVpJDNCCmabkw8YHMmaFp5NZP4/o9aRlVFE8Q9rlq3zignjz7y7\nGoR8Lt51vxA+VIpni5fQ5Ijp9HE7jAppee0Aqxg/wjT19wqEELjzBo1Ay5Yw\nhEQAYewN7QRKagAHiv/5oUAuJ2TUy2TkOf+G6z8llZTUCoNDjSGfOvqAVA5n\n2ZG2yFCIb+KSOtt0th47YmyR2PkG6iH8Cz0AYYJDM2pFo5tZHGvXHf2SX1j2\n5EWVcMs4k4aEGRciTZiHnhqZnhQZhsEYY9FLXlN0e9EOidX/mQDwh6IfncY5\nLeedEZXXyC9zCW+97HjCy/u7jfKqNpiiF0qdbqfSafDphA6Y4Nqk9e2WYQUd\noAmobrYTh+eUXvLiyabyjqKppyzZGYAn8b2f611lOGE83vH1M3C202EMGnoL\n2PYnnZ6ZaBdtdwBD/Gk+u9OBgzn8qyAmy9MxeBkDBskWCXRnKjIbqlJNUVhi\nxN/DwVc4P61mCfPn33wICXoC/mtX1Gb/8RN0MHDxknRv9RlDkmV5MCOmVdJe\n4RnGPQmx3axJMcQOLlC7VpsMKdxU/Kg8QQVCKybKYCDS/deGyCvo38prka2r\nODZ5\r\n=L326\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"29bb6192f955ccc30665a4127cab38fc12e66515","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-01T11:51:52.184Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.424"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.117-renovate-internal-patch-29bb6192f955ccc30665a4127cab38fc12e66515_1638359725883_0.6060794116813473","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.117":{"name":"@balena/jellyfish-sync","version":"6.1.117","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.117","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"84524b68a4d1d3ae2b3a71de2c268ce17ac89524","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.117.tgz","fileCount":25,"integrity":"sha512-1A0D9zOkt35XuoGxXgfy2PqG+6XHmcPeTHnnJPBHt14FXXA3ALgOc/R8SMVwF5RD7GWQnyU357MXdwPspKplEw==","signatures":[{"sig":"MEQCIEz1f9CSxwFMWxC14Sw2gscC0zQPA1yDTJ31MRogprVLAiBD/aDVvmyu8z4+6hLN0cxeS5lDkzGKyRNluP8CyRqqGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhp2OeCRA9TVsSAnZWagAABa4QAJclrFgvgpfOl7sOGl7w\n6tI/9ZN0gQp/tNRot/IKt3l+vv/9/OsLd2+NIR34zkHvEkc5Zr7hqWcEpAfJ\nWZy3aFavB41hotUAohLoA+JxBATDaXxJLYRStYxl770Ibo//yx9mXKG/6oyS\nicRlFq6bccKq4tGZXrHQ6u9jGeK7rXxeE+JlWwAvrkEeI32f1rhMBDmMboAl\ndIezzlVP8jFHKrW7OuFi/qvMn8hBvb2M82537ffrfYgZpnCV9MEMExbWJs1E\nUUpfAQbPn/w7SXwwoq1FIqPVEqSthX+cBa8n7oZgv9MiQh6PTHvg3FKFmiw1\nU0qW4TTXMqjszXh2xqLeaBHCQzpGYx9SIgt5DXVgjsVH/owKE51zjMaemZGs\n9E2t8v6QEe18xQO8jHjvWoKUVbHFId0sjX3BV1K63lMrAbdjBM20R2YX0BA1\n3Yo1BHiqPzkJx3aGj1OQCAHjlZp0nYC0+nHGSSg7O1Frez+o2eAMYpgclbiu\n1SA3noe/Fz3+qow+eqw50+6trlpsPfifukohgOqDdWQKrjEOjlohZhlrww35\nvvWipBWVegRLgIjlIXpPTuM9P4T5/SV3EqtHrTeR50VYUyPj527qGrtuZDdG\nsLMVKonHMtU7FZ5XL+8A+G+KPpmn+2HZKtV+gs/gPqB5h/MFwQKuYY0KeKvM\nkxbX\r\n=z7Za\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f41f884335b64cca524188f38acc869913f5b500","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-01T11:57:01.826Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.424"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.117_1638359966669_0.8765002822032486","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.118-renovate-external-non-major-4275390874fbc91b4c0c0783c3988c0db3727e8e":{"name":"@balena/jellyfish-sync","version":"6.1.118-renovate-external-non-major-4275390874fbc91b4c0c0783c3988c0db3727e8e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.118-renovate-external-non-major-4275390874fbc91b4c0c0783c3988c0db3727e8e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e00d5c29115a796f9cf03068766ce48a7b5aefcd","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.118-renovate-external-non-major-4275390874fbc91b4c0c0783c3988c0db3727e8e.tgz","fileCount":25,"integrity":"sha512-zGJTB1KXJLBavEi4vYLCZbCfVaAtSBKiGLArHPGyd/bB1CprL2peDi970gMtMteJbO5odkIn1e+Yt8f6JRbj/Q==","signatures":[{"sig":"MEUCIDkfaHwVHrfqF0eASbtdDM3Dl4IdLAKmupYrKxXaKgEDAiEArRMu1P21vbY6BdqdmrJEvOSb42fe4LiJdKuC+NGdWGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqrztCRA9TVsSAnZWagAAnigQAKEOdMxr/Hn52Z9MMU88\nc8eVCid67T7Rs1lgI/ooXGKHgMkx2Hn4SDb/IjHYbWt362vdtY1XeTbHftxE\nyGxdN/aYlG3bDIfC+ijAKpt3120pc9bcnDAg+6oom45Ywa9Eskro1sAnBAXN\nvJQfDp0BuZwuZx06ZZAXXOHOCSgRgd/VmXV4pnpvKzv2hLI5LAVuQa0WfgRN\n0yhP59QVDaJb9E+U+gso1rcaDNfzs/v8NxNmMLXHXkaztHthXBSpNtFaVrMQ\nHgVnktIeF8OU1w02pZ1VAXEJZhoAjug/k3D7fQBgO0gGnVwInoA5Qmd5bEZK\nZYaalHld2AXREVL4BOBB6ERwAOWe1l4V8CjiVTVbUH9t14C3VLpnUD07aiuj\nnXQxYH+L8GyuV15VSBUQFGraVifTL1oQotfZSI23O8K/TmHLKRYNprA4Lj+L\nRf6O+nhDaU86LoLgjvi39AXwP6Y2E/eRyyqX3CAiiptI18JsFOwL1+XqjOvu\nGiXlLa+TmtBDsMeXcxC6GvIIOw44mF/66jEWVe20BtSakCRNCswcR3zA1BpU\n1PLzNT3K4VvPbDHDpE2H+o99PKCDOAHVTDhcjHnWdfk5Ukcx3nHz5kxVsLpu\navpCwDf5NKQOFJQCUPfXkpTBOVCDVtVC1uXZljsVO7vI+wkT98wpDvB9hjjr\nxuUS\r\n=CokZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4275390874fbc91b4c0c0783c3988c0db3727e8e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T00:54:24.791Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.424"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.118-renovate-external-non-major-4275390874fbc91b4c0c0783c3988c0db3727e8e_1638579436959_0.7811366696956439","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.118-renovate-internal-patch-b76a9f480eda39909f6e38fead30be2239ba8498":{"name":"@balena/jellyfish-sync","version":"6.1.118-renovate-internal-patch-b76a9f480eda39909f6e38fead30be2239ba8498","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.118-renovate-internal-patch-b76a9f480eda39909f6e38fead30be2239ba8498","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8a90962cd34a982189318d6f8557ca7ab26a4b75","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.118-renovate-internal-patch-b76a9f480eda39909f6e38fead30be2239ba8498.tgz","fileCount":25,"integrity":"sha512-PhlGqVxxhKAGVJJc8Q+byT+MQs3gc8jtIltm7K6OBmU6SkIPt8UMgSp7Z5P/60TBuzlWoh/0FLi2k1zfagmjgg==","signatures":[{"sig":"MEYCIQCvrSqC7B1E649sIHHOt3zI0Vs5vK0qN1jgl+00+R9HnwIhAJBKLrv6BSrtX7uxJJgqdgqz9ASr86m3A/YYjQyF7MO/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqr2tCRA9TVsSAnZWagAAT08P/3rED8yxDxsM/jn0Y1BA\n+emo/9IZu8eevKZlZp8FVVqtb/y/W0PhsQXvFk0DF8sbSrcdbPKK7E0ugBjL\njzg0N0viV3OK1+xDKRmWJ6Qspwc1t5N9j/1rpYp60Y3VcUx07AEi58+pP/y5\n9cXlxGq9SrQLLU3nLmeZt9xMpPyKUJBXd8ueZGCbsb657IDUpD9BIh00Gp9w\n1x46n2NPRB2ClpA8VYW0A4ZyRqKwVlPxeJbH4w53ISAxbVOj7VOwD4oUfzay\n3hTzyBge3O5q775Qxdghad04eP0eTGG/ml5RPnvv5d4xIAgZjHo+cQzPoxJr\ni0wcKxMJS4dRx6QEh9Wk39RfhVcwX43DVeLJoQzNgWNye6VtS4xCh54M/aRU\nVfdCeun6xWUsMJMUA6+ipt+ClJxKvK4iRbJHmsJq5c2H7UsV/DTy7yZslshv\nhCwo6OCbmFeOuAQd/MdLSwI9hq3H3pZ5x7a7u0wxKVO0aIQ8J68MNq0POKku\nUdwcmIHn3bW4gRZylAXjeMF6fGID+znXZQDmmgbrdogUgmiwKValEie2P4Hg\nyOX3eFVRRV/eS73fyLNoLdrxLoDM2pywlp3FLc4ySbnPehGert0s1V7bkENi\nUWuBKZLaRhfBbiN2c+tBtMFhjERHnT6Rq61MdDhPI4Xr/hJIu5h3mmdeq+VA\ng941\r\n=M/BI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b76a9f480eda39909f6e38fead30be2239ba8498","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T00:57:11.265Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.425"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.3.1","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.118-renovate-internal-patch-b76a9f480eda39909f6e38fead30be2239ba8498_1638579629460_0.2427645407350345","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.118":{"name":"@balena/jellyfish-sync","version":"6.1.118","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.118","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8c7add330a2cb2ea6a889d047a710a16fada6f96","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.118.tgz","fileCount":25,"integrity":"sha512-xFIRc+LR8ZTqkHdaXvjf3apBVGQFiTknUAvddewoS+fGJozI83Nf7UhIUDkEzVFLAVBvOEc1bxu63jR+MrOBIA==","signatures":[{"sig":"MEYCIQCV8UdMxIWCL0odPFXWdZDEYgOUAResiu2eHZP3dB840wIhAIZad5Bpkj9v8IA+Imzo8diDd9uF8LCp0mopc2kcclD8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215278,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqr3QCRA9TVsSAnZWagAA/NEP/jCU9xfGUMzetB3Lt4hQ\nMEaIMDzln4iX8GELLfeRWbQ+6NMjQDjURhHF/K5rSRybr0T+izrRoVzddBI/\n2PVx9uRKftifY9AKBsz66La/JWrhQcijTGC7HKHUyA8ml6egWkvFhNYJ2V3E\nnRmr/VGYwUKqnJOvxeQEaTfrFw9KZiGEiBZkVj9ELzFdilkyH4gDOhdj4M40\nxHst5uq/j10wwROQ05/DovQpGtDlEj+JXj6tuCyd0rDyZNoKcCW1eAsaB1eQ\nP4MzRVCOjjhxZcEh7IRg9AH87hEGxlfTBg3yg33axe625NqnGDUgC2x2ayCV\n9EDrDV3I2P2M5/C3nsOCqqEEJ84Ugaj1KLTo+76v1fhCLeBD8enwrWoD86bm\nQKhtBtkqXGqFVhLD4084UbbOigHLBovW456RSsJx9RWAE5QG/2AL3TXm32bq\nl1aWZQuFa6BCNO3esRMs09z5z3AtGm/N3DPznwruAaEEoXgjH0xnLvZ4jlzC\nQGIRYIr/grGji/Pjq8ZazRbAmo6WtUjG11OFZlzmHFVX1yp64Ffwq+CYCI9C\nCI/dE50JPf7isisLKj5ZpCNuTQzOWpRpnLQyQGX4mHENyhziyl/xVn4LtV/J\nGllZzB3/cf78p5WufkLSyz9Pc39l0WieRk7DTBjaUadhghk2pE1UeHKR8S/M\nGTzz\r\n=xJ0x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f0a8f4e549f7e121340450c320a8bb874bd36a2a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T00:59:04.997Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.99","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.424"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.118_1638579664289_0.8088018016190524","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.118-renovate-internal-patch-f3433f72d4e0fcf6aac97a0f375fe0c885b80332":{"name":"@balena/jellyfish-sync","version":"6.1.118-renovate-internal-patch-f3433f72d4e0fcf6aac97a0f375fe0c885b80332","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.118-renovate-internal-patch-f3433f72d4e0fcf6aac97a0f375fe0c885b80332","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"27ce406f76731b5b43250e69979a9749b00045b8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.118-renovate-internal-patch-f3433f72d4e0fcf6aac97a0f375fe0c885b80332.tgz","fileCount":25,"integrity":"sha512-bFWUnStLMU2XqxXEml8dUa89oMccODx21sVRbsLktOcfkcnRIe07Q1uqHsYgRJyy4EYxmx+vbvnKuISIr7O+mQ==","signatures":[{"sig":"MEQCIBMcOekzlfdlBiGZBzmqcNLJxGiXwwU3nrMszpPFXW6PAiAWo8vEKPiBfLD57jA+VlX+XxdnVwbit9f7OQh2iEmCoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215390,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqr5fCRA9TVsSAnZWagAA9coP+wZzULqA45sup0Ib1nBV\n4z0FIs8nk0ES7KbXzbAKfkfIMengMIzYVXSOEvdRKgRkPLYb8m6182rgb2cD\nIjw4BU4R55f+ekPOLpR3IPO/EGPu17kPU5UOF+oRtgi+UlxdlK7xWGYMtPYN\nXg6pg2V0xPMb3lONohhl0jFkCH8HQAMqGALYikNPIzZ4MRPOd3kYzckSC9jq\nHcqIp3JZOu3J9LxhbbaWA1PolCbKbVLYh8i5vAaRJDkEIbhvhL1WwTWHZw53\n5dp+/DM8z+wwzZPYS3wW2+gnuM8fbQx4sJXrAMujKGFaf3jIAm4vkNyeDtpH\nZrvO85VQJhRz/4akQZl+ZehgKQNStJSxxLeiB8qJZm8+pXx97IdhZJtTpyCq\nZXarSX7aNGYe/UzVHBcyGg3OJqq4M7XOVKVw13NeCLxwmz438l0yPE+IsjK3\nrAr4lHaj6H3ZtgPGmC6l4PfQsObCn52eE661NGYjCrHGQ0namW9Gzdytjgs7\nFO6MUfq5c2LEOiwrfn56XqX9VvkYnr8gjnykllesj7V9C51nlPMvniIPkqLo\nKGYWZUrNxSATGt7r6ckMQl2lwTD55a0v46gvtsATJO0ncCjAPyA5P71NFmqa\n1aHPGKwbL9vgUashIzqgOU56wcCWObcFfvgS7gE5mkDe1eBpbXrLGeAMjAIq\nzHm3\r\n=ZLzw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f3433f72d4e0fcf6aac97a0f375fe0c885b80332","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T01:00:15.666Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.425"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.118-renovate-internal-patch-f3433f72d4e0fcf6aac97a0f375fe0c885b80332_1638579806985_0.600845276030358","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.119-renovate-internal-patch-d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5":{"name":"@balena/jellyfish-sync","version":"6.1.119-renovate-internal-patch-d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.119-renovate-internal-patch-d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"428d6817a3b4d98b2711e17b1c618886c0a14321","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.119-renovate-internal-patch-d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5.tgz","fileCount":25,"integrity":"sha512-7EPHGS+91f+c2Tq0wz4VmDmv0msUY13egf6yqVZHiK6RH7hJ57jIYtgJk3NyslPz1pHRd+MHJPMqqsjP8955SA==","signatures":[{"sig":"MEYCIQCoM0co1S8oV08bd0SHpX/guF7sjwCaBsjwQpK7+ec0hgIhAL+gJPE+rP4yXuGoSV5cVOA5J6O4icNtmJ3Y/OoUzQuO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215416,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqr7ZCRA9TVsSAnZWagAAqiIP/jthU3HVVWS4eltUTW14\n/M7xAoSYwnIQGMbhwADOHdu9cAOJn3Li9zuzTj2NxdOVFs7HEuUphsbNkFvb\nh4UdW9GZ8EKwQeFioaywwwp1WQfu7ywwJQHXziS1ZRUu3t4RMXHNfgTC3Hm0\nNt7WL7qYcu/xeQTyW4LdjSzRsp2NAJ7LyXUi9Ztgo6Jjwnbqs4XHonDpZ7K3\nNT/TYhg7/10NHezRdkPZtvPZrbXcuaawdIvqviT04dTrSOS7TF0Dy1Au+Cn+\nESrbWZtYltTwLbcY5OLMMDQMzY/JIp6vy5jhaTL4rxOwwXaR0Ic5JNXKI2DM\nTjgTIA/TKs5IJ/5XV8GLzvZehYAHL4nZJVuHFh1bydRh+xECvkXRGxMdTCns\n5BgPCgpf2rNobdhDJMI/hU1H5w+l5Bt5YM4yGf62b5UuRbDzbbXeKr70dGgp\ntywGch7IWB6pBM8GdfbU0n/goKVvzPYSAcWNmG811nBVt789mOYHhnUbEeQA\nq+ZZ/S3AguDNRQtH/HdcsC6e0YMDb7BNGOL03uvGKv0bUpOF4nNa+mpr857q\nd0P2AcDzQT3EMUzp7MtmJ705/ugWYIh5qBiULWmmEz1gtpLuv3V/V4sQtksY\nAVjQN+fnnOqWXSod5SCFCZv1ZZbHAenDUJYVq1y5awszTWLaEp7VHtXtQGmA\nGgJb\r\n=1Sfu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T01:02:34.648Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.425"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.119-renovate-internal-patch-d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5_1638579929069_0.7089990071863848","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.119":{"name":"@balena/jellyfish-sync","version":"6.1.119","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.119","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3239b2a9051f9e959324bf048d33c5d56e153c0e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.119.tgz","fileCount":25,"integrity":"sha512-AZjawmqybQNqQcWOuNAp5CvdtCxbbJObQd7fGrhpBnjino1nGmD5je+PDi46ShRrPfizTCZKPBUYrMOeApjQQA==","signatures":[{"sig":"MEQCIHOeWLYX+w8nG84jOLC5cscg19ss89voyF/8lIDR6dCrAiBwCPXR0XNJytA2IDR1wMdAxBV0G/b/ZJlc16F/aH7WDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215351,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqr/BCRA9TVsSAnZWagAAw4YQAJfQ6XF5MDVldDgQRHDO\nMxzqcjvfntwY4VvGECDjqfQWvmv3B7C+v/Ec7MP810af+NZGamTxzJY4ykOA\nmJhJwey4/rEqUPViWKQtTSrPux9QJHfUAOq19v4xEeIS54TcNgLaXxV05pc5\n755iHo35EMYxLTUTaMG/mO7zZbj5MazftekrZxlZObF6wdtzjPIhwnRH4lrl\nWtnD87msZWQ4aQP9YUP2JVjqzLl0+YKHrKzBER4ivp5DSNWmCT1F7uvgGPEU\nYeDNEFjeRBmlGU7jbV9i1C9A0s4JuRmnLRJq/kSF0EVXUS+ke80fcys6yfsm\nEGw2534bD5cT1Wqs1il5LA+RSA98lfejrjHCaYyJTILY+HAScNc4wNYosx94\nx5t3Urvaksbh8O3EhYhbxgAzbTMMMHhXjFr6yPhmP+x5W9SRmlbmbVo8ciKH\nYR/Ch8y7/JkrVCeka9atihFIMOa/uuuSDCMrl7VYtzTkXY2BUNw3YdR890v0\nBMQmMXo//1f1X9+lNWYusryvewlU3RiSlVodNJobPDP9GKn7aFxzUVmp9IRi\n8KJd7yAhsB+Otw5nMCKy9NSQCL9kSYc2G5JDyV9WZy9tRe6p/e32wFNR+twA\nrXxKH5/OK8atWmuamkKYgE0Wv1tMhrUy8hM5+KojWb+9PTMakzjDGfS5DVRx\n+e3x\r\n=wst3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a6056fd20ae4b7228c7a4e093bddd6027d7b047d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T01:07:25.755Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.156","@balena/jellyfish-metrics":"^1.0.425"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.119_1638580160968_0.25677702826781346","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.120-renovate-internal-patch-1ec9385ec8af6be8229edf2aa876bf8155dee2d7":{"name":"@balena/jellyfish-sync","version":"6.1.120-renovate-internal-patch-1ec9385ec8af6be8229edf2aa876bf8155dee2d7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.120-renovate-internal-patch-1ec9385ec8af6be8229edf2aa876bf8155dee2d7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"096f375d7651e52c61e779874c1d8d7a39a18a67","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.120-renovate-internal-patch-1ec9385ec8af6be8229edf2aa876bf8155dee2d7.tgz","fileCount":25,"integrity":"sha512-JWarnIUmudGuVXTDmq2IS9Q9CQQ3eM6qpJTvaZjH3ZAyZ2ZM1hpuFUBuB2ElYZNSHc4ArDeFYLUhdKNYdi8vqw==","signatures":[{"sig":"MEQCIEjf7bSi/9QmQ+MufPpqnjuos2JvYVsvjyp806nIu9UzAiBQoGq3MWCl0XpYLNBUt9kGsWE0wf2U1U1Jhdmm7DLyqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215488,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq7VcCRA9TVsSAnZWagAAs3wP/A8MN7/j5Dj4bzeIS83d\n2OvJ0pVQtO5fG/ekBEXMAuERg4hhMIId8BpuxQ0i/8nA9uy9zJN6HRpBBiaD\n3AffEKC5rzBvik9SYoYq8hJX10jG8GTR8i0/lt1KwFGcZcpxxnTRBLBC3ppj\nInb6xTO6+Hw0gUxNEWUNGpbKmIfP5i7FSdJeaXp9DhWlt7aK/Sd2srkHF1mC\nWqbSR0PsaUhbCP5l1eklrjo5kgJFECWevLWifSYxCCzyN94Vn+Yw8oGqK6eh\niFNEC78xHUu/UK3uqoi40cozXYIQoUUs6c6qChjROOJZ+s6Tgvu6Q6Dsdwz8\nc9eEkOdYsCT8PWxP0Oz4rMi4VG6fJhgkOXSTw75D0/DAcLpm7Q6PPSS4wJ3h\nFWM/Ibbvc5JP6q9UM2g9MOS13kcnTi2J5uKfrIZ7JFsJEpmLtyIL3guHy/n+\nC1Llhe6UbnPVO9OwMwheyg63vn7g32T2sBn3iQ+EizUIX/REpoEbG22Uexo5\nXa7g09Pnsup1EoI17wYrrd3hn7NeaS3Vb2MWmZFAsT/OSrUE8cEpe1URJuJq\nWG8/mFsKNjSZQ/6wtItx2wBGJAte4f0eyoOO8/dXY5ftIRTr26iCTPccCI5h\nYqsf9cbI7ocVIK0a622P/b4cYw4DPr7YuzuAIK5p6dyTgohH06uRU/C22OYK\nt59X\r\n=iMnd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1ec9385ec8af6be8229edf2aa876bf8155dee2d7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T18:34:25.650Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.159","@balena/jellyfish-metrics":"^1.0.426"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.120-renovate-internal-patch-1ec9385ec8af6be8229edf2aa876bf8155dee2d7_1638643036746_0.1972781589537902","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.120":{"name":"@balena/jellyfish-sync","version":"6.1.120","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.120","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b2954560f1212eab3af5b0e2a896071d51f74ba5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.120.tgz","fileCount":25,"integrity":"sha512-qHp7RgGHSDh8TGp2zULvgYvx02Zcxq+2W4p1sixzIr+iKOQWq07gJgoHYeW+D6bnnyKmojDfPMRMWR3A4NgbdQ==","signatures":[{"sig":"MEYCIQDbY+aS3hknvUtHVB9Yv/UujnrtMmTHh8AYLlWpEMDXLgIhAPqg56cQ1DMzx6hixNY40HN9Ba9LnnbGiPgE3Pav2EnJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215423,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq7ZPCRA9TVsSAnZWagAAeZQQAJSB6ZHbo+wmCu4u+uSV\n2yzsC4Rg4WoUOxEbj/91/4Xlr8z472ezL0cy5yzxu5UcIuTMkWdIxlyffKRC\nHOu2ug3vLSvWZuEMNkbKjDUhDS+GPQ/yoNSrCrDhmszbp4Yc87kUfTF6H0rx\njJWwGOM4S4WMoTb6+H9WB4bKksWHtyYESO7IoCnGkwv0Y0o7BkhDQGSsl77D\nTYcmnZ8cV8uQEQbzcEluFnUM+46Tj/TNLGj3BW3z36uqn1WsW3h5eboVvvCV\nQvzJVUXJt6gVhimL67USUa7HRjQd71uv1zVsJrwgHjDxeKdU2C6PT6BgOvU5\nrIFIRY/Q/3KjUmBkZ2tC+MT70eXTbqTp1lf1PYh0WM7Xo1Dh1XO4lslqKyYG\nJNXx6f+3Q1pC9omXaZGCEJii7rpjHZuxE+AnncskCYLX3u7c+w/hAFqXCNIv\n4obBZr+neiy0QabHo8dKpbXW1kOQws68cvsNhsryUdC0xbpgXPO+qKA0dQS5\n6/o04zuQn8oS7dWqzrWWPAmlBv+SrJSKyeHQNR77xC7Vw+3G+aOhsMrpdDhw\ny72c6cMQJXQUqlnCLeSDjHHqrF8I+V+ik5l3LkSSoJBGd0mlHFM5mtZi8HYH\n8dE+iGG9XCy7+N/mcmkhWIJbkL4j2XZnn6qFrxqYeP7tqNk15lyb9nFwN9Fm\nhV8D\r\n=qj04\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"19c72c38e27c91466dc478a4d744200fb6270c6e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T18:39:19.606Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.159","@balena/jellyfish-metrics":"^1.0.426"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.36","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.120_1638643279189_0.6875615123420884","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.121-renovate-internal-patch-9f4b87bcf528662ba016fc7c7879a84552c5fec3":{"name":"@balena/jellyfish-sync","version":"6.1.121-renovate-internal-patch-9f4b87bcf528662ba016fc7c7879a84552c5fec3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.121-renovate-internal-patch-9f4b87bcf528662ba016fc7c7879a84552c5fec3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"211ad69c338bd649efcb280a3df2ac027b37b7ca","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.121-renovate-internal-patch-9f4b87bcf528662ba016fc7c7879a84552c5fec3.tgz","fileCount":25,"integrity":"sha512-k94xKjwixkRWTWOHaP7Qn5Rw5j6hZQx0yf0EdxRs5lUTLg5ePk4FBFNaCz7mrGpuvQ/GBVT1ZjTqIKfeyRrjpA==","signatures":[{"sig":"MEQCIGT0wkpJoiCbjMQGefPKJUSmRkqouGHBiVhtB60eCPipAiAh9Gt7rf317yLzoFDUnVsh4Hxn3izwISWNSh3BJiYhlg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215591,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq98JCRA9TVsSAnZWagAA+DIP/3Lkk2Xk3JzIAqy/QeZm\nT/sbcMwS3mbfnm9bydVsXunezdLwdDd0NsdMl7GVg7DNLwcCuRpiHYG8GnFu\ntEUhhgQ1HU5zkcxBMU7FXCcz7EM9BqfwRyNKCMrU29sK5A1Wjdrw2tHp6W3w\n+j6U/FipI08b7RUL3a+niKs8rJxmOORVh2lKcY9hQpxk9AK0M7LYjhBfFKtH\nbdhgTgynx0manjTDmU6iqpjci3gA+lA+Gc5aDwlslQVe3jBXGixN18nMJZ/v\ne/qPOq8JpWxdta51qWp394QYCr9Q1IyoWUSq35PU7TqKND4qaQL9S9qTb0Bu\nqXtbjgJuBGaUpUfzWWCGKEcUJmmVvgjFeeGCSKytruXivDMo3tBBs58WMIu0\ng87KUbSlAgMinHIUGkHFHCvv09/x8aXOzkQGvlRKM38LVZM33m+m7ZYKBEge\n9+6gOHe7kNJzJKLV61zGwiGsYlqywFL4PTbQERo5NH+wQkPcGqCmwsAm5471\nprVS3scsys24gbi8ZN6KGR7fU0bB+jskiwOKGP4rJu9cIQHVZ56KLFJtHLrm\nOyzNbUSd4JDD1aFpMNJ0wM+Va4704eNT1zxt6V+mG7CS/iF2fw6oY2UkLug4\nT9Fk3vGEMoEK28dm4tqZAwsleqPUM4sP6G8vmbOCZnD/LrKeS44E/WrMp3+n\ntdo9\r\n=gImc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9f4b87bcf528662ba016fc7c7879a84552c5fec3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T21:32:16.253Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.159","@balena/jellyfish-metrics":"^1.0.426"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.37","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.121-renovate-internal-patch-9f4b87bcf528662ba016fc7c7879a84552c5fec3_1638653705034_0.34110889963047986","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.121":{"name":"@balena/jellyfish-sync","version":"6.1.121","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.121","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3aff5ab49d7ec05370b0acb0e794f9b046ed9982","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.121.tgz","fileCount":25,"integrity":"sha512-JBtqL1f0jBxG4HQ1/YJ2hrXZENrHBk6gLrwdmagfQRqkR63tjGiBqDgLDz3A2jErhYyMzoNbCZnKUiE6Ie0PIg==","signatures":[{"sig":"MEUCIAGMTvmKfV7Fi8S01zqofuxg99+tQBTZ1VnxgN+OwTs8AiEA6yKimrkYkRN4NgetuluJp2Cj/BWcBSXj+Qu6N/Ragqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhq9/CCRA9TVsSAnZWagAAFE0QAIVsR8cLZuWto5K5f3mE\nsNDqECWW7WxySUiM+i3tZB6z57bXLszybiUkUWj2O92nAfCAuQEoowo9is9K\ns26jZfxdOVynkrgcdvQjZqZPP0peZ7Iu4yXX3BKOyZTXzsnHAi/XXFccpma2\ntaNYwaBU2PRJu4Bk7vjMglJt5EOC2Y/NKHXPUH9TcHf/7E1CZw8WWGJox5QA\n+/OVMXzZ1uAA5/ZwZPwDPGlU4R/UMPfYIUD0ctN6SLY91ZI9XonHn5+hNQQ6\nyv9k8pPnUn3u95Zmeh2AaRMiBGo8PdhE3X5xn2rg72tpSACizCxcfE1l+l5t\n8INvhDpxnYblqi+v7NVLIJ8pXVg3JzB2yXq+u45amW01QoPMYOnjWrw54mYV\nes2VQ4FKSHoetflL+bN+qhzaeu307NDd+/1uVdGrmzNQPLbd+0cLUUdE1tZX\niWpkUPFcNRKinfoH8JvBmISzEYw+2oMfgQtL/E+154i13ltn/VHqsxT4Ey3a\nmP8eNz2evObOS1oc5aSEBUQNit6mhlNtEFnmTHhfhflkCOp3ww6foGN5MUQd\nt584hNhbmR3tIRR6ehpTvoOmJ/qTZyk9VnBzrgabHEA4wrx1ud9Zbjt+Y/VO\nJjtMcNtX6RpOdQnMtIE98QTl514CU9g/le7uTXXTwZhLC2qbpona5HrbdW/f\nAhrc\r\n=qhpH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cf146f1dea235ca29c97bf1419d1006db2c306a8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-04T21:36:15.258Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.159","@balena/jellyfish-metrics":"^1.0.426"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.0.7","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.37","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.121_1638653890616_0.41779870773333694","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.122-renovate-external-non-major-2ae9fa490de89f3af79e08bb6142be5b75a9d77f":{"name":"@balena/jellyfish-sync","version":"6.1.122-renovate-external-non-major-2ae9fa490de89f3af79e08bb6142be5b75a9d77f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.122-renovate-external-non-major-2ae9fa490de89f3af79e08bb6142be5b75a9d77f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c415480c16d47cc531620ba712ee340432bd5957","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.122-renovate-external-non-major-2ae9fa490de89f3af79e08bb6142be5b75a9d77f.tgz","fileCount":25,"integrity":"sha512-sl8MgrGLmRTHKGGfFPKlJmIWcNChrBHH8BBc2ctTrPnadC29Ywj1LY+VGcys/mkWOYLuN+xUNBAVulsb5I5S/g==","signatures":[{"sig":"MEUCIHXD0SPjIgWsoe+/BRJaxlfn/IVmMVf2vOUZ2ScQYOCDAiEAo7mDk/aKZvYvWqIOLQV79WoOwKJxc2OPQq17+YeGFqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215682,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrJb7CRA9TVsSAnZWagAAT1YQAIb8mjMlyLZyhcWlFS/Y\nDADXONQvayvoe4E/pfCnhAo6t38aE0LZxSkKJISJxxzVavkFbp18nNZNWQqQ\n4HxziBvTiO4ziMeglqQvkVQzeSNH34DsFT+/aioKTb6KauwhNfRj2Ak+WRVz\nqwfnEgcUSGxOOVG74ZqkIgucYFegwsJDTMNQtjTerGwvaka/TPrifIszWy1K\n72XqwtUcQIWMT1vLtlLIHONotfQloBFhm8qVTgBdUyEiZ2RzULKeDuzBaNFf\nC5NeU11Rpu/C3a5wZG5qFZsBUVzAOnAbAD0BU9NqbD3XvSHz5FZxGIp7uPsG\ntBsDtF2HQ5PxMfxevGAdhdVTKxoYlEnGeZ4dYEWoz6yPrq8CXNY39lrQxk9I\nHKQDuZtZtBRoz+Wt8Z4QUbTcyuyQrJpSEiS7wUyv/pLu78IemiHr8BE/xs7X\nX1VaEWYRS4OeKBhx/MujnFyAX+9d8smeSak4T1/7YXW/GVMpZa3uTlTweWk1\nxVVSY/vrPw++XhdpQULxayIGAmLjoPMDGUEBdQYGR/j5J4v2JMfc7hpGGpyn\n4KNGnx05CQb6oj77lZhiQuWmOsyeXYlRy3I7a5EWS4oUybG5MoIIWWifu8n8\nKy19mUh/1N/8Le/KHJlAX1c/ii/L0pU3gcdUm468OmRrPEvd2TGAqvmwot7m\nn62d\r\n=u4PP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2ae9fa490de89f3af79e08bb6142be5b75a9d77f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T10:34:21.092Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.159","@balena/jellyfish-metrics":"^1.0.426"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.37","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.122-renovate-external-non-major-2ae9fa490de89f3af79e08bb6142be5b75a9d77f_1638700795295_0.7611637705963299","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.122":{"name":"@balena/jellyfish-sync","version":"6.1.122","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.122","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"144a4fdedca984677d13d88a438bc9926b74bfb0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.122.tgz","fileCount":25,"integrity":"sha512-fzy8HXQAYxe6YRPBJoqus+UGh+KI8Cwp5mx3PBowTu8R7tsmy7B7bLPfs2fSahQTgbEbOIPzXdEvLT5hGTRv5A==","signatures":[{"sig":"MEUCIQCr2Ytf2TDQsRmNMnQLhx//hKa8G0GvM7PE5a0wrVsHtQIgbTcTqcOi9s5POOObpdBZ1u90vJsBkSlmouqyimKofig=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrJgpCRA9TVsSAnZWagAAItIP/Azfxkz06deVXJbEp6Of\nGHwfS1d+M+sYxPJe2nwhJUqafZamlxtlqcvq1zQAPsFq3qAxapZS8qu/EpsI\nk9hZXd+y/dG9OgYHxKKMx1CW+Ty6PcN7mz10X5u01GaS6Uzb5gkVs6786K0b\nSO2Tu2v0n+pHcxQ5Atn5q6op2hiqWazh2e5CuS0kyyHKwIgCMaKQHYgwrgf5\na48jFT8R+P8e5ZUYuOv0dPtPz12D0COl5KOYr1dz+SbmhAvHtdwbKo99uK7b\nu9gACiR1lYzGXOffZ5IKpivPXMv0RWwwLVMarP//pB1OZDCHW2K9wI+9ptvm\nOUhsrBFXaujTorTSiaHWEliLyIo1LYbefVY1FMbm3Zft19wsWbf4t7gpyeA6\nFGdf/2S4v0ebxOYe+kUAf4EB95Z+FSPTKa0R2qqLq2jrqMlqFErD+Ve006i8\n1GbBJu9fFtc8nih5R96VBJsPVOGHx0dS5BXEDENzdOIbQhAKP5J/KzYS5n/m\n3FHSNWPQwxqBd9UfehWmiRFxpCs3uFM8YBXwJyBcQsxDBDL/ao3xovxAuTDt\n10XCJGhG3gACx2uWyQMYaVhFIZbFaoICcwgEzxP4/25FW23XDxtnqHP4NkW6\nq7/9IeuEnSKklFymKQ07ym/orpAM+sapkmiRmzN8ao7QXN/WcVTkMiSFXMVe\nO22I\r\n=udiF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fe815c64848d1e02c9f0442e99cf8f953cbe96a8","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T10:41:41.858Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.159","@balena/jellyfish-metrics":"^1.0.426"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.37","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.122_1638701097287_0.07053567068083466","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.123-renovate-internal-patch-78a94579b6ae6427eee6e3f8b409bdc84d10c569":{"name":"@balena/jellyfish-sync","version":"6.1.123-renovate-internal-patch-78a94579b6ae6427eee6e3f8b409bdc84d10c569","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.123-renovate-internal-patch-78a94579b6ae6427eee6e3f8b409bdc84d10c569","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cc3b7d0a73f17e88e5df38674d82cb653f701909","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.123-renovate-internal-patch-78a94579b6ae6427eee6e3f8b409bdc84d10c569.tgz","fileCount":25,"integrity":"sha512-SnWXu1p/roaX1hvjLjpl4VqK+V8mwb+RlIGM60+dNCH4KcaFLi1iVm4JGcB89CrEQWdlSn5S73QIxEUx7FL1aw==","signatures":[{"sig":"MEUCIQD15IB/pk6WVnEZ40jt4rR4/AIWNqDHJLgoDH3d9o73AAIgd/jZg3FvNe6dtGLZWFWi8Fz6rrb46WIuWMA+jD+YW0Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215750,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrJlECRA9TVsSAnZWagAAnEgP/2pz+VMnjQnQTaO/xHJZ\nBMaX2j7CM/E8vIsYukyl3uaO2V6D6fXSygXfuls9E64cP2W4nfu2Owa5LgGd\n9NJRrMsrpx4ky5QpBigvZURnmCYpOnOd02zxS+pAlZwDEWR32Pu3lHHPhw7x\nJXsvaKZinjX5TheCtsNQQQMlNaJXdX/AY+GOhYuFdBRbxxO50M/Wi/vEWclE\niC3gzA3OBeGkpg4hyWOA7wRXKNZDWkygnTHnCZnTx06gRl79ly1NuNxvMAzW\nnfmGQQUc0IYs2kPGkqGGeHvMocb2u+hI3Taezr4srqWDbiaVuqcZRlvwcCIF\nQ0ucGYCE/wd5AwsncvpJqrVSL2Bj5LUbnkF/arHC7nrj8wrs4QrsXVnLfY6k\nhAFrCQA/gajXAhc2Pl39RC98Eq0UoTBYTbqCu8upI994d7PRwmXyXCaT8qbp\n5KQCiN25G0t7iUE683KYGrpiqTd5fzOBUTJ0FFgb4tSrqbKMR6OhDrIxTANO\noDhrkaRvDZ472lEgGlq+hXhRL62ZbG4uC8z/illnLaCysb3euOZSk1VoZkxG\nRFjPV+Xr075WEIz6NGO0oI3+DN6lNIW1XgT5piBpoH2zEFPdLTS5TSoPc9iN\nzQXMT/UpaAQkJc32InulPVM4Y5IC+hPw7nu6dooHBboiWDGQq7KAJ7er1E7Z\njcDX\r\n=olL9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"78a94579b6ae6427eee6e3f8b409bdc84d10c569","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T10:45:10.613Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.160","@balena/jellyfish-metrics":"^1.0.428"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.123-renovate-internal-patch-78a94579b6ae6427eee6e3f8b409bdc84d10c569_1638701380488_0.26754649025012056","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.123":{"name":"@balena/jellyfish-sync","version":"6.1.123","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.123","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1e0b03de1ee452f2634aa8167afa0941ced2e65c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.123.tgz","fileCount":25,"integrity":"sha512-OKvp6oWyvSIhtPPNDXDDdy9OD+I0RTKOJooortsYZI2XzAohF5z/2KoZGmr41/TSkwcWJ4z4dj2tCtK3VIUQDg==","signatures":[{"sig":"MEQCIEvAD7lxqKoV/mcrB2il0Y50dmok4XxTnQq3I82quwp9AiANeMFRFTP61ArR8+78smr/4hy8oa93KVFeFReZvJxq7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215685,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrJuLCRA9TVsSAnZWagAAjRgP/jQWoNaA1Jh0TvpLBQZP\nSbOXF3FXIxm8d92TrlE7QreakEcI90xDrkXUyefQ0rFXys41PQ+LhNuIatNT\nIl0bvw5mDx+z8syk/RF9mxkd14wfcoOD1U+ksip9Dy0xwEzykVxRwsGBYugj\n639MFNfCbmEo4xZLlSnnsGhqwhE9NfnB4q150BfcNUCr/uyHjsFW1VtACR4F\neiZKFLgDSYc91jTB8RvwMKTt8FP1gfCUyUZUIUL6Kc0ZeVxuOQ3miGAsUdos\n+rRfNzg+xBoK64suIRLrJAWeNA34lIz+UK8ljVyl/r3SQPyKbIaCZBrFP6Et\nuZ6uNhHR1dFLaZ+Nw8YC4SgwZ6weq3M8gGCGIAEFLt+QW6wSNUxfOxVrFvYF\nz1MleR715zIFrfqnRRF2dlJhP/pXg0u4IHu7GqH23rdX5A1B2JJmzcMzLxgh\nV+jxkm7Vi0/BOEuqQ+2hRQ0WWKf8zqUwGbbbNZxiPYwp8bHBmONc23v9COWj\nskKkfeKzFQ0eCDyuwi5eOVCB61PnWAaoHKNViJlmrb1+bZG0/9W74jj/8CFz\nD1B7Bqi8u2t2adRUnBGA61Ha1q4YDueKqb65tLd8vjnLIEdoE8G+21CBtFzN\n+LDLbUhn3xAqM9M2bLLuUqG28Dl+voJwYjYeGhHrxDRHko0s3zGPI1kGD6YV\nAbQm\r\n=DI06\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84046c6b6011f57b3d7343e3249a4a231141c032","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T10:55:27.940Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.160","@balena/jellyfish-metrics":"^1.0.428"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.123_1638701963367_0.1459166154176823","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.124-renovate-internal-patch-cb54f961c721bee6d9b2b7264b1b6051090d3232":{"name":"@balena/jellyfish-sync","version":"6.1.124-renovate-internal-patch-cb54f961c721bee6d9b2b7264b1b6051090d3232","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.124-renovate-internal-patch-cb54f961c721bee6d9b2b7264b1b6051090d3232","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5670de5e06a90bd2ebd55b511d92ddff714b8baf","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.124-renovate-internal-patch-cb54f961c721bee6d9b2b7264b1b6051090d3232.tgz","fileCount":25,"integrity":"sha512-rkIVxk5wFmR8JI9YnOq4b5bCYuPneGTZB0LUFqWu7xPG5uefkHwvOdxUq81YR/6ANAIPWnBR6xsXoRv3ZEn73A==","signatures":[{"sig":"MEUCIQC30tlIh3+EvHAkswOai3wjeuGjHYcZMbD2lvmBo+AFCAIgaEt599zp3xGsTSCv0rdHe8vtspb9ctMZDtxKowdVYwM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrKvUCRA9TVsSAnZWagAA+bMP/Amm5bbYjSxmvTokDNXm\nvqa2NsUq6GgdxydUUnm3gwCVS5mesEbs6oO+OQypX31emEogszkKcrGjpzMJ\nFp2kdRBLvUCIZxNQNTCud8mOqAcamHZJqfgihpf/w3iqSAW9plT0Gm190NXp\nIHzQTpVPZWuTMs1aE0fjWIkCQLZXLuxAoMBp8SPf+JE05EUNvWVi5vpmbZDQ\nbW0ClasaoLTaBRgI2pN2WgZtgkQp52KTTxlXF61AVCxrJOkbh9bvXXjlS1+k\nkjLLf2lsJNPW0PtRYJxxnz9oA+Zvvg/OzS5ZSDy/lvCxXFfbJefzu9iU/ava\nAk2prdhAOmcOKk0yD9DOlYs5df53PjQ242zqobYAY1jif/CqzbjfqrgKj8/n\nheEnXii+Ye9QLvwqUQoYv4rWANJloTqosaw7rXOh5j9lcrvdTDPOCk/0fPz5\nC6JLCfX1+BWIyMsDPik5Ginx+kq7DAfjL5Fd+8k/9SH0l4/sV+cTtVNdBU3p\nJ3Y1WbsCX7YOT4J7EPeUy1eCIxehSn6p5iyhEEy8P+02FCHNmgdSBQ9szWHh\nOHL3CljpNYV06jSavl4PkBUHxAhefa5dzMb9QY0zirgXFWnZVLNVA4LMlJTx\nDH/lkjVMEzJe2Km2vvNwIz1RmF0NMi2ICrFVRRcXWpaIrtHLPPbVMwgLyfYP\njouN\r\n=LP0Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cb54f961c721bee6d9b2b7264b1b6051090d3232","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T12:05:07.971Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.161","@balena/jellyfish-metrics":"^1.0.428"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.124-renovate-internal-patch-cb54f961c721bee6d9b2b7264b1b6051090d3232_1638706132138_0.6668645460481355","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.124":{"name":"@balena/jellyfish-sync","version":"6.1.124","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.124","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e42b5059693cb00501bfdb8611f7cbe6b50d463b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.124.tgz","fileCount":25,"integrity":"sha512-gRr9NdYjTHPknVMsFGoCTTsW5b2EVUQtx5gPxKkGrfrw9XqDtrMkKnl462FmlQmq+hvuq8qNgKhc0Cy/Qoh9QQ==","signatures":[{"sig":"MEUCIQCDWnIuV+GYp8Pv2hiAsU2OAkKt0SfCI9S9vrTtaIzv/QIgbtmOyZcPeLfmACLfZpspQfAfWNySo8kEjUepGqX3SLI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrKzWCRA9TVsSAnZWagAAMHIP/3iLlUzrx4yeZUS2035r\nCT6G3OwCMga2Ud0vR3p0ojeZ45YY5QCcsaUyg0/5PvRmJdfBNNOJh/fvqlum\nWRoKT3fj8eg10KHOxD8p3ZiJTcC1qYptQdM1b6Dub93UaEvVlYKylcEwwdS6\nJxwVh28OiZ8u/I30X4/jUjkXLg0hFwbIv3zskrolYAd+HnuKq7oM3HrK5BZ7\nm7SNB0XQZnL7FXEW6pl5u0jZ9UtjbalrX4jsWg3xHXnwWtDVIubfaz9BMPkG\nvajeaIv+ExGhHZYM7nzFKoU0k/RQ0KZB70gSyvYrOa5C6v2kgRTF1+vLNOmn\nrc/2Hg/jkIjR/GVvst/Tvkup9iHD3mM678KlZa2meO0LyG2dukkO1HNaLMPR\njSAPC+yDbXcM5bLcbjBLZ/u48fdz13VHm+hqpZK6xy9/1QG9L0HLXI2V9b9g\nPrdNQlvi122GpDHLPZBcnh9aEDU3UVPSWiEJHMHB+ixvZIrusMiCtgMG+Egq\nO+JEr5MSqjAxdQk+gTs2IlCv8jUN8B4w3MrTPoHVbXzE4rY7ZzpNWsZz61bW\nV+yISI/cODES3LiuXtehNMqZX19kewpybtFWzzbMLjulGvRqhFI+SYR0MlSE\n4QaWkRnZSmTdsUA3O4if8CHk5EGILDRVCKEMD+dGYQbqBetw79D/5qJlGszL\nwO5M\r\n=iL/K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"02de0b0c6ebfe2c822abb33ad5d76f0c6802e082","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T12:10:47.987Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.100","@balena/jellyfish-logger":"3.0.161","@balena/jellyfish-metrics":"^1.0.428"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.124_1638706390828_0.3449907592218504","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.125-renovate-internal-patch-2a40958de832d77acc18460988b99ee9925b5abf":{"name":"@balena/jellyfish-sync","version":"6.1.125-renovate-internal-patch-2a40958de832d77acc18460988b99ee9925b5abf","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.125-renovate-internal-patch-2a40958de832d77acc18460988b99ee9925b5abf","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e3f146cc700d7cdef1e42f07ecb1728847edf944","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.125-renovate-internal-patch-2a40958de832d77acc18460988b99ee9925b5abf.tgz","fileCount":25,"integrity":"sha512-W01CiJXj/dVbkELW+CX683Ysvu/zRZjfxVTnysr/ArdpaC4ZdopPSY7zz3SqgA9Q3ea1kF+zkL35da3ol8gOpQ==","signatures":[{"sig":"MEUCIQDzRMBDjWGX5tti6YsmXPUlN2HfEbi0Mfu6d3FrzNBNiwIgA/riu45yZQXs3tT2kEhImzWOiOhZn1mrwcFqV9JQfMg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215927,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrPYwCRA9TVsSAnZWagAA1OcQAIRMEnVwbX7pgCi2OTyY\nSup2c7csHk4NwwANOUUijHdDiMGPS9hIAi9HxRJFY2VfPKAvlrkHi4HesTKT\nvI0wKdlg8k0CSzmhDdjuGFLDn/MQtgpDs2q0XkWiGCenEw/OFXSoIIkzOr3l\nSDz9xmtmlMPv+booImJJ7vLk84DJZw21MDk+hPWty1JPnCowAbihdb0DjQBm\ngocuF6YvCz0KUa83hl1q+ZOwFg+GXI7/S7dsmFy+n75F1S9O3Ac8dWH+JkRW\nKPowp0Ls45hR8K6OAdIWRxDWR5mdxXGY/mnnKoGFX3BYgD70i/XfnGYf+E9J\nzFUTZlU53C5qkyqjuIKAiyuAzkRZsuDCgr1ImWRdwgt/KD2enzMW/q97FMtJ\ngPYqMP8zMyYlCkTovm4GeRamLr3qdUiCVEzX0Xy3/a7vnvU27tUr3XBkod4F\n/VA79tuw79RDEb56lpCGCjHM/Kf49LSQKlO5Z+YhlEav2pqkmVKQCUHHuWmh\nWWEG9Okek+ILStCPDZfRaHLK63roMYuYT9RO359vbk2ESWlj7LDnKQS+27uW\n6TbQMdNWFT1jC9AMFNKdBm/giOfszoj5WJ8tcJTVnedHKt9ym+YNh9e/Iac2\nVGu75b7Gt+ixtMhm0dNNZaWXepYwnzntAEVFFzW1ArmwNpTLMZZbqdORZgWO\nCJ8j\r\n=8QS5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2a40958de832d77acc18460988b99ee9925b5abf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T17:23:20.806Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.161","@balena/jellyfish-metrics":"^1.0.429"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.125-renovate-internal-patch-2a40958de832d77acc18460988b99ee9925b5abf_1638725168764_0.9931315718023144","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.125":{"name":"@balena/jellyfish-sync","version":"6.1.125","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.125","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7c8d37c691927840404b72a282a7aef3e5956bb3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.125.tgz","fileCount":25,"integrity":"sha512-FCT5Q04gDvoTWuleUdOCdnYYH72rlYtVXfhuNjQ9+E+gduEUKwQXpPHukijaFAuQUR3JFivBDnoGgTmAdzHv4A==","signatures":[{"sig":"MEUCIQCLcWMnhv6r1T/e5M1WKEw/tIYhWdoUdo9GZDQmMdgahAIgdf1trGIk75gFsk4TGNbyOkPOgA72s1XGf5sIkrqgtTU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215862,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrPcwCRA9TVsSAnZWagAAEJ4P/RBzACUshlQP3mP7EfIE\nAhUwsXwygXQ1LzMwjujEhUZIz7d02WnYlSKWKGZOBzOY/9uItSmCYvKk3SKU\nefig5UfIzDb6txz4s2k/HAcZtLhoCQGAywGLutTD3pj4fk5Fw0nW3twP4pqf\nc+H6qJelOmqmf0P4tIC1ST98FV9DyPtSOUAHTnFfpTAxciA07NUhQ6DrQRik\nHybnECdEmM1Luccw2Jjg5fApX9Giwfah516w3AOq67beX9F4LkbZEY35h93d\nbe92Q1nsMtmjXlsi9ZsruK0EWdy0q+SlC7B9KYNrNqKjPE8NYFtpWCqjBe92\neXJOO9NMRoCU0Dv8yIuiVUXGTD6F+CXd0+lLiW0XcrNEwdYYrVZIA7I08xn3\nK706ruTVQJPm8RwweDiGME+46qVExG28ShCB86PMmKpgADA+0o3TbdlFsWJQ\n85vFF4uLm8po3obAw8Euc226SzgjibT6BUQznOtoxo8mMrSUYJQr4GgnxbaR\nBa0uLsc0bgWV67F5GwTDr4XZcjPJOSC0fAkbmdJL2uDiKTuZI9aFLVLBQIK0\npsk+9lSmJJFyjifkqiJaztGQ7Q0FwlqsPog7qOgjs0AkcQFRTeFbbtbRwvCe\neaFM8zNpm51WHh+qMDPXCsvJrC8aON6k/LpTJ31+flb3DWzetriemlMd+WnG\nulcn\r\n=yoGS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b903b03ebbd98e2e5e8c7406032161f626dc91e0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T17:28:28.919Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.161","@balena/jellyfish-metrics":"^1.0.429"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.125_1638725424366_0.8573248457997593","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.126-renovate-internal-patch-1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658":{"name":"@balena/jellyfish-sync","version":"6.1.126-renovate-internal-patch-1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.126-renovate-internal-patch-1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"02b4f611d78304f4bd916b818a9fa622159e990f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.126-renovate-internal-patch-1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658.tgz","fileCount":25,"integrity":"sha512-w0eJTdWtktBx2wRIffZ9c7JxBUOwqUzer2b4ewXgHieMH8/1bo14RJ/uGw2SHaGk4mfqLa3radtHzATiNIF56Q==","signatures":[{"sig":"MEYCIQDPal6saV4zACsGnFc/hO4bi4ciph7Q4hJL53POjvxwBQIhAK175UhN6tk6gZm3vNSbLvWvubkOZfXWiCRlv02axf64","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215999,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrU18CRA9TVsSAnZWagAAtfMP/ArUb8Hr5RQPx+oyypYi\nN2hejEp/T7xADUYoPtIjMVwgZ2AyPbkAJPMSErtUOZDNulmn4/vOQrQhfYBO\niJdPqE+8zn0EXjfRQ0Xj9U30MKcoKO8RfzJ/1GQymCDP1Y0iN8BNwhUUDYb7\nD5NCIuC0IEZB3/dKWz02kliuCvOmhChzzZAa7WO/cbZQd/AJ9Lq5jrCIhMkU\nCL/ZpS93oAG3zpwj8Rb/1dcU7LPAZABIv3fMMDFirYwjzx/UEVfa9k7nNQ4o\nihw63A5Cl4x93dHh7ws1Golcv3PopIm4x+Mb7s7vBAUXHL1zwMEbLsnBXrnu\nGcwNVM/e7ewGRfeSKirMDG7wVA5sarQu9vCPWG5pMBflmzNsja8WSeg6neiD\nkr0+T5wUqvHKxOHRL7XwZ9K6NXvesk+LzDZqrzM6azdH9bgBYh18YkEpBCZS\nfRypwCjcEatyS32dMvwtCBFd05YRD8D89qlKxIxQnCXbsAbL54zui3oTRzIY\nNGuxrlZfcQTeWZinZhqShfAm+fr0DmovCh9lQ6jembmGYZmGAKT5W8xedPWx\naGATAkUMfhSey50pYZ4+RDHw3q/upVhUgAPX0VuyJwVoEUwPdU6d0Z7d8/xh\nPiGF9yh8BMXKWyuROoJduQ0CmblklujEbLpNt9y0m5a3gEJ6YIAL0CMvidDK\n2hss\r\n=OLtG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T23:35:16.456Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.162","@balena/jellyfish-metrics":"^1.0.430"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.126-renovate-internal-patch-1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658_1638747515896_0.30248051669920883","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.126":{"name":"@balena/jellyfish-sync","version":"6.1.126","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.126","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"dfad6f8f30cb5e4f37468cc7989242b1ce99ca68","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.126.tgz","fileCount":25,"integrity":"sha512-uScZLc0Q2M7cqMxFm7Bvit/HL+nfVqt0IZBA4PKYccmL3db/Z/XSo+X1Pa5vg+xC5htcLfLEUJS3VJTboW93hw==","signatures":[{"sig":"MEQCIA1ao634QHiUM3ly6sb8LN8dfAFP3BFWRbVbtJEUUZAlAiAUO+ovENcaDHzTgjSPgOrKahjZurLlaxsda3R17wre7A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":215934,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrU5XCRA9TVsSAnZWagAA2pUP/RnPdMpPCmT2LRin5e2/\ngsDx4qxWSyW0K8BwWwxdo+rNvlJxoDTknEw1Ta6JsIlbrAuiWC4i1nyfPoYM\nR4qPMhdJfbjSC9emji92D7ugdkPkALN+V5vzosORxKxIMfxynyrVT0TGir/p\nSy+7NTQt2/QxreDWRlowzcp7e3HAIt5hIvdQaxUbSyyLNbA9x7FyJyoA2GbQ\nMLGSXHAm2hUIspQMcFJTfiiRkAXcUHNao0OEnzp36cqAZZj0Imad9ELfDB/U\nT5QRkbQ5lUvQ7cm9On5Q2RMeyhDIhxvxc8ubbNnTDKBi76KaebW/0AtXJ0es\nvMcRi6NR+wtvVxsGj05Hqb5GEs+fV+xMpX7W1EyKw0gNZ1rvV67vr6zrGCa8\nXRdXPCqBT4dMJzm3EzwzVsujynB0glxXYrATGu2FoKZj0xDwL7I15J8WLBx5\nUjIG1jdPR7ZibVHDcSUop6jqNyKD9yqUcoSuWlqrDOl0W08jVYOFyNDaueX2\nUuurWyw99S73MGBKYTlPHPX9Kv6rF4fX8F4WRJBUvxwDAGSpJxtn59gpcE7N\nF55ozaRgwgwZPjc1JAQtVrCV43IUALFQZAtBi0zBuIKX0L5EpHxeHmiiz64A\nJcLncqtZBe+Kz4Qexa1bxM50crhwqAh6HZPQc2utx/XfCqvCAcu/HuBXbCW1\nxa5f\r\n=BYzk\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0929eb43186dafc39626f841d3a7566ddaa1aba4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-05T23:40:03.152Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.162","@balena/jellyfish-metrics":"^1.0.430"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.2","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.126_1638747734982_0.09553881002303721","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.127-renovate-typescript-4-x-c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9":{"name":"@balena/jellyfish-sync","version":"6.1.127-renovate-typescript-4-x-c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.127-renovate-typescript-4-x-c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bceb4e7137b53e3f658d1850f5642dfa683bf112","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.127-renovate-typescript-4-x-c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9.tgz","fileCount":25,"integrity":"sha512-1U2PFPoxG6SCgc7xdZigIXl+DsjVRRLaW8wMyMPy+Hg7ya7acE8p6tbkcORJcwyR8iLMVHoYXxKKhz9hAqILJQ==","signatures":[{"sig":"MEUCIQCnCGqUtQUYrZyRF6b4c2zvsnS2ww8xlAr65g23exuYhwIgeWCqx+LkKLLX1fyIia/YL+zWJfQDcgHU+2u+OqkgBGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216088,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhso8OCRA9TVsSAnZWagAAkOwQAJXpQlIxoYjz8znsXenM\np4Kk6lFhOH1lmeIZj5T/aSEksGZqZde+C1dx3wsHk+sFh8Py4cP40TZUHj2y\ntQ0Mh6ntRO9bnKvLZOmXRHLAkMnqzVvdf9wYz+X2jOs08vdf30QH2+RfGggo\nu0eL1dee//LRzQH7lzFMd2kp5zgqC/7hCSTg4ih5KAxdSv9CB58r7K+YTNZI\nVqwSNNSsGQ0kglID6YybPXq5Dpf+5tYEiOXCLLzXebBwxWAgpDfRqwnif0b7\nj/yXoUM+P3RhULYeXUyt08+90ua7gaRKOebrk+H0G34ei3Tsypv7e3AZ0nU+\nY/ApxTIBvhe+n8eFxGj7jADMkJ9aBFJFdnw6A0y1TZauGiPQndzJT5cWbXNx\nAgG8/qT7XcENcEiaLInjsF9ZM7HplgfgoN5hiwg0to6/am01ACbCPX8kmX/B\nyrIkTa3utmhAK3O5RbgGsSi+mkZQvckgpF8QXsTJq31DI2gib7BmUEKCxMwd\npURKgix8FQIO8GFrDa2SAxuRiD0ZZ8mMJ6ql2L4NF6DlRORCL8Pi6T/EYPVS\nAtAGydXjCrE075WY2X46njY155gOEaRaMCupo8ZXQ/EN14lLrMCr09wM/xDz\nj8KBqKEfilzHCOibSD7d03aeCjGhmRUxpV1vcsuY0YGLtC9yDTGtRuKlnsQ5\nXfPv\r\n=aDAs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-09T23:16:38.680Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.162","@balena/jellyfish-metrics":"^1.0.430"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.127-renovate-typescript-4-x-c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9_1639091982215_0.8247284859800994","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.127-renovate-internal-patch-1111df51b3a520c980975fc3583036ec8fc62d3f":{"name":"@balena/jellyfish-sync","version":"6.1.127-renovate-internal-patch-1111df51b3a520c980975fc3583036ec8fc62d3f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.127-renovate-internal-patch-1111df51b3a520c980975fc3583036ec8fc62d3f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1e743ac3fae7705ff7e2212d74875e58414185e0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.127-renovate-internal-patch-1111df51b3a520c980975fc3583036ec8fc62d3f.tgz","fileCount":25,"integrity":"sha512-mC8wEHyW7jf4sQpEwiOjod7YOVF0Nx77YD+32hw5eyNFFYx8acXOfhXfBRcjFC4Hji6bSsGI2WBvEMBuIf4OAQ==","signatures":[{"sig":"MEUCIQCAdyyhxLUB9fN7bprYTn464f4455b5oIZ5Wf0JPZlDVwIgV7mSM3b0TqzBrtJFW7HSSUTprCyxTMfcAG29IrHvR98=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsrf0CRA9TVsSAnZWagAAqxcQAI4xa5K9gkE6OfYAFG51\nRISFu/1jx4yIK5TVbajITN7/2k0l7FbSXfyhXYkVVq70oXv+9iNnizlMrYZy\n6PHTzxlLd75TwlMdqDxMa1X0fNgvbOhXATKTx4XNW14A0ZrpsGxeIkFYVE+G\nEvtkr0uw975yD0I1V6qep/jRhs7nH5JjUHkQFUMEBdt1vCPUFJzY3i1tJ0Yu\nzwXwf/lWZ45nkCnuXyzsDbk9YVHoOU7PnH6G5hzUg9q6h2qSbwIrd4Qy5GAQ\nvGH3HBh6DyrF8OI64QbdtKo9W6jdy3rhpLp3wrVVf/gQUbGqjwkuERofkabD\nvAdME2AMdtlOYJWwJmFgkEfRRvXJUMi2CExXOfE5qMnt3cGMIxhGZgbW3DX/\nUhSai17h2RBOqEwUy0iuSc6398lhecSCnLgPLk6JtFg9WKP7+v9X2s0kZEkV\nc8/nXtYbHfWPaRm+MymLAAzk4D3lk8OGRuwvIeotSl2rzFDRHAHYxSKVFc5x\n9aXxgCCo9o30JHtDk1I+uZ7S1xxMzCwGktqgv7Saw1w+P+S65OGpUHhFfCvB\naor80lS8iV8WCLgLKl1vYhqwBqNn9n6PI9ezaEOiF+mc5Frp0ML+/T0gOIr9\nSexfyQ4yklk5lAnxEMHucyADtXCpZpHNzMDc1OljdQps0SsOa9P5DKKjLI55\nyura\r\n=yaUe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1111df51b3a520c980975fc3583036ec8fc62d3f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-10T02:06:56.341Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.430"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.127-renovate-internal-patch-1111df51b3a520c980975fc3583036ec8fc62d3f_1639102452754_0.3723033044657611","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.127":{"name":"@balena/jellyfish-sync","version":"6.1.127","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.127","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a46597964fef072fdf42318fd57eb75f7ea87e3c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.127.tgz","fileCount":25,"integrity":"sha512-3cLVz6SAUwj5+WS+sZX+9Mu5uLv0wfswnyaH6VI7VPo9bz+YU0ATadwN/8k+fJJ3BfTW1AXOp49If4SwttKRpg==","signatures":[{"sig":"MEQCIEOs5C5MGshVaJiv3LLauNih9XydJf8NkkneThBBgcruAiBYD7LutW5kmoduadk/SKF60OSTOz9SBEdyJzBOecZJxg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216102,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsrmBCRA9TVsSAnZWagAAy08P/R5MFgqmB5VSPlj+T32l\nFjQCemaC0jOzSkVMVuvPtoaMEqkZq9uT2r86c+uD+OJTkRABmTexu/vAv1fQ\nsqH3J4Y9OqoMNezrtKxoQMVXg8Clj6KY5ib9CAZRFpU8u0SIZUHN69JSYoxl\nDMCOU0BByF0hXnOaZgNFgOObVnVU+Uq3SrDzFLVAsE2GzOMRlDN5gDNRrLeu\nY/KDkYg2YtbvazsT/GNJTdUO7Avj8t2chCeMLDoJPYhP71ca+FyacfroH4Iw\nHUFEJ3dj8nMoA81ZWRLy2VAVU7fNX8d5AEHkETrEuFCMkkHsCzCyflgkM8oi\nFGf9reH3hdiPVHOKzE2KHX461TkEejyvIMHfJCOJvtvyD9V4yFh4fbX2gBwE\nwywl17i0gAIgQOCBaAs5Y6LWBffnreSu/DJ1hFmpxSuZUD5g1MZqcS7aiaMN\nWAo5/Z+/2v1kTqa1G+0CQ6jsg+AsBucRzBNmy+eoM6VXuEXBBUECbflgwQ5X\ndu4HjHjw5ipkH5NdJA03+7f3kAailrtG3a6Io0pHpu5JHSlM8eWRKn7JdBUA\nNowf2fkZ0B0dTHNO8X49/pvsx6MNdBCZVOZbui4ilaQKsLE4HaxjemWveINx\n2kIwEZUUUPxpEOI6+RDYyiI8wctbCyWjsio8qp8vtt3BnhJ1gc6GQY3euwf8\nOwxD\r\n=4uaJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a3c05f67c824cba5e65e349a3c4737a3f14464f6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-10T02:16:38.102Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.430"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.127_1639102849718_0.627361518991038","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.128-renovate-internal-patch-6263d4dc133640261c2add8cd7ebeeab2504037d":{"name":"@balena/jellyfish-sync","version":"6.1.128-renovate-internal-patch-6263d4dc133640261c2add8cd7ebeeab2504037d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.128-renovate-internal-patch-6263d4dc133640261c2add8cd7ebeeab2504037d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5ca2bf78aa3c78d6c8eea9959a25acde3e217273","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.128-renovate-internal-patch-6263d4dc133640261c2add8cd7ebeeab2504037d.tgz","fileCount":25,"integrity":"sha512-cumvz5bh3JW+v+IFhxMXMFNwtNcL2oVkn5Y3GPc3O1x7zC1Dk2ePR2bctRGTFbo2oHeVh4o61TdjGNEKYW3xyg==","signatures":[{"sig":"MEUCIGJDC0kMGjhHqLm0akbeFtySh8WgNQwHt06gYX/guq4PAiEA4ZkMdiSSGhT0CcTtvkYBOrCFNXJQKNdFmZMcsteExiw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216273,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsta6CRA9TVsSAnZWagAASyEP+QE73YDF9jz4eU1w1mpn\nrk7I2Y/lwILrngrUt+QuvAxKtfnbqrk+I1ymTDOMatNOhQhxKA2qNRELLDbe\nW/siWIkZhpL6n/Q9vbI8Lusqbc+zslwPlfxn2iOBo0/XqPuEOQMMXJjvp1OU\nyYJGW9++6J9YemHzTdstv/7EhN1EqU7d0t084vvn4HprkcnvM1n7ZmPr/+sZ\nY+iiyf7kZK9OJXihW/YBLy2l6usfW86mvnJw+4q6BI12GolGXNGjhDxr0DaQ\nMbI+jh+0/uJrUKbo3WciI7kbAouQH09Ie4o1F0+peM+1CVH00vuKLN62V14U\n6PpCzi3eCu5MG72f3FYPLrZorbRMlvApxZkFr47CGwgtHCFyCB5WyEWV6jNF\nTi1NlmvxgWLixJBtEI/4yEf3hJKvtTNn+qCxJvhJwzN6yL8ehum/1wenbPf3\nnCo0rGd4vv6A9t0KaDlUw1CFbIKrInA2vAgbqgrUTUEHzlrVXCnNOaqZTKN5\n+4GIo1R2DQyoJWkP1H8n3uTZt4+bbI7U3ea8++mK6iKhpLyqUIu/gLuWuPVh\ngxTIwOdbOCKdpeM3TVPToBpWnvza+GkSHlchI8lMf35FLaq/yquR+VtgEE9C\nza9zmZVYiAecfvoCm7MardSD2kdH22uuNjaqOcfqPDx2g5Ggxaco43uP87su\n6weg\r\n=3xtt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6263d4dc133640261c2add8cd7ebeeab2504037d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-10T04:22:20.214Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.432"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.128-renovate-internal-patch-6263d4dc133640261c2add8cd7ebeeab2504037d_1639110330677_0.644619595957358","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.128":{"name":"@balena/jellyfish-sync","version":"6.1.128","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.128","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"367f3578c6fe08ab0f0eab8f676babd27d638c03","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.128.tgz","fileCount":25,"integrity":"sha512-kNMlRm8xQev3WHODLk/5D6No3je2N8iNYCyuxi8bKsjrHNcydWorKseeHQQbXSH0hoc9YX6rD5hDkOJMFrD4mg==","signatures":[{"sig":"MEUCIEL2EG3ZUq0zzXMojLDV0QEjj7T8qxn8nnDaNRl4yPGmAiEAluAt6uXw5fJZU+w2UlKR246g08ku9teBMNh//Kxqdv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216208,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhstemCRA9TVsSAnZWagAAL4oP/1WzE2Kt49Tk+PR92KUQ\nRavDw94nj3n8oaUUH4X6YD99bdWvElrmz6g3yPj+H7h7Z0U26g2TM3vIuFWJ\n6TsrmklTgNQBHFhPZpRP1inFAxcOtjC035i/artG+y/R9Ge8m4Mbm2u4ihD5\nihAKbgbe9CYxkQsOoRe0dnwjzfCf/TrFBi5H0u5xUTVEUs5JEHRhyIe3q8op\n0uoUIfZMJM3ITniZLbhZNPyPiA5HvKYK8ez09WKge9+vMQJuXr91LqW3P64U\nPzoA9+SMu7bdpe5x1uXSqTVWzTxQOtVyCrSZExEBaI5xxSj0ObU0xP6ptL3X\nooRCvzqO8G/gEuMrwiMcb3b3tUlBVwpuBjNZCvNqFTcXoaUv24myvV/Np+JZ\nIj/+SEW7fnGGZhwivVayYR0vQqx1ILY7zYvCDckFFtN5MZ1od/e9FlSkqOko\njoTcvBhV5Nl0230bnnOEMrXPnGyA0tbWIi8o8w5Lif4KWvECmuhMJmwvRDRI\nBFHepi1Sz1JgKGvp64mozMljZwi6lHPYIBvmNU0/Z6QIzudvZXrPft9SbnaQ\njOgFEfIs6xH138MsQqGfrsUlZwrqiEcME+7im/YucxkEaqplis2Ipbpvg0sB\nRqGyQrsVP+9G8mX+7/xYbZw5SEq8draKfL+MbZg04jQ/wRSGy/Ibe0HU/fOR\nRNnu\r\n=zxeT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0d56ee8f464e2fb2b051cc4f87024008e17b8aba","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-10T04:27:06.328Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.432"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.3","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.0","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.128_1639110566426_0.5325973919567599","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.129-renovate-external-non-major-5437fe5e4b6d4ba384888a29a771865140d0bb9c":{"name":"@balena/jellyfish-sync","version":"6.1.129-renovate-external-non-major-5437fe5e4b6d4ba384888a29a771865140d0bb9c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.129-renovate-external-non-major-5437fe5e4b6d4ba384888a29a771865140d0bb9c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3833a2f46e622738c0f1141987318a9219ce31b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.129-renovate-external-non-major-5437fe5e4b6d4ba384888a29a771865140d0bb9c.tgz","fileCount":25,"integrity":"sha512-BJBOlrGAhGUNv2YpTgIkNlxiE4bt7tTM7lETJt2xYg/XWWLn9oQ74I7QFq7s6j32t2CUZBmhV0uJpg073hMlxA==","signatures":[{"sig":"MEUCIQDdU28OU7ZZCvqLGKys9LHZaq1XNWGpvO1r1wWtijyUvgIgE2sUM4/SmAN7rTGrKpHwCG674fQkgTqLc7exAtV35hQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhs/pYCRA9TVsSAnZWagAAO/wP/jsHsB25CKG6jSlwPc85\nNltszvF+QgB+0qCju6XO3Lm+1p5B5msfbec0nW8zJvf0HbHV+yy7ArvWH1mW\nayYjIeNJAyNnxF4HwL5ctJPmKLZlXOWrwdIAHlA8XNNqp18V1nzmWNSgwSkM\nvry9SmSeTwNZdrNwZk+MjIC2hRMgzbcakUNHni7oRsmN51uMP9cQwUCnAVpS\n47Bq66Tpoj7d17H0xjWwgR6URGANIXSdxSqwXFCwAPg331oOEB65lvR/Fyw3\n4e4iWtzM1dYr3SUA9YokuYoMEGzDlaAE/+JP9CbHb3p9TrpfTNmmAPR3CVqK\nhcrTyzS7MmxVEFEZOw3B/wG8iRJcPy0bjV4+0ZeUzSssCMsK1lhM5Eg/k/Yi\n9iJD+M6mf/jqOGcVmWHDcFZPxp+gHYLvwHCZ7rvjO4kkY9LdX89miKPWxPeH\njyxOpwDappW6EXCwoaVSInX2HNgBEtp8tncRT1bcn183kz0hhKI/cKM+Q7dh\nLvjzyvWcaKF2PFOLAQkwJFjlooiArdNiIXFWG18pyN/BcF7Tl8dhQLXnthit\nE+JXW8d868fcFbkq0Ca7w5JWMJ+e69Z4ntVpYv92dGYDqJZWq5n/lY3iK2EN\nPAPQiOEXGjma1SpDuPCzYv95fYZ1zhTulmD8V+vwT+fGSvDpxlpJAaoXg4Py\nGVhP\r\n=6gG/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5437fe5e4b6d4ba384888a29a771865140d0bb9c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-11T01:05:23.539Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.432"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.129-renovate-external-non-major-5437fe5e4b6d4ba384888a29a771865140d0bb9c_1639184983987_0.2875543141337942","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.129":{"name":"@balena/jellyfish-sync","version":"6.1.129","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.129","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a58f9b36dc448f7ff7c144cc7313f929415a5ec","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.129.tgz","fileCount":25,"integrity":"sha512-SY0r+EY9oKvCsjWCVlhHfldQ8zWJ89l0Am3oJfGH3Pr2yVAIMONZ9yHU6O544qQw0IzJl6BVR1lDfzeIdyXvPA==","signatures":[{"sig":"MEUCIQDGJ5G5JsQBwNl2/RFIGFa6eL6PWFFuBcfYTZ36kQGGNwIgdb3GrdI4AZNhP5pC8RGHnWQvRvZ04YU+ut8K67gLI+Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216284,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhs/s0CRA9TVsSAnZWagAA3z0P/3lty+t/VclrEn59OQWU\nZBAHSef1aI/Rh9ZBQt4DYWff31z+QCptbvHloGQshzL8iW3MO9Zzv/UKel/6\nT7+1TP7yr5oR3EzLN9KRBPpqQ87g3q6JgbfFHU2x/zaNOTi10CbaPiKlIFUT\nOCoG/ia2zwAm4VCREcww2TQ4c+lbIAAnKHf6ZzsYmXkCgPvrB5NVB2Hp9SQi\nS3vlVbF+w+6T+CQhrMgolfQcuC+HJBXLUpamqUssd2DyWm2F7yYfsIFGMF+Q\niYlTYneUMB3tXkLm1HjYmR1I+ZHryO8gB4PLkEqmXdvbhOCOrBUQyIfbEc0k\nHeLoMc9ztUZYu6acPYQ1XCbVNrEiFficUUNU6pF40mP0Ht2ghENPTfcTjAHq\n2zXrgu+zSqGLIykYegiubfdKqGS4yQrGOX4MmFXZK+yq6wEtYRomqkOjYzdx\nrmaFqtJIQhS5X7XhOof4ECrFSFbGSmUtiw6Uf2G/rsTmg/zUq32KpCw4E/EI\nrGqdP2pnygxDTd5u+TPuiwjXfmP7E1ZTyjfXt0t7B+xYFJ6lB8OoQrBdS/JD\nEjMfXuhTE9kJsN+5R52TAEb7tFrMDex+OL3Wd+yI6mo0mQUZo+X7esDeNM8w\n/cVwgR/7vO/PJ31JZWkZwwRMZl2HiYXUynYV7puyacdTr/E/dvLP34CWTgQ1\nXDAQ\r\n=RGVd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5075ad50ac14d6f7847ec68d5fbe448d665e61ef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-11T01:10:40.135Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.101","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.432"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.129_1639185204035_0.9504721134156431","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.130-renovate-internal-patch-188d0c7622d704e0dd40a4ef579ac6db05507b6f":{"name":"@balena/jellyfish-sync","version":"6.1.130-renovate-internal-patch-188d0c7622d704e0dd40a4ef579ac6db05507b6f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.130-renovate-internal-patch-188d0c7622d704e0dd40a4ef579ac6db05507b6f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"75be680fcc5d7c65eb6550d7b62b61349a782b2b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.130-renovate-internal-patch-188d0c7622d704e0dd40a4ef579ac6db05507b6f.tgz","fileCount":25,"integrity":"sha512-vG0hxI9qWIWO6nIC01SHJtv6ECQUMcZz3+jvUTLixSqcNB7RabXrHhRV4DKMa3ay70iGuo9kdpQS/uM1bGekFw==","signatures":[{"sig":"MEUCIFcUKZOa5hY/AZsbaCiszaKVJ3NQtpzEhHTWmiYZvnxRAiEAjZ5+ASHVrFECUxojbdRHrX+/tZAw55hvQO7GnhRwodw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216454,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhs/vtCRA9TVsSAnZWagAAtZkP/2UWU51CX4P+cANBlkPx\n3PXCfavlwX/pjyWB0C0ECn/tXUvNXamMKUILWiBI/kgBSqyd4qeIcBfoNwo3\n/qTLo9Aiyab6AHyooB83/L6b76WOgYZOE+NTdDfXANLe2nqw/77F38Byjjwz\njxhnfZBk4Pv9lyJBiVOZ3Pznsg8k9APDyZhuJM9O0DqT+KYjWGPi3mhcT8OB\n4IURx+3BNFiK/iBB3kfPj/LIZC+0LPZPV3gTxXNyT3plJmua5hJ7PnCzoYPZ\nDaACLwSo78lWAs6hkA5QROFA3SCrckHfhJqhVO9HrO5m6fb1GalaMURY9XVl\n5eL/TrkQVv7XoX/V2VdM0EJ8ctWG6dKwCozK/lpwUKPW910pi9uXeCcUbczP\nF3/X92sUfl3xSsXFLv+T8cV1NYOF6H6hIq96zuzFlJWfg+r04F7oRdO87chl\nDUo/EAFY2PiMO3MwhYHGpFgLPbyPAddNkn6uBjOizCyAV2EgdUj10tuNWrUd\nwR6k+u83zIMIWysAKm3Oy7tTkmBKlLs54DY4qcT5dy35JIFP6M4Wqqxbl8hv\n1cH4xz7uNbPcyJtmI5Wl0yP6oTvVYpsG1pgRz4H8HuTnaSfDPmviFHGmSG7R\n6Hj2Z7LNEEyo8P0U9RoTXmT/s1VTcgKWb57NPI4kD4kbGr3Ghu7aJyx8lFpQ\nfUFf\r\n=6S/9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"188d0c7622d704e0dd40a4ef579ac6db05507b6f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-11T01:13:17.091Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.102","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.432"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.130-renovate-internal-patch-188d0c7622d704e0dd40a4ef579ac6db05507b6f_1639185389449_0.048010830295682316","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.130":{"name":"@balena/jellyfish-sync","version":"6.1.130","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.130","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"162e5963ff0299797599739d0529c03909e99442","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.130.tgz","fileCount":25,"integrity":"sha512-qbHfnbgBXVo0b+vjnt2vunS20IxggQSGrq5m5QMVqnyHHR31W6FQvCV8NwFrgoD3q3Kf8NdFpayoA2zd2dn/fw==","signatures":[{"sig":"MEUCIFhwZONtLH3P5tJXnLGxAe6A0MAOuH6PSakqxw/dt1KlAiEA15ymYIKe9au067hSZqN1RbuLyqozdcmIKH3hTy2wW+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtCGWCRA9TVsSAnZWagAAUlcP/RPtYNVie3LdTw4KqIOU\n048ZXPJrfVEM3Gw2ND+RS0lBTaZRVfZmrgsP8DcG5NFJf0aEMOHOJkowImIq\ncmpFDwTAi6bbSZ5/J7CoemQWdEbf1k2DhnsFRVhxe++eOK+XDexCgpSzmtjE\nPXQrG7UMotAXzpfEujliP0aGTQ2Xsye1t9UCPpr+02rWR4/y7J2fFi3dIcIB\nxjaeK7nXQNO1O4m/d4lSEoLq0bfwH7MP3EqR6cUzzxFXcLguigc5HcsGwZXy\nSm6q78th8e4n8D2RUXxoDeGMEI80b4ClO2CqgVbxiwb8SNChEi++JxRMV2vD\ne4TZfKR/CjyMaO07l0rF4fZsvtO2m5VT4NcVmjnyYqQJNR1UGcso2MrO5g+2\n/IffcQouBnMFyGZxlRQDoF+R5zgmk0vLLwjOqpMQQOSRwWpf+JyvV26Xpbnd\n1/kMg70HmvUX2h35ljQucdVtbX90xklw8LyO7PEH2SshTsuDImw02zwOGRmS\nZ6rw/EEJZ1Va/5//SbF0urG1r9KR9FOyeZKB/N+rOGqP0EzuA3xvKRZk/nME\nxnaD5qYay4WsNy9oSBVEndvCNlwBSuOV4ExUbIh8MCzV0D7VW3tUDl4K+wcL\n+zhrD1AqAEp++avVFRk0oBkZ43dIeSlrQlk641DAB7a5NaSxEuIfHpBJzms+\nS8ag\r\n=D2nT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d3c387656c8183ccce84ebbff60ed5156519e568","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-11T03:55:10.583Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.102","@balena/jellyfish-logger":"3.0.163","@balena/jellyfish-metrics":"^1.0.432"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.38","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.130_1639195030196_0.279290390688657","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.131-renovate-internal-patch-606e3c82e1afab25cb49e89ca06ba65c6c88d608":{"name":"@balena/jellyfish-sync","version":"6.1.131-renovate-internal-patch-606e3c82e1afab25cb49e89ca06ba65c6c88d608","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.131-renovate-internal-patch-606e3c82e1afab25cb49e89ca06ba65c6c88d608","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9227afb0dd7b45161fb2bdff322be29ce32fa41c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.131-renovate-internal-patch-606e3c82e1afab25cb49e89ca06ba65c6c88d608.tgz","fileCount":25,"integrity":"sha512-C0R9CNcTXnCy5FtY7K9/97LmHgjlKMw5qXaz+nflj2A3G9jYtZa/Chknkt0NyMD+I060xVDsWZTXQWW6cKDb9w==","signatures":[{"sig":"MEYCIQDkE4XP7jh/kTzRSvVB4Hkq7L8Yl92n9db68j9dU0pOBQIhAPtMNa60VR5kxEgNjRYEFEIKr2hJx6hUxNbYiU6z6ruL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216526,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtHGFCRA9TVsSAnZWagAAv4MP/AyLmSh6TEebbLax7kB4\nUXZNiBU09KkRTzzPq53eJ7qd1HYwvwj8WVZ1blxWZhaCOI/mFMKB4UMcVhjg\n7zMN9ZOZfegmodzXr6lPhWNLUaprpBHZCp8dxn+dfoQm6xpiLDlrAi/aPSqr\nQEleEZX8nvLDllsiY+GFkD9hj3+spMbOT4W4iID/+hIPVALGcReQelv7Irlg\nR4Fi4tGsElNj6mJkBQ7aTetxKY+sDA8pSHqyvKgcq3jWMj7SQ4vT1EJYZqO9\nIILsOmfvqyNQDFWMWQeFjB5LNgLNIoODQ4SJU+tQ84x6YzU9XigAFSlubM44\nGcDf/R45fh71/BlxNe4rj6lr5pX57sGh4tPEkLDNIeK5Cp2fcMIVy8RgKJkm\n+k0FAkjTKTzAVEDGSgfXMZoDDGIR2oaySSC6jZ9ENtKmw4mUoNMDjtaNInKa\nV/6A87CjLjmHWAkXlkAslLOKylaelqJikvYaq/2NPKWLiQ162bI9WrXEob8L\nsYpox4okLOpKoJ/PaJ3jvC8SCTWxaN8dmkTc3VZtH1fiY5UK0A4aWgWrRQh7\nAVNrZMKv7lAZ+PHzItsk8L7onLrNQLhs2csYLrYv3YieRhG5hJTLyJQ5zewF\n2jCKyXPGAwDGuFMNIbDIu+xYIoCW50V5ylS6jA38sn6ZIwT/CjJfiohsFZwH\nCT5o\r\n=/xHs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"606e3c82e1afab25cb49e89ca06ba65c6c88d608","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-11T09:34:56.360Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.102","@balena/jellyfish-logger":"3.0.165","@balena/jellyfish-metrics":"^1.0.435"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.39","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.131-renovate-internal-patch-606e3c82e1afab25cb49e89ca06ba65c6c88d608_1639215493735_0.7976367502579782","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.131":{"name":"@balena/jellyfish-sync","version":"6.1.131","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.131","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"fe542a7078b72e9a9716a76cd792b1fbf512a9b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.131.tgz","fileCount":25,"integrity":"sha512-Pn9pEhhnOmbnpRns4xFg6t0cfrBMxC3La+haHs9D7qsWx2b688mf/MuTJJI9GzVlDIJNtvvgtnbiN0nPx0/HWQ==","signatures":[{"sig":"MEUCIHdCdJwy355grF7V0Clqbr1t6fOzBiE3+qb6/bxVS8xuAiEAofnIqT6KkrgMTsRi3NhoQFIa+NOF0ON3PUxsOBukDTk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216461,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhtHJ6CRA9TVsSAnZWagAAfdYP/1JX8O1V+vlvInudG3XN\nmh9wComMGFcIGKW7o2ovCOO+WWUANfJztibEDGURee+S7WEPeiuUIbNDwZIK\nlJwVSnuORaf9O0QRMMDiO44Q4tUJDEqHPBuI83hAHafh8ohsX+YMxOMhcD5r\nnEVyhxNhvEocxkYzChsnyJxkCq09uLoM1L/h20CAzOjjxE8wUiJr4GrGbjSl\n7Gblb5j1sLtakiHZIklBOVVAFFs1kYB0r3VB/sUkP4ZaCxoISk8W0bkDJ66m\nlPUJki3gpf1S3vIOKp1HXkA9J5b1xCtiG9jF+yRWrfVq3v8v/j25gYWuOQNO\nkkquq6Moi1C3zzDKp22HwtbZ1XCMA1t36lDzvcNwuKCrwQ4Q0tfqRm3jbIys\n65HbNpMfeFv2M680HJZGQvlFWKY3wAgifR+ZF9SjC1TCaqLmSyzOCcSLRL5C\nL3BGuAC76oI/M/OI6EPmb4Kv9RPDkwL3UxWHg+vD46Lp8Uqfvv+Kcz7Jfg5d\n+EQHyMN5bZJ3ElYqVsSopienMCr4TgpaL+sCPkYOwZDmPT8fDzFpckBmHsRE\nMFGPXmRYBvPPwX/jgr7LPhJwY1+KR/27vduUsgQZN8sqrycD2lcc9XspUv9b\n2ZrlNDnaLYla1Yw+ezlFIuSge6BUmbC4oFmQ5RI5f+pBviLjL7cLxNe4x9Jf\n/OmF\r\n=lqgs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f9531917a9f6a4d8ce0748149e4eb5803387d159","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint && depcheck --ignore-bin-package --ignores=@types/jest,typedoc","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-11T09:39:45.018Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.102","@balena/jellyfish-logger":"3.0.165","@balena/jellyfish-metrics":"^1.0.435"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","depcheck":"^1.4.2","typescript":"^4.5.3","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.39","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.131_1639215738218_0.5074135862150984","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.132-joshbwlng-drop-depcheck-567473ea32c88679fc9727b22fbde0e452ad02a9":{"name":"@balena/jellyfish-sync","version":"6.1.132-joshbwlng-drop-depcheck-567473ea32c88679fc9727b22fbde0e452ad02a9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.132-joshbwlng-drop-depcheck-567473ea32c88679fc9727b22fbde0e452ad02a9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"10bde877a1b3c915d124c64782149510d673310c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.132-joshbwlng-drop-depcheck-567473ea32c88679fc9727b22fbde0e452ad02a9.tgz","fileCount":25,"integrity":"sha512-qmut9MP1d5u4oFgNpvuVOis9foqlFe5XOckn+A/P2wsdObJv/eTNEoQPeDqQ/AX4KwYPaOEtHturn8zeJP3IXQ==","signatures":[{"sig":"MEUCIAZRkz3yVlhKKc/DREdMU/SfXcbXJgG3Vaxgj/JHpD3iAiEA+l6fMU0ls04RZWrTqJDYyav3yAEypKBKiMmqlGZb90I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216511,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht/d7CRA9TVsSAnZWagAAX+EP/2QbUD0VEm/fXi4bOiSl\nM5zFM8Kf4b5IvPSD5ZR9mIB1uNdNIAxQqTwZCR66lUWx0NjZawAbmbyLHG8M\nVNR9UNnIt8OgxqrGimPK0DcsHGEBDJ70WvnK3h9Ki9C3vcDKbeGEeDX8L3Jb\n2w3s/SQED0n9n01sYClXczXpk27MdO1Cmv+bKnn4f+aZygGZKGSCptWOGhiZ\n4RVxX2/FKY62m+v2KojZPp3YFe3mE3UpfIz9SGEMjMZyR+YI5dMWcEgf9y8I\nioDfw9oNNb/dBnFNNbb3Nc3dWI934grE6lG+yxTAliHnEELEudiGjhSVxCcd\n6QwGJb3cOhKxwFO7snitJnZkvMHTBSgrbaVYTVx40kZYouCitaUjJ28SxLcl\n9zhHb83/0gWUBpa4NJuzdFrJLdADlYvbtpIFeISWpptVkLafjq+TdpF+m6RM\nMS7E5y+9V4ecyczmQFgdOUkyyPKwKJWAUW8WyiXGXVjsGtsyUcBltFldvhZO\n1557Akdq2O5KYjVyCwvLqZ+gpsRk+SQCurnhVekvQd2KCuHkJu4cGzBskFVZ\nQeASIEM1Qh1EtGx9PT7dO1TP0xa9K53lA2VSsQyLR+Q8GyT0nIWKJrFnKG16\nXWigXY7ZDy77sYP52ZRx2a/A47pqMlazEFEABMGp0qOsjvttSDFz94AclK21\nLhDI\r\n=E+ob\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"567473ea32c88679fc9727b22fbde0e452ad02a9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-14T01:44:15.229Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.102","@balena/jellyfish-logger":"3.0.165","@balena/jellyfish-metrics":"^1.0.435"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.39","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.132-joshbwlng-drop-depcheck-567473ea32c88679fc9727b22fbde0e452ad02a9_1639446395184_0.6413826493031092","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.132":{"name":"@balena/jellyfish-sync","version":"6.1.132","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.132","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e42087848daf434c87b242987b6dd53aec084119","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.132.tgz","fileCount":25,"integrity":"sha512-7ZZ1VJKb+ZBY30LH2bbPMiFk1Mj8KnnpvTcEL2fgeSlnkZzXEKAhc9W3sWp/KZ7yIHFI6PtiumyHWOjNx4vNZg==","signatures":[{"sig":"MEYCIQDMrxPBbeQ6Ae4yvjp/B0wroqqjfsIw6K1BQwvryPOGkQIhAPzj0w6dCBOOPowCW5LbcyihlEnaKWTx0dp8vjGvoYvr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht/g0CRA9TVsSAnZWagAAWQkP/19j2dSDHEzd5ZmIgkUS\nwo2eiQkYfDejCu8btRXl2SD3OMOM77y4YgbDDnLFmQId8uba4gbM0KCqxnig\n25JRJ9cq3Tzd6L3dPOCLVKHvs7/w24r1UymRF6rV4QmFXSmDcrDctgilPPB2\nHFsKB6VVCtkZxlHIaEN96N8MdyJP8RTAgS5e+gP7b6M5JPdrrsvw2xTmeq7E\nRxygwUM2RSQqUr0PDOLOdGHCwP+3umXsdw5ZR1SYz2IVGI0/fzJNgWyzILvT\nLdMQuSyaI7nXMZAKIupuDDRR3Accys+sK3uQpXb5rCPj2haLzz5ZReP602AJ\neuV/YE7Mafri5HLcnj3zuGylU3NimvtCheHdqPd7uLkF/OCcVFCG/sPRSpse\nsYt5wuO0tPqsh+tYM56iSGNKg36tmTfZa2D9lTsSWGTJcSw3rETwE5C0VoZ+\nF6m4FuZjpAUtECdVTp64C6KdBoUY+u/vmIhR8R/1XO1hfYiikid6nTzuYWi5\numdpKWZ3zmzAUah6qogElUWtZ+Nb+gKpN6vO3Fdxh5mFl4132BFisMCFohFm\n1pr2YVhv3ASV+uc/Um7AFMjg1uM03wZVr+BTuYYzNEjP2ATQEpb69MyO8n4X\nHaWnWrPsD/ZGF3W32Ug9sBhnXtGEBK66OzR13+Lh9LechVJqnpYkAJo+mX/J\nzwGl\r\n=6kyS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3ab69023a6f24621a9415ac4f7cc62ce7d1a3efd","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-14T01:47:48.638Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.102","@balena/jellyfish-logger":"3.0.165","@balena/jellyfish-metrics":"^1.0.435"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.39","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.132_1639446580258_0.43619143321727094","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.133-renovate-internal-patch-511253a3015c9f8d665ca2580904b4adcf588b9e":{"name":"@balena/jellyfish-sync","version":"6.1.133-renovate-internal-patch-511253a3015c9f8d665ca2580904b4adcf588b9e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.133-renovate-internal-patch-511253a3015c9f8d665ca2580904b4adcf588b9e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ec5069bd2e20d42d11fcfd3d9eec1da6829e330d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.133-renovate-internal-patch-511253a3015c9f8d665ca2580904b4adcf588b9e.tgz","fileCount":25,"integrity":"sha512-+CThRGVnz1HUNQe37EBbqAQcCI2BBXubF1/7IKLLEOguoCer5wnezWAThLKWo2/OR+4i0pTmy3Z3STqP4Zq6GQ==","signatures":[{"sig":"MEYCIQCrmNAhjt3L47y3EncwonV13sNA07wHJGPF+tFtkWZkmwIhAOaSX9aAeYT8O9Ul/M8PXjLNzzg5prw+N4zdvLhbZ8cC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuHgRCRA9TVsSAnZWagAAgpsP/RSXnvcsdPkGhs5hc3mp\nnvAWLJ2bkoFOE0UPVS0DpxFTDsARY+X/rFYEi5k2qz4EzLCETjHsvHzEFA7s\ns+Rz9mmkS5I2iLji22iG0lx8oXo56icHJo2CCd6GGkfC4pUbhbuPOhHxTUmY\nwqNGEds9d9F4JeSxTWGWfivXaMjD402GqbEolEAZTP/+zmaquWkoevYl1giW\ncdcu/0VMB6NgHdbuoFRvMRDpmKvIBTfQA/GjkOWEQ3xsmGCLmRCGGy4dDp0f\nNiDk8wL4GKPfiGkbZ08i84Df+NtKizgXWCA10ZjgyxKas3Y3mEPQVMObLWA0\nTRo/bvaAqSGaVW+JfOKdpeEvophkJtA9hLNrQ+hPv0uH2vIrp833P5sW0x/E\n5ux/ZPL/G5WlI7yn50iHmyxBXJGkftfg9ICSQCWQC8q9HGIBLULsq01hbB2S\nx0GD3kMTK4Ym9tPRBWFwcT39kWdgzFRF0VYjlw/Cg/da1laLYpntxSGnOpKJ\nyJql1qE5xRFLvxXoQ2U6cGxHzO71spIuwpHNDdHjBs9lrGqEJledTLabvSG9\nFb+hrSEoSXgLMQMX6NmupbJxNs5KCmGdUUUx5pufa/7ZE+LYLhWUbRUU3REc\nh9nWpozY6Jypr6HmAVf0eKTa07AjfWLijqj2RsWq8I0lrEve2pIhH8K2P7y4\nlpRf\r\n=8Lss\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"511253a3015c9f8d665ca2580904b4adcf588b9e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-14T10:52:15.694Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.103","@balena/jellyfish-logger":"3.0.167","@balena/jellyfish-metrics":"^1.0.438"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.133-renovate-internal-patch-511253a3015c9f8d665ca2580904b4adcf588b9e_1639479313390_0.13667363137666744","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.133":{"name":"@balena/jellyfish-sync","version":"6.1.133","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.133","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5bbe9693a56184fd5a021c61bab624c347706f8f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.133.tgz","fileCount":25,"integrity":"sha512-sXIfCfMaA1txfmKx/bwc+7ODPDtX8xc4o5IcAroRwNPf87+e09zh8X3aujfr4MMyp5tzTDuhkwvp6uPrac2Abg==","signatures":[{"sig":"MEUCIBxnVhXakw2vwRcUn/+5CFvGV6l8H1FjZ5fVxKW5ycLmAiEAupcntWVORg9rIvmsm6hlH9mvbx0e9d8QIvkqij5Tp58=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuHlzCRA9TVsSAnZWagAA/dQP/3XZCswzPmvkULp/bDLv\nw0BSFVpVvU8fehq9bT4uHyjN+NlIjs+3lkTAIjrkYToi6bVeChcdM8iUEP7C\noGcumntrdJ+vYmxeQWSXVcN8agwNKFjqJmULuDkdO3rYw5+wF1sSbTFdH99G\nPoMA7AjC8EQq2dbZXLO1ubQpRCpbdahmNWM/Z6zKYgpovB5NmFH26f1cICon\ncjUa6lVzc5LDZ441HgdFGnH1f//epDgwNwSPkG49SQUhlLyfMc0ua6Z5YbKq\n8lvjgrq83Mj4KNvvdTL69rmQ/YFNkZdgKXEJk5JyYwQaK9Wv2KcbksjEBcbx\n6OXjnxt0/DRJA5VeViDFbYrNlpT5jRyp9L46mZxDSUhgFBkVc7GnhOHarjUO\nUiB3EcBDUeWFlvjE7m49KDLENa04d1MVO9Ib5zCb3dfgoRue1WNWvVuaFou3\nEGP+WVZHP7/+DKrpFXAYV7SToQ+dLB2fKjw3n7Q/D4xPk+K4OPdLRqzp/6yP\n04IDJcd1TQ26OE8y21PZaK1EBpsOna9WdaKQrmq94Op3aPtafEJQEgDckq3K\n0I/ciJkLUTCm82MnAPs1eE3GkGqXssa4Rba7zHxjRX8NSBS857nR12FvPzvg\nh497HfcZP4LR4CcNDEUlgjiyZGtMwFVgcTOj+NzPUfXwqg8e5bor/XN4Pk3j\nM15X\r\n=fpB0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"4b4da8edf80f350ae1de6f4adef978b7d1940936","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-14T10:58:09.172Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.103","@balena/jellyfish-logger":"3.0.167","@balena/jellyfish-metrics":"^1.0.438"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.133_1639479667677_0.4590307393594242","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.134-renovate-balena-jellyfish-logger-3-x-1de6c993b6c48910a933557d4e2033ddfbb2acc5":{"name":"@balena/jellyfish-sync","version":"6.1.134-renovate-balena-jellyfish-logger-3-x-1de6c993b6c48910a933557d4e2033ddfbb2acc5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.134-renovate-balena-jellyfish-logger-3-x-1de6c993b6c48910a933557d4e2033ddfbb2acc5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f69f9d7925106ba2d34c080e4bd043413fa6e8e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.134-renovate-balena-jellyfish-logger-3-x-1de6c993b6c48910a933557d4e2033ddfbb2acc5.tgz","fileCount":25,"integrity":"sha512-QW12gF+tuCKEIRbyxX53B4xEVRwp4jWYqNx8CcjjVxvdA0GCokq31wJqNMYZ3MsERadYufqFwUrKqPjCKJMpNg==","signatures":[{"sig":"MEQCIEjBEdqQ+toIP7eit0uWgC2gqEIQ1DeINLh4gfh5VhOkAiAOJ69wPwErIfHPtd8X+UCOORCbXQ77ggHc5vyc07ErvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216697,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu5bwCRA9TVsSAnZWagAARjkP/2K14zbjWkntfDG+OPVr\nwgY9EJ/YYHUnPlte+ggvQQp3X0WDi94mdRMv05a9W5Zxhj1A5dcLCm7smMiC\nUBG4mKKTLJXUDrS+cDBo+LVyu5Hvz8m31AVopZqEQ2aZTETV7BtDnFvMDl38\nDd4GAdpdWtk2I/x4LGLoYqKurNgTmZPykn7vVrjY98dzzSp/6UzgPcsBPG1w\ncge6iC2KNfuiXYIbrceQwlepPi+ubyR+8cIqU/97rD9DwW8N7BPhbvpN7oUI\nTjNHoZ8cxHY461VEfkJ9vLtBuwJ3fcnov4iRUo4ARrZ04uAQoZKFQW9ZJEvz\nre8YVxQ3FKgEtEWb6zRXIw58QQmRTTFevbT57IyJYdSOg9f/uNnZx+PmgJKQ\ng5Y2u+QOJ/8WTNbywYLN5E8UARRWMTlgiwPrHMlIiQBFR2eOXbIesvRrhemA\ntOtC5N2CVimkzpeT2C7MzCxcNxZ6CwVX6AoR0luE6I+LfoTadidUJno3bYjQ\nWaEJ4kNAzlS8XN6MUWypTa6miNpVwtz7jvQfFwGzkBwc/MprB0gRY+tphIyn\n0/D7z8Zy76ex4ECzHeZRWrnBUB63UctQ3YZEQr2GHmrL4ZwEpr4cHuZ5tcPx\nDlovVdjdj1G9nQpmPoCPSaQhkbew6CEcujzkKWwSSxbySwTTJ41qdU5wEaG5\nFFMp\r\n=tLyc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1de6c993b6c48910a933557d4e2033ddfbb2acc5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T19:40:28.521Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.103","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.438"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.134-renovate-balena-jellyfish-logger-3-x-1de6c993b6c48910a933557d4e2033ddfbb2acc5_1639683824449_0.6391686358550581","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.134":{"name":"@balena/jellyfish-sync","version":"6.1.134","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.134","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1f10103530578784cb15fb915710eae2a898f324","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.134.tgz","fileCount":25,"integrity":"sha512-YXjwvdHmL+JDGVfp3uRS9ZuU/9sE1iLe6WM6YfwtuiXSMhDZst3Jg12CNiAUEZwURN7pVFqU/uSgqpwUu9dbqw==","signatures":[{"sig":"MEUCIFU3tZDAnWAEGkh9Va9brYffyMeZlP819VSWsdqeHD4QAiEAn2u9n1aO4mj+awBewbHvyopfsLtuaTtLRD8KNkrZb/U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216619,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu5hGCRA9TVsSAnZWagAAc1YP/j4XIHoSgltaoB+yKIlu\nobaDpKslzCzMHhzXrFs41f6rvacdw8n0xkyk4gpZfHtUFtsyZFuI2JJqW0wN\nR4A7Y3unc+7GB0VYZ/VvisSh6Df49gwME35A1rBfXBDqXPsTo3p0bJ3c6KVZ\n/SY9xJaUoz7O4Q8EamrR4leLttMWPTZ+QaHu9nqO1ABlcsaUONxvbhnh+Afs\n4LeUz5qeN474RkFROkX90gXoX3fHggfhyVrmN+LxjgpxkX33E2NpLg3fpal0\nb7E+9HcXB2X//Yx6rbir5XKUPYEGy2IAZhEQTSzbztF1eSpytt08w+fPy6i9\nzu3kP3XcdD4lio32cIXoGAwKM/OobnfJLWpKG/r1U38PMY3fetBxqh+YsH4T\nG0UtlBRQuykFR+w9bdkutKbaW+OykvBeW9JX8cblpXM/GooxrDshWAz5tJdu\nnvTjTCaJDJNzp7VBy+YL7I6kPZN+916GuOOuDhhd1JIjpIs1Gmv2cexpAXFe\nX6DEtt8iwZdBfV6g271P8uqozFoL8m3fpl8XY4yYvr5Nj34Ps1VD6xUr0a8j\n0x0OsqUE9dud43Inkq9mXbF1HbQrn0OfNeoFm2rZjPbvxcTvHuTOHNBQCJiJ\njbcGwmAFiL9n6pGjtygSpa9YOMNNBKQixiqidCr9uFTacUvMZhwvk5iiB7ta\nF3hh\r\n=G8M1\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3a8bb712fd1070b35b2d999684cfc4a437b97be7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T19:45:11.480Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.103","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.438"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.134_1639684166706_0.279131332530812","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.135-renovate-balena-jellyfish-assert-1-x-d7c17103104fa99b7852abfdacc7819279398c8b":{"name":"@balena/jellyfish-sync","version":"6.1.135-renovate-balena-jellyfish-assert-1-x-d7c17103104fa99b7852abfdacc7819279398c8b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.135-renovate-balena-jellyfish-assert-1-x-d7c17103104fa99b7852abfdacc7819279398c8b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6d74474df64db9614907677b1ad930a962dd6144","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.135-renovate-balena-jellyfish-assert-1-x-d7c17103104fa99b7852abfdacc7819279398c8b.tgz","fileCount":25,"integrity":"sha512-o/mTQvXp7Z29pR6W9zkFF7JtaNPfX947uLJ2HQTS3StljunqMGRDMM29GzE+ZEuP0nhbj56FFu5ai7NXrF3efQ==","signatures":[{"sig":"MEUCIQDPdShCr6dODoXqE71e+uslfS48ZHk1rzWUy9W5M/piVAIgW/MMru4ZpF8Kidv3YFtxUrEkZqCfthgs6ZMnmvufp8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216798,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu5kvCRA9TVsSAnZWagAA8nUP/iUwkpsIOIpjGDZous8i\nR7MI4zLq6WZ4wf6jyW18ScZpsEk2KPph9E6A0xm3z4Hoh5n++8Jc+vwsSOiB\n2lPujpoZ/pzEYXNcMf5Oqdm9beX9oa6QhZXFzRt/dYdi9vGMoOtsXfmd2P4G\nNgbA6j+5uvtzTggZySXy0ybmxrrbuCmLv5Bzmb5uEiXtGc+1XNPXz5k4aVCf\nmWxzuB3wBp5jy32WXmwqifae9NHln/C+tP2gfsMzDTHK3nxO8nd5lonmCzkt\nM4PNjSl6KJkVJ0MM9I31XUWKvCJWy7m/YuznNJIyWp7NJMqIqhoDHc1d05rU\nZCTE5QvG4DX582uRHfj0g5b/mOLCSK9ShyiRvS0HlOWcmjZ0ufrnmQ8ONLjW\nBiR16kHfYYA2k/8Bkee8mRQbb+AbtX6qhrTgmQ8R7xzqv0MxFa6NOkGOqyne\nEV1DWazv6StogiPK1Sem+MXkE4r3VxaVz2RAjscYti/l9Xy1CBXk3qHvBAH1\njhXGFU0MhmJDO3Ff4kGoZn3sWx9v5YWCNeC5iqsh924EDFq8xGd6xJ7z+wz7\n2iS7ZEy3W7QrpWitFTMv93RnoLt+4/QgrrGfjQtZy/kt46CwAibp7/b88MhL\nvX0ZrBuMGaXxWOAyxkvRowZ4AkOwon0jVdqvbKMn1OWjdV9wMOzDKjth1k5H\nWTbb\r\n=pgg4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d7c17103104fa99b7852abfdacc7819279398c8b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T19:49:00.092Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.438"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.135-renovate-balena-jellyfish-assert-1-x-d7c17103104fa99b7852abfdacc7819279398c8b_1639684399098_0.8507789984761838","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.135-renovate-internal-patch-35fafac9b499b031fecda51ec72c29ff92ac5533":{"name":"@balena/jellyfish-sync","version":"6.1.135-renovate-internal-patch-35fafac9b499b031fecda51ec72c29ff92ac5533","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.135-renovate-internal-patch-35fafac9b499b031fecda51ec72c29ff92ac5533","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"851f38b20db5095933376d9a35c8d535ac0dce7d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.135-renovate-internal-patch-35fafac9b499b031fecda51ec72c29ff92ac5533.tgz","fileCount":25,"integrity":"sha512-ZFRxzSAT4b/aZOzjOnsGosd1jF0WKghAKkZfuK6Kil3HmkU11QTGwWn6o1m3RuxuMJ9jybtqb6us3EOrp/Ug9g==","signatures":[{"sig":"MEUCIQC1953QrHQsnYeQ7+gb/rJe/+n3TlMFlTzHXFNQ4K3ZfQIgG955hxlPHm9SDHZb436qv2YcXRpcFyi5p/wIU3fkITM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216790,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu5oKCRA9TVsSAnZWagAA4v8P/A0CfLfeDXGjOyNg/JOb\nZZe1dqUf43A17UbZzI3Sa5ufizX85m0WweWcvyXmY2vTxpfdJz0uHiPGAnqw\nU+i2roTKJbYHG/1w/vITV1ozc/CD6olup3clDLSh3PkNVYHYI51EqS8bWVA+\nIZrnsLITVG6JddvK01vsfhxEQLD6Lee9BaRcDngyG8AldNDBYiysa8VABsXx\nhQ0hq8bQLEOM1sYQlTGcks/ye2JmwYqhb8LuQ622oXLmuWFqOyy33962Xkkl\nKd9Ou3z5cWptkmvfLZcmMID0b30t4IBw0Nfhy+z6rIKrfbzZS6slr4bZ5sYZ\nTZrg1uh16nUxDR4ox4yCr44iq0gZam8zOBTK/mDiWiGKmBQY4+Ijb8dZF+hn\nktVb/m2YUcX345BIWOiBM8CtrfYR0CFps9F2QEj3BXTwdY29ZLvfWDIANWqB\nr9zAcCb6RW0RZIUmH6xUhZSR2ZgOG5sULZU3PTbeBHWhdej+FnvAHcLpVCe9\n4GS5C9rzggnJEeW9wYJRCwTnNr6s0m/enaAE9AgQl0oZaurQZsjtW2jWiFyg\nM0oT7+C7AXu/GmejBgl+DS+vWzJyX1LsbqZDIk73UwHy6jsiwOsF4K2DZrr8\naRo4Kk1CANpYZR7pWgWmYfp7a1fWjxSD1oP+e1tpbFJvv8D3n8hs9O6sKtBN\nRMxh\r\n=3DuN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"35fafac9b499b031fecda51ec72c29ff92ac5533","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T19:53:40.276Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.1.103","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.439"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.135-renovate-internal-patch-35fafac9b499b031fecda51ec72c29ff92ac5533_1639684618341_0.8443342361845452","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.135":{"name":"@balena/jellyfish-sync","version":"6.1.135","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.135","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9645cebca9e18628e61429755e89de6ee3330bf9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.135.tgz","fileCount":25,"integrity":"sha512-dn52WXwRA5ULoIn7nJstwxQbW1J+Orc/XT19mrNdYzviy2GciPzD/ZdF4NERR6SrwgtIkqFXQ7lbgvjdZhqa9w==","signatures":[{"sig":"MEUCIQCUpVD1o6X88FQ7DrBkC7KY7m3NiIs8157IkTzdGGu1egIgSqMNk/Pjz5mJxfS2Vx8qo8uodjZRyLzrwzB+smyUqoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216720,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu5rvCRA9TVsSAnZWagAAuPEP/AzY0YLNwQe3Yo9Tzkgp\nt07/YBHEq87cR//kycFopUe3/IFHHgogyg88ZJvs0+Qm3BLh2H61dZnscNIa\na7GZl79ThSqiyTbr/Jl+XQrSzjd+GAJTaR21083OVVCi+8zwcA8pyjdBPGrd\nPAFPRXQBTCrAsUkpiOz5U6eNrTw+k8S8yOrZnfi/7Ya9BZEFkyPRyFfc6m3Q\nUyBM+4Js83jKEfasZrxcnhGbRSDnNFE1KIVgbMP0SF5PQx5mi84p/fF7h2ef\neWkBo9gJrIqs6AG56yN8F4OyHRP4FqItF44HiTiQc7HphpuHOHrTvPj/8tPZ\nccHzq/VQyNmdq6KTaS/KgEMrQNYPH6l5qRTicMSKWOuCDimV6brtxBnuX+E7\ny1xhUqu2eCzoo1VzTWbIHybkVae8NK0GZM7+EOO5B1YklXWk6tuzKjW4ZS2w\nh41MtYUb/JIRrOW+TFIKoOhn/cx5nXPf1CTml5zF+ZLc8BkaHBqNNT/dA3Kr\n4j4Xq/Wbr9rKxdDN5xHqPaa8cYINlsqL49jTSPLHJgrkWsNt2JE/kzXvz+3T\nMcGWv9QAakz2ijWNTFg45YVsMroG+0Yr/3POHhjPf0JIoNhCQWwZTDSG2Gcu\n7fHpmIm6BWBoig8f9cyDstDl0rGpzrnRiini6RddEkMBGtOixVlRQP77Ubxt\npvSk\r\n=isme\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6f1887de31918dca41899bc1b964914e7c1e2e24","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T19:57:21.382Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.438"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.135_1639684846940_0.36192167848380397","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.136-renovate-internal-patch-dd3b444b0894531243cb4439a5dac6f068cc181d":{"name":"@balena/jellyfish-sync","version":"6.1.136-renovate-internal-patch-dd3b444b0894531243cb4439a5dac6f068cc181d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.136-renovate-internal-patch-dd3b444b0894531243cb4439a5dac6f068cc181d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c67e9f1e0bde823ed94fcd353d6af7bce3ab3f27","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.136-renovate-internal-patch-dd3b444b0894531243cb4439a5dac6f068cc181d.tgz","fileCount":25,"integrity":"sha512-b+7KwvhcIlgovME/lEslelVsUWwBWWd9SUx1eUJ7giUDRv030IZCMrNxggofhigOPMDxwGskdAJ6VSQZsvwpag==","signatures":[{"sig":"MEYCIQCmauFY3GXjq6mC4ZGNgYSMsrLjuU3JZHCcHKQ8X63VUAIhAOMdnqni/50OKECUJJf34UGI8FN6p3pOibaBHDBvtIEt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu5uuCRA9TVsSAnZWagAAd3QP/0LR4waUk8hMBFEWKAJr\nqQO4OBM4jb4iAd633beiOYPfj8ihkKvuJW5DldPJM9mSHU3iMbOKmPyy/0+V\ntNnrIzZXIrR1DJm4HmqS6IFJkWN5sAsHSc0xg+WPG4C1aDJSgu0ZPeBJJBvl\nYjcRsdkhd+e2DR3ovoJZUpi3v+F695xCkGSRxznSXSXXmpS4HcTHom8isrOH\n5DsTtQhRDOp1Tp6qi/yNMtzm+JiE6i3ypDd3OHtPIFb6j01cfvCHKqZgc0IC\nBY34u2Bwx/aB1Cb+pAJJw02lCzRz5V9Q/mCfhWo+alqLit2E8Y5bYObRWgch\ngW90j7YxU84IulldN7XasmV7KD1oPJnrdZ4Bh4X11Hi25f+BpcPjsBtPqJ8L\nkE0H8G6Ndkq/ZRcZr7FuEPlS7DqD2sL/P5UXzfPhbcYZYNq4X2greGwY7xZA\nVyHpDI+EM1qPNshHiayMMRJSf7J0UXx+ZVlA/kX4jnUPLJDeWhks9sQgYWNZ\nMQbXGTzGMZ7V/E+bZaNHkMMeDH7ksxmegM5S8OQeR4XTF8YQHwaXWQyVGcDU\nVL1eddy81nYGOxumxlu5n4aB2kq0PBfk+i6Y+L6MurlxTfHOnidJHbZrq92O\nOdflgkgY4BvaJTd7Odc33s2r634OlOJHe8dpZEdhqst+hCzOx/9H3gca8KzH\nsdnE\r\n=KjbU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"dd3b444b0894531243cb4439a5dac6f068cc181d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T19:59:15.491Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.439"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.136-renovate-internal-patch-dd3b444b0894531243cb4439a5dac6f068cc181d_1639685038709_0.8218504397200475","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.136":{"name":"@balena/jellyfish-sync","version":"6.1.136","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.136","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f1aad24f133436081625944b8699f484045c8d9c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.136.tgz","fileCount":25,"integrity":"sha512-EgWvGHxJb/6in2qBE0XWl8zFcAoQGaI+o6JyPAwTwbyB6BnwTPaq+ETmoSgtTaeTF3uVzCCqkcmEesVTyFhSUg==","signatures":[{"sig":"MEYCIQCaHpEutUSlSncYz+7Xk/hC6fkWd/2PTuZLdZIxpKU8dAIhAPI2is/MI94nSYjj2Yz5FgM7G0/UI0PSmp7A4f7TqOMJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu50LCRA9TVsSAnZWagAAUdgP/AvLnL3RHuNBAs79oE8W\n1TwpB8EVsRa/Nu2MRK9zyf32OEPVu/EJPUQqeFNgf2HUjgLrOps4dICnJNi5\ng+avfpXXVPE3hJyKelsRds+x0tbM6OhAiJyh1zsnFBBFy0QMK5CLELabSIW4\nB6t/W6yS9rKirgABO+SaSUtqC6wlMdwEeaogeCijGo6DzC2wId7e0N1QlS+W\nuTRUhI4jctADT6pb6t1aNrNYVrxj81mIXnhOU9TDKBkWCTltAFkP90o/GAy5\nrLsHYkFhHGsXP4bLuyuZ0OXMsHpzu9GefFgHvO2ivJpHqv5A1GXhB+x3Vw/n\nNNcrgFvEuoKxc0CcQ2ltVAIagPhwe7iWgpd72Ep/CM02ReVy8Ixob5RgeI2J\n0+/OQtOC12MwX8A4SJRBPh0tggbsanYOmlfsBmJmAWfiVyxoDYh+brMJ6U4P\nuP9ZY63MWIBIorwNWbwUFvDMB13RdJ2eyLyMKEeNdNvOFiJwE6J4pJK3Fx1F\nKxNUcSnZsPK8QsBpKZwOojBepW2dUlifeq3JhpDTQYJRFYt/hA1Jf845x74w\npdNjOeU1k1hAtIRdqyszBAI49wp/wcLKtJhsUsxe9bFIX1/KjNgYy3MOaHSV\n9hPecPld2eUB6rplTIMU6ARz5tyaV8G3RylknQ61qu7MCIzrYSymSxWd6mmZ\nc/PB\r\n=MT8Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ef897474305bf1514e1ece2205c4a8bb4d9c3aff","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-16T20:06:51.465Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"3.1.0","@balena/jellyfish-metrics":"^1.0.439"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.136_1639685387244_0.7057671673283221","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.137-renovate-balena-jellyfish-logger-4-x-ab4001e867ab78d245612f0ee7268b96a8d57392":{"name":"@balena/jellyfish-sync","version":"6.1.137-renovate-balena-jellyfish-logger-4-x-ab4001e867ab78d245612f0ee7268b96a8d57392","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.137-renovate-balena-jellyfish-logger-4-x-ab4001e867ab78d245612f0ee7268b96a8d57392","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d5b0860a1054397849f8f7e088f90f5e487303f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.137-renovate-balena-jellyfish-logger-4-x-ab4001e867ab78d245612f0ee7268b96a8d57392.tgz","fileCount":25,"integrity":"sha512-z0WJb+3nsk/jCW62Mgwd8iYZFtoYVpfZGkhnMV2dwd8mkSqi8POW//KH3TsZGftfG4JI+Xw+kOROYz6SpIftrw==","signatures":[{"sig":"MEYCIQDQOB5qRlo8hCRCmHnoUupXbyz0HPh5qWv3ZFNezLDBIgIhAKKb5CFOKfo5Mtby6SNKo4g/dAOi58ZXS6+r3S3LsbWJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvG1LCRA9TVsSAnZWagAAikwQAKN4T39uuc7VC8M5yBcQ\nYvJ9Dok6P8vUuV5EGmSmHTQl5BVcC66UKaZWA+FUucsVuvRm6kcuKupvOLfV\nUbxqrRtbbSf8REhlb3jFp2bR1dXd7yFdDY6YZeUVmHgmkRgRD03QGv3qnZ1P\nT0yqzN/VtN4yWWW8mnoXHm2GrzlQBv50CEzkEwzBeBCt81mDNTj9UMRoO7dN\nohCHQG7Clyfxbr/uPTfwxCxc1uJx1dZZmimphkcBvWzvPxk/H0F/w2+EiQft\nWMW090kjtKYTNMDqZeK6pdfc1Yv9LIwIOD2u3hBr8aCZfW6b8VXgFjVsVO7K\nHUA2zxVLBOEY1iferAPeH7Kg/5/81mEFHKt9n+yG+H9AKWB+c8zFBF2Nuty4\nNwRs8jonRwZVUunAzwtDiIc3ZMlN0RjrOsqc51CleVisukWfbvoXTTEJibyM\n1EyBqEEMi8fbkgUNt6eyK5H1nCPAqwsCm+dZvRmRGff3Onbv6Oma0HRBXJVe\nlDQjkzzVU/ymwJYnCe79AGySNPZzX4QYJA68SRjfuU1c5rKafys3eZfYCWXy\nOeUIrAB9A3L2PkQmj3rdRPaVbrD/d/thEnuAsYkmoOlzuyc573yaLd+Mfsvp\n4ESHIID04wLH2wZQ8wEc+zXW1OFNXav9fVbd0lzvUyGrTEbwdYYODrHF6fBD\n+IgU\r\n=Kgqx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ab4001e867ab78d245612f0ee7268b96a8d57392","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-17T10:54:52.181Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.0","@balena/jellyfish-metrics":"^1.0.439"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.137-renovate-balena-jellyfish-logger-4-x-ab4001e867ab78d245612f0ee7268b96a8d57392_1639738699518_0.21686981182844378","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.137-renovate-balena-jellyfish-logger-4-x-c14291c40ab1aacb0cf52223a02b4551bae925d5":{"name":"@balena/jellyfish-sync","version":"6.1.137-renovate-balena-jellyfish-logger-4-x-c14291c40ab1aacb0cf52223a02b4551bae925d5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.137-renovate-balena-jellyfish-logger-4-x-c14291c40ab1aacb0cf52223a02b4551bae925d5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7d610b43d8c6f96027a2156298abe67770160d98","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.137-renovate-balena-jellyfish-logger-4-x-c14291c40ab1aacb0cf52223a02b4551bae925d5.tgz","fileCount":25,"integrity":"sha512-n1pAWk1gdlxSjdsKxEILZJAROZWWJUZa0c5lwc2EsdoH/i/dPM2C6tK0RPzztbhgUhu7mCIQJBFAN9shvf9Ajw==","signatures":[{"sig":"MEYCIQCxu4X7oOV7f30cm4fZ8dG3rN0aDDNTMpw/FPJOaGIJTAIhAPwVeMufAvxon2+fS+2268TjNmdhJ3h3Ttp19/d364vI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvK7zCRA9TVsSAnZWagAA9HEP/0bG/Zl2K+r/pGf8iNoX\nfF/+PIwnAX0pdfJtGy5UBUTHCVmRM9Pv49UaWD36W+7b8NccmuHrhbKk/5wy\nazZSuUQt2/RZU1RN1uPXgTOoor27HkQo3cZcJBgCOb1WY/LXtN5+iX/6p2h5\ndebd+xQGzq/2ytohfyZl6SHSnt6fjKw9LHMHZYvT1Afeyy8Z2wd8CXJfcaqR\nCdb6NSZu6HNWaSfkgoAsUGIamaO+/jsvFRQ4MpeCErWGAXaydnVgEwBoW0iW\nKC1ex5YyQPSmtojCLr1XN0g+ejn2J7UZ9H6I6D8alCfFEOm+kQhnLSnUeq1Q\nuIzt1fAqoD96K2x62yTZxp31xyAn5Nyi/wP7Y0JbqWqsCPUlGdU+Ak3x1bSy\nx2f1lf3MOLi4vuKuTtcxjqsbmP9U1Iggo44qYIjhG974Wpvy2N7LGePpXs1r\n01+tv+4O9AbUCzxVtS3LUV4SjMhZUTxgnh6d4GXoxGOx8F77omH4RIzXeZm8\ncd7a7iAhr9e88CpCIXuJ4Wqkx6SiEM3SgQTmsH0GgwsFDBXL2OtnWK3njAUY\nhC3kfXxme+rIL8C3wSKTr8BMolkMJpmxP+SR4KZVC3NXnkjyvcX2r0A76HJx\nFk7rwjckdo1CyycttispzkBpG+1VLAcpOIpurld1dQnZZfydzutjIVnyGQUu\nYVDq\r\n=Ak4d\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c14291c40ab1aacb0cf52223a02b4551bae925d5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-17T15:35:21.881Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.1","@balena/jellyfish-metrics":"^1.0.439"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.137-renovate-balena-jellyfish-logger-4-x-c14291c40ab1aacb0cf52223a02b4551bae925d5_1639755507688_0.8450338580292138","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.137":{"name":"@balena/jellyfish-sync","version":"6.1.137","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.137","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b3f86ebbfdd604937ba7e72e6c1c335dc2951fa5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.137.tgz","fileCount":25,"integrity":"sha512-Z7l26N3BoFmp9EngyZLEH6shfaM3Rpd1JajptIWSVGHeoocMG1m3OimDyZbsF3T6/j8uxjr27hndLfZb/QrVxg==","signatures":[{"sig":"MEQCIAxgsnaCJvA+pWSuhAzemGQvNjbj+IU7hKI/ou6RmsCUAiA+OxJ+t65Ola19S1z+HeQ7jknlk9E8nO9o5i2kqv0g8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":216925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvReYCRA9TVsSAnZWagAA4ZUP/jf2imKXyFeTYedRIXiP\nSbJWLQ3ljz9ut5ZJrzCNyaWdGgOn2fqSAKCud2S2SQQ/8tiZ33wYZ133G9zy\nUo0n8X1uhe/FhnZEE6lGpiO41D1Pjmm98dP2IzAS93MuemlXAyEcy2H8KzGm\nw2NJpvVoVTyS9RfZ4HK2VEXMz7cYhva62CU/h+Brwys+wJ0mMTbesprJs3cD\naU9SxHtxOGg7+2KmfMxh9FKp3su8cl9jx/oK5Msp8rAM01C1r3VBlW7kaq95\nCXQofqgGDJa5hD01LFEzFO2tQRQ2c3xhSxvtR33imZJm4SI9zc4oQPimU3il\ndkzERBz1eALORVvoIlzDWO2YjYmjwYxQQ+WryhBD9WnmTVEFYeV81tjFXqRA\ntthNa99rlbDX3Y/UXp7ychXgRQQTQ7SpkFL6J0+7Tpeg04aNOUj0tPVieVQr\nSyvnje1j7OwZ7rpPaQ4Mbo1CibKgXdWo8Ekh5GLYxsBP/iU9bEgiFm/6I4E1\nW08bbop76C1fGrPXL83/vz1ICe1CMQOT2GCk9X91MF4Huh6H+lUgKKn52qpT\n7qnRJyvxW9kwlfybhzf5eF+a1dhsUBWY+xgZxKyJOSKrSbhSppQb+p6KffZO\n99fSVw7056DFWGoUG3lbTkOQHSwPsrW0NRKYbW2Hx/xX1wH2WIS21T9Q4AcR\n0/AM\r\n=ecEb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1e38e38256b431a3690916f9374b82205d1a9ddf","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-17T23:02:56.637Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.1","@balena/jellyfish-metrics":"^1.0.439"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.137_1639782295895_0.40067160224160747","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.138-renovate-internal-patch-a8f4a122f132b06375264f84fc9f344c0e3314ca":{"name":"@balena/jellyfish-sync","version":"6.1.138-renovate-internal-patch-a8f4a122f132b06375264f84fc9f344c0e3314ca","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.138-renovate-internal-patch-a8f4a122f132b06375264f84fc9f344c0e3314ca","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"20aef7551e65df7f027739048fab2f20b30bb726","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.138-renovate-internal-patch-a8f4a122f132b06375264f84fc9f344c0e3314ca.tgz","fileCount":25,"integrity":"sha512-/XfagJAVHo13uIwYxM22fzqNNV4v+woIxjFugSG1uS1BQ0JVYr78oR3XD8gQjvI5IqXpWD2e+A7lQ5fHZu+A0w==","signatures":[{"sig":"MEYCIQDaHR3HmiLKq+Pda0Hk97O8yOFr5veCEQrH+z/KxGV3wwIhAJkiY3UerWwb2lEPQPwOkDJFTVTAc4CPhh7iGgnO2Fy4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217096,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvSgOCRA9TVsSAnZWagAA2fsQAIkPrF/4TPfNxpm5tN2B\nHs8vGw7lNfNPodxjPF1MHHA9PM0GGr/KY3IGSrLFGCkitHIdR9aXy+4ef5O4\nnkDrzwFlOMev5TbpBRpO+/BHBunC4dihyKlmQUluqwxbyHiPXTnAXvvyxO9H\n3pcmXPrt3GhrjIUNslkMJ4tUOTT9qZSAOlScgyLN9d69ZYHV9LFZICeOddeR\ns65cmH8ELqWe7szp3DsmaioDVbwv4KiepSlokzo8V4Qj9nm/DcuODOMdo/mX\nFcPeG1ZPMCqmFDsL3ploZOlsG9wFWxi65y3RJge2TRIKZJnI9PEsxHqpmnUM\n2oRhSpxG6ituQATtzwN2D5ZObTSCddRz56kvc8FiOCMcP41AKjEafkIkoiu6\nI+eFwwTRz4PBJviWy/rug+wZ8rR3Ft8LK8fT5RvLHMkP8OpUdT1DA3C1LRil\nO4WUS5NwwNA3LohEQWOS+NfJoBnE/qnjXQ/6sfN4K/9GwhED087MofB+xA7P\nEkTsApvh5PWVwQIWpJJo2xLBJoVDTatM6AD0zlN1FWizVX0pjSu0AyD3Fzw2\nyPx5tRoHGjmAOnOcrqeV1CCb5UHYOjuqb2uNL8ZVh2MTb1uD9SVsNYJyYjgV\nym7v8fF9HDDRKDiBeZUUp7sWKLb+rDjqmNGFHBHhnGU1n6gMDOn5Ao+4QFMZ\nJ3nR\r\n=1H/8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a8f4a122f132b06375264f84fc9f344c0e3314ca","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T00:11:55.974Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.1","@balena/jellyfish-metrics":"^1.0.440"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.138-renovate-internal-patch-a8f4a122f132b06375264f84fc9f344c0e3314ca_1639786510433_0.2609793095961259","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.138":{"name":"@balena/jellyfish-sync","version":"6.1.138","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.138","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"32898a8c2d50f63ca46cae8c36e001b95a01527a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.138.tgz","fileCount":25,"integrity":"sha512-+laZwyoyQZefTQP1O7FEpL6pmzHOCe2tfnKLcYXqq+76PGqIWHa762XJ+tZwgF5OgGIg4Iyb+RbkyAB+fEp7Bg==","signatures":[{"sig":"MEYCIQCV89nUoN3u1cbIHyoXO9xrbTcon8YfUrwc6FvH05zZXQIhAL3heMJI2oX9JXdncbyblFRdgnrqR+vktkIWTBvj6Q1L","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217031,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvSj5CRA9TVsSAnZWagAArbEP/0ReFXbGHjNNJVJRuzpR\niO0+GqHQfWWOunXQ0Q3S4x5M+3gfnhGk2ZrHzhx9YElM++ctgqnlURgpGC5P\n5gSCEa+7TFxeTsRrQZmh8rD0XEWtvlviFGeicCF3JVt+8l9tJRQIMZIB3sRw\nALvVWHqfvLsmDMti33GwwGPtOyq1wmtdLGNZqSu1bV42PZ4IaeKRREUA9356\nTqO580H5GT+6KtUjyrdMFIY4mJTWzQFfTpajEZBXg29T0moflMc/3llCIAon\nt3On4q6DLGzSHCZAg2brGuSo2hOpn2XdopjznHNYaH2eSGwP8klj7g6tLPje\nXiJo73D8zmuRuUX1iRvnxb3JrmrE8AUJ9E7CArGMzWkVP2+UDSALzw5ViQH0\n5Yuk1U0VdnbN6iC+Z+r94s2quRf6aPoEJ4C/ZXcfTs1o9Sd2/GeDodEWzIHu\n72UADinMwOMRBQF2VipOIJ9KNXdFlJLUUDwq2RqPi9HNTSaurdDm3DWFPO2w\nEplXiQizpgz/oWxfJanrSq8e8iZbg0w0MvzCrTOVuV5IugeMmaWEgFM8YuS1\nq+UesruzjAEcTaFbWEIiRUROfyHz4mkttAwT81WIB1TIr101DeWKq0dLf1bL\nzQcYUId91aSqmViAWyUHfJcqXrPIe2hQufKeB4Ra7tCtYDcNoJN5sTAnzlep\nE9rA\r\n=mTtV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9c21761f7fad6f7f9d18408d6d3292972412c3a4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T00:17:17.273Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.1","@balena/jellyfish-metrics":"^1.0.440"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.4","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.1","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.138_1639786745131_0.5189376327825252","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.139-renovate-external-non-major-f7b4bab316e71fe592c5db50d7dc31e240ad97c7":{"name":"@balena/jellyfish-sync","version":"6.1.139-renovate-external-non-major-f7b4bab316e71fe592c5db50d7dc31e240ad97c7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.139-renovate-external-non-major-f7b4bab316e71fe592c5db50d7dc31e240ad97c7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b4fb1d34a69a2bf39a448d436b098b81e237691c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.139-renovate-external-non-major-f7b4bab316e71fe592c5db50d7dc31e240ad97c7.tgz","fileCount":25,"integrity":"sha512-JZzlq1nN5OlCeDjmQsYi+BU7Rk6iu7fsVSORuXGhhl6+NvoZUK4oKlBuA4IznR59rYCGxNNc6nzomhQ9vNToIA==","signatures":[{"sig":"MEQCIANMIGikRiinSNjdKicMNQ/j0f3WgKy+8IKIW6lkvW2UAiBL9P0X+ELtAQQYlzwSB80rgC42O9UlkRQ1qbSPFeElFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvSmjCRA9TVsSAnZWagAA0ZoP/jPIRFdwpkoH/htCScsr\nUeGzlRNbfZmQ4eTu3MI7LhvmKqem/yc/n9PAZgmCwo96qW+IAMXRbkPgyfaE\nkr2Op+eb/QfI2wUXCu7+fW0dojpYXCZVb6okCVHBTQPdoXKSiv1/N4tQd+3q\nDMOhAGCVPWMpZOQKVpmGLsw7SlTrnmDNB1ktdbetaPHqS3RZZm86or59tWaG\n1blMUUsZmXaVGiL0wM9YU+aJHXmtcNWmZFhK1Bu3A9HzEa/8HW02WCAOAdyY\nHzi1PkIfvPfMQCJ/IadJZDRh/2ri1Eg+iQAofwLTf7Nwt96uOKznq9gESJ8E\nqNvi6LOwyWVgbOMgmwGm4RYkl7sIdMIs5tsz/YJ2N1vqMfovCx1XlfZUEEnU\nl6UkI8kF67Ny73JGhESX+IV3jSGex2aPaK4KZzw/YOh95/3kHBsDbTst9Mi1\nU9fXHLy9oxMzcAKvXr6kVW1QGd1Z0okOCv91DSmGfXehN+jX3TuEGynXSd3O\nMsZtspT8mSKPgTyb+I8eBJwdYKD0w6aAlLMTIA5JEOfRN0t/O2fW0tyYH1nr\nwEyjsVzCT/oiBkioD5tt3e/wY0K9tmuYPaXUJNQho+T2wW33XiXFWWl2U/zz\noo9rAJFyNtGu5jlZvXxouJp4Y/UdL3tQvecNkZcjow9LwKHI6GU6k5xj9S1F\ntKqr\r\n=iMth\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f7b4bab316e71fe592c5db50d7dc31e240ad97c7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T00:18:52.751Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.1","@balena/jellyfish-metrics":"^1.0.440"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.139-renovate-external-non-major-f7b4bab316e71fe592c5db50d7dc31e240ad97c7_1639786915175_0.24541445085884472","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.139":{"name":"@balena/jellyfish-sync","version":"6.1.139","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.139","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e9a316857d673f8198f05080938ca6b29af54f2e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.139.tgz","fileCount":25,"integrity":"sha512-8/S1SMSAn+F1wKOysu3/l176nFHs3MJ/9nQY7Gvb5g3Lcq7VBL9iy5BiwDzfmwz4ybaYy55o2kMvmMdYYYfECw==","signatures":[{"sig":"MEUCIGTCdcOzsB9RApOKvBBdISZzfV9gbXGYMDssFJEjgZcwAiEA8KkMSiayVUjOYeJk42HEyI6hU9IchtAG26ZOnRmd9Xs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217107,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvSr7CRA9TVsSAnZWagAA6j8P/3hcOQ2d7vgUoOdtmOMA\n8XxnBWC4dpXSkEB1GSa/CZpvfoGJmEmQzsmBZkkEpmCLy4fy0NKgad/L5Xac\nDpOCZahVHU+S9WlNYyqjgFpcdz6HOItCpv7+r+VWpwAKgNnTLy4lVIEmN2GO\nkosUFUskiA5n6xC/2KHeHoildCtxXon94CS+q0KWvzAid18Ewl8Wt5KiPd/j\n9akidfWaHyOvjX0GbGGpEPrkeIJUjwIsAazZk8N0LN5pYqE5cHMr4yoHiD/k\nWah22lcObGPRzFO+YxDDlVLyItOtqy2bXp7XpjsHiIFNyBgRSUrl67wn+JOJ\nAGHNZhpxXCDkE4aiHGGnhyiG7FUbS8bgp8xzDHCzNKgEnKXFsSTy0ipsI+xK\n7evZlQs2NYp2UJ2mhlUgAxDADTt45wlOM0wKgbF1PKYJq1RRB/nqUSPQz2HQ\nnOkXKX5Lbu98amdBUBRxP3F6wQhBDI6O2PiewoySWP6XHkIiYkh9SunyhYeL\nldikVwbO3PrsEZ+JifFsEVgoebwxbK3TCKDo/p+6WiipvbbiG1VImkAU+cXP\nyrHoUX1hn16mBB0u0zXPJXdvkhYkrUqtD6XYyyXAj1lO5bgBLIkbzXvA4gW4\nXpLsVlKIiG41LpGl8r7JiQOi1er4JgvIR56fE+Nv/idLvZyeEAPj654U3y8c\nQFyL\r\n=34Qz\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cf415018b68e7312bdeaeec0d87215e72b979044","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T00:25:48.707Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.0","@balena/jellyfish-logger":"4.0.1","@balena/jellyfish-metrics":"^1.0.440"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.40","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.139_1639787259013_0.20916534757641703","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.140-renovate-internal-patch-1c325414f0c6470e04b3ee471a8783dd95f87a11":{"name":"@balena/jellyfish-sync","version":"6.1.140-renovate-internal-patch-1c325414f0c6470e04b3ee471a8783dd95f87a11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.140-renovate-internal-patch-1c325414f0c6470e04b3ee471a8783dd95f87a11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3fbbdc226ae2290ffdf4b2d33cb4f554b74befa9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.140-renovate-internal-patch-1c325414f0c6470e04b3ee471a8783dd95f87a11.tgz","fileCount":25,"integrity":"sha512-FhsCrhK1o/2Ebbeef3ahMbXsf07MUPO05dx232JD8qP9y5VttA7zHF2pdz4ruG8DVyKn8H1TD9U84SyAmrlTnQ==","signatures":[{"sig":"MEUCIB6HVk9boul03TE9kI8JnVfHPuZeC0t5M3FgiQ+DFmCTAiEA0VFXNu8uVpmXfzprnlDcOPXndXgAX8Af2sfwLzu88+4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217244,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvUQzCRA9TVsSAnZWagAAUAYP/jzsBhDw2BomzBiG1TuP\ncZ9qYMy78NQCyVi4I3iwrQO9foXrWiEWuSN7izQ0UaznTLgl+7R2cq7Z2ajD\nLUqi295zPJNQb48Lu59hTgoN827UQnbX322TE2eQlUMuO3uFbhbS/LDLsEvV\nFHw8Iq8Hlsb12sO3n4baD0GESdDoYdu1+enTfXHMyBOJLN0zWxtBKZcS/nKm\n9jGJV2JqsXwnJPloW5fnQJ2XFF7x10oz8pvgAXWGioST/Rx4FJQ1JnSPprKT\n9y7AeIReTPqc2P52IoAncnaZ6ylumW41KeBcejQGMYMabSgcF9onODQDmMAR\nWiMPOra9AOjXj6ycpxXFrFaS+SAefV61ncqH88nTzckh2rF5zbhdjIQprv8x\n3sh4JpgJg/yKoU28pWYtUQnnBXYcTUuAN/qLHL1tV5SCszPYeknQboNRyt9x\nrE19Vnb+cEWtl3IWcPJOkAanGG35IJErYq0bn35uY+c4N6f6OS89NyKH4EoK\n5I2tfhNavZbtXQ5TRUrhRxtQ/gvdLW34dOK6AvNRmB4lDo7h1xhFfJkJwegh\ncVIJoPDzVdpwy6/xQ7M08uK5n0CiL/KLOLdc0j8SJoKPm4rnah2NTJxAfWVr\n4yquXw/11TRe7fM7oSmjrz9e//aYRRBctZ8G7mQzbMVjbzA5VT/P+7RluBkb\n4eCU\r\n=t19b\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1c325414f0c6470e04b3ee471a8783dd95f87a11","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T02:11:53.163Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.1","@balena/jellyfish-logger":"4.0.3","@balena/jellyfish-metrics":"^1.0.441"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.140-renovate-internal-patch-1c325414f0c6470e04b3ee471a8783dd95f87a11_1639793715019_0.21345217126783833","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.140":{"name":"@balena/jellyfish-sync","version":"6.1.140","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.140","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f17e47d9fc2cea5c789c92402b675bc0165b274f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.140.tgz","fileCount":25,"integrity":"sha512-EEydgYHKGihB+fMfgLntyaw/I689lMz3UZgP+pMisc9xgZHmdnl7lS9sR3fXu+mi6goiKPGCfNC7VKl2yDkNow==","signatures":[{"sig":"MEUCIAk8D5u7XX5aEfJF+tYw9PHHGB/DO68vQZX6yY5JspDVAiEAgYCFF3AwSO0pJkrg8m5HHRMIU2M3LaJP7vb7ZxgARtk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217179,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvUUbCRA9TVsSAnZWagAAuTYQAKFhNyfiXkeJHrroB+/x\nACnV542CNeN9IF9hUqzWdohSKUfz0ByCV2K1cHhszgIEJNWtJ6s9PdQ3r4eZ\nWc9hm+bDso10LbTca+sZ+GjPsQFMdoSkOX/xCaxwzUXwMoFA3d9I6RyAM6k/\ny5pASF9XlAYRXfRLJcIWsDGSZnkh7vQ+KTi096LEuQtYjEksalWkDRmJpyaD\nfz3ggI/iW/QbILMTJmzlBKeRQ+lD24Da//G1eWx9N2m5SmY1M04A9dviQloc\ne/Z76VISlCiOIiC27hsB7Bi36qA56x4kk04tiigy8aINDFWYrq8e2YRU+f3C\n+JxHdsxur7EvxApOuHdvHast0kY4kGnQCzLKmQsn3lMjD7qG1CH1Cd6C0oTq\nOAyn6W3RSdgjTjNkEeKbFrFGK9ClQx0qasCxgR9wsSehSSpGxkLOth2E9+n7\nvSIukC8zIaC/VFdZmq5YCScH4Oi7QZdp0mQ1ktHm+hP2jmlqLj9+0FxpWBim\nl32puFK1R65LUEwazjaBwGffG8vOWzRWsbxBt1ylxzY0aFQRmpwdGCozu14M\nKYQWycp1xZgMMhudl154fMd2iXvSNnN6dDugSgvZrXHJzYR3OZaFFvKYDaS/\ne+/ZDlyJbfTZPypqCy+BmajMWZNIjz2uR1lXASI8oqMg1RFLH6vC1ES/pZaK\nPOhD\r\n=isLe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"322672aba2d631c80bb3e6457d69394fa6e23764","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T02:17:05.558Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.1","@balena/jellyfish-logger":"4.0.3","@balena/jellyfish-metrics":"^1.0.441"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.140_1639793947548_0.33095289314074683","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.141-renovate-internal-patch-ef590dab38a1b695f638a61138bd243251f93d4e":{"name":"@balena/jellyfish-sync","version":"6.1.141-renovate-internal-patch-ef590dab38a1b695f638a61138bd243251f93d4e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.141-renovate-internal-patch-ef590dab38a1b695f638a61138bd243251f93d4e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bb40b91e4f669923c9d05afe28ebf731513d06b4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.141-renovate-internal-patch-ef590dab38a1b695f638a61138bd243251f93d4e.tgz","fileCount":25,"integrity":"sha512-HFXYa/n58kPinu602HBBJtMQ3BI3qvznkMuyh5PaZMICXfRka2tukvSYr/czA4uGlby4EQaOporiASzi1/WLdA==","signatures":[{"sig":"MEUCIGHny2DfWFXpNDXckXw6fZwVwGbh4EQvHoz6bg0y/IE6AiEAvZrfB63JfGaIL9wmDpUV1+Je9ImH9TyWS+GzVQBT5cc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhva1aCRA9TVsSAnZWagAAte4P/1nlibcSlDj63C/CXQHm\n02R49OIvFIhFQydcKn+M0d7sgK2HamcOCBWctuc1jb4w8PcZw5/0LykFJPwu\nyxdi6qfRjbZM/3Ds4B/MqZxBrhYcgYd+Ewk7rleUYpJsR54cpT3bjhA5ouYJ\nx5PESzhg8As9Q4/SD5gfx+eilEOTjJhhRlURMzZE/oQNA+GzGRO1PTY80dfE\nVuMNM14EsqRuQkcuT4XySij+ZjRfbyU7k6O+fYEb61gzmDUvvAKH0HYnfkDa\nk8piVHd5iLfv/6C4gUE4itnGR5jTNfx0elunN53Zu5Y2vYQ0coIsX7WtwKv/\ndn8huwf6fr3XZQ46yXvAoqa63f6ao6GbtPagWTuiLEsARchRqIC1IQESw/j2\nwFqFONTqVPVajtF0Dg9JtN6ZaXX8vAAbUxalXmB3mkX0cdoOrWb9hMHDLlSN\nEhakUqksZwu8Pw1aFTZ/YMWXtHnHJlGZNOedalGNhxQuKnVCSIMFVnD4LTFt\nZzGncQYSRSiz9bHyp0PL5/GoDaIViwOQUuoiUpIPSZAYWCG4A5jRMWUSVmyu\n78DKukWEq0EbxHg5Mr5qdeKU7CsPr5RUE2Hh0Ep6MliilUCWhKY7YRrMbiCy\nPBujQYGWGnlnCzg41tk4hxnQIsoj5iH/FHROrDeXPZNDxEWgF0l7V1xnXTyo\nW+Yf\r\n=nXCs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"ef590dab38a1b695f638a61138bd243251f93d4e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T09:40:45.421Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.1","@balena/jellyfish-logger":"4.0.3","@balena/jellyfish-metrics":"^1.0.443"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.141-renovate-internal-patch-ef590dab38a1b695f638a61138bd243251f93d4e_1639820634456_0.6101716837615347","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.141":{"name":"@balena/jellyfish-sync","version":"6.1.141","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.141","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5092587ed9fd5cc69f5908b5ef5a3ebfe394f8af","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.141.tgz","fileCount":25,"integrity":"sha512-5jI7DejOn9uWGFydIy39xOEiQikuI9H1wHv0Hhzzvd6sX0JxVzpnLDcJ2jBzJxK7Rl0JLD04joFYMBXYWg6sXg==","signatures":[{"sig":"MEYCIQCjK4oGRH8BJtu6gjJ2aUR/016zAEvomJ5NKrvEwHDmewIhAKHFhP4CAhRf/kwKT77z4DVVw6xJ2KlAMbIAntjYLp6x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhva5NCRA9TVsSAnZWagAAZ1oP/A0aJdDs5gdxgbV/8uZS\nWGR//7vq/iCL5mEJHlepQPFXbbvX9JP4qLzmW6K6o2bCHYqDtgxVAhZCeNzR\npS5eaQI3uECgl+RxL/5ulf6rgpJadAgn+XkBKKQ+bJMJJiwFjbjlAtW7K3b7\n/DkCgSRIdiJSFdZA932UILvfsilJuJkyaTukIMhua+secLdkPGydf0uoqc/o\nbYGKIgLBT34s+O93/jUaBvk68OpeMa0DWN2EuSK6hgsdYrO2c+KkpaYl66N2\nhYYo7j8+dR7r3k9gR6ByKmEMR/YWqKM78NRT8g9v2N4ITcRCFb5Q387912W+\nxy95+b3fCmlC/6CHaiN1yX5LlhbYEP2hkdS0Jiqret9ynY93WRZZOGaYYR2f\na3Nkw/ro4zJKjrkQoJp/ByJMTiBz8e7ILmCpiswFM3IUcnT8SjAi3I+gDBM2\nZBcePTUCmgNVyEMsvDZR8qSSY+g2WrN98MPzFSKxoegDju+YC0ot5DAgm91Y\n91ASpYvgZA//bfNPIPJnNneLvSWdSKGBzcvaQVvlEtSX9WcZTaH9erJ/S4Dx\nK+DjYJteCccvMH3ZsvmCH2rn2zkBShYE6TV3nJe7v3kglnt4ITo4uWFDOIOe\nCJl/6MWC7eUTrvCbDbUwM7MCxWJsh50WTUg+UMCaa6EdTZwzgIDEN8fTWB3C\n/U4c\r\n=eOC6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"98774366d0ff09840ba1615277dace5060003355","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T09:45:55.642Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.1","@balena/jellyfish-logger":"4.0.3","@balena/jellyfish-metrics":"^1.0.443"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.141_1639820877282_0.013679359233186972","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.142-renovate-internal-patch-033fc65845fe4eb6fc356f88589865a780942661":{"name":"@balena/jellyfish-sync","version":"6.1.142-renovate-internal-patch-033fc65845fe4eb6fc356f88589865a780942661","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.142-renovate-internal-patch-033fc65845fe4eb6fc356f88589865a780942661","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a965aeb215e63de79a94abd5565f24aec9436885","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.142-renovate-internal-patch-033fc65845fe4eb6fc356f88589865a780942661.tgz","fileCount":25,"integrity":"sha512-x9XC/tayAXuZzU3XVq1VH+5eiTmtqpy3N5AqyvpWwR0rjI8+9gfZIUnXnv3fuSgnX3hmwt64ktfpGJ4Vc88C9g==","signatures":[{"sig":"MEUCIHA96OrHLcvAfmTbgSJT9doKxBQpbHUZxPn6rk7+vmnJAiEAs2/SF3LlvN17uudlXWrJ4TJkyB/pj6Sh1DN8VQX4q88=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217422,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvgGvCRA9TVsSAnZWagAAMKIP/0NVtyf4KvM0DCl/ufge\ncc/MrAVohfAVW4dfMh5zkbf75+YfqtjsRU8wt2FLSRwnSphbo3db5kXAJSIH\nkJpYRIFQAQr6OwCvN1ihDGYhh+yI/SaHCJAR+JcAe5u8ylm+XCNruhUuk6pC\nR26YtXFuEB5n08RH1VHgc3Qq8W3At9q2C7uw3CmQecl+2HizjqZG5fv5YgQ1\nPtWJ1Cpb6CT20PETY6uf9CmHSFopwci5xTWqClNdGNrgiRorOyV/0CDJm/G/\nzWnwJi8SAoFUG9RuosNyUQ9WbLmWDAA7c8EpiX32WyaqnS5oMsdgGRBWKIDC\n88S+MSiuQErkqFYCFzN3Es1wk9roU5c50170I3bwVOPaDYA1P6kVdlXYfCgO\nGjF3Xf97lVLDwu392t+mP5GE2tVpHH2+agdapIeHsOXXmPdWq8mdRShNfg/7\n7qyG+smxwwKFzAYFO61vmqtmbj0oJHvCgjSarbGgmhG2esV0TCMQkVWClQmI\nOFHFfbg1jvZyCNkIjRD80v627ZrNlWPOqpAJrTZSzYK9cTFFxlOnFFOw0T64\nkkjKaSH3kHmr1nCDxIIJUvt9KuXhLDMqZJXqEWpNS1V7xKqhT5lDI0phfZiE\nGWvhUzjN3JTmDESfbCdoEgaPHZzxlbqJtVX18DcaL44R/JdbDL4DQ3Qhi4kN\ngPQt\r\n=2sLv\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"033fc65845fe4eb6fc356f88589865a780942661","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T15:41:00.596Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.142-renovate-internal-patch-033fc65845fe4eb6fc356f88589865a780942661_1639842222980_0.23417933522093293","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.142":{"name":"@balena/jellyfish-sync","version":"6.1.142","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.142","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"71605d7b432276c673b5158f3b139a49b5fb4b89","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.142.tgz","fileCount":25,"integrity":"sha512-qej4M9tFXxTSaOwIMDoaLN2oZJI0olcPCCq8mEpK81ZcKWRqh2ewIiuidOuil4TBKin1HzJO+Ynvd+j+6cPcIw==","signatures":[{"sig":"MEUCIGYQbl95Di1nQAc8Ll/sICHTO2cyJPiNAwamqGgeufQ6AiEA1NBgsvQDwEqoQiT38l6HiAABum8gKfKaaSV+k8djpRo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217357,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvgJxCRA9TVsSAnZWagAADjoP/3yaFqVlieQXKff38ZxC\nUfJ7XMNAEtRCff3j7nAlcZsOxcYzT2qMF/2V9UvnjOTdtadN6/YiyvOaydlW\nDA6/Be2ULqgdBrt7pB4B+YRgy6FGeLLHXGKQFLMzIOW6BA+i8I/Ircu+C8oJ\nO8p9Kaxp8J71Z0+ixcyQhi9+l3LaZaaIiHZSgehmCrHSKBbxZixhWJ6CPrch\nAXHvbOdwWkbhN3OlGWNiS1a2zHaA9g1xc6agu4GpfdG1pen9uAZe+EXFUYVq\nZ7D1zyabwWwR2OFL+232A7XrBA/j5CytlKPAMrChPC8jYaM+/boM08PsnI9X\nv8aZ/AChk1/7lkZ44Hqvo9cLRFq0UJLabJGFjTkZruXgfvXYZTeCtHzPbA4A\n80hyO0SrJRypATlSAQSQuD/XGMB5IZ6KydWhxDZvEv0vdVZ1/+X0JOf9cRla\ns1i8PIw4WWkjIZajEUXpiv4YqU155yqYRE0KhNOUrhiucMMhAjTPdxXXArJz\nZCcaM0MIWNqPMTyPHxx0WKFbsf42avs1MxEyR86USFmUb5+2l0vFAdrVoaO1\ncoeBno2sNAvR0R1uwhBlY5qTUwtXIwpAZ4sAUzJYyCwp+Nn9d3i75TbnTEF6\nZldooK6iwgo/6nZQ2GNfM4Hie0IrupotZBkIoO7QY8bauwKR1Ga3fGWNxb3y\nXmHZ\r\n=M2aF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"430d38db665f9ad0b6fe64b8da0b573259b332b3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T15:44:44.615Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.2","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.142_1639842416727_0.5426822160550091","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.143-renovate-external-non-major-c0d07ead69ba568c5c62dfb5320b76564087c2ef":{"name":"@balena/jellyfish-sync","version":"6.1.143-renovate-external-non-major-c0d07ead69ba568c5c62dfb5320b76564087c2ef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.143-renovate-external-non-major-c0d07ead69ba568c5c62dfb5320b76564087c2ef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d6dcf1112d3811442759f35a3b1bc478d98207fc","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.143-renovate-external-non-major-c0d07ead69ba568c5c62dfb5320b76564087c2ef.tgz","fileCount":25,"integrity":"sha512-KczZFGNKm2sXbEeVebQhiemwC/ctDMFx7R0x88MfhUyGwvxyv7qOzdjIKJFxVujU53ieV3acumCCpJFXJKC+hg==","signatures":[{"sig":"MEYCIQDH/X+qVv25Ni/xkZt7X16/OcSI3U087cC5WrVBklUNpQIhAJNFtF8J8/GRHatRb6ZLAbyFTuAXGoDQmtuKQKQQqYZ0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217517,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvgN1CRA9TVsSAnZWagAAG8AP/2Vr0AOyULK0V1of/oEl\n5HVWm+Asw/xKDqiHtw6LmXUo9y1qRxN/uy5CLfYlw6u5ZJ+ECtSJCGF8bT4b\n4IiX1t/f3FsP42Jgs7XRxrdKscklZJAiGdqfRvHiWh42VxVa8UEmKEJUKodK\nbxQtic9MEjC0pByB51cZF0cC0WrzAppwh24tOkR58GklDDUGUPvFJkDCWbtk\nEGrTOcqtzPBWxtz5igm+PAldXi+EPnpPv2otTVs9Mgv4nrz6nC3rO+r3pyFu\neNeHoS/n3/y/PMVFvBe/8kTtTx4Jzlt6cBtbFbqZFz/NPloY/T8U+zojZt6V\nMU0kQaCGjPuPy1STvEEHCnQziiEaaYU75kmV+ODpH16eKkHTGi8aUgW3Rr6X\nvkAyheUiiQ0MliiFR55T9taTl0DSph5J1snmc1IVT9gLoUcoKnanXoYl5yO+\nZ+8FKkCLHt1veTAJp2MdK7spD3EO+mzSbzUt2H460/nwgSQ9FJsDKLcif7fG\neXauNyoONetyjKHu0004S5Z5PscViGiGyVPPoc0Evfi3hEeA8l2HZ8deCaFf\nmxw3BBuY3bfHiyKjh/EqYDHgoT190g7cUNHRdhZE6uP/MjcW+7wN8BtIi83M\ntneSfw4gG2lhl9skSXyOkGQwDKBfk5fEX8pXT/g4hCCPZR88ZF4UQ1AwGwVu\nQ9iC\r\n=EaIf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c0d07ead69ba568c5c62dfb5320b76564087c2ef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T15:48:05.697Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.143-renovate-external-non-major-c0d07ead69ba568c5c62dfb5320b76564087c2ef_1639842677807_0.40188347314411277","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.143":{"name":"@balena/jellyfish-sync","version":"6.1.143","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.143","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"797db4e7b084d449b3dc343ed9cf3a1bb89d1bc5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.143.tgz","fileCount":25,"integrity":"sha512-WeZhXMfQMGzgpGsE5nDnX49JKUqSVIJiXldFZWkLLlmcCrvQ3Fh4sHyhzvLBO8At8sLHLbIfI6S0wb0Pe6TJcw==","signatures":[{"sig":"MEUCIBywmNEn1qg7VWwUdZ61y4wgCfEq/6UnrVLZjcYY8fj0AiEAyZqUN8d9KYCn9fgNzZ5WtdkNZlWjhO43crpKz+TBa4c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvgSWCRA9TVsSAnZWagAA9dsQAKOceiW/K8wBAYK0ccy6\nFwApAF1q5/Y6krKaaCj9NrqDiJ/fO37pvr0S5tiuibhJVx2Bkvf6SmhhUxBx\nwaA20zKbpU+9vpYKGtB7YyTXFe8m2RgMriKewL7hoTSgGlPoGbWyuLvwjHdX\nPBhe6mi5E692NNJbxJkJtGCedvxssV4zvqkoxf4HvDeBNm59Pibr9FfNVBwA\nhcZq/2+FNbhwJMlSx8Fa3mtJn3rSNcSkuiicnGcVt16RvKuoTlPfKWxL/hPf\ndpe93BTVmpz/FytLkypSMiQYMOdDqq2CLomk0Ib333MhPncTd/jfGPA+OXnn\n/9uuzkWPjyw137rGDzwgq2isuWTgoUBTzvFdhOnspHYFU5ddWN/IruHeL3qB\nVp4mzbHTO0ZsgLP4jydI0io0wXsHTzvbG5ewT66GBmefT2clhZiw/N7DgxGP\nk5d20rk+/nxZQGOSR8pXHreCRxjUyATORa+9dKPiy+D8oJuNPYu1ynLt+Ha7\n/dWNewDdtVt+h/3tCpFQDnxA4qVXUFEAeBM8d/rxRaEacVr1ctDwhMaDXtMK\n/8QlCxqYIZcg49RyRqZMgL8szvvcPavsY6wMVi1zNMTCftnCB79YpR3yz8TB\nCzZeo7iK11i9YrcjeKacyRY1K1ZNHcGIFNr2dhhhn9R1tmnV44g66/kry5PF\nF16O\r\n=AUuK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a183d6a285b475686e26623dc7bdf0f386ad6f24","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-18T15:53:18.687Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.41","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.143_1639842966203_0.6368611132697721","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.144-renovate-internal-patch-5df09f995eabc2a0ade89ee21acfea0224a3d1b3":{"name":"@balena/jellyfish-sync","version":"6.1.144-renovate-internal-patch-5df09f995eabc2a0ade89ee21acfea0224a3d1b3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.144-renovate-internal-patch-5df09f995eabc2a0ade89ee21acfea0224a3d1b3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"523a447acf9747cb4e7ddfa2f0ccb9e990b23f5f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.144-renovate-internal-patch-5df09f995eabc2a0ade89ee21acfea0224a3d1b3.tgz","fileCount":25,"integrity":"sha512-1FqHVX0AfZtmKOvkENL6kSygLVwCVQ5NXIodGRtHxooN6A47/3FF4GQTNoY9PEC8jAyWNi7iFHdliWlkKKFxvA==","signatures":[{"sig":"MEQCIARl6F3/9XUUB/FNfNceGQjekbOxsb4GqVnvhJsjXVrQAiARRb3mlmra3uutm1OjqI/epas7BIm8sYvFAXM7kcbEwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvp+LCRA9TVsSAnZWagAAQTMP/A4JpzUmV1vZ9Vx9PRAS\nfPtwIz+4uF90uiqqDdTjME0GkKLGuBWgaO41ja0DPh7LL6wFoRFRoDMWJpzZ\nW638Qq0k7XJH+RRzzxvYZyRQZD1iU8jYHst7+chVteEWa+rAAVOa2jWXs+We\nDk5AXsOcFleDceOklZzP+xDnzRhjiXkOqi4+fT2DebrKFHhiR3195WY/R/o9\ngwtnpIwOjiHJh0dkqN/X34mBebmISam8LU7JMPLRYjIEj23ufBRoQj5/fZMw\nVPDGWwWJg0eYkcbh0o2u61lFIjdSdzkwnxEoUgF+cZqVL4D8bYtkLII9rLkg\njmYJuPUd4hUrEBt2XaNHeo+deJ/PQpT3pHmpNS/ViRujyoTFUCsONauFX7jh\nyyZc3OPCq2foi7MdJ9g75bOOjYY+6gV6zV5QsXzmXiL53XmT1GNLqOED/8do\nKVGIaR7ufQzb7a7urFaDnd748U/kEeWKR1N+LRAK3xoCEJ8Dy0+YtwL0S0jl\n6B4PWYjnXPiGYuZoWrKC/bbH1kfnw16WYrYVWpe9b828gdscO5frqh6kOab8\n4UBxfUO5SGNkqgTjc6y+DCetvB3kIt2BKOAl16aiizmUwW5I/TDDSBZIJsKQ\nby892oip9iOB8hoX6CiGwkDao++EQNq9Q2kdX62ogpX5Rs/GXd/0MgwuNECS\nqhmD\r\n=CIEU\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5df09f995eabc2a0ade89ee21acfea0224a3d1b3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-19T02:54:25.960Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.42","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.144-renovate-internal-patch-5df09f995eabc2a0ade89ee21acfea0224a3d1b3_1639882635091_0.171746285296265","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.144":{"name":"@balena/jellyfish-sync","version":"6.1.144","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.144","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"454d4d0fd5376a015ec89ff7c81de41d7965ace8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.144.tgz","fileCount":25,"integrity":"sha512-JeZJWS02uIWqN/u1NmR6G7RbGMrjyJGXCtR8br0ysc6pYX27Qg7q9UeSL7gVXnyaVmPqZi3KBqD+YRhmbC72Tw==","signatures":[{"sig":"MEUCIQC5cpfwDf5zCrdwcOs1z+iC/DmXXJfDd0WaBpE//GcIWgIgf9+s20VMOJJPhtA9GZYZKCk8fLfukk2tk+jRhPD8rzY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217551,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvqBLCRA9TVsSAnZWagAAQVwQAJ0W2T0Qu0/ijTZTgKc8\n7FYKuAzkIhN1PF4t71UUAeHAQJ6ngYXaDfIIfOIEa0GJz1ftzY4BOvJmRS7p\nyMPAjvkYceXuNgWdnUjvawsbwua54apwv21A7Skxz1VUheSI2x1brTrOVtGY\n3Qkq8QOo5vC1kCY2+3OKTg3sCZlR24MyqVwnI5aNkl0jDWKTrMBi+5sBT9K1\nwpHIv0ODsWstbzF61zCMho47W1bXnRWVfMyGWInZLD8FTMnqpDJ4pKrHCX1Z\nx8szpUV0+XeCEYfoSlSS7CW9sssmEwp1LNFYTl7BM4vilBIflYczqF1iWE/K\na3DRXsNN0Cw6dUjdeZwaA745yedpwk0J4PH7uRxuq3jOje4TmVz40IqUfqXW\nibhEOgGdUL7llIfFi4jxOfUpKThyC9ztxO+98xQ2Bv8Jfcq3okKANO4aV1ES\nyYlUaofeBvaPhRwtjFe3SaQm28ALMk9xp/nL0GEDpvawlpKRHahh2JlGKi5b\nazIJuzCajALAE344dM52D5ny1Ym+hrBpWbqsMpk6s2rwzAyGlvZbNSgnnLyA\n/4ZjtfCbzo6qKk1TUFYbPxAksVKKSDf3XGyvOib12W9nf60aPHEh6CMM3o+m\n1rt/bukOie7bHxy9qNl7tz0wzrryOo+ISEB/40xDgF3xpcpgvcfYTkz5YsLl\nykpd\r\n=qdwO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0a31ac4cb7c0ecb56ef2e90c5a265ad21fc93dd1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-19T02:58:21.424Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.42","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.144_1639882827449_0.6478070614702527","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.145-renovate-balena-jellyfish-types-2-x-f17dc7233d8102b19b50590dfbfd693df5b0284b":{"name":"@balena/jellyfish-sync","version":"6.1.145-renovate-balena-jellyfish-types-2-x-f17dc7233d8102b19b50590dfbfd693df5b0284b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.145-renovate-balena-jellyfish-types-2-x-f17dc7233d8102b19b50590dfbfd693df5b0284b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c864032d178fcef3d8cc8c30d7b816d171a3f65e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.145-renovate-balena-jellyfish-types-2-x-f17dc7233d8102b19b50590dfbfd693df5b0284b.tgz","fileCount":25,"integrity":"sha512-P++0yafGADENoJEcgy+bSneuB9BobN+9yN4e/Dxudd6GLezyCyagHbQ2O4zMbDfqta04BygyVh4pJJ3w5rCNrw==","signatures":[{"sig":"MEUCIB5dZ1V2qoMTlgClTHd2gh6s9Ar46K2AVCvpCsuLb2kPAiEA8FARDmojGk1TeiwsSextJA9vfUnKUpj/2N6NiGtr26A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwbpGCRA9TVsSAnZWagAAgAcP/jp/vSgRRqoWCCx9j2v6\n5CjAZgmLSUw+FElfajW/+Fer0Ar9b9UJzH7rlG5gOBE4GLw9n+xKCMP6PeX9\nnbTKhugXCcOTShw02x1e3EYS+h29Uj/1CucNHlfuvGNQOezqCAzZnRmIAS1k\nhYGyvKxEjFtZvhexhsfMg5vM+eyjL+EQ9/utXnPDLP5c7c7LoMknWD4gM3z+\nmrkf1I6tqH0W0djRoCcvqF/cq1P2bQnwEckGgA1/DQr8hyPaiiYiZpXPilF2\nveTLf32cWY4uFOnStbP1ts9gzpLGZOw4iMQPaCpf7tM+/OLEq6S3bqcDjYPt\ndqsttTxfDYIt5k0tnRJf9QfOPx6cd9AdTmp/F6VKVyoVe3srelKAQzdOB6VD\nJZByOz3xurR5wQ4eEoXUzQMidmn2vLWt0LY+oeoBtqvW2+8P41RcpIY6VyE3\nqqI588dJjMEIpBd+RRybtjjEvSdXKElMl/OsRrU90cnmu8MEpnxCbonXvgrL\nNBvyj+Sf9qLsCwc+e2ZJ6G7Yj6JvXLyGXOD0SMQDZdyzS/OmJmoOIuH2pz15\nPDiPtAEU6xcd8XBPddhTRbC6m5eCOmg4OfEM6ytcWvpnGUCPD/s54JuhxqIa\nKCYPI7iqdI9BfDdaDywiuJ6GKVYaL1O96h7tA5VfqJ3zNXFAxGH5rZ+Sr8Cz\nvzjr\r\n=v9Qp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f17dc7233d8102b19b50590dfbfd693df5b0284b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-21T11:23:47.139Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.145-renovate-balena-jellyfish-types-2-x-f17dc7233d8102b19b50590dfbfd693df5b0284b_1640086086528_0.773234823333139","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.1.145-card-to-contract-1684aa31c056e9bf7f1779e47a0f96f481ddffbc":{"name":"@balena/jellyfish-sync","version":"6.1.145-card-to-contract-1684aa31c056e9bf7f1779e47a0f96f481ddffbc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.1.145-card-to-contract-1684aa31c056e9bf7f1779e47a0f96f481ddffbc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c194a5ee4fa6c724e98d242d527350a35b81311e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.1.145-card-to-contract-1684aa31c056e9bf7f1779e47a0f96f481ddffbc.tgz","fileCount":25,"integrity":"sha512-xDrxBlUxaGmFbnLSSqnDyYM0uiigKdZ9CiGEpGzD/O03JPOQwF8md6eyU8iC2hmcOF3aIjLuFKcYfZThx2o0fg==","signatures":[{"sig":"MEUCIDFnqgSmmOB82g2FzBVl+N5P1cRGWyVgKQQLW+TNISWbAiEArcQLXtKiH764rGQEY8b0AI8hmz7cKAGbISpGgURBsv4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218410,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwhn/CRA9TVsSAnZWagAArUAQAJSlJPlqvczwucKkI1CF\nP2MpKu8J4p87mGpB7w9oCW6FyCeYm0tSEi7YUZt9/zCd2A1h6i4u2Vd3PEk2\nxuo0PCdyjq7pRCqYy8Qh1+2HS1a4LnHF+MVHgyC+PFVIo6R2BPK5vxB2J+Xg\nnCEMIoaoBrtdxRSrrqEhWCqx3f4QLP1L77aoD7q8td3lHjIJrhvGT/O/zegF\nmBjI5Sh4ULIIYVqAVJtlJy9lDg0sUCd64b44KtFbRXxdOya9iOFJ2qlm8PqB\nhHRzIrbmCfXAyzA3s1vKeaAQkMVzxl3/LMHXLcLsvvgKb3EXFYAo7RdCzcZT\nJ2GQ5srvysUbGmCH5diMK9Zi9/R+8jSjU2OkK1/h0LtBys8icR6fYIVjq+gQ\n3p5lt9uNNlsEU2zCuviTO2zTN42BpNVD1avZg10zmttGsVGGIOzBb21X/4Dj\nGYMrQ+Y1lfGoNTJwiRZchYwSaLNwIFGMvrcVEaNj3C2TJuOG8c0Uej197947\n/4aTxrtkwnN7nX2sI5rL4U9ctBKEYKqAf+aDTrx8bPQ21xhoZMgGFxU1KZzE\nbrmaYQkG3JAcVaLOZhEf8QAsOuMpEQ4K0XpzEbjInSNDENNbVv2Cte7mlV0k\nao8xp+vgjMbSX+MQyxnAKysyZO3nKhSL6cEF2MRi8mo2RfojKHBV/MUNVzD5\nrtZy\r\n=hh8z\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1684aa31c056e9bf7f1779e47a0f96f481ddffbc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-21T18:13:13.496Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.42","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.1.145-card-to-contract-1684aa31c056e9bf7f1779e47a0f96f481ddffbc_1640110590734_0.5402539879452206","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.0-expose-type-c5c14a7751e4eb5f0bf731bae712036d5f628c57":{"name":"@balena/jellyfish-sync","version":"6.2.0-expose-type-c5c14a7751e4eb5f0bf731bae712036d5f628c57","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.0-expose-type-c5c14a7751e4eb5f0bf731bae712036d5f628c57","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9a7d2c2cdbe80a8abc9ee24eea909822523ffd74","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.0-expose-type-c5c14a7751e4eb5f0bf731bae712036d5f628c57.tgz","fileCount":25,"integrity":"sha512-7K+DJcMc+1XAXbOjtKnYd4MMD4jFWE7H9NMVCJqu7C4AmimAn/RVelLIk0H2T2GJmF91J2Y0DSA1+zXdkizvbQ==","signatures":[{"sig":"MEQCIDFW+L57/E2Ein9gAMIBzCUpH9RGADiz5U9JvK5FGlWzAiAPGbaYubojKjIX9WJ713H2II5dNHQm5UdCjBU9Iotmrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhw5nlCRA9TVsSAnZWagAAj60P/R857p7r806pHz7WFbUI\nTEFOAbXPyAETD7K5V1svuEvXvk+sQP+JNRNUqdRE/JBUPFZkG6mdb8DgfAf2\nfLgT4WH0CqHB3A6ymnrcJvWlsP4xQJLXG2z3p7rxLz9PzMBKpIChoSiN/yEA\nLeDiSurU0yCM475uT/F6hiT5joU6p5wXc5+CtIRqKVXCuYDayksdlQaacaDT\ncoQIM32sewFt+PFoMhrkBMrWUPkJ53mNNXZBILM/hxYjROfCYGU7CEt22JAv\nXwq1NiWq5S5xqWJZYMN0Ve5TzVxgYUTrUedLfTO3Oudm0ojNDF2waYothpW5\n34WpmCmBpcOO4/JHqLwkYJYvXtoOUmv0AjHaBqLI8c7oHF/jl3vQJRFbOmIK\nHgbaftsE9K+Ze2GQaZY1fi1aNzIOp5igxlcUbmV8YdxdFI/vElC3Kr2+bR9f\nt20wNDfCI+O3O4a6Ck2yBOG3RZ6HQszDZdPGCOVQfYzcadKAGsXbkElFLG7h\ny9gmtE5VfoXfNJkTf9eFEshnNMfP0QwlMKS06ksc0s4fTbehwTqoRdMh+aCI\nn/yk0Y85HA/zKGpayB0qVrhRaKHDp/dj9L/Y6LahcinotfFtn32yq3mQmZFD\nXJp3VFItCEY2wAEHSZqa2tQXkjOHLBgyliB6hLOaJksln9adUojM3v6MYVUr\n8ncv\r\n=8YRw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c5c14a7751e4eb5f0bf731bae712036d5f628c57","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-22T21:31:27.397Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.42","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.0-expose-type-c5c14a7751e4eb5f0bf731bae712036d5f628c57_1640208868926_0.20620865862888627","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.0":{"name":"@balena/jellyfish-sync","version":"6.2.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"51df2e73d448519998f9cc8f8f316f5b47b640a4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.0.tgz","fileCount":25,"integrity":"sha512-qz2xVctv1lOvzEHDyCQhVl3AoFkBLXSMGOh2xAWESGEeqZJyvMA24c4ZSMHyeaVc0sCsC1J/vIwbIflgJvLlDg==","signatures":[{"sig":"MEQCICkC1Mc6XEaWfRmwRzvWleJyacXOQGpo+G+cPWPiZch6AiBBN4Ai+RvTHC/kntwZ72OAaf68N7d3Xy9JwrUTL7L2vg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhw5rXCRA9TVsSAnZWagAAowgP/RWVhCs/keabM8Wn6kjB\n9FtqbomOvxJViJWhwigoHjUNxpUSPuFzhbR2wEgISiiZIIHL5QoWg+PRw46z\n+4EHuJFn11nj1Fz3XH23BCeXbAIpDRUpaBNPZt+Y9Or4oy815pLmrYKfJNro\nkKvSRfEnWNLl5MGLKO2sATZnSiCfGFHcTjkxQqDGOR3yz5Ptry0spdBNZja/\nrWdJFwzlPjYAMSrmkkZnbusCfpqc2lGwza2uAUAeM5OUYdHqhykSlCj42Nis\ntVKKvhLXXDngLkb55LgpNxaXAGQIM+kTfQFttL8a+koXjklJx3D6KVzHJB6x\n01JgPoWgCY4zT+zHtymFT1HYyWDzIp62cOFNlkqTpmtJETuHk6iJlEzqitDJ\nzt0vwW2NeMzZW9vcRwHZbMBsBRlnP2iPRMwQ5miq3Bd5zBo1qM/c/tFMeCdI\n2+Gnme+EX3WS9zjWOD+ea/D0XeVUYeKyjtzOLhYvCCdCqVWABza1h8+r66Vh\njMBULiC6DWwh+iS7FQVia31CD7E8g0+zoz3jk8yv1ucgiAqqc0R0QInvI5Tv\nvGvxteCuyMCT9Qe5Rg+SfQKtVl9hcr5dKwqS/xlX8PAZQMus2CqcuJwETDFS\nUvKoi8fI2hwvZOx2/uOmjl4IufERL/dukCqEZlWhani7Nd527SmCdN7o596d\nmpV2\r\n=SZdC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a93b85f5a30b7494ecac680d078c04cccbb3a951","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-22T21:36:19.816Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^1.2.42","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.0_1640209110853_0.24747545184535213","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.1-renovate-balena-jellyfish-types-2-x-fb432ff5c5bc91d7e0c4250f216b9882879d1eba":{"name":"@balena/jellyfish-sync","version":"6.2.1-renovate-balena-jellyfish-types-2-x-fb432ff5c5bc91d7e0c4250f216b9882879d1eba","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.1-renovate-balena-jellyfish-types-2-x-fb432ff5c5bc91d7e0c4250f216b9882879d1eba","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1ffebf58f8bf031ee76722a36f241955829a1302","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.1-renovate-balena-jellyfish-types-2-x-fb432ff5c5bc91d7e0c4250f216b9882879d1eba.tgz","fileCount":25,"integrity":"sha512-gbasl3wu8UcXZWAVjyV2OSe/oPFzK+nSXqjo7R5A7v/djX2NCUnLlanpRrGQetvQlt++MWwp3W5cjYzwhTtNZg==","signatures":[{"sig":"MEYCIQC20lhvutbNpWVMxVIOcmcfL0E63dK3I494dpC+sLg1PQIhAJU1CKabWZo43XCYUIWHxFU+TmSkHQ4UBOZpKu4aiuxc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhw5vVCRA9TVsSAnZWagAAddwP/RGO+eo4ah8kh76inqAh\ny2JFEbKMQfWMO9o9QoOlH7e9VD6g72wGAsEI4X3LS82HiAii+TgSn38b1aEb\nED1ZRACuGAJsk6DNg1dH5844jpGcs50QDZkMQ9Xt3g/H95TN3kT31ibuYDGj\nfAjYOQqizSQurhfbsRjoiVO9hYw18vU/b5Af/FXI2YIqe8Ga7TXLX6cjMPma\nhBte8+KX/789IrAc5AeHv1fSIErBEuVVOeO1IV2/fhr03iu+rGDOtlfK1s0s\nLkc7iQGMNvUpBTRdPQ+HFOH8VVzd/jVx8Rht75oVnjuCuW75fKOOrzD5sQWi\nTS/yh6NQkZW23LxhL4Lv7+K8g7pdfqJpuOltDjJw1ZeG3b3QAQRrvrt9GGOI\njBQpEIgprH4gEYXO/3y9OL7x1Y1+CZp+J6ODLclUU3H4dbBdnhymZeddKsKK\nI1UvZ6e8xVRdPUzs4R+YQaMcbPjpSw6TrrsOdubQwbacq4/z8gKD2S2vNrc+\n3s+adIyUl0PYL7hjt0SjggNbQHsUnQqVVSImHVoRAeoOBQBEUB97RRoZ1jfQ\nddQ9MAhyrR2nJhwxaskcfyDZVL7kmVBjSOol/NhMTrQbH38kGNQy5BCVPx/c\nJX+gHVTz8Zg0pUU3Ms/iM8l4lGNVcgukbUPgynCiYbxxWfAXujD7Io5uphkK\njJqN\r\n=T9HB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"fb432ff5c5bc91d7e0c4250f216b9882879d1eba","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-22T21:39:37.049Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.1-renovate-balena-jellyfish-types-2-x-fb432ff5c5bc91d7e0c4250f216b9882879d1eba_1640209365161_0.7959218709733007","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.1":{"name":"@balena/jellyfish-sync","version":"6.2.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"29dc45ccf6b45f7800261be0a06255a1828eb5b0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.1.tgz","fileCount":25,"integrity":"sha512-U9RcacvGySF5ggfiUp8MNDoNcYpqHsU0J8WPz+55V8aKAGYybiu7SCLND0ZSvpyrfDdKlIUz0d9QQhNoHzkNPQ==","signatures":[{"sig":"MEYCIQDnkElAafDnrdn0mDndNFjGI031a5Zu9qthBtMjOFC86AIhAJE0XDYUUZN94fD1Fk3uyeUVVWQk5wD5fSI1UU5rOpDQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxSoHCRA9TVsSAnZWagAA/PIP/ix5aqoW9SfWdIozPv+A\nwoxdmyu+5w5LXFsyciw9niZyxSkog/fbl3YEAMnF9ZwbQbESHsCNM7RBf+v8\nC19ajl79KbFbeV5oqW/835tQx4eA5OPikKol+JzBIYVeAD3zvk3uBQAcNfZ0\nf38f+tKLrWTymjslTGoYUMQ2sRVKdYK71PNuYmoBsB13g4HdnbypfkdG26Q0\nHC6p2ahpDoGNBe7lwBhEcxX5+Xy24zr/5fR4HxbDILGq4c6ZFpke3FuU9ljf\nNheRV02/3CEPjp9R9a/RmdiNjXVSOoTg6VkN/mcb8u9/JpY54IBuYHjJHrrH\nPYuRA5MF4XwS+jVAO4BqaFLSGUuXdt/E4hwAVfZwiq0TU7iq9L+5xBUB6XOp\nx60KbN44FJuDUw5epVNFkhZ7JqypDIuJRq4oUjDZRTkokdQHRgwlm2AMoaB/\n/JkpWz0sGknZIot/yEWo26sjGxhYlzw6U5FMX0TQDQMx+YSMMaUtC7WbY5b3\nviUq4lpMcfswz7hUgtw4MImAEZhd8C/lOEMtcCaJlemuzER+xONAsEIHtaZ4\nyKKjYD4Q+/BExevWDozrFKw6MFNpBUCUEks4jKxLBWtuDWtsbscz/nqW5dzA\nG0wtNLzDG62g7yfqlM0LyeLTP5bdtHyWBxyFdByGM74HlFhSWMdH8EzjhDd8\nhQE7\r\n=Untu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8e311c535e8b4969a7f909e27b233bdf2c829daa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-24T01:59:46.081Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.1_1640311303653_0.1961880500317621","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.2-renovate-balena-jellyfish-metrics-2-x-51d92ef71fc4e2921cd9cea322e6301812bc9182":{"name":"@balena/jellyfish-sync","version":"6.2.2-renovate-balena-jellyfish-metrics-2-x-51d92ef71fc4e2921cd9cea322e6301812bc9182","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.2-renovate-balena-jellyfish-metrics-2-x-51d92ef71fc4e2921cd9cea322e6301812bc9182","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"bab3720d0402cad1915a570bdc332cc100bb96b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.2-renovate-balena-jellyfish-metrics-2-x-51d92ef71fc4e2921cd9cea322e6301812bc9182.tgz","fileCount":25,"integrity":"sha512-M5EgidSyneC0cKzWm1JBGNvKYCi5yaGB/wIwc6v8ndzzIK1+vbglZvwuAp+iRuGKa8uXpggvXuZElHa78oeZhQ==","signatures":[{"sig":"MEQCICiG917CcOc5EliDuimvCnj13WDiKZv64GJYsT2wSwbLAiAzOZqp4cxfNS26DDA7o6Mh2jeznZamMLMPLYMxKzOyPg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxUYXCRA9TVsSAnZWagAA5gwQAIi8fXMkv1MSs9ZTapul\nHVW1SPZOycYtHrNzWHLxipJmhbBFyU7JeCoYxaN3MA8NkKgY7ROreGp/JFjn\nohTaJw9RQj7LstRQkIPeuWQ1vTm4mO6f6Uufs+AWBnWK9Nqr49CnG/GfAN9Z\nTTIzWf5ZokRM0wMaM/zVFikKtOJANwfaTdJONAaqCz5xvEj3eKfmX8Cymg36\n4QzcBNExRiNDxfK2VQYdtY4K9pLLZOZA1iAMYB2gEaW5r0Q1Rb41Xi5cGTLN\nmSf+LTUONpljUAllndYN9Vf5ZIdrW6ru8mwx3+cWDk9dW2duXqQONGRICRdF\nf5xJWhRJ9R3M0rBmyXITygK0VrP5Tl6dYrEpalpssABAS95F1k0H/D/++1BK\nSl2aJPpL61y0gCgP3CsZAvkNheetCFfbrkWQSDZgQEzf7/1vQn3Gtdos4Ky9\nc0c/ZmbtakxYlutv4pDt/Nwf/byjvcuMc0HRm7UZ0wgiZMjWIpfqb3qZ/eAc\noBs6LCvdBTidYJECtxPWme+oaX135K/gGZX5TN/HaW8vIcet+fe889O6q5/6\n++zk1xNqg2/nhNb4GhDucrzBM2rEEsEEtOytS+4R066uAj1nqR5voqyB2S2s\nddUcN0KbqX/WYEAIsOVTODZI8WKOr6iaE75y+b7gJvcA0ruKHmD7vzjedEMc\nBgsD\r\n=7WNb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"51d92ef71fc4e2921cd9cea322e6301812bc9182","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-24T03:58:32.587Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^2.0.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.2-renovate-balena-jellyfish-metrics-2-x-51d92ef71fc4e2921cd9cea322e6301812bc9182_1640318487280_0.0036769332613393324","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"7.0.0-joshbwlng-update-types-d578323d04bdb63858481160b44b2bdb3317104d":{"name":"@balena/jellyfish-sync","version":"7.0.0-joshbwlng-update-types-d578323d04bdb63858481160b44b2bdb3317104d","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@7.0.0-joshbwlng-update-types-d578323d04bdb63858481160b44b2bdb3317104d","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"21adf9f1d9792e510275f9049a8d990f318334de","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-7.0.0-joshbwlng-update-types-d578323d04bdb63858481160b44b2bdb3317104d.tgz","fileCount":25,"integrity":"sha512-iu557xF6NP+BrZv4XEf0pRormZCScb0tDTVMXUKS1JpMXJOwfysljg80Kmo9j7p+w7ckUOX62R8pxHzJ/q0Vxg==","signatures":[{"sig":"MEUCIQCGAGBYRUo2YwLzd+Hr2HBowVkdgcbXjHigUlrXSPI8wAIgUXIPNHrhsW8tWAy8HERq72023gXzbf+4PRkIEYoMPXk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxUqyCRA9TVsSAnZWagAA5r8P/A1uRhGhqb/m/81Nqa6M\nOW0jbvZtE5AwWIU0bhlsPSVgc/RuAVRA0hiIRywk6hhGjz1NAL8aYCEJWjzT\nL8AXxUlNpQ2+lHtTHyLzkOvl37aUstU+4aJq34H39MNNnpY1/di9RKc3o9Sq\nrV2qJGl/JWyd6M7CFeISWAW4HXx/Ccv34WHRJC4enkM/fW/+2XkJbCEz29iQ\nMtIzmWllM5IfvcFXJrKPwhIvQZTigVMj/MUpLxFaWleUK55AlOSUCQST/L4+\nyP0jt2/077dnlK+KGeCfUZCYm2JNKJZohECyFGF4ivh5nOciA7GGOkt6MsgO\nXKIByu7TIQ5OVZ6xG+lWOY9kUKn1GGjU1KX+5Vk4UL//4wrmk6lwRN9omHMl\nuUlMvf7v3vjNa5CsHThtixsuWA67CzzjI9l6fORtmt2p4Cj2tCQYDUaPmPqo\nnDZvZABPOQKuYGUZU+cQ3l00HlKEJD9AKhJjfHbs+X8Xg9aZs8xpsvXOED5W\ntgC0b6nHoU7e+lrzhhQ0v1rOUzsfIfd8xfjDStz1MrWkRU1e+1emmaiWhbxR\n80OR9uDVVUoGTSCc/raU4+9MTxRem3FrppgqGX9VpTBZ7RO1phQyMuDXT0Uk\nZ2i6BLACu6vtxjKTKzZTTfcHarzKtJsPq9SB4ES39EqD+nRSU9XywdMa69bP\nQcih\r\n=ah2M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d578323d04bdb63858481160b44b2bdb3317104d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-24T04:18:01.708Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_7.0.0-joshbwlng-update-types-d578323d04bdb63858481160b44b2bdb3317104d_1640319666080_0.8021330804824078","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"7.0.0-joshbwlng-update-types-5748862425225c014edd2aefe36386a6156ecca4":{"name":"@balena/jellyfish-sync","version":"7.0.0-joshbwlng-update-types-5748862425225c014edd2aefe36386a6156ecca4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@7.0.0-joshbwlng-update-types-5748862425225c014edd2aefe36386a6156ecca4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"79403dc071b10d122470f2186ad5efe49b5e7e26","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-7.0.0-joshbwlng-update-types-5748862425225c014edd2aefe36386a6156ecca4.tgz","fileCount":25,"integrity":"sha512-UyBa9Seu91DdLkQXxwDtmsxkmfjsZjN0O/5u09WZgT9iuoSioV7Fd/HhqCaHywphIJQlL33/xRpqIJ40bJHBdw==","signatures":[{"sig":"MEUCIQCiGC3/UKnMftmc/R1Un+Tei9WPe5wsfdOSdcO4ozsligIgXr6mGaVYMdhUK5zPdkjmnCz6EpDe6qzy0dXDXIJv+2k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217925,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxWXwCRA9TVsSAnZWagAAP7MQAKKqYAllO4Op7n8tIUN9\nizV+xARaoRjtmA/uZJAcENTlYzunPX7cpZfz6nhmavB5A8Bmwmc9X7fNiJP6\nIE/VIq0WJKZjYgFoXJ4KhYJClA8XIJY3jeQl+WFfbxBSTetEkkVlHF7m4EP3\nZz2ogJOGZOGeVAYJefiAQN7IdYO9gyVWvk2pOkdflLN+DrfqmxsiAr2YUtOX\nsA+eFitVozP8tZ2gidKSFVuo7NYkw+vfz0ywYIPRWyL0ie1HTf8TgWcz9Y3Q\nDs2lZchSDsB8IeEpnQkUtxDiWoq3zOrOLrjq1kFcIyOP2hohHHTJgOSBqTpv\nfdtJEQaa3O4sI5ZurYRgZXUXHai/qM3jAaNoM0iWPOGZzC7GXMTWkpo5pGO8\nWgaSjAVOFgfJGXBwHASWpoibtd2PduxPY0FrdnJvCbvdNj1X+E7Yeev1LQql\ntsxMJW5wCqAEa3Ao/w9/XrpF19NKmfWqXHHSEjwVtPABm86pwjqC4LEDGydw\nCZVXTFPU2bLstSpnpa/DPdgAflM1Cxy+Nne9kIOfexLkfJeAllV8IN2z6JJj\nDZSsMnRjXcs6dqrmtYWEZylL47wpurVSeQrvlX9iF59kPlV1t5BeUKwit7Q0\nzlWXh54kr/oHpTSE24iIak29yKk0d0gIy3QvTpa6iLxnaFyOa+dsIFj8H0iq\nbHTj\r\n=OG15\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5748862425225c014edd2aefe36386a6156ecca4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-24T06:13:35.362Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.3","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_7.0.0-joshbwlng-update-types-5748862425225c014edd2aefe36386a6156ecca4_1640326640816_0.27768771749139387","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.2-renovate-external-non-major-6b3563b42f863c579979612a974ad1f5f0a129ec":{"name":"@balena/jellyfish-sync","version":"6.2.2-renovate-external-non-major-6b3563b42f863c579979612a974ad1f5f0a129ec","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.2-renovate-external-non-major-6b3563b42f863c579979612a974ad1f5f0a129ec","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"354f48b58dece0d12780dee778c8d56971564f5c","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.2-renovate-external-non-major-6b3563b42f863c579979612a974ad1f5f0a129ec.tgz","fileCount":25,"integrity":"sha512-2/D3yXjLWew9OG8137hrsQ+0xHE+4In813tPJCNB2YQoWO4Vn7MYZzCiiCQhOpajZxRHk70NmuyEMtOMZGv4eQ==","signatures":[{"sig":"MEUCIQC7rTXHCyuLrC5JsK8cgRozYG25eSTzf04Pp1pejgr3zAIganclB6galLv/JegvdjMAFKX+n/o5nV6qJ49b8/+h6Ik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217907,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnZ7CRA9TVsSAnZWagAAC/IQAI54N0413GliHvtkvUEc\ni+SH4CFOX102hHcOtjp5CCptP7RyhlcwNTL0EOLSPzYa5Cfh+a124arrrNnd\nk1rk/Otr5k8bTnoCIMwLmv/lCoTbH/qBQ7EZRUtDQclDvmmP4uXz8bICtCHk\nldbxFG+iI7G2QW44fDYVlsBAF0rZgq5Ht+3YUWUVl0EWZlHlz8SKKgtWltCy\nRT9arr08bz8SNy4/709f4XYgdFQi2R0V1W/gFWVjX37rGOA+42GUDAVrFwPm\ngSon3p5vvPxQaz1hjxCSMcvc4pTE67XT6NQ8IOByiwmCzBqym0Wvzy+Afxf2\nWMm5P1cSdoGa+kCXIfHCP12G/TtZPFRoO2OZDNUs7oudM3IXJPR1nac7LAp7\nX0TJ67rY1olNmSl2gvtWK2N7eIa+dK0tB9nR3zozMrJzwd/Zo8jl2w7HFabF\n4UXwBK/YFklMBJfzumL9sQSdehe08P9B9uRgehnZ047SJ8j1004fUChHv0+9\nT1ig6nk2A08hr2r0lO09PjdErMjLxX8Uj44NmZuUIww8ueKW6ee3zergNzee\nreVqGZB+7FxJ9atxXiA+P+/5bx2BcuNuW2ZzaL6VSVMw/eSQTLOwvL0y/7SQ\ntu5HNkbNg+nxIq298qndo/pO4UqKn3Kk2dN9XcdInTHwJ2hBFJTLzIlT5iiy\nrr3T\r\n=Oj6S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6b3563b42f863c579979612a974ad1f5f0a129ec","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T01:34:13.969Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.2-renovate-external-non-major-6b3563b42f863c579979612a974ad1f5f0a129ec_1640396410893_0.7700304438213739","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.2":{"name":"@balena/jellyfish-sync","version":"6.2.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6f8b7f06c0da5535f86bdbe9d8b3dcbd0d78d6ae","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.2.tgz","fileCount":25,"integrity":"sha512-gx5Nvvnn6oKAv/gTE4rniBI79CBU2ttj9TBFLg1ecyBxB6Azqk+jLHcJ7muMkcLF2paDFYe1fThkY2YPVDr2+A==","signatures":[{"sig":"MEUCIEoFBUQMWF5YkFHrMR5AmUQZH1n9uBtj75bDWf92WYayAiEA0n0eKm/k1JAeKz5ovT/Ke44pF9pN0Rcmj672y6Jv1jQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217838,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnfxCRA9TVsSAnZWagAAtfMP/R7GAa/joe0PoybU/vlj\nZ0Kau7spZaReFzWFevomZH7XA9N7+7XYFo8QUWhEya/+LxYNivNNJdf4VT0S\nMerZ24Wc08emlmWbN2MxpvW9fDT9nPtyel+dbwvEGJZgWIgnmaIkctHoN63M\nG8FMUpuKtICEGtJl7PZtcchc3qrYwIlSY9h7pSJm6qCoeXI/MwUu1u0kGJyn\nmRzUiu2SA3NVSQLhyevu+Dm8Bb89xj17fcIBcTsZwejGeKRiF4BtwkdokLM5\nrszqlqCqj3JjS45DUwTUAqdazXooYd8QtCK+766TkU5AE6i4zi0aXHaLbYA6\nQX+PIEWc0fP12METUHwpGiVOnYWfBa2oL6WQF8LI9IsKVPNFDjb+g+rfZT+P\nZOu/QJqdIcW6BJUW2k0ATfDtV7tZHTA2f0JyvOWBorF73T4gc9GB90eH5VqC\ne0IVQVWLGtgY9lS4QSzHIvQ4vow1azV1V0s2CM9MJ+R8bL+GLwWkdB3qJsvZ\n9BsJhKzgoxQndcS5g+5p8LXzlVZ5Nq69h5X5bK699G04KTw/QHWKRLI+wY7o\n+6hvuEMO3BwCaVGLayc/gLNXRif5mdRdg6zESw0tGA3GCqitDXWkP1o3s9dA\nxkJ7Erf1gQlQQt1M5ffLWyb56CRpKAHKmauVqP6h7UdJAlB118D3k63w6NBP\n9umg\r\n=dRUS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c29c103f2aa7bde4930659f3801c0352299ff814","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T01:42:38.952Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.2_1640396785173_0.12280427186181897","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.2-renovate-internal-patch-2f111a41a9ae3fe1f8767942bddda4944b6d5cf9":{"name":"@balena/jellyfish-sync","version":"6.2.2-renovate-internal-patch-2f111a41a9ae3fe1f8767942bddda4944b6d5cf9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.2-renovate-internal-patch-2f111a41a9ae3fe1f8767942bddda4944b6d5cf9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b31815b07f898e2b9ef75612eb4f0a96c414cc0f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.2-renovate-internal-patch-2f111a41a9ae3fe1f8767942bddda4944b6d5cf9.tgz","fileCount":25,"integrity":"sha512-ZP/vgCCXaiTM4+s94p4txx56Y3sLr5s5+Ln6yzpnHsPD9gQIkTL9HuDTp4vmc5wzpn2KqurDVzQdieZiZQTQwA==","signatures":[{"sig":"MEUCIFk1RQF726BU1YtWdwi/I7L3Sl9CdyaXmu04LwizybHpAiEA1we1vg+oPH7dTMs0oyIyuXl52aQ8Zu7yg+vWPj5fFTs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnjECRA9TVsSAnZWagAA720P/1jD3QDgpV0brH/gqD2n\nvBWxm67tAPNUW35l8nhpqJZnW79eP89nQowWszzEIVX8b9wrfhr6NP8wTZP3\nj7GS2nirO5VUO6ZHZgiDhVy4HywJ9f60NYlowjMxYSv/Y23pFUiL1WwgJKgC\nGlfqRA7c/slGGl1WZQ6XP1CImqEzJiQFk4kqMFdYJzuDa4/FdvtOs00pfXHb\nNztJ0DuHBAODPYBBwFn+cq8g6gwc7TDErEmM/D23ZZapH16IFEZYFdK/iDq6\nMfKA5b2Q5RXBOnhyYjBpAKy2F+ETdYgbPHuZe7hy+QkCbPmQy/hADEhWc8dn\nmYbr2V8hQhdMadz/i+Ol5jZr3VrzDf2YlQ4QrFZG8YYIhFAEqV0ehG6bFUOb\nF5SZXb2gdrEMHd3TYJzLioh6VI+bwiI5oAgHEeYfbXKZBG7/+j5KxPqFVUM8\nkIs7FwFOA/WwAWmlV5jy2mWO2eUgHr3HS6zGIXIEYOC3emwPN/8NOTOlEiRS\npL8G0/Dz2CwsLKtdyQR9UUjx88oVOoPJD3RbP1bdRhuQSoATD5Wad/yOQpwL\nqZsVeyrTphEF/IpGHKZZQtVZruNN58xl2I6JnoBk6khgZ/qgbW+ag/h4xGcW\n1WMiCwCclSfIT8+Y0sdP5Vt0FqHyX8njDYNobNDT33qzkGJz8mpCfaZuG58+\nIN0F\r\n=X2mc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2f111a41a9ae3fe1f8767942bddda4944b6d5cf9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T01:44:52.050Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.2-renovate-internal-patch-2f111a41a9ae3fe1f8767942bddda4944b6d5cf9_1640396996433_0.28042939790039334","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.3-renovate-balena-jellyfish-metrics-2-x-84ca7d517146cfb90ecb8b471e3c43cde87407b4":{"name":"@balena/jellyfish-sync","version":"6.2.3-renovate-balena-jellyfish-metrics-2-x-84ca7d517146cfb90ecb8b471e3c43cde87407b4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.3-renovate-balena-jellyfish-metrics-2-x-84ca7d517146cfb90ecb8b471e3c43cde87407b4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"ba71fa4afa5dfc9f709260a2e971fca736032002","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.3-renovate-balena-jellyfish-metrics-2-x-84ca7d517146cfb90ecb8b471e3c43cde87407b4.tgz","fileCount":25,"integrity":"sha512-HjlQObta7lSMuwSaVy/RJzf/nzD+yWcFFhzvaIYXe0dZm9w3s8fNrL0vPOh2vyEr5yGqOXerdMQgE+AXrerkPA==","signatures":[{"sig":"MEUCIBmkDZH9un4VM83WWpzRIHFI6YH5CPYiFSk2QtlroVPOAiEAsDoxBlajBOj1NNL9e9ciBtQthicQyEgYIKX2V5VQGJQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnmyCRA9TVsSAnZWagAANNkP/AoL39Rx78lGKhEokSQu\nkjWI56yBSinsrZ9rbGcwzIlfgzC57Bzm7bJ7SnSfQJgfkQeXPIvXC4nc2y11\nEZn6FWC3vxy6h6Vv5EWRemviK7k+bpfKQeoXfJyUUbeTCMVndkv8Gmdd66RI\nDxcwqQQy5xZ7pjuPz0cu2afB7iSnLXL3g9beJ2mRRTQQXIIPj32/vdvoC7Io\n6wM30LJ2H3gMEgfwUUML8oPqnEeBLEPmQDAodtPRphcQ1eZ204FaYeGXhBJq\nxobcYx5LxRz06GcD4N2dDuprCYBJFfsABW1CZilkhohxjp2Ti28Yeykd6z44\nJo1s1J9PMscL0zXGzI8ch3t7IRF+H2P3RNm5qGb0FjFBQYqNjWl3pEhI1316\nJmNxJAGRuy7LyQ5p4JvlfCzA+p4gC09aj0NYaBnfZJwLuWeeJbUC0k8AYfNf\npgQgTL6mUXGJB2UsTL2aHbhMFJUOLZTcMGEZjWLPoCvG7Rbqmjbf5D6qKICG\nDzHJWzln02G36i5mhHF1u2fIg+pL7u+Yj3uyn/pAfwzxh1NHd23HBeyOjL1M\ntDQ5PyTZbu+Fyu1sRzASYaqSUabSe2vinjo27OsxuaPDgIz0FrneuqMofQgv\nXPAFLuQT7AqB5dFEklrnDPE7OlEfR4/7nzkjIL0AyOWalyVSHLV/SLia3ht3\nP2Ba\r\n=eejl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"84ca7d517146cfb90ecb8b471e3c43cde87407b4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T01:50:08.883Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.5","@balena/jellyfish-metrics":"^2.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.3-renovate-balena-jellyfish-metrics-2-x-84ca7d517146cfb90ecb8b471e3c43cde87407b4_1640397234667_0.04298612173559602","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.3-renovate-internal-patch-1705d4ce6f0194dfa3674876525ca5d3f6433168":{"name":"@balena/jellyfish-sync","version":"6.2.3-renovate-internal-patch-1705d4ce6f0194dfa3674876525ca5d3f6433168","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.3-renovate-internal-patch-1705d4ce6f0194dfa3674876525ca5d3f6433168","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a259c40a3faac5f1c5e20c7cccbbc2dd9183533d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.3-renovate-internal-patch-1705d4ce6f0194dfa3674876525ca5d3f6433168.tgz","fileCount":25,"integrity":"sha512-ClMWnrOHREREupMQds+QHhTDPBuZeTHJreARwl2jV/Tc1dqaSg0tSzyzEfgnIs1mqjR/6hZOX2S3kY78hbmAqQ==","signatures":[{"sig":"MEQCIGWdQMqS+oxpq6h4heOdd1kOW5mhOx29tWJkfd+S3VW/AiBKIX74hB4NKezwRLXK8YkeRh8nfSxLKngp0gvP1nDnhA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnnECRA9TVsSAnZWagAAgFkP/1jpGMCLWymVl+Z+2EZs\nqbcZPRKqhMueNFLX7e51C77j5fTA9R1/bER2vBLYvzL1YJhcAVTg37rfs/qW\nJUNtI40HMgBoNYJEOciYTpJ7wNJbfxoQ4/OiyPjEL9cbiAOvXFIZ5pnRmYLl\nq/e+mVxH5bVmizILUV0bo5Ua/15FJZ+GtZHwB91Ew7tHI8rdouiSm+m6mVYZ\nY1dSh5HQ7V6QN1ubYGY6RFbp+YTaTkCaW5F1eFSk432BLjp8c8EC1wHog994\n+LXBLGnAvszaEzyH8oJQ/tMvkKHvXTOKIeLtQaJuSCp55Sz2nWWafteiOxdc\nYJ+GqGefAVHtiZ7Ak1RwaWLy8XL72tkqyQiXvt8MCp0MGqvmhc4++D62mnM0\n65UEuqMmw8M7a8xduwUtg5RVl0ObGmGaLnt/5HyVTELsZ7dLFvHxnvfCxIeL\nc58SRjxPRQdvZ6AxZ1VqwZ51a8G9hsbA4kXU3oGgu5sgTqSL5Tu1x7YOmeqJ\npZZN/Cxd9mN5qrNiDaPuERjoB8jYYCZOXfUwjJkrW68UY9MgDuFiwtTp27rx\nQgDCxNn42SfPVG2Mtb6YdccG3bl+LdxCCocYKr8fziA1pXk+5luRtt3qoc01\nTrOf6CZnC5HSmQIfsRKOk5Xbdy8Vb6f2uCqF2RBimgO/T0Bxv2WZ1zsn4h7t\nqSbq\r\n=NGYs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1705d4ce6f0194dfa3674876525ca5d3f6433168","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T01:49:33.241Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.2","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.3-renovate-internal-patch-1705d4ce6f0194dfa3674876525ca5d3f6433168_1640397252526_0.34701438308727783","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.3-renovate-internal-patch-e1f66ddf98404d04f6cefd9033faa948474d8343":{"name":"@balena/jellyfish-sync","version":"6.2.3-renovate-internal-patch-e1f66ddf98404d04f6cefd9033faa948474d8343","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.3-renovate-internal-patch-e1f66ddf98404d04f6cefd9033faa948474d8343","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"142d1c41b9f85ecc80df96c29699875fee27f8d9","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.3-renovate-internal-patch-e1f66ddf98404d04f6cefd9033faa948474d8343.tgz","fileCount":25,"integrity":"sha512-fczolLUIqafP3Vm6eHV0oBatKzzpjETYP5f3fpqkZVv8Tk1bIPAdIPckZz8uz0KWqzpyNsSmQKcSluFJ+ulgHQ==","signatures":[{"sig":"MEYCIQDgdGrPgFY4G3bH4KrRZ421gas5ec7N1b+8iKCbeE3deQIhAIbPSIL3pnSt01l6t6XNCcujYU3poe9FPPiPHMjy6Rkr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217973,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnrQCRA9TVsSAnZWagAA04YQAIwoRZKmsWwaESZNf3LQ\nxXYnK+1m+yoMuAClCXYymSfu4CZJH04OA9VWuvjxZA0nz1xihHpiLPkNWbJc\ne/ulxKo3HntvvOB3M3H1kpHnpTivZeMKlEl9DknNfkYpNIX5hnK+RCAdAl23\nS4ey3HLhhjvjntla2E+6gYcDGEdnwv2F2Dr+m/q2aFF/jFpIu4SGZxKvnXyd\n4x/KfDrxwNAjljEnmtxhowbSBfvA07+KSnxaKiVJ0/k1906IPkPzJU/cgcNl\nUBHsTcxcELwERsSq6+FCamouZRe8khWp4C4inB601YZH902Zgvcp3a9u2xzj\necILRZnmhzQtkOddBJlNYGetPZUnbRupQFrQBPYzdL7d63avbt0MyO9WUd4g\n6+mjjZW8EMYoGK1H/YH8W5C5OwBnM4OBTet6SzegB8TwDJ7Mg8bfJ4iSwl5j\n/zuKrAkmH0LLnpIEFpI5qumuU/RUDHpy43aYDHVzu4mZhhrjRQ9grri3y5xl\nZEU0+4A+mloOcZsLg59H8aCMeVOxwtAzsLhGJbhOPXaJnRcJPD+CgYkYHQt1\nAfR2cdXIMRkah2oma39nD1K9dXb0K5oNVwuHRH1wRzL9gGSr3kuZM+F6va/K\nlM5PrrAkgPJiw992mCQIALZpg59UDl1jnkmgybz3UxW/ZVa6p2483FmLJEuc\nS4iZ\r\n=qz41\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e1f66ddf98404d04f6cefd9033faa948474d8343","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T01:55:09.342Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.3-renovate-internal-patch-e1f66ddf98404d04f6cefd9033faa948474d8343_1640397519812_0.0914480073171764","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.3":{"name":"@balena/jellyfish-sync","version":"6.2.3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"46339008d3f9547dcedfa47593a10f8d16fe95b7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.3.tgz","fileCount":25,"integrity":"sha512-Zw3+9Y9OTRKLz4zGZVR7x9STYgb+3ev+rI2dJTGXTPp2g9u5JuckIt4n6eR4RcQj59dFYX8egOa2/R4cSjR3uQ==","signatures":[{"sig":"MEUCIBrPISuG81V2mcUXYcUX1LTcY3Zl+TVX/tCuKZDKQ9Z1AiEAt71Y5fWGvVOP4M0KE2SLhx88PGjsOD8PZv1nxIj98Rw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxnwrCRA9TVsSAnZWagAAgWEQAICC07KicXrI2Naecd1s\nxvuW3CLaWl0T6XzkL4xoaZWwMCyHk0Y1msF9QveCHTQzaQVLoDnehtbdwFW8\n2smAqmXCsLPYBl3NpAP9T/S9V9htyfIEzeYSOeeMd/6URS9tLg+ThKBqrnyP\nW4oBqMXxXboS01O0gS9UEW3svIhpgrATDwWacIHVofhHUqpLadBj4zihRJ8z\nb1lXmsTEbnT1KIW1ohZEwQ/n5jt2cLny0vS6VQvQDCaTzS4ZxV4oMBsKHBLc\nHmMkdG0Nu6KtjEb8izmBuqLnjA19y5a5zPZr8oh5pUP30PxjqiE9SUt6LW8c\nCStWTuCDjuXqTbBR8XJCb2d8qpRpz4cs+udKRvn7e374Pw2AaeGVMlnEzm/P\n82PvQ+YKYjoC8mYU8N23Fot0L5Fbpubs5eQWoqVr7StsCznMBBvWBRO60WAg\n5/z1pvUU6uo3IhTRk9gbYnl+vT3CUmlkpXTFlETzOReA2vIHuW34Vj0f0Hs7\nCWliIsLGWlA+WDwG++kaqFOusx/+d70jeuwcbXbb4zSp1MprEcHueLVCwDgP\nUGXNb84PZa8xCLmTd9k3YH9sWnUlLhoy4U5vOMvF3Voku8EuMnPP9tBLNRgC\nHJo8YxzTPMzwTjzjb7gU0OjRjR1+aad9IyyW4xZEPsnroiWlBDUHY+/4ixgQ\nfRjZ\r\n=aM+B\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a13e4ac0e475c979fe2d8ae0945ef1ab105a0631","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T02:00:39.823Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.3_1640397867428_0.7992264465270711","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.4-renovate-balena-jellyfish-metrics-2-x-d85f49e599e87944508a263803e99fa34a7cd21c":{"name":"@balena/jellyfish-sync","version":"6.2.4-renovate-balena-jellyfish-metrics-2-x-d85f49e599e87944508a263803e99fa34a7cd21c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.4-renovate-balena-jellyfish-metrics-2-x-d85f49e599e87944508a263803e99fa34a7cd21c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2f21f856eef71c8bcc2afa7e50a50d74be924f57","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.4-renovate-balena-jellyfish-metrics-2-x-d85f49e599e87944508a263803e99fa34a7cd21c.tgz","fileCount":25,"integrity":"sha512-Xs+LmDk4u4C1fGVvG79vVcgKgZh5bMJ1yeAa8ASPkp3/HJhnHTflJ3qu/P1jbyo3tazyYfs7F/ItNtqR9LyL5Q==","signatures":[{"sig":"MEQCIHllI4KXFSZLPbNISZQl+C+Vhequo8f/+SIWvSRucnYuAiBjDQzP85f91TUeVQocep6EMVC2u/ZX4B/tgsiKy2zg7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxn2YCRA9TVsSAnZWagAAKdsP/RUMd7i7Q4/2rOdZUx27\nWD+gv+Neoy0kzeLRwKJUPfFVdOhTl4p/crwFzVN4PvBcKFg2UGjMz4Mge/RB\nQAJ/xRHjwSw5SZzSyDEh6ohuYNnuqv61hnXDKk3ZMWD/0p0BPuV64ioreA2y\ngIaqEbj9Gu6InX/Pgevt9MTX9F9VcAbX41deiPYJNPWxhwqpYIvpLCpw1neO\nP5ODjKNr1kwSpda8qZDw4hPUrVAnucKPfJyfIb1hLVfxy+FyL3Edrmy+ZRDG\n2m1E96Ci9GCI9XJ1t1vB8B0TpenhgP4ETHBXDE9rUNk7NMBaSxGC7TMKL/6x\n28RGGWYZ4Y3kOnPoAyr313a0Wt56u50JXb+8sxI7ZZxz5WJkHUbUltjCspp/\n1tSFQIJi0YS0MYmpwn2yml7sg3lA0uk9G3VmTGot90J28A4zKDEv7r10JEu8\nJtPXx9xcTo/bb+DGiaLS3hqAvrpfGUDInnoC74admonbBaRwVqJlqt2OVIgd\nj7gs8Wj6xxrbNd4xR+/ZnB5uKzLbv3H3voB1/R6byJm/Ove0ajGfezD/Hord\n05A8xI7mJV6jp4lgAb2rmd2ShQBoF7UDVlvmXfy4iYRFsZRJhmz+RkiapsjZ\nFfvWPUl5V01DkP6P22GJjzhX+u5H2cfL3zBxTtAJhPezEb0/vT/azQyMxl0H\nzE0A\r\n=Fq66\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d85f49e599e87944508a263803e99fa34a7cd21c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T02:06:51.706Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^2.0.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.4-renovate-balena-jellyfish-metrics-2-x-d85f49e599e87944508a263803e99fa34a7cd21c_1640398232062_0.08481110251189339","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.4-renovate-balena-jellyfish-metrics-2-x-acb9a796c83d292b69abece32b5c84cee1d2ce71":{"name":"@balena/jellyfish-sync","version":"6.2.4-renovate-balena-jellyfish-metrics-2-x-acb9a796c83d292b69abece32b5c84cee1d2ce71","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.4-renovate-balena-jellyfish-metrics-2-x-acb9a796c83d292b69abece32b5c84cee1d2ce71","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8bc155c19607dc756919b3fcdf94458ff2c80031","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.4-renovate-balena-jellyfish-metrics-2-x-acb9a796c83d292b69abece32b5c84cee1d2ce71.tgz","fileCount":25,"integrity":"sha512-pIF/p4eraaR6SAG325+/py4UqUsnWLDJRNkcjzGl4tXnFlo8b8+2YdNKCeEF6hxOhOhYiXu2mCYnlrBRGtvOIw==","signatures":[{"sig":"MEQCIAud3gmOPOVLwapvMk9X1n7NPPuw6wsTgt89XFtTAzypAiByGzRtsUX2DbKmFh6MEJQLKki9gZgMlHnbKDcL77Rzig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218083,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxpAaCRA9TVsSAnZWagAAZxAQAIws5yPdsXQBZ70vajvM\ndQVgGLXHTpX7Ug1v6PYDdN2E91r27UzS14royrd+P1Isjm/TUO2CO0My7pF2\nRt94HkXwXhIRyCf7PHdzUrPvohGA6eMbV71v8qWStZnDmZk9OkXE29X4tmRt\n33Cybj9gFA7KaXlYTRpf59ExBZulfMBFwI0PpgHVLI65Pwh1g1a7Ok4IYc4v\nCTWUlQuJWvNOSJJci7/ADvBHzZ1j/DDxE80jj2TRDwDjSHIDzwlXbgQfpWhd\nOoo3nZVyU98v+W/NxSBbjXULmCh9trsIbotV1GuVjLGq0tlR5SQkW41i7+uu\n+Bz+MCzooaM5zcqKiUZMxdKc0cjio4jQxfz1cqzHINaswjxev9/dOLLUNfY+\niIkrWbHYI/Pjeg7JtMUwnA0zjgpv7rQ2q/SJQmfa7cbWdaaupQr+Duga2Nec\nTotxlu3bxyzVAyNDuN0dF1pancoWvDl2Wke7H1jD/k1dZMU5mpfVsTJa4Yez\n5A24A0Z4xZjNRd+6lYtBAcZy1tSPCC1lRPxdgcd0ltDZTEeI155DiqFGE+kY\ntJvPkI6mh7xvI1VALBsm8BcdARCdqYPQhThlq1Ra5RIhluXQhEKRARfG8kRC\nCxEdBoxJg7Tg/bAl/hbJ5Rygs5mgxQ9DVZN6cOUWaGto0sZLV/TayyQLWQ++\nrxiS\r\n=rN+T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"acb9a796c83d292b69abece32b5c84cee1d2ce71","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-25T03:27:07.191Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.4-renovate-balena-jellyfish-metrics-2-x-acb9a796c83d292b69abece32b5c84cee1d2ce71_1640402970764_0.981602854478481","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"7.0.0-joshbwlng-update-types-8702d07dd19243a91af2b831ed94450ed5ee31d1":{"name":"@balena/jellyfish-sync","version":"7.0.0-joshbwlng-update-types-8702d07dd19243a91af2b831ed94450ed5ee31d1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@7.0.0-joshbwlng-update-types-8702d07dd19243a91af2b831ed94450ed5ee31d1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"24d013fafb40bec232eab6eedb7f50d66f710f6a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-7.0.0-joshbwlng-update-types-8702d07dd19243a91af2b831ed94450ed5ee31d1.tgz","fileCount":25,"integrity":"sha512-jusjHcYD6TYAE6Sfj9J31feB9vb6UC6fTovIcYMaYej+GRn89j9XNQ/886okAprIVvGG0zG7XGNSO1ryQJp+Pg==","signatures":[{"sig":"MEYCIQCnbqCS6MgvD9u95JAZED9dont3OzlSgHYYKoIgczszLwIhAK9c1k7BXy6GMAHZgJuCHWFjqs/0YT+Ps+38oQYuWysb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218084,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhybawCRA9TVsSAnZWagAAeowP/i3EjU5RjQvZbzjEUyjD\nTl782AyBibMqLv34QwTY4BuOqOMCJrE/JENQvlHULIE7dsz4eb7vWw7Ho8H9\nKmkGopgHA6uc2CQiLuVujnHUjGeL8cI1v7iN46tqx2jI3oBo43lNR94Hw9jV\nij71mXeXUhYJoU7nWZ9DIGG4e+v+TAwv3fVpbozyh+qIy1wddwzK8ktMEJmK\nJitLFS9clRsVvBUvV06TQD2XcAl30SlzQUHiYYQhPCWeLnq+d5+k+HMEh6A7\nMLhMoNGX8QlkMXINfdytJvDwcUOTKs08Wj/8rEmlgAu1PycXQEeEZuv2heWm\naVvbPNf66JPNMADV0tub1otJNcjpnqdHxGA2r7BNfDIxZjakZNbwgF9ovIQ9\nica2l65ov8AZUdg83D8qVsD/fzrIWZJa8qso6o2c1Ba4z/poLHKd3TAjvg65\nryBD1ejxtsHziVRoL7Q56f/twpPz24dzWJ4+uVu5o8JV5nUsgnqXTEmWNH1i\niBptKOeChBUfm3msPvMOwklHd8TVxWl00c2XkxfSSN9Yk7QlvmGPnDYPZ+01\nZiirka1rVik/17GN5N6zAqWVtx2yvmoO6hIra8kDJ8oujIzbK5hDT6NL/ZoN\nsd9POkRCgwvJGRZhx0iLck4oJ4uWqZLDGFQnlmv09pPHceCg8c5VzdYrlNGl\nnapp\r\n=g3Du\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8702d07dd19243a91af2b831ed94450ed5ee31d1","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-27T12:48:05.056Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_7.0.0-joshbwlng-update-types-8702d07dd19243a91af2b831ed94450ed5ee31d1_1640609456772_0.2903070700471033","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"7.0.0-joshbwlng-update-types-2753e61e621a52199b11cf14c124eaa8fa4e5e38":{"name":"@balena/jellyfish-sync","version":"7.0.0-joshbwlng-update-types-2753e61e621a52199b11cf14c124eaa8fa4e5e38","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@7.0.0-joshbwlng-update-types-2753e61e621a52199b11cf14c124eaa8fa4e5e38","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b4cd27d08a4fba022da6b4d00f6bce9d1c75e320","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-7.0.0-joshbwlng-update-types-2753e61e621a52199b11cf14c124eaa8fa4e5e38.tgz","fileCount":25,"integrity":"sha512-Kw3lmDq7KfSeKuIBiwCD5ksOiFsz4VuVW1NKh7OHxXs6PbkfNdX781Bi6RVIzCfvUDc57UYJu731/WkBbYhpgQ==","signatures":[{"sig":"MEYCIQDYkvhpigAgO1RtEqGu0KUFFmAi4cT/7ZjrH9E0tz4MjwIhAL0b+a2h28LG/+eJPXVj5GswRDeA0kFpk58w4qBXLZTo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzCVUCRA9TVsSAnZWagAAFjYP/3KWNpuVEZwlZ5zetB2M\n+GL4AOKGJXZCPBNn7t7nr/qeZOwtGutvZSqGYleQlnGVLImeX3xGrQ8W9vEn\n7ThWgelRYOlh2NZohsuTotIpqje2j/XWiQegjgCSqzBnLp2u17oDy462kmYB\nicXFmILAircHw84Z5VHULPtMtrAIOXuGBoye3qi5ZZ00PBOj3A80CSufBeqG\nZh0otTA/1gqA2rX75T+SyCfvcG+KADfx0RhRc58vWuT1kHrQehW+CsaYszG8\n8e7mteDXq/tpPoqXQRwCaJH4wUQH9EPNLcNxknCVemLqlCG3GVhoylmzU6P5\nIyzxEtLqLJrDoXOgJ/oTRREqPKbDpntIvxuPCTEiq8DYqvBsBoOIPHrQbhAq\ntis2Eo/Mk3m1/KntSPefYWW3MZP0JedjMzPdW3NTYhYfLQLsQXpzQwPEwVRO\nRL2wyBxooWh6uldAOkG/hlgWxTDo1GsEu7lm/yMu9BJ/2wpUUJFVBKbDGijv\nV5DpNMaFvm99t3n7jKGl/BozyeIZYuVkX+oOSPRZyo1vDrZkrpbFbCICNvJT\nKja+xxblXTtkThfIsoFs0o6OAU2MvfbhuJl0kFtVrTQTPWErNnuYpPTFbF5l\naZuTgYiacAySCSlyj/+Jj8i7Sir/lmzXVmWIBWJqZa9t+erLHqQKSs03Blwo\neaob\r\n=WkWu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2753e61e621a52199b11cf14c124eaa8fa4e5e38","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-29T09:04:46.610Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.6","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.0","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_7.0.0-joshbwlng-update-types-2753e61e621a52199b11cf14c124eaa8fa4e5e38_1640768852082_0.09879741284690668","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.4-renovate-internal-patch-7bbfa3478eea35edeb623b006f7ac476fdd1f34a":{"name":"@balena/jellyfish-sync","version":"6.2.4-renovate-internal-patch-7bbfa3478eea35edeb623b006f7ac476fdd1f34a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.4-renovate-internal-patch-7bbfa3478eea35edeb623b006f7ac476fdd1f34a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"524780f2df9be7fcc1c9e2ea34117db26843aceb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.4-renovate-internal-patch-7bbfa3478eea35edeb623b006f7ac476fdd1f34a.tgz","fileCount":25,"integrity":"sha512-klbaI/NfZm3qF/y2+M6ES4MhELEW9Rf2SY/cSq35UuZ1/YsZl/7m/gbOaUpCISifbLWei/WrIkq+JZ677J6ajg==","signatures":[{"sig":"MEUCIHOUpoyWU9A7H7WdC2ppD2T7JlU/dQhp2IAEcQl86AWmAiEAyWZcC/KObWcWPFOMbSxdAMjKVxoHXK8kb15HS+1LbJg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218043,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzjg5CRA9TVsSAnZWagAA3hwP/1K/jhmv4daB/VM/YBZH\nstGWQFQoSdV/Uran+pKqoibpP3LBlwR/diaf27JeZSY5zDY15qoXAsgddkb/\n35SGZBeaDTzAFtJFCfuinX9QaHg7NMUKJ8EjhgA5VL8JnSvDqwD4GUFvpR8l\nWeLvxOw5jLHGBk+BRXqN7iWyeNa80D9tR2GbU6aITESZWPZOphNmnAgw5H/r\nC4lRzoW40hLGSma/pzW81psbN/Nb2uJjC8/zZ8jvHVkNCZoxwhib7aozHcKs\nqBcEBQeZFBgV6yDu9WS4K03JEy6qyu4DTuxtuPngL0xDAvjmmSWixgRDTbQC\nhq+I+gAgNkInTV0uLs3Ib7mfpo3bDqDeexZIGS7tC51VQIdjR1Y8oKyewC55\nyN5bjCKkFTYzoSU+n3iyeAI5BObFLcVjQeGRFWa0H5otafhCCf9UhEzKGOZh\nAth3PhkWF+EU4OCzNPTneFWEKnoPzQ1R8EwvskH6c8cYbwuqm5YMVhfd/tko\nYQzpXwlH/aTcXpvyE94m4jSps/6ixzRRjYih/Gwg1ktD2iQmiXAFDn1nwSY6\nDW8bUkZnIREoWU3vVp5A2UT8GlEhsT93dzdr2jecIWzIL3vwKwuaF5yQyT3m\nFeJNKKyo//quw2rYaHdLIQMVcQTwUjoc4/QPT95dZPZUEHTdgPXbdB0AJ59+\nT9i9\r\n=kyB5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"7bbfa3478eea35edeb623b006f7ac476fdd1f34a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-30T22:49:42.936Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.7","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.4-renovate-internal-patch-7bbfa3478eea35edeb623b006f7ac476fdd1f34a_1640904761651_0.781673545461532","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.4":{"name":"@balena/jellyfish-sync","version":"6.2.4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"44acde6d413f3227f78accdc0faed9eea1e426d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.4.tgz","fileCount":25,"integrity":"sha512-GVxCojEuIR6ZMQd+mC+sU3IYxHHQyD3DCfmEN1Sw82t+hdswQlqGXXdEi/Kwb4XJkYbNXaR2b3uUfQIAgFIIaw==","signatures":[{"sig":"MEUCIQDb/s4AtnBwKdNppY+zpLoBCW1tX4AcjQk8Qv+fR/rOIAIgLhY+68gXCyUUq9gjJDFAVshPfFLuSW9lhNewmFBdMUw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":217978,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzjkgCRA9TVsSAnZWagAAny8P/0RaDQXQQDkx+GsOEIMk\nrOorUJnGqZDZdnIyHEXRnQGsDWIgyjwK3/9j+x07DnBjhN39xa9P8y5LYEiS\nEYIaMPwQQvbXe09HviGqPBGkjwzR3Icl324FUOIKBK2bOCII/OTZoXKvoZjg\nN7emjXj+162bESoaaA4LyByvhS/RjDGUAgRPjl1ZEux8jddfhrE0inrnN5Je\n+byu/vWHHtGoRNFU307PhwjSLnLc6gHZ+5ohcs9WJ3QCYhLZm7F+nh45Lb8C\nJEMMbBSV6QFk9LBQLDMJTUNEaqiurWKVrwSoW/ZTqSj7JYneSyn6z9ksY3DY\nhTy+dPUxH2UgqFojYPtMYERig99bcZ+ZZ31Mv1DRrFL7y/uc/KGkihOxoepJ\ncc5Fe/wORhMfBMDLBWsqXiliLvVUtL01ZbvnZawwfRYgSTYyHWUAxstnXz+Q\nCoHrWcgDwsI9vILi8thdi9IzeReTY41c5Fl6W3v6PiEOIBwTCGAHpe6WkxJZ\nF46E4D3D9jEteFcb4iSRE5hIZmaHpEcva3HDzZo5Fp38tb9jhTbyHUJ6Gy9Y\n2WV3/I34AhXMLN4r0b4R3+vR1hIw5DaJwW2mHM3C7s9/Bdsm8r7UyNsuB0Lf\nHVXZTuhWWvB1A+1At7r5/NInL1YXEJiiWv8agr3ny/pzOpJZ4DaOTRBCbP4k\n1AzL\r\n=+6Nr\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"15bda00ae7880b881dffadf9eee74d6ac663704d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-30T22:54:13.227Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.7","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.4_1640904992266_0.723309468143394","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.5-renovate-balena-jellyfish-metrics-2-x-89e96a6c65dfd0a320e1baff86ac985c04790f27":{"name":"@balena/jellyfish-sync","version":"6.2.5-renovate-balena-jellyfish-metrics-2-x-89e96a6c65dfd0a320e1baff86ac985c04790f27","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.5-renovate-balena-jellyfish-metrics-2-x-89e96a6c65dfd0a320e1baff86ac985c04790f27","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d0d20e96ea270e3962bc10bb38c8edb878164c75","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.5-renovate-balena-jellyfish-metrics-2-x-89e96a6c65dfd0a320e1baff86ac985c04790f27.tgz","fileCount":25,"integrity":"sha512-SfzqgVljqxCUfS8EOtjWNCqEtlh2qdhgDY+0WVTCYQnQcraFkENB+ugALlu6PmoSOPAEPkBtqUDYjJi+yoM/cA==","signatures":[{"sig":"MEUCIBCylZL2a6PXWTie3293seNpnLpoya54YSe4yzeRj0NtAiEAq58y3eFVQab8rbr20GenUDW++tATBexhkMXKP1224jE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218153,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzjpSCRA9TVsSAnZWagAADkkP/2zJu6Arwae0/jvM//zt\nOH4/YZWQ2ZnshApBhvQSO/aJBO917dKGidLB4sCEtfMXHcBzgPqqBUYGjcFn\nq40SrylQ7EVgfbCEX9Q2gbePs1ITFDXnHQfOfYJPD/jEcPabt9nMJraFph9L\ndO3/To/WCl8WFETxud9bcJBfWN5ummXRxAPnb0xS7/RRcERY69X0w3V2YJ9U\nVRKiCXC3wAH8RupSXGkBQ7k/qwIG1Mc7MuLaU/J/1ouPd0DrPgBK8tdSftQ/\nomPZmyBcGw2CIZS4GK9gCGg0BV6E6DdLaKtRKfIYX8MpCK8g4ify5mpDDZWB\n9jBxrKV2yItf3JHTs9MyvufXp5bdYCfJCjMMNXEbfdaBSxE9X7HwRQFC3oCD\nTNPeXyB97ifelpJUdtPf39Zyp8BFyZuTgCwghtz3+4VQYygYYSaVACQHp70N\n3WI/lWZHY5IwQf18m5ueke15xHI+KVs/TKnr6VzOm8DbPc++aYeY2d9VS/ZQ\nfDwsJs75oTBERLW+h196Qm/4N1pZZbCCJ0cj5qf3mWo++YFitvNVZOfRSUZy\neClymhNz2G47ugf8njjhMQLIfYfQ7ZZqySWrgRDAcWkg0Ily+/tSmZqJlwHr\nuS8HcYZmMGxWKIKhiKwfPtD75XagVCVE/bgDZfGRyiKB0qNz/O1Qe7nbP5gQ\n6YCS\r\n=XRR7\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"89e96a6c65dfd0a320e1baff86ac985c04790f27","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2021-12-30T22:58:22.303Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.7","@balena/jellyfish-metrics":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.0.3","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.5-renovate-balena-jellyfish-metrics-2-x-89e96a6c65dfd0a320e1baff86ac985c04790f27_1640905298755_0.06965932823006127","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.5-renovate-external-non-major-223c7910ba9cdca23f91333a8ac7388e99cd62c6":{"name":"@balena/jellyfish-sync","version":"6.2.5-renovate-external-non-major-223c7910ba9cdca23f91333a8ac7388e99cd62c6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.5-renovate-external-non-major-223c7910ba9cdca23f91333a8ac7388e99cd62c6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd3061aef0296941115c75611f3bf789912e3dde","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.5-renovate-external-non-major-223c7910ba9cdca23f91333a8ac7388e99cd62c6.tgz","fileCount":25,"integrity":"sha512-c6lIyEsKIPghEU+7e9PBQdBrMIvEj98+MSMDxYxiqNp2n+NdAMhCszY9+yqmcXg/8PXVtMeWHWsMoRWu+rYeKQ==","signatures":[{"sig":"MEUCIQCwU3bDM6Bv8BtaQgAaPX7BZAFTEnjO0bRlD93mYXi3TgIgBY6XInbwDs++Mr8poB/B09QHjyKAVngtJ8mS+w/CeWM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz61XCRA9TVsSAnZWagAA1h4QAKKQRwDHBMqy7M9g8pbz\nFCobFw8HrOGrcGwOu6mwq64zQgfKWRI0Do1JGM1cjVnH1W59NknpOIwUCv9e\ndQ8g8A42D/Z46GAG8YPifI5BdOe/wAz2z7OyLIb7/BpI8vf4GtRJ2BmMhkGX\nYWxG62d3qtu59pixrndvO8Ys/cKtJ20970/CgupA7ruLTtK5D49CxpbyTOtp\n476+8CH2YuMHQdF2rK5AZNItuSymtFCetYph1cSUt8BcPqX4PlVrWfN4/Ziw\nA+B/EjslWKKweTZaKWECRK4dQAmBx+GeoWz8+vsyyeiI3lbqs0Kh2AtrdpWk\nO8GQC02tuQEr1c7a79efipL3JbLp4YdimXxn/heG45YUIP1CqZQYsTSuFwLv\nqAVIyE5kRxZgYSc+Cd0t5xEvtWtGNbieR8i2mEa+anlGXWN4AcDR847KeN68\nWtvTTdsnqyD46V/XN3AZ06dUpUncsk8/7xXjdaNR6y4NppRF22lK+Vfikg2l\nHyd5cZJHnTDh91/Wgni1yudgfxckdIHt0fpCIBpsko5IiF/QM5XjWZ2lYgvB\nSbjVk8aAADdE9ylIVo5ojbwCw4jKIGn17q+zsncOdDGyA0a0fPLjyoxh1M1e\nYrrvC6E+x0vwcSDg2Y7sjwbkX4VBpLhT+kCd0zH8+cx2qIzvUXSx+WLfdX2J\nKAA/\r\n=4KVm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"223c7910ba9cdca23f91333a8ac7388e99cd62c6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:21:45.395Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.7","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.5-renovate-external-non-major-223c7910ba9cdca23f91333a8ac7388e99cd62c6_1641000279750_0.5679811685419172","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.5":{"name":"@balena/jellyfish-sync","version":"6.2.5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"01c9601b33fe249a625201d8dd1343077620f52a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.5.tgz","fileCount":25,"integrity":"sha512-RJIWHywUjWfvF09iequy+Tt3NsluET2im4GVvYZbcd3SklJzrHe2LWLqLQ5d5Z/shFWfio5UjFyfkJZDOIAEAQ==","signatures":[{"sig":"MEUCIQD48ksqMbflHSkNCko/CcheL+aihSZHcnAzCErM8OasXwIgGNV6gSi+gOWhopRVrcJlEAZGNVxOQXDeIEKaRFUY1B0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218067,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz64tCRA9TVsSAnZWagAA53YP/3lp94XOlKTwopyN0IRm\nKi4AL3dOY6jLU/Vm3+ENxtqHisRRBgFcOQOyTSaATfKw7UINqRbaetwIMDqN\nniPtCAb+BMWG4TqY4ra0cp9Zr7jhCqtIREc5sZySMbMzb2hQbMJfnD+qn318\nCfYzVv4vsHQe8wH4cJt085BHdDp4hMWh0mcdGojt5EJeJSUxm4GB3YTEEv0v\ndqnXBQ7CY/ckXAm6a4UeJhmwHRa0wMQn8O4LoPp6tCL9s2+YZxTU2AQ5bSDj\nNoIEaJtXY1TC+mbSC3dayPObozhR9CiTumPMctZELYmblm8H3Afc5/+57HoO\nGalBmPlqibSfV13LI3LOBxtCPR6VZEEQbK4TdJcpHuOT+xXpZROat+p38ekY\ne1BldUHHujPUaI2Y3azdZzRcIShPDFKldjcxhL0kYJZ5MO0aMo15UstUlunM\nGaznULaB/QEXpSmiAqNxgn5FChAbHsrF6z0HNUX5MfstHwJJyAfJtpcCBhL1\nFeTascq/QZlESKcXZBH3UH4fwKNn+pfVaHApnU7wUnDviNS7Ou3FfCd9kTK7\n4ImDCcH8lqDbGZRfKz5sm2Rbp/2JQWlmrpgEs+hHSMkdGQ1Z/Rvc9xn+WqDE\nDMkKiegPoiMJjZoyziNF5e9uRYpuFBN6s09fB98E4cJQ/5itJmGW/FnITaw4\nn081\r\n=gqH8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d644960c7a14c37edfd54b9b8a175205e63fab83","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:26:04.732Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.7","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.5_1641000493451_0.6253081112366616","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.6-renovate-internal-patch-6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958":{"name":"@balena/jellyfish-sync","version":"6.2.6-renovate-internal-patch-6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.6-renovate-internal-patch-6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6e36c8e068aa2eb72f895418e328320b5daeb648","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.6-renovate-internal-patch-6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958.tgz","fileCount":25,"integrity":"sha512-KP1/JMFaInYxdSL0qba/zxIpX7TuIYdxaPJSOgpcUDlmUV4nr8Ik5QS+pL+O3JgMjmL8xHYp4r9U2DcvqUalBg==","signatures":[{"sig":"MEYCIQC/GDFzuI65jnRTlE1tScmqelON/nHSO6KNmSVWG2MiJQIhAKVfSfEZdLe2aSFqdJdo8DhOml7ZIKlhcQrebT7tL+qa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218233,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz67mCRA9TVsSAnZWagAAuJAP+wRfbc33m7/idUDO5iut\nrD8hmo2gXv9Xl7/hyzqo+Zj5Ewftoz8bESoPK1mpK6kAWuWuH+sEChU6QavV\nqhl04izJGgMuujQt3CdPpLj+LlEY17bMXjSMY0/51H4u0l6i+bXXTts/eFRc\nMGFTXxi4eqfFMqYwtXbcZ+BKeBM/X/STzPCmgvbfDlJrXB4TbTdoDkJFpLBS\nzHvLu6uqR4cSXBKe+PElPhHwoIMu3pqQCtrJ03qSUCMybwEn2uVZPOGe0XzX\nzdt2JluURLpE0NIPladQhbYzn1PQUDRdQ5PxIcecHIL+JdtWGa0QGolLzYlV\nBbzYOS3G2jhr3wiwaGea0tYNDLRGr0aKCVCIGhEE0npyWs4JeOBGPBElPIgc\n1kFjtL9dPlDAm+fd7pySWxh9oZznwkweIqHIJmIuv5vaOdBf98hQAIZFW+dj\naXNsB2c7QQYItau2CV6TSMKWjTRY1r2X+ONx/b4+7lMelSYJuYHC/bE+V0s1\nvodL+lrjp6IqltUYAjCVP/FGpquhpZxcQgJIlFDnv/HAiAesIJHRvZscWuiz\nc/RShzSUFjZqkKxyO9nI/cq7FRoz3dZjxrc0Y9gZyh0Em83Vq926EbkB31iZ\nBmAv5XZ402/uxz75LlNVSfV4gmb8WmtSX/rc9aLJSyMRV+73TLC9uBusTLTu\nB/FY\r\n=cZvN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:28:01.507Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.6-renovate-internal-patch-6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958_1641000678278_0.7030012936062111","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.6-renovate-balena-jellyfish-metrics-2-x-5bbb21e00f1e86b9b96ac055e0ad21af0df503c0":{"name":"@balena/jellyfish-sync","version":"6.2.6-renovate-balena-jellyfish-metrics-2-x-5bbb21e00f1e86b9b96ac055e0ad21af0df503c0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.6-renovate-balena-jellyfish-metrics-2-x-5bbb21e00f1e86b9b96ac055e0ad21af0df503c0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9554519c4516de87147dc327ad8e32221247fda2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.6-renovate-balena-jellyfish-metrics-2-x-5bbb21e00f1e86b9b96ac055e0ad21af0df503c0.tgz","fileCount":25,"integrity":"sha512-0DJtClw3a1qpkgo3aQ88icWlpTh1VVDWVMF1GiNFGlI3zduI8LE53i4RveZTQlv3l4Kz7hBW+8L3msv4Dskztg==","signatures":[{"sig":"MEUCIEsLqnqfljda1/pgn5WzXH8vil+b7OiqZdFIXSJ6I8o1AiEAvFDx/v4zUfwfO32KiNlkwHhwhnjUP59k8THfm05HNuc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218242,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz69pCRA9TVsSAnZWagAA1IoP/R/ibgrKYBRvPc9d06Nw\nQ8yjx3VIXMgO32BD3k193yGovhq4I4N0Yuz7I8Tr/hqFpZ05f9uztelhnknP\nspa5dXKZ5GJ+xIpcXLyUBvWKNTyjXXE6PXXTMLwOhNLPD/IIGAXLkdF8gaB5\n6AdASQ5hpvMMw5MHXYg/ywTob/ERFGpKWzKsR0AnogsbvFUsh8nwO602MExx\npIBpGVg6ypgpFzZy1M77gYOe6ficAJuykPmahtUTi5kdWx19AlKEImifmSum\n+phnX1xEfYNsqm2mXs+dokPo90o8/rkFqhi6JQJWReJzaNU0CMNdnkFKhQUE\nVVEMAQXR3B3jDJnqcjl6OQsQ74O8C/q3OZmH7jo5ozsrVauwSrdTjPgsjwyc\nzVjubHPq2iWafafjQkXJHPV4B7VHcOhCY0o/ujiZcXl6xVZPPuRcG2NQ5ulw\nNdbX8gZmxHHYD8uTalsF4bgwRu/KfsylLvcXDxO7MtvjYvSd+W06essiMXdl\nR1CUdCiM3CpreZRS+1XhJtj8rCZ1mKovvrDCW+PZTo6NFxXcgV0EvkzsdzWQ\nZZWmfLn1L++jlv5dAAJjgGZ3vAMsUsS8NSUh2iv9FIEZ1tV6zqfhJUiAWBCY\nkHea1fEFUGjAqBh+QvcmK3P+T+l+hST/nZxsx6MRzXneMH0XsoHOyo947RFX\nGJRq\r\n=RaJe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5bbb21e00f1e86b9b96ac055e0ad21af0df503c0","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:30:16.857Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.7","@balena/jellyfish-metrics":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.6-renovate-balena-jellyfish-metrics-2-x-5bbb21e00f1e86b9b96ac055e0ad21af0df503c0_1641000809219_0.1329863594804943","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.6":{"name":"@balena/jellyfish-sync","version":"6.2.6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2d810fefc079d1c2476d981db022dc3b72eb5d8b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.6.tgz","fileCount":25,"integrity":"sha512-xz7CV7ZM5ktkN50AiTIwLYOTH7tMcRbpmfG0OxgD0yBK2aTivcBO36FLAJC/ji+4p0TCG8FG6Ht1sY/vbjnrhQ==","signatures":[{"sig":"MEUCIQDzRgP1QkEh491o1XhQBgqnYequQ+UM9RqYil6y4jsLUAIgPj+99beK2x8jJj2EbI8AuiqEO4cM2SLvNWT46M0Jq3M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218168,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz7AsCRA9TVsSAnZWagAANS8P/2zdL30U7LfBVi6nga0o\n/TgHQzwGH+Na4jg83nlC1hhKk3Z/9piMJtcZQdCSjkf1RX2e9m/Gp89PRsjd\nFSLBzcgQCCYrrEFXSuWXglJqik11cRXUDsoNb6NsKUSddnferZNt526jZ1oH\n1xIkZO4Q/WGSpj945kfqVODshLQrDpwMCwNXnlYGbkxY65RkotGKi4qTZhlO\nEdVWFeqfw6JBbjViRkZ6b7e4ueJRnYNvscF5XDYJlm8spkm3y6pEh0KjmhEP\nEWwC8xyGGDR5OfpMMMOYwB7F+m97j5LziV2TCkO9Q4T4uLQ+jIRimeXsBuX9\nHY7njrX38XAqjheAUfTCF4ED5tAA3H+WEjh+glv7oTqpN+HdyVLqDx7lJl6i\np972nVQ/6uNvhFFmm829sj5wA38yGu3xai6lgBB5k7RKxknIhnReLJI1lcRn\n0vctUhcdxBcnZsUYUnBgF6dR38Qya7gHZJw/fXYGQlBUJNkBuK2kKx4BUj0b\nJFKKxbAeDKR7ggLVoLP7ALOsi7r4sFudAbeB+cnjm3Z9p3XeNEInSasuf3vF\nwGjiwNBZvIDaV1nSIAJHJcw/7gU0VddRYU/U2AAtX/NvRgduwH+zMzNcxJNs\nPZ/uNOeTopjXbiXxqygu/hrBZp5rTN1ZHs57VyWJaFOA7TPMaiQYUaYko/C8\nDQ9t\r\n=oB/j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"21a3f5ac15d19dd952841d03033ca863b6c37c39","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:34:43.690Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.6_1641001004159_0.5662156975158579","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.6-renovate-balena-jellyfish-metrics-2-x-6e4535a510b63e955e6c0be6c1e4408f9b568b49":{"name":"@balena/jellyfish-sync","version":"6.2.6-renovate-balena-jellyfish-metrics-2-x-6e4535a510b63e955e6c0be6c1e4408f9b568b49","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.6-renovate-balena-jellyfish-metrics-2-x-6e4535a510b63e955e6c0be6c1e4408f9b568b49","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5d14d265c96333a8f74765292c7c8126fc7cd1e0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.6-renovate-balena-jellyfish-metrics-2-x-6e4535a510b63e955e6c0be6c1e4408f9b568b49.tgz","fileCount":25,"integrity":"sha512-7Bra5JI5BxkSrzMH9G55tleafW/QOU08n6IfiwXQPAEKWBeRN4fDVnzjX8s00OGyQ3dUBm+dypimQHiOeu0Sng==","signatures":[{"sig":"MEUCIGE+FvCwrMth/NRqLiQVqAuEDDDfh87mHBxSkbyvPi7KAiEAj7/N0kEWFOJNss+sQcrHHqcALU/lyYwflXntdChvEME=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218319,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz7C+CRA9TVsSAnZWagAAB58P+wSmT/q4tkEtMnuxsF+o\n61bRFE2XvX9XpO6I1xnBH8DN4uu219dzAHD/b2lzcvxTOolW0AOdO0vOzKY9\npa5fPaahJFxJAM6Hu87GoZKQk+9bsDY3SXA9NCH6Wx+Q53LTNoMrYiSVAbZj\n20IHvX7tk2De0uZqmYPXL732pMPGZSJUmUwehfaX410o4XviTe6uAdWBbTw+\nCUmS9NmHNsd8fsMZ42m/PxImt5Cwjiek93xRAEOC+ZypQj47hk+HQglNG2gl\nnW46oEFqvLQtdSYVW0hIlZuuPy4XK9TEyDreptc62XzeblwNbVBh6NVoklxH\nhev2MrubLSQCIh4BMSxAJS/dZWTqlSyWtU9flZqTDfHqEO/oM8Q08Krg8Av5\n/ZfBuK7hrJbyKqo0Ol3Jc6PBBESGqL3apWgLVHeMwEoy9aFQ7xAToPByFF04\nfblTXUq3YNM4Pbg98BVbNLVO2rHNrMJjfzypBGcCc5bp1PQXMTVxkO74eelK\nssXVYJ+51gbcKKJwAPOk1Aqm0ddATKv+LRW3mztLmwrPCt2TMEPT3JfNUXO0\nEQviOptZnMJFdsg8yJ/PIFxxAd/QOtj8tq2eNyTQrJEpTC0wtJVQOuQoe2Ig\nLQht1UKhtP4ZcCpq2GJ80/09ZXPNTCzGBgiFzYzru+/Gi313HL18y5n3TlU8\nUkc+\r\n=/LOB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6e4535a510b63e955e6c0be6c1e4408f9b568b49","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:35:49.776Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.6-renovate-balena-jellyfish-metrics-2-x-6e4535a510b63e955e6c0be6c1e4408f9b568b49_1641001150173_0.29606123696105624","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.7-renovate-balena-jellyfish-metrics-2-x-14161ffa0b702c09fbaa066e118348995c4c70a5":{"name":"@balena/jellyfish-sync","version":"6.2.7-renovate-balena-jellyfish-metrics-2-x-14161ffa0b702c09fbaa066e118348995c4c70a5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.7-renovate-balena-jellyfish-metrics-2-x-14161ffa0b702c09fbaa066e118348995c4c70a5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cd4db4e18d48d647a8884ed9a6c0d63823ef83ce","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.7-renovate-balena-jellyfish-metrics-2-x-14161ffa0b702c09fbaa066e118348995c4c70a5.tgz","fileCount":25,"integrity":"sha512-Dz39oGzsEqZGl4gDBq7tQQ2vuwjSk0ZpSQ3fpurMsAqtPWp3EgjFqcoA9WQKdLx4+tJ1bz02WRpqy+51b+wShg==","signatures":[{"sig":"MEUCIB/S5MAEHB4zx19wYDKhRVencZ9e2OzjKOi2RP5Q0AvkAiEAqhX74G+EJEa0w4XbdQGZzsDz/F3HVT6dTU/KDWqib2A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz7FlCRA9TVsSAnZWagAAjw0P+QESNj42cLTpYBqVN1rG\nTgIOlOwNcZtcnblHkizlmo0Mx8ijEubGZMl5tmAV1XqxU4EquKOc9/qLsDPh\nSfODIfUVQGzyDOs6d5PqMSKYgOkuCET+6+1c7oXl/AD/laxXe040bsqQks21\nUYwXeIu5GrA6RNtkEAL1RAtEz9CS8bUrJv4MYDyApHfurOz8C1kLBjczNFCN\nNI6FgEDlPrqaxZYeGmlYPR1Lj9AmsRVOeZRo6CO0efX9YbN10qLgFT0BeTvT\nWB0j2BvUKKa4jZj3zUTs4iY2i0nGaunG1Mq4o1YMwFLsgPc6vYuF9uHq+4mq\nK/aieoXFoU+3SkeEOjQQwjmhV4vYVBIFSfSHJWo993mG/4ot7Hrs9X395bFE\n3TyEQj20wNs3vuaBLfO/xacRX8SJMuRaUjNQ15fuJFwWz3GciQ4UIHEEs4Rs\n1h9KJWp/7y0JLutii3UD+bOGMwuxf82cEVJQzGO7FmxQF4ACGHymbsZ9+ZP4\n45N6JBCESewsYJfzXlU/OlNCQ1GvtfVOLjC7YPsxHkRnATmM8nFQfUndFUzf\nWd3koo1pQbMlNXYXGCxfzpk8h2jwx6FTL1FSidHH/IJGgRDVnBSQwGqAL+tK\nl5GOdpZH40YG3F0skPP44oSJgzuQjny+b1BUTWyAT1vNYuwnaRpyAFc3K+Oz\n73xM\r\n=K4VE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"14161ffa0b702c09fbaa066e118348995c4c70a5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T01:39:12.869Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.7-renovate-balena-jellyfish-metrics-2-x-14161ffa0b702c09fbaa066e118348995c4c70a5_1641001317412_0.6252425737031062","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.7-renovate-balena-jellyfish-metrics-2-x-072940212ec773504bad62082016680bc4187b44":{"name":"@balena/jellyfish-sync","version":"6.2.7-renovate-balena-jellyfish-metrics-2-x-072940212ec773504bad62082016680bc4187b44","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.7-renovate-balena-jellyfish-metrics-2-x-072940212ec773504bad62082016680bc4187b44","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"527c62fe4a1b434f05949dd33820752819526bad","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.7-renovate-balena-jellyfish-metrics-2-x-072940212ec773504bad62082016680bc4187b44.tgz","fileCount":25,"integrity":"sha512-d35q0qIulCGmY7VXfAUIWdd2GDLCC6hwU9Jry3EZ3xI4wm+UvkvCEZX0e+Xn6L+5y4UQ75A07p/mBff7/b89hw==","signatures":[{"sig":"MEYCIQC0jelCBlPuRMGyo2Tuoyv0QCZnG8FpPk0atJw/GHmG2AIhAP5sPc/rkhK/JSsoNH93kfAl/d/UPv0LR6Ydfta+pT6m","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz9F9CRA9TVsSAnZWagAArJUQAIzbhvZQgmKxgbiVMSfE\nBXIwk5QFQd4yP8pJbmXEkGitRRPwSPLeJayq1Sj22qGmy/RAEJipiIZkLazE\ngdDLwYbzvZrVSmm/8IDRZhTbgnAxlAraq9KcjnBE9UYXJX6xsDya1MQb69Rs\nLL0vENKB77QLsoNbySVvRsjlQ/iMinkSM17KE/3+o4RK5ThGK9ZkReBy+CBM\nYxEiFE5+xsxjvzcaGVNWurGpnBoiKN7nY8SwWKSiFieOEZKGyzDipVoUXtlL\n4anZGI5h1U8i43lOGdgC6I3+rle0DwBq6+m4E4PRtkAkfv72wsE9H5W0fY6w\nSGcaGLcdCoO0VtuJiHQjHuSVM14Eog4I+Bkpe3XXTMFvzf0ZUlQXrVE8Cbrt\n84khRenUjWjI9gQgeNQDmAqhspUfkvayNWrJuUSsgxdrtIsNDLqzfEjx1Bv5\nSvSTFdm3FG0gEQiOnUfTmVwQU6ysAbf+2RuHnyWAAb2w0V/7Q+JKJVi+vsrv\n2mkvDPQ7POsRSRhNGwef2XIBP1YhUPO3QV0d9FEMDf3nRHsaaMv4ayE3up7X\nIcJMEtKXpnlxKCetS8Iq6Nr7Y1toOd8mRIqEyx1AMPLEZuzeIGgMGOR/hpjO\nxvNYd86Ckpzj55z9gLQz6r3OTDYu4IdOXKDrxBIyTsxXOHDuA8khv+jPDRkI\nQXw7\r\n=CeG/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"072940212ec773504bad62082016680bc4187b44","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T03:55:29.186Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.6"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.7-renovate-balena-jellyfish-metrics-2-x-072940212ec773504bad62082016680bc4187b44_1641009533567_0.43433485708300634","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.7-renovate-balena-jellyfish-metrics-2-x-88efdf0ed3f4783249ca0ee94bd1680978afb270":{"name":"@balena/jellyfish-sync","version":"6.2.7-renovate-balena-jellyfish-metrics-2-x-88efdf0ed3f4783249ca0ee94bd1680978afb270","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.7-renovate-balena-jellyfish-metrics-2-x-88efdf0ed3f4783249ca0ee94bd1680978afb270","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4d2d1aaa7ef3abf9cc3df233f63d2461c652a543","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.7-renovate-balena-jellyfish-metrics-2-x-88efdf0ed3f4783249ca0ee94bd1680978afb270.tgz","fileCount":25,"integrity":"sha512-UUD1D5mYcAaiM2zbJFjWkEC583dUggHBOO4Cr6yq+1U2ov4nh98F4NFc+YQSjayVXgc8wyGfEAN3c8NJzGh3SQ==","signatures":[{"sig":"MEYCIQCvpiTtPwORojGarY9qlXOBjtvEUCJgrsBKdMHcu79dYgIhANrz/aDCGSQynUCRsBV7kLGiyE6E2UewJtjGE9lic0L0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218343,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhz+63CRA9TVsSAnZWagAAgesP/2souIk7FAPD+HDP48pH\nVnM6kPm9/S5ctMVjIqfrj+BCnU9MNNsJBV0vKk655HQTzrfaVcVryegoBAhJ\naQPTjr1xp3Uo7AARCCFwit9p/W/ckr7U9+isviHoC7NXkOjx41Iv3Qc+oRMJ\n9JUDdxC686AtI+XAeCUWz1/x9/n69uhnlDkKs4aeTc6ruhVU1kpj/Wo06CqM\nnLTmQ1pBI5DymcSVMawvfdK8II3Iy3/mnhxrqLQ9nLljCfCCweDVJmj7o0OU\nDtshxDSEkTL5j9DiK7PzgswjD77blod5ADrIW0tJpt/78cy0OyCawXb6HBto\nY4pPAjdTHdwT2N/M27XE8fo2D4fRPFdUoSPrIEA2CEFidQGeKTWYnlhfVRdg\nlPtyxkqrWQdW5k9gdeMPCrJhh02K3PKWGAWpBhCH2KaPmjhdeKtXwX9BumV1\n1YHrtsn2jC6TxQ+1RzNALA7VjWtcV2/nPIxqhHy/FVTCVSu+FhMVzEksx8g8\n4zjnkDqqspEKBLlzZWs38eWc+4/amTOVxptHPBXByp5oLout8/qcXYo23T4H\nEZxDusESPaHuE9cr7yFqGtWSE1zF0yGhY1JSBcxUggvgk05EkjYHY+s38EvM\nhspkr9McBigLmvRB/AosUeVn5w+sB84IoLnFtdqD/t8TuIxhhUzc8gbX9+FL\ndI3X\r\n=0m/Q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"88efdf0ed3f4783249ca0ee94bd1680978afb270","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T05:58:43.706Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.7","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.7-renovate-balena-jellyfish-metrics-2-x-88efdf0ed3f4783249ca0ee94bd1680978afb270_1641017015135_0.4495025097530927","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.7-renovate-external-non-major-23abf04facdd38fc6825697ca324c432aa644e60":{"name":"@balena/jellyfish-sync","version":"6.2.7-renovate-external-non-major-23abf04facdd38fc6825697ca324c432aa644e60","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.7-renovate-external-non-major-23abf04facdd38fc6825697ca324c432aa644e60","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1d4ddae959dc4b692343d1d5a37ff85dc391482b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.7-renovate-external-non-major-23abf04facdd38fc6825697ca324c432aa644e60.tgz","fileCount":25,"integrity":"sha512-fzYAP1r6B8M9CKPWxDmse9099D/aIPWsigrNyrTVe7fXrxG5H2f4DXfcvJf+4oWYHHqQKe1aXxqRYE6nW4F6Pw==","signatures":[{"sig":"MEYCIQDYdZQIevYc3qw6muK2dOZd9js87F353eCPYzdiIwQn7QIhAOv/KYGY9g9oOgdSsufetgO0dQz5yASc2phkq6ohUadg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218329,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0GfgCRA9TVsSAnZWagAAxWQP/1C3HJ5nlVaPqg1kQft4\ngCxW5B0GBuevUJHupzhauaZWvgij6r0CoFNfs9htvazs8kD7LgBg96zfJp0N\nUr3bgC/BHTmrR/HgcsxaK7AXkImyrY+lx96hiok6wDDw5QlgIwfcZVxktrWV\n3qkhf/XHTsg4mTao/lCQo6ZDURMV2ZXEABVGy7hCNAIjctvRcuQNTI2vsIqk\nScrghJrlTcSGMxE+eKbssdV3Vy+Bm07S7Un6d6oFYLYBA6+wbloKh7neTHQl\nzEW7ae5MezrbgsDU4oj/e87slVppmdmvX5siowFtu74V0v7FUUWTFP4qB8GW\n+k/gOcF5vhzfGN4qFG2yxzkfYR6P3RvGuiJHrZ1B7xrc1vLpWIQcjNRl7WZ3\nBmxUrZtu9bvLJ1LQjphXufsb5r1gT3I1D2qjU5qxzIAWSqNd4KlUMqkvHWOH\nBJfj8pykQVqLrQ1t/+MdQHSZVQX9CdQm1tvkiA2wv/GwT1+eVqT2SN/OpsNn\n7FBCneZvbFngwcadoPpJ0Jas7sa2wTmuwLQAJ9rvG5aG/0E5qofx4U1ZAXDd\nbFKHLb7j+5xf+E/xX0o03rzdktVqTpjI8SDK9l5djgG32djeGfIT3kKmOrjz\n0Vy4G1H5ZVZ8RH+9TBnNbJUJyYBgzLAUoMYeBiIoClRXpeQy90FVgQLpSTmt\nLUmH\r\n=mRhf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"23abf04facdd38fc6825697ca324c432aa644e60","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T14:37:21.512Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.7-renovate-external-non-major-23abf04facdd38fc6825697ca324c432aa644e60_1641048032469_0.23720632605844671","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.7":{"name":"@balena/jellyfish-sync","version":"6.2.7","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.7","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1aa31a953af6210a24304b2fd401cc4e4d23c3f6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.7.tgz","fileCount":25,"integrity":"sha512-gdrh2XjcbApVdK4QxQDsCFy3u7V5PyYmaFe1a7LQWoUiXVPO3ZqSo3TmuLd+MbhTH/iF0rtoA1H1eVPcIvlchg==","signatures":[{"sig":"MEUCIQCyBIkA70r5dVFiUnocCKL7ejw+Z/LyDeSRI1fZrq2IYgIgWmXadaADlx22sP8tsRU9KuBl1A1+cbYAcwc4f84C8+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218260,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0GiHCRA9TVsSAnZWagAAsOsP/jwUcc+qMAIfsS4WgM/Q\nXTsKIyDOh6YQxcmabnBqleV7z9im+uDW1aiari16jJb8p+75qLguqN49QpiS\nzHdxoM/KqtMu+Waxvs8oazAvcqVTT61VEdFB8lz8bmDdzQHqq9Q7MdE7ElW7\nQ8cbbJi0P6TYD6VRuNSZwJPRpMlrjCsBv6j2sS4c7kkTpnLTcOOFuseVYuzU\nP6IBNJOkRXSILHRiRZyfIPVakUlzlTOzmdHImaHY3mOm9qCbfM+T4ggMgNr+\nJpb2lisNlVvVg9wl1rkTf0jF3O/lBOs4lT8LIjaR7OpalznpJ5tFwDmOqzTL\nW19iyuntRS1xq1IX0zMY+N4qEQx8GalDGkKtDK/HRO/FoiBUiLRrKAYyoi3S\nsBgDwq3xgQMLEH0tV8TF4JIT9kaNHjtIdOTVaeYGaXJA2Oonw1y8iWP9W6JI\nk91+lhGp8+Zuh3WSaTuN8MmzyHQ+1Rc9BOJH9eSaEg1CMt2g2u1RsPcZEOLO\nHj6hDSMQg8VBbHVafTKbnP+y8ynRfvn8zwjfRFtcSC+d+FkKW+0T7PjICv2s\ncygvF7PfsjE8IVe9Oep358IQ6w+z45dlz20n/IVzIIuz/UCA9k0VhIvgF31i\nekMvpqvqem3e1jBCYZ07D3NQSVyhzRQr119IPkBiaDuGvqb99OQGNjTGOLEW\noYYY\r\n=hR6K\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"187c8caaed7e09bb404e7a5898397957ac785724","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T14:41:34.938Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.7_1641048199399_0.7695486930067785","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.8-renovate-balena-jellyfish-metrics-2-x-51dec4ec71c9c8902203260bf7f6e70071978be3":{"name":"@balena/jellyfish-sync","version":"6.2.8-renovate-balena-jellyfish-metrics-2-x-51dec4ec71c9c8902203260bf7f6e70071978be3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.8-renovate-balena-jellyfish-metrics-2-x-51dec4ec71c9c8902203260bf7f6e70071978be3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3b0d32a5b84e8367d002d01cef4ce63a3b3a6eef","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.8-renovate-balena-jellyfish-metrics-2-x-51dec4ec71c9c8902203260bf7f6e70071978be3.tgz","fileCount":25,"integrity":"sha512-9+nrx+puZWBwQgQyrMJRjPa3DciCl1saB1wgKEgnGoi7+m2CbbgJVed4dYVTTRuJiiBD4bTmhtsAComULGpZEg==","signatures":[{"sig":"MEUCIQCtR2nVYxL/NMiZJzxmsMgb7bPHCYmDQ5s3KPhOi+2QawIgTN2Mpgm4Iw0BUoWKLaoLCoiJi5ds282bFzpc/YdRh5w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0GmvCRA9TVsSAnZWagAAdxUP/06jMx0VGk8WON5/LFkd\nwmyMDqj63SV14few/6uN53r4CTXArfB76n2zNUnFU0VHQMROEcRXWj6unCZ+\nV9RspL5nvBm3mrYtGpSqTsmJrA6NxEl6rsLEIKkVZVN6oWTn2udGVO6RS1HR\nx5xjYZ2yj2oW7gB33tda2rtVBh/8Av2r47cDbOFp3qIOqJYUx8k+mHNMrpJC\n+m58yixDbhe6GkXhFWwAl5lSRAk/A/XEHv6YbD3YQ2bkjdzdIJoRqH/ZJ9vv\nvX6A5SAB1h27xFOsCLWhygLHWD2VLs/9uG92KEvphIhTklfiwdPxLELhuElc\nFYUVHHD3irPRcREMvD4RQ5D/AZKm4jfFy8G8IwGaO+VhU4kxHQ+u1X1WUHty\nuHOyB9mHU8QPTuaDeONNkjUR1BlB2ICJzpegroNuKf+bCMBOwUqFkE8qHVJO\nI9V1wvxleJSoHwCg50ZHFeH9oh+4Nx6ufUe34gp5khm54cV1X1dIWrxDAbID\nxMIk5SUD4tmYQZ0iPfd4sr0HUtkkVeazcDMTUOcyHwrUYilLbf9rEYGk2P/J\nQkQd02aAOUfInjc+7Gk54XryaIuEa1wsmKmqkQmFpxRbrXtyffd+yaJ6Xp82\n577ZXWU8XTYRBtq9/Umoh9oPA5xfOwroUF7hqUTaoRS1eOCjCw5DfTaGuz2/\nHIxI\r\n=s7K0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"51dec4ec71c9c8902203260bf7f6e70071978be3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-01T14:45:17.266Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.4","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.8-renovate-balena-jellyfish-metrics-2-x-51dec4ec71c9c8902203260bf7f6e70071978be3_1641048495280_0.18510231077716188","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.8-renovate-external-non-major-10417c264e2e2c317b05400944ce6c26a95095bb":{"name":"@balena/jellyfish-sync","version":"6.2.8-renovate-external-non-major-10417c264e2e2c317b05400944ce6c26a95095bb","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.8-renovate-external-non-major-10417c264e2e2c317b05400944ce6c26a95095bb","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e0a8136a7b5b8720c1a00cb44736ae4c50c0b5c7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.8-renovate-external-non-major-10417c264e2e2c317b05400944ce6c26a95095bb.tgz","fileCount":25,"integrity":"sha512-tXrmZsc4ZnAmv5WY5Lg5Zfvy1oqrPixk/FSCS/guCVKDHmA197Rz7tBjTIJKgrV3n7wTPjpB/DmTobDfHpNKlA==","signatures":[{"sig":"MEQCIHUojvzZiPUwSGzYaBg4tyH/8Lpa3NdWPxrE8xgAtFBZAiAHylQknM/2p6P55gtqT8uGOL5YTUmeXyI0D4HyAzKYhw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218418,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0iUSCRA9TVsSAnZWagAAH2wQAKK994fhzCPfBUkzof+D\n8VEbcrg5DUvvSe5douGNiS+6CWbBWgTbjB6buKqc8Q/K7LNzqiQ2qfLMkLzq\n1D5miuTaU4/ILWbpnQFummvDtOAFlWNFaPh3WAi9DwQdQges8aQhgRt6vYxL\nVD3c+GQXKaQ3tybD5jQiniPdpNjMD+1NXnpkVVrmAiQgN95VehyHDiKs7mH/\nFrqCuEgQXjL/NpfbD3RwOngsiE9C0DfA0Xd7RRhBRn7RdpW3Xt54l0oD3HLO\nDGlWh5mUcgMw/WlP0M+HTWay8rAdDoSpiuzCpQnjblAQbY7yPCzAKr35nvk+\nmXMjsLcXuEGBih6CCJIq+ai1BDvxnMqL/7U2KJOtAi6uqdbQrIUBQBzIRQXR\nK5Rl3yUrdXNz6xCXxby7pZ/tth7Ms379wCDJFPj/tFy6CmCFEOHkWXtVH1jm\n1u81MG7CK2CTOmNnboc766mZND2NjRVAe5dnUKZHUOHAkkNmdGpUMgnUBwmY\nksAPvQfq+sBRipdi7c4+X0MYVPT8wACkbe/SCX+vgxXgKj9hoeR8FAPBaXOx\nSer8JEpnh1FqNNk5/if5auQBzl7zGgKN7l/Bwj0Mx52b5Lf52J8J4NTR/yuT\n9cgd0i/1GeRWN4H5wYl5ZfmlVnqov9ydKb6h1K86RMkCO1ai7JgWSYLvgQcI\n5tHO\r\n=Duxx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"10417c264e2e2c317b05400944ce6c26a95095bb","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-02T22:16:34.082Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.8-renovate-external-non-major-10417c264e2e2c317b05400944ce6c26a95095bb_1641162002398_0.8959957850892548","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.8":{"name":"@balena/jellyfish-sync","version":"6.2.8","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.8","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"297ee4bba5f27391fff112d3b14a528c51ce481f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.8.tgz","fileCount":25,"integrity":"sha512-8+BtBLUIwRP7WGfRQYb9Pxb7D4lZwMZwp3ScxJMRSMej44C8tlnoCcwdhpJaWcnBp8Rd7YmslvbTxRkdXVvavw==","signatures":[{"sig":"MEYCIQDwHVZ+yY+NJrU2+2B0ai7JBxjdY2G+cRnM7bivIL6gwgIhAMG7iC0gQkikBB6nQK9KNBCZeNKQuCnjJIPxLJpX+AyX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0iXmCRA9TVsSAnZWagAAGksQAI7JVw2arodpX68wa16q\nROc/rSZaWtVfD9Qeqm/PM99wgLcvP/NrvJa9NbvOCYBC5NvxAMwgtHcVdkAX\nKTy/poKGLa839PJEVC0agUDwMYq3rMUZUBh9NuNyRlOfOGzqMeztYadV468T\nQl8JPt9NzT0uwp9LBeWTx8p9EOCRH+vAJHo1NFXyQtnm8iAwk0GSjSqqK0zi\nM40PUXLQzgci7/RSHWpmgCq9dGwHvbmVFIi20immwenWujUlcRwxeyuufjWb\nVfv5BUkaX1C9smsooZKHxBdiUaBzD7+yXtMIm3fJle66VbHDDCcr+xvWV4HE\nDZoIM6f+THTR7wVar/lI67qYC56MZmJ3YE8cIYI65RPFevAd7DULQsZy7ZUq\ne5BLjypkwL5Pf6Ufr1l6S/irAiaRTI2wpBE8ZFE53h2vDD5EBmrbU6vmOrIo\nmu7rdDoxACyX0bgDEj8WvPwhJF760C+4YK4Ia/cWJQFy2w5wIw9NTGVdOnhU\nns4zxOkkmPinzMkWqCzvxCt7200LC9crDmpsOzwi4qeXsvLOqsUDijIUY3EN\nPQfz/bbDVPWEPv0GUkbNAz/xJltBiXr1vNGPl0aIlCfiXuE0juVMfQBGqWrL\nMH1DmwMwqpfmFhf8xjovsIH4PxJOCI2EYQ2vyiS/fx/2DsQVZJQuKK5IsFWx\n973D\r\n=ku22\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a24497db22e3cb136e01a5d2afcfb0996ef7bb23","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-02T22:21:33.439Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.8_1641162214489_0.9488417553955586","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.9-renovate-balena-jellyfish-metrics-2-x-de7da5da597ad967ba0e71cc325f347beb3e7b65":{"name":"@balena/jellyfish-sync","version":"6.2.9-renovate-balena-jellyfish-metrics-2-x-de7da5da597ad967ba0e71cc325f347beb3e7b65","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.9-renovate-balena-jellyfish-metrics-2-x-de7da5da597ad967ba0e71cc325f347beb3e7b65","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6032a451ee5f5c0c43b48ab1e80a449e01aa93ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.9-renovate-balena-jellyfish-metrics-2-x-de7da5da597ad967ba0e71cc325f347beb3e7b65.tgz","fileCount":25,"integrity":"sha512-wwGhTCR1vmbK9ffxkweH17wFxkUz2zHl8THKlI0EcmSAoWlEsThXwS6iZJZaLS8ciwiYjXu19BwMF8XmmykJ5Q==","signatures":[{"sig":"MEQCICSe0HY4L/f7rYAPr+6CH9RgnFuZY6oOEsB+ZDUrXa7MAiB6shXf20czuF8gEwKl9HnRjIUIkSLT9kbvDcSvt1oDiQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0ibgCRA9TVsSAnZWagAAPXoP/1enGobadnbyzvDhuHTk\niJkxKIXwCA9LthwnqPmJiFYczq6rh506jyDygxqtsNXq/mIT6pcF0Ed/aw+v\nNBItdjV6vNeQzaOyxwY2hC7Dm6/x/gesY3qufB8x/gCtfxk1Mpx7JalCN6Ln\n9WhVCrlAd2Tl5FzSZB8PCCTeAvK/JNznO8eMnBU+AVMvIwvkDKtr4ESa2o/5\ngzcKTixWz6+1QW3EJ7DMbgHdUbnc1UHIfsRqsIbjeu1+NQ3PGATssgRd1d59\nxuigQu58/xvA+sui4bc+oFoXx+U9ZtIo5XQMWEmn7wr1DMo1/5b9rU8O36w0\n616RUukEdJByIF4PqAQs6a7NAFgNUnoLCaxSXOFakUWdXRSUGpbufAB+qYZW\nCQDdUys0ETX11QQOqBrmjLylBXr7nZSijLTIy6yxKGj9ZSsqzzJNBUz+Waw4\n0AU29FMcmDMH8bf2ltxzjCwu7XXZgPDoNXvJeB+OAiaCMXVcrSgZDHwr4JUT\noZGAfPV3WmrgRyPEVzd7/Zwq/dkuhfY3w617rNrqiU1GJEOC6F3YkH7GUoyY\nNuqER2EJfDNV5Ls75Ckg/68wQFQT4KQ3Lu6XKPCxmH5T30As+bvO16caKPbR\n4Ps0IDRqIwUhFmb5fM5IKgmFCaBgKOVamuSjbXDaBmmUGcbmOcCp8viSerVu\nKCrm\r\n=J9gZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"de7da5da597ad967ba0e71cc325f347beb3e7b65","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-02T22:23:33.357Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.7"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.9-renovate-balena-jellyfish-metrics-2-x-de7da5da597ad967ba0e71cc325f347beb3e7b65_1641162464241_0.03512912094961451","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"7.0.0-joshbwlng-update-types-36f8d61845f7e740e087026b6a45174c5f6e43f2":{"name":"@balena/jellyfish-sync","version":"7.0.0-joshbwlng-update-types-36f8d61845f7e740e087026b6a45174c5f6e43f2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@7.0.0-joshbwlng-update-types-36f8d61845f7e740e087026b6a45174c5f6e43f2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4fcdb5cc7253a9dc84bf750e24742a6637bd7f03","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-7.0.0-joshbwlng-update-types-36f8d61845f7e740e087026b6a45174c5f6e43f2.tgz","fileCount":25,"integrity":"sha512-7Tcf0TnFWLQ+54Rwcd5xjUNygCsSmsBGu/qQj5fcPBsKb+bLJAZ3QH9CLUkEttVU0naHsJkiAraAZOzxEsCr/A==","signatures":[{"sig":"MEUCIQD1zT/4QzU8u+1uToDLrhkC4ZN84ZFXoRUQl5IsOvSNvgIgOAlA5Lt0cOMShayesH+iUuE7fqxg8aeYCNniDjg8LtM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0lFnCRA9TVsSAnZWagAA7u0P/jvpXc5zgjY8mgiWMg5G\n9TXHKBBc0v/5V1CTJYii839iuhtWSQbB326iqlw26AMkWtgUIxQz04UO69wJ\nIJ0okjDRNEmSFT87nvCzrzp1W9Rc1CEOIud6ERuOqG4o5UbEjxglUpz47kv3\nI6UOgcx9tL9oKLx9dS8h+4e75zuxRjrK2k4nT0kyzcMxWm2fkIzv0z7YIw/k\nI3SmGVp9Mz/0NEsKATNXunROFB1FropWtdcXcMn2Pb9ILoJ2OYi/hbLfzqKf\nJHjgk+rQsXPM/XMbIK7I1YOvUxT0h9K+u5AdRvbVS8t7H/v7s0U/8sBGqHSG\nG5yQ17+Kqjnko7qUeWAEyWb6vsd8Du9ffP//mCne9mlg9rmV2YstXmTi+EJe\nsPOSg9ZdpcAzqOJ0iOPYaFZsl7q6WUfVdKmqxVoC4iCGDwYDNcBAfu54cSaJ\nCoCWLYsQYyj1BxljmyCvWJYqLyyI1YF6Nk2rxqjGOazG5PNoeYY5b/2/i+1E\nf5TcxLdUpSGAiHKXcdrqLAKe0/J7drmx5M7qAqH7f1VaxmFIMV5vYOgpN2Sp\nFdH530HCp6yz/i/nz3jJ5a/rcsltPb3XKXdLK4xCrgFIiKJ7eHgI0yKsmH/E\nu9/uRW5UJ2I5vgxCeElYkyWaq0sI0GqOzJytPU1qedYSKPe3JuJsv3ijI/yd\niEs0\r\n=dblY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"36f8d61845f7e740e087026b6a45174c5f6e43f2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T01:26:17.576Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^1.0.446"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_7.0.0-joshbwlng-update-types-36f8d61845f7e740e087026b6a45174c5f6e43f2_1641173351180_0.3393754609790216","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.9-renovate-balena-jellyfish-metrics-2-x-b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef":{"name":"@balena/jellyfish-sync","version":"6.2.9-renovate-balena-jellyfish-metrics-2-x-b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.9-renovate-balena-jellyfish-metrics-2-x-b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d643d998b8bfff0312464ca439be80133b8687ab","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.9-renovate-balena-jellyfish-metrics-2-x-b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef.tgz","fileCount":25,"integrity":"sha512-/woNx4GJYxCRRLTTrJN5yaA4do8hNae2nxjZeSxhUhw+kKN+yRzGD8pbpCYGqPFL0AA0yb5iWegs035ylDpoww==","signatures":[{"sig":"MEUCIDBscwM0I+Jy2Lbvj7yuR0tQqRDAVbpoj7mAWfA3V8K3AiEA8MuRLfsRFil5J4IKlytRALwMmTR1c1PCeZO0ob786G4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0lGaCRA9TVsSAnZWagAAcgQP/AngsNy7aW0BoMgyEHGq\nQnMoA1YQ1DKtO3aze8SI1Ice5gFKZTSbnbJoYP6Psa1vxhMQsWwhyS0Gq0eN\nDpNZbsY48jvoDIO0KiMe2vY84GatrXAWXcMV9dZJ7mZsxm8wBvJ2OCSSV6Pn\nOxJi2MHxzVV2fTZSKN3YIB/b6IFOqmSTpha6hIYxhzKOr7uAFG/RF9S+0w7j\nRxJaWnP0xcoeJIEY+t11o5Lu+C9vVT+b0znJqMSAayOJy6m7tTE7ZF0D8G32\niU2RbGrjreGsYw/Jljv5dKLNKfzQTmU2/qDs0MVa+YD7oxIXQTeaxPBU4fQj\nTCdyS3AebiIJ4xg6urcBd5xHK9AawerZk8nlWQrr9P37/f9CZaD1EsunGy6N\nx9K7Zdu/sgMWsYWm4C/hXj27L3fUEZR8NVqJ9wbSd5R9w4UJ/hLShhJO4MB3\nZ5J0o24TeT2fnht5WBAIQy1jFeVC+I2PMJC7hpRQuyKQl/ikcVQ1tUCEZsqY\nou06K5Xy3jGa+o6UltnrNMneaQ6UIjVZw5VKoMIseQvkF9lnBbausdJF+N1J\nJQM1EHBsO9kih6+plLhICgmviYKXwgStYozeiRsngOPwfH5+pP5UlxxsMZnH\nSygBc24F2tKTYAOs4QZ8qsSKAf8Cn6uf6eT5zab/VQNCP77GScmGvvXSFPm6\n9vqd\r\n=HMHh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T01:27:31.862Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.9-renovate-balena-jellyfish-metrics-2-x-b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef_1641173402030_0.26997944569468535","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.9":{"name":"@balena/jellyfish-sync","version":"6.2.9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7a972789a4018e0be6c56948778bc0f6815b69e7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.9.tgz","fileCount":25,"integrity":"sha512-yWfLuN4zGooVWjvaV4bXJIAfZGWvBg2ASrrSx4YYgclEjCHNosy5snl4Gq9tqHkbWb1Z0l2KaBgdCBl2vkVyxQ==","signatures":[{"sig":"MEUCIGEk75MIYaEW1n5JAl7neHRvIoDAjIgBCgy2ciky0Dr4AiEAtVRIsYYTSeVw3+b/r1EQUoZ/5doSSoyAgG5GaAEcp8E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0lJhCRA9TVsSAnZWagAAn50P/1Ff6dtVqTgc3cB2HKIQ\nIOVk6Uj8R/9wrPXq4gzYT5VJrJLOg0KK/0nDqzknfLD6koS9fE7dx7FOvuTG\nu6bAquWfiDP5pVdWkOl9ovOzANg3/qvHzPlYfyIssUVBpO3GnqZnIryPZQvP\nBCpLgutBq/O5XzVG9l3Skx147DCBFzsg8LXDGkcH7PoT9DsXKyTC5JLeKOs8\nMwJUcVs1gxKUMHyuHwQHy1uJh50u5y5JvUwugx5Ggatpo1j6xrfYhi35l6o6\nLo0ISmNjHdQYlpoOU/U7IFpslAUiYGybe28NzTKyYvxoDK1i9a8Q3XBwvmUw\nf64V+CEoYIGgzUuQBnm48LzC5R5NG46FtkTLZjEkXc6VopMTGfbyD0fTxYYn\n8orSDMeJw20/tbS8RIAfb5rUOfIg55A6loIt+zJzFGyaUe9+LEA0JvsGlLym\nVWQMw45hEBT8GdEDW6r5flZS2HPGo6IPPInJ1AyNf+VHyy3nDlIQXilPTqw2\nv76dPq6ffzOLwhpV0b/q9BNdJQ88Tnqd69NwL2ix217kM9ZQ8j3X9zEfbMCy\nqWeHNDGgKTQ6EB0xQmHJsNViji3TjlFaK0wmvvNUpdhedfBM1ymekT71bEyK\n7qOIONYmPk2D5LzAC+CYb1E6GVqZmqKzIjaXcN5GsI4bXPlpug0tKMCKR5V2\nnE75\r\n=PEJB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"33c564e67bf8d56fecc9e296bfdc1b8da1bfa6c5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T01:31:18.742Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.3","@balena/jellyfish-logger":"4.0.8","@balena/jellyfish-metrics":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.1","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.9_1641173601374_0.31738558764051894","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.10-renovate-internal-patch-17a784f891074b3cb0e0b41a3b48bef6f1e0462a":{"name":"@balena/jellyfish-sync","version":"6.2.10-renovate-internal-patch-17a784f891074b3cb0e0b41a3b48bef6f1e0462a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.10-renovate-internal-patch-17a784f891074b3cb0e0b41a3b48bef6f1e0462a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"352f26124c31289947ffb2ce411c30ab4540c3f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.10-renovate-internal-patch-17a784f891074b3cb0e0b41a3b48bef6f1e0462a.tgz","fileCount":25,"integrity":"sha512-A3NCpQ8H1FlmTQEWpAHVIq8k5hBQkx+VSLpmlcVifp/3ASay4ddG1/3D8OH34hfk9iNzP6p6Xomov/zQS0EchA==","signatures":[{"sig":"MEYCIQDU6FWBN46yazG9k//lv4uOq76xEKViDy3N9b45d4SoqAIhAOErK9IHzHGoIQc52w/ax2vbb3vt5Mk2zRrqSGi4D/CG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218583,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0lQJCRA9TVsSAnZWagAAGuAP/3Ti6wa5mbHG1Knh2hDd\n7M61B1YxezwyCnrTgN/eyUx62Ddl4/QIwTostr7tBGUvKZNqb0u/j/IBePZK\nXhzoEf7EOj0b+MgEw0hNEXsCTxB1EapUWWoqds5YuuLYXTdBjivycSQHeaL4\nKkpERfHXQ2U+7ZD/afG6QPYOLdYm7+cNcN8+uXjApz5qE4Xd/kXB2WrpIATf\n1TwrQjiCDIaZbNOsxc7VkDW3+72blJtVAZTLjkVWBvbEC8UNhGsuxF7yklYs\nux2EheFCRBo00hXPfbCCOdFEIVV7mvPpp7t6YyEQejhGTgv5JrS2Rpbxe7aY\nu+INjRXiTJxjt6HgvA4bPp46sevhQf0IY+7QhMemyCj2iD6fjSDLU872tkHk\no7Tbc9zj2kuua+jkYUeytp807KgPcfxMYSNi66zAXLRy3ySU/VS7P3hIrJfX\nJ8yRFR2tHB294dby7EQM2UmePZs0QPrdpceTSZBWDoNztG5ysHVGGzV7ZPB5\nvs21gsy+Q4kwU60YDlVuX77mxyE+BvsI8uLe8c/IGQ2UFDsM0AoND8pAzSYU\nZ9m9d9SjeU6xYoYFJo/ZqTr2BGANRXjlOPU+J2UkXvQ7jbxGG31jpJPYtKlm\n0g0PA28gSwVzZksvmH/EX/GmxvmzzsTcQQkHDBTPq1lBiXiS8tx4gTHd0KOt\nLLL+\r\n=qce+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"17a784f891074b3cb0e0b41a3b48bef6f1e0462a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T01:37:08.745Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.4","@balena/jellyfish-logger":"4.0.10","@balena/jellyfish-metrics":"^2.0.8"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.10-renovate-internal-patch-17a784f891074b3cb0e0b41a3b48bef6f1e0462a_1641174025680_0.6876549005743746","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.10":{"name":"@balena/jellyfish-sync","version":"6.2.10","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.10","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2e27e47b449785b6ea09c4e26d03f0f25ea8d750","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.10.tgz","fileCount":25,"integrity":"sha512-iFWL04ulmNsMMIxQ/0KCRCZf0t64yIvHM+ybUWsRz9yqj4F4foM/E0rCtvj2ualwjdMM06OSG/4lF71CzvUdkQ==","signatures":[{"sig":"MEQCIGK/su3g3CQB42FuJ++NK+muwhH4Ua3A6Jso+QQUe2vYAiBF8RmNqLo5b1Ctebp62QZkao4i520wzjzwf3z07UcV4A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218518,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0lTuCRA9TVsSAnZWagAAG2AQAI3CSkAbZ/a/O0pnawZC\nr4G+z8BwCOC5q1gsaesha5UQIL2gQm9M+KcZhbOUDaa88EUuqyaLX15Ir7Un\nTg3T/YE6hhIuLwZWurFvoWCEnY5gaWNFw5Bzc8RndETa7CzdjWXd2Zztj2vi\n5w7pnJ9X2kMvi14onIJhL3a/dXNytQ5Bvy7qRDnJ0kMmUQOUblFgH3sJJUkb\nVaM0lkMxSm67YbnYW/xggaecUhF44phxBxGGG/b6BY5PKMMhKIhNgmOaCUrP\nW8IgMuZXeVE7YqvzNMTFXrfAF00wr39WfoppUq46s01AB6M3qNoUZMWH2DcP\nQCdPPY6mOsNUOI3pEEbCk80srNSzwWLc/5osNRbkrmPODM5rfESUN2P2Ct+S\nJs2ppRmFDGxjcuWGYVgbERjzNeBjVZPj+UDhXeKof+NI3eQI/Pikp+iJNO33\npemduiNzvWgeq1ylAJ5axhULT5klEdhmZl9WaE8nQnJbRi3QJfWuNnJ7mHcD\nqys2b/91/daxhmoUrq9sgW4/DiP6eOqZcEpZHH6R/I6la5c3I+QKhcrG0MgY\n2G4P4dHU54WxGarhjf46ManET5rQZ+IcqVFfoFewlKP0vDCxNQfKzWWOcPoP\nIW9qG6YZKUsVIz1jJtC18b9KT8timzkCkBwYcC2SP7suP5i4WI77rI1H1glD\nZT4+\r\n=sfb3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e2a470b05a9d8277f5225e1be007dfe80d2b7064","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T01:42:24.139Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.4","@balena/jellyfish-logger":"4.0.10","@balena/jellyfish-metrics":"^2.0.8"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.10_1641174254072_0.3472881683436393","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.11-renovate-internal-patch-9157817692a6a2661793375abc139acaa6566435":{"name":"@balena/jellyfish-sync","version":"6.2.11-renovate-internal-patch-9157817692a6a2661793375abc139acaa6566435","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.11-renovate-internal-patch-9157817692a6a2661793375abc139acaa6566435","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"399c1e0c617ab82a5f2322cc078dd8d08e7822a0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.11-renovate-internal-patch-9157817692a6a2661793375abc139acaa6566435.tgz","fileCount":25,"integrity":"sha512-ofRlxj67d216pMW9e0VpMslm8vIRLhBvYn777Swdk9n7TftiVnrA+7U5AjJ/E61EQJMqK6npWz5gIrMF2ysiqA==","signatures":[{"sig":"MEYCIQDrKts2ZLvEx1Zjcf8doGhb9xxLBNQM1cJo+SDP+fo5iQIhAI+QmMfrYQ7WWKFc8MO/b7kXppINel9tR3v013rvT0Hl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0u1ECRA9TVsSAnZWagAAXUEP/RI/+Aa/sk7nKCzODLu+\n6LMFF1G31jcdjM1d5lMNec7Zv2gQno3HVHRqBTxRlypRvIt/X7A/285nrqQG\nauj4W0unPkdP32njODyo/Lok2ZknYijJg8NrjX0nVet2UQQHx8qxq6caKGo4\nYEv2XKxV21ZdMAKG57JpmRLNaRYLvasfAvDFMVL2ITCO9g43zuIZ5zy4+CXx\ndV7FV6aV8PpNM8d8s96SqpdBbNyZjoCbnFrQxcDlKYe4FtW0fiz9guw5lUvT\nJLXxXTc2n8Dnl4QE49e3CoaFNSI/kEM7ubfKJ8xrV7ptR1ZCOB+BLWvjbjCs\nI8pf8Qzok94HpjERAp/mTRKjvd1SyyRRiuHBjBV7XNXkHjSsHbASMbAu8A1n\ncRgfkOSHpR/b4OhGEMNUPAy19u+NT8AIx1Ix1CKBEGwv4bsbdubwg3ulER5v\nRvXsMKOTB7hWIi54rN1UsYX+un5/280HLDTjLqvH41R3Gz0ASZWEMQiZ9BUM\n+j83F1b7QhlP/ntffIrwbPf4ijxeuIpC6D4VFWuZTz26N5D7nj6/JCRFM685\nLAykfgUcnhtU4IzaXxAE5R4Fp/MY32oqqzHx2tThp+xBr+gXhuOR1HqPP4Xv\n46zNcOKrhTT/o7C/LI5vgh9Qiqd0428uFxei8dFagxZ0X5C/5Dkkpd9svNUj\nMs2Z\r\n=xigo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9157817692a6a2661793375abc139acaa6566435","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T12:30:37.242Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.13"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.11-renovate-internal-patch-9157817692a6a2661793375abc139acaa6566435_1641213252462_0.17221159716969892","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.11":{"name":"@balena/jellyfish-sync","version":"6.2.11","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.11","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1cf4538b853bbd40650d2d1956f52f51cb2fe9f6","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.11.tgz","fileCount":25,"integrity":"sha512-t+4UnIcgFg1kBbOssjT+5GiJpJiRMqkjuBiMtHuXfuivUMNrojg91eI68Gk/ttr5D7yQhWVqojZsWZTWpIvBtg==","signatures":[{"sig":"MEUCIExtUYSfFO6DzA5SwH1jhD5+qdghebzoXHnGu7wHWttKAiEAz1/hpx7lR3ZgvRo8T0m+htAh7jnxMamDqUPza4f8aKI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218590,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0u40CRA9TVsSAnZWagAALCoP/1DYpVE23mWfM+Ee04Sg\nUjYLl3Tex1wYdeZtfR5qxBG5UHHP0k3mUTM/ap3CpG9NrJVJnJkzAMhN8k80\nyDB8RGjXx7iavsd8Fn1xXV8ScUIgkuDL8c93Vs6BPBbtzZX4Uosrxp34kelD\nzY8yxRscE8Q3h2tiVEAr6ncfOwlOX8T6uZa8QJcxynGMRYRQ59vHBjPLLKAX\njQD4nvxWSegKAXMpWH0v8L59DZGFgMmHPVa4LLYxTWn1h+UQo8U7N8sXVfxE\nB/P1MUQWqyAGAS+j9uOxXZx5uURqSv+rHVHw+p2HMLBOR7vt4rG+upUtl+4s\nh99gYqneyOEJrvC5LIEs1ixsqWe4sV03q6tHt2kZejmTkMx1abvxHnMmUuvO\nTDO2osqgC+IBgK0Mtwg2EpdneKlgRdVao3xq3yKX5r7efmwKyEpZBuhEqiSz\n9ezjiiTVGtYt7M1bBn6ZtdVBHVfHeAcNnD7iTmrfCZs17Q1vQKRcbA9f2v1F\nlsGom5y+OSUNEWI414wYplHjG/RfGOhG8AWql+oty18jsoT5Ag9unok6iAhb\nl8QSQ5XdqpcuXmSpiIiMYxJWZp6ObYduRWXHe0AyBh0lO1kb6j1C/iUB0YbL\ndbla/A9YC6AH9JoO9KzIY+jqyg94PmpkEH29zQPp+Jwgqmze33/leHmzxTz2\nMLIC\r\n=WYf3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f5a6dd7aaa172a6f587aa30aa222f0d04b508669","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-03T12:35:29.225Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.13"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.11_1641213492682_0.25426845825277566","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.12-renovate-internal-patch-b2727b3005265e78b8a9787a3fef6d7db4fca1f6":{"name":"@balena/jellyfish-sync","version":"6.2.12-renovate-internal-patch-b2727b3005265e78b8a9787a3fef6d7db4fca1f6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.12-renovate-internal-patch-b2727b3005265e78b8a9787a3fef6d7db4fca1f6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3451459dca212552bd8871ed158122f922bbadb4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.12-renovate-internal-patch-b2727b3005265e78b8a9787a3fef6d7db4fca1f6.tgz","fileCount":25,"integrity":"sha512-34nxfFZhokXwZprrHr82ZWzY4k7AKhGGt5tkPQPuvRDQufasiydbJxVU4S/8R3Ea1QSch2SbFsBiYvz6pXRlOw==","signatures":[{"sig":"MEYCIQCXFR8tDZF6vNwMfUSlhjp0Ky/5wf8UmazWfJbx/9bRmwIhAMVwbQzKNkgFDozwpJI+/6d+x7PROdLJFsdzb9hAWIVM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218759,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh06yRCRA9TVsSAnZWagAAVEoQAKI9ua3cCtcYVMOxxeNy\n4YUdxKOlufri/kppNuZ1WpMrQkwOuzgq+OZy2f1BkQWTZvkCwYSkgZU0Hioa\ncUjkqV2l1EaU047dONgLGAATEGTp+ZIbeOTdRLGaNSlbVYzLmpmFZAviNUOH\nyR32ahcgO0wW9JSOh9Z6STFGQzPaCwz3XBnGw6kJFRYM9b2EntZljxvIVfVc\nemDsdzvgvEN28kZl3BmNoIYFsq46uaq8JYhGK4M20B9nBdCQWTyNCqqlX+Dn\neoPH0aLcdHB4mfq5MHDbWNXQ+Ra4ajAvwsamnuxBk8s8SLkEbM/X/vQo9qE1\nH6GKqCfAWHM3m8yXWC95BJlz55A8yxopJR4+NpsX7f8rtfPCPgA5ffMUu6Uy\n60dYR4MrD0NDrGrtu1J+hV0RqHONeoZAL1cWedkAbMtbkHJ8I+MZrllOarLM\nCtXnaXdQK2sakJ1PqHJ/gSKNFRyEB/QXoC6029urUYO4yXZEuO/zA7JmXomj\n4OILlbgoDQ8bHYYGJsAL42UWKEO6a+0OecSjHJpn8hZ3dMxBHm+ocOQjViOD\n6jL2L7Kxb4binzDxkNJMNWm/ghvEptBQQEA10oJ3dnMPjp03XVUTk1yoONpJ\nW3iYFgM1+HQRj8UY+8kDmPRKjfWztXPFrslDWCnuJ+bQUENVJyy4V5zMsOHq\nw+Qn\r\n=MYSp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"b2727b3005265e78b8a9787a3fef6d7db4fca1f6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-04T02:07:23.566Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.12-renovate-internal-patch-b2727b3005265e78b8a9787a3fef6d7db4fca1f6_1641262225385_0.36733757840612125","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.12":{"name":"@balena/jellyfish-sync","version":"6.2.12","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.12","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2a90583f03cae884b9744173604af34ef8247b29","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.12.tgz","fileCount":25,"integrity":"sha512-kkBJQWgzP1NAT53Xl414RY3r1C7B2k0or1HIMb+PdKrn2ELtERHvJTQG8Iy9bKO+/LI41DrHdxQA6ntAq37L+A==","signatures":[{"sig":"MEQCICPC3VajJe0loLzqjHH4yNFJsOyFTalJy0KwyckXs9fsAiAGkVeZjKt1lPyW3BhmZF2cdCsWr9zEu57/yH1p3ou+5w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":218694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh061HCRA9TVsSAnZWagAAWEwQAJMEb9EMvl4sPVUD7zsH\nhq4HNHwmznHsaJ9UJp4KwXbdS/bNulX8Ut4AKuQxEBE77G/SFxlLRD6BL3/w\nro0YgLoMykLDPRz+8oMrJhT6Gpa1p/nS7YQteBCgqsKS+i+93fqqqr+NJ1w+\n0i+UjsJi3UbOiQYBnWB8sg+EW+0jlqRaZeIVlfo70Q4Gp5n36RxeKJhRL/7I\nKCBqcBZu7QHVk6TL9ViVCaNMb/jBjgt+qXLphLSx1HkzJ7I+voPpJFegGVyj\nGaSR5555Pvv+PUP9R744J9qyL7PYXYex+crNoGNUqelMS1d7/z3wwrRA8owT\nAF3v0omhEIRlF5pM3SfBcB8nF75BZg2qoxjNgTghYYSMuTdKnbpT9tDbF5hw\nKQl/bH5DhFknM6amNzKfxal64+ye8taIsYj25vFQxLyn1GO9OhEOXf9STzBR\nDACzlJhFf1LX3ZWG2NEiDdO/JAACowk18n+XseYJkweWn2vlrEvhCyorsvEs\noFzZ1x4zteQVuhVEZO1W4bm5TlQCMQKbXpbAD9PpPcvYrM0+lJqfTxr2nLHo\nX0SLblx5PHzpNDy3U19irVcX56eu6EtrOF/hxYlhGQnGnA7r7QxFZwOhm6pB\nkCXolWJEFPeiPpXISAghcXNBUBN+hEtttoOv+JA+CzeS4WN66eAjaTZELrce\npjtD\r\n=sG7i\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"39d883da30478c2472b9195910dd9b69f4b8ed56","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-04T02:11:21.827Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.12_1641262407619_0.5838108622471523","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.13-joshbwlng-add-request-logs-96684226186e7948a529d69326429a641c2ae80c":{"name":"@balena/jellyfish-sync","version":"6.2.13-joshbwlng-add-request-logs-96684226186e7948a529d69326429a641c2ae80c","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.13-joshbwlng-add-request-logs-96684226186e7948a529d69326429a641c2ae80c","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"363a8958d3732ec234ad08e566663e7771e269f3","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.13-joshbwlng-add-request-logs-96684226186e7948a529d69326429a641c2ae80c.tgz","fileCount":25,"integrity":"sha512-xXQd6ZeEeRM2ZhrFnefjqjCiuWiX9/6v8+FGuL/4rlcMnBq86vkXCzpRC6iz0l6bB1F1tUYJYaKzGMbsB2Ai7g==","signatures":[{"sig":"MEUCIQD13VIS8AfpcqCZ5ZGwwCtq7fdyX1z3q+5b7u5xgnArYwIgSmOdZOTouDjvAUeEOh7enHN5l1mxOWBFsdxLbrgxj/A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0/DhCRA9TVsSAnZWagAAeDYP/0fQsrCZWDJw5a8E5php\njIh60AsNt7m4Doet7QK0+U4uc7X9JtLp6Dir91CYTFpSWia9XxobOb2jpdSi\n6YyH3tdWgXeXpUeb/q23enKoB9e3z6tAjc8CuiThR8hcqAEtBbZCfAnVOoM2\nffiKAVqNPo4JqSMAu8f+kn/U/J6noXwbBiYs68NUrEgMujLS/mJ1QXw85H22\nB8bmnX1z/L8EP8uNY9saioiW0v39aDCvr0tZp/JABk36lwmTAQk7AMMTOkJ0\nwKHg86m6C5kG4gmKOgolHpC4mAyL1AUCJMFSthMMk12pHwkl1pbhle0aw7tQ\nfX4UH8C0hSqmxVqHzRXIbFrW5UvQiNHMpj8fTiqmuBBfHyk1nTl9h8tYWDCI\nkvNWXLnablDJVdmcffrEMYzx2EAn/49qlXEfknxuqeGZ4X0ApzZOcLe5pVj+\nnTuOoweOlozFvXZYbKJMxp0w/RhVCYDF6ZxzKa6NBiUimK0UbKPyarJfQA4k\nAdu394ARksXiPQTIG5fkrCmqllW/KXePjQEhrh27MRPjtfV8p1SQor9OmQHh\nnQdE6cOup6FRpqNW7oU589P922RTTWpnmCni00GDWG4TZXY1n69sicgvB47a\ntVTgwkiD+u2oqDHjKhxZshLQPLgYUqQzn+JawSWSST6JJVW13spZ2I+PWi4U\nYjr1\r\n=of9T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"96684226186e7948a529d69326429a641c2ae80c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-04T06:58:48.287Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.13-joshbwlng-add-request-logs-96684226186e7948a529d69326429a641c2ae80c_1641279712937_0.854964600289944","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.13":{"name":"@balena/jellyfish-sync","version":"6.2.13","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.13","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"18784c0e3bd1684eb0c2b054ce395cf75e1db4d8","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.13.tgz","fileCount":25,"integrity":"sha512-Kt6aTmKwIF/tCFcgPVZ5vPcGfXbjBW5vewCJtf9UFFvbRFxTMz9PgOIr7s+yLibWq02jKza43ebLoPEDdOqc9w==","signatures":[{"sig":"MEYCIQDqUhaEciy0xvodT9VxWEtdoIEMeA9/oVeEjzeKFPM6OwIhANyewRVlXKnJA4uN/m2efWyeacIWInmHdvR/dEeKWLYd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh0/HzCRA9TVsSAnZWagAA9q4P/A0eACeIci2uF7+j2u/b\nWJc/VaccAvHTRs5eRHe/aV8gmCzzJ1NuteFtYUl6b+1SOzYgd8oF5Zb0GmZj\nwyIWAT1CruCrxrWk0U6v4cIr1S9hOgn/XtS0n+tA3wsrLTUgb3PU0CUN7Hwv\nrqbGbRlTc4My1+eX8aU4up0aIo53BHehn0GWpknsX59HIZDFokxth8BqdQy2\nWDuYMlR4AycSV15rS6vv/GvWsE1Yg2cNRV4fXByCH268IrMF2g2CKUwlkXdm\nHOUXnDqri2ieFSYHYMOiguIk6y6aeKSSIOqXD1rnHyThBm1iV0GLosvJfpAB\n/3IvfXPIKjJVJgSSsin4uFBIvnUSK59Y48LdxrkSrzRjjh23tVkXTeeGk2rz\n57NqBHuW1Vj5sR1V7CJgCnOq+kWcit5RNEjCuw7PmEMuP/806poQaaLtjntZ\n0Q5WLkTW7n6Rbk2RxhP6VS8xCY1O9LNd7PCmmOt71k/lLM2ED4zYtArSKffQ\nP22k9V24FycA3w1neFIjUzwoG8pfamzfxg6cycwS+Cm5HXoZ/rQoVf2GDYId\nL/MDMVyTvDHoAPTGzwP1LQ9qYeHNQTkAulnMZ/wRchH2QTJhQ74Y8YitSsLM\nlQHRS7Us2EOrmSPE5vV4QzhVpKK3M+3OI85vib+eK469I2zpVkpM3eBz/BIY\nt8pj\r\n=CEfQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"3b15e1e7c6552c063395a6af4347f203b4c16c7b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-04T07:03:58.538Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.13_1641279987516_0.8770893063994327","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.14-joshbwlng-update-request-log-336bba4965a979972660f98c0b8c03ef2141e43b":{"name":"@balena/jellyfish-sync","version":"6.2.14-joshbwlng-update-request-log-336bba4965a979972660f98c0b8c03ef2141e43b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.14-joshbwlng-update-request-log-336bba4965a979972660f98c0b8c03ef2141e43b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6286ca7f3459070c9bb54606c96199fdca2187d5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.14-joshbwlng-update-request-log-336bba4965a979972660f98c0b8c03ef2141e43b.tgz","fileCount":25,"integrity":"sha512-3A5s/hhJ+KQr3BTRPoELKaYd9qKnhiWoN4FyimUB8ubrFNqznJ3p9qJ82Wbk+TvASdYrp6T5r3FRt/4tyYIlsA==","signatures":[{"sig":"MEQCIEZtBrTFXNKvnUV0j910KNeMtAdPr3iFzwIP0VyLDvmPAiBB0PAHoxO2SeTTWOjiSJj1F6rOAZ4WB4VoPMA/k8AFNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219974,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1Aa8CRA9TVsSAnZWagAAT3sP/RY9krD211a0n7h7A8ol\not5vRBfP3RlZBcQJzgoxpvMIDFzlejB9jwMcHvfDjEEdPXYXHciiZIaBsLm2\n0md6RFl4onl5M2RwOE9ZEVzoMSYAzDaycHlmiAnN7yoa/9TkrDRQlRnp57j7\n56wxR6sdha1cEbzYRtkTlJfShmICrQbFHQSWsP/DXOpmPaDZm0V5qkx2Mda7\n3et7hmEGH7KJCMNOW4BW5I7SSdbjHhh51t6mYXoFF3xHzDLkRIwvyq4lX8tv\nA1l8M8YZITEBImZl8wDI4fi06sebRqcW7q35jvqb100RXreoy40wWvKNkRNx\nGc96G3fcKM+/d+AqLv7a8u6RdHa554sw1UIGquV8gW1q+zlSb2y5iDAowlly\nayZT2vtysDpyLJtJVy6vl/JTWQSlg7u+1+DXatwKvfdkK53WCVwwPlcYurRM\nwnTtO1tSw0lGoZV6J02CflsqlV1VYJPk5itZliQ333EM4CaIegeBF07PatwB\nHoUQ4AWJB8Rnh33PsJFiKm5MfewJzGvE9BF7ucp3HwZYoV9yD402efovRUAQ\n62xRw+xdC+bUAezqvmOaZDqTkop8faiH8EkVSJLEqsdIvIOuyi7j0qMdNYJa\njktBKPsXsKjm6c2aRUH37UYImyBOq0woI5m7rcQw1BusypRuPH631ri9T9RO\n743z\r\n=WbBS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"336bba4965a979972660f98c0b8c03ef2141e43b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-04T08:32:12.452Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.14-joshbwlng-update-request-log-336bba4965a979972660f98c0b8c03ef2141e43b_1641285307973_0.8698155314317471","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.14":{"name":"@balena/jellyfish-sync","version":"6.2.14","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.14","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f36be013d46d5463350410ef5d761e6cf4b4bbcb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.14.tgz","fileCount":25,"integrity":"sha512-+3Z5X15Bk1d4dmDz8N3HJsHtY9WhgZoZNWwftQ319Y02lR9ccTVbWlkCCcKOFiKfGV4lc9ujFPPs0/WcKDOv8A==","signatures":[{"sig":"MEQCIClAzmhS1zIQI9ZCySFjeYUVdK47+Dnwq8sqi4/nBhN0AiA2PEzKAEQBV9x11YQd2xdQIH8onDMXr87KGcdX7EVlxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219904,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1QJ+CRA9TVsSAnZWagAAjYoP/0T1jLl6/bGMH35XZkNa\nri319cF7437IWMfqsr7kHoPsFBo17KzpPd7cfshKvUsj3q1eQHFeG2lYjnDB\ncrx5Wl7fD5Gbo7m6EjtMH2OBxisEXJZwWUJTSrKGERMSnXIV+LFrpmNkRIZT\nSpi70a9CtayivFbYuGPu5hOqj/0Ew2Q1/pMJoglPqWC3fBzOmErpF5XAKfGy\nMVHokwJF2+Di87eiWFMlkYBFyRptAn3hY7+dVxaiibzC/Cymv1+oyvpApcFZ\nnQC6n6yQk3rUGMrqtplNUJvtQU8Zd58N16CJQH+Vr20GNs45p++hxjcXJCKE\nM7U5DWm5wsuOeIxQF5+9VSf0e8GSs4jfsq51iMiOlZklG/eXnm610aTDZzAf\nLYqz48z4u3pii/TxK5udRulATPTBwC89zSnNOsTJ1YYrXBt/EexWU4IJndaW\nW5aQNqCPTsnOqv19iRwxVrdR9rUixIgbK9ofDy7vLAR63OfDobQkHS+zyr4r\niQCE/2uKF5W++HzUxYNU9M5N1seMFhtTnHeeFazhqmV4d3YdNhX4DmXPwUXT\nKSge4mwtZLRa2vKVFb9HDhdAAIpossdCKIKtSHmskJHxsdNq2EipI8n0mrZT\nAj8C4ZuE4COv7FTf7kAUohKc/KWH0sEeWCHDUPbq0lXnGYDkrqW5w5vXzwqn\ngLnR\r\n=9omf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a4300aa739106db537046993cc1123d1190b27e5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-05T02:27:25.379Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.14_1641349758277_0.554444070347184","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.15-joshbwlng-update-logs-26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc":{"name":"@balena/jellyfish-sync","version":"6.2.15-joshbwlng-update-logs-26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.15-joshbwlng-update-logs-26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"1778b0d0153fe683ab7099bdcfc5134f46c3c20a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.15-joshbwlng-update-logs-26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc.tgz","fileCount":25,"integrity":"sha512-6KjH7Rc4o/B+q23gQ45gdj8bsikE3QlZ6ZLo6vV6GX+Ada32qd8Wf7ufW70dzQ/qzArS7DXduyMgTHHNiMUD7A==","signatures":[{"sig":"MEQCIBh7ztQ/CxDKOojnhOPOPhp8sExiqBFLU2NJhNu9opO7AiAYJJAjEiX6oCvanSvcgOis/n6YISVNaLzcyP3FkBO79w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh19dNCRA9TVsSAnZWagAAwwEQAJZNSw2Mt2zLE5EwwYBn\nUhyJ9vKFr8oGnghMK1ly9eCkOJjcs/S+ChuuZhMIiMARBtASO6WjFoSCOPXy\n0sq+ynZ88KVg+FFDbAytm1f0KLBxohMLqdVlQsr2vSlAKaZIas3Sdu9ig0mD\nJyvdEdCJtMKZkmMRC0qHPsbMtU98gWhJrDLpwiQzWOcx/ACzLlaBtI9DF+Dw\nsMRGFlILmo1D1UaMksQCgcVjRXihN147BVgjDTcaTphKVl+WQ1mX/EHa0mOt\nse+IyQ58nh1WWGRwUJF3M3qm1PbHkuwTY2bqMejhRdvbHUKqvIVsWtJTl15H\n70IXl4i6HOTQHgDIDlAgenml0HXo9sLys7bmga/GROZYAL8p4Hda/HcsggPH\nk2XArLUgs/sczANOSLAzWJwJvXADVeAOEqSMnRlj57mh6dRtJtjwUjYy1Sto\nvqT8SGhgaKz0+AmoUmvY+sO5/vyxLmo4tWRjKBWd8M3bLSGbyqHUY1NOaGcl\nobKkk9+nRBQvW5opB+UYsm+XPnkid+S5/JEBghXfP1DhQjbLorb88zXGFIN1\n8bs+nC+HfXgQvfm9fu5vPC+aJH1RZFz7dIZsyOLw5ANALoVrlY8hCTHea8Nz\nOl/Q/yzyCWAXp/Fy1GFBvRI0aJ1zzQmKyTMlFBF6+j8mGHTPv1vzTe0ZJQrB\nws77\r\n=MHi8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-07T05:59:28.906Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.15-joshbwlng-update-logs-26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc_1641535309715_0.29189283428514856","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.15":{"name":"@balena/jellyfish-sync","version":"6.2.15","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.15","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"d3609134afd28e2cd8f5640508b2d0781a0e37f2","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.15.tgz","fileCount":25,"integrity":"sha512-NtRlnZWtr+q73HntpAierc2Sq0MlZD0CJdsu1DtE9sq49GUpaIfePBRNCcE+iSutLRHdOEg+S0RSfIz5jaU2Mw==","signatures":[{"sig":"MEUCIQDD/emp2kk7HWIsAmXe/3dlfmaHMcoC4vUidjyDKnfGLQIgGgrig9JPSxn0DZAs3/GkoJKz/QzqYwRr0m4yP2bkQNA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh19u5CRA9TVsSAnZWagAAIBgP/2i/YPNGFju8cB4hrVMB\nXsSMir3HX4WmrYZ8VeyXut1/TEcr7+tDOHBFrryHwaA4ldMbAZFbdO2+Stux\nrMlKAOy10kXT8pmfE3jSP8mgTOEhjmKcgtK2F33hOVLBP1plgATRpb3BUvV8\nOiMyeKNy/0Q9/oOQK1I9Yw1btiLrdszyGr5GWNqrJdqm3pZ3ogSYZ+d5HHV0\nI6IRhsTCcH3WS5aHL8qPTtk7TFbtjw2Qnb0s0vPhBrxPqCTD9ld0FgWBNJPo\nGPeJAaZX10/9AssXT3at6PO/I5gK4tizLJ9VWRF1XazsRQ2zNpVwiKhigWYb\nQjfeP8uU0GlH2soIe6OSbYIF+ZoBYC7Da8Vz4tUR+J3lkEnfxxLM3Da39qPD\nsKL+H6k5GfzaPiD9rC5knDOAN9nItKF1W8V7WRItGR+r/P/KHlNQ2jbhGyMM\nicoMPQJC16qJRm+Bk+9WYbo8Ir9WOObZD1J+Kq3aKZnN1FuQLfVA7AXvxdtA\nDmuPqo0Kjb+Mdphs3YiO/m0FNW26pULxGYFAm96mkhVOPDPe7W4pwcMQ2Bgw\n3rtGr4Y5L1gm/ieDJVDhhivbE/fiS4tg0f+aR+fkgY1DcFoC7eKwXO79rSPA\nLeoWo1oPTpMfFYJHyrGKESqumHIppk6dzL3RdO1zxvxdaoF4FEH+YDIpXCza\ndGn0\r\n=zvS4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0f9da8dd0542ccc9ac8fa6ed1d1b8d4e9bdea98c","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-07T06:18:50.878Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.5","@balena/jellyfish-logger":"4.0.12","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.15_1641536441308_0.8073418422378","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.16-renovate-internal-patch-d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f":{"name":"@balena/jellyfish-sync","version":"6.2.16-renovate-internal-patch-d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.16-renovate-internal-patch-d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"4948741cd5998a9b5f98122e29243cb62fb6e61b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.16-renovate-internal-patch-d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f.tgz","fileCount":25,"integrity":"sha512-bIeAcWB800Yw5aAifI0us89qz84A1/RdnRAMwIR2na18dj7fLAHOMNc7EsykNwNUqSMOXwapJe30SRn6DduMHQ==","signatures":[{"sig":"MEYCIQCWP7qL7BYvACrs8z+3r5jzB5H1EnjwXr3Bz6s4vGLU7AIhAJO+lrbxrXorqn6Xs/Knlw4KrwL3ucJeN21w2gGA29Mk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220776,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2Oq3CRA9TVsSAnZWagAAQo0P/A3QGzoXd1YkTjLmLDUD\nivQrcogDDW5XMpJuBUH/5tzzrkBTwt8QcdRu+lYWwfmTePNzAMVK23QAxPoj\nbYy9i/FO2H0SKDEt8g/UmjYRMnodGl2fi8yHB1F070tkDmmQACeNSCuPZupD\nfw6kjEmL1tCYDj7zH33jtueFdbvJ+73MeQSdsRDWC0u0ey25rVsth/Jtn4EE\niZA/V8T3wD4e9iKgtDVlkSrVwhmz7ZyWoKpXZGtVULwB/f9uzaoWEL40GwLY\nD+OYhWtU+Voolu+2M+5kyebBNGQeX2MSipmi8csrR4Q3WDN09CCnfFQhSu4O\nzTaOhfxPlcD1BRCPlDWziyIk3cBkcfQjXJI/aB+jT5hMIjdpY88+X0Yb01gY\nF6Jk1CyLGPt4JW8djeEHjuw2RCSJ8b85Qjg73FsNLA7pM3SrHUKngWmHxl7E\noBKHSog67DxX/ODqR97Hg2JbTDdoXyRRTbPxwrDm/euESqDXhASLqNEDDGwa\nS//H8GSgQptq0EJn57PP4RRlyMEKIRN4qKMBTI9KtTxVPLEKDJajRRtfhixc\n4wFQrOXeRc5Ld7hVraH3sduY7i3N/sXOoageql+wDya4spGvPVWvxLAE4w95\njbX3kXSQi3M/j2DPo/wsYk6yWtv5t3cA/mriKeVqMx35Tq3hDte4wepKeFkd\n12Yc\r\n=++Va\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T01:34:21.252Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.13","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.16-renovate-internal-patch-d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f_1641605815784_0.4329038378008798","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.16":{"name":"@balena/jellyfish-sync","version":"6.2.16","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.16","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8329e21f80ec5b70ed882e5154d8ad87e5c61a7b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.16.tgz","fileCount":25,"integrity":"sha512-do82WXBlx8y/YpLJ8xpE7kyMf+dfVnPNMjgmwCuiAh704NJQF6UURMKayT+Sho7XvERJ570lWvz9WcrdHJVkcg==","signatures":[{"sig":"MEYCIQCAeMYIeYHaHONNuZM/7FBjxtjaNKVbLXnB+gj5SA0BsQIhAM9+LZGni4HNNq+gP1NmA65bx8dECp8fxFXBecL8ymXp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2OuPCRA9TVsSAnZWagAApAAP/1rqpXNn4JkwV1EP2ROI\nWE8zGRp+pen29IuEF504LkUOlbR32DYIo6RaoPswA85bziFtS3cetuslKO6o\nn3MM3+PrPbd5LoMGi4Le9AmcI93vqQZA46qZY/H1ZQbVZDM1OrvBxAyVJ4j0\nUQQLdejjnvKm2oJlEMvDCjT1FzjX738TVYvJ0WK9IICQXtoclmAop43xf+07\nm/KD8OB4rubnAh/XTG5gTdPvDiySIpjNNa28nNithGEk3UQqd7UvJ3N0IXvf\n8tQrqEA7WERiF+QxG3iVwwpOgA5Dvfz/Ufj+52nY9g9WAuMrqztIBzkBt3+u\nwSCh0DKfxjLoA6QPa3r0vE4+X+96MGa1Z4kvIFBfzJfIk2fGrSR76a7B9d3H\n1vjtZAcW3OG7cJ3OFZxNC7s35FqQHMkTnc/2AeYUXuXPHuDtcqLQAltC1bos\nHq/+u1zGW6/0XMmk4uSXWLmuO0qoxUV8fwUH8KE+lr86IygqvSEegIAZF3oV\nhHLvCWgEXp/wX9zJvtUGzmMgDRVV43zySpNyMbXZGn/fr19EteBM1qrVJ0Dg\nk9LHOdoVH/y9K/AuEQLoxbouSGMAugpnTQACkQFI8rDxJx3I425V9FaGh0+h\nmtMlpYn9WtYkAnqv7jnupn21sHpTSz02mQSI1Tpf2mN2qYLQY4bPXzu6IaNw\nQySH\r\n=FzIn\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9775ce604c02c43fc76bf203d15ba47092bdbb10","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T01:38:31.186Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.13","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.5","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.3","lint-staged":"^12.1.5","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.16_1641606031358_0.905329312198559","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.17-renovate-external-non-major-cb2346d7c4ef154809ef8774ff8e3843d440a62f":{"name":"@balena/jellyfish-sync","version":"6.2.17-renovate-external-non-major-cb2346d7c4ef154809ef8774ff8e3843d440a62f","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.17-renovate-external-non-major-cb2346d7c4ef154809ef8774ff8e3843d440a62f","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b79d11fbab69916c20322cd7bfd2d3477169f57b","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.17-renovate-external-non-major-cb2346d7c4ef154809ef8774ff8e3843d440a62f.tgz","fileCount":25,"integrity":"sha512-TVNwRqvWcpKNVxI3QTYBo7ywIKZ9zgEF3JKMAuz9G17WMVyXuWMhrXX0nGgcLL6lWprDPF5vQou+Zc6wSVpERw==","signatures":[{"sig":"MEQCIHW08hpczWEiM1Q5AIc6oR4QqQPw0ST4qtnd7a8qcyBxAiBRtAi7dS7y1yzqidwL0veRx6b1keFEqA73yBlbkQOuPQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2O0gCRA9TVsSAnZWagAADZ0P/iw9jUHq7Pe8lNAv1+sI\nC2fWBlplKuyPK3E+biw6uat8PzTa8aPYLxLtm78u5fiQwPeEaJTdRp67RYYR\natjB9veYBvZJGem8UHLK7Z68/cPuVRiEQOu0pTiBvXb1ktYVJOiGh+KQGAWK\n2iVX7T16afYx8oeH0gX27d13ouKW1v1sBxFctgNW2nqFsIZxEsGQu0cmV/K0\nl6O7QxSVA/E3QLiC1q9Ilhd/iOwYE304Z014Tr38EwhWavHrZ7RZTwNhjABj\ncNq5EV6x/SQFw4vQt/wYu1dhO913GLn6H+uAj7KFyFdAfC9zuwZbxFX9qJL6\nONxcZ92bQpWT+5bbWJPihF4hSoEHKYs/3T7FPBs2xw+i+IPgvQA78bHeLEEQ\nDgYTPyE6ir2niR+iB2aVNwk8TDGJfarku22D1in2Pe+7eiz1POaoJ9HstGAc\ngRFiUCaEjV3xTaDDoDkQtFJ5zeKERF+pkoownsh0JVtMhkyOh00msi5/zZut\nCZaMn8hH9GQVLaD9qxDp/i4jlV245pZje438ckUiiBTfn6oY3tBc8Lwbc6UW\n7ehYEwKYPo9EKnKqMJXLoAkuj6LvCiE47hFcLSj7KzKTrtXt5ilvjgatVk5v\nRJaTGaL9vv3kW/ir7IDU0XnppOAt7wp7o2CTVMTwlDLXmSBsqjLfAFxcU7Oj\n/tvM\r\n=9uzL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cb2346d7c4ef154809ef8774ff8e3843d440a62f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T01:42:43.476Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.13","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.17-renovate-external-non-major-cb2346d7c4ef154809ef8774ff8e3843d440a62f_1641606432554_0.14644901875525873","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.17":{"name":"@balena/jellyfish-sync","version":"6.2.17","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.17","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e851aa65a3e539e9863f55493aefbe4766819b30","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.17.tgz","fileCount":25,"integrity":"sha512-5D3afwFumroovP5urRtxgs9OzOYRF22bS0YwT7PgtLQ6dDRP/wh0Ly03J3h71B91Wcy8j5hierX32JyBaA+EiQ==","signatures":[{"sig":"MEUCIB6A5NIDSpmRb+E6p3X4kpfyfMhDvYYxKQMFeW4b+lDCAiEAxE5sZfFgSkY3toUAQiqqQyn0y/znXFhp0Sd/ZdxYgW0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2O4/CRA9TVsSAnZWagAAcBIP/RvyM7BLENUFLm/asNbp\nJ2FOiFjpBkkzVJgg+GkRiVUvaXJGWRx5Sa53I0S4Zk/xREV322HEk7GIh5H+\nIuc6fc0KbPB8obQhzBWa7heT6PCVwOO265RtlnOQicDsUGy9vEGejOWCGk7S\nCgkQQlHxN0KkD/MCTyU4TqG06aOXb7i7rSUDo/EE/kAAwO5AAHkH2Bod3bFy\nX3TsoBzIiiLkgzKGsUp/rV7OBHrapQjmTysMdK05CErQgKbxD+p2hmSCuCPb\nLTxDQEQiXdqrapiJH/9dmeM0WDTWywdiybo5VXJXqmqXNEJH4p967Q48giyE\nt62Wh9sUACGJIpUhQ6/nQJ0ZhuYv1tIMQjE3L8gsrcno1Sb4LN3jqo+v6/ss\ndHL2iNw2cbplJFk4dsQDAPzd1boF/6/jOi6+TihgxzA4Q5aDcz629gxiwPGz\nobVR6iCkCag5vAa+MPIK/0w9BQik6vg61OrCw4+1asXPinDfDs+orKENA30t\nQgJ8zLWS4ADbf/5TZV57rAmU8Cjp3AO7kxh+ILqwFohTYPDUaoTT4NiUOY5z\nLUZOaZUHHrF5iiR/OWGGg76m4ZrSmNvodNuC/OJ1/G1Vnq/ok0MUwgKKoI/W\nLizW0edGyKn1IZuVDrYTLrILJB9jnnIPsmAd6uskpjmjGltJ+m7gJuzvcZ7k\nduq3\r\n=WS1T\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"8aee2f91da92d443ee53b330f82b126a93e72a8f","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T01:48:50.012Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.13","@balena/jellyfish-metrics":"^2.0.14"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.2","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.17_1641606719495_0.4984393017909432","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.18-renovate-internal-patch-55ec5df84ef26b5423d3cba74fa4a0acd1bf8779":{"name":"@balena/jellyfish-sync","version":"6.2.18-renovate-internal-patch-55ec5df84ef26b5423d3cba74fa4a0acd1bf8779","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.18-renovate-internal-patch-55ec5df84ef26b5423d3cba74fa4a0acd1bf8779","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"662065ab26e05f9c67afcb5e020f22b73db60419","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.18-renovate-internal-patch-55ec5df84ef26b5423d3cba74fa4a0acd1bf8779.tgz","fileCount":25,"integrity":"sha512-GgGnL7xEyxB9RYWyh0jPRqSTELcEWOWeuedXILgTAG12EEG7nkDH4UxtXQKPwGVxu68g4I0fV5IxubeGO0wGKw==","signatures":[{"sig":"MEUCICWP1GXDibc91cphiEQbC54bmVybs4vSyL+8g4ZZP+DfAiEA5MPqShEUXCMEMAxnR1sZjZDEfr3xvBt3L+C9WcbLa2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2Q9YCRA9TVsSAnZWagAA5sYQAJy/lj+4ACqz/XgUsgSp\nBgAnw6Ts72LZ8DYbJxcmYThB1UwmpPP2SAAaxNQQTqjLq72ARFB569p03PXk\njsu+L6/nzhmb86NOm3EsbROnj4ovuH6kIrDHIOaDIVpdKdXfpE/CIEuOm2Q+\ny17qwIjPHBzGK4ytUO39KK4hc+RHjXRgOlkoKpPEjxaRjgd/0HXtguA13F/Z\n7Nc9HNJ3BWXXybNV4s1aDXI24EOzLXDRGRfDXLQMBSmum5nUXuLzhzigzcpr\nyMMn96CypLHYYmTd5kJiCt+kpcLREL/uEbBvOLvqoFHvwyxOLihRxR1fCNYD\nC6PwuMtB45ktYSmmlcGeGv2Apu7RYkvay1kZwQvw5LC1OGJjBqvg4hEX+sJ/\nxn+guDPTjtqgt1k/cnvSqpqBBJXs3DF4fAaY4P4FDHNLm9G3hD0CbnvMIp4I\nLBp95n2dRDVa0VLWXCgEz+LgjYtlz4SnwB7kDovzGY1AyHEywcSIH7szU2dW\nC8WvZdHHtV50LKL8hVAEzDLSFvsMT/neMLr/Kby+//TVtDguF1lmrIELrfOo\nqQNsFUlvxD3APUSniHbvAquwZg6Zs1LtXbeTRx29cs7nQDSz5a5UztCnFST0\naOxWYYpTRv02Zg77NutNH45Jqsc21gVs7LsWRwGSkpOC6vP/5tnPqU0yT0k9\nSvEA\r\n=laGF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"55ec5df84ef26b5423d3cba74fa4a0acd1bf8779","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T04:09:06.219Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.18-renovate-internal-patch-55ec5df84ef26b5423d3cba74fa4a0acd1bf8779_1641615191891_0.2074436475838768","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.18":{"name":"@balena/jellyfish-sync","version":"6.2.18","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.18","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a5a519f71f7712cd8ba9d5fbc2267bf13ea2d7a0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.18.tgz","fileCount":25,"integrity":"sha512-pCzinCtwNmFlYPuCF+cQZFAxzMoJXD7XXktHMylzRNyLtVDN3ChknOhG5qi/rnXis2DdXA3iIkjgA1rExfBL8g==","signatures":[{"sig":"MEYCIQDA0yDgZBb0HxxWRVAR1WxS0cAzSqb+BIuc3YtXA6x/DQIhAJ6wWY2JNS8o/iTeubGSy5qQ8PZUakUMpr2DtUdFDLvG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220857,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2RBOCRA9TVsSAnZWagAA+pMQAI26gUZwbLSQUkKjUYkJ\nGgCap1keNPszcRsbOd3OdPC2cioBPSXgZbJ02PCpBm0QF1F3GbnLNZGuJmBh\n0+RYZh8SL7vlmW20CZENG0xEIArK3TBLw6/QdpdaC8qOAnulnC2IJsneSg1Z\nb9w7iPHa4M6XMah8x4ejrpL1ORTmm32xrzzgxBjn/wyxr6C/AsYezDwzsFTf\nmKxmmM2N1YJtWqx7uiJdEhgJVZcWA+3z29OWUiTZoqXgzLCIu41feiyPVk5q\nlDglzXtLlfyT7OJBl1O1m16RmoAEOr2GiwlVQD4eCLFWnCyhsyv2h7sFxvKT\nzz7BSzpeO08LsBvbf+sXpDpAhGj1sPYC/wErj1ucfAw8Wm6HLJcGw147azCx\nggHDTH9hq0aZlFch51G/Xu63yFxZhkzXg5R1fzxrPw7IjepcmCk5s4Z1KUvw\nkiIavw4Fj3kT0xOO/aYw1vsdQdGnE7HVDaP9OxCBTKEEfeJFcrijk31WAFgp\n/14grAHcMg/S0k9nWh6KVKjwJe1YEOQQBRBsDiEFMB9go2bEOvQuGY/eiEoO\nMJ45OpKZA5X7mv9sDhCS+E7VCmsJVorcP7irQixngxrKA8WVGVoImrArFUqe\ngSOpPJz7Pwf3doEoMGqO2epti/6YHYul03fk3tiFtGZGi7cXFiKCNpio+ps8\n5ImK\r\n=DofB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f40e17ffc3d3861b131afeae5c16e34d5c24b16d","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T04:14:21.249Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.16"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.18_1641615438295_0.06955750572599295","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.19-joshbwlng-oauth-logs-9784382662dc9f6c10d0ff6b42ad74d642b99da2":{"name":"@balena/jellyfish-sync","version":"6.2.19-joshbwlng-oauth-logs-9784382662dc9f6c10d0ff6b42ad74d642b99da2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.19-joshbwlng-oauth-logs-9784382662dc9f6c10d0ff6b42ad74d642b99da2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6a7f39eb2863e8378c4ef93255fbd303570659b1","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.19-joshbwlng-oauth-logs-9784382662dc9f6c10d0ff6b42ad74d642b99da2.tgz","fileCount":25,"integrity":"sha512-vDhjQGkpLbVBNpTic4Y7Zdakmd3ORDL15m1+ySALMvmb06XaS160DpHHCdxrrL65+SbqXoXaHzSJ8cNGhvs19g==","signatures":[{"sig":"MEQCIB26P5QzsGxIDD29iB7/K43Ug6EHNaNLErEjx6woBRHZAiAR6yzOL0rtBXI9Y0/kg08Sl7D65rwDU/Y3YPSIKKDIIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221294,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2USiCRA9TVsSAnZWagAAl2AP/16Sk7qehM+/2hCVyzfg\nZMX8u/wBnvPEgtcZ+TP9oI8lVY0BzHawmS2PWQF3ONsyTfMl1+9NbWHlcT9H\nS1NWT5fUiEYrG6DIYNUNurJ+rIMHpOB6xbuv7z7/azR1/0Zm2UvTlRHX2KA/\nk3zEvCJKb7w4VYxeWnlbuPbTLyD+TX1H41GjJAwfPTq42fR3m9cgekgWov9M\nZVYfPQHfk/7/YLNnalwAAjJLSUA+V1IuyNxV5zvkQUEtrPJFrLTiMXjpiZE+\nUUSP5qdI7Dzc6cpfn9yZPROlnW77393CADnaj4nxiNF4E6Kw/oUhSsmZK7eK\nYL8uUD0fobZ50jMyGlJA3o1Yuy8J4H6OTvH1TZmGwAlJIIIV3H5opAjUVJdA\n9W6BhvomgUVaG9UgSDHehijURL9bgNBN0PkAhm8Nh+FuxkYEUhP5sFb7OLC6\nGWYCOB4s8VTwVQMz/bnUeEoQEixwW5/MRD7xrq7IFuIAo9mYAg42ZCBDKR7s\n5L1ZV8gxVGKeVFDN/RRrzgqxxARno1mThcTID6Sna7W9mybQIGnmd5wiQHj3\np9oBvtfOtrFNorPYcgs6B72/L62DJ8Wq1A54wuNaF5fXLLq9h/BGXEIUzP66\n8gDj+aatEEuzSLoGTf+ejanUIEgxJS8fXKOVp25R2+FWEJ+fYJqvWlHFy51Y\nnJME\r\n=0VJh\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9784382662dc9f6c10d0ff6b42ad74d642b99da2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T07:57:48.840Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.19-joshbwlng-oauth-logs-9784382662dc9f6c10d0ff6b42ad74d642b99da2_1641628834106_0.48692863198764424","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.19-renovate-internal-patch-a61075a388b83200437b92eef0cee2be22c16df6":{"name":"@balena/jellyfish-sync","version":"6.2.19-renovate-internal-patch-a61075a388b83200437b92eef0cee2be22c16df6","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.19-renovate-internal-patch-a61075a388b83200437b92eef0cee2be22c16df6","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"f2c1e182c04b5fa1d099c40f37fe06e4077a4269","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.19-renovate-internal-patch-a61075a388b83200437b92eef0cee2be22c16df6.tgz","fileCount":25,"integrity":"sha512-QS1bQk5l3iy2oifP39DLJGkTD7Kmmu/7IgEcZM8W4trkGXsGK+0dWbmjNGO6nUemtoeYjRbL9yvAliuyBOO9UA==","signatures":[{"sig":"MEYCIQDf5PSWldKD2qAho/M5iRQfoRqhJWekOR0taH9O+OZkKwIhANKbpt6oe8jI0INHERX9PKsBGNbZuxmb0Ycj9sfl9LeO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221026,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2UfOCRA9TVsSAnZWagAAhTkP/2phXtzQyJw8NoCaynkr\nBlHhXemuxb92LwdUxIBawU2v3zhRvpGnbXxUAip0EaN8moDVK0C2nx2xEdqa\nA7nXQ9hmssWXuE0wRSq2xvKZjnGS4VarXqsZYAiWQDWrSYN+oDd62/t3YV4y\nljSl8Z/Hb3Pd+KANV/79szqxc5hLFeL/rjS2OtvY9IX09+S0wSJrQwxuV0Zk\nMUbIPy90UrKsKXiK2O65K83T1khVYupZtINat5y7TURY3HHSnSPNk8DEUzc7\nhxYgg+6Pc+wshpj+1hukjofIg54Y0LqdhP7L4w2odkkY0QOKVOKeiZUeyh4j\nbh/CmzUIi4IsFll31GWymhEvO2OmqXUaUxpd8pjq/v4LBKDP6bAQMxWosiPd\nmwjaLZZOvHHdF9Chw3hM9kZg1xPw/99/qF0jYlTr9X7zjNYCVd6Gy9+JHYXm\nJvh+XLSpUJFpkJMfv7B/oKBJekVphW/BwoynIszpBB2QQzpIsRfc1lGeN5xS\nFRIu+9INlTPNHJ2FDabDFFhZYjs7b+zzzV1+iSO27DPws5SnpBQNOMKds1Zp\nIUsdWa6fP5IIw0YLMUysYq+N4N9xb92RDiU5O8wEnQuw/83Chi3Luo5x+8BB\ne00EJNMiCpBw8hO7xqPUc+2vCiph+k5j5+Wv+Hro3RxLbtnrLi/OSSLLBT3p\nQEYg\r\n=/DZs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a61075a388b83200437b92eef0cee2be22c16df6","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T08:11:19.856Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.19-renovate-internal-patch-a61075a388b83200437b92eef0cee2be22c16df6_1641629645904_0.5160109137388782","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.19-joshbwlng-remove-excess-logs-f5eaca17615f4cb75ff0d3b2aba896fc1e454a82":{"name":"@balena/jellyfish-sync","version":"6.2.19-joshbwlng-remove-excess-logs-f5eaca17615f4cb75ff0d3b2aba896fc1e454a82","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.19-joshbwlng-remove-excess-logs-f5eaca17615f4cb75ff0d3b2aba896fc1e454a82","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"2ed010ad8aa1b7fd755b31162382470a27a03910","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.19-joshbwlng-remove-excess-logs-f5eaca17615f4cb75ff0d3b2aba896fc1e454a82.tgz","fileCount":25,"integrity":"sha512-xnPydnbfxnAQNenhDMpekDUm3rHZRyG01cD1Hxjs3EhD9NGi5hWSFUTTqzVsTbQQ5vaNJoQY5W/XHfWqey3aaA==","signatures":[{"sig":"MEYCIQDjCZS4NC4Mnx2sTZiw5fNlm+gsnL3qwIGPbAKGmmdLUgIhAObJyAX2k2oVZmL8h28LM3CbtGbJGYo0FaiHRAaz2OqX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2UgWCRA9TVsSAnZWagAAcBEP+wfWgfajATxV0RCOwDun\nqBAj6iHiH8mq3KqZmgj+SPLbUzCxH9Uumgh9lV/PgraS2mX4hnp+hQcxe/2s\n0z1jbLTYVyahI10ohdJMVlIQp8B2+6X7PxNyg1lrFhTES+yZ9ZQCR9sKvBFR\nASKo3uWVFsP99L7FmldM1oW4xsxPcKa6gjHCNDgd6qchQN2GC78AyyXPz+NH\npvmfT7+DtzyqIk9mSlMvKQE+YhQF+wg84YqjNawVQwLqmHLIwlKODtaBjqad\nDHPzva32JTB9DvdGAJQN2w/XSHxf5vomx5z+F75w1RGMU9zvg9j/y9LEcC/2\nt0WYsY7GvqVqPlQdKCaHTe0ndAORrZAi/A50ORmGrrUMLn4nSCLe+9DFbDgV\n5SPSYISnvo11Nfso46ZWKsa3iJBQ8peg4hZeHFqCv/GfW+BG02P6Hdy+MT0X\nLkmef0JWiEmX/cyU/PMa+HKxa2ED9P+PXaRAClO4LI9f8fzxH5wVytKCcSTq\na9KN4fNE0U3FjS0IIUTKqjVNm3KEJdOLxSWljblb3MygizsUlVqDo4klpbe4\nK9r8oJSOPhvkN7roysVHbg3ZR3ZbUfbzywxUyaCKjySW0m02iHKbmJwI5bdS\n17E/Xu8BkjuV6RUb7oLaZTWEcAuSzZwx2AnuQrxbtv6FuZpcQ4qcAXkBEcLA\n6lTS\r\n=vMu/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f5eaca17615f4cb75ff0d3b2aba896fc1e454a82","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T08:12:04.951Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.16"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.19-joshbwlng-remove-excess-logs-f5eaca17615f4cb75ff0d3b2aba896fc1e454a82_1641629718204_0.7321215982901739","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.19":{"name":"@balena/jellyfish-sync","version":"6.2.19","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.19","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"abf12d4d9e34db79a1de3eb28c0534cbc8fdc020","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.19.tgz","fileCount":25,"integrity":"sha512-fif/Vpp+IQHFrY2mD5xhct1h7h4jRNtkAhzsSwda+eXkbcCjxmOwGkw9l9vSjz9nN9ByChlkzVFUkz5GFF+BKw==","signatures":[{"sig":"MEYCIQDJJfC2Xb5UGPKVuaW6O9XCzx5pluo2PTjkNVL2tyBZDgIhAKU7zF4VXKRnZss7dJS6dt1Z3fOiTFnsz7CPg/RdFIl9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220961,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2UiGCRA9TVsSAnZWagAA8oIP/0qK+DeEFfpCn3qqPYGQ\nw70LKWPrhbiA/W1yHdCJ09Bw8w+jV9/eOj/MT3pAElb39xfaRa0666TmaCfB\nEM8BTSRex4B4uHcRbg5gBwVVc6Swa6KjfTihGmdt7BtJtg370TV0LRsd5EBt\n1m6AmUx933gsKwoifX0RHyzoYjVVXQr7QD5D3k8sU7lZwdCMcoY8Ur88ERwL\nT97Jnq0JIdVXXyP3CivtLGhlGfARx+DLxz80b1f+HBaxAD0E9O30/2Y2+93j\n2RmjMESFgZJl4b3o51vdx8ZPmsMln3An1Gu4Pc0ow3Qro7fBorV13Ne4jDjZ\nOE8JUNmp+PmsE68npVK9qX32cBRL1nuUiv9lZKMizZOHxrIkDTgXqPkcy+zR\ntZpGn//XQspzadfcSywMA+DsjXMuK28uD3xsOJO9r09UnI5FMqLfmXx0i/9R\nsnDQEHWwSQWqcIVpFU7CVB+xLVPzgmJu5/1G+jPCkhJ6WCNTxyplJffCgtJa\nbebqdGTu+UuQcyu2MP5TZqkmZSyZdd0/MBG8D8zQs+WnOvfoWgS1ppYiDokL\nNMxvakZmmNDZ8t6d7qoP5qsnLLfpJdgX5KPz/yD5W1e1ahqChf/Ww9VEnk4F\n7vAIsKJZdGZRWE4Vr+i5sfT0M8N3X3dTmqnVlXMpESsr1ZW7yu/jHfjNZiWw\nCFVw\r\n=0729\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"777245b06cceb4694d9cd0be5d4eb0960944ce66","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T08:14:55.056Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.17"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.19_1641629830443_0.5015908322227725","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.20-joshbwlng-remove-excess-logs-54055e2c58cced8e4083226407be78de6f370e83":{"name":"@balena/jellyfish-sync","version":"6.2.20-joshbwlng-remove-excess-logs-54055e2c58cced8e4083226407be78de6f370e83","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.20-joshbwlng-remove-excess-logs-54055e2c58cced8e4083226407be78de6f370e83","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"5e67f60a44ac958cf66a5226d251139a5ab32fa0","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.20-joshbwlng-remove-excess-logs-54055e2c58cced8e4083226407be78de6f370e83.tgz","fileCount":25,"integrity":"sha512-5DKIcXHDwOfENINk/iVAY5kYvAEMrIoanV6GGjzQ/n8rzaLWSD7v85hCIcRxt+/mBnPunQ8lqvYzyQ/3t28p7Q==","signatures":[{"sig":"MEUCIBqmKxnb0dkl8b9IQwRUCzMZNFUQJwYz+Fd/WTLyWWNkAiEAotEz5rLgHg3rntnHNRqpCRQyM7y0LNq/PEjb5RcjwfE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219602,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2UmJCRA9TVsSAnZWagAAnAgP/jWrFOpAHDO9K7hrMqki\nFONBx4mT/DGyqv3BHiw2zTOfGpvB9+6hOIZyEsPwEewAmk8nTcxKdH9fWGHx\n6B8/qscZQ6DyvsFD79svMDHrwf/VfLdSM7Pum8zuVr40cHpC7IkCDk+EF1sc\nNGjef0pzWU/yOfVnsNQtemvw6NdiMrfaVdwBEuyHy4gX4LPRd/aF+7DmfG8t\nXymbmYao+EzX9bZdCFxBRzd/1tss4BCjybCcog/pIMxXiHmCaeLsyO+8EIqi\nnXMhoIujAUCYOpyCc0I4Yhh74g5wGkjNGuQtXPsXUS6ZcpN5Q7psrLLIM5Kk\nFQyJ5eSihVTG2OqPLvXegmLldleQ1HCEMGlk4TrHDana+7jIqNbA2tAXQUXZ\ns3BEDvMCcG/bhm0npnfdqqTrV9uOB/yHWhH9K+VFumYLlU7W/H7YqnqURaww\n4R8DiO/GHow6tMaGgCRSUkVx5MaSj3HMPgDi+pIu/t0USamKjg8l4Qoqq9Gp\nd3vKvlnsOuMFkbb6JY/izkwYasDSgQ+a4rdcLO1/tlm0fgLbxzJ8fmdddC9Z\n/3XCcbribhAGlSKWPL0B9wFVb0VFjg63RkHwzTct3zsAgiucb3x/aZe/Dw+d\nc54nQeCycubcZ0dZBgp7DXaxaDXDVzhAZPE31QTmCC5jSJ+EB9lnwMTAXYGh\nR++X\r\n=zJGa\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"54055e2c58cced8e4083226407be78de6f370e83","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T08:18:25.284Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.20-joshbwlng-remove-excess-logs-54055e2c58cced8e4083226407be78de6f370e83_1641630089298_0.011695165611489866","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.20":{"name":"@balena/jellyfish-sync","version":"6.2.20","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.20","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9ff867560afd947a780f16876e7610fe2627ee9e","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.20.tgz","fileCount":25,"integrity":"sha512-SFztqgYB6Aj4UO7rAjktPDesH9t4ACHFG16aqDp/memdYE/jfbzFIMFuN8UildCqb8DQmmCxiIknNYzLNZ1ISw==","signatures":[{"sig":"MEQCICj2rSd9VX6MujlyUETI7Heg4A65/656ntUDVil6GcaTAiBziuNX9NmZG7KnNeThXErPI+XMqDTvpn+KtoaSu2dSBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2UqSCRA9TVsSAnZWagAAbiMQAIaAYAf50ZSF2hke2CSJ\nUypOsNz+gtbHMjC3ZHZPSq1laO6Ti/J+iit8BHwZP3LdV21FeNhE2DrV8qwb\nN2izeqyBVanbz81y0ArEDpVLS28GlgtvxJsqhmiiaxIB6DlUN8yhRrdlo44r\nechTT1S1rIJuAeGpxkMzNZra46zIgZPRY3oDiFOyBuDZ93Xt981GjwrFxrNN\n530uma+x0xi80sPSMme3n5xOO1TuOK5VDPJXL4Y+poW6Fo3WNuSfM+3YDAav\nDr7d02mYJ2RxSM/xsKuDRX8mZsB3My7OKYSrdZPymAdRC4O/XwCyMy8e83DU\nk93itTIAbJ9xmBRGt7/NLDp29y6x9ZmuCLWwwHF8cRLZYUpDeRK8Alh8/cqD\nYz5SQhX4BSuhJvCAXvISj4rj7Efuoipwoj28EA58WFE7X6xc9WM3mpuyLgLu\n/npwDq7Ct1eF7TYnzwZnk/x7ytrLgLhBMzmw+T3TqSJRJHp+2zwYBTgS1TZo\n5xP4N3nGTfOtODj5kEbFyMGd8NREEdEq3P6Nrhda/psHUxY+3YwL+lM7+dIF\nKjj6l3Qtyu9g/ooPOfhn21ARJ2anPGRI0iRHeH57zaIRTqhZ4SE0epP6fexD\ngwlME5tOkEzlMCNabGzXSEEpUK6LuOllT2Hl/vtztEcJqTqI2yoFd6gJ8oWc\nkot/\r\n=LMCP\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"2c329d6599f6378abb97cfe63c82336bc93f7ef7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T08:23:36.477Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.17"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.20_1641630354334_0.9384097597963466","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.21-joshbwlng-oauth-logs-0b316303e997b4196537d90412a8ad9d8da9a0a2":{"name":"@balena/jellyfish-sync","version":"6.2.21-joshbwlng-oauth-logs-0b316303e997b4196537d90412a8ad9d8da9a0a2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.21-joshbwlng-oauth-logs-0b316303e997b4196537d90412a8ad9d8da9a0a2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"43d6fe69311c88742343a097f84dbc3669e89bf7","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.21-joshbwlng-oauth-logs-0b316303e997b4196537d90412a8ad9d8da9a0a2.tgz","fileCount":25,"integrity":"sha512-gkrdLP6tM2w2vIzfChAUhKw0vofgHwynHVdKaDZcKtMU3n8V7fjhxLWSx0vRtiOdW1loNhjJ+g6ZPXWrVmtXjA==","signatures":[{"sig":"MEQCIF7aRzIaCv3FtlQnhHem2WZ1etdg6YPvgqNA+mDlmcOZAiBmJ2+ybCOZWaRanR6Qt+dKQSdyoEw2vs6OomsReYSVIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221469,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2VJqCRA9TVsSAnZWagAAzEEP/RDgxX21crpj1A4iIpMy\n9ANHhEp3GpstEtTWhZE3HpPd0uqFKQlEz7NAnhY5CC4MSG+vlPPqDEv4OQLl\n46Eb62nFkqUjGi5ZIv9xpeiigaDVxHL3UcgAvF5Kr/j9j/D4gqpkEmjGRHOf\n41/KmcPBKlq3/mopm0U9rJQryroFE90JzzbFwBTXWK5TlzyPSl0HNrjhYoqv\nycT9C8g5D56Bmag/TQSYFsBX5LBjJvg+9y9f9pO9C3aM+fEQcp7Hy6k39dxB\nbvpLdq9Fb3nLwCqYgcY6YOSqJoTL0x7iraSt+bl3I3pVSImNph+lBR25ru5h\n3BrFdRHJPZPtKa1+wV6bXecZLGFsxIK1xP4JAdYoV9g6YqObD9ETRxiwYCNe\nxitC3SGfG0fKgjVSGUkqd1bE8MEFUjuA+pm+sEAIuPyGAIQy4Ept644WdVG2\n/IQkLh3gLdYGg4Xk60cmPoQmpLRLzUwo7B5NYBVlzQVL0RKsUtgJinUDfm7f\nb10bTqjHURZXT6zdwZuc2QeWByaZHZnner36tR7tS9owndpOQEyuuGMlk8Sw\nflK5j4LIVot8kZXCX9ol84TcmVqg6xT45XhsHLmG4S9Viqsc2/YjD2OvWU5B\nnEDh/1KmT7jYCjmWA2hXQLr/mn90PRwHQcfvmLhFsP5g+6yTOpogvukUU9tz\n3rst\r\n=MLOD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"0b316303e997b4196537d90412a8ad9d8da9a0a2","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T08:56:38.109Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.21-joshbwlng-oauth-logs-0b316303e997b4196537d90412a8ad9d8da9a0a2_1641632362715_0.5958435405048537","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.21-joshbwlng-oauth-logs-5e37c888e2c54750d8338bb45ae6fa809d6dcda5":{"name":"@balena/jellyfish-sync","version":"6.2.21-joshbwlng-oauth-logs-5e37c888e2c54750d8338bb45ae6fa809d6dcda5","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.21-joshbwlng-oauth-logs-5e37c888e2c54750d8338bb45ae6fa809d6dcda5","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"572bb3571400b3fdc292556944701dfc92eb7256","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.21-joshbwlng-oauth-logs-5e37c888e2c54750d8338bb45ae6fa809d6dcda5.tgz","fileCount":25,"integrity":"sha512-FPgKJ5hUGN/vS4OrW/VQ1V0xOzqcQvUR02/bO8HEHqkyyl8JNdmmKLnsPcyrMCxfSBSBjD16zdQ0LsLa94p3yg==","signatures":[{"sig":"MEQCIB8mqtFEKwLjZVVzfvK2nVKjlKfikOjAsWAhly9RbMFtAiA6FMdGiQmPbP79yOs9Fw/OJaFi4nq7l+O3ulHYuDcvTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2XNoCRA9TVsSAnZWagAAYU8P/2HPLQxG8lvZzzBFo98u\nFHXFipEKBIP8XhdRk7DAl0wC6+aYY96ORIM88eszNQGVPnrnHXQZ4XJtAad2\nDDtB0VLglTTvMsJ1afsfMVo5s2XkDaBVD3vasLcaz+OIRKWnfhoSgQXX2+Dx\nt0jsA0X9CAR7Q8ZTRW6515o7jutcaDpafXxLR+NN5J/GiW8r8g/ppPYl1koX\nSoAsG7aJSKC2dBCwfxC4uK14Tcd0j7oKwt87hSmyCXXBoALh4HwRPmSS9iWP\n+soqdpBZNvUSK7PKPu7+gJGXs0C4neeSmJlVTNnniFWNW6hzdWXHwUfFIc2Q\nCUT0WokyWyvrkLsgloTQu5ExhUd6kaNzi2GSaAU+qyxfOD5pH7FhGootPacw\nXPEiVwbSlNmVZGKrD1a91SfvlwRE0cUnQ8LGGUkz8dCtkwh8L0hSu5DV8n1H\np2FxOFwK2FsfZWdL0uGeaim1tvsWDGUUey6677SqARbxD2vtTJ/eKdx8JBMO\nDNOicQE6HUv4/Q3mhh0JGGJ7vHVHwP31AyiB39H8wp2w/p0ey+4qSg2dHri+\nbfnbeNUCXJ0j5vfEwgDsob2XJTignAO0IKc3O3JZllZaHe67R9mgRnl+vu+o\nVrT3Whsky+wi9liRyyBkvGVbSVhV0RBD6AeJo7hFmbn9wzGdiBqz43Fw9Mw7\n/0KH\r\n=Xjcd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5e37c888e2c54750d8338bb45ae6fa809d6dcda5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T11:16:22.855Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.14","@balena/jellyfish-metrics":"^2.0.17"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.21-joshbwlng-oauth-logs-5e37c888e2c54750d8338bb45ae6fa809d6dcda5_1641640808103_0.37809741207869574","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.21-renovate-internal-patch-cfe7b6fb193257194a6d7d740458ba3422fa4e25":{"name":"@balena/jellyfish-sync","version":"6.2.21-renovate-internal-patch-cfe7b6fb193257194a6d7d740458ba3422fa4e25","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.21-renovate-internal-patch-cfe7b6fb193257194a6d7d740458ba3422fa4e25","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"9fd3c4f60a573c099dd279eb5a20ba7e8517c2fb","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.21-renovate-internal-patch-cfe7b6fb193257194a6d7d740458ba3422fa4e25.tgz","fileCount":25,"integrity":"sha512-le+J96lHpHUK4OjT6Z41CtKxQhLIbahyZnqJOoCX6a3u4b8bvNcfp+mLHY7r/7M7wVBrTDF1WdQNw/fhefLXIg==","signatures":[{"sig":"MEUCIQDsTtYTCOZ+EoHRwpc27lfCqV/EQ+u2me6I8CMNQsij4gIgHKEh8eWW4m7+yWrf4570OrnD2aKcHGwZuca0cnpg114=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2aSPCRA9TVsSAnZWagAAwuAQAIxHu9/dVOQJbrGVl1Bh\nR35p/vEB4JPhF8D3kBfzawU3jS60fYmZBSOrgaAsRzwNsixEoED1ACmQ9r/R\ntmJ7XtSTCuzqhomhdKWCnKQ8s0YtvwNIOm5/srgycR00OAumz+RIqMKN7DhH\nB9MNUFWy9/rBbiGqyw3OqbvlJgL4y2WBlY2rNTkW7Ms9+0ybnMizcQe24GOz\n7A9fOATV3hdzYWPp5XpPJO4MQMOJDdj4Ng4xf5L/1pIYJSoQ5uR6GhWTVu+k\nqTn27O1wsVKqdmnlbi0d/WtXGwOBcDZ9k5fW/NARlceq1eCyboFG/sSspMe4\n4adToyej1goM5OoyZUcrl8oIb3Pmm/wi+oNCKuwmn/p6gQrjcJThJA4Bkw5S\nwrKGUhDgiaHhSLAnOL/FnIeyHjFRoL8DCWyvSfNmPBx/fQckQiUREFYOQB+G\nPFhW4W806pNUHSNNuKf2vuyvA9GlbxbAYQV+xOUyj3eveoWlcZvwSEfU9LtC\n0CKdbyu96vqnPM+usav/tzFxYzEGK2rDR559esIwSWnaIjKROxc7XEzMzXFS\nwwV+QDWN2hINo191KBcxUJzr4ebO/4Gf9SO6nwmfZJhXh0DD9wkIZeKvTald\ny9+Cr8IfHd8dsddbM35qiIHH2xuVAfBTTIWJ/525ZTxe436ahVxA9GzUR6ge\neCKI\r\n=a0ds\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cfe7b6fb193257194a6d7d740458ba3422fa4e25","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T14:46:42.765Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.21-renovate-internal-patch-cfe7b6fb193257194a6d7d740458ba3422fa4e25_1641653391688_0.5680323747904783","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.21":{"name":"@balena/jellyfish-sync","version":"6.2.21","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.21","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"81fc25e29eaa6641cfb94f6e211daf250221ff76","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.21.tgz","fileCount":25,"integrity":"sha512-W4ruiPVGXIgINXHYyUxsT08/WF1G70hNVhTwL0KQvcnUBqz3bJLgg5Y0EdP863F9MrS6NJlxjn5JA4VnCzDtOg==","signatures":[{"sig":"MEYCIQChsBXpmgPS5u9ECbI6t3urabuoUpXe4JgZseakvjTfUQIhANbCREi2e/OcfohYjWUHGgESX06XqMM9vUsJdiTdIT2K","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219603,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2aVTCRA9TVsSAnZWagAAlb4P/2MgQ1m2/xSDMnAKf2VD\nAYzOH+PV7MAHj+d6pfWV7ZVqqbQgOXY8pFE6A6YqkWU19IyBf8nfV+7GVtxR\na1LPBxHbC6lLINqmrCHPNyo7eeSNhpnv2VsciIvsf0Dgx9/9yCNaf92mLJ+H\nAoeRewdT7TgEQrMlRmmqnYFWUj7X4b6OEyMoXpIR0Rd4P8QR3G442AlbADwE\nt4i7PewLo+iH/gKhLV5esYKRoRjnFbbz1jbeMHvetRRsjLbzk7iJ78i6YXan\nRxjlooSRqNunnlF0quiC/K/4fuOSvlWfc+qQyLPRzJrv/CNVvzY7DEdxcjEP\nmsPZ9OGsvdDvbZ8eVXQ1Hiiomg9XM6WM5o6B5xOw8mMpmnOxNV9Yigym2K6X\nWGLFdYaJoisIeBbQaTPuSO5ekK2qVsAcheEd85NbDDHdz3zHXHQiUioJTF3t\nUVaoivVT4QfpL5H76dZDfjTIIoYqCO3OgI//m5HYrCJwNDz6y7nm2TeOTRUv\nPLbVMIMcqtOZsIPj/ND5QKGykyaNhc76dx+TzD9JkwyM5fvuaV/YXK7yzRie\nk0XkF/4GAVO0Fqq2bwHfCvJEmwTowRSVxf5Ck2juk51lHDEjRRnWZoS7K5GJ\nTeKzWU6AfPb2dXlYoEyBvH8r3c8AgKB7ZrYeOu2Kfk6hcaXsgP0BNYmGjyDE\nFwYi\r\n=Nr8M\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"98982dc8562d140e6c49a21e6fa27c10f79e54d5","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-08T14:51:08.954Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.21_1641653587532_0.1148349489742595","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.22-joshbwlng-oauth-logs-13515f285dcdc02a76776ba580df17117a9a9a04":{"name":"@balena/jellyfish-sync","version":"6.2.22-joshbwlng-oauth-logs-13515f285dcdc02a76776ba580df17117a9a9a04","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.22-joshbwlng-oauth-logs-13515f285dcdc02a76776ba580df17117a9a9a04","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"20152d7bc3bf41d48f434cc59d5c51a365573e06","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.22-joshbwlng-oauth-logs-13515f285dcdc02a76776ba580df17117a9a9a04.tgz","fileCount":25,"integrity":"sha512-bvhuU63qDTlaXhWriTkEH15vVdyXASBYRS+drUD29C+AN91I6aliUn9xzbUptYFahaN4foG5MRHAgVFHZ5C07w==","signatures":[{"sig":"MEUCIFVWyYU8LVx5GQrDEMmyjOZh4/UcdMDt9ow3kHoSny9aAiEApA2ClGpoQbNLKEUoRaMGnxJL+CFYe8DJwjId5NkVag4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2kypCRA9TVsSAnZWagAA0uYP/RmuIDnAX/4RIE8dWYne\nwSSw4BenkKYcj5xww8dB1VMq84q/q0B375Oerr6SlnQgJ+w56yLJUElVGxH6\nQRr/zwinepk6mL2TZZcIIbzrEj9WaeP2USCSkAXfCftFTFbzGr0fJoKwqwbs\ndJNDK7YGMo6IIQGchmuMwF5iGc2Rt261R/ZU7PPRz7vi8aJ/bkv5mS/MR60U\nZFqacJvWCXsMgVxKUHd8VxAxy5pnZUAcghc+AI/x1DJNfp0v3KNaZEZ/ycVg\n3vpWcMEcGDSTgDIwaesMYHQCbFP57HDbuTmU1+NlF+h0gP6fYGvPAX7i0Xwn\nY2FVnqcpOZESHkY3gzFCxCHCCtKQL4T1rL5QxZDed3ChEONskLdMgK7ptAl6\nTxikdkNEvieFrvjUpEr2lXCOpcC96otrURJKPwffybD3lDhQ4VRbEkHrjXHf\nenFsLGIz82FzEZIPAaYVFZvjNpFW9qSX+Q2JomLIXiRjpMAeVXam+l5pXz8/\nmSgWlKhAnHXaFA1gq+PXbdIgwo2Pbcaby7PjfNsJlTGYqi1KZzabFRqYmhsO\nm15dM187IwI/Bh4efcJgaYlXKGllEXx3KjYmTCA9gGcw/2qMLkDlmksPuj34\neCb70TRBwfhY6+UZuTye94f0JwN0ePvp+oWUx78HLtbpnfUlWK456pq99cA4\nXSZc\r\n=+2WQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"13515f285dcdc02a76776ba580df17117a9a9a04","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-09T02:44:26.290Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.22-joshbwlng-oauth-logs-13515f285dcdc02a76776ba580df17117a9a9a04_1641696425211_0.02630331535889341","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"7.0.0-joshbwlng-priv-session-da6d5e9b220e960b55e57d24d617a86f7f13ffd4":{"name":"@balena/jellyfish-sync","version":"7.0.0-joshbwlng-priv-session-da6d5e9b220e960b55e57d24d617a86f7f13ffd4","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@7.0.0-joshbwlng-priv-session-da6d5e9b220e960b55e57d24d617a86f7f13ffd4","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"419fe8596442808c4a443b4d7413516b014d52d4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-7.0.0-joshbwlng-priv-session-da6d5e9b220e960b55e57d24d617a86f7f13ffd4.tgz","fileCount":25,"integrity":"sha512-CyAZEkuYKYWzyxwoSOCdYEmernro5eE83IEencEdlg97ocb5H/pMVqjEjPGNglb2LT7ynX2l2770LtbZejQrgw==","signatures":[{"sig":"MEUCIQCoEHnRTuZ6MVXc0M9A1atEF64hhkOREJ42uILC2k0UsQIgbuiZEDwp3wchY6O5nlEpotc31wA/I111OrmMiTov1qA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":219157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2q/vCRA9TVsSAnZWagAAmZAP/Ric+mPyaOizOvJZGm/I\nr5RS2c5daNusPVaScwZ3hAHJAgLaAzDHUMGkDvrAWdsDAtiNJRD9uDb3/WtR\nJfCS7/qIy92oWgj8H++1N/7a3PIsKIcKCr4tmtanWoYy87bFi3Jz3cRTYQp6\nm78/tuhKg9De1md0IsA6vcFaJrY/mShYVwifP6y9YIH8T/h0zR3FDm1dG4SU\nP/tvyNVv8RxLeqeZjX62oEVbFRMmTm3/EEuUhBMnlK7Kdy7MZcGBw6c4hMDQ\nHyzxhTZ3tZjPqE1o3LC5YpE3Wss1ZkZtFbvOYR4Mx0OpBfEfY6GvriUeiF+b\nUq+XmqjCpEwfHN5qD6fSCJfIzwRdhsCJ5JAq8PKuejFYwUF+tX+WDf+77izF\nWxfXVp8FE2gzRD9Z51Gn9xLmWiNkHXEEm6qSER+n7nUWvkrykU34TlJSAamx\nBQGw8hkykWKfZd715x1ClBS6LpMopSEXeQnG9z/GFh0JfZHKRIx9lnF146ux\nyw8qBBGEFWVrNN2j5Nia+YyUtHz0Ww+g3HErm2KLq3lKOz0lJ0KZhzCeaDu2\nHslUlKUxhWxtl8cg8dx4Ld1C3N0mQCDrjSF1w5V2eAf0pjpoIkq82bXNyQha\nkzdpjFlFceVmGs0MxysWy+naEd2T7bmJ77XUcEL1kgCZXlCtDgogLDgynHVL\ntTuq\r\n=GGbf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"da6d5e9b220e960b55e57d24d617a86f7f13ffd4","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-09T09:47:33.165Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_7.0.0-joshbwlng-priv-session-da6d5e9b220e960b55e57d24d617a86f7f13ffd4_1641721839074_0.7507629402996354","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.0-joshbwlng-priv-session-5e4998651a1ec1556a1e5ffb8344e2499227c649":{"name":"@balena/jellyfish-sync","version":"6.3.0-joshbwlng-priv-session-5e4998651a1ec1556a1e5ffb8344e2499227c649","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.0-joshbwlng-priv-session-5e4998651a1ec1556a1e5ffb8344e2499227c649","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"b00b0a43246feb2523208c1b65c58b54e6be4a9d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.0-joshbwlng-priv-session-5e4998651a1ec1556a1e5ffb8344e2499227c649.tgz","fileCount":25,"integrity":"sha512-d06Hjc9Qj2xUlobz39oUpHhNLXioCDrjpHUVg4+QFPTybFdsPTNm1EbXFnRHPOCnpfo5pW3d47nxAr4/tGZ2JQ==","signatures":[{"sig":"MEYCIQCfvmpVT1mcrl4C3r59NKmUJ7M8SfyX7akfOhYKPjjkTQIhALI44zB6Yp5+IvHU+8g55g5gzMvmQQGTeaLwhXCgcN2x","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2rrKCRA9TVsSAnZWagAAV5kP/1Z6ycAJHbsRs9mmhcYf\nphTJ68lGoZE9E3ZJlkhnB0YbVUXOpvBoE7PwTkDjtaLGlAMysfkx1k0+FLG2\nChbOl5GEUkeRj3HjRFxtyiNYO8Y2WxsFrKUeQbhK5Y3cdTdMGsRlKtzKQAGO\nt8zouvb+Xa5rxkc9NEfCxTeNTOmNo+GtszYS41SzJsrxfw3B/rLAYGS72Cmd\nwGRKn6ZwY5z0zjTSMW+ntkEQC4nowfIg3ZwWMnT8ec5IkarUEN/Xo7NOm4uW\nLc4pmk5VKO4GLsLiY3XCk5dbPGYB9VeZ4DOsmWKmwB9Yhb2TmUezqxKwvHUZ\nFbVRilQguHVQ0K6eNFhDGUlQcQhqYX955aOQkLs/6o94k5LmMo6g87TChSn9\niuK5PbUea5MV5sDNKhzaSJWtIJP7daNmnGL9r/2/9NIUmangNU8fhhPH//mX\nyErtIVU9yvMHRUSv46lqrG3cmKaCsh0gYmZQjtjb5gPFD7eXRvOR0Ra/J9S2\nosku0Wt83I0T6jgSoXKZv+MKx3ALSgcg62RITq2AeCCwVdB66H/eCAioKWOB\n9MUN/3CDxZeI8h8S/VTMj1ek0b/HK824/Wyp5D+34FihA+ahZ1PAR4aWXo0k\njvu8j3z4MsNaHV2DDYg1Q33I4JitwQWvZOoEjwvRy3rA0Bwu+FzmPkAx3NLw\nSX2Z\r\n=e8cN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"5e4998651a1ec1556a1e5ffb8344e2499227c649","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-09T10:34:11.419Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.0-joshbwlng-priv-session-5e4998651a1ec1556a1e5ffb8344e2499227c649_1641724618248_0.9083259200173932","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.0-joshbwlng-priv-session-bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3":{"name":"@balena/jellyfish-sync","version":"6.3.0-joshbwlng-priv-session-bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.0-joshbwlng-priv-session-bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"87815717620a6de97c9c1c886ca604d8bcb46d77","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.0-joshbwlng-priv-session-bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3.tgz","fileCount":25,"integrity":"sha512-S7snsc7JqLrtS9koYI0CP8yEJirXLgWJ8dvsx13+fkkmH4fSpQg2D8c7rcVM06bs440G4+laapN8eYTetMui3Q==","signatures":[{"sig":"MEUCIE+dO5tvDKygzJfWhjtzoC0zk5jRlsoUIvKANYZaO3OVAiEA+F1/UBAerOqnO7YFKb2pk2A2UiWNHEF4/ZZLHAsrmXE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220011,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2rz+CRA9TVsSAnZWagAAfygQAI03gVDUpU8A56oYb/SG\nZtnORxVa1gozmvKvi8TgkcBPuH/MJzw4U97b8L6fKdP4TC/39jT9kLJPLohR\nHZRlcdyNLLr32312SyV2FClGuJL6fT0fzSteEwSbpqvrypPhRymCuHZX4MBz\nSVn3y5QS113Zmyc+y5XVSkBgQ3tj4NbgXNHlrqO8jmzBbs+TCWEkDQl6r66G\nCTbltQyPyfZBvZiD1gsk1d+9xJ/5A8crXeeLgM3g7K+urRJgDMdS7SEgjqvi\nlxdHWDsXkSw74NQVQxfJ0n4Uf+JTU7rJ0m7JBDrT2PmfKC5FqTrOo2n8LkzA\njzoU8P4dmQV46fA+bMgOMarml+vBk91vHRSoSmnp6i8l8cXlLizCMWBye/j/\nvOA91HMqNezGIRnY6osbttMWKLMpoSFu98+g1ax+SOz3SaNXMNC4cAtDI/fX\nR/ekGzv91f43pkSPuW72DNPnA1SVoPD6BjceEwgb9zHo+sjXCZqFoifZ4rNS\nOh/3qLJKvggbqufK/5e5MhF9Wco/LPD9aBWJKex8aKQyom+Bp2AVVrR3XKoW\nkSurvhUS1WP5FyDV1hxwBTv9NQbp7wtrbLFmFBb5zGMOWehU+0G4D+lFtxZm\nDQq/2DaD/FyrdzPto+CDS8WoKIUuz+zrVVUCoQy3dcow8Kq/uOnCTceCk7vL\nb3yI\r\n=9nj8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-09T10:43:19.001Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.0-joshbwlng-priv-session-bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3_1641725182152_0.5273652029168265","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.22-joshbwlng-oauth-logs-20007067dfea2ce2ad510b2c56357646109d426e":{"name":"@balena/jellyfish-sync","version":"6.2.22-joshbwlng-oauth-logs-20007067dfea2ce2ad510b2c56357646109d426e","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.22-joshbwlng-oauth-logs-20007067dfea2ce2ad510b2c56357646109d426e","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"a9cd8e3d14a7c225497c80253d403ae8c6ce4cde","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.22-joshbwlng-oauth-logs-20007067dfea2ce2ad510b2c56357646109d426e.tgz","fileCount":25,"integrity":"sha512-k3460aMkkB9WwAMUMjhYKLSx1KL7eghNX11TQDcjJim1oMHO7/gjYXcXvALoqZu/85/+Hf3QVu91jm6flHrXfw==","signatures":[{"sig":"MEQCIHKdJFEgGmTOnx9G28qc5C1XpbQ6SDjDB0cwBRbKcEM9AiBkFAe72qFa7rkgKlJlUXSjFHxqy5zSo89KC62prGxR1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2r82CRA9TVsSAnZWagAAwFEP/j3G0No48nlTg8Hoh9hc\ndzMbM+b8EpsnM+fGw7L+zdioeE5AjDidFJy3ZyqgYpFo/qP6W/9SgURm4eeg\nO7V2Xq4rgwjymAESjkXWE/jM+BOFdCNNjPCEbuhVqa0zjdPCeZ0ENampksKG\nahqFYiQtw4GeLLdF3e7ULA+b0BzZ8Bo96R1N+wh4Xy8BeRpkChvmxTfeum9e\nigyXTX8buTtPo+54C2M7B4i1L5NHVY5YDtb7tFLIAWaOoKz9cOSkFRqxKln3\ns+pUvrc58zAiOGLdeS6mrCqc2OrIrOqUV/BAP3x9MzSsvUuLym56AUIvGrJy\ngRR2bhQRN2Pgh4fhkFovtr5uSC+y3Wpn02qnhT26loXDrNeJrJLT80AUSHKY\nb+L99MWx6QtX44uN4Y/yCcQUCl56nf9OAdNZrVz21NNL74WUBK8L0c9XdPcu\nAD31xmUIumf2tgpo8688LmzVNqcsSBN/PZMwRIav4wiEM9G127TqGS1f8F4X\nG3H+EY3NJ6Pohvyv2E5FgqvvaVA0fYRtolt66qMxMeZCzU1SBMlTSzHI7cVy\nvtAJMWDgWV0+h6KrsQxO72Ujmt/ICK3g69Qw2DsJC79S50+cA0oINzDOGt7Q\neplRelhZX3ozQ6SCoBfZ+vYWpZu39oSn+qvAltEl0l6l/VVvtilzgPeEkp7m\nin/T\r\n=ooFm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"20007067dfea2ce2ad510b2c56357646109d426e","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-09T10:52:50.760Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.22-joshbwlng-oauth-logs-20007067dfea2ce2ad510b2c56357646109d426e_1641725750140_0.7418282383977055","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.22":{"name":"@balena/jellyfish-sync","version":"6.2.22","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.22","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"6045b3b76266b25d0e6ec00361dfebd9b4c8a3c4","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.22.tgz","fileCount":25,"integrity":"sha512-PlmKNYx1oManpnCCuN2qa7iq7w/Q+ZuIHTgOCMOEWYp9UhKp/sG+RQXzPRXbilBE4vvN8iDM6YjwFWLXZPdPbQ==","signatures":[{"sig":"MEUCIEPdlVAsfZCHz8AdAmYQWvXP8auuFNK04s/vGQGgbJhfAiEAv6UVDfOAHPDlv+Tg8AINhOWDL7KHU5FBX7NLoi+Nlcw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh25G4CRA9TVsSAnZWagAAYycP/jhAO2I/i8etkQBNBnQl\nXZEDAyYUOuHLlXrPdkNs+H1Kc7Uj6ZgF2mPnLynUXcSGzabrOv3E9D7v2NKB\nFrDbuDcR7WNXXaKuCtgZAYBTGNkvGupCAEXQ0MpVfWjeSvbdTzCoQarYRcJL\ntObaNFdj6jXb3bksk1oofem7Cw3bE010H3tfvM9S2W4PguaKppb/aikNE8j9\nyt7Qzv0kzRL8oKts7RYu0/k/n8h1oHxO5p3PSvgcvoi2DcdJYzvSj5L5QgYr\nZhSIvHIj1Wn6dTLxg/Z+TBaEL0HYXbM/rJjU55R+uvLJaVqhCm/VggQjH2DF\nY5Ty2tN/DqdcfJ1S17rVvdevwZxkm2RfwZSinOp9be4xXc4iRj4w0qBaneqD\nszJSecOLd2hkeWUZvAR374bGhWUPEbHbQ8AaJwkNLSRm6dIjGHL8LI/+tPxm\np8tJEyhPwZ4IImneHShfSBM0TgJ9/CPFVICJpTq+xbskUGBwlvm4lF7ivMLW\nZXLnVhfVZ0He6aOGLYhJ2ItyPFwbERO0DtGRxhme6mbTA3OW8xg1LrMyn9f1\nUBVuCdDO7SExhzoK2YwSOLTSdcCiFP011TP/3v6tyjAIq3eg/gd1FaVORXjD\ne0iwmBeiyOFzv1WDZsk5fj3WuUEUkA1EwT3IXLvPfMp+/FDmXracUqTdPrkH\nE3g8\r\n=pm5S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"1f4d87e3bd652be4a370d1fd8f5f71e1a09797ac","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-10T01:52:06.357Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.22_1641779640369_0.42209411744808034","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.23-joshbwlng-update-oauth-log-15217d9576fcd5737afe4d3f89fe3239c59b1894":{"name":"@balena/jellyfish-sync","version":"6.2.23-joshbwlng-update-oauth-log-15217d9576fcd5737afe4d3f89fe3239c59b1894","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.23-joshbwlng-update-oauth-log-15217d9576fcd5737afe4d3f89fe3239c59b1894","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"8b338325b0637ef6e7531c2692e170b47688ee3a","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.23-joshbwlng-update-oauth-log-15217d9576fcd5737afe4d3f89fe3239c59b1894.tgz","fileCount":25,"integrity":"sha512-WX/h4iz+mI+Gn/vvp1FgL9tsvGFDUb10E4N6BOwymRrdgAjpWd8kMbcyqF5oNSSn4y/aujT5nSKE32VHhkUuRQ==","signatures":[{"sig":"MEYCIQDxRVsPfK6I+XwaB7TsWYk7s6b98t5sMve1XBX5GDcXHwIhAJHyMcz31G7JIw5g78M5W3KdpOnlioJFM6FMikA/hiHD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh26LwCRA9TVsSAnZWagAAtp0P/R8YxYEEkWQP6mE1feex\nyEpXrw7yRQ00CxnwxW1QFBAeWRTflgtjXH4ZyEF+kZ1qAOn2xZjPRBB2mosf\nWXrxoX0j3cpbywW319YIIB/OpGreK4xLYtaPJBkAb5vXBad8ZE/m9BuC252q\nQuI9vLRwHcIJUHTmb1466q7C/DwmPQi7Fhjl1pB3fPPlbiKkozuPoy3DLpte\nt4TuK6ahK8pdEe9PoEy2l8PktOcZE2tI8QIVCZt5+ZqmwX7nFvrbGQurPON/\n5qEOV6rzNq6iVQ3jkd6Z8yJhf2DMeefTEoZUcYVmQqWtH0KwIDHqn258xIE5\nbKZluaKOGp+01d/RTplGmMfx5gzZSVfRhIChXWT2FKczCLz1fylpAU1sYWj9\nzuvZwTq04HtghRlmGZsGj2UhgO/FX98lGcYkA5bxbAvjOQYaw7M5ovd3zk3q\nFPJeMqIm9/uS8LdeRQVfAu3T6Kb2sFt4JAkvjQiRxBCd8RTOxSYUKz4flktx\nP7vcsfIqPcae26Lfhfj0FLoLViNVKeaiu3lVY9xiVZCj8ZGTy0hrcjhVHeV+\njbvNJZgyAsgpX1CwwZCrY9AFx4gAahFD4VSBB2nv7gFzn2D7I/zQa50sA5z7\npziNgRC7AoXEiMvLrC2EY90GkcYSrq4I/HILKT2FdPjKXCWQiLlJ8gUr63Xo\nYjta\r\n=iDAb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"15217d9576fcd5737afe4d3f89fe3239c59b1894","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-10T03:04:08.223Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.23-joshbwlng-update-oauth-log-15217d9576fcd5737afe4d3f89fe3239c59b1894_1641784047979_0.6696827192153336","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.2.23":{"name":"@balena/jellyfish-sync","version":"6.2.23","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.2.23","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"cb04df82b89d97ead703e5ed2ce941fa7ca73855","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.2.23.tgz","fileCount":25,"integrity":"sha512-ezecz/U4s840slMptXgZW2IoUfSsQI09xQ5HlkPiaQjtNfA23GNA0DG73BOl/yLgUSi62z6LZCJyn3reFjGx9Q==","signatures":[{"sig":"MEQCIHfLyGqMpRLQanDs5Czwx4seSCErwEZyi7s19+283S0zAiALGxNhq75FPDN7h5xnDbzzZVazuBiXhtpD2BVBmyn6MA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222068,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh26OeCRA9TVsSAnZWagAA74MQAICmJwrMfOrQSD7zz5o7\nCEcJDoTs0ysRUXQUv1Ts/I/X1N9r5TFjA50800O9E5b0CIXBgrhHlauaxlND\n3msb/lhEtQflvQ/h8NDvwy3sTirhvS5YkVeGp9U341qisUKO66AmjGKZeGT1\nhV0iOWJ6TPIL3cm+wMTQdedQ92dh9BWxAhOntun5AEJiYW7ESWtmaV/023wX\nKIkozVmkoTdGSaLaUQGM5gTkZVaLsAeiovU52+6nVVlvqj6z7OxQPktkBNa/\nbJT9GX5tneO6lDbYTGE8a3dVX6N4NvvxDFPum5HjZRXy6XAG2em8e0nDSD1u\nUn9LgYphtQ72cIrHdDW5+tSRKQ44QTmBl3eMn8qoX8Pr6mzdK2H7Dw9zlTup\nNjmeki+zTJH/tyqZneSfmzt5SKD1kTNzdhUE87QVmadzwrlXhEE0wBC+NYrU\n5CBvxorAeE4IzSXVzM8kgTdg7YfPsBqhbkeNNhrxuZSZzOE/L9I36LBIgrgp\ny+o3rXlN3otX8p1V94hh6ucnIZNkV+ADb1ctOKWKWqDGV2R9OOsL4BaITYOq\nkQRGsbJerOQn9IOZSYd7yXurqmUzVQwPVfg+cdelRVAT4e/HQkTaOdSxHf54\nYf5hj1AsErWaME+yqLYUg2agQ5u9gr/mkt+I0Px2gjGuZ9Rk53H3YCbiAfLm\n2Jar\r\n=4r6f\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"f36d96f8dad89c58f8d75d1fe2d4a2049d04f8da","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-10T03:08:17.121Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.2.23_1641784222237_0.3368824438602078","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.0-joshbwlng-priv-session-a837693ff1ee4c159eee6b2fa394449aabc39a63":{"name":"@balena/jellyfish-sync","version":"6.3.0-joshbwlng-priv-session-a837693ff1ee4c159eee6b2fa394449aabc39a63","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.0-joshbwlng-priv-session-a837693ff1ee4c159eee6b2fa394449aabc39a63","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"65239f5eb449c7bc8055a969b1efc9765d09f04f","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.0-joshbwlng-priv-session-a837693ff1ee4c159eee6b2fa394449aabc39a63.tgz","fileCount":25,"integrity":"sha512-ECz2uDjr+YUJOVGDWbP+Uw61RrwEGbCzJ1Tds56+jGUshGbgZqHrV88heoRP9w1QeyVuc+px/v7vEc2yx2g/+A==","signatures":[{"sig":"MEQCIEg0JzmSUdWvAi7tW3N/rHjpFkml9GJ++kkQ8np1l/9iAiBa5MCpCUODWZt5teLArK7NtswyEKxWTY4t0eFEY0KBsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh26dwCRA9TVsSAnZWagAAX5MP/0yUdoAk6K3QnFAUGm2P\nfquGftUO938PegTi0LEHV6kVvo5n4YWa49s8gXjrlBEKb720o1/ju1j/hjS1\n9tA0C4CdI1bgEeB2t1M6naCrZXSQnW6BLI+XtWzxSgBBY7u1BFlDEhQ0FLKQ\nVBi/p2C8Ye/zG4e+aNKTDxyvBdXbP2aqdHchTt2w5ajouJ0wC0ZHD0a9PWXW\nDkfuLwzeTtwmJUbGiTIT/bDkNV+DdL26GEFtGfwZdwQAcSeSnRFd0R7GV65x\nU1cxyRfPM2cv6OVlWQu8f0HQlvrUvYS0WJ0rZ1ILngbUM6liEU9gQo+TLxis\nMT2oUkaJirKdIkklxcAB66eM0EQFP3xyTrPlJ5giREua5xJXOILuvzVCBlAA\nSOctmbTIuhSJjhr8e/LiSe5SZ3tdG9uMmaIFzv85aPJ6WcDfjSV4R1oklA4O\n6IODB1+dMuv2KVsZ8jE7MKlu6KXjMm672i7DokK9s4WOLy3tQoXQv0sHfOAX\nWB5uxuWu6B+rQOlD0gJgumJdGV3SKe1UxGoyCvBZK8KD1PA+YfBScLoyYlil\nKUO9eu1hEkuVH4eVVLkd19w03IeL++qXxrMhPXnkp/tFud/tS+6qVNQM/WzT\n5o/3o6vadB+flYMk660wxTcIoRdhdDVoEyKxebNV/62oGaaaA1X8GnfTfop4\nY+zg\r\n=BzWD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"a837693ff1ee4c159eee6b2fa394449aabc39a63","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-10T03:23:42.968Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.0-joshbwlng-priv-session-a837693ff1ee4c159eee6b2fa394449aabc39a63_1641785200570_0.5567048901617015","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.0":{"name":"@balena/jellyfish-sync","version":"6.3.0","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.0","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"700097fce524f8b8d499b27c3be0e297192e5b97","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.0.tgz","fileCount":25,"integrity":"sha512-8u8G9y1ANf7cIdPI7HKKYUdF9jaSUl4hWJ1WimfdxmMA/09EO5BmgLjEhKfqtsvZ9BOjWkIG8RWr26ivhWzqbw==","signatures":[{"sig":"MEUCIQCA6zi6DeLqJdMP0gC5qENJZFnP6EEjeofSmqE5QXsz0gIgFHiAHcpgrDRfqDLT4ktprXuEEO1O2osn4AtBLu1x9W0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":222464,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh27O/CRA9TVsSAnZWagAAOT8P/ivHBzQxsGbzjz0kfXRf\nc4g7/4oGr/1qZPnOXjW3nx917nRxtIWAFQawH6K9Q/d6SV3ybf9vCGWc/Q/1\n50CHX7n5Xjddijat9xZVqQBExUJxOxYf1IS3z3JA3vmU6TdYDmAK4qATkS5t\nBs90bxf0w6304T95/XDA2KdbRzU4h7iuBVPq2L/gDS0E73CuQ6Viqteewvlp\nutbHK3TUPqmFxOzNSDKFEgaaMmA/rjJ3TYTMr8ZE7bPxIUm720XCDnw3WF8i\npMLIIVW3iasD+JHdTFO2V5mJh61p0LtNEPU0Icxp5FWEBSW0jeWmULGYlMM8\n/6lDRDdMEEapIcZr03XF/W58RM/KvIfJ1m8pqEl5XmLMj1EXpjUg75ZZpqw5\ncwL5s3tW1I2xqbwVZMEbcrfMttueFlIxaC4CogCmNQ+J1FCAdAe71I/KwU4/\ntqRvVF6Q6JYYLrcC5uibEt7ARYta8U28FT7kuIRiYTJHkzOh8BTfGlmJqRtM\neUXiRLO4QyHmv42or+Gio4IvZnnwa+17jhjQJvgMicKztSzHHTcSf3w6lCe/\ndFGB0uBt29OBcPvxcD2kG+KI8XHtqM47zlemm+zinD+iybCg80+nRsYbIDZj\nlaFSNNhsbXHWfPOVKjTkpWLMArgisuWYfJl0dWKywILKRWu1DGuxfUEMOw7/\n4sNN\r\n=PEnu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"6f1bb616abf6146d3b829b984ae833e40aa00b2a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-10T04:17:16.599Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.0_1641788351367_0.516742855114384","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.1-joshbwlng-remove-oauth-logs-65df6dd7905c8525cb9a433578251c42bf5f4f6b":{"name":"@balena/jellyfish-sync","version":"6.3.1-joshbwlng-remove-oauth-logs-65df6dd7905c8525cb9a433578251c42bf5f4f6b","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.1-joshbwlng-remove-oauth-logs-65df6dd7905c8525cb9a433578251c42bf5f4f6b","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"e163ebdf081a72985b05ee8dd068a63b48eac78d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.1-joshbwlng-remove-oauth-logs-65df6dd7905c8525cb9a433578251c42bf5f4f6b.tgz","fileCount":25,"integrity":"sha512-hyqrVAYPS7SWLtnMYovNFarExV+AobC1D6fInBI6bjDCf5rd6bpwOWvLv4xqsSQsvhEJ1x4Ay1TrMCCflsVK9w==","signatures":[{"sig":"MEQCIFuKWmSxkHo8XRIQwjhHAhx1SyBrqblo3xJfs0symVlcAiBNwtPXtiQfDXo1KlJdQC6F5KitQsEbHEt9YR1miCAghA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220825,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh28wCCRA9TVsSAnZWagAAnnwQAJrH3M/dmlSo6z1Z5CAr\nU0bjqCvQkwjYInz7ETh6Y7nn1MGQpOdzs1MjLt7xyP9nLf9igRqkzh1mn/o/\nQ2imWmbpRLQOQNTcxp3HURUGTHx5/JA+H/YKoXwhueoJ2uQ0DSWIJxCk5HD6\nMznQzBzk+EPTQMpzbJvXtCCzAxTq1REdQy0pEfOScv1ei85newruA7UXPx/G\nTstLypm9Hw7hYYwvbcYrwruCgMqJlj2hqgbtYG/Dqz6Q76KvA5rBOSu8M1LL\ntnMnjxwDNcR0tSd41+5nR6kMqWcnPbVjypiskTgsXpYrUf5QLsw5xdYjBH5P\nGzKsmvyM9PZYY6Oe6JSoV3T5VNnH8oS3JKzLvDsuUKLXBRnwjmHRR3neNvR/\nN2BxzU5sVhQP6YmtGbe2Urbf9W7UbfZeeNdlZGqwwQCBrynYG53x0tLnYQjT\nJrRwLiyGIGWNJc6E1bGiJsDrccIcLZRrAQ2TjyPDcByG9C7iNfw87EE4TyS0\n2bZDgPGn8YurjCJGLR2tmXm8emfa6eJ4QS2du6vVA8Xqb9ETcK/+LnyNP0WS\nbdtVTjBSYhj2KE9LAA9LPyNCLpjytbjL/ROU9XBn1GDO6/WlHC1IM1eVtmee\nPvOefXKh4pCCyUgBJpgUJQbrOo+YkpM/WWC6BRlMr49Adg3h+Z4EMoxf5AX3\nWBB3\r\n=eD3/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"65df6dd7905c8525cb9a433578251c42bf5f4f6b","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-10T05:59:53.434Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.1-joshbwlng-remove-oauth-logs-65df6dd7905c8525cb9a433578251c42bf5f4f6b_1641794562376_0.8648028433921469","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.1":{"name":"@balena/jellyfish-sync","version":"6.3.1","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.1","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"172a25480221dd09b8d5294c998ae4bb99dc6106","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.1.tgz","fileCount":25,"integrity":"sha512-WIq6g/Y/cmpy90qz+L9P2lqmG/As4zbvr6ywMZHWVX+QRWSUXrskGoMqNC/f6zjkP8yWFrwCadt6PxvnnLmhBw==","signatures":[{"sig":"MEUCIEIS4kukp+QDwbOc47HJ0bcmeO2YxYB0tkzr5C7m3HjtAiEAmmy8AszuUmoGnolgT4VXNj7k7sFKOaOU0XMoH4+rIdo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh3N4MCRA9TVsSAnZWagAAXpAQAIrXf2S1ikkp8i0CzmeP\nVEJolyqx4GET5okdXJDG8k7znITQJ5IoBpmwHH3qOm4YDKCoed8pNhFMwjqo\nRP/THWQsc19xuXkBZHSzRrsO+fCpU2cHvH9FQ0CpSG2bngisKgKOK/yHYc8u\nZewWI9Y9wN/qHcBgR8wO8VM9lY4GaAyPjnzLaJ4TwSY1PKJLUgto2qcGRr0m\n6EQdEAHKDUyWXQdHLO7fMMVW5i8US8UxxXZy/xM/UcOZRatWbjqbSOTA2DGI\n43t6rRi4O5Av/Tx20qhiZks5oD5tWf1e4W7xPVf7m9NPbKZ1UZIV7UXwRRxn\nuWRZLu3illpiX9AdmcIbuL13MCn5jdlnBInp1N0f/4VIj2O+9SttZqvZd36o\n5z9VHyX0XsVEV9L7TlxyCAuMmOelIfsJMTWU1bqRbz3HId+KS3OdTT/Hmkqs\n1scyfsaAabObO4+2uY2U+1B8XpjX3rqjYXu8V8yhYeRXSy7auWCAW2rKs1Vm\ncczXG9Cr9lQEmCSJ9iZRt87RgiDKRCE3uO5tT81TWXOWWuCHTeh638xVI1+k\nyR7p/dAWHJ0+bXFU7JbGqe7g4yvp77xWlB3kcHVqY53v6PNHQQ8NAJeNYA8N\nc5T+MmTZyluho8X23yzvivbgUUqfAGpLOha6CHC6x6n1f5iC1dym3OyUIzF7\nYoSz\r\n=X8PG\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"d47cdeded9719edaed924967dfb62008455abe52","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-11T01:29:41.070Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.1_1641864715974_0.38886527670822546","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.2-renovate-major-external-major-9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a":{"name":"@balena/jellyfish-sync","version":"6.3.2-renovate-major-external-major-9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.2-renovate-major-external-major-9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"178e6e53a0ae37def222024e7c47ae5a4c1e4b47","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.2-renovate-major-external-major-9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a.tgz","fileCount":25,"integrity":"sha512-RnAZ4UIMNClLO2cCwx9BGIO4vMCXiDwunwgHRDtC+697DZi7DPE8VOoC2LHLR57RQLeKNHP0FbayphQVGO+34g==","signatures":[{"sig":"MEUCIQDwjIuuUzZ0WRYq5/kHojhz/5hKtviZwwz2X3buBb1zLwIgD0QzXCFSMXPx68phr07B3VScp7i7+wb4KRgG27IJIvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4ipzCRA9TVsSAnZWagAA89oQAJ2xfrnXMAwkBoq+3BFi\nheawD0Dj5kjDPaxL0LABbahJmdijdrkF6MOgdjAHM2scVWLw5eigqiagNqhR\neVyCUnRe/4xODsNG7so4jqf/hGHo8/J0/TaUCvmVKlHpeU0ktlJt0LDsV84c\nORh2spVF7VlqLwLt25YWQMf9OYRSoNaCsZdRzDFePPgyCNhRro1fXkT/wSly\ndqbddyY37CEhRUYaCLudxnzrB0zEQmJQLGprN1cJFrcMIkFnq2zjbF6m19tG\nsBw1yejOFvSXXMyb9VFm7VrS1Uhyp7ATlNKDmfrQMZTvcKmaKNIS9UB1m6ai\nstGQTsZgxk2kYVF7cBl9qU704bLQSQzD4VQ9u+XsZ5WFXtFg1CgLJ/SjOQGT\n0W++RvQt6OGDNihUpHz0BmE3fQtJJQOmjcPRETXeT+nPJl3T4Ye8MbMdQZxc\nofJonqmkUzmCRrU+6rOgEsOKE28PL6an6sOt8Na/CWlBTWPPosPtBDW1VVKv\n7z0IjDOA0+gurbOJp1p8ayj5QEVProKT7RJ9mGScOjxv/IvN6Di/FfhYnmno\n2mBD1m4EnELb9d0BeEN+95UDVNTbjtF/oe7aT/f/qyLxdGZ5JISH1LRlgbzf\nF86C81f9LLkqRdlGoDZumfxX7BWjjMsL7/gnqIcTZd8n/PDSgMSKD4OdTWxF\nxSMS\r\n=0M1J\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-15T01:56:13.615Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^12.0.2","rimraf":"^3.0.2","skhema":"^6.0.2","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.2-renovate-major-external-major-9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a_1642211955574_0.9149351003271169","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.2-renovate-major-external-major-cc175a080023693e01f12cc61b359f4ffcaf49fa":{"name":"@balena/jellyfish-sync","version":"6.3.2-renovate-major-external-major-cc175a080023693e01f12cc61b359f4ffcaf49fa","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.2-renovate-major-external-major-cc175a080023693e01f12cc61b359f4ffcaf49fa","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"3a9f6622e252d7f9023a7facb7795cf7ad51e4b5","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.2-renovate-major-external-major-cc175a080023693e01f12cc61b359f4ffcaf49fa.tgz","fileCount":25,"integrity":"sha512-RiTsvsxw5na70ALrVs9EqADDggR1IZQo7LTAFiFulvxfTMf3iU5BE84TImvG6jsBXENNK5zEkpD25WDVtIrhKA==","signatures":[{"sig":"MEQCIAbisDCz2TlIy2yr0pIt88fSjb2JYBHfCV11ALqO72UOAiA2NliUuWxbBUc7Z9FuCOsMPcPvUTaeWFQVDDBUs/X+wg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":220897,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh4j/xCRA9TVsSAnZWagAAbY0QAIc6SWhv3DjBgKqFMXFL\nt9CQj5YJeG4iZJHN06aPib9DP6xYkyhiRq7aUMKVRxchox8Hupc/mEcfy9Bf\n9kter3XY4Eebcpj1rPM/mYWKPC0+PlNsHaJJpU3r7HEdaWXju9Dv3lIK3W7C\nu5i9fDQjZhN5wl/IGlYK0iwVBakJKiqLiH7oxog/UwP6zOZs778xC2apuPHg\nn3G/qHjGbRnp5A8cHyiusFVG5gHqS7QWlKSX2iAfyGOMndV4EfLOM33VIT51\nZyUnSoHlO+q+VNv4Iz9VcWxtAK06ojj1mTOWO3GSvzM+xKf0dmgO81i0NCUk\nNxP9YJOO/Jt3uakN1f1zBtCHJt3KXtblE/SOJaAdw4ozV12s9/bsuUGwaLcn\nJP4Ad3ddIZAEaEd7ShOxj4YD0ytSK98aKDRXBooGjcFZu3v3s70IO8F/r5gf\n73qmnrPODWun9FNmWbjaOvH4Z3VCBYwakC9fSsa6tzRqBjlSkzku940WnZIu\nE4Dz40FiEKXv1WNt25itukmGIA+UNuT78p+tN4hvc5cl5et0S+pY4DkRPdXL\nTmljgbglsVx/hrCi1bfy7EUiRZr4uBdrlclb5UMzOGl/wpOyQCdAis76NrTG\nkPHe5UfkgJ1/sdl0R203Nglks+ZEWjAWsWqMPCk1CLe9z4Kg+O5tc3qOR9N4\n/Xt3\r\n=fIpM\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"cc175a080023693e01f12cc61b359f4ffcaf49fa","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-15T03:28:36.790Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^12.0.3","rimraf":"^3.0.2","skhema":"^6.0.2","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.2-renovate-major-external-major-cc175a080023693e01f12cc61b359f4ffcaf49fa_1642217456879_0.9351996084545666","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.2-joshbwlng-update-readme-40b92b7c2a18f954659f3f5283d410e9913675e3":{"name":"@balena/jellyfish-sync","version":"6.3.2-joshbwlng-update-readme-40b92b7c2a18f954659f3f5283d410e9913675e3","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.2-joshbwlng-update-readme-40b92b7c2a18f954659f3f5283d410e9913675e3","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"404f71f1efb39ff188f30aeac596b4f028942d83","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.2-joshbwlng-update-readme-40b92b7c2a18f954659f3f5283d410e9913675e3.tgz","fileCount":25,"integrity":"sha512-d+XGi0ajyFJuw2hzJlsyAdqHXLgDPKN6N52SsoAu/adBvpxLsweHWnEWP1WGXp8/+htE3qMpJPByTlqtCTyp0Q==","signatures":[{"sig":"MEUCIEjSjhElU2xSTqE1gL/jYJ1Js/eOOh35pVapDRjZ/GkhAiEAnP9+jAjgfW0RuskTYJ0dOaUWqGJuJQ56qd+JtqaP0lQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9MtjCRA9TVsSAnZWagAAQJsP/3yMMFTbytu+/LWbNv2e\n/0pWpAeco7LpiASXI0gd2DQwUfmXr4rVfW4J8AJjlSV1RWtYNtTXP4pStvMy\noYajMAEb3aRgyL34IGDrvHxTrYpQ/IJt9DouJ0+jzOllBG7fszDUo1kjCHqx\ngmImb34zVTxIqEWOWSpVxMdAW5KHMiX1S6AxXb27qHJuh1zUFY6W/t5QdMvU\nmzuQ7jMDi1XIRcu6MkHcyhF//RhQEF78WTHhhpidVQjJPJHT7Hn5lmfrgUwI\nici+hxIB3ugdaRkR6qZOKvU/OkSyUzldxCbsYGd9zMrXn5x2jMLtaNfrwUWb\nStxOgRMo0cekA0t3nOJt/6dNwSIc+CCrJuzyINc2RIiLC4zW01HKrQcgRqN1\nskltaZPtmaeoeFgSTTycZg/VHZjcskCuJWLHNhf5CU+EX6kGOCNBVshLsop5\n9ytmXguv4f/cVW3KLN4DHKUvFb1VkPHpxBYO47gMZ1dyXaCDwHanT4PxYGmq\naR4qXc3S2sUifoh4xRYBPVIkLUv3oW7MDQEHn/FOmYmx3XEpUPCqukUgFPYy\nt0f9eObFnSiQIESRtoUVYFftHqxbmzes1nW2Q+oa77ECROreRpB7y3/iylaf\nVK7uFzbbS739wZFroogWQJfgeqndX74ydnxnZufTpJRnx/zCLMKAGvNy1Yry\ngofy\r\n=Tjnl\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"**Notice: This utility has been discontinued. The functionality provided by this module has been merged into [`jellyfish-plugin-default`](https://github.com/product-os/jellyfish-plugin-default).**\n\n# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"40b92b7c2a18f954659f3f5283d410e9913675e3","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-29T05:03:26.717Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.2-joshbwlng-update-readme-40b92b7c2a18f954659f3f5283d410e9913675e3_1643432803737_0.885588545184953","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.2":{"name":"@balena/jellyfish-sync","version":"6.3.2","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.2","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"c9eff485c20490cf308e0233be3d283152b950aa","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.2.tgz","fileCount":25,"integrity":"sha512-+Jf6vFO30E4NYdLmn76jvmkS3U1Akh8MlKaMRZ1ZWyAkI4VTQxXkY7l+80xkAytselffZ41lXq3HkFPUHmd2Fw==","signatures":[{"sig":"MEYCIQDcbw/TyTL8t9r0SGGWYDEdHNMLjg1lMVPT+6rj+vZChQIhAJ9qG6430zxa+Q/yhzhueiXlOE2ihi/D2GDjObd8yGOP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9MxaCRA9TVsSAnZWagAAsmIP/0lsGhh1/iYV70zzPNe3\nvgtmXCcNsoi0sHt3yeV6UbTMlpBxVqxYjtweh33cAsCLnYqnh0UJ3tMPRwFT\n3REGHlsQYwcs8NJA1TDS3ayVur3Rx325LSSfRMBc2OX4dxzUCVFKnlhvBRCo\njaXLa3G/XZSJpSsfzlv7iMDT1Kw48QN/6Do+ghEobwu0aXZ3fBgzwIQa67ss\nQNf/0ewXWosTFgCZqfkB+nM/EtqTOEKnTfILpHduYVkZ59cSk/QS5vgIGSli\nVGk9lbLomPWk0Ki1ZJ51fwmZLofqz4Jgv/lYpVS93wtvDaXm9XESET0t4B9X\n2fnbFyhX+NtEJgnoZPHu3tdXEq3hNbPOhShe6+Ms1RCpUcYD2VaqBKaLbqlJ\nYXV2iXWMVbJU6RhP0mOMg9fkhFXniqPtDNvu9vXR3QmlhXigYJTXWkTcmrRO\nI6UqQSMdbAM5sVbChZV7n1jtNot2oR0CenEHWMfNl0sJR4WUtLdCCSk66oa1\n0tsWYXSs2oLzzrsgPFQzNqpe2RLNP3ffKLyR0CXbWKcDl8JYQFj6dNRFjG+d\nQhEeidOqrN+bJ3sv5tb2XsuK0CsFPEqD8DdaAp1rTGAU/jGRzRlZekRg3aAb\nqPIrCMCItmluyKSKM32gsbmgu2vtNukm7y9ctlQ9CeLiTyMRxa5giVH1oL/b\n8P4g\r\n=OnCV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"c3dce9618abe9d3655a70b264d0312178bfc2df7","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-29T05:08:46.955Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.2_1643433049780_0.8636114861353235","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."},"6.3.3-joshbwlng-fix-readme-e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9":{"name":"@balena/jellyfish-sync","version":"6.3.3-joshbwlng-fix-readme-e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9","author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","_id":"@balena/jellyfish-sync@6.3.3-joshbwlng-fix-readme-e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"}],"homepage":"https://github.com/product-os/jellyfish-sync#readme","bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"dist":{"shasum":"7693caa17b1cf5ff6eb15bbea8ac6f935e88d08d","tarball":"https://registry.npmjs.org/@balena/jellyfish-sync/-/jellyfish-sync-6.3.3-joshbwlng-fix-readme-e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9.tgz","fileCount":25,"integrity":"sha512-qWgzngN3Sj1DrrNu3OgO7FaLULiMCK6eHPm4V3OoT6B2XiwslFiqcJ9oaHyCoy9XmkgJknxqvikmkRRogZ1/xQ==","signatures":[{"sig":"MEUCIQC40tI1hx+rArF6vy/rPfE1psCDOIqzq/Uhz0/TrbUDwwIgbTEqdtC2hJiN/Vfe9S2hByzsxFavfJ2llZ/kBjzVsHU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":221148,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9PAQCRA9TVsSAnZWagAAtDMP+QCE/1O/WMz+9KFx6UTl\nl4KVMkvDoBbKKU/U/P6dibZiiWCjuKoKhUWpdIA2q6bLnADJfY5/pj2A0vkE\nC8QdBaBtUsVzj0U0TymRNh/6uZh01210IHoMVlopk991T5eCqsW7OPMDMa4u\n75m8BdlpvPpNoINe6hhVufcxXHTcKtkArxIR3eeYYdt5LouoafiPeRTVXFKI\nR997jOUHzjh+fzIlsIEqHW0qVCgk6wB+I42lDP6aTcF11y78jlWpymhnzJ3/\nttv3xnsPqCJIrjtdZ7UbYl4iHmwYlhjt4FeqXgyYNDgWyKbcW02+3uzU5PJs\nZpCDKa1iQRkBitShNDP8GxJzlIDvwLxusVXq3HtTokA4gdUzzaQ3lA9QnMGr\nl9E79jJ9laUjbyvgel4/V9Lmf30lFdjLIX8AVMU+thURuc2L/E4nUgiRxzRd\nWtJ8e3HmI656KG+VN9Pi/sZSi9VOOBrsQ/jVFRlqkxG0orCWqN3apm9AV5Zj\nTa5lRWXlz5NhkBl0FSufBLqVb4LswnfV38Yy9VHTGdWHXY7Kd5MHy+Eie99+\ner/MTaBIKHm22oLQFlIu7kI4DcIM+BXD7OXGsgzu8lpTU0FgI5i7aBiR6vkU\ng5Dzei1tjySp71R+hXpHhgZfQnqRoHDidKerZt+8qZHjgnoCzP7lFgYrOoE0\nX6Mo\r\n=6B2l\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index.js","types":"build/index.d.ts","readme":"**Notice: This utility has been discontinued. The functionality provided by this module has been merged into [`jellyfish-worker`](https://github.com/product-os/jellyfish-worker).**\n\n# Jellyfish Sync\n\nThis module contains an integration syncing engine built on top of Jellyfish.\n\n[Balena API flowchart](https://docs.google.com/drawings/d/162ZuOsj-d_U0mw6YaWgCl7SmkApN3-4UL0O5WK9PkOw/edit?usp=sharing)\n\n# Usage\n\nBelow is an example how to use this library:\n\n```js\nconst Sync = require('@balena/jellyfish-sync').Sync;\n\nconst sync = new Sync({\n\tintegrations: {\n\t\t/* key/value lookup of integrations */\n\t},\n});\n\nsync.getExternalUserSyncEventData({}, provider, externalUser);\n```\n\n# Documentation\n\n[![Publish Documentation](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml/badge.svg)](https://github.com/product-os/jellyfish-sync/actions/workflows/publish-docs.yml)\n\nVisit the website for complete documentation: https://product-os.github.io/jellyfish-sync\n","deplint":{"files":["lib/**/*.{ts}"],"modules":["lib"]},"engines":{"node":">=12.15.0"},"gitHead":"e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9","scripts":{"doc":"typedoc lib/ && touch docs/.nojekyll","lint":"balena-lint lib && deplint","test":"npm run lint && npm run test:unit","build":"npm run clean && tsc -p tsconfig.build.json","clean":"rimraf build","prepack":"npm run build","lint:fix":"balena-lint --fix lib","test:unit":"jest lib"},"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"versionist":{"publishedAt":"2022-01-29T07:40:10.742Z"},"_npmVersion":"6.14.15","description":"Sync library for Jellyfish","directories":{"lib":"lib"},"lint-staged":{"*.{ts,tsx}":["balena-lint --fix"]},"_nodeVersion":"14.17.1","dependencies":{"json-e":"^4.4.3","lodash":"^4.17.21","request":"^2.88.2","bluebird":"^3.7.2","json-schema":"^0.4.0","typed-error":"^3.2.1","randomstring":"^1.2.1","@balena/jellyfish-assert":"^1.2.6","@balena/jellyfish-logger":"4.0.15","@balena/jellyfish-metrics":"^2.0.19"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^27.4.7","nock":"^13.2.1","uuid":"^8.3.2","sinon":"^12.0.1","dotenv":"^10.0.0","rimraf":"^3.0.2","skhema":"^5.3.4","deplint":"^1.1.3","ts-jest":"^27.1.2","typedoc":"^0.22.10","typescript":"^4.5.4","@types/jest":"^27.4.0","@types/uuid":"^8.3.4","lint-staged":"^12.1.7","@balena/lint":"^6.2.0","@types/sinon":"^10.0.6","@types/request":"^2.48.8","@types/bluebird":"^3.5.36","fast-json-patch":"^3.1.0","simple-git-hooks":"^2.7.0","@types/json-schema":"^7.0.9","@balena/jellyfish-types":"^2.0.3","@balena/jellyfish-config":"^2.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/jellyfish-sync_6.3.3-joshbwlng-fix-readme-e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9_1643442192779_0.20199780669941436","host":"s3://npm-registry-packages"},"deprecated":"Deprecated: no longer maintained. The GitHub repository has been archived and no further releases will be published."}},"time":{"created":"2020-07-09T05:44:07.761Z","modified":"2026-01-29T10:12:20.659Z","0.0.2-copy-over-code-acc867b194a0e2e5fd36a371aeacaaed1e4fa716":"2020-07-09T05:44:08.136Z","0.0.2-copy-over-code-2a97e78b8ec70a3da4d263f25e5ae4aa6c2184c8":"2020-07-10T09:05:52.059Z","0.0.2-update-docs-59efb33bbf704b919596dbd6b892822f64c9fc54":"2020-07-10T09:45:29.353Z","0.0.2":"2020-07-10T09:51:28.975Z","0.0.3-update-code-to-latest-9bb4a9b2b445c246437435833fc9ce942ef0e380":"2020-07-11T13:14:27.441Z","0.0.3-update-code-to-latest-6b4e4aeee4ca69f4e002ec67fa0ae141a79542da":"2020-07-11T13:20:43.048Z","0.0.3":"2020-07-11T13:26:17.132Z","0.0.4-dependabot-npm-and-yarn-eslint-plugin-jsdoc-29-2-0-fab25878d37003cb171214204f0b4bc780a93ca3":"2020-07-13T12:08:13.991Z","0.0.4":"2020-07-13T23:24:58.667Z","0.0.4-dependabot-npm-and-yarn-lru-cache-6-0-0-c8e7a2846c0f48ccfd2bb4e22e0299d6f490c122":"2020-07-13T23:26:11.123Z","0.0.5-dependabot-npm-and-yarn-lru-cache-6-0-0-709585fafd9cc41f67fc05ad25e2c8b3515b07f0":"2020-07-13T23:28:35.045Z","0.0.5":"2020-07-13T23:32:11.907Z","0.0.6-dependabot-npm-and-yarn-marked-1-1-1-f9c612f3244ee9e04c5b5b5d9a9514612defd654":"2020-07-14T12:09:05.313Z","0.0.6":"2020-07-14T22:56:13.819Z","0.0.7-dependabot-npm-and-yarn-octokit-auth-app-2-4-8-8ae3a80780f945d5ed0c8981b2a50e02cfe338be":"2020-07-15T12:05:15.898Z","0.0.7":"2020-07-15T14:43:55.951Z","0.0.8-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-0201d7143de8666d9b64159ac4da0fd7b044bca5":"2020-07-17T12:06:11.839Z","0.0.8-dependabot-npm-and-yarn-octokit-rest-18-0-1-4f89cc30de90d699efa47abced8ffc4b9465a743":"2020-07-17T12:07:04.230Z","0.0.8":"2020-07-20T00:43:52.257Z","0.0.9-dependabot-npm-and-yarn-octokit-auth-app-2-4-10-2bd7ad00703857f33ec230f50e78d9c4b21e483c":"2020-07-20T00:46:30.724Z","0.0.9":"2020-07-20T00:52:47.417Z","0.0.10-switch-dependabot-6eb5e968ca4c138990d205f1286d601703c6b7e3":"2020-07-20T02:16:34.328Z","0.0.10":"2020-07-20T02:20:11.594Z","0.0.10-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-4cb11e62f6b6e57d0cc73c5d44f078c509eed0e7":"2020-07-20T02:24:32.039Z","0.0.10-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-b8e5cd202aa9c86b01ee180f1a6cbaf31db19f61":"2020-07-20T02:25:40.832Z","0.0.10-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-08a33afc362fd0c163e481688b60f7221aa34678":"2020-07-20T02:25:54.440Z","0.0.11-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-1c9da61cfdb2962c086e5bb9605261f7d5608e70":"2020-07-20T02:26:01.410Z","0.0.10-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-72536472dbc41aac68dcccbd9bb73013e0025716":"2020-07-20T02:26:37.598Z","0.0.10-dependabot-npm-and-yarn-eslint-7-5-0-8ba98532d5b7fc654b849deb1b8f9312608372e6":"2020-07-20T02:27:00.750Z","0.0.11-dependabot-npm-and-yarn-eslint-7-5-0-9297bdd4b6835133db0ef22f9316e17a2338173e":"2020-07-20T02:43:38.784Z","0.0.11":"2020-07-20T02:47:41.561Z","0.0.12-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-0-63e19203b40245a90b38fe3337ab106a4091c6db":"2020-07-20T02:57:02.395Z","0.0.12":"2020-07-20T03:05:12.494Z","0.0.13-dependabot-npm-and-yarn-balena-jellyfish-uuid-0-0-13-f19797563ba95e45a8718f757f7ef691020b5cba":"2020-07-20T03:10:04.462Z","0.0.13":"2020-07-20T03:18:24.985Z","0.0.14-dependabot-npm-and-yarn-balena-jellyfish-metrics-0-0-18-bd211561f0cd05878b9e9437747c5efc834b3594":"2020-07-20T03:24:13.925Z","0.0.14":"2020-07-20T03:31:05.316Z","0.0.15-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-0-c1e972d9333ab5f4bb50e09fda6354e3fc500595":"2020-07-20T03:35:07.594Z","0.0.15":"2020-07-20T03:38:04.704Z","0.0.16-dependabot-npm-and-yarn-balena-jellyfish-assert-0-0-13-337408c5445c1704f7fe1b35d4093aecdadd9985":"2020-07-20T03:43:17.723Z","0.0.16":"2020-07-20T03:48:05.039Z","0.0.17-dependabot-npm-and-yarn-balena-jellyfish-environment-2-0-3-5b2fc1737a0ed5a1732e0ec6b2f51f6d79254b97":"2020-07-20T12:20:40.279Z","0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-2-e33a03647f69594199a744b954f1479082a58eaa":"2020-07-20T15:56:37.840Z","0.0.17-dependabot-npm-and-yarn-eslint-plugin-jsdoc-30-0-3-9fb1c3d70320bc237833d43645f7d325829e4f0d":"2020-07-20T21:40:57.731Z","0.0.17-bump-dependencies-f0afdb38228ea804f96346f0d0ace10d43b34d26":"2020-07-21T00:46:13.930Z","0.0.17":"2020-07-21T00:49:49.763Z","0.0.18-switch-to-renovate-c358c50067cc834692de0d53608628c048783ea2":"2020-07-21T06:47:09.675Z","0.0.18":"2020-07-21T06:50:10.770Z","0.0.19-renovate-non-major-0d6fe07a8e27302b1c9064bbf81411ff95eb4d5d":"2020-07-21T06:54:51.085Z","0.0.19-renovate-non-major-f1887a84f785a0a6ed26bafb0a97b7f58d4d027f":"2020-07-21T06:59:05.027Z","0.0.19-renovate-non-major-ee7d404c2f8640069e1458ba24d78bc0cae00d8f":"2020-07-21T07:47:41.039Z","0.0.19-renovate-non-major-f7ac06d97ecb00c0b2a5ee02f270c70abfb561cd":"2020-07-22T01:49:58.729Z","0.0.19-renovate-non-major-ad09b8db32ce7923b6772f54deda52aee4ed74e8":"2020-07-22T08:43:04.920Z","0.0.19-update-ci-configs-d61928f3407efd701cc9a7669019c53b4a224fb1":"2020-07-22T08:45:08.704Z","0.0.19-renovate-non-major-247f4bce54bda13ecdc655195450a6bb7738c90c":"2020-07-22T08:47:52.437Z","0.0.19":"2020-07-22T08:48:46.492Z","0.0.20-renovate-non-major-f183da27feb66c534744bbb025458f7a5c4ead39":"2020-07-22T08:51:27.009Z","0.0.20-renovate-non-major-552ef514b96c2a10690391253bd0782ed14f53a6":"2020-07-22T08:57:39.579Z","0.0.20-renovate-non-major-d12315e1a81f5e1e1de80f9363b3c5634ee90862":"2020-07-23T11:59:26.158Z","0.0.20-renovate-non-major-c85f22b667e08772a2092d5c26f42fc9fa03d52e":"2020-07-24T07:01:34.152Z","0.0.20-renovate-non-major-ec703ac6ef5821b2d633ee30fb1161faf9891513":"2020-07-24T08:36:01.287Z","0.0.20-renovate-non-major-6701bded09f58d234dc1b084a6d3ea8bf0f53fc0":"2020-07-24T16:18:01.704Z","0.0.20-renovate-non-major-606ee3307e69119e3c1ae742ba58d3403d831d76":"2020-07-27T12:26:44.774Z","0.0.20-update-jf-sync-fc893b6fafff9dda9dd7c423295fbf2e5434df30":"2020-07-27T16:41:50.597Z","0.0.20-renovate-non-major-a78c8b89871d7e1a701836578db39bda71a4e863":"2020-07-27T17:03:36.091Z","0.0.20-update-jf-sync-1b0dae3d75e4809b4c2179f9d775fca4c64e3692":"2020-07-28T00:26:55.939Z","0.0.20":"2020-07-28T00:30:37.394Z","0.0.21-update-dependencies-637437e6c99cd306e90e4fae7ef375d89189fee4":"2020-07-28T02:52:54.956Z","0.0.21":"2020-07-28T02:55:51.027Z","0.0.22-Add-a-colon-to-renovate-patch-commit-prefix-36f894241d2e33da1819770ab56a982b1669d1ec":"2020-07-28T20:44:26.155Z","0.0.22":"2020-07-28T23:30:56.891Z","0.0.23-renovate-non-major-f0ddf8237bd27412860c55b7a7d97ef484f82d24":"2020-07-29T00:32:58.834Z","0.0.23-add-repository-details-a120eedeac37960d68f20830037b61a61ec7c8ce":"2020-07-29T02:15:06.624Z","0.0.23":"2020-07-29T02:21:39.877Z","0.0.23-renovate-non-major-07d71f91a64135b679450ff8ab6db7195f95a568":"2020-07-29T02:24:28.949Z","0.0.24-renovate-non-major-3c3a899623cb7abbd8346d23714e62793a707de7":"2020-07-29T02:26:46.496Z","0.0.24-github-orgs-8736a60f2ab1ce8a7ac837e68964713df7ab8525":"2020-07-29T09:41:55.160Z","0.0.24-github-orgs-aa78b3e72c93d09f50dbf54e2c64641f4dcd8255":"2020-07-29T09:53:43.478Z","0.0.24-github-orgs-9227d08c8af20c82ec014c5d26bfce141e8f205c":"2020-07-29T16:02:28.123Z","0.0.24-github-orgs-5474d6b3b95c3a3c675e7a8aac36b915bb9bef04":"2020-07-29T16:25:42.670Z","0.0.24-caret-dependencies-c252567168e1a51c5b76eb5521122d82d73dd9a3":"2020-07-30T00:48:56.810Z","0.0.24":"2020-07-30T00:54:19.262Z","0.0.24-renovate-non-major-fec42087f9ec651b67155a7f4ed3d4a633dbba5e":"2020-07-30T00:56:44.750Z","0.0.25-renovate-non-major-b5d88055afed73f68a4f854125b4325298e3b465":"2020-07-30T00:59:24.986Z","0.0.25-github-orgs-f0f7d02e7ce00b5e9807a23a4d4f2078561bf30e":"2020-07-30T00:59:40.822Z","0.0.25-renovate-non-major-16bfa573840e1e0b4eb01b7f9a8a462e06e58057":"2020-07-30T05:15:57.242Z","0.0.25-github-orgs-2aa4a9b8224deb3c7425aae1e3ec093a9c8cf91b":"2020-07-30T10:52:35.839Z","0.0.25-github-orgs-312256bde58a4388bdb28d0761319e734f69af98":"2020-07-30T10:57:31.123Z","0.0.25-fix-if-statement-9794e52b7523e7ef95015d0be1c602fe4336542b":"2020-07-31T14:07:46.307Z","0.0.25-renovate-non-major-c2d95427bcce520a1684eab219259fd9d6cca08b":"2020-08-02T19:43:34.002Z","0.0.25-fix-if-statement-1f7b5bad417a419079be23c96cc188992f29497c":"2020-08-02T23:16:41.585Z","0.0.25":"2020-08-02T23:32:16.611Z","0.0.26-renovate-non-major-e365199ceda807f15e482ae4b9d257430ead24e1":"2020-08-03T07:42:28.865Z","0.0.26-front-missing-arg-18d146a434d27980822c7642fca4836beaf5f35a":"2020-08-03T11:28:41.929Z","0.0.26":"2020-08-03T15:29:20.447Z","0.0.27-renovate-non-major-4d4c892392806df01bce0ea6ce3069cee5a242bf":"2020-08-04T06:30:53.695Z","0.0.27-renovate-non-major-3e2a04fcdee0f358b03dfc52cbcb49bac55bcc9d":"2020-08-05T01:22:36.489Z","0.0.27-renovate-non-major-ba367516554aec12af8d51c278c82c922000b6cf":"2020-08-05T04:50:02.218Z","0.0.27-increase-linting-5a5fbd97b7dce99c728b3506b8761038c22e3eab":"2020-08-05T04:51:03.353Z","0.0.27-renovate-non-major-8f64f90a1c798d15eb009104e81cf983063359e4":"2020-08-05T04:54:03.914Z","0.0.27":"2020-08-05T04:56:24.615Z","0.0.28-renovate-non-major-c775c3b195e982e9e30dd5251f78e6a85e0129f6":"2020-08-05T04:59:04.359Z","0.0.28-github-orgs-3345307ee6520e31cd47a5856d3df6596392895d":"2020-08-05T05:02:08.579Z","0.0.28-renovate-non-major-b6930981da962fe787a27b4b5f8984de9b101d0c":"2020-08-05T05:05:40.132Z","0.0.28-renovate-non-major-8dda18ef6bb179e6dd8f369af944aaf0e159356e":"2020-08-05T22:22:37.193Z","0.0.28-renovate-non-major-b8a83f40fef74eb59c9b8f07cc448072ba8fc3d7":"2020-08-06T06:05:54.392Z","0.0.28-renovate-non-major-631eec3b9eec4f36fa3442ccd3c55ab2aca405ca":"2020-08-07T17:14:03.646Z","0.0.28-renovate-non-major-381a2384642ad58d4920a965c8db6f5f2c4b0721":"2020-08-09T16:35:04.125Z","0.0.28-renovate-non-major-69dc21f8628571995f7efcca5030a976af940bf1":"2020-08-11T18:20:11.230Z","0.0.28":"2020-08-12T00:31:26.274Z","0.0.29-renovate-non-major-2e4d9a5c1d4e19b597d3cfb4f71814e4c1fb558a":"2020-08-12T09:00:18.180Z","0.0.29":"2020-08-12T09:28:30.948Z","0.0.30-renovate-non-major-07e66e059ea624333dcad5bd4bdf5f5493b886c9":"2020-08-12T10:38:07.879Z","0.0.30":"2020-08-12T13:08:35.876Z","0.0.31-renovate-non-major-163b12f365a4645727fc2d984549d4e9787a0a6e":"2020-08-12T14:17:57.955Z","0.0.31":"2020-08-13T00:09:19.343Z","0.0.32-renovate-non-major-fcb2b053dee4c21f1face1ea679f772ebc6e89a5":"2020-08-13T02:01:15.127Z","0.0.32":"2020-08-13T04:25:40.027Z","0.0.33-renovate-non-major-99be1688164417b005215e37355d0a604e6bd5b2":"2020-08-13T04:29:48.440Z","0.0.33":"2020-08-13T06:01:02.915Z","0.0.34-renovate-non-major-a5f4f115f7f30df86d73508d1020e45971a7fdce":"2020-08-13T07:56:23.432Z","0.0.34-renovate-non-major-c4905e7024cdb9d14c228c644d755ffc7fd170d2":"2020-08-13T08:45:41.628Z","0.0.34":"2020-08-13T16:21:41.682Z","0.0.35-renovate-non-major-6bd3033fb7c61b653496e619425c0a9b61fc490e":"2020-08-13T16:37:36.671Z","0.0.35-renovate-non-major-beeeca3f24eef7eff642ed0c3e5b0ba0ebfe903a":"2020-08-13T23:43:25.739Z","0.0.35-renovate-non-major-2844a59db6cb59a1541c21f6d235accd16dbc1f0":"2020-08-14T00:08:46.523Z","0.0.35-renovate-non-major-7cf25f0b2fa125ec3d536ab9214b8dc70f9f674e":"2020-08-14T00:12:23.202Z","0.0.35":"2020-08-14T00:15:29.225Z","0.0.36-renovate-non-major-c11d709ead17c325a0b886286de8bae2cb1477ca":"2020-08-14T05:28:13.825Z","0.0.36-renovate-non-major-fc2e6a0637ea2b241b77b71833956e198cb74f02":"2020-08-14T07:20:10.913Z","0.0.36-renovate-non-major-45bb1cb3da30cb5870d66ae6dd431e42970a4ae6":"2020-08-14T21:40:04.531Z","0.0.36":"2020-08-15T00:10:20.032Z","0.0.37-renovate-non-major-0bc777bdc7f4742d83d3cfced48483dee7ad8f84":"2020-08-15T02:36:12.304Z","0.0.37":"2020-08-15T03:46:12.472Z","0.0.38-renovate-non-major-00050a5616f68756059f64323f5fb5f2a1c9fdff":"2020-08-15T04:29:34.872Z","0.0.38":"2020-08-15T07:54:01.022Z","0.0.39-renovate-non-major-4b1b1dd0ffce23cfd126b1643f70b33092b13a0c":"2020-08-15T08:56:11.273Z","0.0.39":"2020-08-15T08:58:58.446Z","0.0.40-renovate-non-major-0db755c8d71758b82eb51dc207f44172e021beeb":"2020-08-16T02:36:36.225Z","0.0.40":"2020-08-16T03:37:26.585Z","0.0.41-renovate-non-major-f02a0a2d053bdf38e0da629a618f7be7d574d5d9":"2020-08-16T03:42:12.626Z","0.0.41-renovate-non-major-913a36d83c2dc2533dd25429c85cc9fecd27fc6a":"2020-08-16T03:46:15.608Z","0.0.41":"2020-08-16T09:34:11.162Z","0.0.42-renovate-non-major-b8f2d54d223423b4fd47a06bbc455e1a64303ae1":"2020-08-16T10:46:10.376Z","0.0.42":"2020-08-16T10:48:59.481Z","0.0.43-renovate-non-major-bcfbbb0f0eed8320fca9995df35f25e7030351c1":"2020-08-17T17:03:05.477Z","0.0.43":"2020-08-17T17:06:23.490Z","0.0.44-renovate-non-major-2046d4e48e01587c7c8916099015b79309b59375":"2020-08-17T23:45:11.049Z","0.0.44":"2020-08-17T23:48:19.724Z","0.0.45-remove-dev-major-563d39b6ae9225f84e399c9732f3178b07b36bb3":"2020-08-18T01:30:47.291Z","0.0.45":"2020-08-18T01:33:59.952Z","0.0.46-renovate-non-major-96bb2fa62ad041af4d058f66e3427fbe5bb84cc6":"2020-08-18T02:34:41.961Z","0.0.46-renovate-non-major-fe375dbf6e6cf5b536459b5fe6b97cb0fd5dace3":"2020-08-18T02:38:48.477Z","0.0.46":"2020-08-18T02:42:22.848Z","0.0.47-renovate-non-major-ed5d696a86414b7b91ba2123c0a6c17ff4fd02db":"2020-08-18T03:17:33.506Z","0.0.47":"2020-08-18T03:20:32.428Z","0.0.48-renovate-non-major-19e58c6f385e6f913dc7febafd67d6b682ff3907":"2020-08-18T04:33:21.509Z","0.0.48":"2020-08-18T04:36:02.769Z","0.0.49-renovate-non-major-cab0be8f0883bf2be325cf09d6679f380c0d9495":"2020-08-21T21:17:55.275Z","0.0.49":"2020-08-21T21:20:43.120Z","0.0.50-renovate-non-major-9f4b39897a34f0861b3b8786044c625c6af4f82d":"2020-08-21T23:25:58.353Z","0.0.50":"2020-08-21T23:29:00.153Z","0.0.51-renovate-non-major-dda248cff611fdca39b1b38e62489c7a3f3bd1b8":"2020-08-23T19:53:08.111Z","0.0.51":"2020-08-23T20:02:47.491Z","0.0.52-renovate-non-major-ee7b1d752087f8304bb451cf4fe0f5ceb54a91aa":"2020-08-23T22:46:22.076Z","0.0.52":"2020-08-23T22:49:18.279Z","0.0.53-renovate-non-major-8eb538e7c3fbfbf23e7d70de2e5a7fd40b653029":"2020-08-24T01:59:27.358Z","0.0.53":"2020-08-24T02:02:38.230Z","0.0.54-renovate-non-major-ee841742f5534708f55da2b5a8a7f328c23c0427":"2020-08-24T10:12:04.038Z","0.0.54":"2020-08-24T10:15:47.553Z","0.0.55-renovate-non-major-4ae3c0abdf950d0653fb7e70299723cb48cbca20":"2020-08-24T10:22:09.105Z","0.0.55":"2020-08-24T10:24:37.409Z","0.0.56-renovate-non-major-29ce17c3ef7bac6c98d1cb313e525116a1f1fbe0":"2020-08-24T13:56:54.242Z","0.0.56":"2020-08-24T13:59:42.834Z","0.0.56-sync-balena-api-plans-7a12737e5526ea846d258aa9c1406ec52ccbaa6d":"2020-08-25T09:38:29.289Z","0.0.57-renovate-non-major-4ac200cb6f403a5182f9c6474cf7537426a05dae":"2020-08-25T11:45:40.605Z","0.0.57":"2020-08-25T11:48:40.224Z","0.0.56-sync-balena-api-plans-89c03c561fc00769807f770f6b2dbdd8201431e9":"2020-08-25T17:52:00.707Z","0.0.58-renovate-non-major-355221ecc4b5c2d91f66087381cee84293ad152a":"2020-08-26T00:49:15.204Z","0.0.58-renovate-non-major-2bfd406886f275dff22e1c60c196bc453bffeb9d":"2020-08-26T02:18:38.255Z","0.0.58-renovate-balena-jellyfish-assert-1-x-48460dd80e77ddc79af024f1b2881c275538b114":"2020-08-26T02:19:41.406Z","0.0.58-renovate-balena-jellyfish-uuid-1-x-9b17f040d151d96d6ac2c9be522a693f16c1978e":"2020-08-26T02:20:21.246Z","0.0.58-renovate-non-major-b102693f1f465cb80c30e0ac694331761c90c2e3":"2020-08-26T03:44:18.060Z","0.0.58-renovate-non-major-bf7bb86f963640574136365b2d88098483098f49":"2020-08-26T17:17:57.219Z","0.0.58":"2020-08-26T23:10:43.066Z","0.0.58-renovate-non-major-0fa550f7ce00b72d1d0b45f310d83a8b88575b74":"2020-08-26T23:12:08.807Z","0.0.58-renovate-balena-jellyfish-assert-1-x-6d8e15c3bda4afe1e450511b2cdf2c3c15ca9555":"2020-08-26T23:13:29.607Z","0.0.59-github-orgs-e3196929de11acce157c1b57ede02f3c2b674d76":"2020-08-26T23:17:25.474Z","0.0.59-renovate-balena-jellyfish-assert-1-x-2e94c9dd1c153e54f3809cd581d8e808794bc67e":"2020-08-26T23:17:43.520Z","0.0.59-renovate-non-major-4dc1506ecf527ce59e108fdea2ce2dc6cfe6eccd":"2020-08-27T00:12:39.408Z","0.0.59":"2020-08-27T00:14:39.413Z","0.0.60-github-orgs-d6c79c30310f7bd791a32a042a9c8ea78588b453":"2020-08-27T00:19:45.616Z","0.0.60-renovate-non-major-cb0707bff0a08c8ebeaced15761ea35390ef14fa":"2020-08-27T00:45:34.921Z","0.0.60":"2020-08-27T00:48:34.843Z","0.0.61-renovate-non-major-86c91eda9827288b575936c40f4ae5b39aa1701c":"2020-08-27T04:25:35.680Z","0.0.61":"2020-08-27T04:46:05.096Z","0.1.0-sync-balena-api-plans-e42bb14fc15b2d85d16b31767e60eb6e668100b8":"2020-08-27T09:57:10.520Z","0.0.62-renovate-non-major-208d389f8cfb62a093ee22be10b225bcf51deb89":"2020-08-27T12:54:32.032Z","0.0.62":"2020-08-27T12:58:34.141Z","0.0.63-renovate-non-major-2fce628998a058eb863ef1a540e51642445358b6":"2020-08-27T13:16:57.201Z","0.0.63":"2020-08-27T13:20:34.244Z","0.0.64-renovate-non-major-e6bca93614f94387f4a94c47cf13e6a169800ae2":"2020-08-28T13:55:19.930Z","0.0.64":"2020-08-28T13:59:25.375Z","0.0.65-renovate-non-major-4af5810a1fc7a5d667fc954ab448918632946fc8":"2020-08-28T17:39:04.827Z","0.0.65":"2020-08-28T17:42:04.242Z","0.0.66-renovate-non-major-0fd152268986d91b64c80d3de40a34a0c3d3ffb6":"2020-08-28T18:18:38.083Z","0.0.66":"2020-08-28T18:21:53.494Z","0.0.67-renovate-non-major-7d52415aa197cd4bea08ec085cb7403413458bad":"2020-08-29T02:35:44.826Z","0.0.67":"2020-08-29T02:39:06.905Z","0.0.68-renovate-non-major-b6c8a6e7617d9373ad2e8c1f54d5458afe3603cb":"2020-08-29T03:38:54.614Z","0.0.68":"2020-08-29T03:42:02.286Z","0.0.69-renovate-non-major-3873bfd15c647995fb5263e4a335be76d6dcc084":"2020-08-31T01:51:30.837Z","0.0.69":"2020-08-31T01:55:41.552Z","0.0.70-renovate-non-major-90ac2349d7e4b8ae1bd844725d1b76f67eb51a66":"2020-08-31T03:28:25.958Z","0.0.70":"2020-08-31T03:31:35.733Z","0.0.71-renovate-non-major-721509c3cb387fde9526a8478f55e02df4fc0e47":"2020-08-31T05:55:13.904Z","0.0.71":"2020-08-31T05:58:50.683Z","0.0.72-set-commit-body-b176871e498330d4d26181f4af18e7fd5fa65a1b":"2020-08-31T06:08:08.537Z","0.0.72":"2020-08-31T06:11:24.023Z","0.0.73-renovate-non-major-3337f4116eb1a654748bdc5d0ef5f44f9a4bbd5e":"2020-08-31T06:22:12.600Z","0.0.73-add-revenue-front-inbox-cc5d02752deab3cc070b15222fae57d846e7a04f":"2020-08-31T08:48:49.090Z","0.0.73-renovate-non-major-5eb4d368afdd6b052a099bd76f5fc8b99945ec73":"2020-08-31T22:55:04.378Z","0.0.73":"2020-08-31T22:58:14.683Z","0.0.74-renovate-non-major-35cf4110d2f653fe17fd4bb0dc07c9a879749b85":"2020-09-01T01:43:31.325Z","0.0.74":"2020-09-01T01:47:22.385Z","0.0.75-add-lint-staged-03edfe9b88b0cff3fbe6a6777b3fe0c15a7e60aa":"2020-09-01T01:57:09.661Z","0.0.75":"2020-09-01T02:00:25.567Z","0.0.75-renovate-non-major-8e4dc6ec87a4471c1ba9b9202bb3d7c210aa8ec3":"2020-09-01T02:03:11.640Z","0.0.76-update-license-check-f1c1194790dabba6a20a66937c13f3e243cad096":"2020-09-01T02:52:22.491Z","0.0.76":"2020-09-01T02:55:52.411Z","0.0.77-renovate-non-major-b9743b312c70e317909e51481f45241e3b485ae1":"2020-09-01T03:00:41.225Z","0.0.77":"2020-09-01T03:03:42.099Z","0.0.78-renovate-non-major-08d749e1e1342e49e0ac28659cf63a2e13f6ff48":"2020-09-01T04:38:35.370Z","0.0.78":"2020-09-01T04:41:41.304Z","0.0.79-add-jellycheck-1a8168bc677974760953b2ba87f8ba92575ddcc0":"2020-09-01T07:07:02.994Z","0.0.79":"2020-09-01T07:11:28.934Z","0.0.80-renovate-non-major-c0f79c8b8e1324a3450787b8e059292ea84e9682":"2020-09-01T07:16:09.452Z","0.0.80-renovate-non-major-cc9668c5e5d5035c80bf14f72367b71fa7f4d433":"2020-09-01T07:20:45.600Z","0.0.80":"2020-09-01T07:24:28.493Z","0.0.81-renovate-non-major-9e6046c33d6ba90e9dd9e079ae299666edfb993c":"2020-09-01T07:30:10.234Z","0.0.81":"2020-09-01T07:33:15.303Z","0.0.82-add-revenue-front-inbox-8cfa0f817bf3802e19974f31845ec61aeadcdddf":"2020-09-01T08:20:43.400Z","0.0.82":"2020-09-01T08:23:53.762Z","0.0.83-renovate-non-major-bcc51c12288032c7e3f4dc61bc2a8d728d89914b":"2020-09-01T12:34:24.110Z","0.0.83-renovate-non-major-69696c25491d0c18da8ad949206176e7cf9c84d8":"2020-09-01T13:29:22.136Z","0.0.83":"2020-09-01T13:32:04.277Z","0.1.0-sync-balena-api-plans-4dd0b3e07ac0371646a10528c148886ac0db5556":"2020-09-01T13:40:53.848Z","0.0.84-renovate-non-major-7e08955918899b043d0c6ff3eb7cfc27e795482e":"2020-09-01T14:42:38.291Z","0.0.84":"2020-09-01T14:45:47.250Z","0.1.0-sync-balena-api-plans-b7eeec6fad911d6fa672b8315d85a876a16a8e8f":"2020-09-01T15:05:36.424Z","0.0.85-renovate-non-major-e0905f6680c64e567adda6b197915c4f3882e768":"2020-09-01T20:58:28.921Z","0.0.85":"2020-09-01T21:01:47.825Z","0.0.86-renovate-non-major-b4255fc9724c505e9e17cbbcbf301f24d706299e":"2020-09-01T22:27:42.033Z","0.0.86":"2020-09-01T22:30:46.945Z","0.0.87-renovate-non-major-f53bd91235820bf352bff4ae6b7e1c346e6e4c8c":"2020-09-01T23:26:59.947Z","0.0.87":"2020-09-01T23:29:52.093Z","0.0.88-renovate-non-major-324073ebb3df0572e3ce3d54b5b7837c0cefdd11":"2020-09-02T00:13:38.034Z","0.0.88":"2020-09-02T00:16:15.540Z","0.0.89-renovate-non-major-ec2da79c28c7229a1dde94eb025f97dfd767028c":"2020-09-02T05:24:39.098Z","0.0.89":"2020-09-02T08:44:29.810Z","0.0.90-renovate-non-major-f3e27bd6256c0643515e0112da1231e255805deb":"2020-09-02T09:37:28.220Z","0.1.0-sync-balena-api-plans-13473ff705b17ca6d50f28915a78f9b0e8e51b21":"2020-09-02T14:13:10.076Z","0.0.90":"2020-09-03T00:18:08.428Z","0.0.91-renovate-non-major-7619b8abb42eca4a53e466a68b705df66307f361":"2020-09-03T01:40:02.541Z","0.0.91":"2020-09-03T01:46:21.496Z","0.0.92-renovate-non-major-717106d73ba39cdba99d766db6db7123a64558ef":"2020-09-03T02:17:19.990Z","0.0.92":"2020-09-03T02:20:00.342Z","0.0.93-renovate-non-major-575d5c485802b27103c66d01f66ba92ee8cf7334":"2020-09-03T08:41:15.815Z","0.0.93":"2020-09-03T09:05:41.435Z","0.0.94-renovate-non-major-0bd096baa3aa230fe1c59b08f08b9c51f8f9a734":"2020-09-03T09:10:36.108Z","0.0.94-renovate-non-major-83d3a548e88adc7d574ef6902161f2c02c160a82":"2020-09-03T09:15:41.986Z","0.0.94":"2020-09-03T09:24:11.444Z","0.1.0-sync-balena-api-plans-882084f2ff1adde134a390954713392a49abad65":"2020-09-03T11:53:03.592Z","0.1.0-renovate-non-major-7ca0ebfb98c6a85895c50f4010f8dc7e0ce1661b":"2020-09-04T14:22:21.671Z","0.1.0":"2020-09-04T14:25:23.532Z","0.1.1-renovate-non-major-07fd11fe72a4d3ab2fdd2e9348f21c8def9e6a87":"2020-09-04T18:12:12.255Z","0.1.1":"2020-09-04T18:15:16.191Z","0.1.2-renovate-non-major-b076e1462261f364823ca749780d48f5e9114304":"2020-09-05T03:42:09.864Z","0.1.2":"2020-09-05T03:45:30.463Z","0.1.3-renovate-non-major-ec1694fc491a2ba5109dd72432c88184420e8748":"2020-09-06T02:38:24.813Z","0.1.3-renovate-non-major-54d59a23a4dfe72c135a48ac5158918e27d6dc90":"2020-09-06T03:14:00.089Z","0.1.3-fix-lint-error-1d6e3319849f8d7200f9011dd5678fed241a22db":"2020-09-06T04:37:51.847Z","0.1.3":"2020-09-06T04:43:42.072Z","0.1.4-renovate-non-major-49263f4b5488a79ec94d86262b1c7ba39e6dee76":"2020-09-06T04:48:29.534Z","0.1.4":"2020-09-06T04:50:55.063Z","0.1.5-add-default-files-a5927a786b087dd0add0eff8eaf41c53f0457e51":"2020-09-06T07:20:32.782Z","0.1.5":"2020-09-06T07:24:57.027Z","0.1.6-renovate-non-major-ac9f30f1dca888b31bfd0e504ee4eefe23488282":"2020-09-06T07:29:49.356Z","0.1.6-renovate-non-major-0dcb4c820db77c7af0b7c49de886328862123ece":"2020-09-06T07:33:42.527Z","0.1.6":"2020-09-06T07:38:49.517Z","0.1.7-renovate-non-major-92112bc93173322c6b2c821958caf80b5f4f6e4b":"2020-09-06T07:43:56.321Z","0.1.7":"2020-09-06T07:48:06.737Z","0.1.8-renovate-non-major-1c0efcb3863a2e7d47e26f0dcfd2a042d1d7c6a2":"2020-09-06T08:39:40.820Z","0.1.8":"2020-09-06T08:42:41.908Z","0.1.9-remove-node10-tests-4cd06e372ef40a1a97cfb50d4445f2552258a4be":"2020-09-06T10:07:45.547Z","0.1.9":"2020-09-06T10:11:34.134Z","0.1.10-renovate-non-major-7f4726b171e76d6f61a91695a365b779d9439f3a":"2020-09-06T11:18:34.960Z","0.1.10":"2020-09-06T11:21:40.168Z","0.1.11-renovate-non-major-0c7e07141b0ce44aefa60740f5d1c3d83fa78773":"2020-09-06T12:17:56.321Z","0.1.11":"2020-09-06T12:21:06.603Z","0.1.12-renovate-non-major-fbde83848d52ce047351702a98673b3e48263b2b":"2020-09-07T12:36:30.674Z","0.1.12":"2020-09-07T12:39:14.753Z","0.1.13-renovate-non-major-87f7d4ec9a1a47c6ebb125503d1625a34453466c":"2020-09-07T12:42:05.939Z","0.1.13":"2020-09-07T12:47:25.780Z","0.1.14-typeform-integration-change-49fdbfa6b1efe7d2f7f3a683972b57c4620f934b":"2020-09-08T15:54:07.854Z","0.1.14-renovate-non-major-ada4964a28c0376258dfebbe82c0610feacb9709":"2020-09-09T00:42:11.539Z","0.1.14":"2020-09-09T00:45:05.686Z","0.1.15-renovate-non-major-6d10c6b868bdf3e3fa7cad6512e6fce455bd4293":"2020-09-09T02:15:03.254Z","0.1.15":"2020-09-09T02:17:56.875Z","1.0.0-typeform-integration-change-50dbd057d4882193d43ce0d994c23aef9cc7c948":"2020-09-09T14:31:44.223Z","1.0.0-typeform-integration-change-21b1465a9fd7c296030693d6e15ca1cb22ae5254":"2020-09-09T14:33:10.284Z","1.0.0":"2020-09-10T02:52:00.744Z","1.0.1-renovate-non-major-428677e3a3f7b720ebbff4f3b0720189060dd3a5":"2020-09-10T02:56:54.301Z","1.0.1-renovate-non-major-bf8570117fb082261540a5312754f504b272689b":"2020-09-10T23:23:33.930Z","1.0.1":"2020-09-10T23:26:17.826Z","1.0.2-npm-engine-strict-3f85a83596a889488257491b0ddc3f9813b658dc":"2020-09-10T23:41:28.482Z","1.0.2":"2020-09-11T00:29:29.866Z","1.0.3-dependabot-npm-and-yarn-node-fetch-2-6-1-e7f82372b40067bce77c84240dd3b4b5b046350b":"2020-09-11T00:55:23.823Z","1.0.3":"2020-09-11T01:02:36.918Z","1.0.4-renovate-non-major-6106bdfee3272344cc50d7825cb33438ccb93fbc":"2020-09-11T18:36:54.064Z","1.0.4":"2020-09-11T18:44:14.388Z","1.0.5-renovate-non-major-3d43f4ec547208d3205558bbfea3c09a3d011b2c":"2020-09-11T19:47:22.766Z","1.0.5":"2020-09-11T19:50:50.760Z","1.0.6-renovate-non-major-3c775f2aab9786eb20c9a72f80b9a0dc600ba077":"2020-09-12T11:26:02.908Z","1.0.6":"2020-09-12T11:33:25.100Z","1.0.7-renovate-non-major-ff43e0f86ed1ed238d8b08a1bbce88c059b49941":"2020-09-12T12:43:08.672Z","1.0.7":"2020-09-12T12:45:45.798Z","1.0.8-renovate-non-major-677b50fdd3a9d17bbe09a63616ac4870b32549c0":"2020-09-12T20:35:09.779Z","1.0.8-renovate-non-major-1c89000ce3d621b0cbe0161cba03c4183b80be41":"2020-09-12T20:39:21.134Z","1.0.8":"2020-09-12T20:42:15.160Z","1.0.9-renovate-non-major-a2afed5cb8b409c97ecf8a2ce4a0c15b8dd792e5":"2020-09-14T06:33:19.434Z","1.0.9":"2020-09-14T06:37:05.438Z","1.0.10-github-orgs-2fbebdb19d12c6dc7de581dd7289c5003ed90d08":"2020-09-14T06:42:18.081Z","1.0.10-sync-mentions-2cbe13e0625d0c46b1a678cc771165782f13f66d":"2020-09-14T06:52:57.820Z","1.0.10-renovate-non-major-1a0ef29b3c0fa025e333572715be15e8b33b81fe":"2020-09-14T08:12:01.805Z","1.0.10":"2020-09-14T08:19:01.031Z","1.0.11-renovate-non-major-b7015044993f59432061f30bfeb0195d07a3d49b":"2020-09-14T08:28:57.989Z","1.0.11":"2020-09-14T08:32:25.514Z","1.0.12-github-orgs-dd5419cf462889a630236c0b2e787c37d4bd1d23":"2020-09-14T08:37:25.498Z","1.0.12-renovate-non-major-e6f07afe72bca1e0945f3f91af63b67e1a2549cb":"2020-09-14T09:37:41.568Z","1.0.12":"2020-09-14T09:40:41.628Z","1.0.13-github-orgs-9047046e499f7c3060f895831d3873db62bda427":"2020-09-14T09:45:32.412Z","1.0.13-renovate-non-major-b0585c1b5ba72232712527a4c068d91f473378ee":"2020-09-14T18:30:44.123Z","1.0.13":"2020-09-14T18:33:47.488Z","1.0.13-fix-user-feedback-origin-5ea79f983bf31ab613acfbf4535459fa6564419e":"2020-09-14T20:43:33.515Z","1.0.14-fix-user-feedback-origin-41f4972cdbac59ed32ed38a4c3bbc42975e57efa":"2020-09-14T21:04:58.859Z","1.0.14":"2020-09-14T21:22:38.958Z","1.0.15-renovate-non-major-d34691ef9e98224efe65a2946b58d0acd6f52b09":"2020-09-15T03:56:06.944Z","1.0.15":"2020-09-15T03:59:08.116Z","1.0.16-renovate-non-major-0f9e0059948d05134c7233638392d680da9c8b8a":"2020-09-15T05:02:08.113Z","1.0.16":"2020-09-15T05:04:46.635Z","1.0.17-sync-mentions-74ed4546944f9d20f0a1b7a7e002aa3b684aec72":"2020-09-15T07:27:06.350Z","1.0.17-renovate-non-major-4affba0e131718d78defd56d1759f46183bcc496":"2020-09-15T21:27:19.976Z","1.0.17":"2020-09-15T21:30:16.151Z","1.0.18-renovate-non-major-242c6521d74d9ed5cca8509714c68bff5a2616ee":"2020-09-16T13:50:47.911Z","1.0.18-renovate-non-major-eca08a34c74a3741dfdb61de6e30d09b41501ac3":"2020-09-16T13:55:35.582Z","1.0.18":"2020-09-16T13:58:39.900Z","1.0.19-renovate-non-major-a171437e34c7ccd9d5da5a8a26423e6c15a03c84":"2020-09-16T14:56:32.595Z","1.0.19":"2020-09-16T14:59:24.629Z","1.0.20-renovate-non-major-3e25225b1f88ce6bb68a40bea93e432fd76be3a7":"2020-09-16T17:10:26.408Z","1.0.20":"2020-09-16T17:13:17.319Z","1.0.21-renovate-non-major-c54693cb1cda2a29bd86bfa71a11e93519e75308":"2020-09-16T18:29:35.209Z","1.0.21-renovate-non-major-01f51d7bc8ca7f3e6fbba12b588e2c64bc86ab66":"2020-09-16T18:33:31.484Z","1.0.21":"2020-09-16T18:36:31.623Z","2.0.0-sync-mentions-e9a18ad2459a04742bf8c921e66e67acd3fd70f8":"2020-09-17T06:59:15.499Z","2.0.0":"2020-09-17T07:06:23.259Z","2.0.1-renovate-non-major-03259bcc1956773d2de56aa9307744b5b5ad3576":"2020-09-18T09:39:28.940Z","2.0.1":"2020-09-18T09:42:23.691Z","2.0.2-renovate-non-major-9924b74b0ca4bc9ccda8dc83a43c9bef10b1ee0a":"2020-09-18T11:29:34.921Z","2.0.2-renovate-non-major-37f7d8a91aa48a81fb42e24802c7bcac3fdb97f7":"2020-09-18T15:41:02.911Z","2.0.2":"2020-09-18T15:44:18.589Z","2.0.3-renovate-non-major-d5e1b166cbf99cdbba9230183d8b21942a07b940":"2020-09-18T21:15:17.750Z","2.0.3":"2020-09-18T21:18:27.122Z","2.0.4-renovate-non-major-510fefa71acd7a702f9db51d6738f693edc269ed":"2020-09-18T23:00:53.874Z","2.0.4":"2020-09-18T23:03:40.821Z","2.0.5-renovate-non-major-fff77e84c6bc718b3b2679f646a836f076b032c7":"2020-09-20T11:54:20.751Z","2.0.5":"2020-09-20T11:57:08.103Z","2.0.6-renovate-non-major-0aa68274e540bbba011b70981cff3660cf488a78":"2020-09-20T12:32:53.331Z","2.0.6":"2020-09-20T12:35:26.407Z","2.0.7-renovate-node-jose-2-x-31da0229742171a3d6199291f29ff80b31fff2df":"2020-09-20T16:35:24.273Z","3.0.0-user-feedback-name-3b5364443ef708f2943aceca6d6283d541d0f485":"2020-09-23T02:26:37.554Z","3.0.0-user-feedback-name-00f56102981cf23256d364c163120b8876c40a3b":"2020-09-23T02:32:33.549Z","2.0.7":"2020-09-24T03:07:30.784Z","3.0.0-user-feedback-name-552510af78e82fd96cbf269d810320e6aad7082f":"2020-09-25T08:15:09.769Z","2.0.8-renovate-non-major-ff92fbcccc8b1c5257f1759b8e204d5da895c658":"2020-09-25T11:55:57.162Z","2.0.8":"2020-09-25T12:01:57.549Z","2.0.8-renovate-non-major-a92cf5510a25b23efca665b0234bffc1b2ce4dd6":"2020-09-25T12:03:32.287Z","2.0.9-renovate-non-major-af4f90e8b10644c8fddd0a4a5871528ffa43fc65":"2020-09-25T12:07:39.762Z","2.0.9-renovate-non-major-f4e3a1b8d90b4a2b7d48cc35da49884854c21a81":"2020-09-25T12:12:27.345Z","2.0.9":"2020-09-25T12:15:20.135Z","2.0.10-renovate-non-major-98e8f910cc09c933cc435384d73f1aa5f8b30eab":"2020-09-25T13:34:22.717Z","2.0.10":"2020-09-25T13:37:15.878Z","3.0.0-user-feedback-name-8425f510586e6a92fa86f88d0e0844be99887f12":"2020-09-25T14:19:09.193Z","3.0.0":"2020-09-25T14:32:34.075Z","3.0.1-renovate-non-major-c120dd081091daa31ac9502b0184e45335c3e092":"2020-09-26T22:15:11.896Z","3.0.1":"2020-09-26T22:18:00.413Z","3.0.2-renovate-non-major-d78f94dcebfdbb8754aa4db642d56b8cbc70ffa7":"2020-09-27T03:10:54.323Z","3.0.2":"2020-09-27T03:15:46.149Z","3.0.3-renovate-non-major-d67883368bde70d4b46fd1bd0f3cfcb202f6d8bd":"2020-09-27T04:50:02.585Z","3.0.3":"2020-09-27T04:52:59.053Z","3.0.4-renovate-non-major-972009660d6d5c53a6ad6cc10cb93a9bc80561b2":"2020-09-27T05:57:01.753Z","3.0.4":"2020-09-27T05:59:42.351Z","3.0.5-renovate-non-major-53d890d69ee2a3be9c93cb922377c015410089bd":"2020-09-27T11:49:03.074Z","3.0.5":"2020-09-27T11:57:01.621Z","3.0.6-renovate-non-major-e74c0fe1208eea0b4fc675ba80548329f0ab313a":"2020-09-27T12:02:35.926Z","3.0.6":"2020-09-27T12:05:19.277Z","3.0.7-renovate-non-major-b61c7d6a8759fc5db205733d803d99e2208232c2":"2020-09-27T15:01:28.377Z","3.0.7":"2020-09-27T15:04:29.206Z","3.0.8-renovate-non-major-79c715a94344a7994051659b47c4b90409ee89c7":"2020-09-27T15:46:53.801Z","3.0.8":"2020-09-27T15:56:47.771Z","3.0.9-renovate-non-major-d793cf8f879eb41b132b8aa6f6178f59ab11b984":"2020-09-27T16:02:10.479Z","3.0.9":"2020-09-27T16:04:51.432Z","3.0.10-renovate-non-major-b67c1bb5cd401214da94513ec5cb2f9a11dbffc8":"2020-09-27T17:22:23.904Z","3.0.10":"2020-09-27T17:25:38.046Z","3.0.11-renovate-non-major-5890210d6df25db12c20f63fd937dd1da849be5e":"2020-09-28T01:22:11.686Z","3.0.11":"2020-09-28T01:25:01.869Z","3.0.12-renovate-non-major-801db0c41a5d94cce150243ba7a34ca4f430c88b":"2020-09-28T03:25:29.134Z","3.0.12":"2020-09-28T03:28:31.787Z","3.0.13-renovate-non-major-bf52e8ef79e237cf39d3b3b25a6163abc3fe4795":"2020-09-28T04:29:11.242Z","3.0.13":"2020-09-28T04:32:14.125Z","3.0.14-renovate-non-major-37d81368c3eec86b03a010347d55ac46b837c1b8":"2020-09-28T06:55:04.080Z","3.0.14":"2020-09-28T06:57:53.655Z","3.0.15-renovate-non-major-0a21869593bb140ddc0521df260fc8be0cee23f1":"2020-09-28T13:10:02.888Z","3.0.15":"2020-09-28T13:14:44.096Z","3.0.16-renovate-non-major-225313a319e87e6646ac546133b6e613a8fa08f8":"2020-09-28T15:03:10.909Z","3.0.16":"2020-09-28T15:05:50.651Z","3.0.17-renovate-non-major-52e28aad832cd7c0de539f9db7ce09639be9edb3":"2020-09-29T15:57:28.335Z","3.0.17":"2020-09-29T16:00:32.131Z","3.0.18-renovate-non-major-4e3ccdb8f2a9af4ae358f5d26e2b2909ecba4f18":"2020-09-29T18:14:45.309Z","3.0.18":"2020-09-29T18:17:58.100Z","3.0.19-renovate-non-major-9328309ff94bf2aa1b66054f2b646abba703f60d":"2020-09-30T15:32:43.369Z","3.0.19":"2020-09-30T15:36:40.463Z","3.0.20-renovate-non-major-c6cc7d40fc6491aaf361e59447f402c96e663b58":"2020-10-02T17:15:37.159Z","3.0.20":"2020-10-02T17:26:18.915Z","3.0.21-renovate-non-major-9d1402ef67229fb8d3681947bed2b24155a84a0c":"2020-10-02T17:32:11.210Z","3.0.21-renovate-non-major-1c3d36fe9a577c38fab8c44acaeeb7d1727bdc03":"2020-10-02T17:37:44.452Z","3.0.21-renovate-non-major-0089a5325f3377dfa0100b86239827d3522c2c45":"2020-10-02T19:27:21.378Z","3.0.21":"2020-10-02T19:30:28.196Z","3.0.22-renovate-non-major-1651ed39da206843c27527c0fee23e1045e553ad":"2020-10-04T12:14:07.264Z","3.0.22":"2020-10-04T12:16:48.368Z","3.0.23-renovate-non-major-4680a4501c8b6217e55c7686cc00ec8dee344a92":"2020-10-05T15:23:28.989Z","3.0.23":"2020-10-05T15:26:31.495Z","3.0.24-renovate-non-major-f42a5674bbeae85a00154ff18aa9461a3c0e9ec4":"2020-10-09T02:42:15.383Z","3.0.24":"2020-10-09T02:45:34.435Z","3.0.25-renovate-non-major-7ae222dbe2e8a93342e890e123b0b29f029f0537":"2020-10-09T03:24:47.880Z","3.0.25":"2020-10-09T03:28:30.979Z","3.0.26-renovate-non-major-1c61d5fb67b605a719f7ba7a06e57ffe51a4efc6":"2020-10-09T04:54:10.398Z","3.0.26":"2020-10-09T04:57:04.299Z","3.0.27-renovate-non-major-2eb03f72436f08ed95c1b9bcb12bb8fa94b3cb68":"2020-10-09T21:05:56.428Z","3.0.27":"2020-10-09T21:08:48.816Z","3.0.28-renovate-non-major-08781a111a56c717e22f73a08470fad28a243f66":"2020-10-09T21:13:44.407Z","3.0.28":"2020-10-09T21:16:46.698Z","3.0.29-renovate-non-major-0df6f156edfcb2da37b9e1f4cab80224015ce59f":"2020-10-09T22:38:06.181Z","3.0.29":"2020-10-09T22:42:15.753Z","3.0.30-renovate-non-major-736c2cd6e0cb861bb4d54671873cd8fc50d5ad58":"2020-10-09T23:20:52.943Z","3.0.30":"2020-10-09T23:23:35.057Z","3.0.31-renovate-non-major-eb7abceaf696b4beff2ed0a63ee257e44583a7aa":"2020-10-12T18:17:09.297Z","3.0.31":"2020-10-12T18:19:42.329Z","3.0.32-flowchat-balena-api-7f2cff708fc30fd2782114189d285b39d023fc19":"2020-10-13T15:14:26.368Z","3.0.32-renovate-non-major-dff4930968eee5e58c1396a09d6d0ab8ff88ef63":"2020-10-14T01:15:20.492Z","3.0.32":"2020-10-14T01:17:55.380Z","3.0.33-renovate-non-major-3dc5909c88642a96c5994062cfb2b584bb121c8c":"2020-10-14T02:44:32.874Z","3.0.33":"2020-10-14T02:47:08.103Z","3.0.34-flowchat-balena-api-cb19c2eb83db1b30f1b355b600b35711276a6579":"2020-10-14T09:09:42.199Z","3.0.34-flowchat-balena-api-938264b5d27a22bfffe6188084aa15f6a24aeea1":"2020-10-14T12:41:59.957Z","3.0.34-flowchat-balena-api-50b137f64cdbf8a8c65abaa9c8fcef7e01683c95":"2020-10-14T12:53:48.784Z","3.0.34":"2020-10-14T12:56:47.253Z","3.0.35-renovate-non-major-8b7c70a086802c109e789f3da8e7d27e230ea63e":"2020-10-15T21:23:14.042Z","3.0.35-renovate-non-major-ac916b7d4e9a6396424b7c365480a37c29bc7567":"2020-10-16T13:27:08.380Z","3.0.35-renovate-non-major-b204bc7d19336e2396457bbd7e45a7b8cd508fe3":"2020-10-17T07:29:32.026Z","3.0.35-renovate-non-major-03feaa0128f86afc5ee0639132fe74936fc44a6f":"2020-10-19T14:48:39.154Z","3.0.35-renovate-non-major-a956d039f78cbb1f6d3aa21191b198d9325d5bdc":"2020-10-19T15:11:50.240Z","3.0.35-renovate-non-major-1ef8d8c275b70a5b7bfa4165615d5b0b552842f1":"2020-10-19T16:12:20.452Z","3.0.35-update-balena-api-sync-objects-96856d5da22c2e239fc20d37dc0eebb073ce7aad":"2020-10-20T15:38:28.273Z","3.0.35-renovate-non-major-a38fb6bac435bcc6b69060127d46628d85cc5214":"2020-10-21T14:59:22.305Z","3.0.35-renovate-non-major-d5eb187f86586871a06ffee97b67e6212391477e":"2020-10-21T15:05:20.221Z","3.0.35-renovate-eslint-config-standard-15-x-447eb39bba0cfe4c8b8d1634bad0437a1d6d175e":"2020-10-22T02:15:17.300Z","3.0.35-update-balena-api-sync-objects-549b1339f413b26a4ea19718016074e65448f887":"2020-10-22T14:08:43.203Z","3.0.35-update-balena-api-sync-objects-86fb4a85ff4686190b64bc90af58a73622cad3bd":"2020-10-22T14:20:07.301Z","3.0.35-renovate-non-major-1fa8cfa516ba64db9c80c9516c576ae08c49770b":"2020-10-23T01:17:36.862Z","3.0.35-renovate-non-major-a5e1fb779954e1fb85e39d7897606872b9fd8563":"2020-10-24T03:04:58.125Z","3.0.35-renovate-non-major-5a5d51fc32cac775d25e29e2943c6d0f55ff41cf":"2020-10-26T18:04:41.324Z","3.0.35-renovate-non-major-fd32ab319510aa08e4beb1b84f18d84e01a0dfef":"2020-10-26T22:19:18.464Z","3.0.35-renovate-non-major-d990f3cc77770a8dc625ed68df65e9a9ca2686f6":"2020-10-27T05:24:45.074Z","3.0.35-update-balena-api-sync-objects-cdee718cb33bcb83e57a616a2d33f6e9dbb7db62":"2020-10-27T12:29:08.740Z","3.0.35-renovate-non-major-554887364d1528d44c5c211c2d0ed6fb5fc9a7ad":"2020-10-27T23:06:52.440Z","3.0.35-renovate-non-major-a2c3036cc95b6ca3518a8ef0297f99a9a085abda":"2020-10-28T04:36:17.631Z","3.0.35-renovate-non-major-d3c35981e3d6c492ab7c68a54f140aa2648d493e":"2020-10-28T05:40:33.186Z","3.0.35-renovate-non-major-74f267352e93bcfd1d7032a8b9e586e8f610b7e2":"2020-10-28T09:51:35.748Z","3.0.35-renovate-pruneStaleBranches-026796eaed78913cad5eed14d6e1e7d5fc093e95":"2020-10-28T12:00:50.624Z","3.0.35-renovate-non-major-c183967ab985853b7c23c2df415e499efd3df740":"2020-10-28T12:10:38.847Z","3.0.35":"2020-10-28T12:11:33.802Z","3.0.36-renovate-non-major-8e546dae604410a765eab8728aac57e73613e8b9":"2020-10-28T12:16:07.443Z","3.0.36":"2020-10-28T12:19:25.139Z","3.0.37-renovate-non-major-c6318a0f361109c531701ddec07ddf5aeb04a4a5":"2020-10-28T14:40:30.379Z","3.0.37":"2020-10-28T14:43:43.692Z","3.0.38-renovate-non-major-188536cd70224034b36fc7b8763d76ef12029e1b":"2020-10-28T20:29:59.391Z","3.0.38":"2020-10-28T20:32:51.934Z","3.0.39-renovate-non-major-8cac25a6f9a64ce723be00fbd94cff445bade4ba":"2020-10-28T22:02:07.703Z","3.0.39":"2020-10-28T22:04:54.881Z","3.0.40-renovate-eslint-config-standard-16-x-6e24d29bdb7df725614708d806045e32f4848916":"2020-10-29T06:54:18.580Z","3.0.40-renovate-non-major-971749f3a4ae2c539386226466cbf37992a4af58":"2020-10-29T13:57:57.203Z","3.0.40":"2020-10-29T14:01:04.418Z","3.0.41-renovate-eslint-config-standard-16-x-7b7ac76bdc1fd4f0494ebbe74110779318103ee1":"2020-10-29T14:03:48.570Z","3.0.41-renovate-non-major-59eebab33e01d49122d146da3eec860f52303c19":"2020-10-30T05:20:42.613Z","3.0.41":"2020-10-30T05:23:34.064Z","3.0.42-renovate-eslint-config-standard-16-x-0b05391d72bb4aef79c49a03cf537ab6a3511624":"2020-10-30T05:27:50.560Z","3.0.42-renovate-non-major-808404a2dc19f684e52ac96c9a647671d86bff29":"2020-10-30T10:36:00.132Z","3.0.42":"2020-10-30T10:38:51.601Z","3.0.43-renovate-eslint-config-standard-16-x-fcb8774086d8978c865c4a3af3dc432bc4ad497f":"2020-10-30T10:41:22.570Z","3.0.43-renovate-non-major-8de79aa73b6bbc30bf002e4d0114154f4a04f4ee":"2020-10-30T13:05:50.720Z","3.0.43":"2020-10-30T13:09:05.365Z","3.0.44-renovate-eslint-config-standard-16-x-c93d9b516854f89c7e1bc6bb2414a86c8ebf3267":"2020-10-30T13:11:28.106Z","3.0.44-renovate-non-major-5255ac89cbc5c5002fa2bfb43c2cd01238fc0225":"2020-10-31T07:51:14.235Z","3.0.44":"2020-10-31T07:54:28.857Z","3.0.45-renovate-non-major-18f13b884c2cd576385269f8ee98e9fc8b99b360":"2020-10-31T08:33:17.268Z","3.0.45-renovate-eslint-config-standard-16-x-59e5f93be0227836a3d053dfe1ea02290257f7c0":"2020-10-31T08:34:06.741Z","3.0.45":"2020-10-31T08:36:37.204Z","3.0.46-renovate-eslint-config-standard-16-x-282762dbc11b5dfd5ea05f33855618a7e4a92e44":"2020-10-31T08:41:17.954Z","3.0.46-renovate-non-major-6dc4fbe000bc1a9bc5563ed47dc420ae7dcfc2ea":"2020-10-31T10:40:21.038Z","3.0.46":"2020-10-31T10:42:59.831Z","3.0.47-renovate-eslint-config-standard-16-x-22ad744f329062468fdd5f0fdf2257a5fc833369":"2020-10-31T10:46:17.071Z","3.0.47-renovate-non-major-180be503be5869abec2eed644a3c2d99317005cb":"2020-10-31T13:28:55.275Z","3.0.47":"2020-10-31T13:33:08.056Z","3.0.47-renovate-eslint-config-standard-16-x-affeb56bc953a1d0954918d328557a33b04ba026":"2020-10-31T13:35:53.209Z","3.0.48-renovate-eslint-config-standard-16-x-cb61410739aedb99fb9369ab8ae521668f83e968":"2020-10-31T13:40:04.062Z","3.0.48-renovate-non-major-41aba4c721aaa13cb9a2d4efbb81c8d251385699":"2020-10-31T13:45:02.597Z","3.0.48-renovate-non-major-67d69a9f0414935e2f1675a30654e1c7436f011c":"2020-10-31T13:49:26.930Z","3.0.48":"2020-10-31T13:55:13.647Z","3.0.49-renovate-non-major-3fd075551fe37db99b5366174f669ccc5f339414":"2020-10-31T14:46:48.619Z","3.0.49":"2020-10-31T14:49:50.588Z","3.0.50-renovate-eslint-config-standard-16-x-8e8a53d0afef3ae6d0f09fe5028c2b9dc6a8f21e":"2020-10-31T14:52:49.309Z","3.0.50-renovate-non-major-dd9ae30393b1491c10e484a187cbf586d64ca75d":"2020-11-01T05:31:10.027Z","3.0.50":"2020-11-01T05:35:54.826Z","3.0.50-renovate-eslint-config-standard-16-x-8037315c29d3e6f188fcee6a139756dc0462336b":"2020-11-01T05:38:46.475Z","3.0.51-renovate-non-major-c55a7089c5935fc3d3c920de5d3064472928122e":"2020-11-01T05:43:22.243Z","3.0.51":"2020-11-01T05:46:59.367Z","3.0.52-renovate-eslint-config-standard-16-x-7dc2e70d1108a352e035bc529ada410ca2604a2c":"2020-11-01T05:49:00.851Z","3.0.52-renovate-non-major-929fc59cf24402e87071623642a367fc1b304173":"2020-11-01T12:40:44.407Z","3.0.52":"2020-11-01T12:43:55.941Z","3.0.53-renovate-eslint-config-standard-16-x-dc233e7c619d8f14589a0290a0392bd8e6d475f8":"2020-11-01T12:46:30.266Z","3.0.53-renovate-non-major-4cdab4a811eb775c4d6d124c30bf3937406afc2c":"2020-11-01T18:08:32.822Z","3.0.53":"2020-11-01T18:12:25.150Z","3.0.54-renovate-eslint-config-standard-16-x-798bd3d68fef82d3b037c642e49597da64c722b4":"2020-11-01T18:15:17.615Z","3.0.54-renovate-eslint-config-standard-16-x-db625e0ab1c805b627d591c0898efb5eab0f79ba":"2020-11-02T05:31:53.732Z","3.0.54-renovate-non-major-eb4711602fa4bec53fc09034ad4fc092902cb001":"2020-11-02T05:32:37.004Z","3.0.54":"2020-11-02T05:35:33.843Z","3.0.55-renovate-non-major-c90e98643f7461a64561bf4aa68c2cffbfe60e36":"2020-11-02T05:41:07.110Z","3.0.55":"2020-11-02T05:44:14.119Z","3.0.54-renovate-eslint-config-standard-16-x-22401c105e7eed31c6858aba08fe264c41c69817":"2020-11-02T05:47:25.569Z","3.0.56-renovate-eslint-config-standard-16-x-ab19ea387db415812d96045b776dac41f8666bd1":"2020-11-02T05:51:31.662Z","3.0.56-renovate-eslint-config-standard-16-x-39f320b6d08724d268fcc4bccff914bbbb8234c0":"2020-11-02T06:03:22.875Z","3.0.56-bump-eslint-config-standard-9cb58212b4f219c46e839c4bb671c5a22982341a":"2020-11-02T06:28:43.875Z","3.0.56":"2020-11-02T06:31:44.736Z","3.0.57-renovate-non-major-3324d8415018574bcb31f3c15822e80a7326aafa":"2020-11-02T08:47:42.935Z","3.0.57":"2020-11-02T08:51:02.310Z","3.0.58-renovate-non-major-2d4a48ec8d1a35efadd6cda29f8a8f37bf32ab2c":"2020-11-02T14:50:20.970Z","3.0.58":"2020-11-02T14:54:11.011Z","3.0.59-renovate-non-major-f821592b048f1a58a40f62fa93daadaa6c6a0453":"2020-11-02T16:17:42.317Z","3.0.59":"2020-11-02T16:20:46.819Z","3.0.60-renovate-non-major-e8c9e762200966d462618bf77a897bc07dd1cb4a":"2020-11-02T16:24:03.276Z","3.0.60":"2020-11-02T16:28:41.433Z","3.0.61-renovate-non-major-3c3dd1d73a09a835c3d63a31e41f628007b414f4":"2020-11-02T16:48:29.946Z","3.0.61":"2020-11-02T16:52:34.520Z","3.0.62-renovate-non-major-925866cefe395c457bff4d32a7fc666b383bdb37":"2020-11-04T08:15:05.737Z","3.0.62":"2020-11-04T08:18:57.111Z","3.0.63-renovate-non-major-a90d249788f975827594a22af389243f098d3eb2":"2020-11-04T09:53:25.102Z","3.0.63":"2020-11-04T09:56:12.887Z","3.0.64-renovate-non-major-9e3f84c3af524fa8f4bd5de9e5762961a1ec4e36":"2020-11-04T21:32:03.551Z","3.0.64":"2020-11-04T21:35:01.560Z","3.0.65-renovate-non-major-2e59a54da473c6e630d6842ebd6c1a8a913454c0":"2020-11-05T04:14:16.413Z","3.0.65":"2020-11-05T04:22:04.379Z","3.0.66-renovate-non-major-369663b3c66b06b072d4d1feaae83d6eb9f8f23e":"2020-11-05T06:13:14.383Z","3.0.66":"2020-11-05T06:16:43.137Z","3.0.67-renovate-non-major-d39983017d1cd602c27151b4a1aaf752fd97e3c2":"2020-11-05T19:23:38.933Z","3.0.67":"2020-11-05T19:26:42.059Z","3.0.68-force-renovate-node-version-b7a37f867d1ee015cc799476c828dbbc4c24d3da":"2020-11-06T02:49:44.428Z","3.0.68":"2020-11-06T02:52:34.720Z","3.0.69-renovate-non-major-996730606470593be6b76918d2ce4fc7b46b38aa":"2020-11-06T03:42:01.476Z","3.0.69-renovate-non-major-4751cbbd65492b4a8cd2aae7b1547ed5b85b9911":"2020-11-06T03:49:19.490Z","3.0.69":"2020-11-06T03:52:44.465Z","3.0.70-renovate-non-major-460774ecdb2d4ba22f53607f0b494799b4c17ae6":"2020-11-06T04:51:43.810Z","3.0.70":"2020-11-06T04:55:04.292Z","3.0.71-renovate-non-major-a3764a852420597eca12ee3291d90350bfd48aa8":"2020-11-06T05:25:13.062Z","3.0.71":"2020-11-06T05:27:55.911Z","3.0.72-renovate-non-major-2f3627f8379a6c852b3ad34932797faa7ac91dd1":"2020-11-06T07:57:43.268Z","3.0.72":"2020-11-06T08:58:05.795Z","3.0.73-renovate-non-major-6cbd25e1d58edfc5ae5bb6d01c60786077e42121":"2020-11-06T09:54:30.278Z","3.0.73":"2020-11-06T09:58:03.137Z","3.0.74-renovate-non-major-105125c174d3157dfc27fe77a47f1f98ae8be86d":"2020-11-07T02:14:20.779Z","3.0.74":"2020-11-07T02:17:11.650Z","3.0.75-renovate-non-major-6933a081a49eec8c585039093d545db06f615898":"2020-11-07T04:02:34.438Z","3.0.75":"2020-11-07T04:05:14.775Z","3.0.76-renovate-non-major-e87b037c8087b7891298c2264683cb654873fa4a":"2020-11-07T05:36:45.763Z","3.0.76":"2020-11-07T05:39:30.066Z","3.0.77-update-balena-api-sync-objects-3fc652ebb2941d42cccc61295ad9f2592086382d":"2020-11-08T12:35:34.410Z","3.0.77-renovate-non-major-67ed54fd4518f123beeeeb3b60c30ad97d748573":"2020-11-09T17:19:42.901Z","3.0.77":"2020-11-09T17:22:57.739Z","3.0.78-renovate-non-major-14f35ca29ecc3358eaf2c6419b02caead7a8ecbf":"2020-11-10T00:42:17.077Z","3.0.78":"2020-11-10T00:45:34.706Z","3.0.79-renovate-non-major-ebda4f1ce2268e6c0634e1932cf4712bcfff3e78":"2020-11-10T00:51:09.936Z","3.0.79-renovate-non-major-d7e9051a4f3b00f97e7904db25ec46b52030d241":"2020-11-10T00:55:35.252Z","3.0.79":"2020-11-10T00:58:33.653Z","3.0.80-renovate-non-major-080ec8f6ee53c6c74ce458a8f51eb20fd39dd125":"2020-11-10T02:44:38.866Z","3.0.80":"2020-11-10T02:47:36.423Z","3.0.81-renovate-non-major-6ba7dd0620a0ce4dfe088876e98284cb27877b27":"2020-11-11T03:49:33.051Z","3.0.81":"2020-11-11T03:52:43.642Z","3.0.82-renovate-non-major-bda8569d0b59e1fb33fe289e2ad562723def7fef":"2020-11-11T07:21:55.064Z","3.0.82":"2020-11-11T07:25:18.787Z","3.0.83-ci-use-node-14-3412a567f435da167638c9cea047546feda29cd7":"2020-11-11T07:29:31.958Z","3.0.83":"2020-11-11T07:33:32.602Z","3.0.84-renovate-non-major-cf018564a3955e1c838510cf4be864d2085f7951":"2020-11-11T08:39:22.074Z","3.0.84":"2020-11-11T08:43:02.060Z","3.0.85-require-node-14-67b36f558db78bd943501961c2e07f7bc74670c9":"2020-11-12T01:22:33.634Z","3.0.85":"2020-11-12T01:27:00.124Z","3.0.86-renovate-non-major-d105581558cd246c2add087b310358c99192b366":"2020-11-12T01:30:44.083Z","3.0.86":"2020-11-12T01:35:39.149Z","3.0.87-renovate-non-major-024b15421dc58b10aec35bb7c5aa973331df3bd7":"2020-11-12T01:41:27.137Z","3.0.87":"2020-11-12T01:44:38.699Z","3.0.88-renovate-non-major-69de2ff82a33a1f18e7ea2eb97f33163ef9f82fe":"2020-11-12T01:50:36.598Z","3.0.88":"2020-11-12T01:53:29.132Z","3.0.89-renovate-non-major-f3c8a2191dc903db113fa3327e655ec9d47e9dbb":"2020-11-12T07:53:51.364Z","3.0.89":"2020-11-12T07:56:43.988Z","3.0.90-renovate-non-major-b3ba5fc941540db376b99a4a227b5ceb556ce59f":"2020-11-14T10:05:25.578Z","3.0.90":"2020-11-14T10:08:33.252Z","3.0.91-renovate-non-major-50682d7905c4ced97765beabce8600957ce7afd3":"2020-11-14T12:06:46.869Z","3.0.91":"2020-11-14T12:14:34.426Z","3.0.92-renovate-non-major-c8e5ffd4b7d795d7a8f6edfbb2caf09c279f257c":"2020-11-14T12:20:19.969Z","3.0.92":"2020-11-14T12:23:22.048Z","3.0.93-renovate-non-major-2f377167bfa516a04bb9a94bda3f80ab0d76dc21":"2020-11-14T14:14:11.714Z","3.0.93":"2020-11-14T14:17:22.591Z","3.0.94-renovate-non-major-9ac658dcde548771b0c4df87e569f280c72d86ee":"2020-11-14T15:32:58.520Z","3.0.94":"2020-11-14T15:36:04.923Z","3.0.95-renovate-non-major-3f18fe2d63220478b9398c0669f2be42010a96b8":"2020-11-14T16:34:23.645Z","3.0.95":"2020-11-14T16:37:34.442Z","3.0.96-renovate-non-major-a80120191dde99815b025e4dd8976b11a056dc29":"2020-11-15T02:13:53.700Z","3.0.96":"2020-11-15T02:16:40.920Z","3.0.97-renovate-non-major-5ac3b4b4433555e84d9bd7f2d0c509bce31cb0a2":"2020-11-18T17:03:48.650Z","3.0.97":"2020-11-18T17:07:01.709Z","3.0.98-renovate-non-major-21d6b0f273f3ab3b30ca7bcc2e5b8b58c160a465":"2020-11-19T01:40:43.292Z","3.0.98":"2020-11-19T01:44:26.687Z","3.0.99-renovate-non-major-4054231b443b34262e6e0b64f30838a5122b7fb5":"2020-11-19T23:26:34.990Z","3.0.99":"2020-11-19T23:29:50.833Z","3.0.100-renovate-non-major-e7e7d82562913a28239efc9d88abfd93b62cf02b":"2020-11-20T01:00:54.661Z","3.0.100":"2020-11-20T01:04:05.075Z","3.0.101-renovate-non-major-c2f62b5f4fd7a520644c27b85fa90b15e82eb2b2":"2020-11-20T13:41:17.838Z","3.0.77-update-balena-api-sync-objects-ac44a3d4de1f30607ebfb7cb9837c4069773dde8":"2020-11-20T13:42:45.510Z","3.0.101":"2020-11-20T13:44:13.086Z","3.0.102-renovate-non-major-118587ca2e2620a6ad4f7a60794091124968f7d0":"2020-11-20T14:31:31.067Z","3.0.102":"2020-11-20T14:34:33.798Z","3.0.103-renovate-non-major-fe2e9b8f38a45a8feb4c0b807a9bea03ab069e6e":"2020-11-20T23:16:39.944Z","3.0.103-renovate-non-major-35e028001cef3710166f272717049358984c95d6":"2020-11-20T23:20:33.098Z","3.0.103":"2020-11-20T23:23:31.649Z","3.0.104-renovate-non-major-7a485fcd90b80d706644fa9f5b81463fc225e1b2":"2020-11-21T02:43:33.856Z","3.0.104":"2020-11-21T02:46:41.804Z","3.0.105-renovate-non-major-a8f0495afca8b923f2607340ca332576095a0f4b":"2020-11-23T12:01:59.835Z","3.0.105":"2020-11-23T12:05:12.249Z","3.0.106-renovate-non-major-c03fa754eeaab0954e78f9c0709dac27d414dcb7":"2020-11-23T13:47:22.244Z","3.0.106":"2020-11-23T13:50:40.540Z","3.0.107-renovate-non-major-816393c494c0b9c645f1646584fcb135767665ee":"2020-11-24T05:17:47.801Z","3.0.107":"2020-11-24T05:21:07.191Z","3.0.108-renovate-non-major-abf46d8c6f9f98702804510016e2c550143aa285":"2020-11-24T05:26:06.568Z","3.0.108-renovate-non-major-533a53d7432226c32357e3b166243f214eccebd6":"2020-11-24T05:31:12.796Z","3.0.108-renovate-non-major-0075a96143f764b00dd04711af97bed07401581a":"2020-11-24T05:35:31.007Z","3.0.108":"2020-11-24T05:38:43.374Z","3.0.109-renovate-non-major-f02d985a2752f5035cf271b6a3df4a70fe673715":"2020-11-24T05:43:44.101Z","3.0.109":"2020-11-24T05:46:21.011Z","3.0.110-renovate-non-major-2c2c57d21179fb4fa59799d6a48c45356619779d":"2020-11-24T08:14:27.464Z","3.0.110":"2020-11-24T08:17:46.740Z","3.0.111-renovate-non-major-4083d1f3d6509058c009cd9ac402e0e53171806e":"2020-11-27T08:36:25.978Z","3.0.111":"2020-11-27T08:39:42.311Z","3.0.112-renovate-non-major-f6afdc023fb5d9618b7ddb900bb0ab361f5cfe3e":"2020-12-01T06:24:41.878Z","3.0.112":"2020-12-01T06:28:30.567Z","3.0.113-renovate-non-major-243da47494ac5a0dd1b3b839ea3747f588251fc4":"2020-12-01T09:32:34.206Z","3.0.113":"2020-12-01T09:35:33.987Z","3.1.0-update-mirrorId-matching-to-less-specific-a4253d904d84c45fb4e427914769b897db5522ad":"2020-12-01T14:41:05.768Z","3.1.0":"2020-12-01T14:44:05.419Z","3.1.1-renovate-non-major-735f8242020c3d42d219520ff214c76194196aab":"2020-12-01T16:06:05.116Z","3.1.1":"2020-12-01T16:08:52.545Z","3.1.2-renovate-non-major-70bba4be86c53199102ca84d7d6ea0128143f1d4":"2020-12-01T20:50:38.136Z","3.1.2":"2020-12-01T20:53:55.454Z","3.1.3-renovate-non-major-d4342beffa41e5913b5400bd65194296fa027281":"2020-12-01T22:33:20.667Z","3.1.3":"2020-12-01T22:36:05.453Z","3.1.4-renovate-non-major-93f91fb0e680a80a37c6ce7e7fcdeec4710c3157":"2020-12-02T00:48:12.253Z","3.1.4":"2020-12-02T00:51:21.721Z","3.1.5-renovate-non-major-42a5d8b7d6226eb1544dc019256b37b5fe235a64":"2020-12-03T00:13:29.550Z","3.1.5":"2020-12-03T00:16:43.238Z","3.1.6-renovate-non-major-d2218a46e9458fecdaa0a085a435406326a0773e":"2020-12-03T00:31:38.333Z","3.1.6":"2020-12-03T00:34:38.011Z","3.1.7-renovate-non-major-5018a220036d3d852caacdc93e030095337bdf86":"2020-12-03T07:23:04.075Z","3.1.7":"2020-12-03T07:25:54.106Z","3.1.8-renovate-non-major-4c2e85b251ae2ceaaa35f93048317dd650e480ee":"2020-12-04T08:29:58.116Z","3.1.8":"2020-12-04T08:33:07.446Z","3.1.9-renovate-non-major-01e54fe0505d9ea23276e1e54d8535eafa0d2c72":"2020-12-04T16:35:30.198Z","3.1.9":"2020-12-04T16:39:14.330Z","3.1.10-renovate-non-major-59a40fc1e3eda2d59ecc3a82dc143bf15670fa80":"2020-12-04T17:55:55.076Z","3.1.10":"2020-12-04T18:00:35.280Z","3.1.11-renovate-non-major-0af205a3170a84460b6656f73268982f3434a561":"2020-12-04T20:02:59.174Z","3.1.11":"2020-12-04T20:06:11.386Z","3.1.12-renovate-non-major-b218fc42850dc8030d39b2e173239efc2481f7c2":"2020-12-05T12:40:40.889Z","3.1.12":"2020-12-05T12:43:51.788Z","3.1.13-renovate-non-major-093db28b366128cef11662ff44703b72f0cd0204":"2020-12-05T13:28:58.690Z","3.1.13":"2020-12-05T13:32:02.751Z","3.1.14-renovate-non-major-fc3d47c43d95471904318ed2d6b90581b9cc6de7":"2020-12-05T14:50:31.583Z","3.1.14":"2020-12-05T14:53:26.066Z","3.1.15-renovate-husky-5-x-933598b27b0f723100405ede52585db2b1636a29":"2020-12-07T00:26:35.580Z","3.1.15-renovate-husky-5-x-9393a55e820cb3b91affb00c2c39c2ff8aa82c1b":"2020-12-07T07:47:26.703Z","3.1.15-remove-postinstall-b2b55abc9c9b2c19ea8c238697ee55ffa5b76d00":"2020-12-07T09:29:16.965Z","3.1.15-renovate-non-major-a0a030d049285b08e773b9394093243be56da1f5":"2020-12-07T09:36:57.731Z","3.1.15":"2020-12-07T16:29:49.990Z","3.1.16-renovate-non-major-5305dac3aaeff68a70f42c1864e8085284a05968":"2020-12-07T16:35:41.662Z","3.1.16":"2020-12-07T19:06:40.176Z","3.1.16-renovate-non-major-68026af9afa7a10d6335e87b6156cfa69f0a732c":"2020-12-07T19:09:00.163Z","3.1.17-renovate-non-major-bd7cf3766fac42141dd7b08e010eaad5ca8045fd":"2020-12-07T19:12:02.540Z","3.1.17":"2020-12-07T19:16:42.117Z","3.1.18-add-husky-postinstall-29fcddaa981d1d55b241e54b59169ae30048e4ed":"2020-12-08T02:50:20.712Z","3.1.18":"2020-12-08T10:19:22.462Z","3.1.19-renovate-non-major-5f6c56fc263794ffa13ea3af03ec77c23e4de6b6":"2020-12-08T10:24:17.422Z","3.1.19-renovate-non-major-f348aa9a32546e28de03f8738b48435305d08238":"2020-12-08T10:29:07.146Z","3.1.19":"2020-12-08T10:40:13.989Z","3.1.20-renovate-non-major-b97b92dc637a88e01c7e54b43c0797e641228eb7":"2020-12-08T10:46:45.638Z","3.1.20":"2020-12-08T10:49:41.932Z","3.1.21-renovate-non-major-2997efd9cb672643cf92afd7e2b0d57c57ac253c":"2020-12-08T11:38:34.643Z","3.1.21":"2020-12-08T11:41:43.976Z","3.1.22-renovate-non-major-4e2a35adacebedc864d5a56591f64393406ac6b3":"2020-12-09T17:13:27.531Z","3.1.22":"2020-12-09T17:17:15.962Z","3.1.23-eslintrc-root-true-b27f534c4069cb0b0908d7d8f23e36801f3d2a86":"2020-12-10T06:12:20.973Z","3.1.23":"2020-12-10T06:16:18.347Z","3.1.24-renovate-non-major-06be4a103ffcd02cf958de56611bf8fd2a830d8d":"2020-12-10T06:21:31.288Z","3.1.24":"2020-12-10T06:25:05.671Z","3.1.24-renovate-non-major-ac83cc3fdae84c8db70296555044e1e5e654fdb5":"2020-12-10T06:28:02.207Z","3.1.25-renovate-non-major-8f0be2178138968756e795b771d7e8264620a1cf":"2020-12-10T06:31:06.302Z","3.1.25":"2020-12-10T06:34:02.601Z","3.1.26-update-balena-api-sync-objects-58754302b076af188f779053edf04112a2cf8178":"2020-12-10T13:16:24.062Z","3.1.26-renovate-non-major-7e8135aa7720f8f99ecacf2ff5cf1b4a58a5674e":"2020-12-10T16:12:57.702Z","3.1.26":"2020-12-10T16:16:04.222Z","3.1.27-renovate-non-major-38477cc29fd997ebeac1949404bb7f5c07ac929b":"2020-12-10T17:22:46.580Z","3.1.27":"2020-12-10T17:26:17.955Z","3.1.27-dependabot-npm-and-yarn-ini-1-3-7-a71b94420d01c984bbcffba33803e90f36bd8177":"2020-12-10T17:28:40.734Z","3.1.28-renovate-non-major-2d450bca80007145e23b8580b3b538c54d728c9d":"2020-12-11T00:05:25.929Z","3.1.28":"2020-12-11T00:09:23.176Z","3.1.29-renovate-non-major-30afdd3ff0e28bdb221cedde9fb1b51d926b6e44":"2020-12-11T10:57:15.580Z","3.1.29-renovate-non-major-319acaad1016310bdab75c4d6e6d35dcbe6bc3ec":"2020-12-11T22:23:56.053Z","3.1.29-renovate-non-major-f92b9bd3bd207c0ae439068ac2dbd34f3bd4fc35":"2020-12-12T01:10:06.478Z","3.1.29-renovate-non-major-2a8361b1296e8937bdf06659345d8311b6e7c965":"2020-12-12T04:43:42.344Z","3.1.29-renovate-ignore-node-4eee0ab90aafc6e38dfd487775e63d1d4702b7f8":"2020-12-12T07:36:57.440Z","3.1.29":"2020-12-12T07:42:39.296Z","3.1.30-renovate-non-major-1ecbf60b387d62952e2d6037bca8ae41fb41dd11":"2020-12-12T08:00:54.863Z","3.1.30":"2020-12-12T08:04:39.193Z","3.1.31-postinstall-sh-compat-bd4647e87883e8ad6d488ab8c968c6a544a5d9df":"2020-12-12T08:38:12.010Z","3.1.31":"2020-12-12T08:41:34.041Z","3.1.32-renovate-non-major-90a1f910ea71ab0efbc1828395ac5816e177a079":"2020-12-12T08:46:10.741Z","3.1.32":"2020-12-12T08:51:04.622Z","3.1.33-missing-company-name-7e8d6d5c86431ec914a6bbd55d15cbe4f463daea":"2020-12-12T08:59:48.826Z","3.1.33":"2020-12-12T09:35:42.387Z","3.1.34-dependabot-npm-and-yarn-ini-1-3-8-91c308fb0605da67ace6cafe98a072bcebdeefdf":"2020-12-12T10:03:16.692Z","3.1.34":"2020-12-12T10:06:22.532Z","3.1.35-renovate-non-major-b0bdfdb4fe0db363464f5266eee158443e35dcdb":"2020-12-12T10:17:00.009Z","3.1.35":"2020-12-12T10:19:46.456Z","3.1.36-renovate-non-major-d01220ceaa5f8a110f73e9ac0f2bd38b172bc9d2":"2020-12-12T14:44:47.110Z","3.1.36-renovate-non-major-e350785d9ff5c8e001a32adc5d72c19a1af273c9":"2020-12-12T14:49:03.683Z","3.1.36":"2020-12-12T14:52:06.291Z","3.1.37-renovate-non-major-c257dcd53ed7c1ea2ab446266ddf877e6568f061":"2020-12-12T18:15:48.378Z","3.1.37":"2020-12-12T18:19:00.097Z","3.1.38-renovate-non-major-86088a17279e71881af15ccc52ed9ede7f9fc916":"2020-12-13T19:12:31.704Z","3.1.38":"2020-12-13T19:15:37.406Z","3.1.39-renovate-non-major-4c5a809f365748315966b11e030f205af9d169ba":"2020-12-13T20:36:17.915Z","3.1.39":"2020-12-13T20:39:41.272Z","3.1.40-add-debug-logs-a2adea0b71d8528e32c3232aded83b5473554cf9":"2020-12-14T03:55:49.450Z","3.1.40-front-mirror-tests-1b0e998e3a8b64ffd97e869ee420354c3a0516e6":"2020-12-14T09:23:36.894Z","3.1.40-renovate-non-major-f4b6878eb860c01006556ab9de158ed5aee08f19":"2020-12-15T06:30:35.726Z","3.1.40":"2020-12-15T06:34:14.907Z","3.1.41-renovate-non-major-2c109d19fcede0c5929be76a6891ae5b58df5607":"2020-12-15T07:56:49.585Z","3.1.41":"2020-12-15T08:00:05.504Z","3.1.40-front-mirror-tests-e7e85abaae4080ad5596870a8781b93258617a8a":"2020-12-15T09:38:29.614Z","3.1.40-front-mirror-tests-1d9b401b5683c93d7266e8cd8a008deefe9d8d72":"2020-12-15T09:58:59.811Z","3.1.42-renovate-non-major-1101e0434e308ad389aa6051536239dcc9fee3af":"2020-12-15T21:24:10.516Z","3.1.42":"2020-12-15T21:26:59.999Z","3.1.43-front-mirror-tests-fac7c54aa227f02ce0051f0fdec446e00a9b1ef4":"2020-12-16T03:54:18.519Z","4.0.0-dependency-inject-integrations-801764ee4a2bf431eb1e99809bdb1c61f9f604ad":"2020-12-16T04:43:48.574Z","4.0.0-dependency-inject-integrations-4953987e2b6af140b3d7039bd164c83c8985153b":"2020-12-16T04:50:54.202Z","3.1.43-fix-balena-api-company-d2619fb142307bce37c906eb5de3f5a4f76aaaff":"2020-12-16T05:52:30.082Z","4.0.0-dependency-inject-integrations-0d27dd7d9342535adda97c78ae86c091d7f04a27":"2020-12-16T05:55:52.581Z","4.0.0-dependency-inject-integrations-35bb9e43b95e2eb8e12c72559f327c6ca94d0179":"2020-12-16T06:14:42.651Z","3.1.43":"2020-12-16T09:24:21.216Z","3.1.44-renovate-non-major-9f1bbbd0f33b6243aa920749e2b3cc56c76a127e":"2020-12-16T13:57:53.746Z","3.1.44":"2020-12-16T14:00:57.859Z","4.0.0-dependency-inject-integrations-9498fe1966939023b553a2f21964319b57a3c021":"2020-12-17T05:30:29.079Z","3.1.45-renovate-non-major-02950939cf03c3da056d5776ee4bdbfbf4f5f890":"2020-12-17T21:49:41.136Z","3.1.45":"2020-12-17T21:52:49.902Z","4.0.0-dependency-inject-integrations-407a29756c3d7dc8012f1a436348ed062ecd95d6":"2020-12-18T02:55:49.836Z","4.0.0-dependency-inject-integrations-160437ba6c652b0e893b729b3ff354fae2afda44":"2020-12-18T03:29:38.256Z","4.0.0":"2020-12-18T06:43:30.008Z","4.0.1-renovate-non-major-8b08081c5d5f4032c6e8f5d4ce34fb76079c42fd":"2020-12-19T00:47:07.832Z","4.0.1":"2020-12-19T00:51:07.682Z","4.0.2-renovate-non-major-5fbf721c14442395c3107027836b19519dcde61f":"2020-12-19T00:59:15.109Z","4.0.2":"2020-12-19T01:03:57.770Z","4.0.3-renovate-non-major-db0e8b32e80b0b2b91e1af98fc18d38cfc0d37da":"2020-12-19T01:13:03.653Z","4.0.3":"2020-12-19T01:23:06.775Z","4.0.4-renovate-non-major-2eb269d09cf57b73668f6c1dbf1e74497fe4b916":"2020-12-19T09:43:53.714Z","4.0.4":"2020-12-19T09:47:38.812Z","4.0.5-renovate-non-major-2c0e419ebbcbf3acc43ee8c9a1c4fc9dcd0aa178":"2020-12-19T15:04:23.207Z","4.0.5":"2020-12-20T00:15:34.401Z","4.0.6-renovate-non-major-2b0529c6b6625f373d49da8063cc3d6280fad503":"2020-12-21T15:52:03.518Z","4.0.6":"2020-12-21T15:57:57.312Z","4.0.7-renovate-non-major-5689427c77d33f282dd5dd41aeacf57544a4d58c":"2020-12-23T08:57:08.679Z","4.0.7":"2020-12-23T08:59:50.981Z","4.0.8-renovate-non-major-4eaeb8231a3a55f540eed10a973685b5076b2424":"2020-12-23T11:41:50.891Z","4.0.8":"2020-12-23T11:44:59.896Z","4.0.9-renovate-non-major-9f7f15ae667f94390755d33342f69842675ce5b1":"2020-12-27T01:44:53.829Z","4.0.9":"2020-12-27T01:48:13.752Z","4.0.10-renovate-non-major-6ed0d44322e8363aded8f32bbb13d9a07a9603a7":"2020-12-27T03:32:22.445Z","4.0.10":"2020-12-27T03:35:37.560Z","4.0.11-renovate-non-major-427af6dd09ad118d8b00879f0e97431f12a04998":"2020-12-28T01:33:07.256Z","4.0.11":"2020-12-28T01:36:48.367Z","4.0.12-renovate-non-major-1f1eb6186e6ce38a052f09d3c2c80dbe017993ad":"2020-12-30T05:42:48.211Z","4.0.12":"2020-12-30T05:46:04.391Z","4.0.13-renovate-non-major-80ff874fe6be1f16acdc8a3e1798f05f0955bf59":"2020-12-30T08:30:22.527Z","4.0.13":"2020-12-30T08:35:58.716Z","4.0.14-renovate-non-major-afba044086b562d8b387dac2ef1d50624d4056ec":"2020-12-30T19:35:53.439Z","4.0.14":"2020-12-30T19:41:13.218Z","4.0.15-renovate-non-major-e66ad89febbd7b94fe0d778ac33056cad9375304":"2020-12-30T20:24:26.909Z","4.0.15":"2020-12-30T20:28:23.778Z","4.0.16-renovate-non-major-2c7c81641e8fae1a35f1c06b741c4f0cc5046794":"2021-01-01T17:57:58.355Z","4.0.16":"2021-01-01T18:10:52.062Z","4.0.17-renovate-non-major-d53104f840dc464813438606d98702d2b4f1f6e0":"2021-01-04T11:54:26.640Z","4.0.17":"2021-01-04T11:57:33.753Z","4.0.18-renovate-non-major-4f883a03d59e60b801a52a46a0f4aeff643d8502":"2021-01-04T13:14:50.881Z","4.0.18":"2021-01-04T13:17:28.631Z","4.0.19-renovate-non-major-91675e89808a3dd0e7bfddc2d7269438445d3e2a":"2021-01-07T02:48:06.435Z","4.0.19":"2021-01-07T02:51:06.912Z","4.0.20-renovate-non-major-a4114f5fd1afc5cd5edddc0a62439f36f1e12ddb":"2021-01-07T04:25:33.836Z","4.0.20":"2021-01-07T04:28:36.273Z","4.0.21-renovate-non-major-5cfb5850d063fe97716c7b1a4f0cd21ccd33231f":"2021-01-07T11:00:04.008Z","4.0.21":"2021-01-07T11:03:01.208Z","4.0.22-renovate-non-major-ce08600653a12a9b5d5c3051cebd0348b67ace30":"2021-01-09T22:34:50.609Z","4.0.22":"2021-01-09T22:37:57.780Z","4.0.23-renovate-non-major-b2caed0802d4a9a84e46f4f6231032c9f095cb2f":"2021-01-09T22:42:54.304Z","4.0.23":"2021-01-09T22:45:36.991Z","4.0.24-renovate-non-major-eba21b4c755193b8f7bf0ee5ed60016a30cda1e3":"2021-01-11T06:48:36.992Z","4.0.24":"2021-01-11T06:51:42.250Z","4.0.25-use-company-token-8ac038540a7bc60b6bc54386b264420550733f8a":"2021-01-11T08:03:53.064Z","4.0.25":"2021-01-11T08:07:02.787Z","4.0.26-renovate-non-major-5830a9145cf4344fbe44b7e396ba5e657104f784":"2021-01-11T08:12:56.433Z","4.0.26":"2021-01-11T08:16:27.903Z","4.0.27-renovate-non-major-b76632bfa5ee9a78bfe8161f26926cebfa8ce9b8":"2021-01-11T08:22:21.676Z","4.0.27":"2021-01-11T08:26:04.545Z","4.0.28-renovate-eslint-plugin-jsdoc-31-x-9b3ee0a5eab32a2ee13819acd1a1a453c1da4123":"2021-01-11T11:34:35.798Z","4.0.28-renovate-eslint-plugin-jsdoc-31-x-f6677329d02067e6fe637f0a3a0d55ab729b50ff":"2021-01-11T13:51:30.966Z","4.0.28-renovate-eslint-plugin-jsdoc-31-x-54c565bd6a7f7747ecd7c640b356f886f261f6a0":"2021-01-11T17:22:23.380Z","4.0.28-renovate-non-major-e72bac38c5737c6f5a451d8c6903cf0ea94f4d5f":"2021-01-12T01:47:05.698Z","4.0.28":"2021-01-12T01:50:13.964Z","4.0.28-renovate-eslint-plugin-jsdoc-31-x-849de1a074a0cf7bc19f0a07eabc0fdf1d150728":"2021-01-12T01:52:40.731Z","4.0.29-renovate-eslint-plugin-jsdoc-31-x-896953984080e94f6a1379300c0f4ed0b3226f61":"2021-01-12T01:55:29.443Z","4.0.29-renovate-non-major-87447a83877d92be35afcb374d758399d9c091d9":"2021-01-13T06:02:39.091Z","4.0.29":"2021-01-13T06:06:15.297Z","4.0.30-renovate-eslint-plugin-jsdoc-31-x-5e8dcd8442556779b12947d314b5a26adc656a12":"2021-01-13T06:10:17.078Z","4.0.30-renovate-non-major-bb942eb4b2aa01e0191adc88cc2bd0424890a6f2":"2021-01-13T14:13:12.013Z","4.0.30":"2021-01-13T14:15:53.993Z","4.0.31-renovate-eslint-plugin-jsdoc-31-x-66af3be5ab9f80213d9e814c6fbddf14d2b3ca06":"2021-01-13T14:21:55.880Z","4.0.31":"2021-01-14T02:20:21.120Z","4.0.32-renovate-non-major-7f25b7491cfdec8c60b43665fdc1d947959a7e65":"2021-01-14T03:30:18.365Z","4.0.32":"2021-01-14T03:33:47.592Z","4.0.33-renovate-non-major-69142cc0cba4c01464f2777b4bfc063a716cee2e":"2021-01-14T04:44:41.556Z","4.0.33-renovate-non-major-2265afc01745a16aadb653bbcb775f16cb3739fc":"2021-01-14T04:49:04.489Z","4.0.33-lint-staged-add-readme-5e6ee7957ec0791afa7b7668c36d20517b10d350":"2021-01-14T04:51:20.543Z","4.0.33":"2021-01-14T04:52:17.754Z","4.0.34-lint-staged-add-readme-7af33ab403ec926dc92778580dd5211c3fc4630f":"2021-01-14T04:57:56.638Z","4.0.34":"2021-01-14T05:03:51.265Z","4.0.35-renovate-non-major-28e5e17418248f0a88a54c0829c9138333d426a1":"2021-01-14T06:43:59.477Z","4.0.35":"2021-01-14T06:46:47.572Z","4.0.36-renovate-non-major-2eeac1af5aab5833bab88d299aa6084c2589a419":"2021-01-14T17:33:53.823Z","4.0.36":"2021-01-14T17:37:05.956Z","4.0.37-renovate-non-major-5b79fcef25c7df3a6b1746606b2cba21375f4123":"2021-01-14T19:10:24.895Z","4.0.37":"2021-01-14T19:13:29.175Z","4.0.38-renovate-non-major-f7c13fd639fd9e36c6477c00d7795b1eabf1e63a":"2021-01-15T00:27:29.505Z","4.0.38":"2021-01-15T00:30:43.607Z","4.0.39-renovate-non-major-cdea7b1d07b0e016a7f81834397e82a15c92aa1d":"2021-01-15T03:15:43.921Z","4.0.39":"2021-01-15T03:19:01.655Z","4.0.40-renovate-non-major-abe8ed779767640abc5b52d00fadac28c9336760":"2021-01-16T00:23:20.705Z","4.0.40":"2021-01-16T00:26:29.435Z","4.0.41-renovate-non-major-ab09e6d7f41845fc8f195e2f2d80907d32b4e64a":"2021-01-17T12:42:24.408Z","4.0.41":"2021-01-17T12:45:18.622Z","4.0.42-renovate-non-major-3619c28bf2deffa31e29d662e141b29fcb33ce1d":"2021-01-17T14:52:30.372Z","4.0.42":"2021-01-17T14:55:43.219Z","4.0.43-renovate-non-major-db67940ac558c84a8a742159ead748464e2c1118":"2021-01-18T08:43:08.325Z","4.0.43":"2021-01-18T08:46:34.533Z","4.0.44-renovate-non-major-608c44685ac2c5315406d44ba45e32404833c10d":"2021-01-18T11:00:34.030Z","4.0.44":"2021-01-18T11:03:35.883Z","4.0.45-renovate-non-major-afb946fe8454764577fc5a3c9532942b2610343e":"2021-01-20T05:22:13.734Z","4.0.45":"2021-01-20T05:26:04.614Z","4.0.46-renovate-non-major-9bc8ef7848578277cf15285b430ae397ff7c00b7":"2021-01-20T07:03:25.215Z","4.0.46":"2021-01-20T07:06:23.884Z","4.0.47-renovate-non-major-4390fbcd7dc21d9a317820973011057b96f66ddb":"2021-01-20T08:54:10.997Z","4.0.47":"2021-01-20T08:58:30.003Z","4.0.48-renovate-non-major-697911df1794519d5b7cb8a85a19b003c7f77804":"2021-01-20T21:46:40.537Z","4.0.48":"2021-01-20T21:49:44.390Z","4.0.49-renovate-non-major-0ca614987c211e79e5a66843638c902a1c260153":"2021-01-21T15:44:09.667Z","4.0.49":"2021-01-21T15:47:25.796Z","4.0.50-renovate-non-major-74d7692f8167c2a990da156eb25cc6958d0a4379":"2021-01-23T04:58:56.739Z","4.0.50-renovate-non-major-99b1b4f4b47b3c68d917505a2b18c18ab5f8124c":"2021-01-23T05:03:09.285Z","4.0.50":"2021-01-23T05:06:22.628Z","4.0.51-renovate-non-major-042a618782482a4c428d446e3537e87b5c7448b1":"2021-01-23T06:31:13.831Z","4.0.51":"2021-01-23T06:34:10.306Z","4.0.52-renovate-non-major-4609b91cba975c5346c181a2a585638f65a05b1b":"2021-01-23T06:39:17.729Z","4.0.52":"2021-01-23T06:42:02.049Z","4.0.53-renovate-non-major-bc988b4a78c400f2f1a608e4fdb0fc3255c68d31":"2021-01-23T08:11:52.337Z","4.0.53-renovate-non-major-9ca795682ca3a1f137d4fa2c711ee34781b52c98":"2021-01-23T09:24:39.465Z","4.0.53":"2021-01-23T09:28:02.157Z","4.0.54-renovate-non-major-6b40e06a61596dd92f02217290a103fadac85991":"2021-01-23T16:22:00.045Z","4.0.54":"2021-01-23T16:25:03.288Z","4.0.55-renovate-non-major-a22f4b21ccb08a2c35d366051c99d083434e8d51":"2021-01-23T17:23:35.448Z","4.0.55":"2021-01-23T18:31:14.684Z","4.0.56-renovate-non-major-d630dbedd1a9262175fc3b18a4349776cb762a4d":"2021-01-24T13:56:19.723Z","4.0.56":"2021-01-24T13:58:57.246Z","4.0.57-renovate-non-major-6b2eee234cdd45d33d4ec4beb4bcb500ee7dd793":"2021-01-24T14:46:07.595Z","4.0.57":"2021-01-24T14:48:59.953Z","4.0.58-renovate-non-major-f02ecf384ef1b2b4dbfdf5fd83acdc57b962bce8":"2021-01-24T15:10:23.316Z","4.0.58":"2021-01-24T15:13:23.490Z","4.0.59-renovate-non-major-1b9717cd869e2972f3c48d739a78787eb456a92c":"2021-01-24T16:27:04.516Z","4.0.59":"2021-01-24T16:30:04.990Z","4.0.60-renovate-non-major-babe746e8eb6610acb7f5197069e4e24f419e53a":"2021-01-24T17:52:26.998Z","4.0.60":"2021-01-24T17:55:18.843Z","4.0.61-renovate-non-major-c1aa5cf59b960b45d2d69501e9aa09603f81dae5":"2021-01-25T08:23:00.857Z","4.0.61-renovate-non-major-43a5247969eb607c3acbf02f744f17d533a2af90":"2021-01-25T09:36:03.316Z","4.0.61":"2021-01-25T09:39:04.551Z","4.0.62-renovate-non-major-113618e6585ba335ea14e87e4d1604f2454a9d93":"2021-01-25T11:18:55.140Z","4.0.62":"2021-01-25T11:22:16.784Z","4.0.63-renovate-non-major-92f506bbf572c953c09052bfcaf133f976e597a5":"2021-01-25T14:30:17.555Z","4.0.63":"2021-01-25T15:20:06.156Z","4.1.0-action-context-d4c8edfaee75b560ce87d469cdc18034302b89c2":"2021-01-25T17:46:58.156Z","4.1.0-action-context-5dfaab61fc092b3b6b64d06a0d3d9e012cf8a161":"2021-01-26T05:55:13.318Z","4.1.0-action-context-33e30fcc57f23a5c4616d78c6884f92d17a7fa5a":"2021-01-26T06:01:52.345Z","4.1.0":"2021-01-26T06:27:51.496Z","4.1.1-renovate-non-major-e0b36ee3499a55d89a0b06e418b20d4bddb4cd21":"2021-01-26T06:31:17.216Z","4.1.1":"2021-01-26T06:35:42.325Z","4.1.2-renovate-non-major-f8e67fe013ccd0196a7cbd4ad4cfd7934662c064":"2021-01-26T14:50:41.250Z","4.1.2":"2021-01-26T14:53:57.115Z","5.0.0-check-id-on-upsert-813feb5f44273e1ecc022c6385b177570c3288ca":"2021-01-26T17:35:59.548Z","4.1.3-renovate-non-major-ac97f126c0985eb99ea82d4e207e62fe96299765":"2021-01-27T05:02:19.732Z","4.1.3":"2021-01-27T05:05:08.294Z","4.1.4-renovate-non-major-287a265159716327ed0687e7ec046773a6565f7f":"2021-01-27T06:18:29.503Z","4.1.4":"2021-01-27T06:21:10.382Z","4.1.5-renovate-non-major-331faeb29386de92b77c1b97fc9f49282b7fb1ff":"2021-01-27T11:19:25.704Z","4.1.5":"2021-01-27T11:22:46.466Z","4.1.6-renovate-non-major-0c9cf0f07f209f038dde17396e1533b9ad6c91bd":"2021-01-27T12:40:57.622Z","4.1.6":"2021-01-27T12:44:18.176Z","4.1.7-renovate-non-major-9f017712f53feea7d2f9fbc7047ce8f4b96111b8":"2021-01-28T01:58:39.339Z","4.1.7":"2021-01-28T02:01:26.949Z","4.1.8-renovate-non-major-8c54f5dd169557f33be0d20887e8a30ee7e46be3":"2021-01-28T04:52:50.181Z","4.1.8":"2021-01-28T04:55:54.196Z","4.1.9-renovate-non-major-28ed5db9fdabe0b0432d51b29994233ef3fa4dc5":"2021-01-29T05:22:34.003Z","4.1.9":"2021-01-29T06:34:56.753Z","4.1.10-renovate-non-major-4af34434f026a6aeb101b4be8ec9c471c2b0d8b7":"2021-01-29T17:30:38.645Z","4.1.10":"2021-01-29T17:33:44.609Z","4.1.11-renovate-non-major-24e7e19b5b4eda21e237a9d2d90013a91960d839":"2021-01-29T18:32:13.129Z","4.1.11":"2021-01-29T19:36:19.116Z","4.1.12-renovate-non-major-38659715aea130666ce3c7a5ed18c90eabf0285a":"2021-01-30T05:02:05.498Z","4.1.12":"2021-01-30T05:04:44.221Z","4.1.13-renovate-non-major-95743791ce69211dce9b2a804733317822a6f706":"2021-01-31T05:45:28.111Z","4.1.13":"2021-01-31T05:48:23.586Z","4.1.14-renovate-non-major-ab63726a85349434ce627f8d60df7110d9d1c378":"2021-01-31T06:58:19.825Z","4.1.14":"2021-01-31T07:01:22.740Z","4.1.15-renovate-non-major-6e6b15075ec821d3ed28a614779a6be0f35f5184":"2021-01-31T08:45:36.906Z","4.1.15":"2021-01-31T08:49:43.724Z","4.1.16-renovate-non-major-b64bd18828d444c25d7e4c1693738c9a42fe62ad":"2021-01-31T10:32:13.304Z","4.1.16":"2021-01-31T11:07:22.406Z","4.1.17-renovate-non-major-c7e8cc71ed68445c88d3f66a4c5fb328765347a5":"2021-01-31T12:30:03.574Z","4.1.17":"2021-01-31T12:32:56.242Z","4.1.18-renovate-non-major-30cac8c1c0e21c1670aad821f90a30dac3580ad3":"2021-01-31T16:36:01.935Z","4.1.18":"2021-01-31T16:38:48.667Z","4.1.19-renovate-non-major-6e3012fea297d7208c8dbb1c5075020fa43c9add":"2021-01-31T19:18:15.825Z","4.1.19":"2021-01-31T19:21:09.782Z","4.1.20-renovate-non-major-8b828abe292117886a52155c02756fbde53d8728":"2021-02-01T14:44:47.844Z","4.1.20":"2021-02-01T14:47:53.276Z","4.1.21-renovate-non-major-c49125cb6a4ee810192b6b3bec8b362316f0cb21":"2021-02-01T15:26:11.459Z","4.1.21":"2021-02-01T15:29:26.657Z","4.1.22-renovate-non-major-36589fdabce6e5c9a77ab1c1caabfbb72347c61c":"2021-02-01T16:54:29.770Z","4.1.22":"2021-02-01T16:58:07.206Z","4.1.23-renovate-non-major-78ca6db6e29391da766ad05eab24dd7f90617530":"2021-02-01T18:36:13.725Z","4.1.23":"2021-02-01T18:38:55.289Z","4.1.24-renovate-non-major-1c5a9540239a6734e18a47d5131a75445daff202":"2021-02-01T21:15:31.434Z","4.1.24":"2021-02-01T21:18:31.543Z","4.1.25-whitesource-configure-82d1d9683cc43d7c261bf1b47b056dca6ac4c40a":"2021-02-02T01:10:32.712Z","4.1.25":"2021-02-02T01:13:40.294Z","4.1.26-renovate-non-major-1fa75699fc4b328c104be1b8e449c4944742d423":"2021-02-02T01:19:22.259Z","4.1.26-renovate-non-major-4cd9bea4537f49e6a68ccd7ac7debe4238077bd9":"2021-02-02T01:25:46.462Z","4.1.26-renovate-non-major-7ad084388c3df5000546abf2f6ed12d9fda4eb39":"2021-02-02T01:30:16.134Z","4.1.26-renovate-non-major-1d72da13eeb672d46d66be26ce6704ab0b6802c8":"2021-02-02T01:35:36.584Z","4.1.26":"2021-02-02T01:39:06.109Z","4.1.27-renovate-non-major-e145e8117fd7b274044b0cb0ce900482556a9714":"2021-02-02T01:43:59.516Z","4.1.27":"2021-02-02T01:47:21.076Z","4.1.28-renovate-non-major-ad2546c05ea57490aaf8c8fe501eada1f412e657":"2021-02-02T02:52:32.155Z","4.1.28":"2021-02-02T02:55:41.081Z","4.1.29-renovate-non-major-13ae7ba0ff3db655c257aa969d5a8daa7a8e76cc":"2021-02-02T04:18:05.066Z","4.1.29":"2021-02-02T05:54:50.378Z","4.1.30-renovate-balena-jellyfish-logger-1-x-c67ea5bf2baea7879fdc41046bfad01f5def2842":"2021-02-03T03:37:25.463Z","4.1.30-renovate-non-major-5356496e1d890ad56ef939a0a6a77b7159b67c27":"2021-02-03T05:11:32.922Z","4.1.30":"2021-02-03T05:14:32.227Z","4.1.31-renovate-balena-jellyfish-logger-1-x-18097af27fae32f34d5caff965ebf6b90a4a7e57":"2021-02-03T05:18:09.347Z","4.1.31":"2021-02-04T03:01:58.590Z","4.1.32-renovate-non-major-973d46ce7a10f8187bfd0670d71415d16ac824cf":"2021-02-04T07:56:42.808Z","4.1.32":"2021-02-04T07:59:37.049Z","4.1.33-renovate-non-major-64be709e53b6a1b24cb18353272a7b0822a5613a":"2021-02-04T17:54:18.803Z","4.1.33":"2021-02-04T17:57:53.443Z","4.1.34-renovate-npm-version-2ac15e2c68cf56414252d83925f13c5f4ef7e0c2":"2021-02-05T05:13:27.219Z","4.1.34":"2021-02-05T05:16:54.274Z","4.1.34-renovate-non-major-abb704dbe55560949aa4cf3647e105956637cfaa":"2021-02-05T05:20:15.665Z","4.1.35-renovate-non-major-d9bf0628ad4244afcde6b3c9b7a982bc65a8b2fe":"2021-02-05T06:44:09.481Z","4.1.35":"2021-02-05T06:47:40.596Z","4.1.36-renovate-non-major-884f05d6e6437705050c113c7a5f45d19866e247":"2021-02-05T17:24:30.806Z","4.1.36":"2021-02-05T17:29:07.326Z","4.1.37-renovate-non-major-38ce267d85553d3247f8a418efcc8861dacf38a9":"2021-02-05T19:04:38.068Z","4.1.37":"2021-02-05T19:08:09.755Z","4.1.38-renovate-non-major-62fd3224a12974b1b7412986dbf4ddc62ae52980":"2021-02-06T08:24:13.305Z","4.1.38":"2021-02-06T09:37:42.275Z","4.1.39-use-shared-renovate-config-560d9ebe5ddfa63383221d7c9ef05e75809fa647":"2021-02-06T10:10:27.903Z","4.1.39":"2021-02-06T10:13:39.016Z","4.1.40-renovate-non-major-bb883b0b1e7278f4f1b54042c4fc190ee33022b9":"2021-02-06T10:18:51.732Z","4.1.40":"2021-02-06T10:22:14.517Z","4.1.41-renovate-non-major-3faf20da0b73af21a714bd5a214cadbccf6f4918":"2021-02-06T11:07:52.276Z","4.1.41":"2021-02-06T11:11:10.007Z","4.1.42-renovate-non-major-39b51979809229d41bdabe74d63b3260e3e52019":"2021-02-07T09:01:26.023Z","4.1.42":"2021-02-07T09:24:20.761Z","4.1.43-renovate-non-major-790b95499ebcbc16b58217e639a4878e6637b7f5":"2021-02-07T10:41:24.508Z","4.1.43":"2021-02-07T10:44:30.257Z","4.1.44-renovate-non-major-592520fef958979069a63c93e0f587551a6cedfe":"2021-02-07T11:10:52.839Z","4.1.44":"2021-02-07T11:13:38.525Z","4.1.45-renovate-non-major-9d14d3a1ebd53d6c1741579856b8118f825f6123":"2021-02-07T12:23:59.103Z","4.1.45":"2021-02-07T12:26:59.796Z","4.1.46-renovate-marked-2-x-1f1cb2d400fa215f75f12ded39a4e5496802feb3":"2021-02-07T23:08:04.094Z","4.1.46-renovate-non-major-0fbfc8b1698b343cfc83f4e80d72d1f2da6f1bb0":"2021-02-08T18:40:36.865Z","4.1.46":"2021-02-08T18:44:02.889Z","4.1.47-renovate-marked-2-x-d5731085edd9aa489a29b7b24f921c6f65a8354f":"2021-02-08T18:46:34.135Z","4.1.47-renovate-non-major-a0b665b866ee88a590eaf3da8db1f9df3c5aa281":"2021-02-08T20:05:26.324Z","4.1.47":"2021-02-08T21:05:14.421Z","4.1.48-renovate-marked-2-x-cb3df193de51a8a1e68f734e788d45ccec62b812":"2021-02-08T21:07:59.616Z","4.1.48-renovate-npm-marked-vulnerability-b1aeb25b7da3a5d394aed961a973afefac546dbc":"2021-02-08T22:44:43.384Z","4.1.48-renovate-non-major-0dbce9865d11c7d48bd6cf6067dcb709d8651016":"2021-02-09T01:10:53.019Z","4.1.48":"2021-02-09T01:14:01.983Z","4.1.49-renovate-npm-marked-vulnerability-7e4f9f5655a4d496f18a52cd2986b50d0aa71ba9":"2021-02-09T01:17:18.735Z","4.1.49-renovate-non-major-35fbe1646ec968b8e9a947f0f75e0954305f17b9":"2021-02-09T02:32:20.770Z","4.1.49":"2021-02-09T02:36:15.284Z","4.1.50-renovate-npm-marked-vulnerability-3424ab8d849f2f96a56787835cc8d380b5505ddb":"2021-02-09T02:38:58.128Z","4.1.50-drop-marked-dependency-35ff092ac7529aa198277abdde75c32ff0c40398":"2021-02-10T04:14:24.541Z","4.1.50":"2021-02-10T06:16:39.209Z","4.2.0-add-exception-to-context-418ed6461e79713a81923395af53e2b94e3f4c83":"2021-02-10T09:37:01.878Z","4.2.0":"2021-02-10T09:42:46.364Z","4.2.1-patch-by-id-on-upsert-288d31985c50d242f24ac9913be6264b62857bec":"2021-02-10T11:50:00.596Z","4.2.1-patch-by-id-on-upsert-2fa04ba90f7f16b76edd941e4543ce264eaf64e3":"2021-02-10T18:21:22.709Z","4.2.1":"2021-02-10T18:36:35.135Z","4.2.2-renovate-non-major-bc90f3a351640cca6cde6303aee48554e3fd5ca8":"2021-02-11T08:58:41.936Z","4.2.2-renovate-non-major-80d63b745d6eaadccf85c6df55d03ef3b252f23d":"2021-02-11T09:04:16.530Z","4.2.2":"2021-02-11T09:07:32.818Z","4.2.3-renovate-non-major-77fbbd1e8863d5091db8b5b4819e5b4e275d78dd":"2021-02-11T14:08:37.486Z","4.2.3":"2021-02-11T14:12:00.991Z","4.2.4-renovate-non-major-f2ff87749b205fcc7017b6a9ea3c0b210133d655":"2021-02-13T01:03:15.606Z","4.2.4":"2021-02-13T01:06:20.350Z","4.2.5-renovate-non-major-a601866da35a73a3ef525fe66cb12e9e4aed2f23":"2021-02-13T05:03:46.909Z","4.2.5":"2021-02-13T05:06:49.635Z","4.2.6-renovate-non-major-9096c26006e42608df51b94474c75928682c1a38":"2021-02-13T07:20:22.046Z","4.2.6":"2021-02-13T07:23:56.113Z","4.2.7-renovate-eslint-plugin-jsdoc-32-x-04a75535d4c3276be1a0e6bf1a8d3c15a49d41d8":"2021-02-15T05:26:42.973Z","4.2.7":"2021-02-15T05:43:01.234Z","4.2.8-renovate-non-major-b63fbba573b3cccbae26d670526a149b95a1ece4":"2021-02-15T05:49:11.880Z","4.2.8-renovate-non-major-7bbc107858f92ad35490063598ed09efb414fa1a":"2021-02-15T05:54:38.074Z","4.2.8":"2021-02-15T05:57:52.483Z","4.2.9-renovate-non-major-b198f41d6d7f806a95d3b962f29f938f21468867":"2021-02-15T06:01:12.925Z","4.2.9":"2021-02-15T06:06:53.831Z","4.2.10-renovate-non-major-cc95c91dd1575c85a6d49818b78ea0b44d153dde":"2021-02-15T07:59:54.317Z","4.2.10":"2021-02-15T08:02:44.472Z","4.2.11-renovate-non-major-f5f5438b165cbe1bfc1398d615034e2e5510c962":"2021-02-15T10:26:57.642Z","4.2.11":"2021-02-15T10:29:41.193Z","4.2.12-renovate-non-major-24ab9188d02e948edd054355c1cffb4d2f038050":"2021-02-15T13:27:20.837Z","4.2.12":"2021-02-15T13:30:21.054Z","4.2.13-renovate-non-major-f7edfeeea2f8481ade5b246af174000cd2bdee42":"2021-02-16T06:06:55.873Z","4.2.13":"2021-02-16T06:09:49.478Z","4.2.14-renovate-non-major-19c5db2c9bb59148dd64bad7fe389d5ec2a7a457":"2021-02-16T08:35:14.484Z","4.2.14":"2021-02-16T08:38:19.987Z","4.2.15-renovate-non-major-9b540752f86f12be31895baba5affb0065dc74f4":"2021-02-16T11:45:42.657Z","4.2.15":"2021-02-16T11:48:20.283Z","4.2.16-renovate-non-major-ef8777893b247c753dd303707cf6a5e70decfc27":"2021-02-16T13:07:46.261Z","4.2.16":"2021-02-16T13:11:07.084Z","4.2.17-renovate-non-major-7eb8aab3d0765d4c6e50eaafd13153368531fbf8":"2021-02-16T16:35:05.098Z","4.2.17-renovate-non-major-81549da44b2e8c8fbff581537c673068fc4f4aeb":"2021-02-16T19:53:46.815Z","4.2.17":"2021-02-16T19:58:30.524Z","4.2.18-renovate-non-major-0f66dae3f7033ab522a363e2cd31c3a9189f4f97":"2021-02-17T02:58:04.426Z","4.2.18":"2021-02-17T03:01:11.846Z","4.2.19-renovate-non-major-9bdd93b24fc029962e0a9ee1c2e053746b4273da":"2021-02-17T05:20:20.047Z","4.2.19":"2021-02-17T05:23:15.426Z","5.0.0-valid-event-contexty-7302e1d143475410a7dc40698f7a7e51646b062d":"2021-02-17T13:21:33.925Z","5.0.0":"2021-02-17T13:27:57.184Z","5.0.1-renovate-non-major-9de4c728bf9aa2fd5c17316d096ae430811eeed6":"2021-02-18T08:54:10.695Z","5.0.1":"2021-02-18T08:57:16.657Z","5.0.2-renovate-non-major-4c1a331f207453c2302c4e1b6980a86317cd9183":"2021-02-18T13:12:31.498Z","5.0.2":"2021-02-18T13:16:15.742Z","5.0.3-renovate-non-major-2f79be137b46ceac8da975241f735a70799a3dae":"2021-02-20T09:27:55.454Z","5.0.3":"2021-02-20T09:31:18.361Z","5.0.4-add-changelog-yml-c378a5ec9beb2c227f151a76433b1b14c6d13aee":"2021-02-20T09:55:29.904Z","5.0.4":"2021-02-20T09:59:14.487Z","5.0.5-renovate-non-major-da6cf15edce3bb2b25adc3bf144f10584dc0560b":"2021-02-20T11:07:41.350Z","5.0.5":"2021-02-20T11:10:42.361Z","5.0.6-renovate-non-major-454227751e05cf9b7463e4142f5f18ba2617dfaa":"2021-02-20T16:10:58.727Z","5.0.6":"2021-02-20T16:13:51.122Z","5.0.7-renovate-non-major-b39adf7027bc07b38a2263500e362c69c5473bc2":"2021-02-20T17:41:19.806Z","5.0.7":"2021-02-20T17:44:11.493Z","5.0.8-renovate-non-major-50b34fd4a0051072a87727f62f56fbaba89f52aa":"2021-02-20T18:40:53.311Z","5.0.8":"2021-02-20T18:44:05.010Z","5.0.9-renovate-non-major-a66bee22a6170b448cb5fa0a39aac950101a4a50":"2021-02-21T03:48:42.284Z","5.0.9":"2021-02-21T03:51:50.042Z","5.0.10-renovate-non-major-eb6c84f87e1f9a4149741a1f16ba20cd5ac5b89e":"2021-02-21T05:28:40.181Z","5.0.10":"2021-02-21T05:32:17.561Z","5.0.11-renovate-non-major-1bb2d83527a3ff20e0c614f7e969bcc8e277a477":"2021-02-21T22:52:52.411Z","5.0.11":"2021-02-21T22:55:51.266Z","5.0.12-renovate-non-major-f398fbfa7820d86503b5758e0dc71986f4fa3240":"2021-02-22T01:30:26.846Z","5.0.12":"2021-02-22T01:33:23.950Z","5.0.13-renovate-non-major-6ddd96cb3524ad4facc859a0201256efb0eb44da":"2021-02-22T18:20:39.476Z","5.0.13":"2021-02-22T18:23:43.350Z","5.0.14-renovate-non-major-7c596ca55efac1d70df71c5d5605b17ba9848bf1":"2021-02-22T20:45:17.040Z","5.0.14":"2021-02-22T20:48:23.860Z","5.0.15-renovate-non-major-3224bc81ceb227b2ed5e987381fa0dba8170a493":"2021-02-23T02:52:17.764Z","5.0.15":"2021-02-23T02:55:21.619Z","5.0.16-renovate-non-major-74bc77323100398015e7b36d98118cb0bfe7ca9e":"2021-02-23T05:18:11.029Z","5.0.16":"2021-02-23T05:21:23.198Z","5.0.17-renovate-non-major-07227dc57142bf9507cbf1087cd2700f9c0e3aa3":"2021-02-23T10:23:35.092Z","5.0.17":"2021-02-23T10:27:36.467Z","5.0.18-renovate-non-major-81e9d0ad5a769e7e6b5282e87f3a0eaf6af31d7f":"2021-02-23T10:32:25.080Z","5.0.18":"2021-02-23T10:35:47.982Z","5.0.19-renovate-non-major-0863ed5f6b1f130e8c7a67cc053dee7c3097d2e6":"2021-02-23T12:35:47.221Z","5.0.19":"2021-02-23T12:39:16.395Z","5.0.20-renovate-non-major-049ee28082485afe93cec5a6f85ac9470df07c4b":"2021-02-23T14:35:13.284Z","5.0.20":"2021-02-23T14:38:14.799Z","5.0.21-renovate-non-major-ceb5209975c1fc88626af5f2019f2d2746f8d4d5":"2021-02-23T17:05:27.788Z","5.0.21":"2021-02-23T17:08:22.592Z","5.0.22-renovate-non-major-851ace2c20e9b36c07ad3782525b3445c0968d9a":"2021-02-25T02:29:42.412Z","5.0.22":"2021-02-25T02:32:32.660Z","5.0.23-renovate-non-major-933dd8fec8edc9386aa3c61741a17e83c7f5bf5a":"2021-02-26T10:42:02.544Z","5.0.23":"2021-02-26T10:45:28.757Z","5.0.24-renovate-non-major-2812a1797af19522d75dd432dc226060aa9cc115":"2021-02-26T12:21:51.653Z","5.0.24":"2021-02-26T12:25:27.876Z","5.0.25-renovate-non-major-5608e4e209335e9dbda2ee1fb2f5b09432c335ee":"2021-02-26T14:37:41.181Z","5.0.25":"2021-02-26T14:40:53.994Z","5.0.26-renovate-jsdoc-to-markdown-7-x-499cefbc628e084074eb003e12393c1dc3efe0f0":"2021-02-26T23:35:51.036Z","5.0.26-renovate-non-major-86795eac4063b82f7993c3a81a6daff38bfa7f62":"2021-02-27T03:49:55.607Z","5.0.26":"2021-02-27T03:53:15.064Z","5.0.27-renovate-jsdoc-to-markdown-7-x-4c412a0981eb6e6d9ff9b5f753900b7658aecd4f":"2021-02-27T03:55:46.162Z","5.0.27-renovate-non-major-9b080ce162a7b3f9c9da0889f6b428e1dffe6314":"2021-02-28T00:34:24.662Z","5.0.27":"2021-02-28T00:37:41.790Z","5.0.28-renovate-jsdoc-to-markdown-7-x-a7ced594b479b0f126e03a53d979671f0b7e69b0":"2021-02-28T00:40:49.220Z","5.0.28-renovate-non-major-ca3d3a2f047bd840769a1ba4ae0eca303ddae3ed":"2021-02-28T02:22:56.080Z","5.0.28":"2021-02-28T02:26:31.224Z","5.0.29-renovate-jsdoc-to-markdown-7-x-9824757f19f311c4e85599f5455f4034596016dc":"2021-02-28T02:29:31.119Z","5.0.29":"2021-02-28T04:01:40.438Z","5.0.29-renovate-non-major-1a8932f4eb2eb9daccd6ba7fe28483676f7c4933":"2021-02-28T04:04:29.188Z","5.0.30-renovate-non-major-baf628af4cde4a8eb55bd8bb195a5d33ab3f0dd1":"2021-02-28T04:07:19.283Z","5.0.30-renovate-non-major-09b8fe896d5b4b3502165c47991204e3252e0c07":"2021-02-28T04:10:02.298Z","5.0.30":"2021-02-28T04:13:35.376Z","5.0.31-renovate-non-major-82bc0824305848c4833b7a621f6289cd91ecc86a":"2021-02-28T08:04:56.644Z","5.0.31":"2021-02-28T08:08:21.799Z","5.0.32-renovate-non-major-c7c9906abfaacaa43d7c75720da41e37bd3a4681":"2021-03-01T02:51:04.362Z","5.0.32":"2021-03-01T02:54:00.694Z","5.0.33-renovate-non-major-42f954a054d3489fa7b59d5b952d16039d7447fb":"2021-03-01T04:51:38.466Z","5.0.33":"2021-03-01T04:54:55.518Z","5.0.34-renovate-non-major-970512aea7c38178a30add742b397917ba8befab":"2021-03-01T19:33:19.339Z","5.0.34":"2021-03-01T19:36:34.518Z","5.0.35-renovate-non-major-d4d146ea4cafc5ecdb5bffcc14bf8ebaf3d05eef":"2021-03-02T03:44:56.703Z","5.0.35":"2021-03-02T03:47:44.499Z","5.0.36-renovate-non-major-c0ace5bcc56d6f223dab0308e6a38aaf4eefd6cc":"2021-03-02T05:23:22.200Z","5.0.36":"2021-03-02T05:26:07.880Z","5.0.37-renovate-non-major-a76c90408242bf4e541f153ba8848d50287bff6f":"2021-03-02T22:00:43.469Z","5.0.37":"2021-03-02T22:03:50.219Z","5.0.38-renovate-non-major-829677fdbfc758beb64f1a57dee91624ea904a3c":"2021-03-07T22:24:18.686Z","5.0.38":"2021-03-07T22:28:07.987Z","5.1.0-sync-upsertelement-jsonpatch-2c8f4332cd8af3851252eb7542704fa8acb20d11":"2021-03-09T09:25:41.486Z","5.1.0-sync-upsertelement-jsonpatch-720691c0ea68d25677b6162ee16cbdbd4fa7a5f4":"2021-03-09T09:29:57.294Z","5.1.0":"2021-03-09T09:40:34.343Z","5.2.0-pipeline-importcards-jsonpatch-4966443b29c634ccd134eb2f48bf8cbb384a8160":"2021-03-09T10:37:57.250Z","5.2.0-pipeline-importcards-jsonpatch-386f3cb7248ad0b9956d17bd3fac54947f0bbcaf":"2021-03-09T14:45:27.170Z","5.2.0-pipeline-importcards-jsonpatch-27488abdbcdd22506bf84bfa4433c579ba7924e7":"2021-03-09T14:57:58.427Z","5.2.0":"2021-03-09T17:23:19.578Z","5.2.1-renovate-non-major-c28d2392fbc9a51dc647dcc33d8881b6ecbef909":"2021-03-10T08:56:23.421Z","5.2.1":"2021-03-10T08:59:32.157Z","5.2.2-renovate-non-major-66cae02c9c33f71276110628962cdfd9792c3c3f":"2021-03-10T10:42:42.513Z","5.2.2":"2021-03-10T10:45:39.588Z","5.2.3-renovate-non-major-5af607f799004b73ae3393531139c353e6272e91":"2021-03-11T01:26:24.874Z","5.2.3":"2021-03-11T01:30:10.748Z","5.2.4-renovate-non-major-6f903120c92c601104164f9014e8de68cd32da67":"2021-03-11T03:15:32.393Z","5.2.4":"2021-03-11T03:18:41.826Z","5.2.5-renovate-non-major-44913853f00bb2d465f959af95cdf42d958c3c8d":"2021-03-11T11:51:15.742Z","5.2.5":"2021-03-11T11:54:55.447Z","5.2.6-renovate-non-major-9c637e67b5c9bca78c53f45f8c9cfc2aba8524f8":"2021-03-11T14:44:08.621Z","5.2.6":"2021-03-11T14:48:29.639Z","5.2.7-renovate-non-major-5f487e92b6754cf882c819a364fbbb7786608224":"2021-03-12T02:30:07.818Z","5.2.7":"2021-03-12T02:34:23.815Z","5.2.8-renovate-non-major-fc306ce08d8b7b55b9732a9896d983c218438e4c":"2021-03-12T21:50:22.624Z","5.2.8":"2021-03-12T21:53:21.126Z","5.2.9-renovate-non-major-a86edbd35c061a341d30e10e36f5cdd7641fd496":"2021-03-13T01:31:21.154Z","5.2.9":"2021-03-13T01:34:07.879Z","5.2.10-renovate-non-major-85402c21474719b7c62380b9a5e626b85073e7dd":"2021-03-13T04:22:25.009Z","5.2.10":"2021-03-13T04:25:16.891Z","5.2.11-renovate-non-major-836dd13ade8592dec5f73effb3514b8d62c33671":"2021-03-15T11:49:57.050Z","5.2.11":"2021-03-15T11:52:58.918Z","5.2.12-renovate-non-major-5e89f915d329e9359919241426fb66d07ee1d9b6":"2021-03-15T14:08:52.560Z","5.2.12":"2021-03-15T14:11:44.117Z","5.2.13-renovate-non-major-93b7ef1c4946c7655d77c36bf0076bb2abbc5dd7":"2021-03-15T18:10:23.983Z","5.2.13":"2021-03-15T18:13:26.628Z","5.2.14-renovate-non-major-37e784f0096eb63c0579f932f09ba770357fa4b1":"2021-03-18T02:03:22.946Z","5.2.14":"2021-03-18T02:08:47.584Z","5.2.15-renovate-non-major-9b6d2ac33423be7acde19b8a4fd0af2e9c9eddd0":"2021-03-18T03:18:33.146Z","5.2.15":"2021-03-18T03:21:34.998Z","5.2.16-renovate-non-major-dc6458a2987542583a06f5fc5c8cf2df30f009dd":"2021-03-18T05:42:57.095Z","5.2.16":"2021-03-18T05:46:19.776Z","5.2.17-renovate-non-major-eeaf2ffc48b82f6a578cf786f83f2ea04884041c":"2021-03-19T21:33:06.561Z","5.2.17":"2021-03-19T21:36:19.776Z","5.2.18-renovate-non-major-251d3b4c8605d10c89e79677e2377615866d3623":"2021-03-21T21:14:12.264Z","5.2.18":"2021-03-21T21:17:24.360Z","5.2.19-renovate-non-major-49a59fd20cab333dbdcb7996e70809deda5802bc":"2021-03-21T23:28:55.434Z","5.2.19":"2021-03-21T23:31:58.505Z","5.2.20-renovate-non-major-aafbfec66ef6b159fc1bf67c3b95270b7ba1d7a2":"2021-03-22T01:34:47.953Z","5.2.20":"2021-03-22T01:38:39.356Z","5.2.21-renovate-non-major-5dfc2a46e6fa223093d598cb2fef4b8bfc8007fc":"2021-03-22T03:44:34.907Z","5.2.21":"2021-03-22T03:47:19.641Z","5.2.22-renovate-non-major-39968adf6727716af3855ba7ee9360d4d882db6a":"2021-03-22T05:44:33.836Z","5.2.22":"2021-03-22T05:47:48.761Z","5.2.23-renovate-non-major-d2b508cb622974cdf5cfe78d25138b03b0ec9f2a":"2021-03-22T10:25:11.640Z","5.2.23":"2021-03-22T10:28:40.287Z","5.2.24-renovate-non-major-558dce59257ea91bdb8e60818d0337c465b89f4b":"2021-03-22T12:32:47.909Z","5.2.24-renovate-non-major-f6e0b2db588636f1a6a93955e89b71b0a491beb1":"2021-03-22T14:36:03.326Z","5.2.24":"2021-03-22T14:39:58.871Z","5.2.25-renovate-balena-jellyfish-logger-2-x-ffb39afeb9a2069566e3d7255e8eaa39b805977c":"2021-03-22T19:10:55.895Z","5.2.25-renovate-sinon-10-x-e7bdd23a58eafc824e27a7ceee7292e968c5c9fd":"2021-03-22T19:11:17.370Z","5.2.25-renovate-balena-jellyfish-logger-2-x-06f6c884353b5e3812bdd0c32ed3f4357c82bdd6":"2021-03-23T03:18:19.792Z","5.2.25-renovate-balena-jellyfish-logger-2-x-8ee342acd5d8d115870d4c59d57c7a694821acd9":"2021-03-24T03:21:07.365Z","5.2.25-renovate-balena-jellyfish-logger-2-x-bf86703469163d25740e18015d668012b19eea42":"2021-03-24T05:46:16.288Z","5.2.25-renovate-balena-jellyfish-logger-2-x-413cf6cc383828d941cc8ff2068b3f8d0d4f372c":"2021-03-24T10:58:30.638Z","5.2.25-renovate-balena-jellyfish-metrics-1-x-237b73daa56c824dc5b0e92200903d77ced8b328":"2021-03-24T10:59:48.353Z","5.2.25-renovate-balena-jellyfish-metrics-1-x-b99e1fbbb231a8aa739a96a0840c40b28d6a3d9b":"2021-03-24T13:09:01.740Z","5.2.25-renovate-non-major-851587a520c019275cb927c2560db55a566c3c29":"2021-03-25T03:16:12.855Z","5.2.25-renovate-balena-jellyfish-logger-2-x-fcf2d8a73e26cfef884915cc76ab68c261c85b59":"2021-03-25T03:16:53.025Z","5.2.25-renovate-balena-jellyfish-metrics-1-x-c1bd69f9fa9ea40b5306159c5bc08be6f1b52830":"2021-03-25T03:17:20.873Z","5.2.25":"2021-03-25T03:19:38.073Z","5.2.26-renovate-balena-jellyfish-logger-2-x-113fcddfef813e7f69cc0c2b6c0535d0d59f2c2b":"2021-03-25T03:23:49.245Z","5.2.26-renovate-balena-jellyfish-metrics-1-x-e79c5501d9e2e3d3ca5fe43b2915e8397b3d42de":"2021-03-25T03:27:21.087Z","5.2.26-renovate-sinon-10-x-c014107d46effeab26788d6e63d4270b73185423":"2021-03-25T03:27:33.710Z","5.2.26-renovate-non-major-296c646edb452423e6fb4c1b213df8f56b27c58f":"2021-03-25T05:59:24.456Z","5.2.26-renovate-balena-jellyfish-logger-2-x-fc22d5f6a574991b52d7c8177a963bcb93a907b3":"2021-03-25T06:00:21.722Z","5.2.26":"2021-03-25T06:03:36.716Z","5.2.27-renovate-balena-jellyfish-logger-2-x-eb887284fffc8f1bd9c1f4136292e1c920e5ba45":"2021-03-25T06:07:07.741Z","5.2.27-renovate-sinon-10-x-a62ff9595ea9e2dfb172d25017480735d22b4b6e":"2021-03-25T06:12:35.729Z","5.2.27-renovate-balena-jellyfish-logger-2-x-acec48107ff5d4fd966c95a3cc4eaba914661694":"2021-03-25T11:41:23.272Z","5.2.27-renovate-balena-jellyfish-metrics-1-x-56f111ea563c359dd60ff93122f2e7ba7761836f":"2021-03-25T11:42:11.257Z","5.2.27-renovate-balena-jellyfish-metrics-1-x-79f7915735a51caeea73c4c33f1d5af3a3befd8f":"2021-03-25T14:17:35.108Z","5.2.27-renovate-non-major-9e7eeb9c68ede66e86f8037bc8f7e870df6f9299":"2021-03-25T19:04:26.559Z","5.2.27-renovate-balena-jellyfish-logger-2-x-acdc8ffbc38e28d1545a9ff8c3e65c54cdfe9b6f":"2021-03-25T19:04:54.410Z","5.2.27":"2021-03-25T19:07:37.490Z","5.2.27-renovate-balena-jellyfish-metrics-1-x-8276ea11248799ce7abe87375433382509c0225d":"2021-03-25T19:09:39.327Z","5.2.28-renovate-balena-jellyfish-logger-2-x-58870dcba38af0b1231b54a57458d05a13e9b121":"2021-03-25T19:10:44.417Z","5.2.28-renovate-balena-jellyfish-metrics-1-x-a4a3ef3c90e10171a1081e56426ce3a7615171f6":"2021-03-25T19:12:49.688Z","5.2.27-renovate-sinon-10-x-6ed07a7a16a56529884061f79908b3d8f4918bb6":"2021-03-25T19:13:16.299Z","5.2.28-renovate-sinon-10-x-35a4e299d48b917b9f535fcb25a6e3bfbcba0420":"2021-03-25T19:16:09.873Z","5.2.28-renovate-balena-jellyfish-metrics-1-x-4cb5073a2133ce90bf8ad296e842174d87015650":"2021-03-25T22:23:49.429Z","5.2.28-renovate-balena-jellyfish-metrics-1-x-65889d153a479bad23aae94dfb0606f4fec381cb":"2021-03-26T03:46:49.552Z","5.2.28-replace-husky-196ac2962e62f446c9ed9645ad445ae26f23947a":"2021-03-26T07:16:24.461Z","5.2.28":"2021-03-26T07:19:41.143Z","5.2.29-renovate-balena-jellyfish-logger-2-x-ab5344b213b0dbd9ee8212a89d464ffe6c37d086":"2021-03-26T07:27:40.668Z","5.2.29-renovate-balena-jellyfish-metrics-1-x-b7b02c0c84c46cac2a8efce0026bb05cd6e15f6e":"2021-03-26T07:29:18.336Z","5.2.29-renovate-sinon-10-x-5b529e8a4f81f54c62e12ee4efba425d1591985f":"2021-03-26T07:30:01.563Z","6.0.0-convert-to-typescript-bfeccdaad8d69a961297039960133769f96ce228":"2021-03-26T11:33:33.260Z","6.0.0-convert-to-typescript-171d6d6d8ca0d3bd5c167686ca2d46a7aedec27a":"2021-03-26T11:40:28.341Z","6.0.0-convert-to-typescript-3b79677e1720f5dfcc800e7e089d6dfdb1032fda":"2021-03-26T12:19:50.134Z","5.2.29-renovate-balena-jellyfish-metrics-1-x-e41cec8e8c6aed4cb92b8f74826f77de246a4926":"2021-03-26T15:13:26.895Z","5.2.29-renovate-non-major-65d46992f4d292c8e4599b74840050bb8d672043":"2021-03-26T21:42:50.716Z","5.2.29":"2021-03-26T21:45:51.983Z","5.2.29-renovate-balena-jellyfish-logger-2-x-9b6369b6861f70ee185790dde8a84cab063eef12":"2021-03-26T21:48:55.039Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-3d672792eede1ea923c67f975a427c2b09302bf6":"2021-03-26T21:50:21.584Z","5.2.29-renovate-sinon-10-x-b05ef89d31a96c49edb487dc5bbdd772152523ba":"2021-03-26T21:50:37.202Z","5.2.30-renovate-balena-jellyfish-logger-2-x-dbafb04c07f009cd982a918790a87551ea2723d7":"2021-03-26T21:53:10.675Z","5.2.30-renovate-sinon-10-x-b93546d67b32c649a21b151daccd23d64d7040a4":"2021-03-26T21:55:04.852Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-727b3b53162f23fa6613da81a59dc2d7c5bf4a8c":"2021-03-27T01:16:09.533Z","6.0.0-convert-to-typescript-386435b5e8cd1ad66c04129deb401d31a6706035":"2021-03-29T07:25:45.448Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-95ec932d3095c58e43f435be86a541bfa069c62a":"2021-03-29T07:57:18.446Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-1f571427f48dc1cabbdbebc211455a4b11268b9b":"2021-03-30T02:49:08.685Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-4266004bd4223762b7e38649647d5a6a598a5721":"2021-03-30T09:42:23.613Z","5.2.30-renovate-balena-jellyfish-logger-2-x-596a1a2eecd53193189ceeea333aa990776b567c":"2021-03-30T11:29:25.228Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-60ff7bdb332ca04ca7e4a484cce8e1b555593fa4":"2021-03-30T13:28:48.975Z","5.2.30-renovate-balena-jellyfish-logger-2-x-549f095053de69d85dd1837e27962a22fc550301":"2021-03-30T13:33:16.679Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-739592a5df81a186f53dc84d518798559758e85e":"2021-03-30T15:04:58.473Z","5.2.30-renovate-non-major-1e9faa766026c0f038f8ed519610ef4b294db5b6":"2021-03-31T01:14:58.758Z","5.2.30-renovate-balena-jellyfish-logger-2-x-e26453b275bfdd12ec835382eb1581e26344cdc9":"2021-03-31T01:15:35.487Z","5.2.30-renovate-balena-jellyfish-metrics-1-x-6bbd8a592eac424d17e7a6bd10060276bbc2726e":"2021-03-31T01:17:24.978Z","5.2.30":"2021-03-31T01:20:04.238Z","5.2.31-renovate-balena-jellyfish-logger-2-x-db22741453e18ba7b5273bd9f24c3553f78de2b9":"2021-03-31T01:22:46.706Z","5.2.30-renovate-sinon-10-x-57de55fb8fbd8454e260a20af144f58f7206211a":"2021-03-31T01:24:00.034Z","5.2.31-renovate-sinon-10-x-658a0f25566cf3c3d53e1d22dd00d1c39e31ef31":"2021-03-31T01:26:45.919Z","5.2.31-renovate-balena-jellyfish-metrics-1-x-624a0ae41a7860e00f85d7bb37753766a7a2cb8d":"2021-03-31T06:44:40.806Z","5.2.31":"2021-03-31T06:55:32.189Z","5.2.32-renovate-non-major-b6bb5d59b19e3763644d6a7cc8f15ee67472bfdf":"2021-03-31T06:59:40.685Z","5.2.32-renovate-balena-jellyfish-logger-2-x-5db8f384221991f6d2d93e8d6776f829510eb61b":"2021-03-31T07:00:08.464Z","5.2.31-renovate-sinon-10-x-6fbc437bb2cb9160788f62931f971eced0ee41a2":"2021-03-31T07:00:30.161Z","5.2.32-renovate-sinon-10-x-c9f2a46c1c76f31166c6e28ce4bff4408ec1d5ad":"2021-03-31T07:04:12.839Z","5.2.32-renovate-non-major-44d261ac92d2b1d253b876478f8eb907a3525a28":"2021-03-31T08:23:00.759Z","5.2.32":"2021-03-31T08:26:03.184Z","5.2.33-renovate-sinon-10-x-16bb8f730dc103194df918d75623b5924c159a5a":"2021-03-31T08:30:26.845Z","5.2.33-renovate-balena-jellyfish-logger-2-x-2853617d48d764ccb60ef518c8bd41c24ebaffec":"2021-03-31T08:33:14.110Z","5.2.33-renovate-non-major-bfe7a22b1c62ad01103914ee1ea9faf056414aa2":"2021-03-31T10:07:20.573Z","5.2.33-renovate-balena-jellyfish-logger-2-x-e5276455936a2603bca7a3a254307f919a1f3332":"2021-03-31T10:07:58.696Z","5.2.33":"2021-03-31T10:10:53.787Z","5.2.34-renovate-sinon-10-x-8cdd428e67c047461376649e82dbb71a5239a2d2":"2021-03-31T10:17:12.235Z","5.2.34":"2021-04-01T00:57:55.268Z","5.2.35-renovate-balena-jellyfish-logger-2-x-fbb31f03b63d49ca133ae10951b0151de7ab0cc6":"2021-04-01T01:01:42.171Z","5.2.35":"2021-04-01T01:45:59.742Z","5.2.36-renovate-non-major-8c630125046981870524429a5f781926e48de54f":"2021-04-01T03:30:10.456Z","5.2.36":"2021-04-01T03:33:42.133Z","5.2.37-renovate-non-major-55528916ed2b1ddb75812194930255470918586e":"2021-04-01T13:59:03.587Z","5.2.37":"2021-04-01T14:02:16.992Z","5.2.38-renovate-non-major-836ab49b1f27e944de8ef0fa3ba5dfa1c4deeef7":"2021-04-01T14:44:06.952Z","5.2.38":"2021-04-01T14:48:31.812Z","5.2.39-renovate-non-major-65a31aa10bba8dd60bdeab1f3bcbc25d288dc461":"2021-04-02T00:22:24.361Z","5.2.39":"2021-04-02T00:25:28.604Z","5.2.40-renovate-non-major-0c2f648f714de42f5acf6854dc71e2e08084fcba":"2021-04-02T03:19:12.353Z","5.2.40":"2021-04-02T03:24:11.675Z","5.2.41-renovate-non-major-5d335065a9fde44851b10d2413aa1e8fe269070c":"2021-04-02T16:30:33.060Z","5.2.41":"2021-04-02T16:33:39.397Z","5.2.42-renovate-non-major-c44bf93c701b55f085ba07b2fe3272a1f892b943":"2021-04-02T17:58:23.113Z","5.2.42":"2021-04-02T18:01:24.356Z","5.2.43-renovate-non-major-d2de487193c8c97123d1abf92ef0081e7d2d2d4b":"2021-04-02T20:10:35.060Z","5.2.43":"2021-04-02T20:13:40.035Z","5.2.44-renovate-non-major-58fa35406e9a33c7782aac71cbf5a277bb34780a":"2021-04-02T21:52:58.794Z","5.2.44":"2021-04-02T21:57:17.905Z","5.2.45-renovate-non-major-a851237d16940c5f35d47e9e7eb22fbdbdb1afbe":"2021-04-02T23:25:06.973Z","5.2.45":"2021-04-02T23:28:19.300Z","5.2.46-renovate-non-major-b7bbab1079b860199af102ef515de733c7f60d41":"2021-04-03T00:45:29.772Z","5.2.46":"2021-04-03T00:48:38.937Z","5.2.47-renovate-non-major-731583920435c74d394747c38bec7497a5e6c331":"2021-04-03T02:15:01.207Z","5.2.47":"2021-04-03T02:18:17.717Z","5.2.48-renovate-non-major-1f3b0c6456315dc7e33b9103e3a66f66d06eb2a8":"2021-04-04T01:23:17.804Z","5.2.48":"2021-04-04T01:26:25.302Z","5.2.49-renovate-non-major-54b2f075a91137a51bf4a9695d7f56dde2c6929e":"2021-04-04T02:56:54.485Z","5.2.49":"2021-04-04T03:00:23.238Z","5.2.50-renovate-non-major-091ddc53154250e70df0fbbd0bd3e9a2db648ef7":"2021-04-04T04:08:58.524Z","5.2.50":"2021-04-04T04:12:05.936Z","5.2.51-renovate-non-major-fc44f347a2719b7dff842504a1b9a7005a17d702":"2021-04-04T08:01:11.985Z","5.2.51":"2021-04-04T08:04:48.348Z","5.2.52-renovate-non-major-ca6eb85ed13e01ecb3fc11341d86c5472ca8fa99":"2021-04-04T10:02:17.050Z","5.2.52":"2021-04-04T10:06:12.061Z","5.2.53-renovate-non-major-d409a94dbfa02e1a30a49f0bb462adcac9d4dd2f":"2021-04-05T01:36:29.912Z","5.2.53":"2021-04-05T01:39:36.636Z","5.2.54-renovate-non-major-f7a439bc3d5be26a2cd63b8fd4bc39bc00b7f70b":"2021-04-06T13:19:26.315Z","5.2.54":"2021-04-06T13:24:22.200Z","5.2.55-renovate-non-major-f5153b58c4af5f8ac046765fcf924e17c8437423":"2021-04-06T15:00:38.197Z","5.2.55":"2021-04-06T15:05:02.216Z","6.0.0-convert-to-typescript-e9e73f63bda8db937d3901199ecdf3d47bacb0bd":"2021-04-06T15:16:19.530Z","5.2.56-renovate-non-major-b359e0a395e7b4ddbc5383bc088012d5001e96a4":"2021-04-06T17:50:13.439Z","5.2.56":"2021-04-06T17:54:18.464Z","5.2.57-renovate-non-major-16e86acb8dfb64ce367316c52633bccf0121d7b2":"2021-04-06T21:10:30.136Z","5.2.57":"2021-04-06T21:13:53.169Z","5.2.58-renovate-non-major-3431343fd0a1d7a56eff3b24e2ee2558c6bd6584":"2021-04-06T23:01:20.546Z","5.2.58":"2021-04-06T23:04:25.209Z","5.2.59-renovate-non-major-8e69ec6043dc0bc04eee2f62d8215bb2edf0262f":"2021-04-06T23:10:19.418Z","5.2.59":"2021-04-06T23:13:13.965Z","5.2.60-renovate-non-major-5eded006bf0afcf602746b68c0196fa8b508b77a":"2021-04-07T03:13:07.740Z","5.2.60":"2021-04-07T03:18:10.827Z","5.2.61-renovate-non-major-4113cd984b2ca478b18a79fb14722b59ff8b2611":"2021-04-07T21:03:26.832Z","5.2.61":"2021-04-07T21:06:52.469Z","5.2.62-renovate-non-major-8afdb856fa51469c73deaa7f05ceba66fec46c66":"2021-04-07T22:27:16.275Z","5.2.62":"2021-04-07T22:30:13.189Z","5.2.63-renovate-non-major-d2a7f655e48e4d8758bf9ed2f473ccee02139516":"2021-04-08T08:51:34.958Z","5.2.63":"2021-04-08T08:55:36.656Z","5.2.64-renovate-non-major-17669c45058300830f386c682adc3c77844f768d":"2021-04-09T22:51:04.660Z","5.2.64":"2021-04-09T22:54:02.837Z","5.2.65-renovate-eslint-plugin-promise-5-x-f431ee2b334887dcb5d58ba64b6e8f36eab5230e":"2021-04-09T22:57:19.902Z","5.2.65-renovate-eslint-plugin-promise-5-x-6eaf4b52c12faf152d8538e3ac641aeb48cd856d":"2021-04-10T00:04:53.955Z","5.2.65":"2021-04-10T00:08:07.561Z","5.2.66-renovate-non-major-b457acc083f7777a0a221897885fbc2a3d780f76":"2021-04-10T01:52:27.792Z","5.2.66":"2021-04-10T01:55:19.638Z","5.2.67-renovate-non-major-0118fc2c0feced0278ecffd87e5e1ef82fa6b70d":"2021-04-10T11:07:17.915Z","5.2.67":"2021-04-10T11:10:47.457Z","5.2.68-renovate-non-major-6cadd419ca2cbf62cedaf5875fff1d2abb677e8c":"2021-04-10T16:17:57.255Z","5.2.68":"2021-04-10T16:21:15.274Z","5.2.69-renovate-non-major-53f4dabdcf92f7969e69c067fd4925d20945b3ff":"2021-04-10T21:02:26.120Z","5.2.69":"2021-04-10T21:06:47.635Z","5.2.70-renovate-non-major-1ac8c9a4f7b9ecc25a2a5d321f371b18cac1221a":"2021-04-10T22:10:26.144Z","5.2.70":"2021-04-10T22:14:52.957Z","5.2.71-renovate-non-major-0e28b1a87ad1efd43f8381e376af43a751e34082":"2021-04-11T01:13:46.948Z","5.2.71":"2021-04-11T01:16:45.892Z","5.2.72-renovate-non-major-135d1981b48389be9380483e6f3f6ddabe50a393":"2021-04-11T03:27:59.128Z","5.2.72":"2021-04-11T03:30:59.461Z","5.2.73-renovate-non-major-b7e477c984d2b8cbfa2e4fa702db8ac396cfbbf2":"2021-04-11T05:13:58.628Z","5.2.73":"2021-04-11T05:18:11.835Z","5.2.74-renovate-non-major-ef47380c4788e576800bb3bcb24e6fc40b23a487":"2021-04-11T09:54:53.092Z","5.2.74":"2021-04-11T09:58:17.134Z","5.2.75-renovate-non-major-f0794066ec1e49711ecdad5e802db75d738f6e73":"2021-04-11T14:28:43.813Z","5.2.75":"2021-04-11T14:33:00.830Z","5.2.76-renovate-non-major-962fc740cbd64d96bff9e19e62143bc510913a3d":"2021-04-11T16:02:54.559Z","5.2.76":"2021-04-11T16:06:03.582Z","5.2.77-renovate-non-major-731d9141d0bc85fea0467ab8653ff85ad59abc5b":"2021-04-11T19:36:33.785Z","5.2.77":"2021-04-11T19:40:03.338Z","5.2.78-renovate-non-major-5295dc85a067c5966c2774feb391d2986dbcf466":"2021-04-12T00:07:43.140Z","5.2.78":"2021-04-12T00:16:30.935Z","5.2.79-renovate-non-major-96e9e126a48c5dc62005f5a00b851e19fea0c50e":"2021-04-12T04:58:00.934Z","5.2.79":"2021-04-12T05:01:12.134Z","5.2.80-renovate-non-major-4db1f8ea2054401a9345230034b0d0098a98e746":"2021-04-12T08:10:51.442Z","5.2.80":"2021-04-12T08:13:55.634Z","5.2.81-renovate-non-major-734c354421d7781a03bb14db95f07323b130988c":"2021-04-12T10:13:23.271Z","5.2.81":"2021-04-12T10:16:35.044Z","5.2.82-renovate-non-major-9bda3bfe37f21d12c308f77809b29e02eb2b2f95":"2021-04-12T17:21:39.016Z","5.2.82":"2021-04-12T17:25:45.174Z","5.2.83-renovate-non-major-066954795d004106e3922a3142a8e4dd00d131f2":"2021-04-12T19:45:58.076Z","5.2.83":"2021-04-12T19:52:40.539Z","5.2.84-renovate-non-major-ed97567961010376499f7fd2a94bdcb72c29a673":"2021-04-12T21:14:20.690Z","5.2.84":"2021-04-12T21:17:59.056Z","5.2.85-renovate-non-major-243098f0191da04902a0ab572b045864a7bf7b4d":"2021-04-12T23:15:10.851Z","5.2.85":"2021-04-12T23:18:13.979Z","5.2.86-renovate-non-major-7eff2936cd2fbaeefdaf21be30b6d31443735d41":"2021-04-13T08:21:47.917Z","5.2.86":"2021-04-13T08:24:51.347Z","5.2.87-renovate-non-major-251a61b6d8d56ff78d4753ae89a73254fba9eec3":"2021-04-13T10:26:15.455Z","5.2.87":"2021-04-13T10:29:36.720Z","5.2.88-renovate-non-major-724f48a8d1134b3f5e5f00a2f2e9d610b5885ab4":"2021-04-14T01:38:12.833Z","5.2.88":"2021-04-14T01:41:26.024Z","5.2.89-renovate-non-major-53f75d2254a8c9a2de16a846acc2ea665a8776ad":"2021-04-14T03:43:30.607Z","5.2.89":"2021-04-14T03:46:22.803Z","5.2.90-renovate-non-major-4b15009f880659de424ef64e68261edc5bcd49b9":"2021-04-14T05:52:06.071Z","5.2.90":"2021-04-14T05:56:22.197Z","5.2.91-renovate-non-major-78f02aecd6e3a650aac7033166faa88835a43dfe":"2021-04-14T08:56:04.999Z","5.2.91":"2021-04-14T08:59:14.311Z","5.2.92-renovate-non-major-bd8c1931266d30cc5a606a087d2f08f043f83714":"2021-04-14T12:04:47.976Z","5.2.92":"2021-04-14T12:08:58.868Z","5.2.93-renovate-non-major-4fef19ec67e5129eeadd1e1182288edeb7081fad":"2021-04-14T14:47:08.538Z","5.2.93":"2021-04-14T14:52:39.514Z","5.2.94-renovate-non-major-b6e8d2662464588f27d743c2d802dae6fcb0bc9e":"2021-04-14T19:23:46.677Z","5.2.94":"2021-04-14T19:27:59.557Z","5.2.95-renovate-non-major-e4ef17939a18ad287ae06ab66f3ba4714a2c02f4":"2021-04-14T21:13:38.381Z","5.2.95":"2021-04-14T21:17:00.063Z","5.2.96-renovate-non-major-705b3db17f587dfb75c32b04fa8e2bb2d40187ca":"2021-04-15T00:00:36.271Z","5.2.96":"2021-04-15T00:04:41.486Z","5.2.97-renovate-non-major-9dcc5021ab002a3c031cd9929cb89d1fab45890d":"2021-04-15T01:27:35.993Z","5.2.97":"2021-04-15T01:31:06.638Z","5.2.98-renovate-non-major-47dfc5501872440fea5fd06c787ed0dfdcb0f04c":"2021-04-15T04:06:11.759Z","5.2.98":"2021-04-15T04:09:51.566Z","5.2.99-renovate-non-major-43adcf925f6c0a139e6875d9893c5ce043e2908b":"2021-04-15T05:49:15.745Z","5.2.99":"2021-04-15T05:52:47.985Z","6.0.0-convert-to-typescript-9fbde8ba5ea9a31528e540504e7a5fb0b021bedb":"2021-04-15T09:15:53.712Z","6.0.0":"2021-04-15T09:35:30.774Z","6.0.1-renovate-non-major-999bfa1199d3813b4c0e6923270c41cb82f0da95":"2021-04-15T09:39:44.945Z","6.0.1-renovate-sinon-10-x-2b792f18575e773143a557aa20f6cb9eedced7f5":"2021-04-15T09:40:29.271Z","6.0.1":"2021-04-15T09:44:39.992Z","6.0.2-renovate-sinon-10-x-605ee699aa254da8f281572b337615b532cd1d57":"2021-04-15T09:48:24.294Z","6.0.2-renovate-non-major-cdf2ace9299fc97e73b8047fc11b6a176d019e2f":"2021-04-15T11:29:56.924Z","6.0.2":"2021-04-15T11:34:06.994Z","6.0.3-renovate-sinon-10-x-c7ffc720c9bbf2e5f95a1bb4c65d1855bf0d1868":"2021-04-15T11:38:04.856Z","6.0.3-renovate-non-major-666d9e407e68c8de661e6ce0daa38727e437c2fc":"2021-04-15T14:07:58.112Z","6.0.3":"2021-04-15T14:12:38.610Z","6.0.4-renovate-non-major-882d3a40ea05a9c1177376baf34163d84470d502":"2021-04-15T17:23:28.897Z","6.0.4":"2021-04-15T17:26:31.942Z","6.0.5-renovate-sinon-10-x-4ab5f56cada0ea5e78c42632e31172225bb46971":"2021-04-15T17:31:02.666Z","6.0.5-renovate-non-major-b0606f8facddb9935ef3b385fbcfcd5a807c6631":"2021-04-15T19:17:10.278Z","6.0.5":"2021-04-15T19:20:36.363Z","6.0.6-renovate-sinon-10-x-0c5b238f381444b908d270e9bf36d8b022f2b851":"2021-04-15T19:25:35.617Z","6.0.6-renovate-non-major-92ba8c87d8366fad8907503895ff5430aa18d11a":"2021-04-15T21:22:05.160Z","6.0.6":"2021-04-15T21:26:04.471Z","6.0.7-renovate-sinon-10-x-482c812d71356b6a69c03c61e4495799fc2f75a9":"2021-04-15T21:33:23.599Z","6.0.7-renovate-non-major-14bc81aad8891708563bdcf9235244105808dbf0":"2021-04-15T23:37:28.317Z","6.0.7":"2021-04-15T23:41:12.312Z","6.0.8-renovate-sinon-10-x-1ed728c70a51d7f212bdb1944db8ec7313e9023c":"2021-04-15T23:48:46.142Z","6.0.8-renovate-non-major-33403a2ac79e9a0341a26216f50edae98b360af8":"2021-04-16T01:50:31.933Z","6.0.8":"2021-04-16T01:53:43.168Z","6.0.9-renovate-sinon-10-x-f3af3efaacf241384714f696b9b747da9ef431d9":"2021-04-16T01:58:24.413Z","6.0.9-renovate-non-major-ad460afd49527a2280839ec967eaf14f8b59fa0b":"2021-04-16T03:13:12.267Z","6.0.9":"2021-04-16T03:17:24.055Z","6.0.10-renovate-sinon-10-x-e6e2884687b5f59a7a0feaf3983cd5840ff11e30":"2021-04-16T03:24:53.287Z","6.0.10-renovate-non-major-e4a60c7c0bd29d7216c5e0feb5682f61f01f065c":"2021-04-16T06:05:37.750Z","6.0.10":"2021-04-16T06:10:14.374Z","6.0.11-renovate-sinon-10-x-c13a40774138a016baf66fbe6ecaad11c3a1ec9a":"2021-04-16T06:15:58.735Z","6.0.11-renovate-non-major-bc34a6eabfd4894df9ec31475def4427323b0d38":"2021-04-16T10:48:59.017Z","6.0.11":"2021-04-16T10:53:17.706Z","6.0.12-renovate-sinon-10-x-dd14d4b739253edc27797754b2227b7f1430de2e":"2021-04-16T11:00:25.661Z","6.0.12-renovate-non-major-c019c62aaea50447a6bcb4e603a358bbd9ab5751":"2021-04-16T13:24:05.384Z","6.0.12":"2021-04-16T13:29:13.842Z","6.0.13-renovate-sinon-10-x-f530624859b3f8742679e34c7aa86d4119e91742":"2021-04-16T13:35:37.899Z","6.0.13-renovate-non-major-3668b187528e2b5931863aa403bdac141aaddcde":"2021-04-16T15:52:03.489Z","6.0.13":"2021-04-16T15:55:49.798Z","6.0.13-renovate-sinon-10-x-8b50577116dff1c4185e9a0cdb78fe5151477b47":"2021-04-16T15:59:09.481Z","6.0.14-renovate-sinon-10-x-2db8c0fbbb90bc3560149fd44ca8aac26a2e2b18":"2021-04-16T16:01:46.436Z","6.0.14-fix-metrics-import-0775f707f478f3d995eaac9d00cfaf37e86c88e9":"2021-04-16T16:32:35.298Z","6.0.14-fix-metrics-import-a7379c2ea3fb1d2344b1319744ae1b1677daa42b":"2021-04-16T18:17:18.695Z","6.0.14-renovate-non-major-3fb7bb94f0c33f8645e190228a96c80753e3f83f":"2021-04-16T18:32:32.513Z","6.0.14":"2021-04-16T18:36:22.899Z","6.0.15-renovate-non-major-5f6b2bc2739f2965d3445b3ac26fe2e0772bf035":"2021-04-16T18:41:25.214Z","6.0.15-renovate-sinon-10-x-1f21b4757b863fcc87d479077eab42099e98b6f9":"2021-04-16T18:41:59.853Z","6.0.15":"2021-04-16T18:46:10.893Z","6.0.15-renovate-sinon-10-x-0b50ff81dbbc38f77d0ff4fa407358077ef5e131":"2021-04-16T18:49:45.088Z","6.0.16-renovate-sinon-10-x-dee4cb180296d3499b044e2e55d545b8564c76cb":"2021-04-16T18:52:44.644Z","6.0.16-fix-metrics-import-98617e61001269d0384741eb65eaefc4271dcecf":"2021-04-16T19:36:59.868Z","6.0.16":"2021-04-16T19:40:29.308Z","6.0.17-renovate-sinon-10-x-186a81d26bbe171df561fe67b4b164dce89114b8":"2021-04-16T19:46:22.530Z","6.0.17-renovate-non-major-06034b06b1f6274ec91b17a8e1c6c81ed4a89aeb":"2021-04-16T22:09:41.608Z","6.0.17":"2021-04-16T22:13:01.504Z","6.0.18-renovate-sinon-10-x-e2d46d4e1912c74ee830378bb676306596349a31":"2021-04-16T22:17:16.164Z","6.0.18-renovate-non-major-7c7aaa08730b96fb661e3a520bee8ccefcda7ad6":"2021-04-17T03:52:47.492Z","6.0.18":"2021-04-17T03:56:41.453Z","6.0.19-renovate-sinon-10-x-13a1382c5703b3ce44ff3f1365a068058b618f49":"2021-04-17T04:00:41.817Z","6.0.19-renovate-non-major-e224d7a4b6dc66808b39174ef0750e6dd122e1dc":"2021-04-17T06:11:14.246Z","6.0.19":"2021-04-17T06:14:20.988Z","6.0.20-renovate-sinon-10-x-33f72f6fce589a91e22353c5f94f5e132ef2961e":"2021-04-17T06:18:33.534Z","6.0.20-renovate-non-major-c4720e7b2e35f4df844c0596c38990ad1e13f7f3":"2021-04-17T10:49:51.611Z","6.0.20":"2021-04-17T10:53:30.105Z","6.0.21-renovate-sinon-10-x-8fe56656a47514fe11422d8fbb2286aa586aeb7d":"2021-04-17T10:56:57.208Z","6.0.21-renovate-non-major-bc47424f5e884ba16d8ab448cfc58a07310f087d":"2021-04-17T12:31:02.150Z","6.0.21-renovate-non-major-31d0e825b5830ffae3c31467bb5eee8f4c3207db":"2021-04-17T16:30:23.861Z","6.0.21":"2021-04-17T16:34:15.807Z","6.0.22-renovate-sinon-10-x-162792295837c7cfc477557c6b9e2ed31965dd2a":"2021-04-17T16:38:49.222Z","6.0.22-renovate-non-major-9e072ddfc327d51ddae0ca8b3b4255b9f55a13f2":"2021-04-17T18:45:13.576Z","6.0.22":"2021-04-17T18:50:01.114Z","6.0.23-renovate-sinon-10-x-f8194b7b1802abfed08b0b8c0de6a82bf12ac40e":"2021-04-17T18:52:31.401Z","6.0.23-renovate-non-major-de00dd340862f83fb388fdfe5553fe9caba67b36":"2021-04-17T20:33:36.822Z","6.0.23":"2021-04-17T20:37:02.486Z","6.0.23-renovate-sinon-10-x-3fd71e43c2fa21855784f87ac83d44a474d2f85e":"2021-04-17T20:40:45.933Z","6.0.24-renovate-non-major-b4406332d178cd60e906e783b13c5d333725a679":"2021-04-17T20:43:03.417Z","6.0.24-renovate-sinon-10-x-364f984fd20e8fb487a94279e95d404b2c961ccc":"2021-04-17T20:44:28.924Z","6.0.24":"2021-04-17T20:46:47.116Z","6.0.25-renovate-sinon-10-x-0168f695bd5d7ab402b77f2ac5a4a0f0bafc517b":"2021-04-17T20:49:29.962Z","6.0.25-renovate-non-major-8217ba051e29d110504504f6f4867327f5a523ee":"2021-04-17T22:25:27.353Z","6.0.25":"2021-04-17T22:28:43.960Z","6.0.26-renovate-sinon-10-x-18495281941c70188d4784d5bbe267ef2876a0ba":"2021-04-17T22:33:01.125Z","6.0.26-renovate-non-major-19211077bff4399c7c2010e08239f9aea4868dd2":"2021-04-18T01:11:15.284Z","6.0.26":"2021-04-18T01:14:44.416Z","6.0.27-renovate-sinon-10-x-9cdb61519f0bc0b1632974baaccb6d288f8e9cbe":"2021-04-18T01:18:19.697Z","6.0.27-renovate-non-major-61cbde309a0eb93f8ea5645e9a0b0bc1b07b66a6":"2021-04-18T03:29:20.983Z","6.0.27":"2021-04-18T03:33:14.894Z","6.0.28-renovate-sinon-10-x-483292d13b87b0fa84b30fbe612aa3568b97d625":"2021-04-18T03:36:13.594Z","6.0.28":"2021-04-18T10:33:55.177Z","6.0.29-renovate-non-major-49c01ae9fd0d7997394bdf0a0f1fcebdab1d4be9":"2021-04-18T13:17:13.132Z","6.0.29":"2021-04-18T13:22:24.849Z","6.0.30-renovate-non-major-75ca8d28411d8b475775748f93bc24eecacfb48d":"2021-04-18T16:05:35.639Z","6.0.30":"2021-04-18T16:08:48.964Z","6.0.31-renovate-non-major-ac2ff799f2b4c66745d8ede8d15a3938c86a3568":"2021-04-18T18:34:21.845Z","6.0.31":"2021-04-18T18:38:34.377Z","6.0.32-renovate-non-major-0abda976b8ad1a957a375bb0131bc9ccd0b5bbdd":"2021-04-19T00:24:23.681Z","6.0.32":"2021-04-19T00:28:19.211Z","6.0.33-renovate-non-major-7f15451191ea569cdd0acb5c6c6f06cfcac8b92a":"2021-04-19T05:07:48.119Z","6.0.33":"2021-04-19T05:11:19.696Z","6.0.34-renovate-non-major-c6db21903e0a55669abf6ebb12e10f8aef9bcde5":"2021-04-19T12:44:57.503Z","6.0.34":"2021-04-19T12:48:51.580Z","6.0.35-renovate-non-major-7e69eaf224e691fecd2958a892cc55cf516799c6":"2021-04-19T23:33:46.042Z","6.0.35":"2021-04-19T23:37:13.505Z","6.0.36-renovate-non-major-d5ce866610cbfc0e0eff6cb88be3a2f1ff76da03":"2021-04-20T02:05:58.685Z","6.0.36":"2021-04-20T02:12:46.010Z","6.0.37-renovate-non-major-7936a3257fee48bcd99fcbadbd5a89aef0ff16ab":"2021-04-20T04:07:55.597Z","6.0.37":"2021-04-20T04:13:46.341Z","6.0.38-renovate-non-major-ce432746f5e788a971ce77d53cd4dcb099318a8a":"2021-04-20T10:40:40.514Z","6.0.38":"2021-04-20T10:50:44.138Z","6.0.39-renovate-non-major-4211242a0e5e8227e54ae55cddb9141564fd3af2":"2021-04-20T13:32:16.768Z","6.0.39":"2021-04-20T13:45:14.284Z","6.0.40-renovate-non-major-f262c0e460c6f8e29a84120808c6310bd9d21be0":"2021-04-20T20:14:20.555Z","6.0.40":"2021-04-20T20:18:15.159Z","6.0.41-renovate-non-major-db13f61d1b6ef1cbafc0d6346b2dfdf09451b67b":"2021-04-21T09:22:43.450Z","6.0.41":"2021-04-21T09:26:53.435Z","6.0.42-renovate-non-major-dfbfac879afec2768a5190c551984f97a1f695a5":"2021-04-21T11:53:44.529Z","6.0.42":"2021-04-21T11:57:51.310Z","6.0.43-renovate-non-major-f5c5e8f6f6c9114ceb3ea026d7e40fd2aa986036":"2021-04-21T13:09:51.669Z","6.0.43":"2021-04-21T13:14:32.407Z","6.0.44-renovate-non-major-8bd83754c44f0f4151e7d01b9fccb63b8e8fe609":"2021-04-21T15:25:00.636Z","6.0.44":"2021-04-21T15:29:15.543Z","6.0.45-renovate-non-major-670a68fe20ed79cee4b945a135749ff5f216392f":"2021-04-21T17:46:21.498Z","6.0.45":"2021-04-21T17:50:06.043Z","6.0.46-renovate-non-major-b26732c0dbf21a78fd4e34d4a664b4bccc42f3f2":"2021-04-21T19:37:26.664Z","6.0.46":"2021-04-21T19:41:30.311Z","6.0.47-renovate-non-major-13371f00861fe57a1c7ad65c29448731e141b569":"2021-04-21T21:29:41.764Z","6.0.47":"2021-04-21T21:36:55.617Z","6.0.48-renovate-non-major-a9a565973bf74d16bd717482256a016f7775033c":"2021-04-21T23:55:54.238Z","6.0.48":"2021-04-21T23:59:46.089Z","6.0.49-renovate-non-major-45c43f645b1be7811aedb240d83586bf534affbf":"2021-04-23T01:47:18.380Z","6.0.49":"2021-04-23T01:51:57.622Z","6.0.50-renovate-non-major-ebcc879c60cbe4d05ab201cfef55eaeab06416b6":"2021-04-23T04:12:06.483Z","6.0.50":"2021-04-23T04:16:58.597Z","6.0.51-renovate-non-major-139f0477c933c783ec8455704349b2471fefd698":"2021-04-23T09:23:55.971Z","6.0.51":"2021-04-23T09:28:14.409Z","6.0.52-renovate-non-major-b85445771a5bb11f8212350f13e1792b1bb926f8":"2021-04-23T11:58:09.855Z","6.0.52":"2021-04-23T12:02:04.279Z","6.0.53-renovate-non-major-75230c190e786270f1f4cd7769f2641b3cab369a":"2021-04-23T12:08:41.405Z","6.0.53":"2021-04-23T12:12:48.849Z","6.0.54-renovate-non-major-b6c7d40f023cf9263eef08dbc179b85d1a64b62f":"2021-04-23T18:32:05.976Z","6.0.54":"2021-04-23T18:35:27.952Z","6.0.55-renovate-non-major-b26f46d041984f03a0ad33335d5f67b98ed440cf":"2021-04-24T01:08:31.139Z","6.0.55":"2021-04-24T01:17:26.510Z","6.0.55-renovate-non-major-bf4351001861468c54855c310ecb4df9d759da99":"2021-04-24T01:18:25.376Z","6.0.56-renovate-non-major-af9e482a2fab4e979f2a76b650e1e0cdf2281dc3":"2021-04-24T01:27:27.580Z","6.0.56":"2021-04-24T01:31:28.102Z","6.0.57-renovate-non-major-7f93f8ccd76724a2191b95ce4d246bfad89b6fd2":"2021-04-24T10:00:50.958Z","6.0.57-renovate-non-major-5c371b3b9119c1e145ed6f853134e4e33e2891d2":"2021-04-24T10:29:03.538Z","6.0.57":"2021-04-24T10:32:32.543Z","6.0.58-renovate-non-major-7c724770ba9ff6b10d1540975be184728c9bfb01":"2021-04-24T18:51:33.943Z","6.0.58":"2021-04-24T18:57:23.544Z","6.0.59-renovate-non-major-85c1b9e4cdb2313dff04e4c0553928ee250d3094":"2021-04-25T04:46:53.774Z","6.0.59":"2021-04-25T04:51:00.823Z","6.0.60-renovate-non-major-fa52521588138ccfd9d45bab87e56b46a0d3de88":"2021-04-25T23:11:51.060Z","6.0.60":"2021-04-25T23:15:46.056Z","6.0.61-renovate-non-major-425d570d9ea7d7134b43a11c68e0bc45e7070a4f":"2021-04-26T00:57:45.004Z","6.0.61":"2021-04-26T01:01:47.825Z","6.0.62-renovate-non-major-91f113c0d1a7e1c2c4b5f48a7ad18a34801dbfdc":"2021-04-26T02:18:57.577Z","6.0.62":"2021-04-26T02:22:46.867Z","6.0.63-renovate-non-major-66c6ab58ce16059eb5698887859917759cc5b73f":"2021-04-26T03:53:11.869Z","6.0.63":"2021-04-26T03:57:03.726Z","6.0.64-renovate-non-major-4fcd1dcc766295b52546b794a0ecc912c6f8517b":"2021-04-26T19:03:01.771Z","6.0.64":"2021-04-26T19:06:59.712Z","6.0.65-renovate-non-major-a3cca586bb2d06885329f9378e73f9b6d705199d":"2021-04-26T20:28:28.500Z","6.0.65":"2021-04-26T20:32:06.829Z","6.0.66-renovate-non-major-e6174f3f697e954f24479dc1c26f30bb70e1655e":"2021-04-27T00:32:39.224Z","6.0.66":"2021-04-27T00:36:57.349Z","6.0.67-renovate-non-major-a7589fbea739ea4689489a641e34fbdb1c20785b":"2021-04-27T01:50:00.503Z","6.0.67-renovate-non-major-6f7b52aa82dc5d32c35d4cbecd6ad87771d41c09":"2021-04-27T03:25:11.583Z","6.0.67":"2021-04-27T03:30:30.963Z","6.0.68-renovate-non-major-bb353e5e093659c0069777f9a8f033818c584e38":"2021-04-27T15:29:53.207Z","6.0.68":"2021-04-27T15:33:34.413Z","6.0.69-renovate-non-major-5c9224c325adf9cce5f2d8b5f2b8f8b93a78f4c3":"2021-04-27T15:37:24.513Z","6.0.69":"2021-04-27T15:44:26.584Z","6.0.70-renovate-non-major-d1ce3a93ed0945e4abe5a120fafca8dad548104a":"2021-04-28T13:49:03.532Z","6.0.70":"2021-04-28T13:53:13.128Z","6.0.71-renovate-non-major-ccfd9afd587d5eefaa43b608ae9dbd1fd54d171f":"2021-04-29T02:18:53.311Z","6.0.71":"2021-04-29T02:23:13.406Z","6.0.72-renovate-non-major-a20e0240fbb356577c60e136c6771e66b484481a":"2021-04-29T03:24:33.773Z","6.0.72":"2021-04-29T03:28:36.033Z","6.0.73-renovate-non-major-7d46f72915720267a8e8a775c0d533d5c5396e1d":"2021-04-29T04:47:13.992Z","6.0.73":"2021-04-29T04:51:24.733Z","6.0.74-renovate-non-major-69b21d5bedbcab4deec1b2820e415d350489fa40":"2021-04-29T09:01:17.802Z","6.0.74":"2021-04-29T09:10:27.968Z","6.0.75-renovate-non-major-211ff775d5d91fcd26ba3a538077bc91d4025ec8":"2021-04-29T10:01:55.286Z","6.0.75":"2021-04-29T10:05:33.192Z","6.0.76-renovate-non-major-93aba996fad1e0a849671587ad16f9a4f5d21b24":"2021-04-29T10:10:29.191Z","6.0.76-renovate-non-major-262cd0a2675cd20ee207c55a13af4b20d8c62c42":"2021-04-29T11:58:38.174Z","6.0.76":"2021-04-29T12:02:11.535Z","6.0.77-renovate-non-major-ecaa3adcb36f106703f7795ddfcdb090e5c06329":"2021-04-29T14:31:52.868Z","6.0.77":"2021-04-29T14:36:57.086Z","6.0.78-renovate-non-major-b00b476484a351bc0485d8d7ea5d876800737a4b":"2021-04-29T16:18:30.117Z","6.0.78":"2021-04-29T16:22:50.762Z","6.0.79-renovate-non-major-ca04523dce267c704cb22512b232d84bc11fa121":"2021-04-29T16:29:43.144Z","6.0.79":"2021-04-29T16:35:02.963Z","6.0.80-renovate-non-major-a7855cf9973379d037f7a9bc7420d29dd356a0cc":"2021-04-29T17:54:11.359Z","6.0.80":"2021-04-29T17:58:12.892Z","6.0.81-renovate-non-major-1d4a26149e2cc6819857da70212003d2da174cb6":"2021-04-29T19:11:30.050Z","6.0.81":"2021-04-29T19:14:38.511Z","6.0.82-renovate-non-major-854c5226e28fb34b04757b167afe9cc9f1e1bcea":"2021-04-29T21:17:00.550Z","6.0.82":"2021-04-29T21:21:25.367Z","6.0.83-renovate-non-major-c4f0e616e649d802eb790fca10482638ca04b302":"2021-04-30T01:04:48.035Z","6.0.83":"2021-04-30T01:08:20.413Z","6.0.84-renovate-non-major-cd53940df99c2924df400c9c1ad44c273df8c350":"2021-04-30T02:02:44.529Z","6.0.84":"2021-04-30T02:06:10.619Z","6.0.85-renovate-non-major-e0049cb394bcd21dc8181a1201ba21aea360c744":"2021-04-30T03:23:55.458Z","6.0.85":"2021-04-30T03:27:12.464Z","6.0.86-renovate-non-major-d68a95e955ecf84681d59b1e1cae400becdcfbbc":"2021-04-30T05:22:09.851Z","6.0.86-renovate-non-major-4bfd580c5fe1dc647f0889423f0f760adfb4979f":"2021-04-30T05:27:36.459Z","6.0.86":"2021-04-30T05:31:57.742Z","6.0.87-renovate-non-major-cff4558c7efc6e410be60893f94fd73ef085fc29":"2021-04-30T16:50:56.097Z","6.0.87":"2021-04-30T16:55:03.501Z","6.0.88-renovate-non-major-0d1fe867bb24f79ba1d2ec674b6d48e729632e76":"2021-04-30T18:34:08.314Z","6.0.88":"2021-04-30T18:39:45.985Z","6.0.89-renovate-non-major-3449c659c981aae1b2987c7acd4888d94fe63443":"2021-05-01T00:46:25.367Z","6.0.89":"2021-05-01T00:49:52.135Z","6.0.90-renovate-non-major-bed6e57c7fece33726b542b63df2b088fbbc0c66":"2021-05-01T03:14:31.079Z","6.0.90":"2021-05-01T03:17:59.101Z","6.0.91-renovate-non-major-f5df843499644e8c2dc1e2225834f319f4e63469":"2021-05-01T05:48:47.500Z","6.0.91":"2021-05-01T05:52:42.967Z","6.0.92-renovate-non-major-a9a9a477f1c368c4922b098b51029b7d1247f950":"2021-05-01T09:16:06.874Z","6.0.92":"2021-05-01T09:19:42.454Z","6.0.93-renovate-non-major-770889efa6f6b4a8671d2cb5d4a46f1f908f4f42":"2021-05-01T11:45:31.447Z","6.0.93":"2021-05-01T11:49:21.887Z","6.0.94-renovate-non-major-27da05678ea0350ceb138e2eb92614126ff7b1f9":"2021-05-01T13:17:14.367Z","6.0.94":"2021-05-01T13:21:18.416Z","6.0.95-renovate-non-major-badf14e1b8c06d3a67774c0955fc7112d42cf9e2":"2021-05-01T16:27:32.895Z","6.0.95":"2021-05-01T16:31:15.020Z","6.0.96-renovate-non-major-23086986bc4e3d6c73c439f910fd2f5fdb40f3c4":"2021-05-01T17:32:48.927Z","6.0.96":"2021-05-01T17:36:12.148Z","6.0.97-renovate-non-major-85fe3556dfcc5d1b460fc99bf6b2e7780bfc70e8":"2021-05-02T01:07:44.825Z","6.0.97":"2021-05-02T01:12:15.226Z","6.0.98-renovate-non-major-c96c770e5a1f2ac80994886141777e884059ec7e":"2021-05-02T03:21:37.991Z","6.0.98":"2021-05-02T03:25:38.101Z","6.0.99-renovate-non-major-5d9852c76a22aba078930721d433ac87b32834d7":"2021-05-02T05:18:14.714Z","6.0.99":"2021-05-02T05:21:22.107Z","6.0.100-renovate-non-major-659e868757a7c9c3662914e672a4b0c7dc24ff33":"2021-05-02T08:02:15.919Z","6.0.100":"2021-05-02T08:07:25.282Z","6.0.101-renovate-non-major-2fa7b2df799b6037ac2877f48afe1404b373178c":"2021-05-03T01:56:05.434Z","6.0.101":"2021-05-03T02:02:45.347Z","6.0.102-renovate-non-major-dd4a599b44cc27c3911aa007f99bb0c19b799f00":"2021-05-03T03:51:09.233Z","6.0.102":"2021-05-03T03:54:57.216Z","6.0.103-renovate-non-major-a80f81ad55ce4169ad584121d1a1f9b5ad3c6263":"2021-05-03T05:38:10.914Z","6.0.103":"2021-05-03T05:42:39.208Z","6.0.104-renovate-non-major-1abacf109832b593de9d86bdd73877a90d0129bc":"2021-05-03T08:44:18.599Z","6.0.104":"2021-05-03T08:48:50.223Z","6.0.105-renovate-non-major-f2abcfc5b5035af921a114ada8fea4b78c0c6ef3":"2021-05-03T10:14:34.016Z","6.0.105":"2021-05-03T10:18:53.915Z","6.0.106-renovate-non-major-3ed87c829d9c62fcd765047bed74ba39e16b5cda":"2021-05-03T12:00:32.311Z","6.0.106":"2021-05-03T12:04:05.337Z","6.0.107-renovate-non-major-e8a2ed9e75deeba6e59258a98e1fe2e958e23c15":"2021-05-03T12:09:07.138Z","6.0.107-renovate-non-major-4277b65109f4c8203c83338ab27efcacd933f924":"2021-05-03T13:06:53.831Z","6.0.107":"2021-05-03T13:11:31.777Z","6.0.108-renovate-non-major-0d263697a034cc220b40897f14ab00da8ebcfe44":"2021-05-03T14:18:15.871Z","6.0.108":"2021-05-03T14:22:36.328Z","6.0.109-renovate-non-major-c658f627972b90d4f0eefd883f1882b2eb9cf7c2":"2021-05-03T17:02:04.981Z","6.0.109":"2021-05-03T17:05:56.211Z","6.0.110-renovate-non-major-6d7f521a125cf189753cda08d3d5e285f693c5a9":"2021-05-03T17:58:58.298Z","6.0.110-renovate-non-major-9b136574ba8b5e32be1cd39ad4206af36c26a935":"2021-05-03T18:03:56.810Z","6.0.110":"2021-05-03T18:07:17.018Z","6.0.111-renovate-non-major-cd849164eec4719c63f1503e2f078b8ebec71085":"2021-05-03T20:31:49.743Z","6.0.111":"2021-05-03T20:36:30.815Z","6.0.112-renovate-non-major-766135c7d6dc44d5862c5d019dfd2ba76a96e906":"2021-05-03T22:18:18.984Z","6.0.112":"2021-05-03T22:22:06.990Z","6.0.113-renovate-non-major-4895943966599c4cd1829e8381413c98404d63f3":"2021-05-04T00:33:37.739Z","6.0.113":"2021-05-04T00:37:24.417Z","6.0.114-renovate-non-major-9df1499ccb8818d9f431f937f33ed7b747536ad1":"2021-05-04T01:51:18.914Z","6.0.114":"2021-05-04T01:54:47.894Z","6.0.115-renovate-non-major-0a9d538760b179b69395b8e863584f2841db9a73":"2021-05-04T01:59:46.138Z","6.0.115":"2021-05-04T02:05:35.593Z","6.0.116-renovate-non-major-8cac790f03c9c2b8d06b3415832d8cf56fbae416":"2021-05-04T04:29:01.790Z","6.0.116":"2021-05-04T04:33:03.484Z","6.0.117-renovate-non-major-191252c5cc7c5704021356b5c65496908eb5620c":"2021-05-04T06:30:08.384Z","6.0.117":"2021-05-04T06:33:23.093Z","6.0.118-renovate-non-major-b1a9f1f7804aeadfa31975a1f2bb76077b05fba7":"2021-05-04T07:52:11.884Z","6.0.118":"2021-05-04T07:56:13.338Z","6.0.119-renovate-non-major-aa7c929d54ab49701c3650b639216a6d14c38855":"2021-05-04T09:04:45.960Z","6.0.119":"2021-05-04T09:08:15.201Z","6.0.120-renovate-non-major-b99034813bc73450b132bed93c4c22c573b134c6":"2021-05-04T09:20:37.917Z","6.0.120":"2021-05-04T09:24:10.877Z","6.0.121-renovate-non-major-b58cb5cb857c6d2b1d3f385d9315d1b8a89de786":"2021-05-04T11:14:02.733Z","6.0.121":"2021-05-04T11:18:15.192Z","6.0.122-renovate-non-major-19577c8a8781d1f134e4e1b21cc5be2645482431":"2021-05-04T13:04:30.482Z","6.0.122":"2021-05-04T13:08:38.624Z","6.0.123-renovate-non-major-201eb216dd6b265ebf772548dcb129ea6d0d5cc9":"2021-05-04T16:05:41.925Z","6.0.123":"2021-05-04T16:09:13.373Z","6.0.123-renovate-non-major-50542e713b8c22a02420c055faf2064b9673ce09":"2021-05-04T16:12:56.372Z","6.0.124-renovate-non-major-778ab470d4bf02472c434a20350a2647c01dba23":"2021-05-04T18:24:17.340Z","6.0.124":"2021-05-04T18:28:12.588Z","6.0.125-renovate-non-major-e82a28a35275fc04ece62b7db16b5dfae651221d":"2021-05-04T19:45:58.675Z","6.0.125":"2021-05-04T19:49:46.140Z","6.0.126-renovate-non-major-ae8e356e3dc95bf9c0754ca48ff1a60c164f97d0":"2021-05-04T20:52:41.018Z","6.0.126-renovate-non-major-bd947a2ac85c9cab3b98beacc3a7113fe0618e5f":"2021-05-04T20:59:05.593Z","6.0.126":"2021-05-04T21:02:52.633Z","6.0.127-renovate-non-major-1147d260e9d08ca8587dc5f552b17003e172c840":"2021-05-04T22:23:40.534Z","6.0.127":"2021-05-04T22:27:30.420Z","6.0.128-renovate-non-major-ac5eedeccdd66c50652c182caa0f5608681cea80":"2021-05-04T23:53:19.244Z","6.0.128":"2021-05-04T23:58:36.333Z","6.0.129-renovate-non-major-40f49a786db2a31063b0e510b59493c3b3cecaf6":"2021-05-05T03:39:21.747Z","6.0.129":"2021-05-05T03:42:32.265Z","6.0.130-renovate-non-major-686dc41d988f02d609f7b6399525b821fa1fbfaf":"2021-05-05T05:35:09.409Z","6.0.130":"2021-05-05T05:39:05.936Z","6.0.131-renovate-non-major-e5fe04419e06d3a156b6bdc985ac0c019b5a491b":"2021-05-05T08:27:44.316Z","6.0.131":"2021-05-05T08:31:35.023Z","6.0.132-renovate-non-major-822b005e6eeb40449da3de223c79286adb62d7cc":"2021-05-05T10:05:58.236Z","6.0.132":"2021-05-05T10:09:43.843Z","6.0.133-renovate-non-major-4a7eb0abd9f2cd9024b8ca5404751ce2945e7175":"2021-05-05T14:48:09.636Z","6.0.133":"2021-05-05T14:53:07.738Z","6.0.134-renovate-non-major-fb1eb5d5684298d9e17b2a868d169133d95a0207":"2021-05-05T15:39:58.701Z","6.0.134":"2021-05-05T15:46:32.351Z","6.0.135-renovate-non-major-344e8b78244095dc2475bd2cc3f685288daf9e53":"2021-05-05T15:53:23.839Z","6.0.135-renovate-non-major-f3077755d78c2699483d6f4555357a570e76764e":"2021-05-05T15:58:49.415Z","6.0.135":"2021-05-05T16:02:30.479Z","6.0.136-renovate-non-major-9a8e7b69085e7f9def0e98e106e8c5254d81886c":"2021-05-05T16:07:04.268Z","6.0.136-renovate-non-major-ade57165603812a68022089fa6255664b3544d13":"2021-05-05T17:11:54.160Z","6.0.136":"2021-05-05T17:15:44.024Z","6.0.137-renovate-dotenv-9-x-1adfcd815bf2e75fea25a39be4eeb0de4a35a3b4":"2021-05-05T18:51:20.407Z","6.0.137-renovate-catch-uncommitted-2-x-53c7114f3446502923d18f643e987ebb5c89aa0b":"2021-05-05T20:43:13.393Z","6.0.137":"2021-05-05T23:02:09.050Z","6.0.138-renovate-dotenv-9-x-2aff00563c8612269dd7be3d18acf286673992be":"2021-05-05T23:06:48.661Z","6.0.138-renovate-non-major-d7001f87a3ea29b37588b4b8105e7a31b16cedd7":"2021-05-05T23:16:52.476Z","6.0.138-renovate-non-major-4c6b4807cae854ec9134522dc8db73653ae86df9":"2021-05-05T23:32:13.438Z","6.0.138-renovate-non-major-ec0cd532c8d4e1880addf8764534995c9582e2cd":"2021-05-05T23:38:20.531Z","6.0.138":"2021-05-05T23:42:28.061Z","6.0.139-renovate-dotenv-9-x-0e1fba85c313a0d92469d4fb2a80ee2e52d2c398":"2021-05-05T23:47:12.081Z","6.0.139-renovate-non-major-d166d764e779aae8b6f500efcf465d656283f484":"2021-05-05T23:52:43.634Z","6.0.139":"2021-05-05T23:57:02.341Z","6.0.140-renovate-dotenv-9-x-8706fe008eefc4160cca8d9cc01a5e227860868b":"2021-05-06T00:01:13.925Z","6.0.140":"2021-05-06T23:52:07.137Z","6.0.141-renovate-non-major-96fe4c48512fb87359a8fa606d1435ff54345353":"2021-05-07T13:34:02.245Z","6.0.141":"2021-05-07T13:37:16.058Z","6.0.142-renovate-non-major-843849468d848bd7a323e4f21ccb08657071a979":"2021-05-07T16:20:14.727Z","6.0.142":"2021-05-07T16:23:50.809Z","6.0.143-renovate-lint-staged-11-x-418a407795092cee022425902bcc9bfa47044a7c":"2021-05-07T18:08:35.572Z","6.0.143":"2021-05-08T00:03:44.550Z","6.0.144-renovate-non-major-2222e02d8e18eb928f001a5443e53ac567dc6b20":"2021-05-08T00:30:42.058Z","6.0.144-renovate-non-major-73760c6fc99e640a91f5eee92e3a219a83ead3ee":"2021-05-08T01:45:33.076Z","6.0.144":"2021-05-08T01:49:21.365Z","6.0.145-renovate-non-major-226d44be8b2c6420557f34a3a33f89351251b3d0":"2021-05-08T03:35:14.457Z","6.0.145-renovate-non-major-cbb33721e7c8c95e53ced85449bb0a25b45b72b0":"2021-05-08T03:41:54.947Z","6.0.145":"2021-05-08T03:46:38.073Z","6.0.146-renovate-non-major-e3a0348e788ad43b85eabf12d79ee7c943a7316e":"2021-05-08T05:00:39.865Z","6.0.146":"2021-05-08T05:04:43.083Z","6.0.147-dependabot-npm-and-yarn-hosted-git-info-2-8-9-4c54290162df85b2587c89ef8f1a98c52b79c943":"2021-05-08T07:05:08.981Z","6.0.147":"2021-05-08T07:08:29.553Z","6.0.148-renovate-non-major-f4a99f0a27987cf38069cc7f8a9b82a79944c1b1":"2021-05-08T07:15:18.481Z","6.0.148-renovate-non-major-66b047ee7d0cc90bd070d3a2238c56e7db03b152":"2021-05-08T07:19:54.229Z","6.0.148":"2021-05-08T07:23:37.458Z","6.0.149-renovate-non-major-6c18f2d438541d0d53f0cedb5689e09f6475aae6":"2021-05-08T08:59:41.954Z","6.0.149":"2021-05-08T09:03:13.771Z","6.0.150-renovate-non-major-c4e6228ab926980b69744b67fb7a3323cf74bef0":"2021-05-09T07:57:03.556Z","6.0.150":"2021-05-09T08:00:47.050Z","6.0.151-renovate-non-major-2f68076e36f27c8d28fe6c24768ebf6dcfbd858d":"2021-05-10T07:56:01.963Z","6.0.151":"2021-05-10T08:00:39.308Z","6.0.152-renovate-non-major-5ffe21e162aab13ceeab24572c5a6318e94c16a5":"2021-05-10T12:05:15.481Z","6.0.152":"2021-05-10T12:08:47.985Z","6.0.153-renovate-non-major-da23f3e9a1b3f2af18e3041c12a8bae463c1c591":"2021-05-10T19:20:17.727Z","6.0.153":"2021-05-10T19:24:22.713Z","6.0.154-renovate-non-major-cb0df3296d27d497d566604a13057b0eb878669b":"2021-05-11T08:24:35.892Z","6.0.154":"2021-05-11T08:28:20.482Z","6.0.155-renovate-non-major-f54e9d7730d70757c54659ca206fb4e6100a57d3":"2021-05-11T10:14:22.533Z","6.0.155":"2021-05-11T10:18:27.902Z","6.0.156-renovate-non-major-b3ee53baeb4e332de0494b8f7c86784fe1470f27":"2021-05-12T01:02:52.062Z","6.0.156":"2021-05-12T01:06:47.980Z","6.0.157-renovate-non-major-8e943b45ec496931793f8a7b8ecc93f44776f7a6":"2021-05-12T09:48:56.268Z","6.0.157":"2021-05-12T09:52:37.422Z","6.0.158-renovate-non-major-7309c8359ca8c0e288fe4e52af34578b31bbde0d":"2021-05-12T09:59:08.063Z","6.0.158":"2021-05-12T10:02:52.884Z","6.0.159-renovate-non-major-1536658b8ed544530e00a552214ac0d40eafc809":"2021-05-12T21:10:52.230Z","6.0.159":"2021-05-12T21:14:17.836Z","6.0.160-renovate-non-major-b81f59f10cc4fc70f29a6eecc2d4e7a82db7ebeb":"2021-05-13T12:40:26.173Z","6.0.160":"2021-05-13T12:43:50.627Z","6.0.161-renovate-non-major-eaac2624f68c6fa661c7a02d9374a9af37f1b0a2":"2021-05-13T23:58:16.566Z","6.0.161":"2021-05-14T00:02:21.861Z","6.0.162-renovate-non-major-ae93038d5a82e3642dfcd4a5e761bd9629f65dd9":"2021-05-17T10:43:32.748Z","6.0.162":"2021-05-17T10:46:37.800Z","6.0.163-renovate-non-major-95bc674dddfe12b3a7aebd4bdee18d4a9efabd29":"2021-05-17T23:58:22.422Z","6.0.163":"2021-05-18T00:01:51.846Z","6.0.164-renovate-non-major-cc9f2f8fb1d1a0025d04e2bf71c4ff8fc5cdf21f":"2021-05-18T19:06:30.512Z","6.0.164":"2021-05-18T19:10:33.193Z","6.0.165-renovate-internal-non-major-4c0eee6228d690bedea021e813343177a324f0dd":"2021-05-21T09:58:11.113Z","6.0.165":"2021-05-21T10:01:46.077Z","6.0.166-renovate-internal-non-major-3a0841fd5892f8cfbf4bc6fb50ed056ab1284de4":"2021-05-21T11:25:07.393Z","6.0.166":"2021-05-21T11:28:38.035Z","6.0.167-renovate-internal-non-major-9742f3bb1f95bd90fd38fe04b02310480808fcb7":"2021-05-21T12:46:19.831Z","6.0.167":"2021-05-21T12:50:07.791Z","6.0.168-renovate-balena-lint-6-x-36438edc34f10eb53d65778d32f0d14a141cdeee":"2021-05-21T18:23:44.491Z","6.0.168-renovate-internal-non-major-57df7894ab348eb84066d783f96b9f8fe78adbe4":"2021-05-22T00:48:16.738Z","6.0.168-renovate-major-external-major-a1bb2046c936109884bb7f51075214aa8617977a":"2021-05-22T00:49:29.892Z","6.0.168":"2021-05-22T00:51:49.362Z","6.0.169-renovate-balena-lint-6-x-71a9e57cc3d9181c34d80a9efbd8f2bc0a6490de":"2021-05-22T00:59:06.523Z","6.0.169-renovate-major-external-major-30cf60e64ec1b4a6820309d856a45a05707b5e3f":"2021-05-22T01:00:15.784Z","6.0.169-renovate-internal-non-major-2cd8b33840e06a02d419ac7d89b79e64aba695c3":"2021-05-22T01:46:55.641Z","6.0.169":"2021-05-22T01:50:27.767Z","6.0.170-renovate-balena-lint-6-x-270e4dcccffe3927d4fa7f3aec0d6e2e1ca9e4b2":"2021-05-22T01:57:36.839Z","6.0.170-renovate-major-external-major-3fd3d058e4fefa6e609e3e85cfa62c018d8f349f":"2021-05-22T01:59:25.709Z","6.0.170-renovate-internal-patch-446b583e1a89b9f71c8d4ec45561dec654a34293":"2021-05-23T03:29:28.599Z","6.0.170":"2021-05-23T03:33:25.091Z","6.0.171-renovate-major-external-major-3714a6eb5a088e1c1fd10a699ffea4e79e0fe31f":"2021-05-23T03:39:05.817Z","6.0.171-renovate-internal-patch-3112f1ae14bd198ec6a551a54fe0aa41d504dce5":"2021-05-23T08:03:02.249Z","6.0.171-renovate-internal-patch-ff4c9485fa1f99d3d0e6316be381b03ee4039d9f":"2021-05-23T08:08:29.655Z","6.0.171":"2021-05-23T08:12:29.639Z","6.0.172-renovate-balena-lint-6-x-9611710409dc2a8780fe072603c83aa33816ca27":"2021-05-23T08:16:36.370Z","6.0.172-renovate-major-external-major-780b1c5f912ad0e2e2c1ec486a20829151373a0c":"2021-05-23T08:18:32.509Z","6.0.172-renovate-internal-patch-a5bafb51639495ee176776b15df33e2955ba8425":"2021-05-23T09:50:31.738Z","6.0.172":"2021-05-23T09:56:16.915Z","6.0.173-renovate-balena-lint-6-x-41d2ea8db456a4370e2ebd674aea480271b58fd6":"2021-05-23T10:00:12.168Z","6.0.173-renovate-major-external-major-97f89e5d9b04e7255734116001c648cb829b4267":"2021-05-23T10:04:26.419Z","6.0.173":"2021-05-24T00:57:50.586Z","6.0.174-renovate-balena-lint-6-x-b63329bd7c69e9dcbfc742be26165a8c7a74830b":"2021-05-24T01:02:21.102Z","6.0.174-renovate-internal-patch-23445278627d3321694724a10ba458f9542eea36":"2021-05-24T01:08:28.325Z","6.0.174":"2021-05-24T01:14:27.594Z","6.0.175-renovate-balena-lint-6-x-04d7dbc30089776a70e662ddbeacb054547cef95":"2021-05-24T01:18:47.501Z","6.0.175-renovate-internal-patch-0a7dd3cf406ed765fe57e041b543ff7cae1c6557":"2021-05-24T01:22:42.607Z","6.0.175":"2021-05-24T01:26:51.463Z","6.0.176-renovate-balena-lint-6-x-5c567318323ea74b8ef23be7e5d0348f84da97e9":"2021-05-24T01:34:14.725Z","6.0.176-renovate-internal-patch-a9d5e529ca834852fde8f7ae1c2c7b0d9cded5e2":"2021-05-24T03:29:30.789Z","6.0.176":"2021-05-24T03:33:45.366Z","6.0.177-renovate-balena-lint-6-x-999735e79b319e6ad6c021d19296a30d854a429f":"2021-05-24T03:38:43.451Z","6.0.177-renovate-internal-patch-9e848df20fe77c774d2cfe3071ef186c8234818c":"2021-05-24T03:47:16.931Z","6.0.177":"2021-05-24T03:51:26.283Z","6.0.178-renovate-balena-lint-6-x-1405e702f8975207550f856cc5513f1166609f98":"2021-05-24T03:55:51.322Z","6.0.178-renovate-internal-patch-04fabee00c28c5485a98ca61a8b0191921e0a08b":"2021-05-24T05:54:32.082Z","6.0.178-renovate-internal-patch-f8accf49fcf5449ff4c8c88c28a37c89bc55de06":"2021-05-24T06:01:02.096Z","6.0.178":"2021-05-24T06:05:26.685Z","6.0.179-renovate-balena-lint-6-x-08548ba4761ba15be3ea69c4e823628f592fc5f3":"2021-05-24T07:18:34.262Z","6.0.179-renovate-internal-patch-f8ce636942890c2d537f3b3be316b1661233c952":"2021-05-24T07:23:44.870Z","6.0.179-renovate-balena-lint-6-x-985770b4f90985e4afec1f6036529bb8332ef43a":"2021-05-24T07:27:13.384Z","6.0.179":"2021-05-24T07:28:48.102Z","6.0.180-renovate-balena-lint-6-x-c0c554c14d5339720c5e9784f8062da8fee00430":"2021-05-24T07:38:15.605Z","6.0.180":"2021-05-24T07:41:51.141Z","6.0.181-renovate-balena-lint-6-x-c589d9105158d46dbe2053196ec232d6905220ef":"2021-05-24T11:36:23.092Z","6.0.181":"2021-05-25T00:00:50.364Z","6.0.182-renovate-internal-patch-13dee1d59ac5a731671afc93a192f41f4a856d5f":"2021-05-25T00:24:33.174Z","6.0.182-renovate-internal-patch-309d51041dbc670f2b01d5e588e9f9e97dabbd42":"2021-05-25T00:49:41.035Z","6.0.182-dependabot-npm-and-yarn-browserslist-4-16-6-e74d1be1768d291d5637a32745b68399ef23e5ed":"2021-05-25T01:51:22.174Z","6.0.182":"2021-05-25T01:56:14.319Z","6.0.183-renovate-internal-patch-9004c084a89f9ce18fbdccff3890d31891148cc3":"2021-05-25T02:03:06.135Z","6.0.183":"2021-05-25T02:07:14.305Z","6.0.184-renovate-internal-patch-a8e136fb198fe389b1fb159b1b3f4030ad344888":"2021-05-25T04:12:44.325Z","6.0.184":"2021-05-25T04:16:31.954Z","6.0.185-renovate-internal-patch-e568961f3f076c2e2b2f6f9511966598fe2bf13f":"2021-05-25T07:18:04.222Z","6.0.185":"2021-05-25T07:22:54.027Z","6.0.185-update-integration-constructor-606a42db784741a43b04523853a465dec5508489":"2021-05-25T07:31:02.402Z","6.0.186-update-integration-constructor-d48c36ea6521e02e035b7f74b8ca263072079ce2":"2021-05-25T07:52:08.567Z","6.0.186":"2021-05-26T01:52:59.706Z","6.0.187-renovate-internal-patch-ce426aef4f480748943c8c86d128322eef09e636":"2021-05-26T01:59:36.404Z","6.0.187":"2021-05-26T02:03:19.568Z","6.0.188-renovate-internal-patch-16b58e8f9e1d4fd5fcbecaaa21c349eb4b1f2520":"2021-05-26T03:23:42.416Z","6.0.188":"2021-05-26T03:27:38.010Z","6.0.189-repo-sync-jellyfish-config-default-a63130239c90160ecba85839a960d607f30aedd7":"2021-05-26T09:13:01.415Z","6.0.189-repo-sync-jellyfish-config-default-bca0a7bda1f7634d322c3e6300e8c0e3c65bf620":"2021-05-27T01:20:23.350Z","6.0.189-repo-sync-jellyfish-config-default-1a2cfaefc9502b226e5f5f6b7a173526ba6771e8":"2021-05-27T03:23:59.972Z","6.0.189-renovate-internal-patch-43235c75bf10ef6aa7d49def741c5be47c869178":"2021-05-27T03:28:52.021Z","6.0.189":"2021-05-27T03:32:04.321Z","6.0.190-repo-sync-jellyfish-config-default-f39f46b93e4d9776a66d30511500469b68d38e32":"2021-05-27T04:16:12.286Z","6.0.190-renovate-internal-patch-b90d633ee4444162cc1b20e2f31b101fa88d7b4e":"2021-05-27T05:16:38.252Z","6.0.190":"2021-05-27T05:20:44.984Z","6.0.191-repo-sync-jellyfish-config-default-f6818f9752fdb6064ed911512700067d8141a894":"2021-05-27T06:50:56.472Z","6.0.191-repo-sync-jellyfish-config-default-8ae3c6930b30ec9a0787d24a428761b4864b7f13":"2021-05-27T09:09:25.439Z","6.0.191-renovate-internal-patch-cb0341a9d3a0a90f905e2e6d924abb6f10aa16cb":"2021-05-27T09:15:54.808Z","6.0.191-renovate-internal-patch-4d43bad564df0cb8370d8f66bb4f46543fc6b66e":"2021-05-27T11:16:38.289Z","6.0.191":"2021-05-27T11:20:29.759Z","6.0.192-renovate-internal-patch-0a0136ea9d82fa4ce54a932d716b09d00a9d4b86":"2021-05-27T13:00:47.012Z","6.0.192":"2021-05-27T13:04:41.764Z","6.0.193-renovate-internal-patch-f637d097d6876600c00bdd07b9f46f9f0cc7e2ec":"2021-05-27T15:00:31.253Z","6.0.193":"2021-05-27T15:04:31.346Z","6.0.194-renovate-external-non-major-3d014c26afaf144bcee0d3d399ba11065851dc57":"2021-05-29T01:02:06.169Z","6.0.194-renovate-major-external-major-849e2fe421b127302c4af60c4ed6d944b492742c":"2021-05-29T01:05:00.743Z","6.0.194":"2021-05-29T01:11:10.666Z","6.0.194-renovate-major-external-major-b8d087434569bb6b33f026ca12566b2b4762cadb":"2021-05-29T01:17:49.730Z","6.0.195-renovate-major-external-major-a7a5be68aad206bc9a564fecf0a7e132fe5a9a5a":"2021-05-29T01:23:31.705Z","6.0.195-renovate-internal-patch-63ece09834079ab9db766faccf3f154d5bc84f70":"2021-05-29T01:25:11.586Z","6.0.195":"2021-05-29T01:28:38.720Z","6.0.196-renovate-major-external-major-78d950af63e71f96cfefde2ed94be00db1ea93a2":"2021-05-29T01:33:29.773Z","6.0.196-renovate-internal-patch-b1d8f7bf519975181040e58e3808f45028eec643":"2021-05-29T01:40:59.968Z","6.0.196":"2021-05-29T01:44:50.735Z","6.0.197-renovate-internal-patch-fa93531dd4c315396fb0a675fc3a2795037fa616":"2021-05-29T04:05:45.244Z","6.0.197":"2021-05-29T04:09:44.740Z","6.0.198-renovate-major-external-major-32d3d525f407ae6bcfdb83e54540cba290536d4d":"2021-05-29T04:16:14.797Z","6.0.198":"2021-05-29T06:17:30.438Z","6.0.199-renovate-internal-patch-a7f8be7ad0b211a01910fe29592c53e6a3f730f3":"2021-05-29T06:22:32.601Z","6.0.199-renovate-internal-patch-84de96d085c81fbdbf53b15212fa9aa68a0bf131":"2021-05-29T06:37:32.925Z","6.0.199":"2021-05-29T06:40:29.813Z","6.0.200-renovate-internal-patch-25aea702266b09fb722bd3baa44a1bd488628a73":"2021-05-29T08:11:23.960Z","6.0.200":"2021-05-29T08:15:52.602Z","6.0.201-renovate-internal-patch-12aa208b4ece31f39f559181170badf37c0be4b0":"2021-05-29T09:46:32.100Z","6.0.201":"2021-05-29T09:49:52.298Z","6.0.202-renovate-internal-patch-febb3148fb8f15a0c09564291d69465fa1eacfff":"2021-05-29T11:09:26.617Z","6.0.202":"2021-05-29T11:12:37.340Z","6.0.203-renovate-internal-patch-0dfe83301257de8212971d71c5fcb90cc467241b":"2021-05-29T13:23:05.158Z","6.0.203":"2021-05-29T13:26:58.176Z","6.0.204-renovate-external-non-major-2d316e700c53c4fc3da2658d5ba3da2d203a983e":"2021-05-29T13:31:36.452Z","6.0.204-renovate-internal-patch-507781c9f41b09c6f609f16a5213ded3d54d0d3e":"2021-05-29T14:59:19.129Z","6.0.204":"2021-05-29T15:51:10.627Z","6.0.205-renovate-external-non-major-b237fd370aba3a6b07bc4434fd64c08cf2af728d":"2021-05-29T15:55:08.023Z","6.0.205-renovate-external-non-major-6c8ca987aff2867bff9492e611ff8a7e660d0097":"2021-05-29T18:58:38.159Z","6.0.205-renovate-internal-patch-b18b2083f7de4d3f652199e5a453585d47ac41e4":"2021-05-29T20:16:52.446Z","6.0.205":"2021-05-29T20:21:22.740Z","6.0.206-renovate-internal-patch-2725483d79ea4cf82d91609d3a67647ea13f09bf":"2021-05-29T20:25:20.574Z","6.0.206-renovate-external-non-major-d0a3ca5b07ce85c30667b412554fcd3aa5d57e84":"2021-05-29T20:26:34.361Z","6.0.206":"2021-05-29T20:33:11.663Z","6.0.207-renovate-external-non-major-c1bf84ff4ffc44aa63a30661b0080d88512c8193":"2021-05-29T20:41:14.232Z","6.0.207-renovate-internal-patch-4827d89b9f146628db53d5483b2d44bff715d94c":"2021-05-29T21:59:07.053Z","6.0.207":"2021-05-29T22:02:31.348Z","6.0.208-renovate-external-non-major-909efc1d256b4d33e86ba35b43a0ad045f52657c":"2021-05-29T22:07:04.674Z","6.0.208":"2021-05-29T23:17:35.042Z","6.0.209-repo-sync-jellyfish-config-default-38e7893700df126e4a6bfa07ff406cb904d67410":"2021-05-31T03:19:06.990Z","6.0.209":"2021-05-31T03:24:31.242Z","6.0.210-renovate-internal-patch-ab514a9d1d95d2004d29a367a065e1704b23ed89":"2021-05-31T05:40:22.843Z","6.0.210":"2021-05-31T05:45:04.275Z","6.0.211-renovate-internal-patch-ef2713d3191e1bc8be87c60006d8921285e3e0fc":"2021-05-31T10:23:39.251Z","6.0.211-renovate-balena-jellyfish-logger-3-x-2b726c7180b215f474c2e413fc289b769c5dcd69":"2021-05-31T10:24:56.604Z","6.0.211":"2021-05-31T10:27:08.412Z","6.0.212-renovate-balena-jellyfish-logger-3-x-5062f3b11a13dec7bff994b9716f86f6eb1f747e":"2021-05-31T10:33:25.705Z","6.0.212-renovate-internal-patch-9d5d1bde2a179b3347fdd595e2676ae6278b10ac":"2021-05-31T12:21:41.852Z","6.0.212":"2021-05-31T12:25:11.194Z","6.0.213-renovate-balena-jellyfish-logger-3-x-9f5fcc9340c3a7c174ebc232e222bdb212fd653d":"2021-05-31T12:29:45.540Z","6.0.213":"2021-05-31T21:15:39.549Z","6.0.214-remove-catch-uncommitted-c728d4961c174a3f9086401da46929253990ccf8":"2021-06-02T07:30:41.168Z","6.0.214":"2021-06-02T07:34:00.895Z","6.0.215-improve-lint-staged-caa7f5803031d3b15432bc2791e1258a3165bb73":"2021-06-03T23:17:50.970Z","6.0.215":"2021-06-03T23:21:22.220Z","6.0.216-renovate-external-non-major-1c06629b24975484e66d6aee71b623e98737155d":"2021-06-05T08:16:33.374Z","6.0.216-renovate-internal-patch-b763ca26890c92b53ab76c5cf5644eaf2532df60":"2021-06-05T08:17:47.268Z","6.0.216":"2021-06-05T08:20:42.307Z","6.0.216-renovate-internal-patch-0214286a844dbde02c291390f9197d2a60d26d38":"2021-06-05T08:21:37.771Z","6.0.217-renovate-internal-patch-c987f72eda1e17125db726d7d05cee150938fed7":"2021-06-05T08:30:26.938Z","6.0.217-renovate-balena-jellyfish-types-0-x-e16f9f9037a780f70b76276b0e5a91facaff02a7":"2021-06-05T08:32:14.594Z","6.0.217-renovate-internal-patch-9bf384b28b0d9081649bee77cc9da7a59810e4b3":"2021-06-05T08:35:19.115Z","6.0.217-renovate-internal-patch-046d44ce7e23585a0d008bf13a81d324ec9899fa":"2021-06-05T10:35:29.538Z","6.0.217":"2021-06-05T10:38:43.903Z","6.0.218-renovate-balena-jellyfish-types-0-x-1423825bc79f7c3f47f4403e2a393992cc3614c6":"2021-06-05T10:42:40.608Z","6.0.218":"2021-06-05T15:14:00.585Z","6.0.219-renovate-internal-patch-d8458d42ede15586a724a40d9862e09540986351":"2021-06-05T16:39:39.162Z","6.0.219":"2021-06-05T16:43:13.052Z","6.0.220-renovate-internal-patch-aa613a0346b17c1a99af6b46a5982634370a976d":"2021-06-06T17:16:12.560Z","6.0.220-renovate-external-non-major-df6c4e96f0ab08e211c81dbac77d9843aa2bb3b4":"2021-06-06T17:17:25.225Z","6.0.220":"2021-06-06T17:19:50.719Z","6.0.221-renovate-external-non-major-986e29911640867d36d3458ae04c084de1c8ffc5":"2021-06-06T17:25:25.119Z","6.0.221":"2021-06-06T17:28:33.008Z","6.0.222-renovate-internal-patch-bd4f64e342863f5017704991e05a4c8e90a6a3e2":"2021-06-06T18:25:56.926Z","6.0.222":"2021-06-06T18:29:32.074Z","6.0.223-renovate-internal-patch-92309e9200ba86202c763188689cee3761806c4b":"2021-06-06T18:34:36.479Z","6.0.223":"2021-06-06T18:39:54.360Z","6.0.224-renovate-internal-patch-bc1fe9813009bb73a0cce560efdc1d773d138691":"2021-06-07T00:15:25.372Z","6.0.224":"2021-06-07T00:18:52.170Z","6.0.225-renovate-internal-patch-8a382b5b0d65b9ce188cbefe936b1cc9f725cfa1":"2021-06-07T03:38:22.217Z","6.0.225":"2021-06-07T03:42:02.566Z","6.0.226-renovate-internal-patch-b8d6fd810b060d4a7b20e14c725187a5b5a35fa2":"2021-06-08T02:24:25.949Z","6.0.226":"2021-06-08T02:27:41.828Z","6.0.227-repo-sync-jellyfish-config-default-8161c8e76ae4feffb85eea24e45d6e2bda0fddf2":"2021-06-08T04:12:24.418Z","6.0.227-renovate-internal-patch-855ebd19010e3a624891dfb1ddd4b18df7abd934":"2021-06-08T07:23:01.586Z","6.0.227":"2021-06-08T07:26:21.657Z","6.0.228-renovate-internal-patch-e47ba00103e3a84d7dfdeb71d89968dc4711ffeb":"2021-06-08T09:10:03.886Z","6.0.228":"2021-06-08T09:13:31.974Z","6.0.229-renovate-internal-patch-f346edd547cc317f5dfb4c2c68ad52118c674f5d":"2021-06-09T04:24:25.832Z","6.0.229":"2021-06-09T04:28:34.056Z","6.0.230-repo-sync-jellyfish-config-default-a73e71e1e9b5557eeef8b9c3f7df748b5c029754":"2021-06-11T05:03:38.078Z","6.0.230-renovate-internal-patch-f12fb535321f3c21757e48745b62fa5c160a7550":"2021-06-11T06:33:37.066Z","6.0.230":"2021-06-11T06:37:27.314Z","6.0.231-renovate-internal-patch-5cb87036f0a0cb7845b8905e42e16adda17f8b85":"2021-06-11T07:38:47.308Z","6.0.231-renovate-internal-patch-d8dd5ec311a984b0e3a187754c4b629d00499849":"2021-06-11T07:44:10.191Z","6.0.231":"2021-06-11T07:47:50.792Z","6.0.232-renovate-internal-patch-2ba8d10bfb9e2885c94a148237ab30de39f2f94b":"2021-06-11T09:37:49.693Z","6.0.232":"2021-06-11T09:41:22.306Z","6.0.233-renovate-internal-patch-330fffa77c9f402a3d0f90b6e6bdaa63c9eed01a":"2021-06-12T01:01:18.110Z","6.0.233":"2021-06-12T01:05:10.884Z","6.0.234-renovate-internal-patch-c6bb94c67c5fef58c77e2181f2a1b639ac874f90":"2021-06-12T01:36:21.280Z","6.0.234":"2021-06-12T01:40:03.110Z","6.0.235-renovate-internal-patch-49ff90b0781d936af6bbeac1a2c6ede78b6bfde3":"2021-06-12T03:54:45.547Z","6.0.235":"2021-06-12T03:58:07.856Z","6.0.236-renovate-internal-patch-69262e0d612c4466cffd452ff2bdc75fe4961bd2":"2021-06-12T09:07:45.643Z","6.0.236":"2021-06-12T09:11:08.655Z","6.0.237-renovate-internal-patch-26bf894ec699353960e0a75bedbd97932d17c9fa":"2021-06-15T00:57:19.535Z","6.0.237":"2021-06-15T01:01:20.239Z","6.0.238-renovate-internal-patch-3c62559ca3ca485b521b57015ac53149f783092b":"2021-06-15T01:05:44.310Z","6.0.238-repo-sync-jellyfish-config-default-942803c20f39a6ed96be72d65b664dcb6964ae85":"2021-06-15T01:09:35.950Z","6.0.238":"2021-06-15T01:13:31.328Z","6.0.239-renovate-internal-patch-0378fb7b4a7dafabb9808b1711c215b7b28e041a":"2021-06-15T01:18:53.121Z","6.0.239":"2021-06-15T01:23:50.078Z","6.0.240-renovate-internal-patch-5e0a8ae3018c27389d73602f6e3cdf6f6614af71":"2021-06-15T06:36:17.482Z","6.0.240":"2021-06-15T06:40:24.162Z","6.0.241-renovate-internal-patch-ad65bef8211efa2b31c856740466e8668d7bae8f":"2021-06-19T00:55:11.875Z","6.0.241":"2021-06-19T00:59:36.630Z","6.0.242-renovate-internal-patch-372ff7fa7548174cb38a19cd8da369da142ce9ad":"2021-06-19T02:55:28.842Z","6.0.242":"2021-06-19T02:59:08.174Z","6.0.243-renovate-internal-patch-d028585be9f9f3421c130061a4957b9172b4519e":"2021-06-19T09:35:44.595Z","6.0.243":"2021-06-19T09:39:21.915Z","6.0.244-renovate-internal-patch-c81729ec84cb05fbc61acfa29262a9bb2863746a":"2021-06-19T11:30:50.038Z","6.0.244":"2021-06-19T11:34:25.319Z","6.0.245-renovate-internal-patch-8a942cb6d7003900d5d08548a500bc80a829248d":"2021-06-19T11:45:10.478Z","6.0.245":"2021-06-19T11:48:51.957Z","6.0.246-bump-typescript-cf6adb5d80ff8823ad35b833e64fbc47c57a8618":"2021-06-19T13:07:00.665Z","6.0.246":"2021-06-19T13:10:22.731Z","6.0.247-renovate-internal-patch-60fb0c8da8f9d3522270add05ade7afab32c9650":"2021-06-19T14:49:27.512Z","6.0.247":"2021-06-19T14:53:08.480Z","6.0.248-renovate-internal-patch-40849b5942ae057bd080965a0539bfd4c88b85cd":"2021-06-20T15:49:57.382Z","6.0.248":"2021-06-20T15:53:46.175Z","6.0.249-renovate-internal-patch-e034a9db47d251ea5d4eb072b1c0d9e08a35c525":"2021-06-22T08:04:37.710Z","6.0.249":"2021-06-22T08:08:13.467Z","6.0.250-renovate-balena-jellyfish-types-0-x-3b52194d59222d483c900f52be6c3b3e8b6e0630":"2021-06-22T10:58:29.825Z","6.0.250":"2021-06-22T23:28:43.019Z","6.0.251-renovate-internal-patch-598c86feec81fd99f09a5abcfc2e0d8a8b2f3393":"2021-06-22T23:32:37.596Z","6.0.251-renovate-internal-patch-fbeeb325f583a4c5890839b3e936ab466f9475de":"2021-06-23T00:50:07.909Z","6.0.251":"2021-06-23T00:53:43.814Z","6.0.252-renovate-internal-patch-ddecfd3285a307aace8aaffe80563546341a2e1e":"2021-06-23T06:40:12.520Z","6.0.252":"2021-06-23T06:45:02.809Z","6.0.253-renovate-internal-patch-19e01fb252872e52fd53a3a70cff0f0eecd7f418":"2021-06-23T08:06:11.493Z","6.0.253":"2021-06-23T08:10:40.407Z","6.0.254-bump-jest-0d7edc82dfe00f1435fe4abb4fb963f430f19fc8":"2021-06-23T23:28:33.616Z","6.0.254":"2021-06-23T23:33:29.714Z","6.0.255-renovate-internal-patch-10975271a490be856bd803a871173e16c4d30ff7":"2021-06-23T23:40:50.238Z","6.0.255":"2021-06-23T23:49:05.041Z","6.0.256-renovate-internal-patch-551528d887a915092affddafa9c873d2f315e70b":"2021-06-23T23:55:47.728Z","6.0.256":"2021-06-23T23:59:29.756Z","6.0.257-renovate-internal-patch-2bb23cc8706b8901221a0c25171003184e3abb9e":"2021-06-24T15:08:16.377Z","6.0.257":"2021-06-24T15:13:15.626Z","6.0.258-renovate-internal-patch-1fc23942ae299dd13f19dfd334ce1e6857e35c24":"2021-06-25T02:26:39.423Z","6.0.258":"2021-06-25T02:30:47.278Z","6.0.259-bump-depcheck-19a2f41373959d0cc6c9cd6225cb580382adfef3":"2021-06-25T22:44:27.109Z","6.0.259":"2021-06-25T22:48:34.803Z","6.0.260-renovate-internal-patch-dd290cd517f2c9b18df4211022890f7b3ad69859":"2021-06-25T22:59:38.378Z","6.0.260":"2021-06-25T23:03:42.545Z","6.0.261-renovate-internal-patch-8552c7b95e50e15afa1399ffe4abdcbfbe6f5ff5":"2021-06-26T00:49:55.885Z","6.0.261":"2021-06-26T00:53:51.150Z","6.0.262-renovate-external-non-major-9169ffbbe3d982974b090cf58999b1aa9f039cd6":"2021-06-29T07:08:21.130Z","6.0.263-repo-sync-jellyfish-config-default-2b8b94fab5bae7ccff95d1c158c3c81a20041c58":"2021-06-29T10:04:32.589Z","6.0.263-renovate-internal-patch-4be9d72b93a38d90991c8a99efe704cc20119e5d":"2021-06-29T11:11:47.763Z","6.0.263":"2021-06-29T11:15:49.181Z","6.0.264-renovate-internal-patch-ee2dfeb12f95d3eccb5f1f560dad37cb0ea0c474":"2021-06-29T13:02:38.384Z","6.0.264":"2021-06-29T13:06:57.892Z","6.0.265-repo-sync-jellyfish-config-default-0d689f08c79f18d3fa03287654ae94e94055dac4":"2021-06-29T23:48:22.735Z","6.0.265":"2021-06-29T23:54:38.516Z","6.0.266-renovate-internal-patch-fd39d768fb3f27c87765d6cf26ded910e46e9cad":"2021-06-30T02:12:40.797Z","6.0.266":"2021-06-30T02:16:39.512Z","6.0.267-renovate-internal-patch-75cfb728def672a65fe646c42c89ac41144c16be":"2021-06-30T05:58:54.405Z","6.0.267":"2021-06-30T06:02:05.893Z","6.0.268-renovate-balena-jellyfish-types-0-x-09a991cec9779f4fdebb26005f73bde794c47b1a":"2021-07-02T06:44:50.042Z","6.0.268-renovate-internal-patch-4879b4c16581087a1ce106805805e6b47acaba1a":"2021-07-02T08:12:19.311Z","6.0.268":"2021-07-02T08:16:11.499Z","6.0.269-renovate-balena-jellyfish-types-0-x-c8cd463faab9f7b695fecf9a216726a5393eb74a":"2021-07-02T08:22:28.307Z","6.0.269-renovate-internal-patch-58257937ca7b9d7ab8f0692d4f8f5f8f39b3d17d":"2021-07-02T08:23:41.052Z","6.0.269":"2021-07-02T08:29:08.462Z","6.0.269-renovate-balena-jellyfish-types-0-x-bb5eb6c5a1415bae6d66544d94ef5c6d54612928":"2021-07-02T08:31:30.256Z","6.0.270-renovate-balena-jellyfish-types-0-x-7b4e3bc23cff9f4947aa09b089309e3aa2b7c166":"2021-07-02T08:38:26.489Z","6.0.270-renovate-internal-patch-4619827588a6e2436e40ad3af00762d82275d486":"2021-07-02T09:27:06.382Z","6.0.270":"2021-07-02T09:30:31.919Z","6.0.271-renovate-balena-jellyfish-types-0-x-d09fd1a8c2e9dae25cb420dcbecf50b7e7ad958c":"2021-07-02T09:33:29.790Z","6.0.271":"2021-07-02T22:23:59.036Z","6.0.272-renovate-external-non-major-398c2530ed0d6a6b9f5543baff5e8e6f52bc1a5d":"2021-07-03T01:09:34.585Z","6.0.272":"2021-07-03T01:15:48.212Z","6.0.273-renovate-internal-patch-70c709d936f78d244e6987f37407fa8fa5603c84":"2021-07-03T01:20:33.849Z","6.0.273":"2021-07-03T01:30:26.108Z","6.0.274-renovate-internal-patch-f73eb2ceb8f82ea7066678a5431266127b160e3d":"2021-07-03T02:47:21.869Z","6.0.274":"2021-07-03T02:51:16.184Z","6.0.275-renovate-external-non-major-ff53af08b605217066ca4dcffb3989f472b7425d":"2021-07-04T19:48:08.850Z","6.0.275":"2021-07-04T19:52:13.719Z","6.0.276-renovate-internal-patch-d6b978f6519ca9d9fd56f0fdeb0899f4e8b79a55":"2021-07-05T02:17:13.845Z","6.0.276":"2021-07-05T02:22:06.186Z","6.0.277-renovate-internal-patch-ba3519434b1d58f20bf8838187a36e3b764512ba":"2021-07-05T04:14:15.655Z","6.0.277":"2021-07-05T04:17:44.077Z","6.0.278-renovate-internal-patch-249b1c64dc2cf573809cd8cc034e63391c792005":"2021-07-05T15:47:04.263Z","6.0.278":"2021-07-05T15:50:25.505Z","6.0.279-renovate-internal-patch-46f3d5e834ade57386997aa8125dccc5cc94be3f":"2021-07-05T17:27:03.601Z","6.0.279":"2021-07-05T17:32:08.289Z","6.0.280-renovate-internal-patch-174e2a7f0fcf063e9a11ca16838b42a0993d0822":"2021-07-07T01:19:13.743Z","6.0.280":"2021-07-07T01:24:35.343Z","6.0.281-renovate-internal-patch-7d54c9a7b6a40cbd163fa14492aa3c3c0e7a14b3":"2021-07-08T00:05:20.305Z","6.0.281":"2021-07-08T00:08:55.343Z","6.0.282-renovate-internal-patch-1e3b6b4f58fd15ccc7240cdf50775e8a7616b0c6":"2021-07-09T02:21:05.921Z","6.0.282":"2021-07-09T02:25:07.358Z","6.0.283-renovate-external-non-major-ee3dc69ca8441a91c286564a1b9a8681f995410f":"2021-07-10T00:22:45.568Z","6.0.283":"2021-07-10T00:27:25.781Z","6.0.284-renovate-internal-patch-02369ba570852bc98bcb33a388b6b9d37d6f3cd1":"2021-07-10T00:35:25.558Z","6.0.284":"2021-07-10T00:41:03.026Z","6.0.285-renovate-internal-patch-1484e8a18111639693e948260ad561568a68298a":"2021-07-10T00:47:16.098Z","6.0.285":"2021-07-10T00:53:22.190Z","6.0.286-renovate-internal-patch-1acc9f90d20911335db17f182f1868aad33775b1":"2021-07-10T01:25:25.285Z","6.0.286":"2021-07-10T01:30:03.849Z","6.0.287-update-pipeline-types-5a84d72c4788d20ef0cc704b46ff76fd71a049a5":"2021-07-13T12:10:47.909Z","6.0.287":"2021-07-14T05:28:17.061Z","6.0.288-use-jellyfish-config-10b385d35a9268dfc835a4d1aa30737072294f5f":"2021-07-14T07:10:41.893Z","6.0.288":"2021-07-14T07:14:35.934Z","6.1.0-allow-originator-optout-ba8950ecfcc59903b23f9d141e40df0b00b7bea9":"2021-07-16T11:18:08.485Z","6.1.0-allow-originator-optout-ef5ac3496186d3198fff7302dbed88a0b52ed28c":"2021-07-16T12:10:06.513Z","6.1.0":"2021-07-16T12:14:20.499Z","6.1.1-remove-whitesource-b9959bfbc27605b15c2eba824f8940db50788ff0":"2021-07-16T23:26:23.781Z","6.1.1":"2021-07-16T23:29:51.790Z","6.1.2-h32-unify-script-names-6f5d33891eac435c8e21ff1dad1b5ea69f25fcf8":"2021-08-04T22:49:37.302Z","6.1.2":"2021-08-04T22:52:42.534Z","6.1.2-skip-origin-fb5790fe3ff2824671a2dde2eb780df6d726a79f":"2021-08-05T09:25:41.763Z","6.1.3-skip-origin-d72535222a4f50999c5d8cd2429a17f0198b0e33":"2021-08-05T09:29:18.567Z","6.1.3":"2021-08-05T09:32:55.477Z","6.1.4-lucianbuzzo-skip-pointless-origin-update-969838e8d8055db4fa055cbefcb5a1810a7a123f":"2021-08-20T11:53:43.300Z","6.1.4":"2021-08-20T12:33:47.141Z","6.1.5-lucianbuzzo-check-patch-op-612dafea5fb6d103068c0b0f5544576cce3ed793":"2021-08-20T14:27:54.150Z","6.1.5":"2021-08-20T14:37:58.832Z","6.1.6-bump-internal-dev-caa0d7f5d6faf9608712f8e3b9f5beb43f6659a4":"2021-08-23T06:57:22.479Z","6.1.6":"2021-08-23T07:07:06.006Z","6.1.7-renovate-internal-patch-d989248a28dc56cf614122a825061ecc6744cc0d":"2021-08-24T17:31:29.559Z","6.1.7":"2021-08-24T17:35:18.690Z","6.1.8-renovate-internal-patch-04dca1e061eec5ee183560049b8a64fbe3c72090":"2021-08-25T12:35:46.334Z","6.1.8":"2021-08-25T12:39:24.661Z","6.1.9-renovate-external-non-major-05694f6e7dcfe6c9227ebb7f66e41b0c46dcc6f9":"2021-08-29T01:38:17.318Z","6.1.9":"2021-08-29T01:41:39.076Z","6.1.10-renovate-major-external-major-ad191925d3884713aa167c96bdb9ff0e764fbc93":"2021-08-29T02:05:53.203Z","6.1.10":"2021-08-29T02:09:45.267Z","6.1.11-renovate-internal-patch-5aec53f456957fec95a4883453fc17b40f42efee":"2021-08-29T02:14:46.204Z","6.1.11":"2021-08-29T02:18:24.885Z","6.1.12-renovate-internal-patch-39d171332f5d5dd3fdba3ca3e6eee8542ee12357":"2021-08-29T17:00:46.059Z","6.1.12-renovate-external-non-major-f09de48617d4532f0f5e9cd283ef4d589450785b":"2021-08-29T17:02:15.064Z","6.1.12":"2021-08-29T17:04:26.557Z","6.1.13-renovate-external-non-major-251ae101a4b3a2c7361d502db70aaf78861b167a":"2021-08-29T17:08:38.501Z","6.1.13":"2021-08-29T17:14:27.819Z","6.1.14-renovate-internal-patch-5f14a42954d45face13474cc99910239d9b6bcf0":"2021-08-30T09:49:11.087Z","6.1.14":"2021-08-30T09:53:27.208Z","6.1.15-renovate-internal-patch-f3af450e7612a561e16cd8e6886afa0dc8da551c":"2021-08-30T11:43:29.139Z","6.1.15":"2021-08-30T11:46:45.703Z","6.1.16-renovate-balena-jellyfish-types-1-x-0a7116ec9637fb3ac875c405cdf0116d5c3a16dd":"2021-09-02T01:49:53.583Z","6.1.16-renovate-balena-jellyfish-types-1-x-5eaf917ed064c9450f25df03a361659f8af8fab9":"2021-09-04T01:08:16.014Z","6.1.16-renovate-internal-patch-8464dc58d7b65a9e951f8157aaba356949b98d36":"2021-09-04T01:15:24.593Z","6.1.16":"2021-09-04T01:20:35.656Z","6.1.17-renovate-balena-jellyfish-types-1-x-149b05cfd2a82a6bd2c91ba24b0a6a2f90dad719":"2021-09-04T01:26:07.470Z","6.1.17":"2021-09-04T14:27:25.192Z","6.1.18-renovate-external-non-major-730d29b5a52f3405dec676344eff58091c9b836b":"2021-09-04T14:30:42.004Z","6.1.18":"2021-09-04T14:35:07.369Z","6.1.19-renovate-balena-jellyfish-types-1-x-a3156f534fe9b05527c0a93b2f028bc4feddedfd":"2021-09-05T09:55:25.980Z","6.1.19":"2021-09-05T09:59:30.205Z","6.1.20-renovate-internal-patch-2597c0b7acad9b18e7f6498c24d43d8f20fc8abc":"2021-09-06T05:47:27.876Z","6.1.20":"2021-09-06T05:51:08.752Z","6.1.21-renovate-internal-patch-bffeb01a1d80a21025c641689358e7b2eefa1d10":"2021-09-07T10:20:03.836Z","6.1.21":"2021-09-07T10:23:42.995Z","6.1.22-renovate-external-non-major-479ee0fe151a8a707adf507e69c6d84538da2864":"2021-09-11T01:21:03.195Z","6.1.22-renovate-external-non-major-3c02f2789ec35f20ed248d09f5707cbd4a37e732":"2021-09-11T03:36:02.009Z","6.1.22-renovate-internal-patch-d3d1b965a633529903b755b66026bc7865a895c8":"2021-09-11T05:45:30.429Z","6.1.22":"2021-09-11T05:49:15.075Z","6.1.23-renovate-external-non-major-9c4e17667563a82611ca328882406848fca93f23":"2021-09-11T05:52:23.055Z","6.1.23-renovate-external-non-major-d231f2b010d9a4959ab05ded4eff4ec32f0ca9bc":"2021-09-11T13:23:22.591Z","6.1.23":"2021-09-11T13:27:45.203Z","6.1.24-renovate-internal-patch-0896a9e77e00bd6f12523d9a6214cf7279bdc17b":"2021-09-12T13:23:29.034Z","6.1.24":"2021-09-12T13:26:51.791Z","6.1.25-renovate-external-non-major-6938de93fb28da10c8f32f98d80ec23609b88559":"2021-09-12T13:30:13.341Z","6.1.25":"2021-09-12T13:36:36.115Z","6.1.26-repo-sync-jellyfish-config-default-770f15d3f86a211a47dad6a9aac999758a54b84b":"2021-10-04T04:31:37.870Z","6.1.26-repo-sync-jellyfish-config-default-93d3a4ebcc45a933d49070f7de998f6b66d913b6":"2021-10-05T00:34:37.086Z","6.1.26":"2021-10-05T00:40:07.151Z","6.1.27-renovate-internal-patch-069ca80342b178a8f86d4edde0e3ce1a8ac5ce78":"2021-10-18T22:36:18.863Z","6.1.27-renovate-balena-jellyfish-types-1-x-7f8c1ea983c461c6908fef40422fc2c4af53fa19":"2021-10-18T22:36:33.339Z","6.1.27":"2021-10-18T22:39:33.588Z","6.1.28-renovate-balena-jellyfish-config-1-x-348da0a1d60eb0ab2fc2cfeff105365fc9f01655":"2021-10-18T22:44:54.586Z","6.1.28-renovate-balena-jellyfish-types-1-x-cf6377addb8c922ce273a42f4ff3e1708fa5259c":"2021-10-18T22:46:48.783Z","6.1.28":"2021-10-18T22:50:12.785Z","6.1.28-renovate-balena-jellyfish-types-1-x-e5d65d419615533cdf9b76fc98f77759402a505b":"2021-10-18T22:53:55.405Z","6.1.29-renovate-balena-jellyfish-types-1-x-58fa74fe31b40490be973fbac6b3cd1f92a936f1":"2021-10-18T22:58:27.779Z","6.1.29":"2021-10-18T23:01:44.563Z","6.1.30-renovate-internal-patch-1db9388f6aef529792611de6e9278f0a8951ee98":"2021-10-20T05:53:50.396Z","6.1.30":"2021-10-20T05:57:23.582Z","6.1.31-renovate-internal-patch-bc9d29214159f14f97a8360dd0b62f77f2108170":"2021-10-22T23:24:44.355Z","6.1.31":"2021-10-22T23:32:28.739Z","6.1.32-renovate-external-non-major-8376ddb4d130a01b437ee6b32e6dea067de52319":"2021-10-23T01:47:39.925Z","6.1.32":"2021-10-23T01:55:07.142Z","6.1.33-renovate-internal-patch-218dc7ec1975a1e9a30ca021cb5338a671a3a1d6":"2021-10-23T01:59:55.671Z","6.1.33-renovate-internal-patch-aaf746e1f8cd26e1aec24e2dfb5bd3e6e6db1d7b":"2021-10-23T02:03:09.782Z","6.1.33-renovate-internal-patch-32749c95fd0e95496c6e4d2aa97746e97733fd23":"2021-10-23T07:05:54.464Z","6.1.33-renovate-internal-patch-f6d9c319dc7d212e59533f1e89cefaa5e2a72126":"2021-10-23T07:11:17.442Z","6.1.33":"2021-10-23T07:15:23.703Z","6.1.34-renovate-internal-patch-cd070c09c06db2ee922181ee2fa62b30416f570e":"2021-10-23T09:54:18.425Z","6.1.34":"2021-10-23T09:58:07.441Z","6.1.35-renovate-internal-patch-ca44495b7e83d75cb6b2f837b0bbb11c29aa1eff":"2021-10-23T18:58:52.910Z","6.1.35-renovate-external-non-major-9486254d573d0fbb0721f46b5783353b7c58c9ef":"2021-10-23T18:59:56.567Z","6.1.35":"2021-10-23T19:03:50.869Z","6.1.36-renovate-external-non-major-906cd244948b308a1636565f4947adc42fb91573":"2021-10-23T19:13:08.481Z","6.1.36":"2021-10-23T19:17:43.140Z","6.1.37-renovate-internal-patch-e0927454e3d920ac2283bb8485bfdd13e23fa128":"2021-10-23T21:17:32.913Z","6.1.37":"2021-10-23T21:21:46.162Z","6.1.38-renovate-internal-patch-7e712c154b671ba18534ce62d81ba5b9de9f598e":"2021-10-23T23:59:28.080Z","6.1.38":"2021-10-24T00:04:12.653Z","6.1.39-renovate-internal-patch-c85828e7ffccd7687294d7556431657f8266a654":"2021-10-28T01:46:23.240Z","6.1.39":"2021-10-28T01:50:34.565Z","6.1.40-renovate-internal-patch-a5161e884f7fee64142c5a51729a27da54366ada":"2021-10-28T03:16:52.103Z","6.1.40":"2021-10-28T03:20:43.148Z","6.1.41-renovate-internal-patch-4e3e9b8cb73165f214e2ffbd47592ff39402c1b2":"2021-10-28T05:38:08.628Z","6.1.41":"2021-10-28T05:42:24.368Z","6.1.42-renovate-internal-patch-98ab2931d1caf6873323f32c1e3dc87e6c9048d1":"2021-10-28T10:07:27.827Z","6.1.42":"2021-10-28T10:11:44.980Z","6.1.43-renovate-internal-patch-7bc87ea9946084b9b7c6e1160ae6d2bae27aa8f7":"2021-10-28T14:29:07.229Z","6.1.43":"2021-10-28T14:32:36.013Z","6.1.44-renovate-external-non-major-168da06f2b6cd5ec55355fb41e649ab4b0274266":"2021-10-30T01:45:18.123Z","6.1.44":"2021-10-30T01:50:00.133Z","6.1.45-renovate-internal-patch-e6d6fbbee4c4c26cd2fb137c5cd5cd3b1dd62032":"2021-10-30T03:38:43.990Z","6.1.45":"2021-10-30T03:42:41.462Z","6.1.46-renovate-internal-patch-a33a5435c221afeac0b55bc9d891b2773d55dc51":"2021-10-30T03:50:14.559Z","6.1.46":"2021-10-30T03:57:23.799Z","6.1.47-renovate-internal-patch-b997ea0c60b332f00162bcd20c41613c879ebca7":"2021-10-30T05:50:34.206Z","6.1.47":"2021-10-30T05:54:58.388Z","6.1.48-renovate-internal-patch-593fd03227488dd601e810134983543eafb2a8bd":"2021-10-30T11:32:29.994Z","6.1.48":"2021-10-30T11:36:25.449Z","6.1.49-renovate-internal-patch-55fcd0bf9e7371422bdb44acf75a31af731ff59b":"2021-11-05T10:48:47.748Z","6.1.49-renovate-internal-patch-1119c4ceab7da6ef1a1e97c2ad80b6242e716163":"2021-11-05T10:54:02.760Z","6.1.49":"2021-11-05T10:57:14.918Z","6.1.50-renovate-major-external-major-66d89e1e7d294bcb90149d8641e186c917d7a020":"2021-11-06T00:32:39.336Z","6.1.50":"2021-11-06T02:36:32.683Z","6.1.51-renovate-internal-patch-bf578e631f230352d84b9c17bc1bc5a29b37bba1":"2021-11-06T02:41:53.804Z","6.1.51":"2021-11-06T02:45:11.016Z","6.1.52-renovate-internal-patch-808f181970c86b359f8c93f3fb7e696aae2cc635":"2021-11-06T05:12:24.586Z","6.1.52":"2021-11-06T05:15:52.409Z","6.1.53-renovate-internal-patch-d1505ee107cd5c285ae171c3a712ef68501710dc":"2021-11-07T02:34:28.144Z","6.1.53":"2021-11-07T02:39:26.210Z","6.1.54-renovate-external-non-major-2b045d1beb3b3d34d6fc0f0714d25a8ed0d07920":"2021-11-07T02:44:42.188Z","6.1.54":"2021-11-07T02:48:50.669Z","6.1.55-renovate-internal-patch-b77fd047e46c5a226ed63a6e2fd9fa872b6ec312":"2021-11-07T04:41:17.961Z","6.1.55":"2021-11-07T04:46:01.793Z","6.1.56-renovate-internal-patch-58452bf2cc60488d18351a9b86d171e03c55c5c6":"2021-11-08T23:49:26.894Z","6.1.56-renovate-internal-patch-1a5a8d0245c071f112f1f75399708079be7f2c9d":"2021-11-08T23:51:58.216Z","6.1.56":"2021-11-08T23:55:27.801Z","6.1.57":"2021-11-10T00:12:25.502Z","6.1.58-renovate-internal-patch-398158b6a6008df1ee31c89aa3c747642500bd1d":"2021-11-10T02:57:44.107Z","6.1.58":"2021-11-10T03:04:07.936Z","6.1.59-renovate-internal-patch-0dd33c11b087ff3cb63eae2a2f1985c6cf16ccdf":"2021-11-10T23:26:55.568Z","6.1.59":"2021-11-10T23:31:01.392Z","6.1.60-renovate-internal-patch-c7c828c20184bc48b974d0cea4d00bf745ac6be8":"2021-11-11T02:19:28.556Z","6.1.60":"2021-11-11T02:22:37.413Z","6.1.61-renovate-internal-patch-8cd9ae0e8628d251026c3d0be0a5b0ffaf76ca0a":"2021-11-11T08:47:00.799Z","6.1.61":"2021-11-11T08:51:08.389Z","6.1.62-renovate-internal-patch-178ebcc1274e6b7fd06c9aa5714995f86e8032d6":"2021-11-12T05:22:22.293Z","6.1.62":"2021-11-12T05:25:31.601Z","6.1.63-renovate-internal-patch-c65abe4ad8b281d723ca294b5fc9455d55d7ea79":"2021-11-12T09:50:22.741Z","6.1.63":"2021-11-12T09:54:05.259Z","6.1.64-renovate-external-non-major-73174d54870e715dfdd29687337830dd9f2cd2f4":"2021-11-13T02:20:45.667Z","6.1.64":"2021-11-13T02:23:33.192Z","6.1.65-renovate-internal-patch-100066c0c9ff76b5259e66a059bec0f57a7764bb":"2021-11-13T02:28:11.588Z","6.1.65":"2021-11-13T02:31:13.400Z","6.1.66-renovate-internal-patch-7386fd629863aecf3247078631e1b19e924d64e1":"2021-11-13T08:26:17.018Z","6.1.66-renovate-internal-patch-52f5c8d742d3f6a2a31ff4cd915eb31b0ffd0006":"2021-11-13T08:29:22.804Z","6.1.66":"2021-11-13T08:32:24.616Z","6.1.67-renovate-internal-patch-2c6be3eb30e289e6b80e28f947acd3132d87b7af":"2021-11-13T11:05:41.355Z","6.1.67":"2021-11-13T11:08:30.773Z","6.1.68-renovate-major-external-major-2cdc71832192af6f77e8a17d8b9c64c5eb6c0a6c":"2021-11-14T12:15:27.881Z","6.1.68-renovate-internal-patch-09e6d858c60780c16b4a33e0aadac8f83342c122":"2021-11-14T16:47:06.984Z","6.1.68":"2021-11-14T16:50:04.062Z","6.1.69-renovate-major-external-major-f08c25c041b96026aabc820b34b8732fec867641":"2021-11-14T16:54:37.911Z","6.1.69-renovate-external-non-major-97f01a556e2cab626c50ab7206a89bc7f80ae22d":"2021-11-14T23:09:47.406Z","6.1.69-renovate-internal-patch-d012b4c7b731be022577105100c8a0ea88ede07f":"2021-11-14T23:10:35.702Z","6.1.69":"2021-11-14T23:13:43.655Z","6.1.70-renovate-internal-patch-844325b46be6f2d9bd0249cab67c65af0589ae5c":"2021-11-14T23:18:30.941Z","6.1.70-renovate-major-external-major-960eaa4b6f9a62506c7b07796d312e658a58ac70":"2021-11-14T23:19:55.278Z","6.1.70-renovate-internal-patch-8696c714f7e52461eff73b372f7fd679362ad069":"2021-11-15T02:18:48.333Z","6.1.70-renovate-internal-patch-8bed90ba1a8041334684f00d845157cd0195cf11":"2021-11-15T02:22:10.385Z","6.1.70":"2021-11-15T02:24:52.660Z","6.1.71-renovate-major-external-major-122245be04031cf70f797f1fec994cd49cd3774e":"2021-11-15T02:27:57.345Z","6.1.71":"2021-11-15T03:17:39.104Z","6.1.72-joshbwlng-set-license-6df9c3cc610d9d4ea6e98aebf8e9a5cb9aea5fce":"2021-11-15T03:33:57.906Z","6.1.72":"2021-11-15T03:37:40.990Z","6.1.73-renovate-internal-patch-ff06081e35804033be02fe1c75f600502cd8c884":"2021-11-15T03:43:21.273Z","6.1.73-renovate-internal-patch-20af4f5666a8d1805b741feca9192b7690a74fc0":"2021-11-15T03:46:44.966Z","6.1.73":"2021-11-15T03:50:14.689Z","6.1.74-renovate-internal-patch-a8cfa4e94d0326f859ac9f3db2c4daf823c0f221":"2021-11-15T03:55:26.212Z","6.1.74-renovate-internal-patch-dd72c9312dbab302e062ab6cf60ee38257e15fc2":"2021-11-15T06:05:54.085Z","6.1.74":"2021-11-15T06:09:06.437Z","6.1.75-renovate-internal-patch-43ad86441ca2ce95b194fffee0e0838bd9d50504":"2021-11-15T06:13:06.781Z","6.1.75-renovate-internal-patch-8d7403a431be0ccab61d6de3cd2b34258e2d0911":"2021-11-15T11:01:57.843Z","6.1.75":"2021-11-15T11:05:15.942Z","6.1.76-renovate-internal-patch-22a3c52ccb304bef1a41466427d5bf9412e6a56e":"2021-11-15T11:09:25.438Z","6.1.76":"2021-11-15T11:15:59.598Z","6.1.77-renovate-internal-patch-5e5a9af87a6e4921be5bb247991eeb9243f97eb3":"2021-11-15T13:54:10.572Z","6.1.77":"2021-11-15T13:57:51.226Z","6.1.78-renovate-internal-patch-a3f999ca89c96384426f6e5cc838a04487e007b2":"2021-11-16T01:51:02.021Z","6.1.78":"2021-11-16T01:55:02.268Z","6.1.79-repo-sync-jellyfish-config-default-92695571f8114c64b16961878c4fea78f0c84f31":"2021-11-16T05:08:06.908Z","6.1.79":"2021-11-16T05:11:22.413Z","6.1.80-renovate-internal-patch-10ede5d8cf0d6be53b6c9ab3b23136f37f8f8b80":"2021-11-16T05:15:31.738Z","6.1.80":"2021-11-16T05:18:28.933Z","6.1.81-renovate-internal-patch-437d1947a6383fa01471af8a7ade4a8ca8f71deb":"2021-11-19T10:27:26.485Z","6.1.81":"2021-11-19T10:31:23.046Z","6.1.82-renovate-balena-jellycheck-1-x-dff89706839afea0f87709c03dbce9869c0453b9":"2021-11-20T01:37:54.685Z","6.1.82-renovate-internal-patch-853ecbfdc43a8542ca934989b7eb18e34c4b9faf":"2021-11-20T05:32:29.366Z","6.1.82":"2021-11-20T05:35:22.100Z","6.1.83-renovate-internal-patch-0807a9057a5da7be2fa1e88468f140917a01b666":"2021-11-20T10:59:36.587Z","6.1.83":"2021-11-20T11:02:24.731Z","6.1.84-renovate-balena-jellycheck-1-x-42438b0e2541a6a0e1b3069c5b9768cc31ef3f8d":"2021-11-20T11:07:31.494Z","6.1.84-renovate-internal-patch-c213a35c29c0e4010bd522eb10c291dbea4ae8bc":"2021-11-20T12:40:43.488Z","6.1.84-renovate-external-non-major-f9e4235b2b8aedce6779b7ffa81036a6f671f4d0":"2021-11-20T12:45:48.865Z","6.1.84-renovate-balena-jellycheck-1-x-ff6c15f29ea7a8a8b69ce3eecbcc9b06d04ec736":"2021-11-20T12:47:49.410Z","6.1.84-renovate-internal-patch-55a792d408a44956f09611794516f51e1cdd90aa":"2021-11-20T14:41:32.327Z","6.1.84":"2021-11-20T14:44:46.043Z","6.1.85-renovate-balena-jellycheck-1-x-6d6024fd785bc84da0eba602053b1a29effe979b":"2021-11-20T14:48:23.127Z","6.1.85-renovate-internal-patch-708c54ed0e2e41e8e8a9caa8100cbd696036428b":"2021-11-20T16:50:24.179Z","6.1.85-renovate-balena-jellycheck-1-x-720bb7d0e5d6240e5c55c0583c41b68d97dc5598":"2021-11-20T16:56:18.359Z","6.1.85":"2021-11-21T04:27:31.844Z","6.1.86-joshbwlng-remove-license-headers-49b7cd7d42dd0907188a8a91391b546216d3e9ff":"2021-11-21T07:48:49.444Z","6.1.86":"2021-11-21T07:51:46.880Z","6.1.87-renovate-internal-patch-2da5942149f733400218b5c30fbf8dceeb6cecda":"2021-11-21T07:56:11.044Z","6.1.87":"2021-11-21T07:58:55.061Z","6.1.88-renovate-external-non-major-2ade6db09d64160cd3af2ea415ba460e34298660":"2021-11-21T08:03:01.588Z","6.1.88-renovate-internal-patch-e7e3ac10bd832adf3dae371ceb3f9f49e6d1bf8b":"2021-11-21T17:18:09.356Z","6.1.88-renovate-external-non-major-141adcc026f5e4ec411512b242a9b10138d31aaa":"2021-11-21T17:24:14.247Z","6.1.88-renovate-internal-patch-748320819541a950076b35479ddfec48f61a07ae":"2021-11-22T00:04:13.949Z","6.1.88-renovate-internal-patch-aab08d50b99b13aa1117e05716da8db6e893d93b":"2021-11-22T00:08:24.598Z","6.1.88":"2021-11-22T00:12:12.838Z","6.1.88-renovate-external-non-major-0ba16215490ba6e9411c3c734e7b830fa5b610d6":"2021-11-22T00:14:03.716Z","6.1.89-renovate-external-non-major-0e55903e26f32f1c18a703bd2f971e34b76a1128":"2021-11-22T00:17:05.025Z","6.1.89-joshbwlng-bump-deps-17df227fcd16b8c86ff76947dc1846b38f4bfec8":"2021-11-22T02:39:04.264Z","6.1.89":"2021-11-22T02:42:50.034Z","6.1.90-renovate-external-non-major-b954e7ec6baf0ddab830ca668bcb0a4d8463a8e8":"2021-11-22T02:47:26.873Z","6.1.90-renovate-internal-patch-94e89f8ba77143dc7f6bef88e65259c688be7723":"2021-11-22T06:07:15.981Z","6.1.90-renovate-external-non-major-f5f1aca244e7d8bba042d45ace5bb76b43b35eff":"2021-11-22T06:13:47.478Z","6.1.90-renovate-typescript-4-x-81adf0afc40a63f95ebc197a29c01599cc208046":"2021-11-23T01:55:53.707Z","6.1.90-renovate-internal-patch-01f7fc01ca85dec98afb72c59cfb6a37e3047535":"2021-11-23T01:59:16.006Z","6.1.90":"2021-11-23T02:03:24.236Z","6.1.90-renovate-external-non-major-e19a74a77e03a60a2db7bbc4261b40e72452412b":"2021-11-23T02:05:35.703Z","6.1.91-renovate-typescript-4-x-1d17c6028bf551e2426a6a45c4bbae50e76ecf72":"2021-11-23T02:06:58.401Z","6.1.91-renovate-external-non-major-d7bee7004fff49e7c660e54f6618be8857638c3a":"2021-11-23T04:11:49.554Z","6.1.91":"2021-11-23T04:15:46.856Z","6.1.91-renovate-internal-patch-e750293a62f3717db54b15b42c37ebf85bd2f689":"2021-11-23T04:16:26.372Z","6.1.92-renovate-typescript-4-x-63112af6f3d3b0362aff51fab2cc60c4b62a3a3d":"2021-11-23T04:19:47.319Z","6.1.92-renovate-internal-patch-ae89b7b7816de1461a1ed2d8404043b87b5f74e3":"2021-11-23T08:36:34.746Z","6.1.92":"2021-11-23T08:41:14.096Z","6.1.92-renovate-typescript-4-x-a45112cf4dc499a4cb33e409b071c40f478e39ae":"2021-11-23T08:42:24.053Z","6.1.93-renovate-typescript-4-x-535c21d012fba73b58e3ce84f1fd79e0e83f27e2":"2021-11-23T08:45:20.252Z","6.1.93-repo-sync-jellyfish-config-default-429c135d3023540acfe2eb989abf2b8b36e9297f":"2021-11-24T03:12:26.982Z","6.1.93-renovate-internal-patch-673568b07e8f080edac44abdc727983d279b4dfc":"2021-11-24T03:34:00.838Z","6.1.93-renovate-internal-patch-ff27109f4bba47db748cb733cc9941e2bef0ac44":"2021-11-24T03:37:06.620Z","6.1.93-renovate-internal-patch-db857dd13324e9a05702621d569b79e5ecb7a396":"2021-11-24T03:40:33.361Z","6.1.93":"2021-11-24T03:44:36.634Z","6.1.94-renovate-typescript-4-x-449e0fd0f1132531ba9178a62b057e5af62b39bc":"2021-11-24T03:46:16.991Z","6.1.94-renovate-internal-patch-71af0e99b4819a5af8c20841d1e7d63c3e5d7082":"2021-11-24T05:18:34.567Z","6.1.94":"2021-11-24T05:21:46.219Z","6.1.95-renovate-typescript-4-x-88e94f9458ea193bca07e0aaa5225751c4cb62f3":"2021-11-24T05:24:50.575Z","6.1.95-repo-sync-jellyfish-config-default-1f9acc10bed2eb53c0259f700ff9bd231e1d6eb6":"2021-11-24T06:00:08.617Z","6.1.95":"2021-11-24T06:04:05.688Z","6.1.96-renovate-internal-patch-3351964e1f5ac9a0e336bc411796ed3c722b5734":"2021-11-24T06:10:21.566Z","6.1.96":"2021-11-24T06:14:28.666Z","6.1.97-renovate-typescript-4-x-5b9ef079be941d5c67f98d512952411528a3999c":"2021-11-24T06:18:34.672Z","6.1.97-renovate-internal-patch-9d8216ccd7f2a7ff1e80b245d92c0dbbe19f3a49":"2021-11-24T11:33:45.380Z","6.1.97":"2021-11-24T11:37:11.750Z","6.1.98-renovate-typescript-4-x-0000c5e8dfac948548ede94ee6d90d86f1d876f7":"2021-11-24T11:40:14.721Z","6.1.98-renovate-internal-patch-b53cf902cb01373b37d859b94af2d349cedb0c3f":"2021-11-24T13:18:51.077Z","6.1.98":"2021-11-24T13:23:01.650Z","6.1.99-renovate-typescript-4-x-ab40910ef390ae72553ef5d20e53c68b37cb4123":"2021-11-24T13:26:01.935Z","6.1.99-renovate-internal-patch-c2fa8f47dad259991b8e8dd73e4471a5b2f538ea":"2021-11-24T15:20:18.728Z","6.1.99":"2021-11-24T15:24:49.088Z","6.1.100-renovate-typescript-4-x-7e97d12fd9faeaee2c83b5577ef1479f8c0ab5c1":"2021-11-24T15:26:10.169Z","6.1.100-joshbwlng-remove-jellycheck-14ad25d9069177542020b679eef2817129e04dd5":"2021-11-25T01:36:31.475Z","6.1.100":"2021-11-25T01:40:39.834Z","6.1.101-joshbwlng-update-repo-yml-c09900ad401afc6d9ed331a01cd60536f627a7b5":"2021-11-25T04:12:39.161Z","6.1.101":"2021-11-25T04:16:34.189Z","6.1.102-renovate-typescript-4-x-427b19e9e444b7a4636c46a2f58fdf40225a6ce6":"2021-11-25T06:43:53.228Z","6.1.102-renovate-internal-patch-6768f104844771d63977b2011c65fe40304ae5ef":"2021-11-25T06:44:24.207Z","6.1.102":"2021-11-25T06:47:59.196Z","6.1.102-renovate-internal-patch-3b9fbc9eca1941ac7c3491e1ca000d3de9d4a6af":"2021-11-25T06:50:01.986Z","6.1.103-renovate-internal-patch-f21fa2c128b14fcef2ee64d6471aab1ff7069557":"2021-11-25T06:52:14.979Z","6.1.103":"2021-11-25T06:55:18.559Z","6.1.104-renovate-internal-patch-4acc980440a01bb03dab896d06d37de5b26bf80f":"2021-11-25T09:17:57.088Z","6.1.104":"2021-11-25T09:20:53.888Z","6.1.105-joshbwlng-use-renovate-config-9bd8231d4956a25d58eb7adfefceca261d01db39":"2021-11-26T01:53:49.095Z","6.1.105":"2021-11-26T01:57:39.981Z","6.1.106-renovate-internal-patch-11f8cf9853991cee5077b81b9c75a217b6a2426b":"2021-11-26T10:03:34.769Z","6.1.106":"2021-11-26T10:07:51.378Z","6.1.107-renovate-balena-jellyfish-config-2-x-8dc5a27a0f8ac2237f1e222c971500d9ab3fef53":"2021-11-26T10:10:24.350Z","6.1.107-renovate-internal-patch-893f272f37aa48d0340d9b990790711fc505a684":"2021-11-26T18:31:01.480Z","6.1.107-renovate-balena-lint-6-x-c50dad1f2ffebe650c478c74479c91a83caaef98":"2021-11-26T18:31:20.427Z","6.1.107":"2021-11-26T18:34:53.953Z","6.1.108-renovate-balena-lint-6-x-a91ed80bd973cbf56c3a074f51692373de23e515":"2021-11-26T18:37:49.049Z","6.1.108-renovate-balena-jellyfish-config-2-x-a8c75fc8669107e6c4c0eb964c3124f6cd6b758f":"2021-11-26T18:38:20.298Z","6.1.108":"2021-11-26T18:42:31.485Z","6.1.109-renovate-balena-jellyfish-config-2-x-dfbb0e01f5f83985e5279de4113b5fae1dda5fe6":"2021-11-26T18:46:21.655Z","6.1.109-renovate-internal-patch-64c17a539b93e1807e2cea3129514d82f0aacfc9":"2021-11-26T21:19:37.489Z","6.1.109":"2021-11-26T21:23:14.100Z","6.1.110-renovate-balena-jellyfish-config-2-x-d102a37463896af675bc16cf25d9d53ec6bdedd0":"2021-11-26T21:28:44.414Z","6.1.110-renovate-internal-patch-51204f54911ae1c5cf829b9ff5051dfdcab79db3":"2021-11-27T01:50:27.914Z","6.1.110-renovate-balena-jellyfish-config-2-x-5c5f2a6fb3cc4c07ae4a69f57d9d6b104c09f5bf":"2021-11-27T01:50:57.687Z","6.1.110":"2021-11-27T01:54:23.894Z","6.1.111-renovate-balena-jellyfish-config-2-x-968e05efc24a7a5838943b007119938cbc6d7804":"2021-11-27T01:58:02.575Z","6.1.111-renovate-internal-patch-6d65bfd95634d5d47a33a39215f0f625ade3b0f0":"2021-11-27T04:03:55.647Z","6.1.111":"2021-11-27T04:08:04.682Z","6.1.112-renovate-balena-jellyfish-config-2-x-0ec4b473af08c677b294854a4f57f2a2bde8716b":"2021-11-27T04:11:02.409Z","6.1.112-renovate-internal-patch-7fe349eb0548ed3bdaa0b00b80c5c70aa7a11afd":"2021-11-27T16:15:29.819Z","6.1.112-renovate-internal-patch-8fab4bb5614e0177b9946d4217a5c62f32a89696":"2021-11-27T18:22:21.461Z","6.1.112":"2021-11-27T18:26:35.370Z","6.1.113-renovate-internal-patch-fdafcfe724df520b5ba16299405d93e94dd2f2a3":"2021-11-29T04:33:38.724Z","6.1.113":"2021-11-29T04:36:42.294Z","6.1.114-renovate-internal-patch-dbd7b8127da9a9dd33aa1ee59d00144f4441f003":"2021-11-29T07:51:13.574Z","6.1.114":"2021-11-29T07:54:34.519Z","6.1.115-renovate-internal-patch-5708b395a16af7f53e4c988b955076be26800b38":"2021-11-29T07:58:51.797Z","6.1.115":"2021-11-29T08:02:51.513Z","6.1.116-renovate-internal-patch-924fc6285b2ce70d7065384cc60b119d6a66411c":"2021-11-29T14:13:51.647Z","6.1.116":"2021-11-29T14:17:54.423Z","6.1.117-renovate-internal-patch-29bb6192f955ccc30665a4127cab38fc12e66515":"2021-12-01T11:55:26.050Z","6.1.117":"2021-12-01T11:59:26.832Z","6.1.118-renovate-external-non-major-4275390874fbc91b4c0c0783c3988c0db3727e8e":"2021-12-04T00:57:17.168Z","6.1.118-renovate-internal-patch-b76a9f480eda39909f6e38fead30be2239ba8498":"2021-12-04T01:00:29.664Z","6.1.118":"2021-12-04T01:01:04.474Z","6.1.118-renovate-internal-patch-f3433f72d4e0fcf6aac97a0f375fe0c885b80332":"2021-12-04T01:03:27.229Z","6.1.119-renovate-internal-patch-d28a67321d8c3c81e09aa0f7c53b0ff605ffc9e5":"2021-12-04T01:05:29.196Z","6.1.119":"2021-12-04T01:09:21.123Z","6.1.120-renovate-internal-patch-1ec9385ec8af6be8229edf2aa876bf8155dee2d7":"2021-12-04T18:37:16.881Z","6.1.120":"2021-12-04T18:41:19.425Z","6.1.121-renovate-internal-patch-9f4b87bcf528662ba016fc7c7879a84552c5fec3":"2021-12-04T21:35:05.171Z","6.1.121":"2021-12-04T21:38:10.804Z","6.1.122-renovate-external-non-major-2ae9fa490de89f3af79e08bb6142be5b75a9d77f":"2021-12-05T10:39:55.413Z","6.1.122":"2021-12-05T10:44:57.659Z","6.1.123-renovate-internal-patch-78a94579b6ae6427eee6e3f8b409bdc84d10c569":"2021-12-05T10:49:40.673Z","6.1.123":"2021-12-05T10:59:23.560Z","6.1.124-renovate-internal-patch-cb54f961c721bee6d9b2b7264b1b6051090d3232":"2021-12-05T12:08:52.334Z","6.1.124":"2021-12-05T12:13:10.968Z","6.1.125-renovate-internal-patch-2a40958de832d77acc18460988b99ee9925b5abf":"2021-12-05T17:26:08.928Z","6.1.125":"2021-12-05T17:30:24.571Z","6.1.126-renovate-internal-patch-1c01eb58b0e9293a2583ee8064e5e0b4eb4fa658":"2021-12-05T23:38:36.310Z","6.1.126":"2021-12-05T23:42:15.142Z","6.1.127-renovate-typescript-4-x-c2d2d5cd8e39241d6da40a569ce90d35c13d7ce9":"2021-12-09T23:19:42.405Z","6.1.127-renovate-internal-patch-1111df51b3a520c980975fc3583036ec8fc62d3f":"2021-12-10T02:14:12.984Z","6.1.127":"2021-12-10T02:20:49.898Z","6.1.128-renovate-internal-patch-6263d4dc133640261c2add8cd7ebeeab2504037d":"2021-12-10T04:25:30.845Z","6.1.128":"2021-12-10T04:29:26.588Z","6.1.129-renovate-external-non-major-5437fe5e4b6d4ba384888a29a771865140d0bb9c":"2021-12-11T01:09:44.156Z","6.1.129":"2021-12-11T01:13:24.249Z","6.1.130-renovate-internal-patch-188d0c7622d704e0dd40a4ef579ac6db05507b6f":"2021-12-11T01:16:29.922Z","6.1.130":"2021-12-11T03:57:10.443Z","6.1.131-renovate-internal-patch-606e3c82e1afab25cb49e89ca06ba65c6c88d608":"2021-12-11T09:38:13.944Z","6.1.131":"2021-12-11T09:42:18.563Z","6.1.132-joshbwlng-drop-depcheck-567473ea32c88679fc9727b22fbde0e452ad02a9":"2021-12-14T01:46:35.305Z","6.1.132":"2021-12-14T01:49:40.395Z","6.1.133-renovate-internal-patch-511253a3015c9f8d665ca2580904b4adcf588b9e":"2021-12-14T10:55:13.544Z","6.1.133":"2021-12-14T11:01:07.832Z","6.1.134-renovate-balena-jellyfish-logger-3-x-1de6c993b6c48910a933557d4e2033ddfbb2acc5":"2021-12-16T19:43:44.661Z","6.1.134":"2021-12-16T19:49:26.875Z","6.1.135-renovate-balena-jellyfish-assert-1-x-d7c17103104fa99b7852abfdacc7819279398c8b":"2021-12-16T19:53:19.258Z","6.1.135-renovate-internal-patch-35fafac9b499b031fecda51ec72c29ff92ac5533":"2021-12-16T19:56:58.526Z","6.1.135":"2021-12-16T20:00:47.102Z","6.1.136-renovate-internal-patch-dd3b444b0894531243cb4439a5dac6f068cc181d":"2021-12-16T20:03:58.845Z","6.1.136":"2021-12-16T20:09:47.428Z","6.1.137-renovate-balena-jellyfish-logger-4-x-ab4001e867ab78d245612f0ee7268b96a8d57392":"2021-12-17T10:58:19.641Z","6.1.137-renovate-balena-jellyfish-logger-4-x-c14291c40ab1aacb0cf52223a02b4551bae925d5":"2021-12-17T15:38:27.877Z","6.1.137":"2021-12-17T23:04:56.083Z","6.1.138-renovate-internal-patch-a8f4a122f132b06375264f84fc9f344c0e3314ca":"2021-12-18T00:15:10.687Z","6.1.138":"2021-12-18T00:19:05.333Z","6.1.139-renovate-external-non-major-f7b4bab316e71fe592c5db50d7dc31e240ad97c7":"2021-12-18T00:21:55.332Z","6.1.139":"2021-12-18T00:27:39.207Z","6.1.140-renovate-internal-patch-1c325414f0c6470e04b3ee471a8783dd95f87a11":"2021-12-18T02:15:15.227Z","6.1.140":"2021-12-18T02:19:07.714Z","6.1.141-renovate-internal-patch-ef590dab38a1b695f638a61138bd243251f93d4e":"2021-12-18T09:43:54.612Z","6.1.141":"2021-12-18T09:47:57.563Z","6.1.142-renovate-internal-patch-033fc65845fe4eb6fc356f88589865a780942661":"2021-12-18T15:43:43.131Z","6.1.142":"2021-12-18T15:46:57.098Z","6.1.143-renovate-external-non-major-c0d07ead69ba568c5c62dfb5320b76564087c2ef":"2021-12-18T15:51:17.953Z","6.1.143":"2021-12-18T15:56:06.348Z","6.1.144-renovate-internal-patch-5df09f995eabc2a0ade89ee21acfea0224a3d1b3":"2021-12-19T02:57:15.257Z","6.1.144":"2021-12-19T03:00:27.637Z","6.1.145-renovate-balena-jellyfish-types-2-x-f17dc7233d8102b19b50590dfbfd693df5b0284b":"2021-12-21T11:28:06.829Z","6.1.145-card-to-contract-1684aa31c056e9bf7f1779e47a0f96f481ddffbc":"2021-12-21T18:16:31.127Z","6.2.0-expose-type-c5c14a7751e4eb5f0bf731bae712036d5f628c57":"2021-12-22T21:34:29.061Z","6.2.0":"2021-12-22T21:38:31.098Z","6.2.1-renovate-balena-jellyfish-types-2-x-fb432ff5c5bc91d7e0c4250f216b9882879d1eba":"2021-12-22T21:42:45.363Z","6.2.1":"2021-12-24T02:01:43.788Z","6.2.2-renovate-balena-jellyfish-metrics-2-x-51d92ef71fc4e2921cd9cea322e6301812bc9182":"2021-12-24T04:01:27.445Z","7.0.0-joshbwlng-update-types-d578323d04bdb63858481160b44b2bdb3317104d":"2021-12-24T04:21:06.334Z","7.0.0-joshbwlng-update-types-5748862425225c014edd2aefe36386a6156ecca4":"2021-12-24T06:17:20.944Z","6.2.2-renovate-external-non-major-6b3563b42f863c579979612a974ad1f5f0a129ec":"2021-12-25T01:40:11.057Z","6.2.2":"2021-12-25T01:46:25.351Z","6.2.2-renovate-internal-patch-2f111a41a9ae3fe1f8767942bddda4944b6d5cf9":"2021-12-25T01:49:56.638Z","6.2.3-renovate-balena-jellyfish-metrics-2-x-84ca7d517146cfb90ecb8b471e3c43cde87407b4":"2021-12-25T01:53:54.894Z","6.2.3-renovate-internal-patch-1705d4ce6f0194dfa3674876525ca5d3f6433168":"2021-12-25T01:54:12.651Z","6.2.3-renovate-internal-patch-e1f66ddf98404d04f6cefd9033faa948474d8343":"2021-12-25T01:58:40.036Z","6.2.3":"2021-12-25T02:04:27.608Z","6.2.4-renovate-balena-jellyfish-metrics-2-x-d85f49e599e87944508a263803e99fa34a7cd21c":"2021-12-25T02:10:32.234Z","6.2.4-renovate-balena-jellyfish-metrics-2-x-acb9a796c83d292b69abece32b5c84cee1d2ce71":"2021-12-25T03:29:30.941Z","7.0.0-joshbwlng-update-types-8702d07dd19243a91af2b831ed94450ed5ee31d1":"2021-12-27T12:50:56.968Z","7.0.0-joshbwlng-update-types-2753e61e621a52199b11cf14c124eaa8fa4e5e38":"2021-12-29T09:07:32.231Z","6.2.4-renovate-internal-patch-7bbfa3478eea35edeb623b006f7ac476fdd1f34a":"2021-12-30T22:52:41.796Z","6.2.4":"2021-12-30T22:56:32.463Z","6.2.5-renovate-balena-jellyfish-metrics-2-x-89e96a6c65dfd0a320e1baff86ac985c04790f27":"2021-12-30T23:01:38.895Z","6.2.5-renovate-external-non-major-223c7910ba9cdca23f91333a8ac7388e99cd62c6":"2022-01-01T01:24:39.926Z","6.2.5":"2022-01-01T01:28:13.637Z","6.2.6-renovate-internal-patch-6c03a56d2c2b9b6882fc9cf84cbddc55eedc3958":"2022-01-01T01:31:18.479Z","6.2.6-renovate-balena-jellyfish-metrics-2-x-5bbb21e00f1e86b9b96ac055e0ad21af0df503c0":"2022-01-01T01:33:29.395Z","6.2.6":"2022-01-01T01:36:44.630Z","6.2.6-renovate-balena-jellyfish-metrics-2-x-6e4535a510b63e955e6c0be6c1e4408f9b568b49":"2022-01-01T01:39:10.392Z","6.2.7-renovate-balena-jellyfish-metrics-2-x-14161ffa0b702c09fbaa066e118348995c4c70a5":"2022-01-01T01:41:57.618Z","6.2.7-renovate-balena-jellyfish-metrics-2-x-072940212ec773504bad62082016680bc4187b44":"2022-01-01T03:58:53.750Z","6.2.7-renovate-balena-jellyfish-metrics-2-x-88efdf0ed3f4783249ca0ee94bd1680978afb270":"2022-01-01T06:03:35.324Z","6.2.7-renovate-external-non-major-23abf04facdd38fc6825697ca324c432aa644e60":"2022-01-01T14:40:32.660Z","6.2.7":"2022-01-01T14:43:19.574Z","6.2.8-renovate-balena-jellyfish-metrics-2-x-51dec4ec71c9c8902203260bf7f6e70071978be3":"2022-01-01T14:48:15.479Z","6.2.8-renovate-external-non-major-10417c264e2e2c317b05400944ce6c26a95095bb":"2022-01-02T22:20:02.651Z","6.2.8":"2022-01-02T22:23:34.619Z","6.2.9-renovate-balena-jellyfish-metrics-2-x-de7da5da597ad967ba0e71cc325f347beb3e7b65":"2022-01-02T22:27:44.359Z","7.0.0-joshbwlng-update-types-36f8d61845f7e740e087026b6a45174c5f6e43f2":"2022-01-03T01:29:11.342Z","6.2.9-renovate-balena-jellyfish-metrics-2-x-b0ae8f4bfbb6868fbbc9c31c54b1e6b43f580cef":"2022-01-03T01:30:02.228Z","6.2.9":"2022-01-03T01:33:21.505Z","6.2.10-renovate-internal-patch-17a784f891074b3cb0e0b41a3b48bef6f1e0462a":"2022-01-03T01:40:25.861Z","6.2.10":"2022-01-03T01:44:14.268Z","6.2.11-renovate-internal-patch-9157817692a6a2661793375abc139acaa6566435":"2022-01-03T12:34:12.693Z","6.2.11":"2022-01-03T12:38:12.836Z","6.2.12-renovate-internal-patch-b2727b3005265e78b8a9787a3fef6d7db4fca1f6":"2022-01-04T02:10:25.594Z","6.2.12":"2022-01-04T02:13:27.771Z","6.2.13-joshbwlng-add-request-logs-96684226186e7948a529d69326429a641c2ae80c":"2022-01-04T07:01:53.114Z","6.2.13":"2022-01-04T07:06:27.676Z","6.2.14-joshbwlng-update-request-log-336bba4965a979972660f98c0b8c03ef2141e43b":"2022-01-04T08:35:08.141Z","6.2.14":"2022-01-05T02:29:18.490Z","6.2.15-joshbwlng-update-logs-26fe23b20aaf71a07c547bba1b3d422ad5a9b6cc":"2022-01-07T06:01:49.974Z","6.2.15":"2022-01-07T06:20:41.508Z","6.2.16-renovate-internal-patch-d164c500d8e51c10dc1ec99d23e0f1d2c9ebdc2f":"2022-01-08T01:36:55.940Z","6.2.16":"2022-01-08T01:40:31.533Z","6.2.17-renovate-external-non-major-cb2346d7c4ef154809ef8774ff8e3843d440a62f":"2022-01-08T01:47:12.761Z","6.2.17":"2022-01-08T01:51:59.640Z","6.2.18-renovate-internal-patch-55ec5df84ef26b5423d3cba74fa4a0acd1bf8779":"2022-01-08T04:13:12.055Z","6.2.18":"2022-01-08T04:17:18.435Z","6.2.19-joshbwlng-oauth-logs-9784382662dc9f6c10d0ff6b42ad74d642b99da2":"2022-01-08T08:00:34.318Z","6.2.19-renovate-internal-patch-a61075a388b83200437b92eef0cee2be22c16df6":"2022-01-08T08:14:06.116Z","6.2.19-joshbwlng-remove-excess-logs-f5eaca17615f4cb75ff0d3b2aba896fc1e454a82":"2022-01-08T08:15:18.442Z","6.2.19":"2022-01-08T08:17:10.658Z","6.2.20-joshbwlng-remove-excess-logs-54055e2c58cced8e4083226407be78de6f370e83":"2022-01-08T08:21:29.499Z","6.2.20":"2022-01-08T08:25:54.571Z","6.2.21-joshbwlng-oauth-logs-0b316303e997b4196537d90412a8ad9d8da9a0a2":"2022-01-08T08:59:22.890Z","6.2.21-joshbwlng-oauth-logs-5e37c888e2c54750d8338bb45ae6fa809d6dcda5":"2022-01-08T11:20:08.313Z","6.2.21-renovate-internal-patch-cfe7b6fb193257194a6d7d740458ba3422fa4e25":"2022-01-08T14:49:51.894Z","6.2.21":"2022-01-08T14:53:07.747Z","6.2.22-joshbwlng-oauth-logs-13515f285dcdc02a76776ba580df17117a9a9a04":"2022-01-09T02:47:05.411Z","7.0.0-joshbwlng-priv-session-da6d5e9b220e960b55e57d24d617a86f7f13ffd4":"2022-01-09T09:50:39.235Z","6.3.0-joshbwlng-priv-session-5e4998651a1ec1556a1e5ffb8344e2499227c649":"2022-01-09T10:36:58.406Z","6.3.0-joshbwlng-priv-session-bd103e08a59a21f0524cb91cd5bdf4678d9cd1b3":"2022-01-09T10:46:22.305Z","6.2.22-joshbwlng-oauth-logs-20007067dfea2ce2ad510b2c56357646109d426e":"2022-01-09T10:55:50.289Z","6.2.22":"2022-01-10T01:54:00.578Z","6.2.23-joshbwlng-update-oauth-log-15217d9576fcd5737afe4d3f89fe3239c59b1894":"2022-01-10T03:07:28.103Z","6.2.23":"2022-01-10T03:10:22.454Z","6.3.0-joshbwlng-priv-session-a837693ff1ee4c159eee6b2fa394449aabc39a63":"2022-01-10T03:26:40.733Z","6.3.0":"2022-01-10T04:19:11.538Z","6.3.1-joshbwlng-remove-oauth-logs-65df6dd7905c8525cb9a433578251c42bf5f4f6b":"2022-01-10T06:02:42.564Z","6.3.1":"2022-01-11T01:31:56.199Z","6.3.2-renovate-major-external-major-9cb6b40ef4ffde7bb4a53f10aa8e784cb1f42e2a":"2022-01-15T01:59:15.787Z","6.3.2-renovate-major-external-major-cc175a080023693e01f12cc61b359f4ffcaf49fa":"2022-01-15T03:30:57.073Z","6.3.2-joshbwlng-update-readme-40b92b7c2a18f954659f3f5283d410e9913675e3":"2022-01-29T05:06:43.869Z","6.3.2":"2022-01-29T05:10:50.018Z","6.3.3-joshbwlng-fix-readme-e1c8acfbe85821748dd3bb48c8ad3fa7b26247c9":"2022-01-29T07:43:12.916Z"},"bugs":{"url":"https://github.com/product-os/jellyfish-sync/issues"},"author":{"name":"Balena.io.","email":"hello@balena.io"},"license":"Apache-2.0","homepage":"https://github.com/product-os/jellyfish-sync#readme","repository":{"url":"git+https://github.com/product-os/jellyfish-sync.git","type":"git"},"description":"Sync library for Jellyfish","maintainers":[{"name":"balena.io","email":"accounts+npm@balena.io"},{"name":"page","email":"page@balena.io"}],"readme":"","readmeFilename":""}